Skip to main content
Cross-chain flows use the Universal Announcement Bus (Wormhole). UAB must be configured for the client’s chainId (bundled on Sepolia) or passed via contracts.

Build relay

buildAnnounceWithRelayRequest(send, opts?)

Ethereum: build { to, data, value } for announceWithRelay. value is the Wormhole message fee.

buildAnnounceWithRelay(chain, send, opts?)

Discriminated builder for Ethereum or Solana.
Solana note: signers includes the Wormhole message keypair, which must co-sign with solanaWallet.

Fetch and scan

fetchCrossChainAnnouncements(opts?)

Read inbound UAB announcements as indexer-shaped rows.

scanCrossChain(opts?)

Fetch + WASM filter to owned outputs from UAB only.

Bundled in send / unified scan

sendStealthPayment({ relay: true }) calls the relay path internally. scan({ includeCrossChain: true }) merges UAB outputs with source: "uab" (default when UAB is deployed and Ethereum is scanned).

Low-level UAB exports

Re-exported from @opaquecash/uab via @opaquecash/opaque:
Payload codec from @opaquecash/stealth-core:

Relayer

VAAs must be delivered to UABReceiver on the destination chain. Use opaquecash/relayer for off-chain delivery. See Cross-chain announcements.

Starknet

Starknet is a native scan chain (not a UAB/Wormhole path). Enable it with the starknet client option, then include it in scan:

buildStarknetStealthSend({ recipient, amount, token? })

Returns the counterfactual stealth account and the unsigned transfer + announce calls to broadcast in one multicall from a Starknet wallet.

buildStarknetSweep({ output, destination, amount, token? })

Returns the reconstructed signer key, the deploy_account parameters, and the transfer-out call for the recipient to broadcast (Eth signer). Full flow and caveats: Starknet.