import type { CaipAddress, ChainNamespace } from '@reown/appkit-common';
import type { Balance } from '@reown/appkit-common';
import type { AccountType, AccountTypeMap, ConnectedWalletInfo, PreferredAccountTypes, SocialProvider, User } from '../utils/TypeUtil.js';
export interface AccountControllerState {
    currentTab: number;
    caipAddress?: CaipAddress;
    user?: User;
    address?: string;
    addressLabels: Map<string, string>;
    allAccounts: AccountType[];
    balance?: string;
    balanceSymbol?: string;
    balanceLoading?: boolean;
    profileName?: string | null;
    profileImage?: string | null;
    addressExplorerUrl?: string;
    smartAccountDeployed?: boolean;
    socialProvider?: SocialProvider;
    tokenBalance?: Balance[];
    shouldUpdateToAddress?: string;
    connectedWalletInfo?: ConnectedWalletInfo;
    preferredAccountTypes?: PreferredAccountTypes;
    socialWindow?: Window;
    farcasterUrl?: string;
    status?: 'reconnecting' | 'connected' | 'disconnected' | 'connecting';
    lastRetry?: number;
}
export declare const AccountController: {
    state: AccountControllerState;
    replaceState(newState: AccountControllerState | undefined): void;
    subscribe(callback: (val: AccountControllerState) => void): () => void;
    subscribeKey<K extends keyof AccountControllerState>(property: K, callback: (val: AccountControllerState[K]) => void, chain?: ChainNamespace): () => void;
    setStatus(status: AccountControllerState["status"], chain: ChainNamespace | undefined): void;
    getCaipAddress(chain: ChainNamespace | undefined): `eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | undefined;
    setCaipAddress(caipAddress: AccountControllerState["caipAddress"], chain: ChainNamespace | undefined): void;
    setBalance(balance: AccountControllerState["balance"], balanceSymbol: AccountControllerState["balanceSymbol"], chain: ChainNamespace): void;
    setProfileName(profileName: AccountControllerState["profileName"], chain: ChainNamespace): void;
    setProfileImage(profileImage: AccountControllerState["profileImage"], chain?: ChainNamespace): void;
    setUser(user: AccountControllerState["user"], chain: ChainNamespace | undefined): void;
    setAddressExplorerUrl(explorerUrl: AccountControllerState["addressExplorerUrl"], chain: ChainNamespace | undefined): void;
    setSmartAccountDeployed(isDeployed: boolean, chain: ChainNamespace | undefined): void;
    setCurrentTab(currentTab: AccountControllerState["currentTab"]): void;
    setTokenBalance(tokenBalance: AccountControllerState["tokenBalance"], chain: ChainNamespace | undefined): void;
    setShouldUpdateToAddress(address: string, chain: ChainNamespace | undefined): void;
    setAllAccounts<N extends ChainNamespace>(accounts: AccountTypeMap[N][], namespace: N): void;
    addAddressLabel(address: string, label: string, chain: ChainNamespace | undefined): void;
    removeAddressLabel(address: string, chain: ChainNamespace | undefined): void;
    setConnectedWalletInfo(connectedWalletInfo: AccountControllerState["connectedWalletInfo"], chain: ChainNamespace): void;
    setPreferredAccountType(preferredAccountType: PreferredAccountTypes[ChainNamespace], chain: ChainNamespace): void;
    setPreferredAccountTypes(preferredAccountTypes: PreferredAccountTypes): void;
    setSocialProvider(socialProvider: AccountControllerState["socialProvider"], chain: ChainNamespace | undefined): void;
    setSocialWindow(socialWindow: AccountControllerState["socialWindow"], chain: ChainNamespace | undefined): void;
    setFarcasterUrl(farcasterUrl: AccountControllerState["farcasterUrl"], chain: ChainNamespace | undefined): void;
    fetchTokenBalance(onError?: (error: unknown) => void): Promise<Balance[]>;
    resetAccount(chain: ChainNamespace): void;
};
