import type { Point2D, Vec2 } from '../../math'; import { type Rect } from './layout'; import type { AxisRanges, PanConfig, ScaleType } from './types'; type Axis = `x` | `x2` | `y` | `y2`; export type RectDragMode = `zoom` | `select`; interface PanZoomOptions { ranges: () => AxisRanges; scale_type: (axis: Axis) => ScaleType | undefined; plot_bounds: () => Rect; pan: () => PanConfig | undefined; set_range: (axis: Axis, range: Vec2) => void; svg: () => SVGElement | null; on_rect_zoom: (start: Point2D, current: Point2D) => void; on_rect_select?: (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 drag_mode: RectDragMode; readonly suppress_click: boolean; readonly is_panning: 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; on_window_blur: () => void; reset_view: () => void; destroy: () => void; }; export {};