import { Base, INotifyPropertyChanged, PropertyChangedEventArgs, Type } from "./type";
import { IDataSourceLocalDataProvider } from "./IDataSourceLocalDataProvider";
import { IDataSource } from "./IDataSource";
import { IDataSourceSchema } from "./IDataSourceSchema";
import { IDataSourceExecutionContext } from "./IDataSourceExecutionContext";
import { IDataSourceDataProviderUpdateNotifier } from "./IDataSourceDataProviderUpdateNotifier";
import { SortDescriptionCollection } from "./SortDescriptionCollection";
import { SummaryDescriptionCollection } from "./SummaryDescriptionCollection";
import { DataSourceSummaryScope } from "./DataSourceSummaryScope";
import { FilterExpressionCollection } from "./FilterExpressionCollection";
import { DataSourceDataProviderSchemaChangedEventArgs } from "./DataSourceDataProviderSchemaChangedEventArgs";
import { DataSourceSchemaPropertyType } from "./DataSourceSchemaPropertyType";
import { IDataSourceUpdateNotifier } from "./IDataSourceUpdateNotifier";
/**
 * @hidden
 */
export declare class FlatDataProvider extends Base implements IDataSourceLocalDataProvider, INotifyPropertyChanged {
    static $t: Type;
    constructor();
    private v;
    private z;
    private w;
    private y;
    private r;
    private f;
    private d;
    get e(): IDataSource;
    set e(a: IDataSource);
    private l;
    get o(): string;
    set o(a: string);
    get actualSchema(): IDataSourceSchema;
    get executionContext(): IDataSourceExecutionContext;
    set executionContext(a: IDataSourceExecutionContext);
    get updateNotifier(): IDataSourceDataProviderUpdateNotifier;
    set updateNotifier(a: IDataSourceDataProviderUpdateNotifier);
    private k;
    get dataSource(): any;
    set dataSource(a: any);
    private h;
    get deferAutoRefresh(): boolean;
    set deferAutoRefresh(a: boolean);
    get isSortingSupported(): boolean;
    get isGroupingSupported(): boolean;
    get isFilteringSupported(): boolean;
    get sortDescriptions(): SortDescriptionCollection;
    get groupDescriptions(): SortDescriptionCollection;
    get summaryDescriptions(): SummaryDescriptionCollection;
    get summaryScope(): DataSourceSummaryScope;
    set summaryScope(a: DataSourceSummaryScope);
    get filterExpressions(): FilterExpressionCollection;
    get propertiesRequested(): string[];
    set propertiesRequested(a: string[]);
    get notifyUsingSourceIndexes(): boolean;
    get isItemIndexLookupSupported(): boolean;
    get isKeyIndexLookupSupported(): boolean;
    get actualCount(): number;
    schemaChanged: (sender: any, args: DataSourceDataProviderSchemaChangedEventArgs) => void;
    propertyChanged: (sender: any, e: PropertyChangedEventArgs) => void;
    protected x(a: string, b: any, c: any): void;
    protected af(a: string, b: any, c: any): void;
    private u;
    addItem(a: any): void;
    g: boolean;
    private a;
    private i;
    queueAutoRefresh(): void;
    s(): void;
    ag(): void;
    protected ah(): void;
    flushAutoRefresh(): void;
    refresh(): void;
    getItemAtIndex(a: number): any;
    getItemValue(a: any, b: string): any;
    indexOfItem(a: any): number;
    indexOfKey(a: any[]): number;
    removeItem(a: any): void;
    resolveSchemaPropertyType(a: string): DataSourceSchemaPropertyType;
    setItemValue(a: any, b: string, c: any): void;
    notifyClearItems(): void;
    notifyInsertItem(a: number, b: any): void;
    notifyRemoveItem(a: number, b: any): void;
    notifySetItem(a: number, b: any, c: any): void;
    private j;
    private b;
    private t;
    private c;
    aa(): void;
    ab(a: number, b: any): void;
    ac(a: number, b: any): void;
    ad(a: number, b: any, c: any): void;
    ae(a: number, b: number): void;
}
/**
 * @hidden
 */
export declare class FlatDataProviderTargetDataSourceNotifier extends Base implements IDataSourceUpdateNotifier {
    static $t: Type;
    private a;
    private b;
    get c(): IDataSourceUpdateNotifier;
    constructor(a: FlatDataProvider, b: IDataSourceUpdateNotifier);
    notifyClearItems(): void;
    notifyInsertItem(a: number, b: any): void;
    notifyRemoveItem(a: number, b: any): void;
    notifySetItem(a: number, b: any, c: any): void;
    rangeActualized(a: number, b: number): void;
}
