import { type Point2D, type Vec2 } from '../../math'; import type { AxisRanges, InitialRanges, ScaleType, Y2SyncConfig, Y2SyncMode } from './types'; export declare function get_relative_coords(evt: MouseEvent, element?: EventTarget | null): Point2D | null; export declare function closest_data_idx(event: Event, attr: string, root?: Element | null): number | null; export declare function normalize_y2_sync(sync: Y2SyncConfig | Y2SyncMode | undefined): Y2SyncConfig; export declare function sync_y2_range(y1_range: Vec2, y2_base_range: Vec2, sync: Y2SyncConfig): Vec2; export declare const snapshot_ranges: ({ x, x2, y, y2 }: AxisRanges) => InitialRanges; export declare function pan_range_by_pixels(range: Vec2, pixel_delta: number, pixel_span: number, scale_type?: ScaleType): Vec2; export declare function zoom_range_by_factor(range: Vec2, factor: number, scale_type?: ScaleType): Vec2; export declare const to_epoch_num: (val: number | Date) => number; export declare function remove_drag_listeners(move_handlers: ((evt: MouseEvent) => void)[], up_handlers: ((evt: MouseEvent) => void)[]): void; export declare const sorted_range: (a: number, b: number) => Vec2; export declare function invert_rect_range(scale: { invert: (px: number) => number | Date; }, a_px: number, b_px: number): Vec2 | null; export declare const vec2_equal: (a: Vec2, b: Vec2) => boolean; export declare const axis_ranges_equal: (a: AxisRanges, b: AxisRanges) => boolean; type AxisRangeOverride = { range?: [number | null, number | null]; }; type AutoRanges = { x: readonly number[]; x2: readonly number[]; y: readonly number[]; y2: readonly number[]; }; export declare function resolve_axis_ranges(axes: { x: AxisRangeOverride; x2: AxisRangeOverride; y: AxisRangeOverride; y2: AxisRangeOverride; }, auto: AutoRanges): AxisRanges | null; export declare const PINCH_ZOOM_THRESHOLD = 0.1; export declare const MIN_TOUCH_DISTANCE_PIXELS = 10; export declare function expand_range_if_needed(current: Vec2, new_range: Vec2): { range: Vec2; changed: boolean; }; export {};