import type { Vec2, Vec4 } from '../../math'; import type { RefLine, RefLineValue } from './types'; export type IndexedRefLine = RefLine & { idx: number; }; export declare const index_ref_lines: (ref_lines: RefLine[] | undefined) => IndexedRefLine[]; export interface RefLinesByZIndex { below_grid: IndexedRefLine[]; below_lines: IndexedRefLine[]; below_points: IndexedRefLine[]; above_all: IndexedRefLine[]; } export declare function group_ref_lines_by_z(lines: IndexedRefLine[]): RefLinesByZIndex; export declare function normalize_value(value: RefLineValue): number; export declare const normalize_point: (point: [RefLineValue, RefLineValue]) => Vec2; export declare function resolve_line_endpoints(ref_line: RefLine, bounds: { x_min: number; x_max: number; y_min: number; y_max: number; }, scales: { x_scale: (val: number) => number; x2_scale?: (val: number) => number; y_scale: (val: number) => number; y2_scale?: (val: number) => number; }): Vec4 | null; interface AnnotationPosition { x: number; y: number; text_anchor: `start` | `middle` | `end`; dominant_baseline: `auto` | `middle` | `hanging`; rotation?: number; } export declare function calculate_annotation_position(x1: number, y1: number, x2: number, y2: number, annotation: { position?: `start` | `center` | `end`; side?: `above` | `below` | `left` | `right`; offset?: { x?: number; y?: number; }; gap?: number; edge_padding?: number; rotate?: boolean; }): AnnotationPosition; export interface Scene3DParams { scene_x: number; scene_y: number; scene_z: number; x_range: Vec2; y_range: Vec2; z_range: Vec2; } export declare const span_or: (span: [number | null, number | null] | undefined, range: Vec2) => Vec2; export declare function normalize_to_scene(value: number, [min_val, max_val]: Vec2, scene_size: number): number; export declare function create_to_threejs(params: Scene3DParams): (user_x: number, user_y: number, user_z: number) => { x: number; y: number; z: number; }; export {};