Supported routes
The adapter you use must support EIP-712 typed data signing through
signTypedData. The Viem and Ethers adapters support this by default.
Prerequisites
Before you begin, ensure that you’ve: These are required so any example below runs with a validkit and adapter.
Submit a crosschain deposit
This example deposits 100.00 USDC from Ethereum Sepolia into a vault on Arc Testnet:TypeScript
transferSpeed is optional and accepts "FAST" or "SLOW". FAST uses CCTP’s
pre-finality lane and adds a PRE_FINALITY fee. SLOW uses standard finality
with only the FORWARD fee. Omit transferSpeed to use the service default.
See How Earn fees work for how these
fees appear on the deposit quote.
The result’s kind field is either 'same-chain' or 'cross-chain':
TypeScript
Shell
status value reflects the submit response. Treat any
non-terminal value (such as PENDING, SOURCE_PENDING, or ATTESTING) as in
progress.
expiresAt is the deadline by which the bundle must settle. If it doesn’t
settle by then, the funds return to the source wallet.
Track the deposit status
Pass the returnedexecId to getCrossChainDepositStatus for a one-shot status
check, or to waitForCrossChainDeposit to poll until the deposit reaches a
terminal state:
TypeScript
source, cctp, destination) so
you can see where in the bridge the deposit currently is. Both methods accept an
optional signal for cancellation.
Confirm the deposit on the destination blockchain
To verify the position landed on the destination, use Check your Earn position with the recipient address you passed into.recipientAddress.