import { ClassTransformOptions } from 'class-transformer'; import { List } from 'immutable'; import { BehaviorSubject } from 'rxjs'; import { Observable } from 'rxjs'; import { Subject } from 'rxjs'; import { ProviderActionEnum } from '../enums/provider-action.enum'; import { IPaginationMeta } from './pagination-meta'; import { IProviderActionActionModel } from './provider-action-action-model'; import { IProviderActionOptions } from './provider-action-options'; import { IProviderOptions } from './provider-options'; export interface IProvider { providerName: string; items$: BehaviorSubject>; action$: Subject; create$: Subject; append$: Subject; update$: Subject; patch$: Subject; delete$: Subject; load$: Subject; loadAll$: Subject; actionIsActive$: BehaviorSubject; createIsActive$: BehaviorSubject; updateIsActive$: BehaviorSubject; deleteIsActive$: BehaviorSubject; loadIsActive$: BehaviorSubject; loadAllIsActive$: BehaviorSubject; paginationMeta$: BehaviorSubject; instanceofFactoryModel(data: any): boolean; instanceofNestedFactoryModel(data: any): boolean; updateNestedFactoryModel(data: any): void; classToClass(model: TModel, classTransformOptions?: ClassTransformOptions): any; plainToClass(data: any, action: ProviderActionEnum, classTransformOptions?: ClassTransformOptions): any; classToPlain(model: TModel, action: ProviderActionEnum, classTransformOptions?: ClassTransformOptions): any; action(key: string, data?: any, options?: TProviderActionOptions): Observable; save(model: TModel, options?: TProviderActionOptions): Observable; create(model: TModel, options?: TProviderActionOptions): Observable; append(model: TModel, options?: TProviderActionOptions): Observable; patch(key: number | string, model: TModel, options?: TProviderActionOptions): Observable; update(key: number | string, model: TModel, options?: TProviderActionOptions): Observable; delete(key: number | string, options?: TProviderActionOptions): Observable; load(key: number | string, options?: TProviderActionOptions): Observable; loadAll(filter?: any, options?: TProviderActionOptions): Observable; reloadAll(): any; calcPaginationMetaByOptions(options: IProviderOptions): IPaginationMeta; calcPaginationMeta(newPaginationMeta: IPaginationMeta): IPaginationMeta; setOptions(options: IProviderOptions): any; getOptions(): IProviderOptions; reconfigItems(items?: List): any; }