/// export declare type IDisposer = () => void; export interface IJsonPatch { op: "replace" | "add" | "remove"; path: string; value?: any; } export interface IReversibleJsonPatch extends IJsonPatch { oldValue?: any; } export interface IEncodedJsonPatch extends IReversibleJsonPatch { encoded?: Buffer; } export declare type PatchListener = (patch: IJsonPatch, obj?: any, root?: T) => void; export interface IStateTracker { onPatch(listner: PatchListener, params?: any): IDisposer; snapshot(params?: any): { [key: string]: any; }; dispose(): void; }