Skip to main content

Types Reference

ethers-query is built with TypeScript and provides comprehensive type definitions for all its features.

Core Types​

AccountData​

interface AccountData {
/** The connected account address */
address: string | null;
/** The current chain ID */
chainId: number | null;
/** Whether the account is connected */
isConnected: boolean;
/** Whether the account is currently connecting */
isConnecting: boolean;
/** Whether the account is disconnected */
isDisconnected: boolean;
/** Whether the account state has been initialized */
isInitialized: boolean;
/** Whether a provider is available */
hasProvider: boolean;
}

ConnectorData​

interface ConnectorData {
/** The account address */
account: string | null;
/** The chain ID */
chainId: number | null;
/** The provider instance */
provider: Provider | null;
}

SmartContractConfig​

interface SmartContractConfig {
/** Contract address */
address: string;
/** Contract ABI */
abi: ContractInterface;
/** Optional function name for specific function calls */
functionName?: string;
/** Optional arguments for the function call */
args?: any[];
/** Optional chain ID override */
chainId?: number;
}

Hook Return Types​

UseWalletResult​

interface UseWalletResult {
/** Function to connect a wallet */
connect: (args: ConnectArgs) => Promise<void>;
/** Function to disconnect the current wallet */
disconnect: () => Promise<void>;
/** Whether a connection operation is in progress */
isConnecting: boolean;
/** Whether a disconnection operation is in progress */
isDisconnecting: boolean;
/** Error that occurred during the last operation */
error: Error | null;
}

ConnectArgs​

type ConnectArgs = {
/** The connector ID to use for connecting */
connectorId: string;
}

UseAccountResult​

interface UseAccountResult {
/** Account data */
data: AccountData;
/** Connect function */
connect: () => Promise<void>;
/** Disconnect function */
disconnect: () => Promise<void>;
/** Loading state */
isLoading: boolean;
/** Error state */
error: Error | null;
}

UseBalanceResult​

interface UseBalanceResult {
/** Balance data */
data: {
/** Raw balance value */
value: bigint;
/** Formatted balance string */
formatted: string;
/** Token symbol */
symbol: string;
/** Token decimals */
decimals: number;
} | null;
/** Loading state */
isLoading: boolean;
/** Error state */
error: Error | null;
}

Utility Types​

NetworkConfig​

interface NetworkConfig {
/** Chain ID */
chainId: number;
/** Network name */
name: string;
/** Network currency */
nativeCurrency: {
name: string;
symbol: string;
decimals: number;
};
/** RPC URLs */
rpcUrls: string[];
}

TransactionConfig​

interface TransactionConfig {
/** Transaction hash */
hash: string;
/** From address */
from: string;
/** To address */
to: string;
/** Value in wei */
value: bigint;
/** Gas limit */
gasLimit: bigint;
/** Gas price */
gasPrice: bigint;
/** Transaction data */
data: string;
}

Best Practices​

  1. Use TypeScript for better type safety
  2. Leverage type inference where possible
  3. Use strict TypeScript configuration
  4. Consider creating custom type guards for complex conditions
  5. Document custom types thoroughly