// Type definitions for deep-diff 1.0 // Project: https://github.com/flitbit/diff/ // Definitions by: ZauberNerd // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 4.9 declare function deepDiff(lhs: LHS, rhs: RHS, prefilter?: deepDiff.PreFilter): Array> | undefined; declare function deepDiff(lhs: LHS, rhs: RHS, prefilter?: deepDiff.PreFilter, acc?: deepDiff.Accumulator): deepDiff.Accumulator; declare namespace deepDiff { interface DiffNew { kind: 'N'; path?: any[] | undefined; rhs: RHS; } interface DiffDeleted { kind: 'D'; path?: any[] | undefined; lhs: LHS; } interface DiffEdit { kind: 'E'; path?: any[] | undefined; lhs: LHS; rhs: RHS; } interface DiffArray { kind: 'A'; path?: any[] | undefined; index: number; item: Diff; } type Diff = DiffNew | DiffDeleted | DiffEdit | DiffArray; type PreFilterFunction = (path: any[], key: any) => boolean; interface PreFilterObject { prefilter?(path: any[], key: any): boolean; normalize?(currentPath: any, key: any, lhs: LHS, rhs: RHS): [ LHS, RHS ] | undefined; } type PreFilter = PreFilterFunction | PreFilterObject; interface Accumulator { push(diff: Diff): void; length: number; } type Observer = (diff: Diff) => void; type Filter = (target: LHS, source: RHS, change: Diff) => boolean; function diff(lhs: LHS, rhs: RHS, prefilter?: PreFilter): Array> | undefined; function diff(lhs: LHS, rhs: RHS, prefilter?: PreFilter, acc?: Accumulator): Accumulator; function orderIndependentDiff(lhs: LHS, rhs: RHS, prefilter?: PreFilter): Array> | undefined; function orderIndependentDiff(lhs: LHS, rhs: RHS, prefilter?: PreFilter, acc?: Accumulator): Accumulator; function observableDiff(lhs: LHS, rhs: RHS, observer?: Observer, prefilter?: PreFilter, orderIndependent?: boolean): Array>; function orderIndependentDeepDiff(lhs: LHS, rhs: RHS, changes: Array>, prefilter: PreFilter, path: any[], key: any, stack: any[]): void; function orderIndepHash(object: any): number; function applyDiff(target: LHS, source: RHS, filter?: Filter): void; function applyChange(target: LHS, source: any, change: Diff): void; function revertChange(target: LHS, source: any, change: Diff): void; } export = deepDiff;