Skip to content

Add Relay#897

Open
0xh3rman wants to merge 4 commits intomainfrom
relay
Open

Add Relay#897
0xh3rman wants to merge 4 commits intomainfrom
relay

Conversation

@0xh3rman
Copy link
Collaborator

No description provided.

@semanticdiff-com
Copy link

semanticdiff-com bot commented Jan 20, 2026

Review changes with  SemanticDiff

Changed Files
File Status
  crates/swapper/src/swapper.rs  59% smaller
  crates/swapper/src/near_intents/provider.rs  55% smaller
  crates/swapper/src/models.rs  37% smaller
  crates/swapper/src/near_intents/model.rs  5% smaller
  Cargo.lock Unsupported file format
  Cargo.toml Unsupported file format
  apps/api/src/referral/mod.rs  0% smaller
  crates/gem_bitcoin/Cargo.toml Unsupported file format
  crates/gem_bitcoin/src/signer/chain_signer.rs  0% smaller
  crates/gem_bitcoin/src/signer/mod.rs  0% smaller
  crates/swapper/src/lib.rs  0% smaller
  crates/swapper/src/proxy/provider_factory.rs  0% smaller
  crates/swapper/src/referrer.rs  0% smaller
  crates/swapper/src/relay/asset.rs  0% smaller
  crates/swapper/src/relay/chain.rs  0% smaller
  crates/swapper/src/relay/client.rs  0% smaller
  crates/swapper/src/relay/mapper.rs  0% smaller
  crates/swapper/src/relay/mod.rs  0% smaller
  crates/swapper/src/relay/model.rs  0% smaller
  crates/swapper/src/relay/provider.rs  0% smaller
  gemstone/src/signer/chain.rs  0% smaller

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @0xh3rman, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly expands the cross-chain swap capabilities by integrating the Relay provider, allowing for more diverse asset and chain combinations. Concurrently, it improves the robustness of data handling within the serialization library by introducing more versatile deserialization functions for common data types.

Highlights

  • New Relay Swapper Integration: Introduced a new cross-chain swap provider, Relay, enabling swaps across a broader range of blockchain networks including Bitcoin, Solana, Ethereum, SmartChain, Base, Arbitrum, Hyperliquid, Berachain, and Manta.
  • Enhanced Serde Deserialization Utilities: Added new utility functions in serde_serializers to handle flexible deserialization of strings from various JSON types (string, number, null) and optional u32 numbers (integer or rounded float).
  • Refactored Provider Initialization: The Relay provider's initialization has been refactored to use its own dedicated new method, moving away from a generic factory function.
  • Comprehensive Testing: New unit and integration tests have been added to ensure the correctness and reliability of the new Relay swapper and deserialization logic.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new swapper provider, Relay, which involves adding new modules for the provider itself and for serde serialization helpers. The changes are well-structured and include integration tests.

My review focuses on improving the robustness and performance of the new code. I've pointed out a few areas where error handling can be improved to prevent silent failures, particularly in JSON serialization. I've also identified a potential correctness issue with unsafe type casting in a new deserializer and a fragile logic for extracting a router address. Addressing these points will make the new provider more reliable.

@0xh3rman 0xh3rman force-pushed the relay branch 3 times, most recently from 51d48ac to 212b6b8 Compare February 23, 2026 09:36
Restructure and update the relay integration to support Relay v2 responses and richer swap metadata. Key changes:

- Fix API wallet address comparison in referral handler.
- Rename quote_data_mapper -> mapper and move mapping logic; add relay_currency_to_asset_id and map_swap_result to produce SwapResult with TransactionSwapMetadata.
- Update RelayChain API: add to_chain() conversion and rename chain_from_id -> from_chain_id returning RelayChain.
- Change client endpoints/types: use /requests/v2?hash= and return RelayRequestsResponse; update imports accordingly.
- Update models to represent relay requests and metadata (RelayRequestsResponse, RelayRequest, RelayRequestMetadata, RelayCurrencyDetail), and adjust status mapping (Refunded treated as Failed).
- Update provider to use new mapper and client methods; adapt get_swap_result to map first request from response.
- Adjust and add integration tests to match new types, endpoints and mapping behavior.

These changes align the codebase with the updated relay API and improve mapping of currency/chain data into internal AssetId/SwapResult representations.
@0xh3rman 0xh3rman marked this pull request as ready for review February 27, 2026 13:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant