import { Type, Base, IEnumerable, INotifyPropertyChanged, PropertyChangedEventArgs } from "./type";
import { DataSeriesCollection } from "./DataSeriesCollection";
import { IDataSourceLocalDataProvider } from "./IDataSourceLocalDataProvider";
import { DataSeriesType } from "./DataSeriesType";
import { DataSeries } from "./DataSeries";
import { IExternalDataSeriesAdapter } from "./IExternalDataSeriesAdapter";
import { ObservableCollection$1 } from "./ObservableCollection$1";
import { IDataSourceDataProviderUpdateNotifier } from "./IDataSourceDataProviderUpdateNotifier";
export interface IDataSeriesAdapterRule {
    evaluate(a: DataSeriesAdapterRunContext): void;
    readonly priority: number;
}
export declare let IDataSeriesAdapterRule_$type: Type;
export declare class DataSeriesAdapterRunContext extends Base {
    private g;
    private _analyzer;
    analyzer: DataSeriesDataProviderAnalyzer;
    constructor(a: any);
    private h;
    getSubProvider(a: any, b: string): IDataSourceLocalDataProvider;
    popSubProvider(): void;
    recurseRules(a: any, b: string, c: boolean): void;
    private m;
    private o;
    private n;
    private b;
    private a;
    private l;
    readonly includedProperties: string[];
    readonly 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 aa(a, b);
    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;
    static $t: Type;
}
export declare class DataSeriesDataProviderAnalyzer extends Base {
    constructor(a: DataSeriesAdapterRunContext);
    p: DataSeriesAdapterRunContext;
    private b;
    private a;
    private s;
    private r;
    private ak;
    private am;
    private aj;
    private al;
    includedProperties: string[];
    excludedProperties: string[];
    getParentTitle(): string;
    shouldIncludeProperty(a: string, b: string): boolean;
    private u(a);
    private y(a);
    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(a);
    private q(a);
    private n(a, b);
    private ai(a, b);
    private t(a, b, c);
    getAllPropertiesWithIntent(a: string): string[];
    getAllPropertiesWithValuelessIntent(a: string): string[];
    getPropertyIntentValue(a: string, b: string): string;
    getAllPropertiesWithValuedIntent(a: string): string[];
    private i(a, b, c);
    getAllDateTimeProperties(): string[];
    getFirstDateTimeProperty(): string;
    getFirstStringProperty(): string;
    hasDateTimeProperties(): boolean;
    private ae(a);
    private af(a);
    isMonotonic(a: IDataSourceLocalDataProvider, b: string, c: number): boolean;
    private aw(a, b, c);
    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;
    private aq(a, b, c);
    getNonNullPropertyValue(a: string): any;
    private ag(a, b);
    private aa(a, b);
    private an(value_);
    private ad(a, b);
    static $t: Type;
}
export declare class DataSeriesAdapterImplementation extends Base implements INotifyPropertyChanged {
    constructor();
    private af(a);
    private al(a, b);
    p: any;
    readonly g: IExternalDataSeriesAdapter;
    private m;
    private n;
    propertyChanged: (sender: any, e: PropertyChangedEventArgs) => void;
    itemsSource: IEnumerable;
    private c;
    supportedSeriesTypes: DataSeriesType[];
    private b;
    includedProperties: string[];
    private a;
    excludedProperties: string[];
    private _rules;
    rules: DataSeriesAdapterRuleCollection;
    private _dataSeries;
    dataSeries: DataSeriesCollection;
    protected aa(a: string, b: any, c: any): void;
    protected ag(a: string, b: any, c: any): void;
    refresh(): void;
    private v();
    private ap(a);
    private ak(a);
    private ao(a);
    removingUnsupported: (sender: any, args: DataSeriesAdapterRunEventArgs) => void;
    removingDuplicates: (sender: any, args: DataSeriesAdapterRemovingDuplicatesEventArgs) => void;
    private aj(a);
    private an(a);
    private am(a, b);
    l(a: any): IDataSourceLocalDataProvider;
    ah(a: DataSeriesAdapterRunContext, b: any, c: string, d: boolean): void;
    private u(a, b, c);
    ab(a: IDataSourceLocalDataProvider): void;
    ac(a: IDataSourceLocalDataProvider, b: number, c: any): void;
    ad(a: IDataSourceLocalDataProvider, b: number, c: any): void;
    ae(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;
    static $t: Type;
}
export declare class DataSeriesAdapterUpdateNotifier extends Base implements IDataSourceDataProviderUpdateNotifier {
    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;
    static $t: Type;
}
export declare class DataSeriesAdapterRunEventArgs extends Base {
    a: DataSeriesAdapterRunContext;
    b: boolean;
    static $t: Type;
}
export declare class DataSeriesAdapterRemovingDuplicatesEventArgs extends Base {
    b: DataSeriesAdapterRunContext;
    d: string;
    e: string;
    a: DataSeries[];
    c: boolean;
    static $t: Type;
}
export declare class DataSeriesAdapterRuleCollection extends ObservableCollection$1<IDataSeriesAdapterRule> {
    constructor();
    static $t: Type;
}
