declare const GRANULARITY : Record < string , " basic " | " deep " > ;
type ListDiffStatus = "added" | "equal" | "moved" | "deleted" | "updated" ;
type ObjectDiffStatus = "added" | "equal" | "deleted" | "updated" ;
type ObjectData = Record < string , any > | undefined | null ;
type ListData = any ;
type ObjectStatusTuple = readonly [
"added" ,
"equal" ,
"deleted" ,
"updated"
] ;
type ListStatusTuple = readonly [
"added" ,
"equal" ,
"deleted" ,
"moved" ,
"updated"
] ;
type isEqualOptions = {
ignoreArrayOrder? : boolean ;
} ;
type ObjectOptions = {
ignoreArrayOrder? : boolean ;
showOnly ? : {
statuses : Array < ObjectStatusTuple [ number ] > ;
granularity? : typeof GRANULARITY [ keyof typeof GRANULARITY ] ;
} ;
} ;
type ListOptions = {
showOnly? : Array < ListStatusTuple [ number ] > ;
} ;
type ListDiff = {
type : "list" ;
status : ListDiffStatus ;
diff : {
value : ListData ;
prevIndex : number | null ;
newIndex : number | null ;
indexDiff : number | null ;
status : ListDiffStatus ;
} [ ] ;
} ;
type SubProperties = {
property : string ;
previousValue : any ;
currentValue : any ;
status : ObjectDiffStatus ;
subPropertiesDiff? : SubProperties [ ] ;
} ;
type ObjectDiff = {
type : "object" ;
status : ObjectDiffStatus ;
diff : {
property : string ;
previousValue : any ;
currentValue : any ;
status : ObjectDiffStatus ;
subPropertiesDiff? : SubProperties [ ] ;
} [ ] ;
} ;
declare function getObjectDiff ( prevData : ObjectData , nextData : ObjectData , options? : ObjectOptions ) : ObjectDiff ;
declare const getListDiff : ( prevList : ListData [ ] | undefined | null , nextList : ListData [ ] | undefined | null , options? : ListOptions ) = > ListDiff ;
declare function isEqual ( a : any , b : any , options? : isEqualOptions ) : boolean ;
declare function isObject ( value : any ) : value is Record < string , any > ;
export { getListDiff , getObjectDiff , isEqual , isObject } ;