import type { WorkSpreadsheetSheet, WorkSpreadsheetTable, WorkSpreadsheetTableColumn, WorkSpreadsheetTableTotalsFunction } from '../work-types'; export declare const MAX_SPREADSHEET_TABLE_TOTALS_FORMULA_LENGTH = 8192; export declare const MAX_SPREADSHEET_TABLE_TOTALS_LABEL_LENGTH = 255; export declare const DEFAULT_SPREADSHEET_TABLE_TOTALS_LABEL = "Total"; /** The closed function set exposed by the Table Design totals menu. */ export declare const SPREADSHEET_TABLE_TOTALS_FUNCTIONS: readonly ["sum", "average", "count", "countNums", "max", "min", "stdDev", "stdDevP", "var", "varP", "custom"]; export interface SpreadsheetTableTotalsColumnPatch { totalsFormula?: string | null; totalsFunction?: WorkSpreadsheetTableTotalsFunction | null; totalsLabel?: string | null; } export declare function spreadsheetTableTotalsFunctionLabel(value: WorkSpreadsheetTableTotalsFunction | undefined): string; export declare function normalizeSpreadsheetTableTotalsFunction(value: unknown): WorkSpreadsheetTableTotalsFunction | undefined; /** Normalize a table totals formula to the editable leading-equals form. */ export declare function normalizeSpreadsheetTableTotalsFormula(value: unknown): string | undefined; export declare function normalizeSpreadsheetTableTotalsLabel(value: unknown): string | undefined; export declare function spreadsheetTableTotalsFunctionFromOoxml(value: unknown): WorkSpreadsheetTableTotalsFunction | undefined; export declare function spreadsheetTableTotalsFunctionToOoxml(value: WorkSpreadsheetTableTotalsFunction | undefined): string | undefined; /** * Returns the formula that should be placed in one totals-row cell. Native * aggregate functions use SUBTOTAL so filtered-out rows stay excluded; a * custom rule uses its explicit formula. */ export declare function spreadsheetTableTotalsFormula(table: WorkSpreadsheetTable, columnOffset: number): string | undefined; export declare function spreadsheetTableTotalsColumnPatch(columns: readonly WorkSpreadsheetTableColumn[], patches: Readonly> | readonly (SpreadsheetTableTotalsColumnPatch | null | undefined)[] | undefined): WorkSpreadsheetTableColumn[] | null; /** Apply the native default label used when a totals row is first enabled. */ export declare function withDefaultSpreadsheetTableTotalsLabel(columns: readonly WorkSpreadsheetTableColumn[], totalsRow: boolean): WorkSpreadsheetTableColumn[]; /** True when a proposed totals row would overwrite a populated cell. */ export declare function spreadsheetTableTotalsRowHasContent(sheet: WorkSpreadsheetSheet, table: WorkSpreadsheetTable, row?: number): boolean; /** * Synchronize totals-row cells after a table metadata change. Explicitly * changed column metadata owns the target cell; untouched manual cells remain * authoritative. The helper works with Fortune's dense and sparse forms. */ export declare function synchronizeSpreadsheetTableTotalsRow(sheet: WorkSpreadsheetSheet, previousTable: WorkSpreadsheetTable | undefined, nextTable: WorkSpreadsheetTable, options?: { force?: boolean; }): WorkSpreadsheetSheet; /** Reconcile metadata after a user edits a totals-row cell directly. */ export declare function reconcileSpreadsheetTableTotalsColumns(sheet: WorkSpreadsheetSheet, table: WorkSpreadsheetTable, editedOffsets?: ReadonlySet): WorkSpreadsheetTableColumn[];