/** Which report: the batch, the item, and where the session lives. */ export interface BatchDiagnosisReportRef { readonly projectRoot: string; readonly sessionId: string; readonly batchId: string; readonly itemId: string; } /** * The directory one batch's diagnosis reports live in. * * @param projectRoot - Absolute path to the project root. * @param sessionId - The session the batch belongs to. * @param batchId - The batch's id. */ export declare function batchDiagnosisReportDir(projectRoot: string, sessionId: string, batchId: string): string; /** * The report path for one item of one batch. * * @param ref - Which report: the project, the session, the batch, the item. */ export declare function batchDiagnosisReportPath(ref: BatchDiagnosisReportRef): string; /** * Write one item's diagnosis report, atomically. * * The report is stored verbatim: it is the diagnostician's own words, and * the summary is derived from it rather than replacing it. * * @param ref - Which report: the project, the session, the batch, the item. * @param report - The report text, verbatim. */ export declare function writeBatchDiagnosisReport(ref: BatchDiagnosisReportRef, report: string): void; /** * Read one item's diagnosis report. * * @returns The report text, or `null` when the item has no report yet. */ export declare function readBatchDiagnosisReport(ref: BatchDiagnosisReportRef): string | null; /** * Read one item's diagnosis report AS THE SUMMARY the window may hold. * * The summary is derived from the stored report every time it is asked * for, so the two can never drift apart: there is no second copy of the * file set to fall out of date. * * @returns The summary, or `null` when there is no report, or when the * report carries none of the sections the diagnosis prompt asks for — a * report in another shape is read, not summarised. */ export declare function readBatchDiagnosisSummary(ref: BatchDiagnosisReportRef): string | null;