export declare class Mutex {
    private semaphore;
    private static mutexes;
    private constructor();
    lock(): Promise<void>;
    release(): void;
    static get(key: string): Mutex;
    static withLock<T>(key: string, criticalSection: () => Promise<T>): Promise<T>;
    withLock<T>(criticalSection: () => Promise<T>): Promise<T>;
}
