import { Column } from '../models/Column'; export interface IndexRange { first: number; /** Inclusive. `last < first` means the range is empty. */ last: number; } /** * Maps between pixels and row/column indices. * * Rows use a uniform height, so row math is O(1) and scales to millions of rows * without allocating a per-row array. Columns have individual widths, so their * left edges are kept as a cumulative array and located with binary search. */ export declare class LayoutEngine { private _rowCount; private rowHeight; private colLefts; constructor(rowCount: number, rowHeight: number, columns: Column[]); get rowCount(): number; get colCount(): number; get totalHeight(): number; get totalWidth(): number; getRowTop(row: number): number; getRowHeight(_row: number): number; getColLeft(col: number): number; getColWidth(col: number): number; /** Total width of the first `count` columns (the frozen band). */ frozenColsWidth(count: number): number; /** Total height of the first `count` rows (the frozen band). */ frozenRowsHeight(count: number): number; getVisibleRows(scrollTop: number, viewportHeight: number): IndexRange; getVisibleCols(scrollLeft: number, viewportWidth: number): IndexRange; rowAtY(y: number): number; colAtX(x: number): number; setRowCount(rowCount: number): void; setColumns(columns: Column[]): void; }