export declare class PersistentStorage<T> {
    private readonly filePath;
    private readonly lock;
    constructor(filePath: string);
    readAll(): Promise<T>;
    writeAll(data: T): Promise<void>;
    set<K extends keyof T>(key: K, value: T[K]): Promise<void>;
    get<K extends keyof T>(key: K): Promise<T[K] | undefined>;
    transaction(transactionFn: (data: T) => T): Promise<void>;
    clear(): Promise<void>;
}
export declare class Lock {
    private readonly lockPath;
    private readonly sharedLockPath;
    private lockFd;
    private sharedLockCount;
    private exclusiveLockCount;
    constructor(lockPath: string);
    acquireShared(): Promise<void>;
    acquireExclusive(): Promise<void>;
    releaseShared(): Promise<void>;
    releaseExclusive(): Promise<void>;
}
export declare class MultiProcessKVStore<T = any> {
    private readonly storage;
    constructor(filePath: string);
    get(key: string): Promise<T | undefined>;
    set(key: string, value: T): Promise<void>;
    delete(key: string): Promise<void>;
    has(key: string): Promise<boolean>;
    keys(): Promise<string[]>;
    values(): Promise<T[]>;
    entries(): Promise<[string, T][]>;
    clear(): Promise<void>;
    size(): Promise<number>;
}
