export interface LockOptions { readonly timeoutMs?: number; /** Injectable clock/sleep for tests. */ readonly now?: () => number; readonly sleep?: (ms: number) => Promise; } export declare function withLock(lockDir: string, fn: () => Promise | T, options?: LockOptions): Promise;