import React from 'react';
import { ScaleBand, ScaleLinear, ScalePoint } from '@visx/vendor/d3-scale';
import { ChartDataDefinition, ConditionalFormattingRule, ShapeDefinition } from '../../../../../shared-logic/src/ChartsV2/types';
import { ApproxAxisLabelCountWithAllOptions } from '../../../../../shared-logic/src/Component/types';
import { DataType } from '../../../../../shared-logic/src/Field/types';
import { LineChartRepresentation, LineStyles } from '../../../../../shared-logic/src/LineChartV2/types';
import { Result } from '../../../../../shared-logic/src/Result/types';
import { ChartTheme } from '../../../types';
import { ComputeChartLayoutArgs, LayoutPassOutput } from '../../utils/layout/sharedLayout.types';
declare type LineChartXScale = ScalePoint<string> | ScalePoint<boolean> | ScaleBand<Date> | ScaleBand<number>;
export declare type LineLabelBounds = {
    left: number;
    right: number;
    top: number;
    bottom: number;
};
export declare type LineLabelColorResolver = (args: {
    x: number;
    y: number;
    title: string;
    fontSize: number;
    yKey: string;
    dataIndex: number;
    chartData: ChartDataDefinition;
}) => string | undefined;
export declare const getEstimatedLineLabelBounds: (x: number, y: number, title: string, fontSize: number) => LineLabelBounds;
export declare type LineChartProps = {
    width: number;
    height: number;
    chart: LineChartRepresentation;
    theme?: ChartTheme;
    options: {
        lineCurve: 'natural' | 'straight' | 'step' | 'stepBefore' | 'stepAfter' | 'dotted';
        showRoundedTotal: boolean;
        showLegend: boolean;
        showLabels: boolean;
        removeStroke: boolean;
        axis: {
            showXAxisLabels: boolean;
            showYAxisLabels: boolean;
        };
    };
    isDualAxisEnabled: boolean;
    uniqueId?: string;
    approxXAxisLabelCount: ApproxAxisLabelCountWithAllOptions;
    xKeyField?: Result.Field;
};
export declare const computeLineChartLayout: ({ chart, width, height, showYAxisLabels, hasLeftTitle, hasBottomTitle, isDualAxisEnabled, hasDualYAxisTitle, approxXAxisLabelCount, xKeyField, layoutAdjustments, theme, }: ComputeChartLayoutArgs<LineChartRepresentation>) => LayoutPassOutput<LineChartRepresentation, {
    labelRotationData: LineChartRepresentation['x']['labelRotationData'];
}>;
export declare const LineChart: ({ chart, options, theme, width, height, isDualAxisEnabled, uniqueId, approxXAxisLabelCount, xKeyField, }: LineChartProps) => JSX.Element;
export declare const Lines: React.NamedExoticComponent<{
    yKeys: string[];
    yDualKeys: string[];
    lines: ShapeDefinition<LineStyles>[];
    conditionalFormattingRules: ConditionalFormattingRule[];
    curve: any;
    data: ChartDataDefinition[];
    visibleYKeys: string[];
    xScaleKey: string;
    xScaleDataType: DataType;
    xScale: LineChartXScale;
    innerWidth: number;
    yScale: ScaleLinear<number, number, never>;
    yDualScale: ScaleLinear<number, number, never>;
    innerHeight: number;
    showLabels: boolean;
    labelDictionary?: {
        [key: string]: string;
    } | undefined;
    dataLabelFontSize?: number | undefined;
    labelExclusionBounds?: LineLabelBounds[] | undefined;
    labelColorResolver?: LineLabelColorResolver | undefined;
}>;
export {};
