import { BehaviorSubject, MonoTypeOperatorFunction, Observable, OperatorFunction } from 'rxjs'; import { BaseEntity } from '../base.entity'; import { ID } from '../utils'; import { EntityMap, Entries, HashMap } from '../utils/types'; export declare class ValueState { protected readonly stream$: BehaviorSubject; readonly value$: Observable; constructor(value?: T, operator?: OperatorFunction); get value(): T; set(value: T): ValueState; emit(): void; select(): Observable; select(project: (value: T) => T): Observable; select(project: (value: T) => R): Observable; } export declare function createValueState(value: T, operator?: OperatorFunction): ValueState; export declare class EntityState extends ValueState> { protected stream$: BehaviorSubject>; value$: Observable>; constructor(value?: EntityMap, entityPipe?: MonoTypeOperatorFunction>); destroy(): void; clear(destroy?: boolean): this; get(id: ID): T; has(id: ID): boolean; add(entity: T): EntityState; addMany(entities: T[]): EntityState; remove(id: ID, destroy?: boolean): EntityState; array(): T[]; array$(): Observable; forEach(cb: (value: T, key: string, map: EntityMap) => void): void; map(cb: (value: T, index: number, array: T[]) => R): R[]; } export declare function createEntityState(value: HashMap | Entries, entityPipe: MonoTypeOperatorFunction>): EntityState;