// Generated by typings
// Source: https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/7de6c3dd94feaeb21f20054b9f30d5dabc5efabd/semaphore/semaphore.d.ts
declare module 'semaphore' {

  function semaphore(capacity?: number): semaphore.Semaphore;

  namespace semaphore {

    interface Task {
      (): void;
    }

    interface Semaphore {
      capacity: number;

      take(task: Task): void;
      take(n: number, task: Task): void;

      leave(n?: number): void;
    }
  }
  export = semaphore;
}
