@reown/appkit-controllers
Version:
The full stack toolkit to build onchain app UX.
137 lines (136 loc) • 6.14 kB
TypeScript
import { type Address, type CaipNetworkId, type Hex } from '@reown/appkit-common';
import type { SwapTokenWithBalance } from '../utils/TypeUtil.js';
export declare const INITIAL_GAS_LIMIT = 150000;
export declare const TO_AMOUNT_DECIMALS = 6;
export type SwapInputTarget = 'sourceToken' | 'toToken';
export type SwapInputArguments = Partial<{
fromToken: string;
toToken: string;
amount: string;
}>;
type TransactionParams = {
data: Hex;
to: Address;
gas?: bigint;
gasPrice?: bigint;
value: bigint;
toAmount: string;
};
export interface SwapControllerState {
initializing: boolean;
initialized: boolean;
loadingPrices: boolean;
loadingQuote?: boolean;
loadingApprovalTransaction?: boolean;
loadingBuildTransaction?: boolean;
loadingTransaction?: boolean;
switchingTokens: boolean;
fetchError: boolean;
approvalTransaction: TransactionParams | undefined;
swapTransaction: TransactionParams | undefined;
transactionError?: string;
sourceToken?: SwapTokenWithBalance;
sourceTokenAmount: string;
sourceTokenPriceInUSD: number;
toToken?: SwapTokenWithBalance;
toTokenAmount: string;
toTokenPriceInUSD: number;
networkPrice: string;
networkBalanceInUSD: string;
networkTokenSymbol: string;
inputError: string | undefined;
slippage: number;
caipNetworkId?: CaipNetworkId;
tokens?: SwapTokenWithBalance[];
tokensLoading?: boolean;
suggestedTokens?: SwapTokenWithBalance[];
popularTokens?: SwapTokenWithBalance[];
foundTokens?: SwapTokenWithBalance[];
myTokensWithBalance?: SwapTokenWithBalance[];
tokensPriceMap: Record<string, number>;
gasFee: string;
gasPriceInUSD?: number;
priceImpact: number | undefined;
maxSlippage: number | undefined;
providerFee: string | undefined;
}
export interface TokenInfo {
address: `0x${string}`;
symbol: string;
name: string;
decimals: number;
logoURI: string;
domainVersion?: string;
eip2612?: boolean;
isFoT?: boolean;
tags?: string[];
}
type StateKey = keyof SwapControllerState;
export declare const SwapController: {
state: SwapControllerState;
subscribe(callback: (newState: SwapControllerState) => void): () => void;
subscribeKey<K extends StateKey>(key: K, callback: (value: SwapControllerState[K]) => void): () => void;
getParams(): {
networkAddress: string;
fromAddress: `0x${string}`;
fromCaipAddress: `eip155:${string}:${string}` | `solana:${string}:${string}` | `polkadot:${string}:${string}` | `bip122:${string}:${string}` | `cosmos:${string}:${string}` | `sui:${string}:${string}` | `stacks:${string}:${string}` | `ton:${string}:${string}` | `tron:${string}:${string}` | undefined;
sourceTokenAddress: `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;
toTokenAddress: `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;
toTokenAmount: string;
toTokenDecimals: number | undefined;
sourceTokenAmount: string;
sourceTokenDecimals: number | undefined;
invalidToToken: boolean;
invalidSourceToken: boolean;
invalidSourceTokenAmount: boolean;
availableToSwap: boolean | undefined;
isAuthConnector: boolean;
};
setSourceToken(sourceToken: SwapTokenWithBalance | undefined): Promise<void>;
setSourceTokenAmount(amount: string): void;
setToToken(toToken: SwapTokenWithBalance | undefined): Promise<void>;
setToTokenAmount(amount: string): void;
setTokenPrice(address: string, target: SwapInputTarget): Promise<void>;
switchTokens(): Promise<void>;
resetState(): void;
resetValues(): void;
getApprovalLoadingState(): boolean | undefined;
clearError(): void;
initializeState(): Promise<void>;
fetchTokens(): Promise<void>;
getTokenList(): Promise<void>;
getAddressPrice(address: string): Promise<number>;
getNetworkTokenPrice(): Promise<void>;
getMyTokensWithBalance(forceUpdate?: string): Promise<void>;
setBalances(balances: SwapTokenWithBalance[]): void;
getInitialGasPrice(): Promise<{
gasPrice: null;
gasPriceInUSD: null;
} | {
gasPrice: bigint;
gasPriceInUSD: number;
}>;
swapTokens(): Promise<void>;
getTransaction(): Promise<TransactionParams | undefined>;
createAllowanceTransaction(): Promise<{
data: `0x${string}`;
to: `0x${string}`;
gasPrice: bigint;
value: bigint;
toAmount: string;
} | undefined>;
createSwapTransaction(): Promise<{
data: `0x${string}`;
to: `0x${string}`;
gas: bigint;
gasPrice: bigint;
value: bigint;
toAmount: string;
} | undefined>;
onEmbeddedWalletApprovalSuccess(): void;
sendTransactionForApproval(data: TransactionParams): Promise<void>;
sendTransactionForSwap(data: TransactionParams | undefined): Promise<string | null | undefined>;
hasInsufficientToken(sourceTokenAmount: string, sourceTokenAddress: string): boolean;
setTransactionDetails(): void;
};
export {};