/** * Hub-level write lifecycle hooks. `onBeforeWrite` may abort (throw); * `onAfterWrite` is awaited and its errors are warned, not thrown. A * re-entrancy flag suppresses nested firing so a handler that writes can't * loop. Held on the Noydb instance, threaded into every Collection. */ export interface WriteEvent { readonly op: 'create' | 'update' | 'delete'; readonly vault: string; readonly collection: string; readonly docId: string; readonly before: unknown; readonly after: unknown; readonly baseVersion: number; readonly version: number; readonly userId: string; readonly timestamp: number; readonly txId: string; } export type WriteHook = (event: WriteEvent) => void | Promise; export type Unsubscribe = () => void; export declare class WriteHookRegistry { #private; /** True while handlers are running — used by the write path to skip nested firing. */ get suppressed(): boolean; /** True when any hook is registered (cheap gate for the write path). */ get hasHandlers(): boolean; onBeforeWrite(handler: WriteHook): Unsubscribe; onAfterWrite(handler: WriteHook): Unsubscribe; /** Run before-hooks (awaited, in order). A throw propagates and aborts the write. */ runBefore(event: WriteEvent): Promise; /** Run after-hooks (awaited, in order). Per-handler errors are warned, not thrown. */ runAfter(event: WriteEvent): Promise; }