import { Logger } from 'log4js'; import { DeepReadonly } from 'ts-essentials'; import { IDexHelper } from '../../../dex-helper/idex-helper'; import { EkuboContracts, TwammQuoteData } from '../types'; import { FullRangePoolState } from './full-range'; import { EkuboPool, Quote } from './pool'; import { PoolKey, SwappedEvent } from './utils'; export declare class TwammPool extends EkuboPool { private readonly dataFetcher; constructor(parentName: string, dexHelper: IDexHelper, logger: Logger, contracts: EkuboContracts, key: PoolKey); generateState(blockNumber?: number | 'latest'): Promise>; protected _quote(amount: bigint, isToken1: boolean, state: DeepReadonly): Quote; quoteTwamm(amount: bigint, isToken1: boolean, state: DeepReadonly, overrideTime?: number): Quote; protected _computeTvl(state: TwammPoolState.Object): [bigint, bigint]; } interface VirtualOrdersExecutedEvent { poolId: bigint; token0SaleRate: bigint; token1SaleRate: bigint; } export declare namespace TwammPoolState { interface SaleRateDelta { time: number; saleRateDelta0: bigint; saleRateDelta1: bigint; } interface Object { fullRangePoolState: FullRangePoolState.Object; token0SaleRate: bigint; token1SaleRate: bigint; lastExecutionTime: number; virtualOrderDeltas: SaleRateDelta[]; } function fromQuoter(data: TwammQuoteData): DeepReadonly; function fromSwappedEvent(oldState: DeepReadonly, ev: SwappedEvent): Object; function fromPositionUpdatedEvent(oldState: DeepReadonly, liquidityDelta: bigint): Object | null; function fromVirtualOrdersExecutedEvent(oldState: DeepReadonly, ev: VirtualOrdersExecutedEvent, timestamp: number): Object; function fromOrderUpdatedEvent(oldState: DeepReadonly, [startTime, endTime]: [number, number], orderSaleRateDelta: bigint, isToken1: boolean): Object; } export {};