import { EditorState, EditorView, Plugin, PluginKey, NodeViewDesc, CellSelection, Node } from '../../prosemirror';
export declare type TableStateSubscriber = (state: TableState) => any;
export interface SelectedCell {
    pos: number;
    node: Node;
}
export interface PluginConfig {
    isHeaderRowRequired?: boolean;
}
export declare class TableState {
    keymapHandler: Function;
    cellElement?: HTMLElement;
    tableElement?: HTMLElement;
    editorFocused: boolean;
    tableNode?: Node;
    cellSelection?: CellSelection;
    toolbarFocused: boolean;
    tableHidden: boolean;
    tableDisabled: boolean;
    tableActive: boolean;
    domEvent: boolean;
    hoveredCells: SelectedCell[];
    private isHeaderRowRequired;
    private view;
    private changeHandlers;
    constructor(state: EditorState<any>, pluginConfig?: PluginConfig);
    insertColumn: (column: number) => void;
    insertRow: (row: number) => void;
    remove: () => void;
    convertFirstRowToHeader: () => void;
    subscribe(cb: TableStateSubscriber): void;
    unsubscribe(cb: TableStateSubscriber): void;
    updateEditorFocused(editorFocused: boolean): void;
    updateToolbarFocused(toolbarFocused: boolean): void;
    selectColumn: (column: number) => void;
    selectRow: (row: number) => void;
    selectTable: () => void;
    hoverColumn: (column: number) => void;
    hoverRow: (row: number) => void;
    hoverTable: () => void;
    resetHoverSelection: () => void;
    isColumnSelected: (column: number) => boolean;
    isRowSelected: (row: number) => boolean;
    isHeaderRowSelected: () => boolean;
    isTableSelected: () => boolean;
    update(docView: NodeViewDesc, domEvent?: boolean): void;
    setView(view: EditorView): void;
    tableStartPos(): number | undefined;
    closeFloatingToolbar(): void;
    getCurrentCellStartPos(): number | undefined;
    isRequiredToAddHeader: () => boolean;
    addHeaderToTableNodes: (slice: Node, selectionStart: number) => void;
    private getCurrentCell();
    private createHoverSelection(from, to);
    private getTableElement(docView);
    private getFirstSelectedCellElement(docView);
    private firstSelectedCellStartPos();
    private getTableNode();
    private triggerOnChange();
    private createCellSelection(from, to);
    private updateSelection();
    private clearSelection();
    private canInsertTable();
    private emptySelectedCells();
    private focusEditor();
    private moveCursorInsideTableTo(pos);
    private moveCursorTo(pos);
}
export declare const stateKey: PluginKey;
export declare const plugin: (pluginConfig?: PluginConfig | undefined) => Plugin;
declare const plugins: (pluginConfig?: PluginConfig | undefined) => Plugin[];
export default plugins;
