import { LocalLockItem, LockItemInfo } from '../utils/interfaces'; export interface MutexSynchronizerOptions { debugDeadEnds?: boolean; debugWithStack?: boolean; defaultMaxLockingTime?: number; continueOnTimeout?: boolean; algorythm?: (queue: LocalLockItem[], changes: string[], deadEndNotify: (lock: LocalLockItem, inCollisionHashes: string[]) => void) => void; timeoutHandler?: (item: LocalLockItem) => void; awaitInitTimeout?: number; } export declare const MUTEX_DEFAULT_SYNCHRONIZER_OPTIONS: MutexSynchronizerOptions; export declare abstract class MutexSynchronizer { protected usedOptions: MutexSynchronizerOptions; constructor(options?: Partial); abstract getLocksCount(): number; abstract lock(lock: LocalLockItem, codeStack?: string): Promise; abstract unlock(hash?: string, codeStack?: string): any; abstract unlockForced(filter: (lock: LocalLockItem) => boolean): any; abstract getLockInfo(hash: string): LockItemInfo; abstract getLockItem(hash: string): LocalLockItem; abstract watchdog(hash: string, phase?: string, args?: any, codeStack?: string): Promise; abstract setScopeRejector(hash: string, rejector: (reason: any) => void): any; abstract removeScopeRejector(hash: string): any; abstract isClean(): boolean; get options(): MutexSynchronizerOptions; setOptions(options: Partial): void; protected resetAwaiter(): void; static timeoutHandler(item: LocalLockItem): void; }