import { ChainId } from '../../chain'; import { Token } from '../../currency'; import { Address, Hex, PublicClient } from 'viem'; import { PoolResponse2 } from '../lib/api'; import { PoolCode } from '../pools/PoolCode'; import { LiquidityProvider } from './LiquidityProvider'; interface PoolInfo { poolCode: PoolCode; validUntilTimestamp: number; } interface StaticPool { address: Address; token0: Token; token1: Token; fee: number; } export declare abstract class UniswapV2BaseProvider extends LiquidityProvider { readonly TOP_POOL_SIZE = 155; readonly TOP_POOL_LIQUIDITY_THRESHOLD = 5000; readonly ON_DEMAND_POOL_SIZE = 20; readonly REFRESH_INITIAL_POOLS_INTERVAL = 60; topPools: Map; poolsByTrade: Map; onDemandPools: Map; availablePools: Map; staticPools: Map; blockListener?: () => void; unwatchBlockNumber?: () => void; fee: number; isInitialized: boolean; factory: Record; initCodeHash: Record; latestPoolCreatedAtTimestamp: Date; discoverNewPoolsTimestamp: number; refreshAvailablePoolsTimestamp: number; constructor(chainId: ChainId, web3Client: PublicClient, factory: Record, initCodeHash: Record); initialize(): Promise; private getInitialPools; getOnDemandPools(t0: Token, t1: Token, excludePools?: Set): Promise; updatePools(): Promise; private discoverNewPools; private updateAvailablePools; private prioritizeTopPools; private updatePoolWithReserves; _getPoolAddress(t1: Token, t2: Token): Address; _getProspectiveTokens(t0: Token, t1: Token): Token[]; getStaticPools(t1: Token, t2: Token): StaticPool[]; startFetchPoolsData(): void; private removeStalePools; fetchPoolsForToken(t0: Token, t1: Token, excludePools?: Set): Promise; /** * The pools returned are the initial pools, plus any on demand pools that have been fetched for the two tokens. * @param t0 * @param t1 * @returns */ getCurrentPoolList(t0: Token, t1: Token): PoolCode[]; stopFetchPoolsData(): void; } export {};