import type Database from "better-sqlite3";
import { type RenderJob, type RenderJobLogEntry, type RenderJobOptions, type RenderJobStatus, type RenderStage } from "./job.js";
export declare function defaultDbPath(): string;
export interface UpdatePatch {
    status?: RenderJobStatus;
    progress?: number;
    stage?: RenderStage;
    outputPath?: string;
    error?: string;
}
export declare class RenderQueueStore {
    private readonly db;
    constructor(db: Database.Database);
    insert(opts: RenderJobOptions): RenderJob;
    get(id: string): RenderJob | null;
    list(workId: string): RenderJob[];
    /**
     * Returns the next queued job's id (FIFO), or null.
     *
     * Tiebreak by SQLite's monotonic `rowid` rather than the random `id` —
     * two jobs inserted in the same millisecond share `created_at`, and a
     * random-id tiebreak made FIFO non-deterministic (~50/50), which surfaced
     * as a flake in the concurrency=1 serial-processing test.
     */
    nextQueued(): string | null;
    update(id: string, patch: UpdatePatch): void;
    appendLog(id: string, entry: RenderJobLogEntry): void;
}
//# sourceMappingURL=store.d.ts.map