import * as i0 from '@angular/core'; import { InjectionToken, Injector, Signal } from '@angular/core'; import { Type, BaseResolver } from '@nx-ddd/common/domain'; import * as rxjs from 'rxjs'; import { Observable, ReplaySubject, Subject } from 'rxjs'; import * as _ngrx_entity from '@ngrx/entity'; import { EntityState, EntityAdapter } from '@ngrx/entity'; import { ComponentStore } from '@ngrx/component-store'; declare class ProxyIdService { proxyMap: Map; isProxyId(id: string | null): boolean; proxyId(_id: string): string; update(proxyId: string, id: string): void; resolve(proxyIdOrId: string): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } type Entity = { id: string; }; interface BaseTask { type: 'create' | 'update' | 'delete' | 'noop'; timestamp: number; } interface CreateAction extends BaseTask { type: 'create'; payload: T; } interface UpdateAction extends BaseTask { type: 'update'; payload: Partial & Entity; } interface DeleteAction extends BaseTask { type: 'delete'; payload: Entity; } interface NoopAction extends BaseTask { type: 'noop'; payload: {}; } type Task = CreateAction | UpdateAction | DeleteAction | NoopAction; declare function pushMap(map: Map, id: string, item: T): Map; declare class TaskComposerService { readonly proxyId: ProxyIdService; composeTasks(tasks: Task[]): Task[]; compose(tasks: Task[]): Task; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class EntityStoreAdapter { list?(): Observable; create?(entity: E): Promise; update?(entity: Partial & Pick): Promise; delete?(entity: Pick): Promise; save?(entity: E): Promise; } declare const ENTITY_STORE_ADAPTER: InjectionToken<{ entity: Type; adapter: EntityStoreAdapter; }[]>; declare function provideEntityStoreAdapter(entity: Type, adapterFactory: (injector: Injector) => EntityStoreAdapter): { provide: InjectionToken<{ entity: Type; adapter: EntityStoreAdapter; }[]>; multi: boolean; useFactory: (injector: Injector) => { entity: Type; adapter: EntityStoreAdapter; }; deps: (typeof Injector)[]; }; declare function injectEntityStoreAdapter(entity: Type): EntityStoreAdapter; declare const distinctUntilChangedArray: () => rxjs.MonoTypeOperatorFunction; declare class BaseEntityStore extends ComponentStore> { protected entity: Type; protected entityAdapter: EntityAdapter; protected adapter: EntityStoreAdapter; protected readonly refresh$: ReplaySubject; protected get selectors(): { selectIds: (state: EntityState) => string[] | number[]; selectEntities: (state: EntityState) => _ngrx_entity.Dictionary; selectAll: (state: EntityState) => E[]; selectTotal: (state: EntityState) => number; }; readonly all$: Observable; readonly all: i0.Signal; readonly total$: Observable; readonly total: i0.Signal; readonly entities$: Observable; readonly entities: i0.Signal; readonly size$: Observable; readonly addOne: E extends void ? () => void : (observableOrValue: E | Observable) => rxjs.Subscription; readonly addMany: (observableOrValue: E[] | Observable) => rxjs.Subscription; readonly updateOne: (observableOrValue: { id: string; changes: Partial; } | Observable<{ id: string; changes: Partial; }>) => rxjs.Subscription; readonly updateMany: (observableOrValue: { id: string; changes: Partial; }[] | Observable<{ id: string; changes: Partial; }[]>) => rxjs.Subscription; readonly upsertOne: E extends void ? () => void : (observableOrValue: E | Observable) => rxjs.Subscription; readonly upsertMany: (observableOrValue: E[] | Observable) => rxjs.Subscription; readonly removeOne: (observableOrValue: string | Observable) => rxjs.Subscription; readonly removeMany: (observableOrValue: string[] | Observable) => rxjs.Subscription; readonly removeAll: () => void; readonly setOne: E extends void ? () => void : (observableOrValue: E | Observable) => rxjs.Subscription; readonly setAll: (observableOrValue: E[] | Observable) => rxjs.Subscription; constructor(entity: Type, entityAdapter?: EntityAdapter); protected getEntities: (observableOrValue?: void | Observable | undefined) => rxjs.Subscription; refresh(): void; mapToOne(valueOrObs: string | Observable): Observable; } declare class EntityStore extends BaseEntityStore { protected entity: Type; protected entityAdapter: EntityAdapter; protected proxyId: ProxyIdService; protected composer: TaskComposerService; protected taskSubject$: Subject>; protected task$: Observable>; protected composedTasks$: Observable[]>; constructor(entity: Type, entityAdapter?: EntityAdapter); dispatch(action: Task): void; protected runTask(task: Task): Promise; protected runComposedTasks(tasks: Task[]): Promise; protected onSyncFailed(): void; protected onSyncSucceeded(): void; create(payload: E): Promise; update(payload: Pick & Partial): Promise; delete(payload: Pick): Promise; save(payload: E): Promise; } type OneProps = { id: V; [key: string]: V; }; type AllProps = { [key: string]: V; }; declare function injectOne$(Entity: Type, params: OneProps>, resolverType?: Type>): Observable; declare function injectOne(Entity: Type, params: OneProps>, resolverType?: Type>): Signal; declare function injectAll$(Entity: Type, params?: Record>, resolverType?: Type>): Observable; declare const callSignalMap: >>(map: T) => Signal; declare function injectAll(Entity: Type, params?: AllProps>, resolverType?: Type>): Signal; type ValueOrObservable = T | Observable; declare function mapToOne$(storeType: new () => EntityStore, keyOrKey$: ValueOrObservable): Observable; declare class EntityStoreService { protected storeMap: Map, EntityStore>; get(Entity: Type): EntityStore; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare function injectEntityStore(Entity: Type): EntityStore; export { BaseEntityStore, ENTITY_STORE_ADAPTER, EntityStore, EntityStoreAdapter, EntityStoreService, ProxyIdService, TaskComposerService, callSignalMap, distinctUntilChangedArray, injectAll, injectAll$, injectEntityStore, injectEntityStoreAdapter, injectOne, injectOne$, mapToOne$, provideEntityStoreAdapter, pushMap }; export type { Entity, Task, ValueOrObservable };