import type { RunRecord } from "./types.js"; /** Bounded durable needs_human reason. Max 512 characters. */ export declare const NEEDS_HUMAN_REASON_MAX = 512; /** Exact own-key set for every RunRecord field (7A.3A.3). */ export declare const RUN_RECORD_KEYS: readonly ["schema_version", "protocol_version", "run_id", "version", "status", "workspace_root", "work_source", "goal_version", "goal_text_digest", "ready_label", "started_at", "deadline_at", "stopped_at", "terminal_reason", "repository", "empty_poll_streak", "needs_human", "needs_human_reason", "conductor_session_id", "conductor_generation", "monitor_generation", "last_github_sync_at"]; /** * Validate needs_human pair. Fail closed on invalid combinations. * Accepts untrusted runtime values — no boolean coercion. * true ⇒ exact trimmed non-empty string ≤ NEEDS_HUMAN_REASON_MAX; * false ⇒ reason exactly null (undefined/missing/other is invalid). */ export declare function validateNeedsHumanPair(needsHuman: unknown, reason: unknown, label?: string): { readonly needs_human: boolean; readonly needs_human_reason: string | null; }; /** * One exact RunRecord parser for replay (freezeRun) and projection (parseRunRecord). * No String(...) coercion, missing-as-null, truthiness, or cast-based assembly. */ export declare function parseExactRunRecord(value: unknown, label: string): RunRecord;