import type { WalletAdapter } from '@solana/wallet-adapter-base'; import type { TonConnectUI } from '@tonconnect/ui'; import type { Chain } from 'viem'; import type { Connector } from 'wagmi'; import { ChainType } from '../utils/chainType.js'; export interface AccountBase { address?: string; addresses?: readonly string[]; chain?: Chain; chainId?: number; chainType?: ChainType; isConnected: boolean; isConnecting: boolean; isDisconnected: boolean; isReconnecting: boolean; status: 'connected' | 'reconnecting' | 'connecting' | 'disconnected'; } export interface EVMAccount extends AccountBase { chainType: ChainType.EVM; connector?: Connector; } export interface SVMAccount extends AccountBase { chainType: ChainType.SVM; connector?: WalletAdapter; } export interface TONConnector extends TonConnectUI { name: string; icon: string; id: string; type: string; } export interface TVMAccount extends AccountBase { chainType: ChainType.TVM; connector: TONConnector; } export interface MOVEConnector { name: string; icon: string; id: string; type: string; } export interface MVMAccount extends AccountBase { chainType: ChainType.MVM; connector: MOVEConnector; } export interface EclipseAccount extends AccountBase { chainType: ChainType.ECLIPSE; connector?: WalletAdapter; } export interface DefaultAccount extends AccountBase { connector?: never; } export type Account = EVMAccount | SVMAccount | DefaultAccount | TVMAccount | MVMAccount | EclipseAccount; export interface AccountResult { account: Account; /** * Connected accounts */ accounts: Account[]; } interface UseAccountArgs { chainType?: ChainType; } /** * * @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 {};