export declare type MutexedObjectEvents<A> = {
    'change-request': (object: Partial<A>) => void;
    changed: (nextObject: Partial<A>, prevObject: Partial<A>) => void;
};
export declare type MutexedObject<A = Record<string, unknown>> = {
    on: <K extends keyof MutexedObjectEvents<A>>(event: K, cb: MutexedObjectEvents<A>[K]) => () => void;
    lock: () => void;
    release: () => void;
    change: (object: Partial<A>) => void;
    current: A;
};
export declare const createMutexedObject: <A extends Record<string, unknown>>(initialObject: A) => MutexedObject<A>;
//# sourceMappingURL=mutexedObject.d.ts.map