import { AcquireToken, AcquireParams, IReleaser, ISemaphore } from "./types";
export declare class Semaphore implements ISemaphore {
    readonly maxCount: number;
    private _freeCount;
    private _queue;
    constructor(maxCount: number);
    runExclusive<T>(fn: () => Promise<T> | T): Promise<T>;
    runExclusive<T>(params: AcquireParams, fn: () => Promise<T> | T): Promise<T>;
    freeCount(): Promise<number>;
    acquire(params?: {
        timeoutMs?: number;
    }, acquireToken?: AcquireToken): Promise<IReleaser>;
    cancelAll(errMessage?: string): Promise<void>;
    isLocked(): Promise<boolean>;
    private release;
}
//# sourceMappingURL=semaphore.d.ts.map