export interface DiffSummary { readonly _summary: true; readonly brand: string; readonly industry: string; readonly prev: { runAt: string; recordCount: number; path: string; }; readonly curr: { runAt: string; recordCount: number; path: string; }; readonly added: number; readonly removed: number; readonly changed: number; readonly unchanged: number; } export interface FieldChange { readonly field: string; readonly prev: unknown; readonly curr: unknown; } export type DiffEntry = { readonly kind: "added"; readonly key: string; readonly curr: object; } | { readonly kind: "removed"; readonly key: string; readonly prev: object; } | { readonly kind: "changed"; readonly key: string; readonly prev: object; readonly curr: object; readonly changes: readonly FieldChange[]; }; export interface DiffResult { readonly summary: Omit; readonly entries: readonly DiffEntry[]; } /** * Compute the diff between two record sets. Pure — no I/O. * * Records are matched on the first non-null of: storeId, then a composite * `${brand}|${name}|${city}` key. Records with neither are treated as * unmatchable and appear as added/removed only. */ export declare function diffRecords(prev: readonly object[], curr: readonly object[]): DiffResult; /** * Diff two snapshots on disk and write the diff to * `data/diffs/{industry}/{brand}/{prevStamp}__{currStamp}.jsonl`. */ export declare function diffSnapshots(prevPath: string, currPath: string, options?: { root?: string; }): { path: string; summary: DiffSummary; entries: readonly DiffEntry[]; };