import { DeepReadonly } from 'ts-essentials'; import { Result } from '@ethersproject/abi'; import { IDexHelper } from '../../../dex-helper/idex-helper'; import { Logger } from '../../../types'; import { BasicQuoteData, EkuboContracts, PoolInitializationState } from '../types'; import { AnonymousEventHandler, EkuboPool, NamedEventHandlers, Quote } from './pool'; import { ConcentratedPoolTypeConfig, PoolKey, SwappedEvent } from './utils'; export declare const GAS_COST_OF_ONE_EXTRA_BITMAP_SLOAD = 2000; export declare abstract class ConcentratedPoolBase extends EkuboPool { protected readonly quoteDataFetcher: import("ethers").Contract; constructor(parentName: string, dexHelper: IDexHelper, logger: Logger, contracts: EkuboContracts, initBlockNumber: number, key: PoolKey, extraNamedEventHandlers?: Record>, extraAnonymousEventHandlers?: Record>); protected _quote(amount: bigint, isToken1: boolean, state: DeepReadonly, sqrtRatioLimit?: bigint): Quote; protected _computeTvl(state: DeepReadonly): [bigint, bigint]; } export declare function quoteConcentrated(key: PoolKey, amount: bigint, isToken1: boolean, state: DeepReadonly>, sqrtRatioLimit?: bigint): Quote>; export declare class ConcentratedPool extends ConcentratedPoolBase { generateState(blockNumber: number): Promise>; protected handlePositionUpdated(args: Result, oldState: DeepReadonly): DeepReadonly | null; protected handleSwappedEvent(ev: SwappedEvent, oldState: DeepReadonly): DeepReadonly | null; } export declare function initializedTicksCrossedGasCosts(initializedTicksCrossed: number): number; export interface Tick { readonly number: number; liquidityDelta: bigint; } /** * Returns the index in the sorted tick array that has the greatest value of tick that is not greater than the given tick * @param sortedTicks the sorted list of ticks to search in * @param tick the tick to search for */ export declare function findNearestInitializedTickIndex(sortedTicks: Tick[], tick: number): number | null; export declare namespace ConcentratedPoolState { type Object = { sqrtRatio: bigint; liquidity: bigint; activeTick: number; readonly sortedTicks: Tick[]; activeTickIndex: number | null; readonly checkedTicksBounds: readonly [number, number]; }; function fromPoolInitialization(state: PoolInitializationState): DeepReadonly; function fromQuoter(data: BasicQuoteData): DeepReadonly; function fromSwappedEvent(oldState: DeepReadonly, ev: SwappedEvent): Object; function fromPositionUpdatedEvent(oldState: DeepReadonly, [lowTick, highTick]: [number, number], liquidityDelta: bigint): Object | null; function addLiquidityCutoffs(state: ConcentratedPoolState.Object): void; function computeTvl(state: DeepReadonly): [bigint, bigint]; }