import { Editor } from '@tiptap/react';
import { default as React } from 'react';
import { IBEditorTableCellAddress, IBEditorTableResizeGuideState } from '../core/types';
import { IBEditorTableCommandResult } from './menu';
import { IBEditorTableSelectionOverlay } from './selection';
export type TBEditorTableSelectionMode = 'multi' | 'range';
export type TBEditorMutableRef<T> = {
    current: T;
};
export interface IUseBEditorTableControllerParams {
    editor: Editor | null;
    editorContainerRef: React.RefObject<HTMLDivElement | null>;
    editorResizeDragRef: React.RefObject<boolean>;
    handleMediaPointerDown: (event: React.SyntheticEvent<HTMLDivElement>) => boolean;
    isRawMode: boolean;
    isReadonly: boolean;
    isResizing: boolean;
    isTitleMode: boolean;
}
export interface IUseBEditorTableControllerResult {
    closeTableFloatingUi: () => void;
    handleEditorDoubleClickCapture: (event: React.SyntheticEvent<HTMLDivElement>) => void;
    handleEditorMouseDownCapture: (event: React.SyntheticEvent<HTMLDivElement>) => void;
    handleEditorMouseUpCapture: (event: React.SyntheticEvent<HTMLDivElement>) => void;
    handleTableMenuInteraction: (event: React.SyntheticEvent<HTMLDivElement>) => void;
    insertTable: (rows: number, columns: number) => void;
    insertTableGapParagraph: (tableIndex: number) => void;
    restoreTableSelectionBeforeCommand: () => void;
    syncTableFloatingUiAfterCommand: (result: IBEditorTableCommandResult) => void;
    syncTableLayout: () => void;
    tableCommandCells: HTMLTableCellElement[];
    tableMenuPosition: {
        left: number;
        top: number;
    } | null;
    tableResizeGuide: IBEditorTableResizeGuideState | null;
    tableSelectionCellAddresses: IBEditorTableCellAddress[];
    visibleTableSelectionOverlay: IBEditorTableSelectionOverlay | null;
}
