import { Currency, CurrencyAmount, Percent } from '@wicchain/sdk'; import { FeeAmount, Tick } from '@wicchain/v3-sdk'; import { Address } from 'viem'; export declare enum PoolType { V2 = 0, V3 = 1, STABLE = 2, V4CL = 3, V4BIN = 4 } export interface BasePool { type: PoolType; } export interface V2Pool extends BasePool { type: PoolType.V2; reserve0: CurrencyAmount; reserve1: CurrencyAmount; } export interface StablePool extends BasePool { address: Address; type: PoolType.STABLE; balances: CurrencyAmount[]; amplifier: bigint; fee: Percent; } export interface V3Pool extends BasePool { type: PoolType.V3; token0: Currency; token1: Currency; fee: FeeAmount; liquidity: bigint; sqrtRatioX96: bigint; tick: number; address: Address; token0ProtocolFee: Percent; token1ProtocolFee: Percent; ticks?: Tick[]; reserve0?: CurrencyAmount; reserve1?: CurrencyAmount; } export type V4ClPool = BasePool & { id: `0x${string}`; type: PoolType.V4CL; currency0: Currency; currency1: Currency; fee: number; tickSpacing: number; liquidity: bigint; sqrtRatioX96: bigint; tick: number; hooks?: Address; poolManager: Address; ticks?: Tick[]; reserve0?: CurrencyAmount; reserve1?: CurrencyAmount; }; type ActiveId = number; type Reserve = { reserveX: bigint; reserveY: bigint; }; export type V4BinPool = BasePool & { id: `0x${string}`; type: PoolType.V4BIN; currency0: Currency; currency1: Currency; fee: number; binStep: number; activeId: ActiveId; hooks?: Address; poolManager: Address; reserveOfBin?: Record; reserve0?: CurrencyAmount; reserve1?: CurrencyAmount; }; export type Pool = V2Pool | V3Pool | StablePool | V4BinPool | V4ClPool; export interface WithTvl { tvlUSD: bigint; } export type V3PoolWithTvl = V3Pool & WithTvl; export type V2PoolWithTvl = V2Pool & WithTvl; export type StablePoolWithTvl = StablePool & WithTvl; export {}; //# sourceMappingURL=pool.d.ts.map