import { AccountId } from 'caip'; import { PublicClient } from 'viem'; import { EvmAddress, BalanceResult, TokenDetails } from './types'; /** * Get the native currency balance for an account. * @param client - PublicClient for the chain * @param accountId - Account ID (CAIP-10 format) containing chain and address * @returns Balance result with balance, decimals, and symbol from the chain's native currency */ export declare function getNativeBalance(client: PublicClient, accountId: AccountId): Promise; /** * Get an ERC-20 token balance for an account. * * `decimals` and `symbol` are immutable token properties cached per (client, token) * pair. The cache holds the in-flight Promise so concurrent callers that arrive * before the first fetch settles share one set of two RPC calls (decimals + symbol) * rather than each firing three. Each caller always issues its own `balanceOf` read. * Call cost: first pass N accounts → N+2 calls; subsequent passes → N calls. * * Throws on invalid addresses or failed contract calls. * @param client - PublicClient for the chain * @param accountId - Account ID (CAIP-10 format) containing chain and address * @param token - Token address * @returns Token balance result with balance, decimals, and symbol */ export declare function getErc20TokenBalanceByChain(client: PublicClient, accountId: AccountId, token: EvmAddress): Promise; /** * Reads ERC-20 token details from a contract. * Uses four parallel reads via Promise.all. * Throws on invalid addresses or failed contract calls. * * @param client - PublicClient for the chain * @param tokenAddress - Token contract address * @returns Token details including name, symbol, decimals, and totalSupply */ export declare function getErc20TokenDetails(client: PublicClient, tokenAddress: EvmAddress): Promise;