export declare const MIN_ZOOM = 0.5; export declare const MAX_ZOOM = 5; export declare const ZOOM_STEP = 0.25; export interface ZoomPanResult { zoom: number; panX: number; panY: number; canZoomIn: boolean; canZoomOut: boolean; isZoomed: boolean; zoomIn: () => void; zoomOut: () => void; resetZoom: () => void; /** Translate by (dx, dy) screen pixels. */ pan: (dx: number, dy: number) => void; /** * Zoom by a multiplicative scale factor, anchored at a focal point. * focalX/focalY are in px relative to the container centre. */ zoomByScaleAtPoint: (scaleFactor: number, focalX: number, focalY: number) => void; /** * Zoom by an additive step delta, anchored at a focal point. * focalX/focalY are in px relative to the container centre. */ zoomByDeltaAtPoint: (delta: number, focalX: number, focalY: number) => void; /** * Simultaneously pan by (dx, dy) and zoom by a multiplicative scale factor, * anchored at a focal point. Used for 2-finger gestures where the midpoint * may translate while the fingers pinch. */ panAndZoomAtPoint: (dx: number, dy: number, scaleFactor: number, focalX: number, focalY: number) => void; } export declare function useZoomPan(): ZoomPanResult;