import { Observable } from 'rxjs'; import { AkitaPlugin, Queries } from '../plugin'; import { EntityState } from '../../types'; export declare type DirtyCheckComparator = (head: State, current: State) => boolean; export declare type DirtyCheckParams = { comparator?: DirtyCheckComparator; watchProperty?: keyof StoreState | (keyof StoreState)[]; }; export declare const dirtyCheckDefaultParams: { comparator: (head: any, current: any) => boolean; }; export declare function getNestedPath(nestedObj: any, path: string): any; export declare type DirtyCheckResetParams = { updateFn?: StoreState | ((head: StoreState, current: StoreState) => any); }; export declare class DirtyCheckPlugin extends AkitaPlugin { protected query: Queries; private params?; private _entityId?; private head; private dirty; private subscription; private active; private _reset; isDirty$: Observable; reset$: Observable; constructor(query: Queries, params?: DirtyCheckParams, _entityId?: any); reset(params?: DirtyCheckResetParams): void; setHead(): DirtyCheckPlugin; isDirty(): boolean; hasHead(): boolean; destroy(): void; isPathDirty(path: string): boolean; getHead(): Partial | State | undefined | null; private activate; private updateDirtiness; private _getHead; private getWatchedValues; }