///
import bluebird = require("bluebird");
import { EventEmitter } from "events";
export default class Semaphore extends EventEmitter {
count: number;
max: number | null;
timeout: number;
private _zeroPromiseResolver;
private _resolvers;
constructor(options?: {
max?: number;
timeout?: number;
});
withLock(coroutine: any): any;
wrap(promise: Promise): Promise;
increment(): bluebird;
decrement(): void;
take(): bluebird;
release(): void;
setMax(max: any): void;
getCount(): number;
getRequestedCount(): number;
waitForZero(): any;
}