import { ChainId } from '../../chain'; import { Token } from '../../currency'; import { PublicClient } from 'viem'; import { PoolCode } from '../pools/PoolCode'; export declare enum LiquidityProviders { InkSwap = "InkSwap", InkySwap = "InkySwap", SquidSwap = "SquidSwap", DyorSwap = "DyorSwap", ReservoirSwap = "ReservoirSwap", NativeWrap = "NativeWrap", VelodromeSwapV2 = "VelodromeSwapV2", VelodromeSwapV3 = "VelodromeSwapV3" } export declare abstract class LiquidityProvider { chainId: ChainId; client: PublicClient; lastUpdateBlock: number; readonly ON_DEMAND_POOLS_LIFETIME_IN_SECONDS = 60; readonly FETCH_AVAILABLE_POOLS_AFTER_SECONDS = 900; constructor(chainId: ChainId, client: PublicClient); abstract getType(): LiquidityProviders; /** * The name of liquidity provider to be used for pool naming. For example, 'SushiSwap' */ abstract getPoolProviderName(): string; /** * Initiates event listeners for top pools */ abstract startFetchPoolsData(): void; /** * Fetches relevant pools for the given tokens * @param t0 Token * @param t1 Token */ abstract fetchPoolsForToken(t0: Token, t1: Token, excludePools?: Set): Promise; /** * Returns a list of PoolCode * @param t0 Token * @param t1 Token * @returns PoolCode[] */ abstract getCurrentPoolList(t0: Token, t1: Token): PoolCode[]; abstract stopFetchPoolsData(): void; /** * Returns last processed block number * @returns last processed block number */ getLastUpdateBlock(): number; /** * Logs a message with the following format: * ~~ * Example: 1~123456~SushiSwap * @returns string */ getLogPrefix(): string; getTradeId: (t0: Token, t1: Token) => string; }