import { Comparator } from '../types/index.js'; export declare namespace Fields { type Getter = (obj: Partial) => (T[keyof T] | undefined); type Setter = (obj: Partial, val: T[keyof T] | undefined) => void; type Comparer = (source: Partial, target: Partial) => boolean; type Updater = (target: T, source: T) => T; } export declare function updateField(target: T, source: Partial, diff: Partial, key: keyof T, hasChanged?: null | Fields.Comparer): boolean; export declare function updateFieldExtended(target: T, source: Partial, diff: Partial, get: Fields.Getter, set: Fields.Setter, hasChanged?: null | Fields.Comparer): boolean; export type UpdateArrayOptions = { additive?: boolean; unshift?: boolean; clone?: boolean; comparator?: Comparator; updater?: Fields.Updater; sorter?: Comparator | null | undefined; hooks?: UpdateArrayHooks; }; export type UpdateArrayHooks = { onAdded?: (item: T, index?: number) => void; onDeleted?: (item: T, index?: number) => void; onUpdated?: (previous: T | null | undefined, next: T, index?: number) => void; }; export declare function updateArray(target: T[] | null, source: T[] | null, options?: UpdateArrayOptions): { changed: number; result: T[] | null; };