import { Type, Base, INotifyPropertyChanged, PropertyChangedEventArgs } from "./type";
import { DataAdapterRunContextRecursionType } from "./DataAdapterRunContextRecursionType";
import { DataSeriesCollection } from "./DataSeriesCollection";
import { IDataSourceLocalDataProvider } from "./IDataSourceLocalDataProvider";
import { DataSeriesType } from "./DataSeriesType";
import { DataSeriesPropertyType } from "./DataSeriesPropertyType";
import { DataSeriesAdapterProviderInfo } from "./DataSeriesAdapterProviderInfo";
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";
import { DataSeriesAdapterPropertyInfo } from "./DataSeriesAdapterPropertyInfo";
/**
 * @hidden
 */
export interface IDataSeriesAdapterRule {
    getPrimaryAxisLabelsString(a: DataSeriesAdapterRunContext): string;
    getPrimaryAxisLabelsStrings(a: DataSeriesAdapterRunContext): string[];
    getAdditionalValuePropertyStrings(a: DataSeriesAdapterRunContext): string[];
    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 k;
    private _analyzer;
    get analyzer(): DataSeriesDataProviderAnalyzer;
    set analyzer(a: DataSeriesDataProviderAnalyzer);
    constructor(a: any);
    private l;
    getSubProvider(a: any, b: string): IDataSourceLocalDataProvider;
    popSubProvider(): void;
    aj(a: string, b: string): string;
    recurseRules(a: any, b: string, c: boolean): void;
    private w;
    private x;
    private z;
    private y;
    private b;
    private a;
    private s;
    private p;
    private t;
    private u;
    private v;
    private i;
    get adjustPrioritiesBasedOnFitness(): boolean;
    get includedProperties(): string[];
    get excludedProperties(): string[];
    getCurrentDataSource(): IDataSourceLocalDataProvider;
    getCurrentHighlightingDataSource(): IDataSourceLocalDataProvider;
    pushDataSource(a: IDataSourceLocalDataProvider): void;
    pushHighlightingDataSource(a: IDataSourceLocalDataProvider): void;
    hasValidType(a: DataSeries): boolean;
    j(): DataAdapterRunContextRecursionType;
    ay(a: DataAdapterRunContextRecursionType): void;
    al(a: string): void;
    d(): string[];
    ao(): void;
    am(a: string, b: string, c: DataSeriesPropertyType): void;
    h(a: number): DataSeriesPropertyType;
    ai(a: number): string;
    popDataSource(): any;
    popHighlightingDataSource(): any;
    getCurrentPathSegment(): string;
    getCurrentPath(): string;
    getParentTitle(): string;
    pushPath(a: string): void;
    popPath(): any;
    pushParentTitle(a: string): void;
    popParentTitle(): any;
    private ar;
    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);
    u: DataSeriesAdapterRunContext;
    private b;
    private a;
    private x;
    private w;
    private at;
    private av;
    private as;
    private au;
    get includedProperties(): string[];
    set includedProperties(a: string[]);
    get excludedProperties(): string[];
    set excludedProperties(a: string[]);
    getParentTitle(): string;
    shouldIncludeProperty(a: string, b: string): boolean;
    private z;
    private ad;
    expandCamelCasedWords(a: string): string;
    hasStringProperties(): boolean;
    getAllStringProperties(): string[];
    getAllExcludedStringProperties(): string[];
    isCollection(a: any): boolean;
    getAllPropertiesWithName(a: string): string[];
    getAllNumericProperties(): string[];
    getAllObjectProperties(): string[];
    getAllCollectionProperties(): string[];
    getFirstNumericProperty(): string;
    hasNumericProperties(): boolean;
    private ag;
    private v;
    private s;
    private r;
    private aq;
    private y;
    getAllPropertiesWithIntent(a: string): string[];
    getAllPropertiesWithValuelessIntent(a: string): string[];
    getPropertyIntentValue(a: string, b: string): string;
    getAllPropertiesWithValuedIntent(a: string): string[];
    private m;
    getAllDateTimeProperties(): string[];
    getAllExcludedDateTimeProperties(): string[];
    getFirstDateTimeProperty(): string;
    getFirstStringProperty(): string;
    hasDateTimeProperties(): boolean;
    private ak;
    private al;
    isMonotonic(a: IDataSourceLocalDataProvider, b: string, c: number): boolean;
    isEvenlySpaced(a: IDataSourceLocalDataProvider, b: string, c: number): boolean;
    private a6;
    getFirstDistinctStringProperty(a: number): string;
    getFirstDistinctNumericProperty(a: number): string;
    getFirstDistinctMonotonicNumericProperty(a: number): string;
    getFirstDistinctMonotonicNumericPropertyWithEvenSpacing(a: number): string;
    getAllDistinctMonotonicNumericProperties(a: number): string[];
    getAllExcludedDistinctMonotonicNumericProperties(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 az;
    getNonNullPropertyValue(a: string): any;
    private am;
    private af;
    coerceToDouble(value_: any): number;
    private aj;
    numericColumnHasDiverseValues(a: string): boolean;
    numericColumnHasNoRange(a: IDataSourceLocalDataProvider, b: string, c: number): boolean;
    shouldUseLogarithmicScale(a: IDataSourceLocalDataProvider, b: string): boolean;
}
/**
 * @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 at;
    private ab;
    private z;
    private aa;
    aj: (arg1: string) => string;
    aq(a: string, b: string): string;
    private bb;
    private bj;
    al: any;
    get g(): IExternalDataSeriesAdapter;
    private ai;
    private ah;
    private ak;
    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 t;
    private s;
    private r;
    private m;
    private n;
    private x;
    get sortDescriptions(): SortDescriptionCollection;
    get postSortDescriptions(): SortDescriptionCollection;
    get groupDescriptions(): SortDescriptionCollection;
    get filterExpressions(): FilterExpressionCollection;
    get highlightFilterExpressions(): FilterExpressionCollection;
    get summaryDescriptions(): SummaryDescriptionCollection;
    private _rules;
    get rules(): DataSeriesAdapterRuleCollection;
    set rules(a: DataSeriesAdapterRuleCollection);
    private _dataSeries;
    get dataSeries(): DataSeriesCollection;
    set dataSeries(a: DataSeriesCollection);
    protected a6(a: string, b: any, c: any): void;
    protected bc(a: string, b: any, c: any): void;
    private ac;
    refresh(): void;
    a1(a: DataSeriesAdapterPropertyInfo, b: DataSeriesAdapterPropertyInfo): void;
    private bi;
    private av;
    private bt;
    private bh;
    private bp;
    removingUnsupported: (sender: any, args: DataSeriesAdapterRunEventArgs) => void;
    removingDuplicates: (sender: any, args: DataSeriesAdapterRemovingDuplicatesEventArgs) => void;
    private bg;
    private bl;
    private bk;
    private get ae();
    flush(): void;
    private az;
    private _adjustPrioritiesBasedOnFitness;
    get adjustPrioritiesBasedOnFitness(): boolean;
    set adjustPrioritiesBasedOnFitness(a: boolean);
    private ag;
    private af;
    h(a: any, b: boolean): DataSeriesAdapterProviderInfo;
    private bn;
    private br;
    private bo;
    private bs;
    private bm;
    private bq;
    private a0;
    private ar;
    private q;
    private ax;
    private aw;
    be(a: DataSeriesAdapterRunContext, b: any, c: string, d: boolean): void;
    private au;
    private bd;
    a7(a: IDataSourceLocalDataProvider): void;
    a8(a: IDataSourceLocalDataProvider, b: number, c: any): void;
    a9(a: IDataSourceLocalDataProvider, b: number, c: any): void;
    ba(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;
}
