import { AdapterExchangeParam, Address, DexExchangeParam, ExchangePrices, NumberAsString, PoolLiquidity, PoolPrices, Token } from '../../types'; import { Logger } from 'log4js'; import { Network } from '../../constants'; import { IDexHelper } from '../../dex-helper'; import { IDex } from '../idex'; import { SimpleExchange } from '../simple-exchange'; import { Pool, UniswapV4Data } from './types'; import { Interface } from '@ethersproject/abi'; import { DeepReadonly } from 'ts-essentials'; import { PoolState } from './types'; import { SwapSide } from '@paraswap/core'; import { IBaseHook } from './hooks/types'; export declare class UniswapV4 extends SimpleExchange implements IDex { protected network: Network; protected dexHelper: IDexHelper; protected routerAddress: string; protected quoterAddress: string; protected poolManagerAddress: string; readonly hasConstantPriceLargeAmounts = false; needWrapNative: boolean; logger: Logger; protected quoterIface: Interface; private poolManager; static dexKeysWithNetwork: { key: string; networks: Network[]; }[]; private wethAddress; private supportedHooks; constructor(network: Network, dexKey: string, dexHelper: IDexHelper, routerAddress?: string, quoterAddress?: string, poolManagerAddress?: string); initializePricing(blockNumber: number): Promise; addMasterPool(poolKey: string, blockNumber: number): Promise; getPoolIdentifiers(from: Token, to: Token, side: SwapSide, blockNumber: number): Promise; protected _getOutputs(pool: Pool, state: DeepReadonly, amounts: bigint[], zeroForOne: boolean, side: SwapSide, hook?: IBaseHook): bigint[] | null; getPricesVolume(from: Token, to: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise | null>; getCalldataGasCost(poolPrices: PoolPrices): number | number[]; getAdapters(side: SwapSide): { name: string; index: number; }[] | null; getTopPoolsForToken(_tokenAddress: Address, limit: number): Promise; queryPriceFromRpc(zeroForOne: boolean, amounts: bigint[], pool: Pool, side: SwapSide, blockNumber: number): Promise; getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: UniswapV4Data, side: SwapSide): DexExchangeParam; getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: UniswapV4Data, side: SwapSide): AdapterExchangeParam; }