import { ChainType } from "@0xsquid/squid-types";
import type { QrCodeData, Wallet } from "../../core/types";
import { ChainTypeToWalletState } from "../../core/types/wallet";
export declare enum ConnectingWalletStatus {
    IDLE = 0,
    CONNECTING = 1,
    REJECTED = 2,
    QR_GENERATION_FAILED = 3
}
export interface ConnectingWalletState {
    wallet: Wallet | undefined;
    status: ConnectingWalletStatus;
    qrData?: QrCodeData;
}
interface WalletStoreState {
    connectedWalletsByChainType: {
        [K in keyof ChainTypeToWalletState]: Partial<ChainTypeToWalletState[K]>;
    };
    connectingWalletState: ConnectingWalletState;
    recentConnectorIds: Partial<Record<ChainType, string>>;
}
type WalletStoreActions = {
    setConnectedWallet: <T extends ChainType>(chainType: ChainType, state: ChainTypeToWalletState[T]) => void;
    setConnectingWallet: (state: ConnectingWalletState) => void;
    disconnectWallet: (chainType: ChainType) => void;
};
export declare const useWalletStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<WalletStoreState & WalletStoreActions>, "persist"> & {
    persist: {
        setOptions: (options: Partial<import("zustand/middleware").PersistOptions<WalletStoreState & WalletStoreActions, {
            recentConnectorIds: Partial<Record<ChainType, string>>;
        }>>) => void;
        clearStorage: () => void;
        rehydrate: () => void | Promise<void>;
        hasHydrated: () => boolean;
        onHydrate: (fn: (state: WalletStoreState & WalletStoreActions) => void) => () => void;
        onFinishHydration: (fn: (state: WalletStoreState & WalletStoreActions) => void) => () => void;
        getOptions: () => Partial<import("zustand/middleware").PersistOptions<WalletStoreState & WalletStoreActions, {
            recentConnectorIds: Partial<Record<ChainType, string>>;
        }>>;
    };
}>;
export {};
