Appearance
Availability
Wallets the partner can offer for signature verification on this device - not already-connected instances, and not Connect payment methods.
getAvailable intersects enabled signature integrations with wallets this SDK can drive, then adds what the page can see (extensions / EIP-6963). Coinbase is not in this list - that path is Coinbase.
How to run a verification after the user picks a row: Verify wallet.
Methods
| Method | What it does |
|---|---|
getAvailable({ network? }) | Signature wallets this device can offer. Pass network to keep one family (evm / solana). Each row’s provider goes into verify() |
requiresDeepLink(provider) | true when this device opens verification inside the wallet app instead of WalletConnect. Collect address first |
supportsWalletConnect(provider) | true when you should show a WalletConnect QR from onUri for this wallet on this device |
ts
const wallets = await client.wallets.getAvailable({ network: 'evm' })Pass network to keep wallets that support that family (evm → EVM, solana → Solana). Omit it to list every signature wallet.
The integrations list is cached for 10 minutes. If that request fails, the SDK still returns configured signature wallets so the picker can render.
WalletVerificationAvailableWallet
Same routing fields as Connect AvailableWallet, except icon is a light / dark pair.
| Field | Meaning |
|---|---|
provider | IntegrationProvider - pass this to verify() |
name | Label to show in the picker |
icon | { light, dark } CDN URLs, each string | null |
isInstalled | Extension is visible on this page |
injectedNamespaces | Namespaces the installed extension covers (eip155, solana, bip122). Empty if not installed |
supportsWalletConnect | WalletConnect is offered for this wallet on this device. false when the wallet uses a browse deeplink |
transports | Transports usable right now (injected and/or walletconnect) |
isPopupConnection | Injected connect for this wallet opens a popup |
isDeepLinkConnection | This device opens verification in the wallet app (for example Phantom / Coinbase Wallet on mobile; MetaMask / Bitget on iOS) |
qrScanTarget | How to label a desktop QR: 'camera' (browse URL), 'wallet-app' (WalletConnect wc: URI), or null |
transports is empty when neither injected nor WalletConnect is usable right now. The wallet can still appear; isDeepLinkConnection is the other path.
Picker UI
| Situation | What to show |
|---|---|
isInstalled | Connect / verify button |
Desktop, not installed, supportsWalletConnect | WalletConnect QR (onUri) |
isDeepLinkConnection | Open in wallet / browse QR (onDeeplinkUrl). address is required |
isPopupConnection | Allow popups; the SDK opens a tab for connect and sign |
ts
if (client.wallets.requiresDeepLink(wallet.provider)) {
// collect `address`, then verify() - see Verify wallet
}
if (client.wallets.supportsWalletConnect(wallet.provider)) {
// ready to show a WalletConnect QR from onUri
}qrScanTarget === 'camera' means the QR is an HTTPS URL the phone camera can open. 'wallet-app' means a WalletConnect URI the wallet app scans.
A provider with no SDK wallet config throws WALLET_NOT_SUPPORTED if you try to verify it.