Prerequisites
- Sender wallet funded with native asset (ETH or SOL)
- Recipient registered on the target chain (or pass their meta-address directly)
ethereumWalletClient/ethereumProvider(EVM) orsolanaWallet(Solana)
High-level: one method
Delayed announcement (anonymity set)
SetdelayAnnouncement (ms) to decouple the transfer from the announcement and break
the timing correlation between the two on-chain events:
Cross-chain send
Starknet sends
Starknet is supported at testnet-preview maturity.sendStealthPayment handles
Ethereum and Solana only — Starknet sends go through a dedicated builder that returns
unsigned transfer + announce calls for the app’s Starknet wallet to broadcast:
starknet: {} client option. See Starknet
for the full send flow, custody model, and preview caveats.
Low-level: prepare + submit yourself
Use this when you need custom gas, batching, or UI control.Cross-chain relay (manual)
buildAnnounceWithRelay returns instructions + extra signers (Wormhole message keypair):
Sending tokens (ERC-20 / SPL)
Settoken to send an ERC-20 (Ethereum) or SPL mint (Solana) instead of the native asset.
amount is the token’s smallest unit (decimals-aware). The announcement is identical to a
native send, so the recipient discovers it the same way.
A fresh stealth address holds the token but no native gas, so the recipient cannot move it
without help. Either set
gasDrop to also send a little native asset to the stealth address,
or have the recipient withdraw via a gasless sweep.Recipient resolution
recipient accepts every identity form client.resolveRecipient understands:
See resolveRecipient for setup details.