Overview
A wallet is a secp256k1 keypair generated inside the device’s secure hardware. The SDK stores the encrypted private key on-device and returns the EIP-55 checksummed address — the only piece of data you need to share with your backend.The native BMONISigner layer only returns the address at the moment of provisioning. The TypeScript facade caches it in platform secure storage automatically, so you can read it back at any time.
Check whether a wallet exists
Provision a new wallet
initWallet throws walletAlreadyExists if the native layer already holds an encrypted key. You must delete it first before provisioning again.
Read the cached address
Delete a wallet
deleteWallet removes the encrypted private key from device storage. It is idempotent at the native layer.
requirePin is false, omit the argument:
walletAddress() still reflects the live wallet.
Re-provisioning (recovery flow)
IfinitWallet throws walletAlreadyExists but walletAddress() returns null, the native wallet exists but the TypeScript-side address cache is missing (for example, the app was reinstalled). The only recovery path is to delete the existing wallet and provision a new one:

