import uPlot from 'uplot';
import { LocaleInfo } from '../utilities/formatTimestamp';
import { VizTheme } from '../theme';
import { AxisRange, GenericDataSet, DataSet, ScaleConfig, SeriesConfig, TimestampFormat } from '../types';
import { SeriesInfo } from './types';
export type SeriesWithKey = uPlot.Series & {
    key: string;
};
/**
 *
 * @param field
 * @param seriesIdx starts at "1"
 * @param config
 * @param show whether or not the series will be shown
 * @returns
 */
export declare const generateSeries: (field: string, seriesIdx: number, config?: SeriesConfig[keyof SeriesConfig], show?: boolean) => SeriesWithOptionalStackingGroup;
export declare const mapDSToSeries: (fields: GenericDataSet["fields"], seriesConfig?: SeriesConfig, scaleConfig?: ScaleConfig, hiddenSeries?: string[]) => SeriesWithKey[];
export declare const getMaxRangeValue: (numberOfDatapoints: number, max: number, range?: AxisRange) => number;
export declare const isTimeSeriesData: (dataSet: DataSet | GenericDataSet) => boolean;
export declare const mapDSToScales: (seriesConfig?: SeriesConfig, scaleConfig?: ScaleConfig, range?: AxisRange, isTimeSeries?: boolean) => uPlot.Scales;
export declare const mapScalesToAxes: (xAxisResolution: number, theme: VizTheme, scaleConfig: ScaleConfig, locale: LocaleInfo, hideXAxis?: true, range?: AxisRange, isTimeSeries?: boolean, rawXaxisValues?: (string | number | null)[], timestampFormat?: TimestampFormat) => uPlot.Axis[];
export type SeriesWithOptionalStackingGroup = SeriesWithKey & {
    negY?: boolean;
    stacking?: {
        mode: 'none' | 'normal' | 'percent';
        group: string;
    };
};
/**
 * Stacks the data according to the series properties. Returns the transformed
 * stacked data to be used in the plot, and the band configurations that should
 * be provided to uPlot.
 *
 * Derived from: https://github.com/leeoniya/uPlot/blob/24663e48a0db7247692dbf61280174fa71b17980/demos/stack.js
 */
export declare function stackData(series: SeriesWithOptionalStackingGroup[], _data: uPlot.AlignedData): {
    data: uPlot.AlignedData;
    bands?: uPlot.Band[];
};
export declare function getSeriesKey(seriesIndex?: number, allSeries?: SeriesInfo[]): string;
