export declare class Semaphore<T = void> {
    private _capacity;
    private _active;
    private _waiting;
    constructor(capacity?: number);
    lock(thunk: () => T | PromiseLike<T>): Promise<T>;
    get active(): number;
    private runNext;
    private doRunNext;
}