import { AcquireParams, DistributedSemaphoreConstructorProps, DistributedSemaphoreFactory, IDistributedSemaphore, IReleaser } from "./types";
export declare class DistributedSemaphore implements IDistributedSemaphore {
    static factory: DistributedSemaphoreFactory;
    private readonly _implementation;
    constructor(props: DistributedSemaphoreConstructorProps);
    get isDestroyed(): boolean;
    runExclusive<T>(fn: () => Promise<T> | T): Promise<T>;
    runExclusive<T>(params: AcquireParams, fn: () => Promise<T> | T): Promise<T>;
    destroy(): Promise<void>;
    get name(): string;
    get maxCount(): number;
    get implementation(): string;
    freeCount(): Promise<number>;
    acquire(params?: {
        timeoutMs?: number;
    }): Promise<IReleaser>;
    cancelAll(errMessage?: string): Promise<void>;
    isLocked(): Promise<boolean>;
}
//# sourceMappingURL=distributed-semaphore.d.ts.map