import { ReactElement, ReactNode } from 'react';
import { CurveType } from 'recharts/types/shape/Curve';
import { ChartHeaderKPI } from '../../types';
import { Chart } from './Chart';
export declare type Variant = 'area' | 'bar';
export declare type ChartDataKey<T> = Exclude<keyof T, symbol> | ((key: T) => number | string);
export declare type DropdownItem = {
    label: string;
    value: string;
};
export declare type ChartProps<T extends object = any> = {
    variant?: Variant;
    data: T[];
    lineDataKey?: ChartDataKey<T>;
    filterKey?: ChartDataKey<T>;
    tooltip: ReactElement | ((props: Chart.TooltipProps<number | string | (string | number)[], string | number>) => ReactNode);
    loading: boolean;
    timeRangeOpts?: string[];
    showTimeWarning?: {
        title: string;
        text: string;
    };
    dropDownOptions?: DropdownItem[];
    dropDownValue?: string;
    onDropDownSelect?: (val: string) => void;
    headerLabel?: string;
    addOn?: ReactNode;
    defTimeRange?: string;
    xAxisDataKey?: ChartDataKey<T>;
    displayXAxis?: boolean;
    yAxisDataKey?: ChartDataKey<T>;
    /** @deprecated This prop is ignored since the design requires the interval to be `preserveStart` if there is a `yAxisLabel` (so the label is rendered instead of the last tick), or `preserveStartEnd` otherwise. */
    YAxisInterval?: number;
    /** @deprecated This prop is ignored since the Y axis labels are rendered inside the chart (no margin). */
    YAxisTickMargin?: number;
    displayYAxis?: boolean;
    displayHeader?: boolean;
    areaDataKey?: string;
    /** @deprecated This prop is ignored since the component is responsive (fills its container's width). */
    chartWidth?: number;
    chartHeight?: number;
    chartKPIs?: ChartHeaderKPI<T>[];
    selectedKPI?: ChartHeaderKPI<T> | null;
    yAxisDomain?: Chart.AxisDomain;
    sortFn?: (a: T, b: T, field: ChartDataKey<T>) => number;
    handleChartKPISelected?: (kpi: ChartHeaderKPI<T>) => void;
    formatAxisX?: (val: any) => ReactNode;
    formatAxisY?: (val: any) => ReactNode;
    curveType?: CurveType;
    xAxisReversed?: boolean;
    yAxisReversed?: boolean;
    showGradient?: boolean;
    onTimeRangeChange?: (val: string) => void;
    average?: number;
    yAxisLabel?: string;
};
