export type QuoteExactInputSingleParams = { tokenIn: string; tokenOut: string; amountIn: bigint; // Uniswap V3 only fee?: number; // Uniswap V3 only sqrtPriceLimitX96?: bigint | number; // Engine-specific extras (e.g., tickSpacing, deployer) extras?: Record; }; export type QuoteExactOutputSingleParams = { tokenIn: string; tokenOut: string; amountOut: bigint; // Uniswap V3 only fee?: number; // Uniswap V3 only sqrtPriceLimitX96?: bigint | number; extras?: Record; }; export type QuoteExactInputSingleResult = { amountOut: bigint; sqrtPriceX96After: bigint; }; export type QuoteExactOutputSingleResult = { amountIn: bigint; sqrtPriceX96After: bigint; }; export type PoolState = { sqrtPriceX96: bigint; tick?: number; // Add other common pool state fields if needed }; export interface QuoteEngine { quoteExactInputSingle( params: QuoteExactInputSingleParams, ): Promise; // Optional; not all engines may support this. quoteExactOutputSingle?( params: QuoteExactOutputSingleParams, ): Promise; // Optional; for getting current pool state without making a direct pool call getCurrentPoolState?(): Promise; }