import type { PatchResult } from "../data/hash-table/patch"; export type ObserverEvent = "insert" | "update" | "delete" | "*"; export type InsertObserver = (newRecord: T) => void; export type UpdateObserver = (updatedRecord: T, details: { old: T; new: T; }) => void; export type DeleteObserver = (deleted: T) => void; export type GenericObserver = (event: MutationEvent) => void; export type Observer = InsertObserver | UpdateObserver | DeleteObserver | GenericObserver; export type Observers = { insert: { id: number; callback: InsertObserver; }[]; update: { id: number; callback: UpdateObserver; }[]; delete: { id: number; callback: DeleteObserver; }[]; "*": { id: number; callback: GenericObserver; }[]; }; export type InsertEvent = { event: "insert"; data: T; }; export type DeleteEvent = { event: "delete"; data: T; }; export type UpdateEvent = { event: "updated"; data: { old: T; new: T; }; }; export type MutationEvent = InsertEvent | DeleteEvent | UpdateEvent; export declare function shouldRaiseInsertEvent(mutations: PatchResult[]): boolean | null; export declare function shouldRaiseDeleteEvent(mutations: PatchResult[]): boolean | null; export declare function shouldRaiseUpdateEvent(mutations: PatchResult[]): boolean | null; export declare function createEvents(mutations: PatchResult[], getCurrentValue: ($id: string) => T): MutationEvent[];