import { type TradingRuntime } from "../trading.js"; import { type StrategyLog } from "./common.js"; export type SpreadDirection = "shortA_longB" | "longA_shortB"; export interface CrossPoolSpreadLeg { poolKey: string; quantity: number; runtime: TradingRuntime; marginManagerId?: string; createdInTransaction: boolean; } export interface CrossPoolSpreadParams { entryThresholdPct: number; closeThresholdPct: number; stopLossThresholdPct?: number; intervalSec: number; maxRuntimeSec: number; leverage: number; selfMatchingOption: number; payWithDeep: boolean; dryRun: boolean; } export interface CrossPoolSpreadTick { priceA: number; priceB: number; ratio: number; spreadPct: number; } export interface CrossPoolSpreadResult { baselineRatio: number; runtimeSec: number; cycles: number; entries: number; exits: number; activePosition: { direction: SpreadDirection; entrySpreadPct: number; openSeconds: number; } | null; lastTick: CrossPoolSpreadTick | null; lastOpenResult: unknown; lastCloseResult: unknown; marginManagerA: string | null; marginManagerB: string | null; } export interface CrossPoolSpreadRunnerOptions { log?: StrategyLog; onLegManagerCreated?: (input: { poolKey: string; managerId: string; previousRuntime: TradingRuntime; }) => Promise; } export declare function runCrossPoolSpreadStrategy(legAInput: CrossPoolSpreadLeg, legBInput: CrossPoolSpreadLeg, params: CrossPoolSpreadParams, options?: CrossPoolSpreadRunnerOptions): Promise;