import { RecordBounds } from '../../types/types';
export interface DataSource {
    remoteOperations?: RemoteOperations;
    load: (options?: DataSourceOptions) => Promise<DataSourcePayload>;
    patch?: (options?: DataSourceOptions) => Promise<DataSourcePayload>;
}
export interface DataSourceChange {
    create?: any[];
    update?: any[];
    delete?: any[];
}
export interface DataSourceOptions {
    filter: Filter[];
    group: Group[];
    key: string | number;
    page: number;
    range?: RecordBounds;
    size: number;
    sort: Sort[] | undefined;
    patch?: DataSourceChange;
}
export interface DataSourcePayload {
    filtered?: any[];
    data: any[];
    total: number;
}
export interface Filter {
    key?: string;
    type: string;
    query: any;
}
export interface Group {
    autoExpand: boolean;
    groupKeys: any[];
    key: string;
    groupKey: string;
    index: number;
}
export interface RemoteOperations {
    paging?: boolean;
    sorting?: boolean;
}
export interface Sort {
    key: string;
    order: SortType;
    index: number;
}
export declare type SortType = 'asc' | 'desc' | undefined;
