import { Store, OrArray, StoreValue } from '@ngneat/elf'; import { EntitiesState, getIdType, EntitiesRef, getEntityType, DefaultEntitiesRef } from '@ngneat/elf-entities'; export interface EntitiesTimelineOptions { showIfEmpty: boolean; } export interface EntitiesStateHistoryOptions & EntitiesState>, E extends EntitiesRef, S extends StoreValue = StoreValue> { maxAge: number; entitiesRef?: E; entityIds?: OrArray, E>>; comparatorFn: (prevState: getEntityType, currentState: getEntityType) => boolean; } declare type EntityHistory = { past: Array, E>>; present: getEntityType, E> | null; future: Array, E>>; }; export declare class EntitiesStateHistory & EntitiesState>, E extends EntitiesRef, S extends StoreValue = StoreValue> { protected store: T; private options; private entitiesHistory; private entitiesChanges; private pausedEntitiesChanges; private skipUpdate; private subscription; private mergedOptions; constructor(store: T, options?: Partial>); activate(): void; hasPast(id: getIdType): boolean; hasFuture(id: getIdType): boolean; getEntitiesPast(options?: EntitiesTimelineOptions): Record, E>, Array, E>>>; getEntitiesFuture(options?: EntitiesTimelineOptions): Record, E>, Array, E>>>; undo(ids?: OrArray>): void; redo(ids?: OrArray>): void; jumpToPast(index: number, ids?: OrArray>): void; jumpToFuture(index: number, ids?: OrArray>): void; /** * * Clear the past history. * It's different from clear method since it doesn't remove present state * * @param ids Entities ids which past history will be erased * * @example * * stateHistory.clearPast([1, 2]); */ clearPast(ids?: OrArray>): void; /** * * Clear the future history * It's different from clear method since it doesn't remove present state * * @param ids Entities ids which future history will be erased * * @example * * stateHistory.clearFuture([1, 2]); */ clearFuture(ids?: OrArray>): void; /** * * Clear the history * * @param ids Entities ids which history will be erased * * @param customUpdateFn Update function to update history manually * * @example * * stateHistory.clear([1, 2]); */ clear(ids?: OrArray>, customUpdateFn?: (history: EntityHistory) => EntityHistory): void; destroy({ clearHistory }?: { clearHistory?: boolean; }): void; pause(ids?: OrArray>): void; resume(ids?: OrArray>): void; private get entitiesRef(); private update; private subscribeToEntityChanges; private unsubscribeFromEntityChanges; private getEntitiesIds; private getDefaultHistory; } declare type WithEntitiesState, E extends EntitiesRef> = S extends EntitiesState & infer R ? EntitiesState & R : S extends EntitiesState ? EntitiesState : never; export declare function entitiesStateHistory, E>>, E extends EntitiesRef = DefaultEntitiesRef>(store: T, options?: Partial>): EntitiesStateHistory>; export {};