import type { CellNumberFormatInput, CellNumberFormatRecord, CellRangeRef, CellSnapshot, CellStyleField, CellStylePatch, CellStyleRecord, LiteralInput, WorkbookAutoFilterSnapshot, WorkbookAxisEntrySnapshot, WorkbookCalculationSettingsSnapshot, WorkbookChartSnapshot, WorkbookCommentThreadSnapshot, WorkbookConditionalFormatSnapshot, WorkbookDataValidationSnapshot, WorkbookDefinedNameValueSnapshot, WorkbookFreezePaneSnapshot, WorkbookHyperlinkSnapshot, WorkbookImageSnapshot, WorkbookMergeRangeSnapshot, WorkbookNoteSnapshot, WorkbookPivotSnapshot, WorkbookRangeProtectionSnapshot, WorkbookSheetProtectionSnapshot, WorkbookSortSnapshot, WorkbookShapeSnapshot } from '@bilig/protocol';
import { type SpreadsheetEngineSortRangeOptions } from './engine-sort-range.js';
import { SpreadsheetEngineRuntimeBase } from './engine-runtime-base.js';
import type { PivotTableInput } from './runtime-state.js';
import { type WorkbookAxisMetadataRecord, type WorkbookCalculationSettingsRecord, type WorkbookCommentThreadRecord, type WorkbookConditionalFormatRecord, type WorkbookDataValidationRecord, type WorkbookDefinedNameRecord, type WorkbookFilterRecord, type WorkbookHyperlinkRecord, type WorkbookMergeRangeRecord, type WorkbookNoteRecord, type WorkbookPropertyRecord, type WorkbookRangeProtectionRecord, type WorkbookSheetProtectionRecord, type WorkbookSortRecord, type WorkbookSpillRecord, type WorkbookTableRecord, type WorkbookVolatileContextRecord } from '../workbook-store.js';
export declare abstract class SpreadsheetEngineWorkbookFacadeBase extends SpreadsheetEngineRuntimeBase {
    abstract getCellByIndex(cellIndex: number): CellSnapshot;
    abstract recalculateNow(): number[];
    setRangeNumberFormat(range: CellRangeRef, format: CellNumberFormatInput): void;
    clearRangeNumberFormat(range: CellRangeRef): void;
    setRangeStyle(range: CellRangeRef, patch: CellStylePatch): void;
    clearRangeStyle(range: CellRangeRef, fields?: readonly CellStyleField[]): void;
    getCellStyle(styleId: string | undefined): CellStyleRecord | undefined;
    getCellNumberFormat(id: string | undefined): CellNumberFormatRecord | undefined;
    setDefinedName(name: string, value: WorkbookDefinedNameValueSnapshot): void;
    collectDefinedNameDependentFormulaCells(name: string): readonly number[];
    upsertNumericDefinedNameFast(name: string, value: WorkbookDefinedNameValueSnapshot, numericValue: number): readonly number[] | null;
    deleteDefinedName(name: string): boolean;
    getDefinedName(name: string, scopeSheetName?: string): WorkbookDefinedNameRecord | undefined;
    getDefinedNames(): WorkbookDefinedNameRecord[];
    setWorkbookMetadata(key: string, value: LiteralInput): void;
    getWorkbookMetadata(key: string): WorkbookPropertyRecord | undefined;
    getWorkbookMetadataEntries(): WorkbookPropertyRecord[];
    setCalculationSettings(settings: WorkbookCalculationSettingsSnapshot): void;
    getCalculationSettings(): WorkbookCalculationSettingsRecord;
    getVolatileContext(): WorkbookVolatileContextRecord;
    updateRowMetadata(sheetName: string, start: number, count: number, size: number | null, hidden: boolean | null): void;
    getRowMetadata(sheetName: string): WorkbookAxisMetadataRecord[];
    getRowAxisEntries(sheetName: string): WorkbookAxisEntrySnapshot[];
    insertRows(sheetName: string, start: number, count: number, options?: {
        readonly emitTracked?: boolean;
        readonly recordHistory?: boolean;
    }): void;
    deleteRows(sheetName: string, start: number, count: number): void;
    moveRows(sheetName: string, start: number, count: number, target: number): void;
    updateColumnMetadata(sheetName: string, start: number, count: number, size: number | null, hidden: boolean | null): void;
    getColumnMetadata(sheetName: string): WorkbookAxisMetadataRecord[];
    getColumnAxisEntries(sheetName: string): WorkbookAxisEntrySnapshot[];
    insertColumns(sheetName: string, start: number, count: number, options?: {
        readonly emitTracked?: boolean;
        readonly recordHistory?: boolean;
    }): void;
    deleteColumns(sheetName: string, start: number, count: number): void;
    moveColumns(sheetName: string, start: number, count: number, target: number): void;
    setFreezePane(sheetName: string, rows: number, cols: number): void;
    clearFreezePane(sheetName: string): boolean;
    getFreezePane(sheetName: string): WorkbookFreezePaneSnapshot | undefined;
    mergeCells(range: CellRangeRef): void;
    unmergeCells(range: CellRangeRef): boolean;
    getMergeRange(sheetName: string, address: string): WorkbookMergeRangeSnapshot | undefined;
    getMergeRangeByRange(range: CellRangeRef): WorkbookMergeRangeSnapshot | undefined;
    listMergeRanges(sheetName: string): WorkbookMergeRangeRecord[];
    setSheetProtection(protection: WorkbookSheetProtectionSnapshot): void;
    clearSheetProtection(sheetName: string): boolean;
    getSheetProtection(sheetName: string): WorkbookSheetProtectionRecord | undefined;
    setFilter(sheetName: string, range: WorkbookAutoFilterSnapshot): void;
    applyTableAutoFilter(sheetName: string, tableName: string, criteria: readonly NonNullable<WorkbookAutoFilterSnapshot['criteria']>[number][]): boolean;
    clearFilter(sheetName: string, range: CellRangeRef): boolean;
    getFilters(sheetName: string): WorkbookFilterRecord[];
    setSort(sheetName: string, range: CellRangeRef, keys: WorkbookSortSnapshot['keys']): void;
    sortRange(sheetName: string, range: CellRangeRef, keys: WorkbookSortSnapshot['keys'], options?: SpreadsheetEngineSortRangeOptions): boolean;
    sortTable(sheetName: string, tableName: string, keys: WorkbookSortSnapshot['keys']): boolean;
    clearSort(sheetName: string, range: CellRangeRef): boolean;
    getSorts(sheetName: string): WorkbookSortRecord[];
    setDataValidation(validation: WorkbookDataValidationSnapshot): void;
    clearDataValidation(sheetName: string, range: CellRangeRef): boolean;
    getDataValidation(sheetName: string, range: CellRangeRef): WorkbookDataValidationRecord | undefined;
    getDataValidations(sheetName: string): WorkbookDataValidationRecord[];
    setConditionalFormat(format: WorkbookConditionalFormatSnapshot): void;
    deleteConditionalFormat(id: string): boolean;
    getConditionalFormat(id: string): WorkbookConditionalFormatRecord | undefined;
    getConditionalFormats(sheetName: string): WorkbookConditionalFormatRecord[];
    setRangeProtection(protection: WorkbookRangeProtectionSnapshot): void;
    deleteRangeProtection(id: string): boolean;
    getRangeProtection(id: string): WorkbookRangeProtectionRecord | undefined;
    getRangeProtections(sheetName: string): WorkbookRangeProtectionRecord[];
    setCommentThread(thread: WorkbookCommentThreadSnapshot): void;
    deleteCommentThread(sheetName: string, address: string): boolean;
    getCommentThread(sheetName: string, address: string): WorkbookCommentThreadRecord | undefined;
    getCommentThreads(sheetName: string): WorkbookCommentThreadRecord[];
    setNote(note: WorkbookNoteSnapshot): void;
    deleteNote(sheetName: string, address: string): boolean;
    getNote(sheetName: string, address: string): WorkbookNoteRecord | undefined;
    getNotes(sheetName: string): WorkbookNoteRecord[];
    setHyperlink(hyperlink: WorkbookHyperlinkSnapshot): void;
    deleteHyperlink(sheetName: string, address: string): boolean;
    getHyperlink(sheetName: string, address: string): WorkbookHyperlinkRecord | undefined;
    getHyperlinks(sheetName: string): WorkbookHyperlinkRecord[];
    setTable(table: WorkbookTableRecord): void;
    deleteTable(name: string): boolean;
    getTable(name: string): WorkbookTableRecord | undefined;
    getTables(): WorkbookTableRecord[];
    setSpillRange(sheetName: string, address: string, rows: number, cols: number): void;
    deleteSpillRange(sheetName: string, address: string): boolean;
    getSpillRanges(): WorkbookSpillRecord[];
    setPivotTable(sheetName: string, address: string, definition: PivotTableInput): void;
    deletePivotTable(sheetName: string, address: string): boolean;
    getPivotTable(sheetName: string, address: string): WorkbookPivotSnapshot | undefined;
    getPivotTables(): WorkbookPivotSnapshot[];
    setChart(chart: WorkbookChartSnapshot): void;
    deleteChart(id: string): boolean;
    getChart(id: string): WorkbookChartSnapshot | undefined;
    getCharts(): WorkbookChartSnapshot[];
    setImage(image: WorkbookImageSnapshot): void;
    deleteImage(id: string): boolean;
    getImage(id: string): WorkbookImageSnapshot | undefined;
    getImages(): WorkbookImageSnapshot[];
    setShape(shape: WorkbookShapeSnapshot): void;
    deleteShape(id: string): boolean;
    getShape(id: string): WorkbookShapeSnapshot | undefined;
    getShapes(): WorkbookShapeSnapshot[];
    private hasStructuralDeleteImpact;
    private hasStructuralInsertImpact;
    private hasStructuralInsertBoundaryPreparationImpact;
}
