import { TAddress } from '../../../models/TAddress'; import { TAccount } from '../../../models/TAccount'; import { ClientEventsStream, TClientEventsStreamData } from '../../../clients/ClientEventsStream'; import { ContractBase } from '../../../contracts/ContractBase'; import { ContractStorageReaderBase } from '../../../contracts/ContractStorageReaderBase'; import { TxWriter } from '../../../txs/TxWriter'; import { ITxLogItem } from '../../../txs/receipt/ITxLogItem'; import { Web3Client } from '../../../clients/Web3Client'; import { IBlockchainExplorer } from '../../../explorer/IBlockchainExplorer'; import { SubjectStream } from '../../../class/SubjectStream'; import type { TAbiItem } from '../../../types/TAbi'; import type { TEth } from '../../../models/TEth'; import type { TOverrideReturns } from '../../../utils/types'; export declare class AmmRouterV2Contract extends ContractBase { address: TEth.Address; client: Web3Client; explorer: IBlockchainExplorer; constructor(address?: TEth.Address, client?: Web3Client, explorer?: IBlockchainExplorer); Types: TAmmRouterV2ContractTypes; $meta: { class: string; }; $constructor(deployer: TSender, _factory: TAddress, _WETH: TAddress): Promise; WETH(): Promise; addLiquidity(sender: TSender, tokenA: TAddress, tokenB: TAddress, amountADesired: bigint, amountBDesired: bigint, amountAMin: bigint, amountBMin: bigint, to: TAddress, deadline: bigint): Promise; addLiquidityETH(sender: TSender, token: TAddress, amountTokenDesired: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint): Promise; factory(): Promise; getAmountIn(amountOut: bigint, reserveIn: bigint, reserveOut: bigint): Promise; getAmountOut(amountIn: bigint, reserveIn: bigint, reserveOut: bigint): Promise; getAmountsIn(amountOut: bigint, path: TAddress[]): Promise; getAmountsOut(amountIn: bigint, path: TAddress[]): Promise; quote(amountA: bigint, reserveA: bigint, reserveB: bigint): Promise; removeLiquidity(sender: TSender, tokenA: TAddress, tokenB: TAddress, liquidity: bigint, amountAMin: bigint, amountBMin: bigint, to: TAddress, deadline: bigint): Promise; removeLiquidityETH(sender: TSender, token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint): Promise; removeLiquidityETHSupportingFeeOnTransferTokens(sender: TSender, token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint): Promise; removeLiquidityETHWithPermit(sender: TSender, token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint, approveMax: boolean, v: number, r: TEth.Hex, s: TEth.Hex): Promise; removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(sender: TSender, token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint, approveMax: boolean, v: number, r: TEth.Hex, s: TEth.Hex): Promise; removeLiquidityWithPermit(sender: TSender, tokenA: TAddress, tokenB: TAddress, liquidity: bigint, amountAMin: bigint, amountBMin: bigint, to: TAddress, deadline: bigint, approveMax: boolean, v: number, r: TEth.Hex, s: TEth.Hex): Promise; swapETHForExactTokens(sender: TSender, amountOut: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapExactETHForTokens(sender: TSender, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapExactETHForTokensSupportingFeeOnTransferTokens(sender: TSender, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapExactTokensForETH(sender: TSender, amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapExactTokensForETHSupportingFeeOnTransferTokens(sender: TSender, amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapExactTokensForTokens(sender: TSender, amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapExactTokensForTokensSupportingFeeOnTransferTokens(sender: TSender, amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapTokensForExactETH(sender: TSender, amountOut: bigint, amountInMax: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapTokensForExactTokens(sender: TSender, amountOut: bigint, amountInMax: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; $call(): IAmmRouterV2ContractTxCaller; $signed(): TOverrideReturns>; $data(): IAmmRouterV2ContractTxData; $gas(): TOverrideReturns>; onTransaction(method: TMethod, options: Parameters[0]): SubjectStream<{ tx: TEth.Tx; block: TEth.Block; calldata: { method: TMethod; arguments: TAmmRouterV2ContractTypes['Methods'][TMethod]['arguments']; }; }>; onLog(event: keyof TEvents, cb?: (event: TClientEventsStreamData) => void): ClientEventsStream; getPastLogs(events: TEventName[], options?: TEventLogOptions>): Promise, TEventName>[]>; getPastLogs(event: TEventName, options?: TEventLogOptions>): Promise, TEventName>[]>; abi: TAbiItem[]; storage: AmmRouterV2ContractStorageReader; } type TSender = TAccount & { value?: string | number | bigint; }; type TEventLogOptions = { fromBlock?: number | Date; toBlock?: number | Date; params?: TParams; }; export type TAmmRouterV2ContractTypes = { Events: {}; Methods: { WETH: { method: "WETH"; arguments: []; }; addLiquidity: { method: "addLiquidity"; arguments: [tokenA: TAddress, tokenB: TAddress, amountADesired: bigint, amountBDesired: bigint, amountAMin: bigint, amountBMin: bigint, to: TAddress, deadline: bigint]; }; addLiquidityETH: { method: "addLiquidityETH"; arguments: [token: TAddress, amountTokenDesired: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint]; }; factory: { method: "factory"; arguments: []; }; getAmountIn: { method: "getAmountIn"; arguments: [amountOut: bigint, reserveIn: bigint, reserveOut: bigint]; }; getAmountOut: { method: "getAmountOut"; arguments: [amountIn: bigint, reserveIn: bigint, reserveOut: bigint]; }; getAmountsIn: { method: "getAmountsIn"; arguments: [amountOut: bigint, path: TAddress[]]; }; getAmountsOut: { method: "getAmountsOut"; arguments: [amountIn: bigint, path: TAddress[]]; }; quote: { method: "quote"; arguments: [amountA: bigint, reserveA: bigint, reserveB: bigint]; }; removeLiquidity: { method: "removeLiquidity"; arguments: [tokenA: TAddress, tokenB: TAddress, liquidity: bigint, amountAMin: bigint, amountBMin: bigint, to: TAddress, deadline: bigint]; }; removeLiquidityETH: { method: "removeLiquidityETH"; arguments: [token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint]; }; removeLiquidityETHSupportingFeeOnTransferTokens: { method: "removeLiquidityETHSupportingFeeOnTransferTokens"; arguments: [token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint]; }; removeLiquidityETHWithPermit: { method: "removeLiquidityETHWithPermit"; arguments: [token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint, approveMax: boolean, v: number, r: TEth.Hex, s: TEth.Hex]; }; removeLiquidityETHWithPermitSupportingFeeOnTransferTokens: { method: "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens"; arguments: [token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint, approveMax: boolean, v: number, r: TEth.Hex, s: TEth.Hex]; }; removeLiquidityWithPermit: { method: "removeLiquidityWithPermit"; arguments: [tokenA: TAddress, tokenB: TAddress, liquidity: bigint, amountAMin: bigint, amountBMin: bigint, to: TAddress, deadline: bigint, approveMax: boolean, v: number, r: TEth.Hex, s: TEth.Hex]; }; swapETHForExactTokens: { method: "swapETHForExactTokens"; arguments: [amountOut: bigint, path: TAddress[], to: TAddress, deadline: bigint]; }; swapExactETHForTokens: { method: "swapExactETHForTokens"; arguments: [amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint]; }; swapExactETHForTokensSupportingFeeOnTransferTokens: { method: "swapExactETHForTokensSupportingFeeOnTransferTokens"; arguments: [amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint]; }; swapExactTokensForETH: { method: "swapExactTokensForETH"; arguments: [amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint]; }; swapExactTokensForETHSupportingFeeOnTransferTokens: { method: "swapExactTokensForETHSupportingFeeOnTransferTokens"; arguments: [amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint]; }; swapExactTokensForTokens: { method: "swapExactTokensForTokens"; arguments: [amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint]; }; swapExactTokensForTokensSupportingFeeOnTransferTokens: { method: "swapExactTokensForTokensSupportingFeeOnTransferTokens"; arguments: [amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint]; }; swapTokensForExactETH: { method: "swapTokensForExactETH"; arguments: [amountOut: bigint, amountInMax: bigint, path: TAddress[], to: TAddress, deadline: bigint]; }; swapTokensForExactTokens: { method: "swapTokensForExactTokens"; arguments: [amountOut: bigint, amountInMax: bigint, path: TAddress[], to: TAddress, deadline: bigint]; }; }; }; declare class AmmRouterV2ContractStorageReader extends ContractStorageReaderBase { address: TAddress; client: Web3Client; explorer: IBlockchainExplorer; constructor(address: TAddress, client: Web3Client, explorer: IBlockchainExplorer); $slots: any[]; } interface IAmmRouterV2ContractTxCaller { addLiquidity(sender: TSender, tokenA: TAddress, tokenB: TAddress, amountADesired: bigint, amountBDesired: bigint, amountAMin: bigint, amountBMin: bigint, to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; addLiquidityETH(sender: TSender, token: TAddress, amountTokenDesired: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; removeLiquidity(sender: TSender, tokenA: TAddress, tokenB: TAddress, liquidity: bigint, amountAMin: bigint, amountBMin: bigint, to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; removeLiquidityETH(sender: TSender, token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; removeLiquidityETHSupportingFeeOnTransferTokens(sender: TSender, token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; removeLiquidityETHWithPermit(sender: TSender, token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint, approveMax: boolean, v: number, r: TEth.Hex, s: TEth.Hex): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(sender: TSender, token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint, approveMax: boolean, v: number, r: TEth.Hex, s: TEth.Hex): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; removeLiquidityWithPermit(sender: TSender, tokenA: TAddress, tokenB: TAddress, liquidity: bigint, amountAMin: bigint, amountBMin: bigint, to: TAddress, deadline: bigint, approveMax: boolean, v: number, r: TEth.Hex, s: TEth.Hex): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; swapETHForExactTokens(sender: TSender, amountOut: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; swapExactETHForTokens(sender: TSender, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; swapExactETHForTokensSupportingFeeOnTransferTokens(sender: TSender, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; swapExactTokensForETH(sender: TSender, amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; swapExactTokensForETHSupportingFeeOnTransferTokens(sender: TSender, amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; swapExactTokensForTokens(sender: TSender, amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; swapExactTokensForTokensSupportingFeeOnTransferTokens(sender: TSender, amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; swapTokensForExactETH(sender: TSender, amountOut: bigint, amountInMax: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; swapTokensForExactTokens(sender: TSender, amountOut: bigint, amountInMax: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; } interface IAmmRouterV2ContractTxData { addLiquidity(sender: TSender, tokenA: TAddress, tokenB: TAddress, amountADesired: bigint, amountBDesired: bigint, amountAMin: bigint, amountBMin: bigint, to: TAddress, deadline: bigint): Promise; addLiquidityETH(sender: TSender, token: TAddress, amountTokenDesired: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint): Promise; removeLiquidity(sender: TSender, tokenA: TAddress, tokenB: TAddress, liquidity: bigint, amountAMin: bigint, amountBMin: bigint, to: TAddress, deadline: bigint): Promise; removeLiquidityETH(sender: TSender, token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint): Promise; removeLiquidityETHSupportingFeeOnTransferTokens(sender: TSender, token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint): Promise; removeLiquidityETHWithPermit(sender: TSender, token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint, approveMax: boolean, v: number, r: TEth.Hex, s: TEth.Hex): Promise; removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(sender: TSender, token: TAddress, liquidity: bigint, amountTokenMin: bigint, amountETHMin: bigint, to: TAddress, deadline: bigint, approveMax: boolean, v: number, r: TEth.Hex, s: TEth.Hex): Promise; removeLiquidityWithPermit(sender: TSender, tokenA: TAddress, tokenB: TAddress, liquidity: bigint, amountAMin: bigint, amountBMin: bigint, to: TAddress, deadline: bigint, approveMax: boolean, v: number, r: TEth.Hex, s: TEth.Hex): Promise; swapETHForExactTokens(sender: TSender, amountOut: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapExactETHForTokens(sender: TSender, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapExactETHForTokensSupportingFeeOnTransferTokens(sender: TSender, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapExactTokensForETH(sender: TSender, amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapExactTokensForETHSupportingFeeOnTransferTokens(sender: TSender, amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapExactTokensForTokens(sender: TSender, amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapExactTokensForTokensSupportingFeeOnTransferTokens(sender: TSender, amountIn: bigint, amountOutMin: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapTokensForExactETH(sender: TSender, amountOut: bigint, amountInMax: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; swapTokensForExactTokens(sender: TSender, amountOut: bigint, amountInMax: bigint, path: TAddress[], to: TAddress, deadline: bigint): Promise; } type TEvents = TAmmRouterV2ContractTypes['Events']; type TEventParams = Partial; export {};