/** 写偏好 async RwLock(对齐 tokio::sync::RwLock 语义)。 */ export interface RwLock { /** 取读锁:writer 活跃或有 waiting writer 则入队(写偏好),否则 readers++。返回 release 函数。 */ acquireRead(): Promise<() => void>; /** 取写锁:readers>0 或 writer 活跃则入队,否则 writer=true。返回 release 函数。 */ acquireWrite(): Promise<() => void>; } export declare function makeRwLock(): RwLock; /** * 两级锁 registry(解决 bash 全局性): * 第一级全局读写门(bash 写锁独占一切;read/edit/grep/glob 全局读锁,互相并发,与 bash 互斥); * 第二级 per-file 读写门(read/edit/multiedit 按 fileKey 取键,同文件读写隔离)。 * bash 只取第一级写锁(独占全局即独占一切);grep/glob 只取第一级读锁(无 per-file)。 */ export declare class RwLockRegistry { private readonly global; private readonly fileLocks; private fileLock; /** * 取两级锁。release 反序(先 per-file 再全局)。 * - bash:{globalMode:"write"}(只全局写锁,独占一切)。 * - read/edit/multiedit:{globalMode:"read", fileKey, fileMode}。 * - grep/glob/webfetch:{globalMode:"read"}(只全局读锁)。 */ acquireTwoLevel(input: { globalMode: "read" | "write"; fileKey?: string; fileMode?: "read" | "write"; }): Promise<() => void>; }