Skip to content

API Reference

Complete API documentation for Cave Wallet SDK.

Installation

bash
npm install @cave/sdk

CaveWallet

Main class for interacting with Cave Wallet.

Static Methods

isInstalled()

Check if Cave Wallet extension is installed.

typescript
static async isInstalled(): Promise<boolean>

Returns: true if installed, false otherwise.

Example:

javascript
const installed = await CaveWallet.isInstalled();

connect()

Connect to the wallet and request account access.

typescript
static async connect(): Promise<CaveWallet>

Returns: CaveWallet instance.

Throws: Error if user rejects or wallet unavailable.

Example:

javascript
const wallet = await CaveWallet.connect();

Instance Methods

getAccount()

Get the currently connected account.

typescript
async getAccount(): Promise<Account>

Returns:

typescript
interface Account {
  address: string;
  publicKey: string;
  name?: string;
}

getBalance()

Get account balance.

typescript
async getBalance(denom?: string): Promise<Balance>

Parameters:

  • denom (optional): Token denomination. Defaults to native token.

Returns:

typescript
interface Balance {
  amount: string;
  denom: string;
}

signAndBroadcast(tx)

Sign and broadcast a transaction.

typescript
async signAndBroadcast(tx: Transaction): Promise<TxResult>

Parameters:

typescript
interface Transaction {
  to?: string;
  amount?: string;
  memo?: string;
  type?: 'transfer' | 'call';
  contract?: string;
  function?: string;
  args?: any[];
  gasLimit?: number;
  messages?: Message[];
}

Returns:

typescript
interface TxResult {
  hash: string;
  height?: number;
  gasUsed?: number;
}

signTransaction(tx)

Sign a transaction without broadcasting.

typescript
async signTransaction(tx: Transaction): Promise<SignedTx>

broadcast(signedTx)

Broadcast a signed transaction.

typescript
async broadcast(signedTx: SignedTx): Promise<TxResult>

signMessage(message)

Sign an arbitrary message.

typescript
async signMessage(message: string): Promise<string>

Returns: Signature as hex string.


verifySignature(message, signature, address)

Verify a message signature.

typescript
async verifySignature(
  message: string,
  signature: string,
  address: string
): Promise<boolean>

estimateGas(tx)

Estimate gas for a transaction.

typescript
async estimateGas(tx: Transaction): Promise<number>

getTransactionStatus(hash)

Get status of a transaction.

typescript
async getTransactionStatus(hash: string): Promise<TxStatus>

Returns:

typescript
interface TxStatus {
  hash: string;
  confirmed: boolean;
  failed: boolean;
  error?: string;
  height?: number;
}

disconnect()

Disconnect the wallet.

typescript
disconnect(): void

Events

accountChanged

Fired when user switches account.

javascript
wallet.on('accountChanged', (account: Account) => {
  console.log('New account:', account);
});

networkChanged

Fired when network changes.

javascript
wallet.on('networkChanged', (network: Network) => {
  console.log('New network:', network.chainId);
});

disconnect

Fired when wallet disconnects.

javascript
wallet.on('disconnect', () => {
  console.log('Disconnected');
});

Error Codes

CodeDescription
4001User rejected request
4100Unauthorized
4200Unsupported method
4900Disconnected
-32000Invalid request
-32002Request pending
-32603Internal error

TypeScript Support

Full TypeScript definitions included:

typescript
import { 
  CaveWallet, 
  Account, 
  Transaction, 
  TxResult 
} from '@cave/sdk';

Browser Support

BrowserSupported
Chrome 88+
Brave
Edge
Firefox
Safari

Support

The Gno.land Wallet