import type { Selection } from '@fortune-sheet/core'; import type { WorkSpreadsheetContent, WorkSpreadsheetSheet, WorkSpreadsheetTable, WorkSpreadsheetTableStyle } from '../work-types'; import { type SpreadsheetCellRange } from './spreadsheet-cell-range'; import { type SpreadsheetTableTotalsColumnPatch } from './spreadsheet-table-totals'; export { MAX_SPREADSHEET_TABLE_CELLS } from './spreadsheet-table-limits'; export interface SpreadsheetTableTarget { sheetId: string; selection: Selection; } export interface SpreadsheetTableDialogValue { headerRow: boolean; rangeReference: string; totalsRow?: boolean; } export interface SpreadsheetTableDialogSource { name: string; range: SpreadsheetCellRange; rangeReference: string; sheetId: string; sheetName: string; value: SpreadsheetTableDialogValue; } export interface SpreadsheetTableRequest { headerRow: boolean; name: string; range: SpreadsheetCellRange; sheetId: string; style?: WorkSpreadsheetTableStyle; /** Create the table with a native totals row appended to the range. */ totalsRow?: boolean; /** Initial per-column totals metadata, keyed by zero-based table offset. */ totalsColumns?: Readonly> | readonly (SpreadsheetTableTotalsColumnPatch | null | undefined)[]; } export type SpreadsheetTableValidation = { columns: string[]; name: string; ok: true; range: SpreadsheetCellRange; sheet: WorkSpreadsheetSheet; } | { code: SpreadsheetTableErrorCode; message: string; ok: false; }; export type SpreadsheetTableErrorCode = 'auto-filter-overlap' | 'invalid-column-name' | 'invalid-name' | 'invalid-range' | 'invalid-style' | 'invalid-totals' | 'merged-range' | 'name-conflict' | 'out-of-bounds' | 'protected-range' | 'pivot-table' | 'range-too-large' | 'sheet-not-found' | 'table-overlap' | 'totals-row-content'; export interface SpreadsheetTableDesignPatch { name?: string; showColumnStripes?: boolean; showFirstColumn?: boolean; showLastColumn?: boolean; showRowStripes?: boolean; style?: WorkSpreadsheetTableStyle; /** Toggle the native totals row. Enabling appends one row to the table. */ totalsRow?: boolean; /** Update per-column totals function, label, or custom formula. */ totalsColumns?: Readonly> | readonly (SpreadsheetTableTotalsColumnPatch | null | undefined)[]; } export declare function createSpreadsheetTableDialogSource(content: WorkSpreadsheetContent, target: SpreadsheetTableTarget): SpreadsheetTableDialogSource | null; export declare function spreadsheetTableRangeFromText(value: string): SpreadsheetCellRange | null; export declare function validateSpreadsheetTableRequest(content: WorkSpreadsheetContent, request: SpreadsheetTableRequest): SpreadsheetTableValidation; export declare function applySpreadsheetTable(content: WorkSpreadsheetContent, request: SpreadsheetTableRequest): WorkSpreadsheetContent | null; export declare function updateSpreadsheetTable(content: WorkSpreadsheetContent, sheetId: string, tableId: string, patch: SpreadsheetTableDesignPatch): WorkSpreadsheetContent | null; export declare function convertSpreadsheetTableToRange(content: WorkSpreadsheetContent, sheetId: string, tableId: string): WorkSpreadsheetContent | null; export declare function spreadsheetTableAtCell(sheet: WorkSpreadsheetSheet | undefined, row: number, column: number): WorkSpreadsheetTable | null; export declare function spreadsheetTableFailureMessage(content: WorkSpreadsheetContent, request: SpreadsheetTableRequest): string | null;