import { ISupportsDataChangeNotifications } from "./ISupportsDataChangeNotifications";
import { IDataSourceSupportsCount } from "./IDataSourceSupportsCount";
import { IDataSourceSchema } from "./IDataSourceSchema";
import { IDataSourceExecutionContext } from "./IDataSourceExecutionContext";
import { IDataSourceDataProviderUpdateNotifier } from "./IDataSourceDataProviderUpdateNotifier";
import { SortDescriptionCollection } from "./SortDescriptionCollection";
import { DataSourceDataProviderSchemaChangedEventArgs } from "./DataSourceDataProviderSchemaChangedEventArgs";
import { DataSourceSchemaPropertyType } from "./DataSourceSchemaPropertyType";
import { Type, IList$1, Base } from "./type";
import { NotifyCollectionChangedEventArgs } from "./NotifyCollectionChangedEventArgs";
export interface IDataSourceDataProvider extends ISupportsDataChangeNotifications, IDataSourceSupportsCount {
    getItemValue(a: any, b: string): any;
    schemaChanged: (sender: any, args: DataSourceDataProviderSchemaChangedEventArgs) => void;
    readonly actualSchema: IDataSourceSchema;
    executionContext: IDataSourceExecutionContext;
    updateNotifier: IDataSourceDataProviderUpdateNotifier;
    queueAutoRefresh(): void;
    deferAutoRefresh: boolean;
    flushAutoRefresh(): void;
    refresh(): void;
    readonly isSortingSupported: boolean;
    readonly isGroupingSupported: boolean;
    readonly sortDescriptions: SortDescriptionCollection;
    readonly groupDescriptions: SortDescriptionCollection;
    readonly isFilteringSupported: boolean;
    readonly filterExpressions: FilterExpressionCollection;
    propertiesRequested: string[];
    readonly notifyUsingSourceIndexes: boolean;
    indexOfItem(a: any): number;
    indexOfKey(a: any[]): number;
    readonly isItemIndexLookupSupported: boolean;
    readonly isKeyIndexLookupSupported: boolean;
    resolveSchemaPropertyType(a: string): DataSourceSchemaPropertyType;
}
export declare let IDataSourceDataProvider_$type: Type;
export interface IFilterExpression {
    evaluate(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): any;
    readonly isPropertyReference: boolean;
    readonly isOperation: boolean;
    readonly isFunction: boolean;
    readonly isLiteral: boolean;
    readonly isNull: boolean;
    match(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): boolean;
}
export declare let IFilterExpression_$type: Type;
export declare class FilterExpressionCollection extends Base {
    private a;
    b: FilterExpressionCollection;
    private f;
    constructor();
    g(a: IFilterExpression): boolean;
    n(a: number, b: IFilterExpression): void;
    m(): void;
    c(a: number): IFilterExpression;
    j(a: IFilterExpression): number;
    h(a: IFilterExpression): boolean;
    d(a: number): IFilterExpression;
    e(a: number, b: IFilterExpression): IFilterExpression;
    k(): number;
    l(a: (sender: any, e: NotifyCollectionChangedEventArgs) => void): void;
    o(a: (sender: any, e: NotifyCollectionChangedEventArgs) => void): void;
    readonly i: IList$1<IFilterExpression>;
    static $t: Type;
}
