import { type CellStore } from './cell-store.js';
import type { SheetRecord } from './workbook-sheet-record.js';
export interface EnsuredCell {
    cellIndex: number;
    created: boolean;
}
export declare class WorkbookCellRecordStore {
    private readonly options;
    constructor(options: {
        readonly cellStore: CellStore;
        readonly cellKeyToIndex: Map<number, number>;
        readonly cellFormats: Map<number, string>;
        readonly getSheet: (sheetName: string) => SheetRecord | undefined;
        readonly getOrCreateSheet: (sheetName: string) => SheetRecord;
        readonly getSheetById: (sheetId: number) => SheetRecord | undefined;
        readonly getSheetNameById: (sheetId: number) => string;
        readonly createLogicalAxisId: (axis: 'row' | 'column') => string;
        readonly createLogicalAxisIds: (axis: 'row' | 'column', count: number) => readonly string[];
    });
    ensureCell(sheetName: string, address: string): number;
    ensureCellRecord(sheetName: string, address: string): EnsuredCell;
    ensureCellAt(sheetId: number, row: number, col: number): EnsuredCell;
    attachAllocatedCell(sheetId: number, row: number, col: number, cellIndex: number): void;
    ensureLogicalAxisId(sheetId: number, axis: 'row' | 'column', index: number): string;
    createLogicalAxisIdEnsurer(sheetId: number, axis: 'row' | 'column'): (index: number) => string;
    createDenseLogicalAxisIds(sheetId: number, axis: 'row' | 'column', start: number, count: number): string[];
    attachAllocatedCellWithLogicalAxisIds(sheetId: number, row: number, col: number, cellIndex: number, rowId: string, colId: string): void;
    getCellIndex(sheetName: string, address: string): number | undefined;
    getCellIndexAt(sheetId: number, row: number, col: number): number | undefined;
    getFreshCellIndexAt(sheetId: number, row: number, col: number): number | undefined;
    getAddress(index: number): string;
    getQualifiedAddress(index: number): string;
    getCellPosition(index: number): {
        sheetId: number;
        row: number;
        col: number;
    } | undefined;
    getCellAxisIndex(index: number, axis: 'row' | 'column'): number | undefined;
    detachCellIndex(index: number): boolean;
    pruneCellIfEmpty(index: number): boolean;
}
