import type { Point2D } from '../../../math'; import type { AxisConfig, DataSeries } from '../..'; import type { PlotScaleFn } from '../scales'; import type { LabelPlacementConfig, LabelPlacementWeights } from '../types'; export interface Rect { x: number; y: number; w: number; h: number; } export interface PlotBounds { min_x: number; min_y: number; max_x: number; max_y: number; } interface AnchorInfo { x: number; y: number; radius: number; } interface LabelState extends Rect { anchor_idx: number; } export interface LabelSize { width: number; height: number; } export interface LeaderLineSegment { x1: number; y1: number; x2: number; y2: number; } export interface LeaderLineOptions { point: Point2D; point_radius: number; label_center: Point2D; label_size: LabelSize; min_length?: number; label_padding?: number; } export declare function parse_font_size(size_str?: string): number; export declare function estimate_label_size(text: string, font_size_str?: string): LabelSize; export declare function rect_overlap_area(rect_a: Rect, rect_b: Rect): number; export declare function rect_circle_overlap(rect: Rect, cx: number, cy: number, radius: number): number; export declare function segments_intersect(ax1: number, ay1: number, ax2: number, ay2: number, bx1: number, by1: number, bx2: number, by2: number): boolean; export declare function segment_rect_intersects(sx1: number, sy1: number, sx2: number, sy2: number, rect: Rect): boolean; export declare function rect_out_of_bounds_area(rect: Rect, bounds: PlotBounds): number; export declare function label_leader_segment({ point, point_radius, label_center, label_size, min_length, label_padding, }: LeaderLineOptions): LeaderLineSegment | null; export declare function generate_candidates(ax: number, ay: number, point_radius: number, label_w: number, label_h: number, gap: number): Point2D[]; export declare function compute_delta_energy(labels: LabelState[], anchors: AnchorInfo[], changed_idx: number, old_state: LabelState, new_state: LabelState, weights: Required, bounds: PlotBounds): number; export declare function compute_label_positions(filtered_series: DataSeries[], config: LabelPlacementConfig, scales: { x_scale_fn: PlotScaleFn; y_scale_fn: PlotScaleFn; y2_scale_fn: PlotScaleFn; x_axis: AxisConfig; }, bounds: { width: number; height: number; pad: { t: number; b: number; l: number; r: number; }; }): Record; export {};