import type { Hex } from '../../types/common';
import type { WalletClient as ViemWalletClient } from 'viem';
export type Eip1193Provider = {
    request: (args: {
        method: string;
        params?: unknown[];
    }) => Promise<unknown>;
    on?: (event: string, handler: (...args: unknown[]) => void) => void;
    removeListener?: (event: string, handler: (...args: unknown[]) => void) => void;
};
export interface WalletAdapterConnectResult {
    walletClient: ViemWalletClient;
    address: Hex;
    chainId: number;
}
export interface WalletAdapter {
    /** Stable identifier (e.g. 'eip1193', 'ledger', 'walletconnect') */
    readonly id: string;
    /**
     * Establish a connection and return a viem WalletClient.
     */
    connect(args: {
        expectedChainId?: number;
        rpcUrl?: string;
    }): Promise<WalletAdapterConnectResult>;
    /**
     * Try to reconnect silently without user interaction.
     */
    tryReconnect?(args: {
        expectedChainId?: number;
        rpcUrl?: string;
    }): Promise<WalletAdapterConnectResult | null>;
    /** Optional disconnect hook */
    disconnect?(): void | Promise<void>;
    /**
     * Subscribe to wallet account changes.
     * Returns an unsubscribe function.
     */
    onAccountsChanged?(handler: (accounts: string[]) => void): () => void;
    /**
     * Subscribe to wallet chain changes.
     * Returns an unsubscribe function.
     */
    onChainChanged?(handler: (chainId: number) => void): () => void;
}
//# sourceMappingURL=types.d.ts.map