import * as d3 from "d3";
export declare type Point = [number, number];
export declare type SvgSelection = d3.Selection<SVGSVGElement, unknown, HTMLElement, undefined>;
export declare const formatterDateDay: (timestamp: d3.NumberValue) => string;
export declare const formatterDateMonth: (timestamp: d3.NumberValue) => string;
export declare const toHex: (s: string) => string;
export declare const getTooltipClass: (graph: string, serie: string) => string;
export declare const bisectLeft: (array: ArrayLike<any>, x: any, lo?: number | undefined, hi?: number | undefined) => number;
export declare const getClosest: ({ x, xScale, serie, }: {
    x: number;
    serie: Point[];
    xScale: d3.ScaleLinear<number, number, never>;
}) => Point;
export declare const getClosestAddon: ({ x, xScale, serie, additionalDataSerie, }: {
    x: number;
    serie: Point[];
    xScale: d3.ScaleLinear<number, number, never>;
    additionalDataSerie: any[];
}) => any;
export declare const getExtents: (series: Point[][]) => {
    minX: number | undefined;
    maxX: number | undefined;
    minY: number | undefined;
    maxY: number | undefined;
};
export declare const drawXAxis: ({ svg, xScale, height, margin, showGrid, ticksX, formatterX, scaleFonts, }: {
    svg: SvgSelection;
    xScale: d3.ScaleLinear<number, number, never>;
    height: number;
    margin: {
        top: number;
        right: number;
        bottom: number;
        left: number;
    };
    showGrid: {
        horizontal: boolean;
        vertical: boolean;
    };
    ticksX: number;
    formatterX: (d: d3.NumberValue) => string;
    scaleFonts: {
        fontSize?: number;
        fontFamily?: string;
    };
}) => void;
export declare const drawYAxis: ({ svg, yScaleLeft, yScaleRight, width, margin, showGrid, ticksY, formatterYLeft, formatterYRight, scaleFonts, }: {
    svg: SvgSelection;
    yScaleLeft: d3.ScaleLinear<number, number, never> | null;
    yScaleRight: d3.ScaleLinear<number, number, never> | null;
    width: number;
    margin: {
        top: number;
        right: number;
        bottom: number;
        left: number;
    };
    showGrid: {
        horizontal: boolean;
        vertical: boolean;
    };
    ticksY: number;
    formatterYLeft: (d: d3.NumberValue) => string;
    formatterYRight: (d: d3.NumberValue) => string;
    scaleFonts: {
        fontSize?: number;
        fontFamily?: string;
    };
}) => void;
export declare const drawGradient: ({ svg, color, serie, xScale, yScale, }: {
    svg: SvgSelection;
    color: string;
    serie: Point[];
    xScale: d3.ScaleLinear<number, number, never>;
    yScale: d3.ScaleLinear<number, number, never>;
}) => void;
export declare const drawLine: ({ svg, color, serie, xScale, yScale, lineWidth, }: {
    svg: SvgSelection;
    color: string;
    serie: Point[];
    xScale: d3.ScaleLinear<number, number, never>;
    yScale: d3.ScaleLinear<number, number, never>;
    lineWidth: number;
}) => void;
export declare const drawFocus: ({ svg, color, }: {
    svg: SvgSelection;
    color: string;
}) => d3.Selection<SVGGElement, unknown, HTMLElement, undefined>;
export declare const highlightPoint: (x: number, y: number) => void;
export interface Tooltip {
    tooltip: d3.Selection<d3.BaseType, unknown, HTMLElement, any>;
    point: Point;
    additionalData?: any;
    color: string;
    yScale: d3.ScaleLinear<number, number, never>;
}
export declare const showTooltips: ({ x, tooltips, xScale, width, tooltipFormatter, }: {
    tooltips: Tooltip[];
    x: number;
    xScale: d3.ScaleLinear<number, number, never>;
    width: number;
    tooltipFormatter?: ((tooltip: Tooltip) => string) | undefined;
}) => void;
export declare const showFocus: ({ focus, xScale, yScale, closest, }: {
    focus: d3.Selection<SVGGElement, unknown, HTMLElement, undefined>;
    xScale: d3.ScaleLinear<number, number, never>;
    yScale: d3.ScaleLinear<number, number, never>;
    closest: Point;
}) => void;
export declare const hideFocus: (focus: d3.Selection<SVGGElement, unknown, HTMLElement, undefined>) => void;
export declare const hideTooltip: (tooltip: d3.Selection<d3.BaseType, unknown, HTMLElement, any>) => void;
export declare const groupTooltipPoints: (points: {
    tooltip: d3.Selection<d3.BaseType, unknown, HTMLElement, any>;
    point: Point;
    color: string;
    yScale: d3.ScaleLinear<number, number, never>;
}[]) => {
    tooltip: d3.Selection<d3.BaseType, unknown, HTMLElement, any>;
    point: Point;
    color: string;
    yScale: d3.ScaleLinear<number, number, never>;
}[][];
