import type { ToolOperations } from "./operations.js";
export interface ReadEntry {
    mtimeMs: number;
    hash: string;
}
export type ReadTracker = Map<string, ReadEntry>;
export declare function hashContent(content: string): string;
export declare function recordRead(tracker: ReadTracker | undefined, resolvedPath: string, content: string, mtimeMs: number): void;
export declare function recordWrite(tracker: ReadTracker | undefined, resolvedPath: string, content: string, ops: ToolOperations): Promise<void>;
/**
 * Verify the file hasn't been modified since it was last read.
 * Throws if unread, or if mtime AND hash differ from the recorded value.
 * mtime alone is not sufficient — some filesystems have low resolution and
 * formatters can rewrite a file with the same mtime; we re-hash on mtime miss.
 */
export declare function assertFresh(tracker: ReadTracker | undefined, resolvedPath: string, ops: ToolOperations): Promise<void>;
//# sourceMappingURL=read-tracker.d.ts.map