export declare class Mutex { private value; private taskExecuting; private taskQueue; private freeListener; constructor(value: T); isFree(): boolean; awaitFree(): Promise; execute(callback: (value: T, setValue: (newValue: T) => void) => R | Promise): Promise; tryExecute(callback: (value: T, setValue: (newValue: T) => void) => R | Promise): Promise<{ status: "success"; result: R; } | { status: "would-block"; }>; private executeNextTask; private triggerFinished; }