/**
* DevExtreme (data/data_source.d.ts)
* Version: 21.1.0 (build 21016-0316)
* Build date: Sat Jan 16 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import '../jquery_augmentation';

import Store, {
    StoreOptions
} from './abstract_store';

import {
    CustomStoreOptions
} from './custom_store';

/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export interface DataSourceOptions {
    /**
     */
    customQueryParams?: any;
    /**
     */
    expand?: Array<string> | string;
    /**
     */
    filter?: string | Array<any> | Function;
    /**
     */
    group?: string | Array<any> | Function;
    /**
     */
    map?: ((dataItem: any) => any);
    /**
     */
    onChanged?: ((e: { changes?: Array<any> }) => any);
    /**
     */
    onLoadError?: ((error: { message?: string }) => any);
    /**
     */
    onLoadingChanged?: ((isLoading: boolean) => any);
    /**
     */
    pageSize?: number;
    /**
     */
    paginate?: boolean;
    /**
     */
    postProcess?: ((data: Array<any>) => Array<any>);
    /**
     */
    pushAggregationTimeout?: number;
    /**
     */
    requireTotalCount?: boolean;
    /**
     */
    reshapeOnPush?: boolean;
    /**
     */
    searchExpr?: string | Function | Array<string | Function>;
    /**
     */
    searchOperation?: string;
    /**
     */
    searchValue?: any;
    /**
     */
    select?: string | Array<any> | Function;
    /**
     */
    sort?: string | Array<any> | Function;
    /**
     */
    store?: Store | StoreOptions | Array<any> | any;
}
/**
 */
export default class DataSource {
    constructor(data: Array<any>);
    constructor(options: CustomStoreOptions | DataSourceOptions);
    constructor(store: Store);
    constructor(url: string);
    /**
     */
    cancel(): boolean;
    /**
     */
    dispose(): void;
    /**
     */
    filter(): any;
    /**
     */
    filter(filterExpr: any): void;
    /**
     */
    group(): any;
    /**
     */
    group(groupExpr: any): void;
    /**
     */
    isLastPage(): boolean;
    /**
     */
    isLoaded(): boolean;
    /**
     */
    isLoading(): boolean;
    /**
     */
    items(): Array<any>;
    /**
     */
    key(): any & string & number;
    /**
     */
    load(): Promise<any> & JQueryPromise<any>;
    /**
     */
    loadOptions(): any;
    /**
     */
    off(eventName: string): this;
    /**
     */
    off(eventName: string, eventHandler: Function): this;
    /**
     */
    on(eventName: string, eventHandler: Function): this;
    /**
     */
    on(events: any): this;
    /**
     */
    pageIndex(): number;
    /**
     */
    pageIndex(newIndex: number): void;
    /**
     */
    pageSize(): number;
    /**
     */
    pageSize(value: number): void;
    /**
     */
    paginate(): boolean;
    /**
     */
    paginate(value: boolean): void;
    /**
     */
    reload(): Promise<any> & JQueryPromise<any>;
    /**
     */
    requireTotalCount(): boolean;
    /**
     */
    requireTotalCount(value: boolean): void;
    /**
     */
    searchExpr(): string & Function & Array<string | Function>;
    /**
     */
    searchExpr(expr: string | Function | Array<string | Function>): void;
    /**
     */
    searchOperation(): string;
    /**
     */
    searchOperation(op: string): void;
    /**
     */
    searchValue(): any;
    /**
     */
    searchValue(value: any): void;
    /**
     */
    select(): any;
    /**
     */
    select(expr: any): void;
    /**
     */
    sort(): any;
    /**
     */
    sort(sortExpr: any): void;
    /**
     */
    store(): any;
    /**
     */
    totalCount(): number;
}
