Skip to content

feat: add Orchestra inbound USDT deposits - #159

Draft
ben-kaufman wants to merge 11 commits into
feat/usdt0-outboundfrom
feat/usdt-orchestra-inbound
Draft

ben-kaufman wants to merge 11 commits into
feat/usdt0-outboundfrom
feat/usdt-orchestra-inbound

Conversation

@ben-kaufman

@ben-kaufman ben-kaufman commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Adds an optional Orchestra client for receiving USDT from Ethereum and TRON into the user's Arbitrum wallet. The client obtains reusable source-network deposit addresses so a sender can make a normal USDT transfer from another wallet.

  • Discovers enabled source networks and returns receive instructions with an estimated amount delivered to Arbitrum, applicable amount limits and slippage terms.
  • Authenticates deposit registration, history, detail and refund requests using the wallet's derived account.
  • Validates the returned network, recipient, amount and deposit terms before exposing receive instructions.
  • Provides paginated deposit history, delivery status, transaction references and actionable errors. Explicit refund requests let the user supply a valid address on the deposit's source network.

Based on #158. This PR adds the Rust client and native bindings. The companion backend owns Orchestra credentials, partner integration and refund authorization; native receive screens are maintained separately. The sender remains responsible for the source-network transaction fee.

QA Notes

  • Run cargo test --locked --lib modules::usdt, cargo fmt --check and cargo clippy --locked --lib --tests.
  • HTTP fixtures cover signed requests, receive-instruction validation, pagination, deposit details, refund requests and provider errors, including amount limits.
  • Live deposit delivery and refunds require Flashnet partner approval/provisioning and end-to-end acceptance testing. This PR does not enable partner routes or establish production acceptance.
  • Release packaging targets unpublished v0.6.0. Before remote package consumption, build the selected merged source, record the final SwiftPM checksum in a release-preparation commit, and tag/publish that exact iOS archive and matching Android package. Use matching local artifacts for branch testing; later stack layers must use a new version if an earlier layer has already been released.

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