import { Subject, Observable } from 'rxjs'; import { filters } from 'typescript-angular-utilities'; import { ISort, SortManagerService } from '../sorts/index'; import { IFilter } from '../filters/index'; import { IDataPagerOld, IDataPager } from '../paging/index'; export interface IDataSource { dataSet$: Observable; filteredDataSet$: Observable; rawDataSet$: Observable; sorter: SortManagerService; filters: IFilter[]; pager: IDataPager; count$: Observable; countFilterGroups: boolean; loadingDataSet$: Observable; needsRefinedSearch$: Observable; isEmpty$: Observable; init(): void; clear(): void; add(data: TDataType): void; remove(data: TDataType): void; replace(oldData: TDataType, newData: TDataType): void; } export interface IDataSourceOld { dataSet: TDataType[]; filteredDataSet: TDataType[]; rawDataSet: TDataType[]; sorts: ISort[]; filters: filters.IFilter[]; pager: IDataPagerOld; count: number; countChanges: Subject; redrawing: Subject; changed: Subject; added: Subject; removed: Subject; replaced: Subject; countFilterGroups: boolean; loadingDataSet: boolean; needsRefinedSearch: boolean; isEmpty: boolean; initPager(): void; onSortChange(): void; onPagingChange(): void; refresh(): void; clear(): void; remove(data: TDataType): void; push(data: TDataType): void; replace(oldData: TDataType, newData: TDataType): void; }