import { Observable } from "rxjs"; import { ISort, IFilter, IGroup, IAggregate, IQueryExecutionResult, IQueryExecutionGroupResult, IQueryCriteria } from "./models"; import { IResolveCommandModelEvent } from "./IResolveCommandModelEvent"; import { IDataSourceValidationError } from './IDataSourceValidationError'; import { IDataSourceNotifyMessage } from './IDataSourceNotifyMessage'; import { IDataSourceCommandStarted } from "./IDataSourceCommandStarted"; export interface IDataSource { resolveCommandModelByName(event: IResolveCommandModelEvent): Observable; executeCommandByName(name: string, command: TCommand): Observable; query(query: TQuery): any; excuteQuery(query: TQuery): Observable & IQueryExecutionGroupResult>; refresh(): any; resolveIdField(model: TModel): TKeyType; clear(): any; updateData(value: IQueryExecutionResult & IQueryExecutionGroupResult): any; replaceDataWithArray(items: TModel[]): any; replaceDataWithSingle(item: TModel): any; data$: Observable & IQueryExecutionGroupResult>; loading$: Observable; validationError$: Observable; notifyMessage$: Observable; commandStarted$: Observable; data: IQueryExecutionResult & IQueryExecutionGroupResult; sorts: ISort[]; filters: IFilter[]; groups: IGroup[]; aggregates: IAggregate[]; pageSize: number; page: number; }