/** * Per-position work for one monitor tick: SL fill check, pending close, dslTick, exchange sync. */ import type { SenpiEventBus } from "../events/index.js"; import type { StrategyState } from "../../types/strategy.js"; import type { DslState } from "../../types/dsl/index.js"; import type { StateManager } from "../../state/index.js"; import type { Span } from "@opentelemetry/api"; /** * Structured close-reason context forwarded with a DSL-cut close (notifications 2.3): * hard_timeout carries the configured limit in minutes, weak_peak_cut carries the peak * ROE the cut decision used. Other reasons carry nothing. strategy-manager renders the * spec §6.1 close-reason sentence from these via the engine's GetClosedPositionDetails. */ export declare function closeReasonContext(closeReason: string, s: DslState): { closeLimitMinutes?: number; closePeakRoe?: number; }; export interface MonitorProcessContext { /** The id for this tick — a ULID, one per `runTick`, on its log lines, events and spans. */ tickId: string; ts: string; now: () => string; stateManager: StateManager; strategyStates: Map; bus: SenpiEventBus; isSlPlacementInProgress?: (key: string) => boolean; /** Order type for DSL-triggered closes (default: MARKET). */ closeOrderType?: import("../../senpi/types.js").CloseOrderType; /** Options for FEE_OPTIMIZED_LIMIT close orders. */ feeOptimizedLimitOptions?: import("../../senpi/types.js").FeeOptimizedLimitOptions; } export declare function processOnePosition(ctx: MonitorProcessContext, key: string, state: DslState, price: number | undefined, span: Span): Promise; //# sourceMappingURL=process-one-position.d.ts.map