/**
* Parse / serialize SpreadsheetML worksheet part (`CT_Worksheet` / `sheetData`).
*
* Citations:
* - `CT_Worksheet`, `CT_SheetData`, `CT_Row`, `CT_Cell`, `ST_CellType`:
* `specs/schemas/xsd/OfficeOpenXML-XMLSchema-Transitional/sml.xsd`
* - docs/specs/worksheet-cells.md
* - docs/specs/conditional-formatting.md (`conditionalFormatting` after mergeCells /
* phoneticPr, before dataValidations)
* - docs/specs/data-validations.md (`dataValidations` after CF, before hyperlinks)
* - docs/specs/hyperlinks.md (`hyperlinks` after dataValidations, before printOptions)
* - docs/specs/freeze-panes.md (`sheetViews` before sheetData)
* - docs/specs/column-properties.md (`cols` after sheetFormatPr, before sheetData)
* - docs/specs/standard-height.md (`sheetFormatPr` after sheetViews, before cols)
* - docs/specs/page-setup.md (`printOptions` / `pageMargins` / `pageSetup` after hyperlinks)
* - docs/specs/text-boxes.md (`drawing` after smartTags, before legacyDrawing)
*
* Unsupported top-level children are preserved opaquely in before/after bags.
* When the caller owns the drawing model, bag copies of `drawing` are stripped
* and a modeled `` is inserted.
*
* @private
*/
import { OpcRelationship } from '../core/package/relationships';
import { CellModel } from '../cell/cell-model';
import { ConditionalFormattingModel } from './conditional-formatting';
import { DataValidationsModel } from './data-validations';
import { ColumnsModel } from './columns';
import { RowsModel } from './rows';
import { SheetViewsModel } from './freeze-panes';
import { SheetFormatPrModel } from './sheet-format';
import { SortStateModel } from './sort-state';
import { AutoFilterModel } from './auto-filter';
import { HyperlinksModel } from './hyperlinks';
import { TablePartsModel } from './table-model';
import { MergeCellEntry } from './merged-cells';
import { PageSetupModel } from './page-setup';
import { SheetProtectionModel } from './sheet-protection';
import { ProtectedRangesModel } from './protected-ranges';
/** Default ceiling for cells materialized from sheetData. */
export declare const DEFAULT_MAX_SHEET_CELLS = 5000000;
/**
* Parsed worksheet part focused on sheetData + dimension + mergeCells +
* conditionalFormatting + dataValidations + hyperlinks + sheetViews + cols +
* page setup.
*/
export interface WorksheetXmlModel {
/** Sparse cells keyed later by host; ordered list from file. */
readonly cells: ReadonlyArray;
/** Sparse row records, including rows with no cells. */
readonly rows: RowsModel;
/** `dimension/@ref` when present. */
readonly dimensionRef: string | undefined;
/**
* Ordered non-modeled top-level children excluding sheetData, dimension,
* modeled `sheetViews`, modeled `cols`, modeled `mergeCells`, modeled
* `conditionalFormatting`, modeled `dataValidations`, modeled `hyperlinks`,
* and modeled print trio elements, each full element XML. Relative order
* among preserves is kept; modeled elements are re-inserted by the
* serializer at standard positions.
*/
readonly beforeSheetDataXml: ReadonlyArray;
readonly afterSheetDataXml: ReadonlyArray;
/** Extra root attributes excluding xmlns / xmlns:r. */
readonly rootExtraAttrsXml: string;
/** Whether a dimension element was present. */
readonly hadDimension: boolean;
/**
* Parsed `mergeCells` / `mergeCell@ref` entries in file order.
* Empty when absent or all refs soft-skipped.
*/
readonly mergeCells: ReadonlyArray;
/**
* Parsed conditional-formatting rules from all `conditionalFormatting`
* parents (file order). Empty when absent or all soft-skipped.
*/
readonly conditionalFormatting: ConditionalFormattingModel;
/**
* Parsed `dataValidations` model. Empty entries when absent or all soft-skipped.
*/
readonly dataValidations: DataValidationsModel;
/**
* Parsed `hyperlinks` model. Empty entries when absent or all soft-skipped.
* External targets are resolved when sheet relationships are supplied.
*/
readonly hyperlinks: HyperlinksModel;
/**
* Parsed `sheetViews` model (freeze/split panes).
* `present: false` when the element was absent.
*/
readonly sheetViews: SheetViewsModel;
/**
* Parsed `sheetFormatPr` model (sheet default row height).
* `present: false` when the element was absent.
*/
readonly sheetFormatPr: SheetFormatPrModel;
/**
* Parsed `cols` / `col` column records. Empty when absent or all soft-skipped.
*/
readonly cols: ColumnsModel;
/**
* Parsed print/page setup trio (`printOptions` / `pageMargins` / `pageSetup`).
* `present: false` when none of the three elements were present.
*/
readonly pageSetup: PageSetupModel;
/**
* Parsed `tableParts` refs (`CT_TableParts`). Empty when absent or all
* soft-skipped; table parts themselves are resolved lazily by the host.
*/
readonly tableParts: TablePartsModel;
/**
* Parsed worksheet-level `sortState` model. `present: false` when the
* element was absent, or when its root was unparsable (whole-element
* backup then round-trips via `xml`).
*/
readonly sortState: SortStateModel;
/**
* Parsed worksheet-level `autoFilter` model. `present: false` when the
* element was absent, or when its root was unparsable (whole-element
* backup then round-trips via `xml`). Table-embedded autoFilter stays
* opaque on the table part owner.
*/
readonly autoFilter: AutoFilterModel;
/**
* Parsed `sheetProtection` model. `present: false` when the element was
* absent. CT_Worksheet order: after `sheetCalcPr`, before `protectedRanges`.
*/
readonly sheetProtection: SheetProtectionModel;
/**
* Parsed `protectedRanges` model. Empty entries when absent or all
* soft-skipped. CT_Worksheet order: after `sheetProtection`, before
* `scenarios` / `autoFilter`.
*/
readonly protectedRanges: ProtectedRangesModel;
}
/**
* Parse worksheet part bytes into a sparse cell list + preserve bags.
*
* @param sheetRels Optional sheet-part relationships used to resolve
* hyperlink `r:id` targets on load.
*/
export declare function parseWorksheetXml(bytes: Uint8Array, partName: string, options?: {
readonly maxCells?: number;
readonly sheetRels?: ReadonlyArray;
}): WorksheetXmlModel;
/**
* Serialize a worksheet model to SpreadsheetML worksheet part bytes.
* Modeled elements (`sheetViews`, `cols`, `mergeCells`, `conditionalFormatting`,
* `dataValidations`, `hyperlinks`, the print trio) are inserted at CT_Worksheet
* sequence positions. Unsupported children (including `drawing`) are emitted
* from preserve bags as-is.
*/
export declare function serializeWorksheetXml(model: {
readonly cells: ReadonlyArray;
readonly rows?: RowsModel;
readonly beforeSheetDataXml?: ReadonlyArray;
readonly afterSheetDataXml?: ReadonlyArray;
readonly rootExtraAttrsXml?: string;
/** Modeled merge ranges; omitted from output when empty/absent. */
readonly mergeCells?: ReadonlyArray;
/** Modeled conditional formatting; omitted from output when empty/absent. */
readonly conditionalFormatting?: ConditionalFormattingModel;
/** Modeled data validations; omitted from output when empty/absent. */
readonly dataValidations?: DataValidationsModel;
/** Modeled hyperlinks; omitted from output when empty/absent. */
readonly hyperlinks?: HyperlinksModel;
/** Modeled sheetViews / freeze panes; omitted when absent/empty. */
readonly sheetViews?: SheetViewsModel;
/** Modeled sheetFormatPr / default row height; omitted when present is false. */
readonly sheetFormatPr?: SheetFormatPrModel;
/** Modeled `cols` / column widths; omitted when empty/absent. */
readonly cols?: ColumnsModel;
/** Modeled print/page setup trio; omitted when absent. */
readonly pageSetup?: PageSetupModel;
/** Modeled tableParts refs; omitted from output when empty/absent. */
readonly tableParts?: TablePartsModel;
/**
* Modeled worksheet-level `sortState`; omitted from output when absent
* (no backup) — an unparsable root still re-emits its whole-element
* backup verbatim.
*/
readonly sortState?: SortStateModel;
/**
* Modeled worksheet-level `autoFilter`; omitted from output when absent
* (no backup) — an unparsable root still re-emits its whole-element
* backup verbatim. Schema order: autoFilter immediately before sortState.
*/
readonly autoFilter?: AutoFilterModel;
/**
* Modeled `sheetProtection`; omitted when `present: false`.
* Schema order: after sheetCalcPr, before protectedRanges.
*/
readonly sheetProtection?: SheetProtectionModel;
/**
* Modeled `protectedRanges`; omitted when entries are empty.
* Schema order: after sheetProtection, before scenarios/autoFilter.
*/
readonly protectedRanges?: ProtectedRangesModel;
/**
* Sheet drawing relationship id for modeled ``.
* When set (or `stripBagDrawing` is true), opaque bag `drawing` elements
* are filtered out so the library-owned element is sole.
*/
readonly drawingRelationshipId?: string;
/**
* Strip bag `drawing` even when no relationship id is emitted (empty owned
* drawing after last text box removed).
*/
readonly stripBagDrawing?: boolean;
/**
* Sheet VML legacyDrawing relationship id for modeled
* `` (form controls). When set (or
* `stripBagLegacyDrawing` is true), opaque bag `legacyDrawing` elements
* are filtered out so the library-owned element is sole.
*/
readonly legacyDrawingRelationshipId?: string;
/**
* Strip bag `legacyDrawing` even when no relationship id is emitted
* (empty owned VML after last form control removed).
*/
readonly stripBagLegacyDrawing?: boolean;
/** Force dimension emission even when empty (omit by default). */
readonly emitEmptyDimension?: boolean;
}): Uint8Array;
/**
* Minimal bounding A1 range for existing cells, or undefined if empty.
*/
export declare function computeDimensionRef(cells: ReadonlyArray): string | undefined;