import type { ExchangeAdapter, SpotAdapter } from "./exchanges/index.js"; export interface LiquidityCheck { /** Max executable size (base) within slippage tolerance */ maxSize: number; /** Estimated avg fill price for the given size */ avgFillPrice: number; /** Estimated slippage % vs mid price */ slippagePct: number; /** Total depth in USD on the relevant side */ depthUsd: number; /** Whether the full requested size can be filled */ canFillFull: boolean; /** Recommended size (capped by liquidity) */ recommendedSize: number; } /** * Walk through orderbook levels and compute how much can be filled * within the given slippage tolerance. * * @param levels - [[price, size], ...] from getOrderbook (asks for buy, bids for sell) * @param maxSlippagePct - max acceptable slippage from best price (default 0.5%) * @param requestedSizeUsd - desired position size in USD */ export declare function computeExecutableSize(levels: [string, string][], requestedSizeUsd: number, maxSlippagePct?: number): LiquidityCheck; /** * Check liquidity on both sides for an arb entry. * Returns adjusted size or 0 if not viable. */ export declare function checkArbLiquidity(longAdapter: ExchangeAdapter, shortAdapter: ExchangeAdapter, symbol: string, sizeUsd: number, maxSlippagePct?: number, log?: (msg: string) => void): Promise<{ viable: boolean; adjustedSizeUsd: number; longSlippage: number; shortSlippage: number; }>; /** * Check liquidity for a spot+perp arb pair. * Spot side uses asks (for buy) or bids (for sell). * Perp side uses bids (for short entry) or asks (for long entry). */ export declare function checkSpotPerpLiquidity(spotAdapter: SpotAdapter, perpAdapter: ExchangeAdapter, spotSymbol: string, perpSymbol: string, sizeUsd: number, maxSlippagePct?: number, log?: (msg: string) => void): Promise<{ viable: boolean; adjustedSizeUsd: number; spotSlippage: number; perpSlippage: number; }>;