import type { Address, Chain } from 'viem'; import { SoundAPI } from '../api'; import type { ClientProvider, MerkleProvider, SoundClientContractProvider, Wallet } from '../types'; export type SoundClientInstanceConfig = SoundClientContractProvider & { /** * @default console.error */ onUnhandledError?(error: unknown): void; /** * Sound.xyz API instance */ soundAPI?: SoundAPI; /** * Merkle provider to be used */ merkleProvider?: MerkleProvider; }; export interface SoundClientInstance { instance: { client: NonNullable | null; wallet: NonNullable | null; merkleProvider: NonNullable | null; onUnhandledError: NonNullable; soundAPI: NonNullable | null; idempotentCachedCall(key: string, cb: () => Promise>): Promise> | Awaited; }; expectMerkleProvider(): MerkleProvider; expectWallet(): Promise<{ wallet: Wallet; userAddress: Address; }>; expectClient(): Promise; expectSoundAPI(): SoundAPI; getNetworkChainId(): Promise; } export declare function SoundClientInstance({ client, account, merkleProvider, onUnhandledError, soundAPI, }: SoundClientInstanceConfig): SoundClientInstance;