import { ChainType } from '@lifi/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 DefaultAccount = AccountBase<ChainType>;
export type Account = EVMAccount | SVMAccount | UTXOAccount | 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>>;
/**
 * @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 {};
