import type { Node } from 'prosemirror-model';
type TableCellRealDesc = {
    type: 'real';
    offset: number;
    node: Node;
    colspan?: number;
    rowspan?: number;
};
type TableCellVirtualDesc = {
    type: 'virtual';
    /** Index of real cell, that prodeced this virtual cell */
    colspan?: [number, number];
    /** Index of real cell, that prodeced this virtual cell */
    rowspan?: [number, number];
};
type Pos = {
    from: number;
    to: number;
};
export type CellPos = ({
    type: 'real';
} & Pos) | {
    type: 'virtual';
    closestPos: number;
};
type TableCellDesc = TableCellRealDesc | TableCellVirtualDesc;
type TableRowDesc = {
    node: Node;
    cells: TableCellDesc[];
    offset: number;
    colspan?: boolean;
    rowspan?: boolean;
};
export declare class TableDesc {
    readonly rows: number;
    readonly cols: number;
    readonly rowsDesc: readonly TableRowDesc[];
    readonly baseOffset: number;
    private static __cache;
    static create(table: Node): TableDesc | null;
    private constructor();
    rowHasVirtualCells(rowIndex: number): boolean;
    columnHasVirtualCells(columnIndex: number): boolean;
    isSafeColumn(columnIndex: number): boolean;
    isSafeRow(rowIndex: number): boolean;
    getOffsetForRow(rowIndex: number): number;
    getRelativePosForRow(rowIndex: number): Pos;
    getRelativePosForCell(rowIndex: number, columnIndex: number): CellPos;
    getRelativePosForColumn(columnIndex: number): CellPos[];
    getCellNodeType(): import("prosemirror-model").NodeType;
    getRowNodeType(): import("prosemirror-model").NodeType;
}
export {};
