import { Axes } from '../Axes/axes.js';
import { CartesianAxes } from '../index.js';
import { Visitor } from './visitor.js';
export declare enum MouseOverDirection {
    Horizontal = "horizontal",
    Vertical = "vertical"
}
interface MouseOverOptions {
    trace?: string[];
    numberFormatter?: (value: number, extent?: [number, number]) => string;
    direction?: MouseOverDirection;
}
export declare class MouseOver implements Visitor {
    private trace;
    private group;
    private axes;
    private mouseGroup;
    private readonly customNumberFormatter;
    private readonly direction;
    private isTouchLocked;
    private lastPointerType;
    private pendingMouse;
    private frameId;
    constructor(options?: MouseOverOptions);
    setTrace(trace: string[] | undefined): void;
    private directionStrategy;
    private resolvedTraces;
    private createMouseLinePath;
    private setLineVisibility;
    private setValueLabelVisibility;
    private updateGuideLineAndValue;
    private tooltipBaseX;
    private directionKeys;
    private pointerValue;
    private buildTooltipContent;
    private setChartsPointerState;
    private forEachActiveTraceChart;
    private collectTooltipSpans;
    private handlePointerMove;
    private handleTouchPointerDown;
    visit(axes: Axes): void;
    create(axes: CartesianAxes): void;
    private scheduleUpdate;
    private cancelScheduledUpdate;
    onPointerdown(event: PointerEvent): void;
    onPointerout(): void;
    onPointerover(): void;
    updateChartIndicators(mouse: [number, number]): void;
    update(mouse: [number, number]): void;
    updateXLine(xPos: number): void;
    updateXValue(xPos: number): void;
    updateYLine(yPos: number): void;
    updateYValue(yPos: number): void;
    updateTooltip(spanElements: HTMLSpanElement[], mouse: [number, number]): void;
    private getEdgeAwareTooltipPlacement;
    private xText;
    private yText;
    redraw(): void;
}
export {};
