export type QueueNotifier = { key: string; notify: (result: boolean) => void; semaphoreStopper: Promise; quantity: number; memo?: string; state: "NONE" | "RUNNING" | "DONE"; timer?: ReturnType; }; export type SemaphoreReleaser = () => void; export type SemaphoreObject = { _acquire(quantity: number, memo: string, timeout: number): Promise; acquire(quantity?: number, memo?: string): Promise; tryAcquire(quantity?: number, timeout?: number, memo?: string): Promise; peekQueues(): QueueNotifier[]; setLimit(limit: number): void; }; /** * Semaphore handling lib. * @param limit Maximum number that can be acquired. * @returns Instance of SemaphoreObject * @deprecated Use `semaphore_v2` instead. */ export declare function Semaphore(limit: number, onRelease?: (currentQueue: QueueNotifier[]) => Promise | void): SemaphoreObject;