import { Editor } from '@tiptap/react';
import { default as React } from 'react';
import { IBEditorTableCellAddress, IBEditorTableDragAnchor } from '../../core/types';
import { IBEditorTableSelectionOverlay } from '../selection';
import { TBEditorMutableRef, TBEditorTableSelectionMode } from '../types';
import { IBEditorTableDragSelectionController } from './useBEditorTableDragSelection';
export interface IBEditorTablePointerHandlerContext {
    clearTableSelectionOverlay: () => void;
    editor: Editor;
    editorContainerRef: React.RefObject<HTMLDivElement | null>;
    rememberTableSelectionCells: (cells: HTMLTableCellElement[]) => HTMLTableCellElement[];
    rememberTableSelectionEndpoints: (anchorCell: HTMLTableCellElement | null, headCell?: HTMLTableCellElement | null) => void;
    resolveConnectedTableSelectionCells: (table?: HTMLTableElement | null) => HTMLTableCellElement[];
    resolveRememberedTableSelectionCell: (address: IBEditorTableCellAddress | null, fallbackCell: HTMLTableCellElement | null) => HTMLTableCellElement | null;
    scheduleTableMenuPosition: (event?: Event) => void;
    syncTableSelectionOverlay: (cells?: HTMLTableCellElement[]) => IBEditorTableSelectionOverlay | null;
    tableCommandCellAddressesRef: TBEditorMutableRef<IBEditorTableCellAddress[]>;
    tableCtrlSelectionPointerRef: TBEditorMutableRef<boolean>;
    tableDragAnchorRef: TBEditorMutableRef<IBEditorTableDragAnchor | null>;
    tableDragMovedRef: TBEditorMutableRef<boolean>;
    tableDragSelection: IBEditorTableDragSelectionController;
    tableEditingCellAddressRef: TBEditorMutableRef<IBEditorTableCellAddress | null>;
    tablePreserveSelectionPointerRef: TBEditorMutableRef<boolean>;
    tableSelectionAnchorAddressRef: TBEditorMutableRef<IBEditorTableCellAddress | null>;
    tableSelectionCellAddressesRef: TBEditorMutableRef<IBEditorTableCellAddress[]>;
    tableSelectionCellsRef: TBEditorMutableRef<HTMLTableCellElement[]>;
    tableSelectionModeRef: TBEditorMutableRef<TBEditorTableSelectionMode>;
    updateTableMenuPosition: (nextPosition: {
        left: number;
        top: number;
    } | null) => void;
}
export interface IBEditorTableDragSelectionSyncSnapshot {
    addresses?: IBEditorTableCellAddress[];
    anchor: HTMLTableCellElement;
    cells?: HTMLTableCellElement[];
    head: HTMLTableCellElement;
}
export interface IBEditorTableDragSelectionSnapshot {
    addresses: IBEditorTableCellAddress[];
    cells: HTMLTableCellElement[];
}
