@swapper-finance/sdk
Version:
JavaScript SDK form Swapper
139 lines (126 loc) • 4.36 kB
text/typescript
import { ContractCall, SwapperAppPayload } from "@src/models";
import {
Chain,
Route,
SwapperCTAs,
TokenPrices,
TokenWithChain,
} from "@src/models";
import {
SwapMode,
ProcessingState,
Balances,
HistoryEntry,
BalancesSnapshotMap,
} from "@src/interfaces";
import React from "react";
export interface Shift4Fees {
processingFeeFiatAmount: string;
partnerFeeFiatAmount: string;
networkFeeFiatAmount: string;
}
export interface SwapContext {
// Configuration
slippage: number;
setSlippage: React.Dispatch<React.SetStateAction<number>>;
integrationConfig: Partial<SwapperAppPayload>;
integrationTypeOverride: string | undefined;
setIntegrationTypeOverride: React.Dispatch<
React.SetStateAction<string | undefined>
>;
supportedChains: Chain[];
isFetchingChains: boolean;
supportedChainsMap: Record<string, Chain>;
swapMode: SwapMode;
isMultichain: boolean;
isExternalMode: boolean;
ctas: SwapperCTAs;
isDirectOnRampSupported: boolean;
isCheckingDirectOnRamp: boolean;
// Token state
allTokens: TokenWithChain[];
tokensPrices: TokenPrices;
cashToken: TokenWithChain | undefined;
token: TokenWithChain | undefined;
setToken: React.Dispatch<React.SetStateAction<TokenWithChain | undefined>>;
displayToken: TokenWithChain | undefined;
setDisplayToken: React.Dispatch<
React.SetStateAction<TokenWithChain | undefined>
>;
transferToken: TokenWithChain | undefined;
setTransferToken: React.Dispatch<
React.SetStateAction<TokenWithChain | undefined>
>;
// Balance state
tokensBalances: Record<string, Record<string, Balances>>;
isFetchingBalances: boolean;
fetchAllBalances: () => Promise<void>;
// Chain state
chain: Chain | undefined;
setChain: React.Dispatch<React.SetStateAction<Chain | undefined>>;
cashBridgeChain: Chain | undefined;
setCashBridgeChain: React.Dispatch<React.SetStateAction<Chain | undefined>>;
chainToTokenOptionsMap: Record<string, TokenWithChain[]>;
// Amount state
tokenAmount: string;
setTokenAmount: React.Dispatch<React.SetStateAction<string>>;
tokenAmountWei: string;
cashAmount: string;
setCashAmount: React.Dispatch<React.SetStateAction<string>>;
estimatedTokenOutAmount: string;
estimatedTokenOutAmountWei: string;
cashBridgeAmount: string;
setCashBridgeAmount: React.Dispatch<React.SetStateAction<string>>;
estimatedCashOutAmount: string;
// Transfer state
transferTokenAmount: string;
setTransferTokenAmount: React.Dispatch<React.SetStateAction<string>>;
transferReceiverAddress: string;
setTransferReceiverAddress: React.Dispatch<React.SetStateAction<string>>;
// Route state
route: Route | undefined;
isFetchingRoute: boolean;
fetchRoute: () => Promise<void>;
fetchShift4Quote: (fiatAmount: string) => Promise<void>;
feesToTokenValueRatio: number;
setFeesToTokenValueRatio: React.Dispatch<React.SetStateAction<number>>;
acceptedHighFees: boolean;
setAcceptedHighFees: React.Dispatch<React.SetStateAction<boolean>>;
customContractCalls: ContractCall[] | undefined;
setCustomContractCalls: React.Dispatch<
React.SetStateAction<ContractCall[] | undefined>
>;
// Transaction state
transactionHash: string;
setTransactionHash: React.Dispatch<React.SetStateAction<string>>;
transactionState: ProcessingState;
setTransactionState: React.Dispatch<React.SetStateAction<ProcessingState>>;
cashbackAmount: string | undefined;
pointsAmount: string | undefined;
tokenOutAmount: string;
setTokenOutAmount: React.Dispatch<React.SetStateAction<string>>;
executeSwapTransaction: () => Promise<void>;
transactionError: string;
isDepositAndBuyFlow: boolean;
setIsDepositAndBuyFlow: React.Dispatch<React.SetStateAction<boolean>>;
newPurchaseCounter: number;
setNewPurchaseCounter: React.Dispatch<React.SetStateAction<number>>;
balancesSnapshots: BalancesSnapshotMap;
setBalancesSnapshots: React.Dispatch<
React.SetStateAction<BalancesSnapshotMap>
>;
// Shift4 related
shift4TokenAmount: string;
shift4Fees: Shift4Fees | undefined;
isUsingChainlinkFunction: boolean;
// History
history: HistoryEntry[];
fetchHistory: () => Promise<void>;
historyLoadedOnce: boolean;
// Reset state
resetSwapFormData: () => void;
clearSwapStateOnLogout: () => void;
// Error handling
error: string;
errorDetails: string;
}