import { ChartType, TotalLabels } from '../../../../../types';
import { CartesianChartDataOptionsInternal, CategoricalChartDataOptionsInternal, ChartDataOptionsInternal } from '../../chart-data-options/types';
import { CartesianChartData, CategoricalSeriesValues, ChartData } from '../../chart-data/types';
import { Stacking } from '../chart-options-service';
import { AxisMinMax, AxisSettings } from './axis-section';
import { PolarChartDesignOptions, StackableChartDesignOptions } from './design-options';
import { DesignOptions } from './types';
export type LineType = 'straight' | 'smooth';
export type StackType = 'classic' | 'stacked' | 'stack100';
export type HighchartsType = ChartType | 'spline' | 'areaspline' | 'bubble' | 'heatmap';
export type HighchartsSeriesValues = {
    name: string;
    data: SeriesPointStructure[];
    levels?: any;
};
export type SeriesPointStructure = {
    name?: string;
    y?: number | null;
    x?: number | null;
    z?: number | null;
    color?: string;
    marker?: {
        enabled?: boolean;
        isIsolatedPoint?: boolean;
        lineColor?: string;
        lineWidth?: number;
    };
    selected?: boolean;
    sliced?: boolean;
    custom?: {
        number1?: number;
        string1?: string;
        level?: number;
        maskedBreakByPoint?: string;
        maskedBreakByColor?: string;
        [k: string]: unknown;
    };
    value?: number | null;
    id?: string;
    drilldown?: string;
    parent?: string;
    low?: number | null;
    high?: number | null;
    trend?: {
        min: number;
        max: number;
        median: number;
        average: number;
    };
};
export type AxisClipped = {
    minClipped: boolean;
    maxClipped: boolean;
};
/**
 * Translate public-facing chart type and chart design options to internal highcharts chart type
 *
 * @param chartType - public-facing chart type
 * @param designOptions - public-facing chart design options
 * @returns internal highcharts chart type
 */
export declare const determineHighchartsChartType: (chartType: ChartType, designOptions: DesignOptions) => HighchartsType;
export declare const addStackingIfSpecified: (chartType: ChartType, designOptions: StackableChartDesignOptions | PolarChartDesignOptions) => {
    stacking?: Stacking;
    totalLabels?: TotalLabels;
};
/**
 * In cartesian charts when a chart has only Y columns and since we for each Y column build a separate series
 * to match the legend correctly in order to correctly map x-axis labels
 * This method returns the indexMap for the series with the index
 * for a series with one data, index map has -1 for all x-axis locations except where the series lands
 *
 * @param categories -
 * @param index -
 */
export declare const indexMapWhenOnlyY: (categories: string[], index: number) => (0 | -1)[];
export declare const formatSeriesContinuousXAxis: (series: CategoricalSeriesValues, indexMap: number[], treatNullDataAsZeros: boolean, interval: number, maxCategories: number, dateFormatter: (time: number) => string, yAxisSettings: AxisSettings, axisClipped: AxisClipped) => HighchartsSeriesValues;
export declare const formatSeries: (series: CategoricalSeriesValues, indexMap: number[], treatNullDataAsZeros: boolean, categories?: string[], categoryColors?: string[], convertValuesToAbsolute?: boolean) => HighchartsSeriesValues;
export declare const adjustMinMaxWhenInvalid: (explicitAxis: AxisMinMax, autoMinMax: AxisMinMax) => {
    min: number;
    max: number;
};
export declare const adjustMinWhenColumnBar: (chartType: ChartType, autoMinMax: AxisMinMax) => {
    min: number;
    max: number;
};
export declare const autoCalculateYAxisMinMax: (chartType: ChartType, chartData: CartesianChartData, designOptions: DesignOptions, yAxisSide: number[], yTreatNullDataAsZeros: boolean[], side: number) => {
    min: number;
    max: number;
};
/**
 * Determines Y-axis configuration options for cartesian charts
 *
 * @param chartData - Chart data containing series information
 * @param dataOptions - Chart data options containing y columns and breakBy configuration
 * @returns Tuple containing [yAxisSide, yAxisChartType, yTreatNullDataAsZeros, yConnectNulls]
 */
export declare const determineYAxisOptions: (chartData: ChartData, dataOptions: ChartDataOptionsInternal) => [number[], (HighchartsType | undefined)[], boolean[], boolean[]];
export declare const getColorSetting: (dataOptions: CartesianChartDataOptionsInternal | CategoricalChartDataOptionsInternal, key: string) => string | undefined;
