export type DiffAction = 'create' | 'update' | 'delete'; export interface Nameable { name: string; } export interface SynchronizerOptions { key?: (thing: T, index?: number) => string; equals?: (thingA: T, thingB: T) => boolean; onEnter?: (newThing: T) => void; onUpdate?: (newThing: T, oldThing: T) => void; onExit?: (oldThing: T) => void; } export interface DiffJS { before?: any; after?: any; } export declare class Diff { static inflateFromJS(Class: { fromJS: (js: any, context?: any) => T; }, diffJS: DiffJS, context?: any): Diff; static inflateFromJSs(Class: { fromJS: (js: any, context?: any) => T; }, diffJSs: DiffJS[], context?: any): Diff[]; before?: T; after?: T; constructor(before: T | undefined, after: T | undefined); toJS(): DiffJS; toJSON(): DiffJS; getAction(): DiffAction; getName(): string; } export declare class NamedArray { static isValid(array: T[]): boolean; static checkValid(array: T[], what?: string, where?: string): void; static get(array: T[], name: string): T; static toRecord(array: T[]): Record; static containsByName(array: T[], name: string): boolean; static findByNameCI(array: T[], name: string): T | undefined; static findByName(array: T[], name: string): T | undefined; static findIndexByName(array: T[], name: string): number; static overrideByName(things: T[], thingOverride: T): T[]; static overridesByName(things: T[], thingOverrides: T[]): T[]; static dedupe(things: T[]): T[]; static deleteByName(array: T[], name: string): T[]; static synchronize(oldThings: T[], newThings: T[], updatedOptions: SynchronizerOptions): void; static computeDiffs(oldThings: T[], newThings: T[]): Diff[]; } //# sourceMappingURL=named-array.d.ts.map