import { ItemValue, Question } from "survey-core";
import { IAnswersData, SelectBase } from "./selectBase";
export declare type HistogramIntervalMode = "auto" | "custom" | "decades" | "years" | "quarters" | "months" | "days";
export interface IHistogramInterval {
    start: number;
    end: number;
    label: string;
}
export declare function getBestIntervalMode(min: number, max: number): HistogramIntervalMode;
export declare const intervalCalculators: {
    decades: (min: number, max: number) => any[];
    years: (min: number, max: number) => any[];
    months: (min: number, max: number) => any[];
    quarters: (min: number, max: number) => any[];
    days: (min: number, max: number) => any[];
};
export declare class HistogramModel extends SelectBase {
    protected valueType: "date" | "number";
    private _cachedValues;
    private _continuousData;
    private _cachedIntervals;
    private _intervalPrecision;
    private showRunningTotalsBtn;
    private showGroupedBtn;
    private changeIntervalsModeSelector;
    private aggregateDataNameSelector;
    static IntervalsCount: number;
    static UseIntervalsFrom: number;
    constructor(question: Question, data: Array<{
        [index: string]: any;
    }>, options?: Object, name?: string);
    private updateIntervalsModeSelector;
    private updateAggregateDataNameSelector;
    private reset;
    getContinuousValue(value: any): number;
    getString(value: number): string;
    private toPrecision;
    getSelectedItemByText(itemText: string): ItemValue;
    /**
     * Updates visualizer data.
     */
    updateData(data: Array<{
        [index: string]: any;
    }>): void;
    protected onDataChanged(): void;
    protected onSelectionChanged(item: ItemValue): void;
    protected getContinuousValues(): {
        original: any;
        continuous: number;
        row: any;
    }[];
    protected isSupportSoftUpdateContent(): boolean;
    protected isSupportMissingAnswers(): boolean;
    protected get needUseRateValues(): boolean;
    getValues(): Array<any>;
    getLabels(): Array<string>;
    get hasCustomIntervals(): boolean;
    get intervals(): any;
    intervalModes: HistogramIntervalMode[];
    private _intervalsMode;
    get intervalsMode(): HistogramIntervalMode;
    set intervalsMode(val: HistogramIntervalMode);
    get allowChangeIntervals(): boolean;
    private _showRunningTotals;
    get showRunningTotals(): boolean;
    set showRunningTotals(val: boolean);
    private updateShowRunningTotalsBtn;
    private _showGrouped;
    get showGrouped(): boolean;
    set showGrouped(val: boolean);
    private updateShowGroupedBtn;
    get canShowGroupedDateSeries(): boolean;
    private _aggregateDataName;
    get aggregateDataName(): string;
    set aggregateDataName(val: string);
    get possibleAggregateDataNames(): Array<string>;
    convertFromExternalData(externalCalculatedData: any): any[];
    protected getCalculatedValuesCore(): Array<any>;
    getCalculatedValues(): Promise<Array<Object>>;
    private getGroupedDateAnswersData;
    /**
     * Returns object with all infotmation for data visualization: datasets, labels, colors, additional texts (percentage).
     */
    getAnswersData(): Promise<IAnswersData>;
    getValueType(): "date" | "number";
}
