import { Token } from "../../../../../../../../../common/tokens"; import { EvmBlockchainName } from "../../../../../../../../../core/blockchain/models/blockchain-name"; import { EvmWeb3Public } from "../../../../../../../../../core/blockchain/web3-public-service/web3-public/evm-web3-public/evm-web3-public"; import { MethodData } from "../../../../../../../../../core/blockchain/web3-public-service/web3-public/models/method-data"; import { Exact } from "../../../../../common/on-chain-trade/evm-on-chain-trade/models/exact"; import { UniswapV3Route } from "../../models/uniswap-v3-route"; import { UniswapV3RouterConfiguration } from "../../models/uniswap-v3-router-configuration"; import { FeeAmount, LiquidityPool } from "./models/liquidity-pool"; import { UniswapV3AlgebraQuoterController } from "../../../uniswap-v3-algebra-abstract/models/uniswap-v3-algebra-quoter-controller"; import { AbiItem } from 'web3-utils'; interface GetQuoterMethodsDataOptions { routesLiquidityPools: LiquidityPool[]; from: Token; to: Token; exact: Exact; weiAmount: string; maxTransitTokens: number; } /** * Works with requests, related to Uniswap v3 liquidity pools. */ export declare class UniswapV3QuoterController extends UniswapV3AlgebraQuoterController { protected readonly blockchain: EvmBlockchainName; protected readonly routerConfiguration: UniswapV3RouterConfiguration; protected readonly quoterContractAddress: string; protected readonly quoterContractABI: AbiItem[]; protected readonly factoryAddress: string; /** * Converts uni v3 route to encoded bytes string to pass it to contract. * Structure of encoded string: '0x${tokenAddress_0}${toHex(fee_0)}${tokenAddress_1}${toHex(fee_1)}...${tokenAddress_n}. * toHex(fee_i) must be of length 6, so leading zeroes are added. * @param pools Liquidity pools, included in route. * @param initialTokenAddress From token address. * @returns string Encoded string. */ static getEncodedPoolsPath(pools: LiquidityPool[], initialTokenAddress: string): string; /** * Returns swap method's name and arguments to pass it to Quoter contract. * @param poolsPath Pools, included in the route. * @param from From token. * @param to To token. * @param exact Is exact input or output trade. * @param weiAmount Amount of tokens to trade. */ protected static getQuoterMethodData(poolsPath: LiquidityPool[], from: Token, to: Token, exact: Exact, weiAmount: string): { poolsPath: LiquidityPool[]; methodData: MethodData; }; private routerTokens; private routerLiquidityPools; protected readonly feeAmounts: FeeAmount[]; protected get web3Public(): EvmWeb3Public; constructor(blockchain: EvmBlockchainName, routerConfiguration: UniswapV3RouterConfiguration, quoterContractAddress?: string, quoterContractABI?: AbiItem[], factoryAddress?: string); protected getOrCreateRouterTokensAndLiquidityPools(): Promise<{ routerTokens: Token[]; routerLiquidityPools: LiquidityPool[]; }>; /** * Returns all liquidity pools, containing passed tokens addresses, and concatenates with most popular pools. */ protected getAllLiquidityPools(firstToken: Token, secondToken: Token): Promise; getAllRoutes(from: Token, to: Token, exact: Exact, weiAmount: string, routeMaxTransitTokens: number): Promise; /** * Returns swap methods' names and arguments, built with passed pools' addresses, to use it in Quoter contract. */ protected getQuoterMethodsData(options: GetQuoterMethodsDataOptions, path: LiquidityPool[], lastTokenAddress: string): { poolsPath: LiquidityPool[]; methodData: MethodData; }[]; } export {};