/** * Options for pan and zoom behavior */ interface PanZoomOptions { /** Enable pan and zoom interactions */ enablePanZoom?: boolean; /** Which axes can be zoomed */ zoomMode?: 'x' | 'y' | 'both'; /** Function to clamp domain within bounds */ clampDomain: (d: [number, number], base: [number, number]) => [number, number]; /** Base x-axis domain */ baseX: [number, number]; /** Base y-axis domain */ baseY: [number, number]; /** Minimum zoom level */ minZoom?: number; /** Step factor for wheel zoom (default 0.1) */ wheelZoomStep?: number; /** Invert pinch zoom direction */ invertPinchZoom?: boolean; /** Invert wheel zoom direction */ invertWheelZoom?: boolean; } /** * Current pan/zoom state */ interface PanZoomState { /** Current x-axis domain */ xDomain: [number, number]; /** Current y-axis domain */ yDomain: [number, number]; } /** * Generic pan + pinch + wheel domain math extracted from LineChart. * Returns helpers for gesture events; caller applies resulting domains to state. * @param state - Current pan/zoom state * @param setState - State update function * @param opts - Pan/zoom options * @returns Object with gesture handlers */ export declare const usePanZoom: (state: PanZoomState, setState: (next: Partial) => void, opts: PanZoomOptions) => { startPan: (x: number, y: number) => void; updatePan: (x: number, y: number, plotWidth: number, plotHeight: number) => void; endPan: () => void; startPinch: (distance: number) => void; updatePinch: (distance: number) => void; endPinch: () => void; wheelZoom: (direction: number, anchorXRatio: number, anchorYRatio: number) => void; }; export {};