Wallet Details
Retrieve wallet addresses, metadata, signing share statuses, and backup information to verify wallets are fully configured and ready for use.
Get Client Details (Client-Scoped)
From a WalletsClient instance, fetch the current client's full state — wallets, addresses, and share-pair statuses:
const details = await client.getClientDetails();Get Client (Custodian-Scoped)
From the custodian API, fetch any client by ID:
const details = await wallets.custodian.getClient({
path: { clientId: "cli_..." },
});Both return the same ClientDetails shape.
Reading Wallet Addresses
Addresses are stored in metadata.namespaces. The namespace key is the CAIP-2 namespace prefix (not the full chain ID):
const details = await client.getClientDetails();
const namespaces = details.metadata?.namespaces ?? {};
// EVM address — same for Ethereum, Polygon, Arbitrum, Base, Optimism, Avalanche, Celo, Monad
const evmAddress = namespaces["eip155"]?.address;
// Solana address
const solAddress = namespaces["solana"]?.address;
// Stellar address
const xlmAddress = namespaces["stellar"]?.address;
// Tron address
const tronAddress = namespaces["tron"]?.address;
// Bitcoin address (P2WPKH)
const btcAddress = namespaces["bip122"]?.address;Reading Share-Pair Statuses
Use share-pair statuses to verify a wallet is properly set up before allowing transactions:
const details = await client.getClientDetails();
for (const wallet of details.wallets ?? []) {
console.log(`Wallet ${wallet.id} (${wallet.curve}):`);
for (const sp of wallet.signingSharePairs ?? []) {
// "STORED_CLIENT" = share is stored client-side (ready)
// "STORED_DATABASE" = share was generated but not yet confirmed
// "completed" = both shares present and status reconciled
console.log(` signing pair ${sp.id}: ${sp.status}`);
}
for (const bp of wallet.backupSharePairs ?? []) {
// "STORED_CLIENT_BACKUP_SHARE" = encrypted backup stored
// "STORED_CLIENT_BACKUP_SHARE_KEY" = backup stored with passkey/key method
// "completed" = backup complete
console.log(` backup pair ${bp.id}: ${bp.status} (${bp.backupMethod})`);
}
}Checking Wallet Readiness
A wallet is ready to sign when all its signing share pairs have status "STORED_CLIENT" or "completed":
function isWalletReady(details: ClientDetails): boolean {
return (details.wallets ?? []).every(wallet =>
(wallet.signingSharePairs ?? []).every(
sp => sp.status === "STORED_CLIENT" || sp.status === "completed"
)
);
}