import { Observable } from "rxjs"; import { ISort, IFilter, IGroup, IAggregate, IQueryExecutionResult, IQueryExecutionGroupResult, IQueryCriteria } from "./models"; import { IResolveCommandModelEvent } from "./IResolveCommandModelEvent"; export interface IDataSource { resolveCommandModelByName(event: IResolveCommandModelEvent) : Observable; executeCommandByName(name: string, command: TCommand) : Observable; query(query: TQuery); refresh(); resolveIdField(model: TModel) : TKeyType; data$: Observable & IQueryExecutionGroupResult>; loading$: Observable; data: IQueryExecutionResult & IQueryExecutionGroupResult; sorts: ISort[]; filters: IFilter[]; groups: IGroup[]; aggregates: IAggregate[]; pageSize: number; page: number; }