Skip to main content
Trading lets users swap assets on the same chain or across chains through one intent. Your application specifies the token needed on the destination chain, and Rhinestone coordinates the swap and any required bridging. Use the user’s unified balance to choose one funding token and chain before quoting. The custom signer SDK, embedded wallets, and Caucasus HTTP requests use that selection rather than searching the portfolio. This supports standalone swaps as well as payments and contract interactions that require an asset the user does not already hold.

Choose the trade outcome

Embedded wallets and custom signers support requesting a specific output token and amount. For example, your application can request USDC on Arbitrum using WETH held on Base. Omit the output amount for max-output. In the custom signer SDK, source.maxAmount optionally caps the observed source balance used for the quote; it does not guarantee exact-input spend or that the whole cap is consumed. Declared auxiliary funds are added after that cap. Caucasus HTTP estimates support exact-in and exact-out, but binding quotes use the same capped funding model, not an exact-input amount. See Make a swap.

Trade and call a contract

A trade can deliver tokens to the account or fund calls that execute on the destination chain. For example, your application can swap WETH into USDC, approve a vault, and deposit the USDC through one intent. The destination approval and deposit execute in order and revert together if either call fails. Your application does not need to coordinate them as separate user-initiated transactions.

Get started