import { Observable } from 'rxjs'; import { DataSource } from '../public-api'; import { ComparatorFn, IdentityFn, TransformFn } from '@softeq/types'; export declare enum SortDirection { Ascending = 0, Descending = 1 } export interface DataQuerySort { field: string; direction: SortDirection; } export interface DataQuery { from: number; to: number; sort?: DataQuerySort[]; } export interface ResultSet { from: number; to: number; data: T[]; total: number; } export declare type ResultSetSelector = TransformFn>>; export declare type DataSourceOperator = TransformFn, ResultSetSelector>; export declare type ComparatorFactory = TransformFn>; export interface DataSource { select(query: DataQuery): Observable>; pipe(operator: DataSourceOperator): DataSource; pipe(operator1: DataSourceOperator, operator2: DataSourceOperator): DataSource; pipe(operator1: DataSourceOperator, operator2: DataSourceOperator, operator3: DataSourceOperator): DataSource; pipe(operator1: DataSourceOperator, operator2: DataSourceOperator, operator3: DataSourceOperator, operator4: DataSourceOperator): DataSource; } export declare function createDataSource(selector: ResultSetSelector): DataSource; export declare const EMPTY_RESULT_SET: ResultSet; export declare function getResultSetData(resultSet: ResultSet): T[]; export declare function emptyDataSource(): DataSource; export declare function dataSourceFrom(arrayOrStream: T[] | Observable, comparatorFactory?: ComparatorFactory): DataSource; export declare function mapQuery(transform: IdentityFn): DataSourceOperator; export declare function mapResultSet(transform: TransformFn, ResultSet>): DataSourceOperator; export declare function mapResultSetItem(transform: TransformFn): DataSourceOperator; export declare function selectByQuery(list: T[], query: DataQuery, comparatorFactory?: ComparatorFactory): T[]; export declare function resultSetByQuery(list: T[], query: DataQuery, comparatorFactory?: ComparatorFactory): ResultSet;