import { DeepReadonly } from 'ts-essentials'; import { KyberDmmAbiEvents, TradeInfo } from './types'; import { StatefulEventSubscriber } from '../../stateful-event-subscriber'; import { Address, BlockHeader, Log, Logger, Token } from '../../types'; import { IDexHelper } from '../../dex-helper/idex-helper'; export type KyberDmmPools = { [poolAddress: string]: KyberDmmPool; }; export type KyberDmmPair = { token0: Token; token1: Token; exchanges: Address[]; pools: KyberDmmPools; }; export interface KyberDmmPoolState { reserves: { reserves0: bigint; reserves1: bigint; vReserves0: bigint; vReserves1: bigint; }; trendData: { shortEMA: bigint; longEMA: bigint; lastBlockVolume: bigint; lastTradeBlock: bigint; }; ampBps: bigint; } export interface KyberDmmPoolOrderedParams { tokenIn: string; tokenOut: string; poolData: Array<{ poolAddress: string; state: KyberDmmPoolState; }>; direction: boolean; exchanges: string[]; } export declare class KyberDmmPool extends StatefulEventSubscriber { protected dexHelper: IDexHelper; private poolAddress; ampBps: bigint; decoder: (log: Log) => KyberDmmAbiEvents; constructor(parentName: string, dexHelper: IDexHelper, poolAddress: Address, token0: Token, token1: Token, ampBps: bigint, logger: Logger); protected processLog(state: DeepReadonly, log: Readonly, blockHeader: BlockHeader): Promise | null>; isAmpPool(): boolean; generateState(blockNumber?: number | 'latest'): Promise>; } export declare const getTradeInfo: (state: KyberDmmPoolState, blockNumber: number, isTokenOrdered: boolean) => TradeInfo;