@xswap-link/sdk
Version:
JavaScript SDK for XSwap platform
56 lines (51 loc) • 1.7 kB
text/typescript
import { TransactionResponse as EvmTransactionResponse } from "@ethersproject/providers";
import { VersionedTransaction as SolanaVersionedTransaction } from "@solana/web3.js";
import { EvmHandlers, SolanaHandlers } from "@src/context";
import { Ecosystem } from "@src/models";
import { Dispatch, SetStateAction } from "react";
export type EnqueueTxProps = {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
executeTransaction: () =>
| Promise<EvmTransactionResponse | undefined>
| Promise<SolanaVersionedTransaction | undefined>
| undefined;
txStatus: TxStatus;
txMsg?: string;
handlers?: EvmHandlers | SolanaHandlers;
network?: Ecosystem;
showDefaultSuccessMessage?: boolean;
};
export type TxUIWrapperState = {
enqueueTransaction: (props: EnqueueTxProps) => number;
closeTransactionModal: (nonce: number) => void;
isTxModalOpen: boolean;
setTxModalOpen: Dispatch<SetStateAction<boolean>>;
loading: boolean;
txStatus: TxStatus;
setTxStatus: Dispatch<SetStateAction<TxStatus>>;
txExplorerUrl: string;
txHash: string;
txError: string;
txMsg: string;
setTxMsg: Dispatch<SetStateAction<string>>;
setTxError: Dispatch<SetStateAction<string>>;
txNeedsApproval: boolean;
setTxNeedsApproval: Dispatch<SetStateAction<boolean>>;
};
/**
* make sure there's always appropriate CONFIRMATION status following the SIGNING one
* see setTxStatus((prevStatus) => prevStatus + 1) at TxUIWrapper.tsx -> addUILogicToHandlersEVM
*/
export enum TxStatus {
SWAP_INIT,
SIGNING_APPROVAL,
CONFIRMING_APPROVAL,
SIGNING_TX,
CONFIRMING_TX,
COMPLETED,
}
export type TxStats = {
points?: string;
rank?: string;
cashback?: string;
};