import { IDatasource, IGetRowsParams } from "ag-grid-community";
import { QueryResults } from './repository';
import * as breeze from 'breeze-client';
import { OrderByOption, PagingOption } from "./service-base";
export interface IGetPredicatesFunc {
    (filterText: string): breeze.Predicate;
}
export interface IGetDataFunc<T extends breeze.Entity> {
    (params: IGetRowsParams, expands?: any, quickFilter?: string, queryCriteria?: any, queryParameters?: any): Promise<QueryResults<T>>;
}
export declare class GridDataSource<T extends breeze.Entity> implements IDatasource {
    private entityTypeName;
    private metadataStore;
    private predicateUtils;
    constructor(entityTypeName: string, metadataStore: breeze.MetadataStore);
    predicates: breeze.Predicate;
    selectPropertyPaths: string[] | null;
    getPredicatesFunction: IGetPredicatesFunc;
    getDataFunction: IGetDataFunc<T>;
    onSuccessGetRowsCallback: (rowsThisBlock: T[], lastRow?: number) => Promise<T[]>;
    quickFilter: string;
    filterText: string;
    rowCount: number;
    expands: string[];
    queryCriteria: any;
    queryParameters: any;
    queryOrderBy: OrderByOption;
    queryPaging: PagingOption;
    customSelect2Predicates: (filterText: string, filterProperties: string[]) => breeze.Predicate;
    customSelect2QueryParameters: () => object;
    private get entityType();
    getRows(params: IGetRowsParams): Promise<QueryResults<T>>;
    private getProp;
    private getPropHelper;
    getRowsForSelect2(params: IGetRowsParams, filterText: string, filterProperties: string[]): Promise<QueryResults<T>>;
    getPredicatesForSelect2(filterText: string, filterProperties: string[]): breeze.Predicate;
    getQueryParametersForSelect2(): object;
}
