/** * LombokTableSheet — core data model. * Deliberately dependency-free and free of JS-only tricks so it can be * mechanically ported to PHP / Go / Rust later (see ARCHITECTURE.md §2.2). */ export type CellValue = string | number | boolean | null; export type CellType = 'string' | 'number' | 'boolean' | 'date' | 'formula' | 'empty'; export interface Cell { value: CellValue; formula?: string; type: CellType; styleRef?: string; } export interface CellRef { row: number; col: number; } export interface Merge { from: CellRef; to: CellRef; } export type ColumnType = 'string' | 'number' | 'boolean' | 'date'; export declare class Sheet { name: string; rowCount: number; colCount: number; merges: Merge[]; colTypes: Record; private cells; constructor(name: string, rowCount?: number, colCount?: number); private key; getCell(row: number, col: number): Cell; setCell(row: number, col: number, cell: Cell): void; setValue(row: number, col: number, value: CellValue): void; /** Explicitly set rowCount/colCount, including shrinking them. Used by the * transaction layer to restore exact prior dimensions on undo — normal * editing should never need this, since setCell only ever grows the sheet. */ resize(rowCount: number, colCount: number): void; iterCells(): IterableIterator<[CellRef, Cell]>; toRows(): CellValue[][]; clone(): Sheet; } export interface StyleTable { [ref: string]: Record; } export declare class Workbook { sheets: Sheet[]; styles: StyleTable; locale: string; meta: { createdWith: string; version: string; }; constructor(locale?: string); addSheet(sheet: Sheet): void; sheet(name: string): Sheet | undefined; static fromRows(rows: CellValue[][], sheetName?: string, locale?: string): Workbook; }