Overview
Starkzap supports bidirectional bridging between Starknet and supported external chains:- Ethereum (Canonical, CCTP, OFT, OFT-migrated routes)
- Solana (Hyperlane routes)
- Configure the SDK (including optional bridging config)
- Fetch bridgeable tokens with
sdk.getBridgingTokens(...) - Connect an external wallet (
ConnectedEthereumWalletorConnectedSolanaWallet) - Inspect balance, allowance, and estimated fees
- Call
wallet.deposit(...)to submit the source-chain transaction
- Inspect L2 balance and estimated fees with
wallet.getWithdrawBalance(...)andwallet.getInitiateWithdrawFeeEstimate(...) - Call
wallet.initiateWithdraw(...)to burn/lock tokens on Starknet - Monitor status with
wallet.getWithdrawalState(...)orwallet.monitorWithdrawal(...) - For Canonical and CCTP: call
wallet.completeWithdraw(...)when state isREADY_TO_CLAIM
Install Optional Dependencies
Install only what you use. For Ethereum routes:SDK Configuration
Usebridging config when you need custom external RPCs or OFT support.
The SDK uses external RPCs to read source-chain state (balances/allowances), estimate bridge fees, and submit source-chain transactions reliably. Without explicit RPC URLs, these operations can be rate-limited or unavailable depending on your environment:
Fetch Bridgeable Tokens
Connect External Wallets
Take a look at the Examples. For WalletConnect setup details, see WalletConnect Docs. In practice, you establish the external wallet session first (for example with WalletConnect), then pass its provider/account/chain intoConnectedEthereumWallet.from(...) or ConnectedSolanaWallet.from(...) for bridge calls.
Ethereum (EIP-1193)
Solana
Estimate and Deposit
Withdraw from Starknet
Initiate (all protocols)
Complete (Canonical & CCTP only)
OFT and Hyperlane are single-step — a relayer handles L1 delivery automatically. For Canonical and CCTP, a second L1 transaction is required once the state becomesREADY_TO_CLAIM.
Auto-withdraw (Canonical only)
Canonical supports anautoWithdraw option where a relayer handles L1 completion — no completeWithdraw call needed.
Monitor Bridge Transfers
Simplified state (recommended for UI)
WithdrawalState values:
PENDING— bridging in progress, no user action neededREADY_TO_CLAIM— ready to finalize on L1; callcompleteWithdraw(CCTP/Canonical)COMPLETED— bridge flow fully completeERROR— unrecoverable error
Detailed status (advanced use)
UsemonitorWithdrawal to get the full status snapshot including CCTP attestation data needed for completeWithdraw:
Protocol Notes
Common Errors
- Chain mismatch: token source chain and connected external wallet chain must match.
- Missing LayerZero key: OFT routes require
bridging.layerZeroApiKey. - Unsupported chain pair: Ethereum mainnet must pair with Starknet mainnet; testnet pairings must match.
- CCTP options missing:
completeWithdrawrequiresoptionswith attestation data for CCTP routes — the parameter is non-optional in practice. - Attestation expired: CCTP attestations have an expiration block; re-attestation is requested automatically during
completeWithdraw.
Next Steps
- Configuration — full
SDKConfigoptions - API Reference — exact method signatures
- Examples — web example with bridge UI flow