import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers"; import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener, TypedContractMethod } from "../common"; export declare namespace AutoSwap { type PoolStruct = { target: AddressLike; tokenIn: AddressLike; tokenOut: AddressLike; fee: BigNumberish; }; type PoolStructOutput = [ target: string, tokenIn: string, tokenOut: string, fee: bigint ] & { target: string; tokenIn: string; tokenOut: string; fee: bigint; }; } export interface AutoSwapInterface extends Interface { getFunction(nameOrSignature: "getAmountOutV2" | "getAmountOutV3" | "quoter" | "swap" | "uniswapV3SwapCallback"): FunctionFragment; encodeFunctionData(functionFragment: "getAmountOutV2", values: [AddressLike, AddressLike, AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "getAmountOutV3", values: [AddressLike, AddressLike, AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "quoter", values: [AutoSwap.PoolStruct[], BigNumberish]): string; encodeFunctionData(functionFragment: "swap", values: [AutoSwap.PoolStruct[], BigNumberish, BigNumberish, AddressLike]): string; encodeFunctionData(functionFragment: "uniswapV3SwapCallback", values: [BigNumberish, BigNumberish, BytesLike]): string; decodeFunctionResult(functionFragment: "getAmountOutV2", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getAmountOutV3", data: BytesLike): Result; decodeFunctionResult(functionFragment: "quoter", data: BytesLike): Result; decodeFunctionResult(functionFragment: "swap", data: BytesLike): Result; decodeFunctionResult(functionFragment: "uniswapV3SwapCallback", data: BytesLike): Result; } export interface AutoSwap extends BaseContract { connect(runner?: ContractRunner | null): AutoSwap; waitForDeployment(): Promise; interface: AutoSwapInterface; queryFilter(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; queryFilter(filter: TypedDeferredTopicFilter, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; on(event: TCEvent, listener: TypedListener): Promise; on(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; once(event: TCEvent, listener: TypedListener): Promise; once(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; listeners(event: TCEvent): Promise>>; listeners(eventName?: string): Promise>; removeAllListeners(event?: TCEvent): Promise; getAmountOutV2: TypedContractMethod<[ pair: AddressLike, tokenIn: AddressLike, tokenOut: AddressLike, amountIn: BigNumberish ], [ bigint ], "view">; getAmountOutV3: TypedContractMethod<[ pool: AddressLike, tokenIn: AddressLike, tokenOut: AddressLike, amountIn: BigNumberish ], [ bigint ], "nonpayable">; quoter: TypedContractMethod<[ path: AutoSwap.PoolStruct[], amountIn: BigNumberish ], [ bigint ], "nonpayable">; swap: TypedContractMethod<[ path: AutoSwap.PoolStruct[], amountIn: BigNumberish, amountOutMin: BigNumberish, to: AddressLike ], [ bigint ], "payable">; uniswapV3SwapCallback: TypedContractMethod<[ amount0Delta: BigNumberish, amount1Delta: BigNumberish, _data: BytesLike ], [ void ], "nonpayable">; getFunction(key: string | FunctionFragment): T; getFunction(nameOrSignature: "getAmountOutV2"): TypedContractMethod<[ pair: AddressLike, tokenIn: AddressLike, tokenOut: AddressLike, amountIn: BigNumberish ], [ bigint ], "view">; getFunction(nameOrSignature: "getAmountOutV3"): TypedContractMethod<[ pool: AddressLike, tokenIn: AddressLike, tokenOut: AddressLike, amountIn: BigNumberish ], [ bigint ], "nonpayable">; getFunction(nameOrSignature: "quoter"): TypedContractMethod<[ path: AutoSwap.PoolStruct[], amountIn: BigNumberish ], [ bigint ], "nonpayable">; getFunction(nameOrSignature: "swap"): TypedContractMethod<[ path: AutoSwap.PoolStruct[], amountIn: BigNumberish, amountOutMin: BigNumberish, to: AddressLike ], [ bigint ], "payable">; getFunction(nameOrSignature: "uniswapV3SwapCallback"): TypedContractMethod<[ amount0Delta: BigNumberish, amount1Delta: BigNumberish, _data: BytesLike ], [ void ], "nonpayable">; filters: {}; }