import type { SubmissionIssue } from "./submissionClassifier.js"; export interface HandRecoveryRequest { readonly root: string; readonly artifactsDir: string; readonly runId: string; readonly submissionId: string; /** Where the operator's corrected payload currently sits. */ readonly fromPath: string; /** * The lane this submission answers, when the caller knows it. Recorded on * the ledger so the repair reads in lane vocabulary; absent, it is looked up * from the recorded expectation and only then falls back to the raw id. */ readonly lane?: string; /** * The DRAW's submission home, when it is not the artifacts dir's * `submissions/`. Declared by the calling bin, never by the operator — the * remediate draw binds its work-item submissions under the run directory, * and the core stays storage-neutral rather than picking one for both. */ readonly submissionDir?: string; } export type HandRecoveryOutcome = { readonly ok: true; readonly submission_path: string; } | { readonly ok: false; readonly issue: SubmissionIssue; }; /** * Validate the operator's payload with the normal lane's validator and, only * if it passes, land it at the tool-owned path. A refusal writes nothing and * records nothing — a run must never look hand-repaired because a repair was * ATTEMPTED. */ export declare function recoverSubmission(request: HandRecoveryRequest, validate: (value: unknown) => SubmissionIssue | null): Promise; //# sourceMappingURL=handRecovery.d.ts.map