@dojima-wallet/solver-modules
Version:
Modules of different protocols for solvers
143 lines (142 loc) • 4.9 kB
TypeScript
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>;
}