interface MutexInterface { acquire(priority?: number): Promise; runExclusive(callback: MutexInterface.Worker, priority?: number): Promise; waitForUnlock(priority?: number): Promise; isLocked(): boolean; release(): void; cancel(): void; } declare namespace MutexInterface { interface Releaser { (): void; } interface Worker { (): Promise | T; } } export default MutexInterface;