type AccessIdempotencyTestHooks = {
    beforeFlushWrite?: () => Promise<void> | void;
    lockTimeoutMs?: number;
    staleLockMs?: number;
    lockHeartbeatMs?: number;
};
declare function hashAccessIdempotencyPayload(payload: unknown): string;
declare function setAccessIdempotencyTestHooks(hooks: AccessIdempotencyTestHooks | null): void;
declare class AccessIdempotencyStore {
    private readonly statePath;
    private readonly lockPath;
    private readonly keyLockDir;
    private loadedMtimeMs;
    private state;
    private writeQueue;
    constructor(memoryDir: string);
    get(key: string, requestHash: string): Promise<{
        response?: unknown;
        conflict: boolean;
    }>;
    put(key: string, requestHash: string, response: unknown): Promise<void>;
    withKeyLock<T>(key: string, callback: () => Promise<T>): Promise<T>;
    private reload;
    private prune;
    private flush;
    private readMtimeMs;
    private withExclusiveFileLock;
    private withWriteQueue;
}

export { AccessIdempotencyStore, hashAccessIdempotencyPayload, setAccessIdempotencyTestHooks };
