/** * CandidateStore — in-memory test double using a Map. */ import type { CandidateRecord, CandidateStore } from './candidate-store.js'; import { type AdmissionEvaluationRecord, type AdmissionProcessingRecord, type CandidateAdmissionDocument } from './admission-document.js'; export declare class MemoryCandidateStore implements CandidateStore { private readonly candidates; private readonly admissions; /** * Returns candidates filtered directly by taskId field. * Note: SQLite version JOINs tasks→runs→commits→candidates. * This test double uses the denormalized taskId field directly, * which is equivalent in normal data flows. */ getCandidatesByTaskId(taskId: string): Promise; getCandidate(candidateId: string): Promise; updateCandidateStatus(candidateId: string, patch: { status: CandidateRecord['status']; }): Promise; transitionCandidateStatus(candidateId: string, expectedStatus: CandidateRecord['status'], newStatus: CandidateRecord['status']): Promise; getAdmissionDocument(candidateId: string): Promise<{ ok: true; document: CandidateAdmissionDocument | null; } | { ok: false; reason: string; }>; appendAdmissionEvaluation(candidateId: string, evaluation: AdmissionEvaluationRecord): Promise<{ status: 'appended' | 'reused'; document: CandidateAdmissionDocument; } | { status: 'refused'; reason: string; }>; updateAdmissionProcessing(candidateId: string, processing: AdmissionProcessingRecord): Promise; listDiagnosisPostProcessingBacklog(options: { limit: number; nowIso?: string; }): { eligible: { candidateId: string; taskId: string; status: string; createdAt: string; processingState: string | null; }[]; corrupt: { candidateId: string; taskId: string; status: string; createdAt: string; }[]; }; insert(record: CandidateRecord): void; clear(): void; } //# sourceMappingURL=memory-candidate-store.d.ts.map