import type { Point2D } from '../../../math'; import type { FacetAxis } from '../facets'; import type { PlotScaleFn } from '../scales'; import type { DataSeries, LabelPlacementConfig, LabelPlacementWeights } from '../types'; export interface Rect { x: number; y: number; w: number; h: number; } interface PlotBounds { min_x: number; min_y: number; max_x: number; max_y: number; } export interface AnchorInfo { x: number; y: number; radius: number; } export interface LabelState extends Rect { anchor_idx: number; } export interface LabelSize { width: number; height: number; } interface LeaderLineSegment { x1: number; y1: number; x2: number; y2: number; } interface LeaderLineOptions { point: Point2D; point_radius: number; label_center: Point2D; label_size: LabelSize; min_length?: number; label_padding?: 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[]; type NeighborIndex = ReturnType; export declare function create_neighbor_index(anchors: AnchorInfo[]): { candidates: Int32Array; widen: (label: LabelState) => void; reset(labels: LabelState[]): void; collect(min_x: number, max_x: number, min_y: number, max_y: number): number; }; export declare function compute_delta_energy(labels: LabelState[], anchors: AnchorInfo[], changed_idx: number, old_state: LabelState, new_state: LabelState, weights: Required, bounds: PlotBounds, neighbors: NeighborIndex): number; export declare function compute_label_positions(filtered_series: DataSeries[], config: LabelPlacementConfig, scales: Record, bounds: { width: number; height: number; pad: { t: number; b: number; l: number; r: number; }; }, warm_start?: Map): Record; export {};