import { Block, Text, Inline } from 'slate';
import { Editor } from 'slate';
import { List } from 'immutable';
import { Option } from './option';
declare type CellPosition = {
row: number;
col: number;
};
export declare type Cell = {
key: string;
rowKey: string;
colspan: number;
rowspan: number;
block: Block;
rowBlock: Block;
nodeIndex: number;
isLeftOfMergedCell: boolean;
isTopOfMergedCell: boolean;
} & CellPosition;
export interface CellDict {
[key: string]: Cell;
}
export declare type Layout = Cell[][];
export declare class TableLayout {
table: Cell[][];
keyDict: CellDict;
currentTable: Block;
row: Block;
cell: Block;
constructor(TableLayout: Cell[][], dict: CellDict, table: Block, row: Block, cell: Block);
readonly col: number;
readonly firstRow: Cell[];
readonly firstColumn: Cell[];
readonly lastRow: Cell[];
readonly lastColumn: Cell[];
readonly rowIndex: number;
readonly width: number;
readonly height: number;
readonly columnIndex: number;
isTopOfMergedCell(): void;
findCellBy(key: string): Cell | undefined;
findNextRowKey(): string | undefined;
filterHorizontalMergedCellsBy(columnIndex: number): Cell[];
filterVerticalMergedCellsBy(rowIndex: number): Cell[];
getRows(rowIndex: number): Cell[];
findBelow(key: string): Cell | undefined;
getNextRowSize(key: string): number;
getRight(key: string): Cell | undefined;
isLastColumn(key: string): boolean;
isLastRow(key: string): boolean;
static create(editor: Editor, opts: Required