import { Mutate, StoreApi } from 'zustand/vanilla'; import { Connector, ConnectorData } from './connectors'; import { ClientStorage } from './storage'; import { Provider, WebSocketProvider } from './types'; export declare type ClientConfig = { /** Enables reconnecting to last used connector on init */ autoConnect?: boolean; /** * Connectors used for linking accounts * @default [new InjectedConnector()] */ connectors?: (() => Connector[]) | Connector[]; /** Custom logger */ logger?: { warn: typeof console.warn | null; }; /** Interface for connecting to network */ provider: ((config: { chainId?: number; }) => TProvider) | TProvider; /** * Custom storage for data persistance * @default window.localStorage */ storage?: ClientStorage; /** WebSocket interface for connecting to network */ webSocketProvider?: ((config: { chainId?: number; }) => TWebSocketProvider | undefined) | TWebSocketProvider; }; export declare type Data = ConnectorData; export declare type State = { chains?: Connector['chains']; connector?: Connector; connectors: Connector[]; data?: Data; error?: Error; provider: TProvider; status: 'connected' | 'connecting' | 'reconnecting' | 'disconnected'; webSocketProvider?: TWebSocketProvider; }; export declare class Client { #private; config: ClientConfig; providers: Map; storage: ClientStorage; store: Mutate>, [ [ 'zustand/subscribeWithSelector', never ], [ 'zustand/persist', Partial> ] ]>; webSocketProviders: Map; constructor({ autoConnect, connectors, provider, storage, logger, webSocketProvider, }: ClientConfig); get chains(): import("./types").Chain[] | undefined; get connectors(): Connector[]; get connector(): Connector | undefined; get data(): Data | undefined; get error(): Error | undefined; get lastUsedChainId(): number | undefined; get provider(): TProvider; get status(): "connecting" | "connected" | "reconnecting" | "disconnected"; get subscribe(): { (listener: (selectedState: State, previousSelectedState: State) => void): () => void; (selector: (state: State) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: { equalityFn?: ((a: U, b: U) => boolean) | undefined; fireImmediately?: boolean | undefined; } | undefined): () => void; }; get webSocketProvider(): TWebSocketProvider | undefined; setState(updater: State | ((state: State) => State)): void; clearState(): void; destroy(): Promise; autoConnect(): Promise | undefined>; getProvider({ bust, chainId }?: { bust?: boolean; chainId?: number; }): TProvider; getWebSocketProvider({ bust, chainId, }?: { bust?: boolean; chainId?: number; }): TWebSocketProvider | undefined; setLastUsedConnector(lastUsedConnector?: string | null): void; } export declare let client: Client; export declare function createClient(config: ClientConfig): Client; export declare function getClient(): Client;