import { Type, Base, INotifyPropertyChanged, PropertyChangedEventArgs } from "./type";
import { DataSeriesCollection } from "./DataSeriesCollection";
import { IDataSourceLocalDataProvider } from "./IDataSourceLocalDataProvider";
import { DataSeriesType } from "./DataSeriesType";
import { DataSeries } from "./DataSeries";
import { IDataSourceDataProviderUpdateNotifier } from "./IDataSourceDataProviderUpdateNotifier";
import { ObservableCollection$1 } from "./ObservableCollection$1";
import { IExternalDataSeriesAdapter } from "./IExternalDataSeriesAdapter";
import { SortDescriptionCollection } from "./SortDescriptionCollection";
import { FilterExpressionCollection } from "./FilterExpressionCollection";
import { SummaryDescriptionCollection } from "./SummaryDescriptionCollection";
/**
 * @hidden
 */
export interface IDataSeriesAdapterRule {
    evaluate(a: DataSeriesAdapterRunContext): void;
    readonly priority: number;
}
/**
 * @hidden
 */
export declare let IDataSeriesAdapterRule_$type: Type;
/**
 * @hidden
 */
export declare class DataSeriesAdapterRunContext extends Base {
    static $t: Type;
    private g;
    private _analyzer;
    get analyzer(): DataSeriesDataProviderAnalyzer;
    set analyzer(a: DataSeriesDataProviderAnalyzer);
    constructor(a: any);
    private h;
    getSubProvider(a: any, b: string): IDataSourceLocalDataProvider;
    popSubProvider(): void;
    w(a: string, b: string): string;
    recurseRules(a: any, b: string, c: boolean): void;
    private m;
    private o;
    private n;
    private b;
    private a;
    private l;
    get includedProperties(): string[];
    get excludedProperties(): string[];
    getCurrentDataSource(): IDataSourceLocalDataProvider;
    pushDataSource(a: IDataSourceLocalDataProvider): void;
    hasValidType(a: DataSeries): boolean;
    popDataSource(): any;
    getCurrentPathSegment(): string;
    getCurrentPath(): string;
    getParentTitle(): string;
    pushPath(a: string): void;
    popPath(): any;
    pushParentTitle(a: string): void;
    popParentTitle(): any;
    private ab;
    addDataSeries(a: DataSeries, b: IDataSeriesAdapterRule): void;
    removeDataSeries(a: DataSeries): void;
    insertDataSeries(a: number, b: DataSeries, c: IDataSeriesAdapterRule): void;
    clearDataSeries(): void;
    getDataSeriesCount(): number;
    getDataSeriesAt(a: number): DataSeries;
}
/**
 * @hidden
 */
export declare class DataSeriesDataProviderAnalyzer extends Base {
    static $t: Type;
    constructor(a: DataSeriesAdapterRunContext);
    p: DataSeriesAdapterRunContext;
    private b;
    private a;
    private s;
    private r;
    private ak;
    private am;
    private aj;
    private al;
    get includedProperties(): string[];
    set includedProperties(a: string[]);
    get excludedProperties(): string[];
    set excludedProperties(a: string[]);
    getParentTitle(): string;
    shouldIncludeProperty(a: string, b: string): boolean;
    private u;
    private y;
    expandCamelCasedWords(a: string): string;
    hasStringProperties(): boolean;
    getAllStringProperties(): string[];
    isCollection(a: any): boolean;
    getAllPropertiesWithName(a: string): string[];
    getAllNumericProperties(): string[];
    getAllObjectProperties(): string[];
    getAllCollectionProperties(): string[];
    getFirstNumericProperty(): string;
    hasNumericProperties(): boolean;
    private ab;
    private q;
    private n;
    private ai;
    private t;
    getAllPropertiesWithIntent(a: string): string[];
    getAllPropertiesWithValuelessIntent(a: string): string[];
    getPropertyIntentValue(a: string, b: string): string;
    getAllPropertiesWithValuedIntent(a: string): string[];
    private i;
    getAllDateTimeProperties(): string[];
    getFirstDateTimeProperty(): string;
    getFirstStringProperty(): string;
    hasDateTimeProperties(): boolean;
    private ae;
    private af;
    isMonotonic(a: IDataSourceLocalDataProvider, b: string, c: number): boolean;
    private aw;
    getFirstDistinctStringProperty(a: number): string;
    getFirstDistinctNumericProperty(a: number): string;
    getFirstDistinctMonotonicNumericProperty(a: number): string;
    getFirstDistinctDateTimeProperty(a: number): string;
    getFirstStringPropertyPreferringDistinct(a: number): string;
    getTitleString(a: any, b: string[]): string;
    getTitleStringWithSeparator(a: any, b: string[], c: string): string;
    private aq;
    getNonNullPropertyValue(a: string): any;
    private ag;
    private aa;
    private an;
    private ad;
}
/**
 * @hidden
 */
export declare class DataSeriesAdapterUpdateNotifier extends Base implements IDataSourceDataProviderUpdateNotifier {
    static $t: Type;
    private a;
    private b;
    constructor(a: DataSeriesAdapterImplementation, b: IDataSourceLocalDataProvider);
    notifyClearItems(): void;
    notifyInsertItem(a: number, b: any): void;
    notifyRemoveItem(a: number, b: any): void;
    notifySetItem(a: number, b: any, c: any): void;
}
/**
 * @hidden
 */
export declare class DataSeriesAdapterRuleCollection extends ObservableCollection$1<IDataSeriesAdapterRule> {
    static $t: Type;
    constructor();
}
/**
 * @hidden
 */
export declare class DataSeriesAdapterRemovingDuplicatesEventArgs extends Base {
    static $t: Type;
    b: DataSeriesAdapterRunContext;
    d: string;
    e: string;
    a: DataSeries[];
    c: boolean;
}
/**
 * @hidden
 */
export declare class DataSeriesAdapterRunEventArgs extends Base {
    static $t: Type;
    a: DataSeriesAdapterRunContext;
    b: boolean;
}
/**
 * @hidden
 */
export declare class DataSeriesAdapterImplementation extends Base implements INotifyPropertyChanged {
    static $t: Type;
    constructor();
    private al;
    private x;
    private w;
    ac: (arg1: string) => string;
    aj(a: string, b: string): string;
    private ax;
    private a5;
    ae: any;
    get g(): IExternalDataSeriesAdapter;
    private ab;
    private ad;
    propertyChanged: (sender: any, e: PropertyChangedEventArgs) => void;
    get itemsSource(): any;
    set itemsSource(a: any);
    private c;
    get supportedSeriesTypes(): DataSeriesType[];
    set supportedSeriesTypes(a: DataSeriesType[]);
    private b;
    get includedProperties(): string[];
    set includedProperties(a: string[]);
    private a;
    get excludedProperties(): string[];
    set excludedProperties(a: string[]);
    private q;
    private p;
    private o;
    private l;
    private u;
    get sortDescriptions(): SortDescriptionCollection;
    get postSortDescriptions(): SortDescriptionCollection;
    get groupDescriptions(): SortDescriptionCollection;
    get filterExpressions(): FilterExpressionCollection;
    get summaryDescriptions(): SummaryDescriptionCollection;
    private _rules;
    get rules(): DataSeriesAdapterRuleCollection;
    set rules(a: DataSeriesAdapterRuleCollection);
    private _dataSeries;
    get dataSeries(): DataSeriesCollection;
    set dataSeries(a: DataSeriesCollection);
    protected as(a: string, b: any, c: any): void;
    protected ay(a: string, b: any, c: any): void;
    private y;
    refresh(): void;
    private a4;
    private an;
    private a9;
    private a3;
    private a8;
    removingUnsupported: (sender: any, args: DataSeriesAdapterRunEventArgs) => void;
    removingDuplicates: (sender: any, args: DataSeriesAdapterRemovingDuplicatesEventArgs) => void;
    private a2;
    private a7;
    private a6;
    private get z();
    private aa;
    n(a: any, b: boolean): IDataSourceLocalDataProvider;
    a0(a: DataSeriesAdapterRunContext, b: any, c: string, d: boolean): void;
    private am;
    private az;
    at(a: IDataSourceLocalDataProvider): void;
    au(a: IDataSourceLocalDataProvider, b: number, c: any): void;
    av(a: IDataSourceLocalDataProvider, b: number, c: any): void;
    aw(a: IDataSourceLocalDataProvider, b: number, c: any, d: any): void;
    notifyClearItems(a: any): void;
    notifyInsertItem(a: any, b: number, c: any): void;
    notifyRemoveItem(a: any, b: number, c: any): void;
    notifySetItem(a: any, b: number, c: any, d: any): void;
}
