@enclavemoney/enclave-wallet-sdk
Version:
A simple enclave wallet SDK for React applications
133 lines (132 loc) • 4.69 kB
TypeScript
import React from "react";
import WalletSDK from "../index";
import { TokenInfo, OutputDetails, OptimalSourceTokenDistributionResponse, OptimalSourceTokenDistributionInput, ComputeQuoteResponse, ComputeQuoteInput, SourceTokensInput, SourceTokensResponse } from "../services/services";
import { CalculateQuoteInput, CalculateQuoteResponse, ExecuteSwapInput, ExecuteSwapResponse, GetQuoteForActionInput, GetQuoteForActionResponse, ExecuteActionInput, ExecuteActionResponse } from "../services/quoteServices";
import { swapToken } from "../types/swap";
import { ProtocolProvider } from "./utils";
import { ThemeMode, CornerRadius, WalletConfig, Theme } from "../types/theme";
interface SwapParams {
fromToken: swapToken;
toToken: Omit<swapToken, "amount">;
showMessagePopup?: boolean;
messageType?: "success" | "error";
transactionId?: string;
}
interface TransferParams {
inputToken: {
symbol?: string;
name?: string;
address: string;
chainId: number;
decimals?: number;
balance?: string;
logoURI?: string;
chainIds?: {
chainId: number;
address: string;
balance?: string;
}[];
};
inputAmount?: string;
recipient: string;
}
interface HeadlessTransferParams {
inputToken: {
symbol?: string;
name?: string;
address: string;
chainId: number;
decimals?: number;
balance?: string;
logoURI?: string;
chainIds?: {
chainId: number;
address: string;
balance?: string;
}[];
};
inputAmount: string;
recipient: string;
}
interface QuoteParams {
fromToken: {
amount: string;
chainId: number;
tokenAddress: string;
metadata?: {
tokenName: string;
tokenSymbol: string;
decimals: number;
logoURI: string;
chainIds: {
chainId: number;
address: string;
}[];
};
};
toToken: {
chainId: number;
tokenAddress: string;
metadata?: {
tokenName: string;
tokenSymbol: string;
decimals: number;
logoURI: string;
chainIds: {
chainId: number;
address: string;
}[];
};
};
provider?: ProtocolProvider;
}
interface WalletContextType {
walletSDK: WalletSDK | null;
isLoggedIn: boolean;
username: string | null;
evmWalletAddress: string | null;
solanaAddress: string | null;
bitcoinWalletAddress: string | null;
balance: any | null;
connect: () => void;
openWalletModal: () => void;
disconnect: () => void;
swap: (params: SwapParams) => void;
executeTransfer: (params: TransferParams) => void;
executeHeadlessTransfer: (params: HeadlessTransferParams) => Promise<any>;
tokenOptions: TokenInfo[];
tokensLoading: boolean;
refreshTokenOptions: () => Promise<void>;
cryptoBalance: any;
loading: boolean;
setLoading: (loading: boolean) => void;
refreshBalance: (showLoading?: boolean) => Promise<void>;
showActivity: boolean;
setShowActivity: (showActivity: boolean) => void;
activity: any;
setActivity: (activity: any) => void;
calculateDemoQuote: (params: QuoteParams) => Promise<OutputDetails | string>;
headlessSwap: (params: QuoteParams) => Promise<any>;
getOptimalSourceTokenDistribution: (params: OptimalSourceTokenDistributionInput) => Promise<OptimalSourceTokenDistributionResponse | null>;
computeQuote: (params: ComputeQuoteInput) => Promise<ComputeQuoteResponse | null>;
getSourceTokensFromTokenIdentifier: (params: SourceTokensInput) => Promise<SourceTokensResponse | null>;
calculateQuote: (params: CalculateQuoteInput) => Promise<CalculateQuoteResponse | null>;
executeSwap: (params: ExecuteSwapInput) => Promise<ExecuteSwapResponse | null>;
getQuoteForAction: (params: GetQuoteForActionInput) => Promise<GetQuoteForActionResponse | null>;
executeAction: (params: ExecuteActionInput) => Promise<ExecuteActionResponse | null>;
theme: ThemeMode;
walletCornerRadius: CornerRadius;
config: WalletConfig;
currentTheme: Theme;
loginWithRedirect: () => void;
handlePopupMessage: (event: MessageEvent) => void;
isPopupAuthenticated: boolean;
popupLoginData: any;
}
export declare const useWallet: () => WalletContextType;
interface WalletProviderProps {
children: React.ReactNode;
config: WalletConfig;
}
export declare const WalletProvider: React.FC<WalletProviderProps>;
export {};