import type { RefObject } from 'react'; export type CanvasNavigationOptions = { panButton?: 1 | 2; panModifier?: 'none' | 'shift' | 'alt' | 'ctrl'; wheelZoom?: boolean; wheelModifier?: 'none' | 'shift' | 'alt' | 'ctrl'; doubleClickZoom?: boolean; doubleClickZoomFactor?: number; doubleClickZoomOut?: boolean; doubleClickZoomOutModifier?: 'none' | 'shift' | 'alt' | 'ctrl'; doubleClickZoomOutFactor?: number; keyboardPan?: boolean /** Enable keyboard panning with arrows/WASD */; keyboardPanStep?: number /** Base step in screen pixels per key press */; keyboardPanSlowStep?: number /** Slow step in screen pixels when holding Shift */; /** Overall wheel behavior policy. 'auto' enables modern UX: mouse pan (Y/Shift->X), Ctrl+wheel zoom, touchpad pan and pinch zoom. 'zoom' preserves legacy behavior where wheel zooms by default. 'pan' forces wheel to pan, zoom only with Ctrl+wheel/pinch. */ wheelBehavior?: 'auto' | 'zoom' | 'pan'; /** Touchpad-only zoom sensitivities (pixels-based deltas). If omitted, defaults to 0.0015. */ touchpadZoomSensitivityIn?: number; touchpadZoomSensitivityOut?: number; /** Mouse Ctrl+wheel zoom sensitivities. If omitted, defaults to 0.0015. */ mouseZoomSensitivityIn?: number; mouseZoomSensitivityOut?: number; /** Scale multiplier for touchpad two-finger wheel panning (screen-space deltas). Default: 1 */ touchpadPanScale?: number; /** Scale multiplier for mouse wheel panning (screen-space deltas, incl. Shift+wheel horizontal). Default: 1 */ mousePanScale?: number; }; /** * Attach interactive navigation (pan/zoom) to a Canvas root element. * Usage: * const ref = useRef(null); * useCanvasNavigation(ref, { panButton: 1 }); // pan with middle button (or 2 for right) */ export declare function useCanvasNavigation(ref: RefObject, options?: CanvasNavigationOptions): void;