import { type Balance, type CaipAddress, type CaipNetwork, type CaipNetworkId, type ChainNamespace, type SocialProvider } from '@reown/appkit-common'; import type { AdapterNetworkState, ChainAdapter, ConnectedWalletInfo, NamespaceTypeMap, User } from '../utils/TypeUtil.js'; import { type ConnectionControllerClient } from './ConnectionController.js'; export type ChainControllerClients = { connectionControllerClient: ConnectionControllerClient; }; export interface AccountState { currentTab: number; caipAddress?: CaipAddress; user?: User; address?: string; addressLabels: Map; balance?: string; balanceSymbol?: string; balanceLoading?: boolean; profileName?: string | null; profileImage?: string | null; addressExplorerUrl?: string; smartAccountDeployed?: boolean; socialProvider?: SocialProvider; tokenBalance?: Balance[]; shouldUpdateToAddress?: string; connectedWalletInfo?: ConnectedWalletInfo; preferredAccountType?: NamespaceTypeMap[keyof NamespaceTypeMap]; socialWindow?: Window; farcasterUrl?: string; status?: 'reconnecting' | 'connected' | 'disconnected' | 'connecting'; lastRetry?: number; } export interface ChainControllerState { activeChain: ChainNamespace | undefined; activeCaipAddress: CaipAddress | undefined; activeCaipNetwork?: CaipNetwork; chains: Map; universalAdapter: Pick; noAdapters: boolean; isSwitchingNamespace: boolean; lastConnectedSIWECaipNetwork?: CaipNetwork; } type ChainControllerStateKey = keyof ChainControllerState; export interface SwitchActiveNetworkOptions { throwOnFailure?: boolean; } export declare const ChainController: { state: ChainControllerState; subscribe(callback: (value: ChainControllerState) => void): () => void; subscribeKey(key: K, callback: (value: ChainControllerState[K]) => void): () => void; subscribeAccountStateProp(property: keyof AccountState, callback: (value: AccountState[keyof AccountState]) => void, chain?: ChainNamespace): () => void; subscribeChainProp(property: K, callback: (value: ChainAdapter[K] | undefined) => void, chain?: ChainNamespace): () => void; initialize(adapters: ChainAdapter[], caipNetworks: CaipNetwork[] | undefined, clients: { connectionControllerClient: ConnectionControllerClient; }): void; removeAdapter(namespace: ChainNamespace): void; addAdapter(adapter: ChainAdapter, { connectionControllerClient }: ChainControllerClients, caipNetworks: [CaipNetwork, ...CaipNetwork[]]): void; addNetwork(network: CaipNetwork): void; removeNetwork(namespace: ChainNamespace, networkId: string | number): void; setAdapterNetworkState(chain: ChainNamespace, props: Partial): void; setChainAccountData(chain: ChainNamespace | undefined, accountProps: Partial, _unknown?: boolean): void; setChainNetworkData(chain: ChainNamespace | undefined, networkProps: Partial): void; setAccountProp(prop: keyof AccountState, value: AccountState[keyof AccountState], chain: ChainNamespace | undefined, replaceState?: boolean): void; setActiveNamespace(chain: ChainNamespace | undefined): void; setActiveCaipNetwork(caipNetwork: AdapterNetworkState["caipNetwork"]): void; addCaipNetwork(caipNetwork: AdapterNetworkState["caipNetwork"]): void; switchActiveNamespace(namespace: ChainNamespace | undefined): Promise; switchActiveNetwork(network: CaipNetwork, { throwOnFailure }?: SwitchActiveNetworkOptions): Promise; getConnectionControllerClient(_chain?: ChainNamespace): ConnectionControllerClient; getNetworkProp(key: K, namespace: ChainNamespace): AdapterNetworkState[K] | undefined; getRequestedCaipNetworks(chainToFilter: ChainNamespace): CaipNetwork[]; getAllRequestedCaipNetworks(): CaipNetwork[]; setRequestedCaipNetworks(caipNetworks: CaipNetwork[], chain: ChainNamespace): void; getAllApprovedCaipNetworkIds(): CaipNetworkId[]; getActiveCaipNetwork(chainNamespace?: ChainNamespace): CaipNetwork | undefined; getActiveCaipAddress(): `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}` | `sui:${string}:${string}` | `sui:${number}:${string}` | `stacks:${string}:${string}` | `stacks:${number}:${string}` | `ton:${string}:${string}` | `ton:${number}:${string}` | `tron:${string}:${string}` | `tron:${number}:${string}` | undefined; getApprovedCaipNetworkIds(namespace: ChainNamespace): CaipNetworkId[]; setApprovedCaipNetworksData(namespace: ChainNamespace, params: { approvedCaipNetworkIds: CaipNetworkId[]; supportsAllNetworks: boolean; }): void; checkIfSupportedNetwork(namespace: ChainNamespace, caipNetworkId?: CaipNetworkId): boolean; checkIfSupportedChainId(chainId: number | string): boolean; checkIfSmartAccountEnabled(): boolean; showUnsupportedChainUI(): void; checkIfNamesSupported(): boolean; resetNetwork(namespace: ChainNamespace): void; resetAccount(chain: ChainNamespace | undefined): void; setIsSwitchingNamespace(isSwitchingNamespace: boolean): void; getFirstCaipNetworkSupportsAuthConnector(): CaipNetwork | undefined; getAccountData(chainNamespace?: ChainNamespace): AccountState | undefined; getNetworkData(chainNamespace?: ChainNamespace): AdapterNetworkState | undefined; getCaipNetworkByNamespace(chainNamespace: ChainNamespace | undefined, chainId?: string | number | undefined): CaipNetwork | undefined; /** * Get the requested CaipNetwork IDs for a given namespace. If namespace is not provided, all requested CaipNetwork IDs will be returned * @param namespace - The namespace to get the requested CaipNetwork IDs for * @returns The requested CaipNetwork IDs */ getRequestedCaipNetworkIds(): (`eip155:${string}` | `eip155:${number}` | `solana:${string}` | `solana:${number}` | `polkadot:${string}` | `polkadot:${number}` | `bip122:${string}` | `bip122:${number}` | `cosmos:${string}` | `cosmos:${number}` | `sui:${string}` | `sui:${number}` | `stacks:${string}` | `stacks:${number}` | `ton:${string}` | `ton:${number}` | `tron:${string}` | `tron:${number}`)[]; getCaipNetworks(namespace?: ChainNamespace): CaipNetwork[]; getCaipNetworkById(id: string | number, namespace?: ChainNamespace): CaipNetwork | undefined; setLastConnectedSIWECaipNetwork(network: CaipNetwork | undefined): void; getLastConnectedSIWECaipNetwork(): CaipNetwork | undefined; fetchTokenBalance(onError?: (error: unknown) => void): Promise; isCaipNetworkDisabled(network: CaipNetwork): boolean; }; export {};