import React from 'react';
import { CursorState } from './cursorPlugin';
import type { PlotUtilities } from './renderers/types';
import type { ScaleConfig, SeriesConfig, MarkAnnotation, GenericDataSet } from './types';
type Dimensions = {
    width?: number;
    height?: number;
};
type OnSeriesClick = (field: string, ref: React.Ref<HTMLElement>) => void;
type OnSeriesHover = (field: string | null) => void;
export type LegendComponentProps = {
    cursorState?: CursorState;
    data: GenericDataSet;
    plotUtilities?: PlotUtilities;
    seriesConfig?: SeriesConfig;
    scaleConfig?: ScaleConfig;
    hideSeriesValue?: boolean;
    onSeriesClick: OnSeriesClick;
    onSeriesHover: OnSeriesHover;
    seriesDataAccessor?: (seriesIndex: number) => string | number | null;
    title?: string;
    reversedOrder?: boolean;
    fontSize?: number;
    marks?: MarkAnnotation[];
};
export type LegendComponent<AdditionalProps = Record<string, unknown>> = React.ComponentType<LegendComponentProps & AdditionalProps>;
export type Legend = {
    component: LegendComponent;
    size: Dimensions;
    anchor: 'right' | 'bottom';
};
export declare const SideLegendComponent: LegendComponent<{
    width: number;
}>;
export declare const BottomLegendComponent: LegendComponent<{
    wrap?: boolean;
}>;
type SideLegendFactoryProps = {
    hideSeriesValue?: boolean;
    aggregateData?: (number | null)[];
    width?: number;
    fontSize?: number;
    title?: string;
    reversedOrder?: boolean;
};
export declare const SideLegendFactory: (props?: SideLegendFactoryProps) => Legend;
type BottomLegendFactoryProps = {
    hideSeriesValue?: boolean;
    aggregateData?: (number | null)[];
    wrap?: boolean;
    fontSize?: number;
    title?: string;
    reversedOrder?: boolean;
    height?: number;
};
export declare const BottomLegendFactory: (props?: BottomLegendFactoryProps) => Legend;
export declare const BottomLegend: Legend;
export declare const SideLegend: Legend;
export declare const LegendMap: {
    [key in Legend['anchor']]: Legend;
};
export {};
