import { AsyncOrSync, DeepReadonly } from 'ts-essentials'; import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, PoolLiquidity, Logger, DexExchangeParam } from '../../types'; import { SwapSide, Network } from '../../constants'; import { IDex } from '../../dex/idex'; import { IDexHelper } from '../../dex-helper/idex-helper'; import { BunniV2Data, DexParams, PoolKey, PoolState, ProtocolState, VaultState } from './types'; import { SimpleExchange } from '../simple-exchange'; import { BunniV2EventPool } from './bunni-v2-pool'; import { Interface } from '@ethersproject/abi'; export declare class BunniV2 extends SimpleExchange implements IDex { readonly network: Network; readonly dexKey: string; readonly dexHelper: IDexHelper; protected eventPools: BunniV2EventPool; readonly hasConstantPriceLargeAmounts = false; readonly needWrapNative = false; readonly isFeeOnTransferSupported = false; static dexKeysWithNetwork: { key: string; networks: Network[]; }[]; WETH: string; config: DexParams; logger: Logger; quoterInterface: Interface; erc4626Interface: Interface; updatePoolTotalValueLockedTimer?: NodeJS.Timeout; updateVaultSharePricesTimer?: NodeJS.Timeout; constructor(network: Network, dexKey: string, dexHelper: IDexHelper); initializePricing(blockNumber: number): Promise; getAdapters(side: SwapSide): { name: string; index: number; }[] | null; getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise; findPoolIdentifiersWithTokens(pools: DeepReadonly, srcToken: string, destToken: string): string[]; getAvailablePoolsForPair(pools: DeepReadonly, srcToken: string, destToken: string): PoolState[]; getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise>; getOffChainPrices(zeroForOne: boolean, amounts: bigint[], pool: PoolState, vaults: { [address: string]: VaultState; }, side: SwapSide, blockNumber: bigint, blockTimestamp: bigint): bigint[]; getOnChainPrices(zeroForOne: boolean, amounts: bigint[], poolKey: PoolKey, side: SwapSide, blockNumber: number): Promise; getCalldataGasCost(poolPrices: PoolPrices): number | number[]; getDexParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, recipient: Address, data: BunniV2Data, side: SwapSide): DexExchangeParam; getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: BunniV2Data, side: SwapSide): AdapterExchangeParam; updatePoolState(): AsyncOrSync; getTopPoolsForToken(tokenAddress: Address, limit: number): Promise; updatePoolTotalValueLocked(blockNumber?: number): Promise; updateVaultSharePrices(blockNumber?: number): Promise; releaseResources(): AsyncOrSync; }