API Reference

API Reference

Complete XO Connect API documentation.

XOConnectProvider

EIP-1193 compatible provider for use with ethers.js and other Web3 libraries.

Constructor

new XOConnectProvider(options?: {
  rpcs?: Record<string, string>;   // Optional - only for read operations
  defaultChainId?: string;         // Optional - defaults to "0x1"
  debug?: boolean;                 // Optional - enables debug panel
})

request()

Main EIP-1193 method for all operations.

provider.request({
  method: string,
  params?: any[]
}): Promise<any>

on()

Subscribe to provider events.

provider.on(event: string, listener: (...args: any[]) => void): void

// Available events:
// - 'connect'
// - 'chainChanged'
// - 'accountsChanged'

removeListener()

provider.removeListener(event: string, listener: Function): void

getClient()

Gets connected client information.

provider.getClient(): Promise<Client>

getAvailableCurrencies()

Gets available currencies with valid chainId.

provider.getAvailableCurrencies(): Promise<Currency[]>

XOConnect (Singleton)

Core class for direct communication with XO wallet.

connect()

XOConnect.connect(): Promise<{ id: string; client: Client }>

getClient()

XOConnect.getClient(): Promise<Client | null>

sendRequest()

XOConnect.sendRequest(params: {
  method: Method;
  data?: any;
  currency?: string;
  onSuccess: (response: Response) => void;
  onCancel: () => void;
}): string // Returns request ID

disconnect()

XOConnect.disconnect(): void

cancelRequest()

XOConnect.cancelRequest(id: string): void

Supported JSON-RPC Methods

Accounts and SigningRequires wallet

MethodDescriptionReturns
eth_requestAccountsRequest connection and return accountsstring[]
eth_accountsReturn connected accountsstring[]
personal_signSign a message (EIP-191)string
eth_sendTransactionSend a transactionstring (tx hash)
eth_signTypedDataSign typed data (EIP-712)string
eth_signTypedData_v4Sign typed data v4string

Network Management

MethodDescriptionReturns
eth_chainIdReturn current chainIdstring (hex)
net_versionReturn network IDstring (decimal)
wallet_switchEthereumChainSwitch to another networknull

Reads (via RPC)Requires RPC

MethodDescription
eth_blockNumberCurrent block number
eth_gasPriceCurrent gas price
eth_getBalanceAccount balance
eth_getTransactionCountAccount nonce
eth_getCodeContract code
eth_callExecute read call
eth_estimateGasEstimate transaction gas
eth_getLogsGet logs/events
eth_getBlockByNumberBlock info by number
eth_getBlockByHashBlock info by hash
eth_getTransactionByHashTransaction info
eth_getTransactionReceiptTransaction receipt

TypeScript Interfaces

Client

interface Client {
  _id: string;
  alias: string;
  image: string;
  currencies: Currency[];
}

Currency

interface Currency {
  id: string;      // e.g.: "ethereum.mainnet.native.eth"
  address: string; // Ethereum address
  chainId?: string; // ChainId in hex (e.g.: "0x1")
}

Method (Enum)

enum Method {
  connect = "connect",
  personalSign = "personalSign",
  transactionSign = "transactionSign",
  typedDataSign = "typedDataSign",
  available = "available"
}