/** * File Assignment Store (2.11.0). * * Local durable implementation of the AssignmentStore port. One small record * file per assignment, schema-validated on load, written atomically * (unique temp + fsync + rename). The "current assignment" flag lives on the * record itself, so there is no separate mutable pointer file to drift. * * Cross-process model: * - All mutations for a mission serialize on a per-mission proper-lockfile * lock. Two processes racing `assign M→A` vs `assign M→B` therefore have * exactly one winner; the loser sees the winner's current assignment and * returns a structured conflict instead of writing a second current. * - Unrelated missions lock different paths, so they never globally * serialize. * - Record writes are atomic per file. The service transitions old→non-current * BEFORE writing new→current, so a crash can leave zero current records for * a mission, but never two. */ import { type AssignmentLoadResult, type AssignmentMutateResult, type AssignmentMutation, type AssignmentStore, type MissionAssignmentIndex } from "./assignment-store.js"; import { type AssignmentRecord } from "./assignment-types.js"; export interface FileAssignmentStoreOptions { root: string; storeId?: string; lockStaleMs?: number; lockRetries?: number; lockMinTimeoutMs?: number; lockMaxTimeoutMs?: number; } export declare function defaultAssignmentRoot(): string; export declare class FileAssignmentStore implements AssignmentStore { readonly storeId: string; private readonly root; private readonly lockStaleMs; private readonly lockRetries; private readonly lockMinTimeoutMs; private readonly lockMaxTimeoutMs; constructor(options: FileAssignmentStoreOptions); private resolve; private assertAssignmentId; private assertMissionId; private assertRecordMission; private writeAtomic; private readRaw; private withMissionLock; private readParsed; private readIndexForMission; private writeRecords; load(assignmentId: string): Promise; listAssignments(): Promise; listRecords(): Promise<{ records: AssignmentRecord[]; corrupt: { assignmentId: string; diagnostic: string; }[]; }>; mutate(missionId: string, mutation: (index: MissionAssignmentIndex) => AssignmentMutation): Promise>; } /** Convenience factory using the default Jensen assignment registry directory. */ export declare function createFileAssignmentStore(root?: string): FileAssignmentStore; //# sourceMappingURL=file-assignment-store.d.ts.map