import { WalletAdapter } from '@solana/wallet-adapter-base';
import { Connector } from 'wagmi';

type SupportedChainType = "EVM" | "SVM";
export interface AccountBase<CT extends SupportedChainType, 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<"EVM", Connector>;
export type SVMAccount = AccountBase<"SVM", WalletAdapter>;
export type DefaultAccount = AccountBase<SupportedChainType>;
export type Account = EVMAccount | SVMAccount | DefaultAccount;
export interface AccountResult {
    account: Account;
    /**
     * Connected accounts
     */
    accounts: Account[];
    /**
     * If at least one account is connected
     */
    isAnyConnected: boolean;
}
interface UseAccountArgs {
    chainType?: SupportedChainType;
}
export type LastConnectedAccount = WalletAdapter | Connector | 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 useAccounts: (args?: UseAccountArgs) => AccountResult;
export {};
