import { ChainType } from '@openocean.finance/widget-sdk';
import type { WalletAdapter } from '@solana/wallet-adapter-base';
import type { Connector } from 'wagmi';
import type { CreateConnectorFnExtended } from '../connectors/types.js';
export interface AccountBase<CT extends ChainType, ConnectorType = undefined> {
    address?: string;
    addresses?: readonly string[];
    chainId?: number;
    chainType: CT;
    connector?: ConnectorType;
    isConnected: boolean;
    isConnecting: boolean;
    isDisconnected: boolean;
    isReconnecting: boolean;
    status: 'connected' | 'reconnecting' | 'connecting' | 'disconnected';
}
export type EVMAccount = AccountBase<ChainType.EVM, Connector>;
export type SVMAccount = AccountBase<ChainType.SVM, WalletAdapter>;
export type UTXOAccount = AccountBase<ChainType.UTXO, Connector>;
export type NVMAccount = AccountBase<ChainType.NVM, {
    id: string;
    name: string;
}>;
export type DefaultAccount = AccountBase<ChainType>;
export type Account = EVMAccount | SVMAccount | UTXOAccount | NVMAccount | DefaultAccount;
export interface AccountResult {
    account: Account;
    /**
     * Connected accounts
     */
    accounts: Account[];
}
interface UseAccountArgs {
    chainType?: ChainType;
}
export type LastConnectedAccount = WalletAdapter | Connector | CreateConnectorFnExtended | null;
interface LastConnectedAccountStore {
    lastConnectedAccount: LastConnectedAccount;
    setLastConnectedAccount: (account: LastConnectedAccount) => void;
}
export declare const useLastConnectedAccount: import("zustand").UseBoundStore<import("zustand").StoreApi<LastConnectedAccountStore>>;
interface NearAccountStore {
    nearAccount: NVMAccount | null;
    setNearAccount: (account: NVMAccount | null) => void;
}
export declare const useNearAccountStore: import("zustand").UseBoundStore<import("zustand").StoreApi<NearAccountStore>>;
/**
 * @param args When we provide args we want to return either account with corresponding chainType or default disconnected one
 * @returns - Account result
 */
export declare const useAccount: (args?: UseAccountArgs) => AccountResult;
export {};
