import type { JobMeta } from "./job-types.js"; export declare const LOG_FILE = "output.log"; export declare const EXIT_FILE = "exit"; export declare const SHARED_HOME_DIR = "home"; /** Read once at module load so platform-mocked suites can pin behavior before import. */ export declare const isWindows: boolean; export declare function isDirectory(target: string): boolean; export type MetaRead = { kind: "ok"; meta: JobMeta; } | { kind: "absent"; } | { kind: "unreadable"; }; export type LockRead = { kind: "holder"; jobId: string; } | { kind: "garbage"; } | { kind: "absent"; } | { kind: "unreadable"; }; export declare function resolveJobsRoot(configDir?: string): string; export declare class JobStore { readonly root: string; constructor(root: string); ensureRoot(): void; jobDir(jobId: string): string; workspaceDir(jobId: string): string; logPath(jobId: string): string; exitPath(jobId: string): string; ensureJobDirs(jobId: string): void; listJobIds(): string[]; listMetas(): JobMeta[]; readMeta(jobId: string): JobMeta | null; /** Absence is evidence; unreadable data must remain an inconclusive hold. */ readMetaState(jobId: string): MetaRead; writeMeta(meta: JobMeta): boolean; /** Create-only so a wrapper-written outcome always wins. */ recordExitCode(jobId: string, code: number): void; readExit(jobId: string): { code: number; at: number; } | null; removeJobDir(jobId: string): void; removeJobDirAsync(jobId: string): Promise; jobDirMtime(jobId: string): number | null; fileStat(jobId: string, file: string): { size: number; mtimeMs: number; } | null; fileExistsState(jobId: string, file: string): "exists" | "absent" | "unreadable"; gpuLockPath(index: number): string; createGpuLock(index: number, jobId: string): "created" | "exists"; readGpuLockPath(lockPath: string): LockRead; readGpuLock(index: number): LockRead; removeGpuLockPath(lockPath: string): boolean; removeGpuLock(index: number): boolean; listGpuLockPaths(): string[]; }