export declare type PromiseResolve = (value: T | PromiseLike | undefined) => void; export declare type PromiseReject = (reason?: any) => void; export declare type Task = () => Promise; export declare type Record = [Task, PromiseResolve, PromiseReject]; export declare class Mutex { private busy; private readonly queue; synchronize(task: Task): Promise; dequeue(): Promise | undefined; execute(record: Record): Promise; }