feat: Enhance contract ABI binding generator (#336) - #710
Merged
Nanle-code merged 1 commit intoJul 30, 2026
Merged
Conversation
- Add event type definitions from contract metadata - Improve type-safe interfaces with proper type annotations - Enhance serialization/deserialization for complex types - Add comprehensive binding tests - Support all languages: Rust, TypeScript, Python, Go
|
@cyber-excel10 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #336
feat: Enhance contract ABI binding generator with type-safe interfaces and event support (#336)
What i changed?
Updated the contract binding generator so it actually emits fully type-safe interfaces across all supported client languages, along with complete event type definitions extracted directly from contract metadata.
Before this, a lot of parameter types were falling back to overly generic traits like
impl ToString, which made client-side integration error-prone and clunky. Complex types (nested Options, Results, Vectors, Maps) are now serialized properly without manual casting hacks on the caller side.Key Changes
Option<T>,Result<T, E>,Vec<T>, andHashMap<K, V>.bindings_tests.rscovering edge-case types, malformed metadata handling, and multi-language snapshot comparisons.Feature Overview
How it was tested
bindings_tests.rsto exercise the ABI parsing pipeline against real.wasmbinaries.cargo checkpasses on outputclient.rs)tsc --noEmitclean onclient.ts)mypystatic verification onclient.py)go buildcheck onclient.go)Usage Examples
Generate bindings using the standard CLI workflow: