import { BehaviorSubject, Observable, Subject } from "rxjs"; import { OnDestroy } from "./Lifecycle"; import { ObjectMap } from "../model"; export interface DictionaryStoreEventBase { name: NAME; } export interface DictionaryStoreEventAdd extends DictionaryStoreEventBase<'add'> { item: T; } export interface DictionaryStoreEventUpdate extends DictionaryStoreEventBase<'update'> { item: T; } export interface DictionaryStoreEventRemove extends DictionaryStoreEventBase<'remove'> { item: T; } export declare type DictionaryStoreEvent = DictionaryStoreEventAdd | DictionaryStoreEventUpdate | DictionaryStoreEventRemove; export declare class DictionaryStore implements OnDestroy { getId: (item: T) => string; protected onDestroy$: Subject; protected _state$: BehaviorSubject>; state$: Observable>; get state(): ObjectMap; protected _asArray: Observable | null; get asArray$(): Observable; protected _events$: Subject>; events$: Observable>; constructor(getId: (item: T) => string); add(item: T): T; addOrUpdate(item: T): T; addOrUpdateMany(items: ObjectMap): ObjectMap; remove(id: string): T | undefined; removeMany(ids: string[]): T[]; removeItem(item: T): T | undefined; hasId(id: string): boolean; getItem(id: string): T | undefined; select(id: string): Observable; protected sendEvent(event: DictionaryStoreEvent): void; protected updateState(state: ObjectMap): void; onDestroy(): Promise; }