import { Interface } from '@ethersproject/abi'; import { SwapSide } from '../constants'; import { AdapterExchangeParam, Address, DexExchangeParam, SimpleExchangeParam } from '../types'; import { IDexTxBuilder } from './idex'; import { SimpleExchange } from './simple-exchange'; import { NumberAsString } from '@paraswap/core'; import { IDexHelper } from '../dex-helper'; export type UniswapV3Data = { path: { tokenIn: Address; tokenOut: Address; fee: number; }[]; }; type UniswapV3SellParam = { path: string; recipient: Address; deadline: string; amountIn: NumberAsString; amountOutMinimum: NumberAsString; }; type UniswapV3BuyParam = { path: string; recipient: Address; deadline: string; amountOut: NumberAsString; amountInMaximum: NumberAsString; }; export type UniswapV3Param = UniswapV3SellParam | UniswapV3BuyParam; export declare class UniswapV3 extends SimpleExchange implements IDexTxBuilder { static dexKeys: string[]; exchangeRouterInterface: Interface; needWrapNative: boolean; protected routerAddress: string; constructor(dexHelper: IDexHelper, dexKey: string, routerAddress?: Address); protected encodePath(path: { tokenIn: Address; tokenOut: Address; fee: number; }[], side: SwapSide): string; getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: UniswapV3Data, side: SwapSide): AdapterExchangeParam; getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: UniswapV3Data, side: SwapSide): Promise; getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: UniswapV3Data, side: SwapSide): DexExchangeParam; } export {};