/**
 * Input lanes for the viewer — each independently disableable:
 * - wheel: Ctrl/⌘-wheel and pinch (`ctrlKey` wheel) zoom to cursor,
 *   plain wheel pans.
 * - drag: pointer-drag pans.
 * - double-click: zoom step at the cursor.
 * - keyboard: `+`/`-`/`0`, arrows, PgUp/PgDn, Home/End.
 */
export interface InputOptions {
    wheelZoom?: boolean;
    dragPan?: boolean;
    doubleClickZoom?: boolean;
    keyboard?: boolean;
}
export interface InputSink {
    zoomAt(factor: number, anchor: {
        x: number;
        y: number;
    }): void;
    panBy(dx: number, dy: number): void;
    zoomStep(direction: 1 | -1, anchor?: {
        x: number;
        y: number;
    }): void;
    fit(): void;
    pageStep(direction: 1 | -1): void;
    home(): void;
    end(): void;
}
/** Attach listeners; returns the detach function. */
export declare function attachInput(canvas: HTMLCanvasElement, options: InputOptions, sink: InputSink): () => void;
