UNPKG

@dojima-wallet/solver-modules

Version:

Modules of different protocols for solvers

143 lines (142 loc) 4.9 kB
import { ethers } from "ethers"; import { CHAIN_CONFIG } from "./config"; import { Config, SwapParams, TokensType } from "./types"; export declare class Client { private provider; private signer; private chain; constructor(privateKey: string, chain: string); getConfig(): Config; getProvider(): ethers.providers.JsonRpcProvider; getTokens(): { chainId: number; address: string; decimals: number; symbol: string; name: string; isToken: boolean; isNative: boolean; wrapped: boolean; }[] | { chainId: number; address: string; decimals: number; symbol: string; name: string; isToken: boolean; isNative: boolean; wrapped: boolean; }[] | { chainId: number; address: string; decimals: number; symbol: string; name: string; isToken: boolean; isNative: boolean; wrapped: boolean; }[] | { chainId: number; address: string; decimals: number; symbol: string; name: string; isToken: boolean; isNative: boolean; wrapped: boolean; }[] | { chainId: number; address: string; decimals: number; symbol: string; name: string; isToken: boolean; isNative: boolean; wrapped: boolean; }[] | { chainId: number; address: string; decimals: number; symbol: string; name: string; isToken: boolean; isNative: boolean; wrapped: boolean; }[] | { chainId: number; address: string; decimals: number; symbol: string; name: string; isToken: boolean; isNative: boolean; wrapped: boolean; }[]; getPoolFactoryContract(): ethers.Contract; getQuoterContract(): ethers.Contract; getSwapRouterContract(): ethers.Contract; protected approveToken(tokenIn: TokensType, tokenABI: any, amountIn: number, wallet: ethers.Wallet, swapRouterAddress: string): Promise<string>; getPoolInfo(tokenIn: string, tokenOut: string): Promise<{ poolContract: ethers.Contract; token0: any; token1: any; fee: any; }>; quoteSwap(tokenIn: string, tokenOut: string, amountIn: number, gasFee?: number): Promise<string>; protected executeSwap(params: SwapParams, explorerUrl: string): Promise<string>; swap(tokenIn: string, tokenOut: string, amountIn: number): Promise<{ txHash: string; explorerUrl: string; quotedAmount: string; }>; protected addChainConfig(newChain: string, config: (typeof CHAIN_CONFIG)[keyof typeof CHAIN_CONFIG]): void; protected updateChainConfig(chain: string, updatedFields: Partial<(typeof CHAIN_CONFIG)[keyof typeof CHAIN_CONFIG]>): void; /** * Wrap ETH to WETH * @param amountInETH Amount of ETH to wrap * @returns Transaction hash and explorer URL */ wrapETHToWETH(amountInETH: number): Promise<{ txHash: string; explorerUrl: string; }>; unwrapWETHToETH(amountInWETH: number): Promise<{ txHash: string; explorerUrl: string; }>; /** * Get balance of a token (native or ERC20) * @param tokenSymbol Token symbol (e.g., 'ETH', 'WETH', 'USDT') * @param address Optional address (defaults to signer's address) * @returns Balance in token decimals */ getTokenBalance(tokenSymbol: string, address?: string): Promise<string>; /** * Get native token (ETH) balance for an address * @param address Optional address (defaults to signer's address) * @returns Balance in ETH */ protected getNativeBalance(address?: string): Promise<string>; /** * Get ERC20 token balance for an address * @param tokenSymbol Token symbol (e.g., 'USDT', 'WETH') * @param address Optional address (defaults to signer's address) * @returns Balance in token decimals */ protected getErcTokenBalance(tokenSymbol: string, address?: string): Promise<string>; /** * Get balances for multiple tokens at once * @param tokenSymbols Array of token symbols * @param address Optional address (defaults to signer's address) * @returns Object mapping token symbols to their balances */ getMultipleTokenBalances(tokenSymbols: string[], address?: string): Promise<Record<string, string>>; /** * Check if an address has sufficient balance for a token * @param tokenSymbol Token symbol * @param requiredAmount Amount needed * @param address Optional address (defaults to signer's address) * @returns boolean indicating if balance is sufficient */ hasEnoughBalance(tokenSymbol: string, requiredAmount: number, address?: string): Promise<boolean>; }