import type { Point2D, Vec2 } from '../../math'; import type { AxisRanges, PanConfig, ScaleType } from './types'; type Axis = `x` | `x2` | `y` | `y2`; export interface PanZoomOptions { ranges: () => AxisRanges; scale_type: (axis: Axis) => ScaleType | undefined; plot_dims: () => { width: number; height: number; }; pan: () => PanConfig | undefined; set_range: (axis: Axis, range: Vec2) => void; svg: () => SVGElement | null; on_rect_zoom: (start: Point2D, current: Point2D) => void; on_reset: () => void; on_drag_move?: (coords: Point2D, inside_svg: boolean) => void; } export declare function create_pan_zoom(opts: PanZoomOptions): { readonly drag_start: Point2D | null; readonly drag_current: Point2D | null; readonly is_pan_dragging: boolean; readonly cursor: string; set_focused: (focused: boolean) => void; on_mouse_down: (evt: MouseEvent) => void; on_wheel: (evt: WheelEvent) => void; on_touch_start: (evt: TouchEvent) => void; on_touch_move: (evt: TouchEvent) => void; on_touch_end: () => void; on_key_down: (evt: KeyboardEvent) => void; on_window_key_down: (evt: KeyboardEvent) => void; on_window_key_up: (evt: KeyboardEvent) => void; reset_view: () => void; destroy: () => void; }; export {};