import { CellAddress, CellRange } from '../models/Cell'; /** * Selection behavior. `None` disables selection; `Cell`/`Row`/`Column` select a * single item; the `*Range` variants extend to a contiguous block. */ export type SelectionMode = 'None' | 'Cell' | 'CellRange' | 'Row' | 'RowRange' | 'Column' | 'ColumnRange'; export interface GridBounds { rowCount: number; colCount: number; } /** * Tracks the active cell and the anchor it extends from. The highlighted * rectangle is derived from those plus the mode, so the active cell keeps its * real column even in Row mode (where the whole row is highlighted). */ export declare class SelectionModel { private mode; private active; private anchor; constructor(mode?: SelectionMode); getMode(): SelectionMode; setMode(mode: SelectionMode): boolean; getActive(): CellAddress | null; /** The highlighted rectangle for the current mode, or null if nothing is selected. */ getRange(bounds: GridBounds): CellRange | null; /** Move the active cell. With `extend` (and a range mode) the anchor stays put. */ moveTo(cell: CellAddress, extend: boolean): boolean; clear(): boolean; }