import { type CaipAddress, type CaipNetwork, type ChainNamespace, type Connection, type Hex } from '@reown/appkit-common'; import type { W3mFrameTypes } from '@reown/appkit-wallet'; import type { ChainAdapter, Connector, EstimateGasTransactionArgs, SendTransactionArgs, WalletGetAssetsParams, WalletGetAssetsResponse, WcWallet, WriteContractArgs, WriteSolanaTransactionArgs } from '../utils/TypeUtil.js'; import { type ChainControllerState } from './ChainController.js'; interface SwitchConnectionParams { connection: Connection; address?: string; namespace: ChainNamespace; closeModalOnConnect?: boolean; onChange?: (params: { address: string; namespace: ChainNamespace; hasSwitchedAccount: boolean; hasSwitchedWallet: boolean; }) => void; } interface HandleDisconnectedConnectionParams { connection: Connection; namespace: ChainNamespace; address?: string; closeModalOnConnect?: boolean; } interface HandleActiveConnectionParams { connection: Connection; namespace: ChainNamespace; address?: string; } interface DisconnectParams { id?: string; namespace?: ChainNamespace; initialDisconnect?: boolean; } export interface ConnectExternalOptions { id: Connector['id']; type: Connector['type']; provider?: Connector['provider']; address?: string; info?: Connector['info']; chain?: ChainNamespace; chainId?: number | string; caipNetwork?: CaipNetwork; socialUri?: string; preferredAccountType?: 'eoa' | 'smartAccount'; } interface HandleAuthAccountSwitchParams { address: string; namespace: ChainNamespace; } export interface DisconnectParameters { id?: string; chainNamespace?: ChainNamespace; initialDisconnect?: boolean; } interface DisconnectConnectorParameters { id: string; namespace: ChainNamespace; } interface ConnectWalletConnectParameters { cache?: 'auto' | 'always' | 'never'; } export interface ConnectionControllerClient { connectWalletConnect?: (params?: ConnectWalletConnectParameters) => Promise; disconnect: (params?: DisconnectParameters) => Promise; disconnectConnector: (params: DisconnectConnectorParameters) => Promise; signMessage: (message: string) => Promise; sendTransaction: (args: SendTransactionArgs) => Promise; estimateGas: (args: EstimateGasTransactionArgs) => Promise; parseUnits: (value: string, decimals: number) => bigint; formatUnits: (value: bigint, decimals: number) => string; connectExternal?: (options: ConnectExternalOptions) => Promise<{ address: string; } | undefined>; reconnectExternal?: (options: ConnectExternalOptions) => Promise; checkInstalled?: (ids?: string[]) => boolean; writeContract: (args: WriteContractArgs) => Promise<`0x${string}` | null>; writeSolanaTransaction: (args: WriteSolanaTransactionArgs) => Promise; getEnsAddress: (value: string) => Promise; getEnsAvatar: (value: string) => Promise; grantPermissions: (params: readonly unknown[] | object) => Promise; revokePermissions: (params: { pci: string; permissions: unknown[]; expiry: number; address: CaipAddress; }) => Promise; getCapabilities: (params: string) => Promise; walletGetAssets: (params: WalletGetAssetsParams) => Promise; updateBalance: (chainNamespace: ChainNamespace) => void; } export interface ConnectionControllerState { isSwitchingConnection: boolean; connections: Map; recentConnections: Map; _client?: ConnectionControllerClient; wcUri?: string; wcPairingExpiry?: number; wcLinking?: { href: string; name: string; }; wcBasic?: boolean; wcError?: boolean; wcFetchingUri: boolean; recentWallet?: WcWallet; buffering: boolean; status?: 'connecting' | 'connected' | 'disconnected'; connectionControllerClient?: ConnectionControllerClient; } type StateKey = keyof ConnectionControllerState; export declare const ConnectionController: { state: ConnectionControllerState; subscribe(callback: (newState: ConnectionControllerState) => void): () => void; subscribeKey(key: K, callback: (value: ConnectionControllerState[K]) => void): () => void; _getClient(): ConnectionControllerClient | undefined; setClient(client: ConnectionControllerClient): void; initialize(adapters: ChainAdapter[]): void; syncStorageConnections(namespaces?: ChainNamespace[]): void; getConnections(namespace?: ChainNamespace): Connection[]; hasAnyConnection(connectorId: string): boolean; connectWalletConnect({ cache }?: ConnectWalletConnectParameters): Promise; connectExternal(options: ConnectExternalOptions, chain: ChainControllerState["activeChain"], setChain?: boolean): Promise<{ address: string; } | undefined>; reconnectExternal(options: ConnectExternalOptions): Promise; setPreferredAccountType(accountType: W3mFrameTypes.AccountType, namespace: ChainControllerState["activeChain"]): Promise; signMessage(message: string): Promise; parseUnits(value: string, decimals: number): bigint | undefined; formatUnits(value: bigint, decimals: number): string | undefined; updateBalance(namespace: ChainNamespace): void | undefined; sendTransaction(args: SendTransactionArgs): Promise; getCapabilities(params: string): Promise; grantPermissions(params: object | readonly unknown[]): Promise; walletGetAssets(params: WalletGetAssetsParams): Promise; estimateGas(args: EstimateGasTransactionArgs): Promise; writeContract(args: WriteContractArgs): Promise<`0x${string}` | null | undefined>; writeSolanaTransaction(args: WriteSolanaTransactionArgs): Promise; getEnsAddress(value: string): Promise; getEnsAvatar(value: string): Promise; checkInstalled(ids?: string[]): boolean; resetWcConnection(): void; resetUri(): void; finalizeWcConnection(address?: string): void; setWcBasic(wcBasic: ConnectionControllerState["wcBasic"]): void; setUri(uri: string): void; setWcLinking(wcLinking: ConnectionControllerState["wcLinking"]): void; setWcError(wcError: ConnectionControllerState["wcError"]): void; setRecentWallet(wallet: ConnectionControllerState["recentWallet"]): void; setBuffering(buffering: ConnectionControllerState["buffering"]): void; setStatus(status: ConnectionControllerState["status"]): void; setIsSwitchingConnection(isSwitchingConnection: ConnectionControllerState["isSwitchingConnection"]): void; disconnect({ id, namespace, initialDisconnect }?: DisconnectParams): Promise; disconnectConnector({ id, namespace }: DisconnectConnectorParameters): Promise; setConnections(connections: Connection[], chainNamespace: ChainNamespace): void; handleAuthAccountSwitch({ address, namespace }: HandleAuthAccountSwitchParams): Promise; handleActiveConnection({ connection, namespace, address }: HandleActiveConnectionParams): Promise; handleDisconnectedConnection({ connection, namespace, address, closeModalOnConnect }: HandleDisconnectedConnectionParams): Promise; switchConnection({ connection, address, namespace, closeModalOnConnect, onChange }: SwitchConnectionParams): Promise; }; export {};