import { KeyValueChangeRecord, KeyValueChanges, KeyValueDiffer, KeyValueDifferFactory, KeyValueDiffers } from './keyvalue_differs'; export declare class DefaultKeyValueDifferFactory implements KeyValueDifferFactory { constructor(); supports(obj: any): boolean; create(): KeyValueDiffer; } export declare class DefaultKeyValueDiffer implements KeyValueDiffer, KeyValueChanges { private _records; private _mapHead; private _appendAfter; private _previousMapHead; private _changesHead; private _changesTail; private _additionsHead; private _additionsTail; private _removalsHead; private _removalsTail; readonly isDirty: boolean; forEachItem(fn: (r: KeyValueChangeRecord) => void): void; forEachPreviousItem(fn: (r: KeyValueChangeRecord) => void): void; forEachChangedItem(fn: (r: KeyValueChangeRecord) => void): void; forEachAddedItem(fn: (r: KeyValueChangeRecord) => void): void; forEachRemovedItem(fn: (r: KeyValueChangeRecord) => void): void; diff(map?: Map | { [k: string]: any; } | null): any; onDestroy(): void; /** * Check the current state of the map vs the previous. * The algorithm is optimised for when the keys do no change. */ check(map: Map | { [k: string]: any; }): boolean; /** * Inserts a record before `before` or append at the end of the list when `before` is null. * * Notes: * - This method appends at `this._appendAfter`, * - This method updates `this._appendAfter`, * - The return value is the new value for the insertion pointer. */ private _insertBeforeOrAppend; private _getOrCreateRecordForKey; /** @internal */ _reset(): void; private _maybeAddToChanges; private _addToAdditions; private _addToChanges; /** @internal */ private _forEach; } export declare const keyValueDiffers: KeyValueDiffers;