import type { PlotLayout } from "../layout/plot-layout"; import { type ZoomController } from "./zoom-controller"; /** * Resolver that maps a cursor position to `{ controller, layout }` — * returns `null` when the cursor is not inside any facet. In * independent-zoom mode the facet under the cursor owns its events; in * shared-zoom mode the resolver always returns the same controller for * every plot rect in the grid. */ export interface ZoomTarget { controller: ZoomController; layout: PlotLayout; } /** * Apply a wheel-zoom delta to the resolved target. The worker * dispatches interaction events forwarded from the host's * `RawEventForwarder` and calls this directly. */ export declare function applyWheel(target: ZoomTarget, mouseX: number, mouseY: number, deltaY: number): void; /** * Apply a drag-pan delta to the resolved target. Exported for the * same reason as {@link applyWheel}: worker-mode interaction * dispatch reuses the math without owning DOM listeners. */ export declare function applyPan(target: ZoomTarget, dx: number, dy: number): void;