import type { Sheet, WorkbookLayout } from "./types.js"; import type { DrawingAnchor } from "./schema/DrawingAnchor.js"; export interface InteractHandle { destroy(): void; } export interface InteractOptions { getSheet(): Sheet; getLayout(): WorkbookLayout; zoom: { get(): number; set(value: number): void; }; colOverrides: Map; rowOverrides: Map; activeCell: { get(): { r: number; c: number; } | null; set(v: { r: number; c: number; } | null): void; }; selection?: { get(): Selection | null; set(v: Selection | null): void; }; selectedDrawing?: { get(): number | null; set(v: number | null): void; }; scrollContainer?: HTMLElement; getViewport?: () => { x: number; y: number; w: number; h: number; } | null; onPivotFilter?: (info: PivotFilterEvent) => void; onTableFilter?: (info: TableFilterEvent) => void; onValidationPick?: (info: ValidationPickEvent) => void; onEditStart?: (cell: { r: number; c: number; }, initialText: string | null) => void; onCopy?: (selection: Selection, isCut: boolean) => void; onPaste?: (target: { r: number; c: number; }) => void; onFill?: (source: Selection, target: Selection) => void; onClear?: (selection: Selection) => void; isPointModeActive?: () => boolean; onDrawingMoved?: (info: { index: number; prevAnchor: DrawingAnchor; anchor: DrawingAnchor; }) => void; onDrawingDelete?: (info: { index: number; }) => void; onPointModeRef?: (rangeRef: string, opts: { extend: boolean; }) => void; redraw(): void; } export interface PivotFilterEvent { pivot: string; field: string; axis: "row" | "column"; rect: { left: number; top: number; right: number; bottom: number; }; } export interface TableFilterEvent { field: string; columnOffset: number; rangeRef: string; rect: { left: number; top: number; right: number; bottom: number; }; } export interface ValidationPickEvent { r: number; c: number; options: string[]; rect: { left: number; top: number; right: number; bottom: number; }; } export interface Selection { r1: number; c1: number; r2: number; c2: number; } export declare function attachInteractivity(canvas: HTMLCanvasElement, opts: InteractOptions): InteractHandle;