@reown/appkit-controllers
Version:
The full stack toolkit to build onchain app UX.
105 lines (104 loc) • 7.09 kB
TypeScript
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<string, string>;
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<ChainNamespace, ChainAdapter>;
universalAdapter: Pick<ChainAdapter, 'connectionControllerClient'>;
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<K extends ChainControllerStateKey>(key: K, callback: (value: ChainControllerState[K]) => void): () => void;
subscribeAccountStateProp(property: keyof AccountState, callback: (value: AccountState[keyof AccountState]) => void, chain?: ChainNamespace): () => void;
subscribeChainProp<K extends keyof ChainAdapter>(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<AdapterNetworkState>): void;
setChainAccountData(chain: ChainNamespace | undefined, accountProps: Partial<AccountState>, _unknown?: boolean): void;
setChainNetworkData(chain: ChainNamespace | undefined, networkProps: Partial<AdapterNetworkState>): 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<void>;
switchActiveNetwork(network: CaipNetwork, { throwOnFailure }?: SwitchActiveNetworkOptions): Promise<void>;
getConnectionControllerClient(_chain?: ChainNamespace): ConnectionControllerClient;
getNetworkProp<K extends keyof AdapterNetworkState>(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<Balance[]>;
isCaipNetworkDisabled(network: CaipNetwork): boolean;
};
export {};