export declare const JOURNAL_FILENAME = "changes.journal";
interface JournalResult {
    valid: boolean;
    timestamp?: number;
    changed?: string[];
    removed?: string[];
}
export declare function readJournal(rootDir: string): JournalResult;
export declare function appendJournalEntries(rootDir: string, entries: Array<{
    file: string;
    deleted?: boolean;
}>): void;
export declare function writeJournalHeader(rootDir: string, timestamp: number): void;
/**
 * Atomically append entries while advancing the header timestamp.
 *
 * Used by the watcher: without this, the header timestamp stays frozen at the
 * last build's finalize time while entries accumulate, so the next build's
 * Tier 0 check sees `journal.timestamp < MAX(file_hashes.mtime)`, rejects the
 * journal, and falls through to the expensive mtime+size / hash scan.
 *
 * Writes a tmp file then renames — a crash mid-rename leaves the previous
 * journal state intact.
 */
export declare function appendJournalEntriesAndStampHeader(rootDir: string, entries: Array<{
    file: string;
    deleted?: boolean;
}>, timestamp: number): void;
export {};
//# sourceMappingURL=journal.d.ts.map