import type { RequestOptions } from '@modelcontextprotocol/sdk/shared/protocol.js'; /** The trial deadline as an absolute epoch. A duration cannot cross a process boundary and stay * honest, so the child is handed the instant and derives its budget at the moment of use (P5). */ export declare const PI_BENCHMARK_DEADLINE_ENV = "CORTEX_BENCHMARK_DEADLINE_EPOCH_MS"; /** * P3: `SUPERVISOR_GRACE_MS + QUIESCENCE_MARGIN_MS` — the same window the shipped quiescence budget * uses. An MCP call outlives the deadline by exactly the interval in which finalization may run, so * a tool that is still answering when the deadline lands is cut off with the trial, not before it. */ export declare const MCP_CLEANUP_GRACE_MS: number; /** * P7: the interval at which a running call is expected to report progress. Strictly below the SDK's * 60 000 ms reference window — four beats per window leaves three missed beats of tolerance before a * client on the default timeout would give up. */ export declare const MCP_PROGRESS_HEARTBEAT_MS = 15000; /** * P5: the remaining trial budget, recomputed on every read. Returns null when this process carries * no trial deadline, which is the daemon case — an absent deadline is not a budget of zero and not * an unbounded one, it is the absence of a bound this module may impose. */ export declare function remainingTrialMs(env: NodeJS.ProcessEnv, nowEpochMs?: number): number | null; /** * P2/P4/P6: the options every benchmark `callTool` carries. `timeout` and `maxTotalTimeout` are the * same value, so `resetTimeoutOnProgress` can keep a live call from expiring mid-answer while * heartbeats still cannot push it past deadline + grace. */ export declare function benchmarkCallOptions(remainingMs: number, signal?: AbortSignal, onprogress?: RequestOptions['onprogress']): RequestOptions;