export type PaneType = 'bottomRight' | 'topRight' | 'bottomLeft' | 'topLeft'; export type PaneState = 'split' | 'frozen' | 'frozenSplit'; export type SheetViewMode = 'normal' | 'pageBreakPreview' | 'pageLayout'; export interface Pane { /** Column-axis split. Number of columns frozen on the left. */ xSplit?: number; /** Row-axis split. Number of rows frozen on top. */ ySplit?: number; /** First visible cell of the bottom-right pane. */ topLeftCell?: string; /** Which pane is active when the sheet is opened. Defaults to `bottomRight` for full freezes. */ activePane?: PaneType; state: PaneState; } export interface Selection { pane?: PaneType; activeCell?: string; sqref?: string; } export interface SheetView { /** Index into the parent workbook's bookViews list. Defaults to 0. */ workbookViewId: number; tabSelected?: boolean; showGridLines?: boolean; showRowColHeaders?: boolean; showFormulas?: boolean; showZeros?: boolean; rightToLeft?: boolean; view?: SheetViewMode; topLeftCell?: string; zoomScale?: number; zoomScaleNormal?: number; pane?: Pane; selection?: Selection; } /** Build a SheetView with sensible defaults. */ export declare function makeSheetView(opts?: Partial): SheetView; /** * Build a frozen Pane from a top-left coordinate. Per Excel semantics: * - "B2" → freeze 1 row + 1 col → xSplit=1, ySplit=1, activePane='bottomRight' * - "A2" → freeze 1 row only → ySplit=1, activePane='bottomLeft' * - "B1" → freeze 1 col only → xSplit=1, activePane='topRight' * - "A1" → no freeze; throws (caller should clear `ws.views[].pane`). */ export declare function makeFreezePane(topLeftRef: string): Pane; /** Inverse of {@link makeFreezePane}. Returns the top-left ref of the bottomRight pane, or undefined. */ export declare function freezePaneRef(view: SheetView): string | undefined;