import { IData } from "./db"; import { ISigned } from './user'; import { Event } from './events'; export declare const events: { dataChangesIngested: Event<{ updatedData: IData; dataBeforeChange?: IData; dataChange: IDataChange; }>; }; export type IChange = [string, any?]; export declare function isObj(x: any): boolean; export declare function isLeaf(x: unknown): boolean; export declare function isEmptyObj(x: any): x is {}; export declare function isEmptyArray(x: any): x is []; export declare function getChanges(objFrom: any, objTo: any): IChange[]; export declare function applyChanges(toObj: any, changes: IChange[]): any; export interface IDataChange extends ISigned { id: string; group: string; subject: string; modified: number; changes: IChange[]; subjectDeleted?: boolean; } export declare function getDataChange(dataFrom?: T, dataTo?: U): IDataChange; export declare function validateDataChange(dataChange: IDataChange, dbData?: IData): Promise; export declare function ingestChange(dataChange: IDataChange, dbData?: IData, skipValidation?: boolean): Promise; export declare function commitChange(data: T, options?: { preserveModified?: boolean; }): Promise; export declare function deleteData(id: string): Promise;