import React, { ReactNode } from 'react';
import uPlot, { Plugin } from 'uplot';
import { Scale, Serie, XAxisDomain } from '../kit/internal/types';
import { UPlotPoint } from '../kit/internal/UPlot/types';
import { Options } from '../kit/internal/UPlot/UPlotChart';
import { ErrorHandler } from '../kit/utils/error';
import { Loadable } from '../kit/utils/loadable';
export declare const TRAINING_SERIES_COLOR = "#009BDE";
export declare const VALIDATION_SERIES_COLOR = "#F77B21";
/**
 * @typedef ChartProps {object}
 * Config for a single LineChart component.
 * @param {number} [focusedSeries] - Highlight one Serie's line and fade the others, given an index in the given series.
 * @param {number} [height=350] - Height in pixels.
 * @param {number} [key] - Fixed ID for changing chart div.
 * @param {Scale} [scale=Scale.Linear] - Linear or Log Scale for the y-axis.
 * @param {Serie[]} series - Array of valid series to plot onto the chart.
 * @param {boolean} [showLegend=false] - Display a custom legend below the chart with each series's color and name.
 * @param {string} [title] - Title for the chart.
 * @param {XAxisDomain} [xAxis=XAxisDomain.Batches] - Set the x-axis of the chart (example: batches, time).
 * @param {string} [xLabel] - Directly set label below the x-axis.
 * @param {Record<XAxisDomain, [number, number] | undefined>} [xRange] - Set a minimum and maximum x-value for each XAxisDomain, regardless of range of plotted data.
 * @param {string} [yLabel] - Directly set label left of the y-axis.
 */
interface ChartProps {
    focusedSeries?: number;
    height?: number;
    optionKey?: Options['key'];
    onPointClick?: (event: MouseEvent, point: UPlotPoint) => void;
    onPointFocus?: (point: UPlotPoint | undefined) => void;
    plugins?: Plugin[];
    scale?: Scale;
    series: Serie[] | Loadable<Serie[]>;
    showLegend?: boolean;
    title?: ReactNode;
    xAxis?: XAxisDomain;
    xLabel?: string;
    xRange?: Record<XAxisDomain, [number, number] | undefined>;
    yLabel?: string;
    yTickValues?: uPlot.Axis.Values;
}
interface LineChartProps extends ChartProps {
    handleError: ErrorHandler;
}
export declare const LineChart: React.FC<LineChartProps>;
export type ChartsProps = ChartProps[];
/**
 * @typedef GroupProps {object}
 * Config for a grid of LineCharts.
 * @param {ChartsProps} chartsProps - Provide series to plot on each chart, and any chart-specific config.
 * @param {XAxisDomain[]} [xAxisOptions] - A list of possible x-axes to select in a dropdown; examples: Batches, Time, Epoch.
 * @param {Scale} scale - Scale of chart, can be linear or log
 * @param {handleError} handleError - Error handler
 */
export interface GroupProps {
    chartsProps: ChartsProps | Loadable<ChartsProps>;
    onXAxisChange: (ax: XAxisDomain) => void;
    scale: Scale;
    setScale: React.Dispatch<React.SetStateAction<Scale>>;
    xAxis: XAxisDomain;
    handleError: ErrorHandler;
}
export declare const ChartGrid: React.FC<GroupProps>;
export default LineChart;
//# sourceMappingURL=LineChart.d.ts.map