import type { AxisConfig } from './types'; export type Sides = { t?: number; b?: number; l?: number; r?: number; }; export declare const LABEL_GAP_DEFAULT = 30; export declare function y2_axis_label_x(axis: AxisConfig, width: number, pad_r: number, max_tick_width: number): number; export declare const filter_padding: (padding: Partial | undefined | null, defaults: Required) => Required; export declare function measure_text_width(text: string, font?: string): number; export declare function measure_full_footprint(el: HTMLElement): { width: number; height: number; }; export interface AutoPaddingConfig { padding: Partial; default_padding: Required; x2_axis?: AxisConfig & { tick_values?: (string | number)[]; }; y_axis?: AxisConfig & { tick_values?: (string | number)[]; }; y2_axis?: AxisConfig & { tick_values?: (string | number)[]; }; label_gap?: number; } export declare const measure_max_tick_width: (ticks: (string | number)[], format?: string) => number; export declare const TICK_LABEL_HEIGHT = 16; export declare const AXIS_LABEL_HEIGHT = 20; export declare const calc_auto_padding: ({ padding, default_padding, x2_axis, y_axis, y2_axis, label_gap, }: AutoPaddingConfig) => Required; export declare function constrain_tooltip_position(cursor_x: number, cursor_y: number, tooltip_width: number, tooltip_height: number, viewport_width: number, viewport_height: number, options?: { offset?: number; offset_x?: number; offset_y?: number; }): { x: number; y: number; }; export interface Rect { x: number; y: number; width: number; height: number; } export declare const pad_rect: (rect: Rect, padding: number) => Rect; export declare const centered_rect: (center_x: number, top_y: number, width: number, height: number) => Rect; export declare const rect_within_rect: (rect: Rect, bounds: Rect) => boolean; export interface ElementPlacementConfig { plot_bounds: Rect; element_size: { width: number; height: number; }; element?: HTMLElement | null; axis_clearance?: number; exclude_rects?: Rect[]; points: { x: number; y: number; }[]; grid_resolution?: number; } export interface ElementPlacementResult { x: number; y: number; score: number; } export declare const rects_overlap: (r1: Rect, r2: Rect) => boolean; export declare function sample_series_obstacle_points(pixel_points: { x: number; y: number; }[], draws_line: boolean, step: number): { x: number; y: number; }[]; export declare function compute_element_placement(config: ElementPlacementConfig): ElementPlacementResult;