import { Editor } from '@tiptap/react';
import { default as React } from 'react';
import { IBEditorTableCellAddress, IBEditorTableColumnResizeDragState, IBEditorTableDragAnchor, IBEditorTableResizeGuideState, IBEditorTableRowResizeDragState } from '../../core/types';
import { IBEditorTableHitTestSnapshot } from '../cell';
import { IBEditorTableRowResizeTarget } from '../resize';
import { IBEditorTableSelectionOverlay } from '../selection';
import { TBEditorMutableRef, TBEditorTableSelectionMode } from '../types';
import { IBEditorTableDragSelectionController } from './useBEditorTableDragSelection';
import { IBEditorTablePointerHandlers } from './useBEditorTableInteraction';
interface IUseBEditorTablePointerControllerParams {
    clearTableSelectionOverlay: () => void;
    editor: Editor | null;
    editorContainerRef: React.RefObject<HTMLDivElement | null>;
    editorResizeDragRef: React.RefObject<boolean>;
    isReadonly: boolean;
    isResizing: boolean;
    isTitleMode: boolean;
    rememberTableSelectionCells: (cells: HTMLTableCellElement[]) => HTMLTableCellElement[];
    rememberTableSelectionEndpoints: (anchorCell: HTMLTableCellElement | null, headCell?: HTMLTableCellElement | null) => void;
    resolveRememberedTableSelectionCell: (address: IBEditorTableCellAddress | null, fallbackCell: HTMLTableCellElement | null) => HTMLTableCellElement | null;
    restoreTableSelectionCells: (addresses: IBEditorTableCellAddress[], fallbackCells?: HTMLTableCellElement[]) => HTMLTableCellElement[];
    restoreTableSelectionCellsFromAddresses: (addresses: IBEditorTableCellAddress[]) => HTMLTableCellElement[];
    scheduleTableMenuPosition: (event?: Event) => void;
    scheduleTableSelectionOverlaySync: (cells?: HTMLTableCellElement[]) => void;
    syncTableMenuPosition: (event?: Event) => void;
    syncTableSelectionOverlay: (cells?: HTMLTableCellElement[]) => IBEditorTableSelectionOverlay | null;
    tableColumnResizeDragRef: TBEditorMutableRef<IBEditorTableColumnResizeDragState | null>;
    tableCommandCellAddressesRef: TBEditorMutableRef<IBEditorTableCellAddress[]>;
    tableCtrlSelectionPointerRef: TBEditorMutableRef<boolean>;
    tableDragAnchorRef: TBEditorMutableRef<IBEditorTableDragAnchor | null>;
    tableDragMovedRef: TBEditorMutableRef<boolean>;
    tableDragSelection: IBEditorTableDragSelectionController;
    tableEditingCellAddressRef: TBEditorMutableRef<IBEditorTableCellAddress | null>;
    tableMenuClosedByOutsideRef: TBEditorMutableRef<boolean>;
    tablePointerDownRef: TBEditorMutableRef<boolean>;
    tablePointerHandlersRef: TBEditorMutableRef<IBEditorTablePointerHandlers>;
    tablePreserveSelectionPointerRef: TBEditorMutableRef<boolean>;
    tableRowResizeDragRef: TBEditorMutableRef<IBEditorTableRowResizeDragState | null>;
    tableRowResizeHoverRef: TBEditorMutableRef<IBEditorTableRowResizeTarget | null>;
    tableSelectionAnchorAddressRef: TBEditorMutableRef<IBEditorTableCellAddress | null>;
    tableSelectionCellAddressesRef: TBEditorMutableRef<IBEditorTableCellAddress[]>;
    tableSelectionCellsRef: TBEditorMutableRef<HTMLTableCellElement[]>;
    tableSelectionModeRef: TBEditorMutableRef<TBEditorTableSelectionMode>;
    tableSelectionOverlay: IBEditorTableSelectionOverlay | null;
    updateTableMenuPosition: (nextPosition: {
        left: number;
        top: number;
    } | null) => void;
    updateTableResizeGuide: (nextGuide: IBEditorTableResizeGuideState | null) => void;
}
export declare function useBEditorTablePointerController({ clearTableSelectionOverlay, editor, editorContainerRef, editorResizeDragRef, isReadonly, isResizing, isTitleMode, rememberTableSelectionCells, rememberTableSelectionEndpoints, resolveRememberedTableSelectionCell, restoreTableSelectionCells, restoreTableSelectionCellsFromAddresses, scheduleTableMenuPosition, scheduleTableSelectionOverlaySync, syncTableMenuPosition, syncTableSelectionOverlay, tableColumnResizeDragRef, tableCommandCellAddressesRef, tableCtrlSelectionPointerRef, tableDragAnchorRef, tableDragMovedRef, tableDragSelection, tableEditingCellAddressRef, tableMenuClosedByOutsideRef, tablePointerDownRef, tablePointerHandlersRef, tablePreserveSelectionPointerRef, tableRowResizeDragRef, tableRowResizeHoverRef, tableSelectionAnchorAddressRef, tableSelectionCellAddressesRef, tableSelectionCellsRef, tableSelectionModeRef, tableSelectionOverlay, updateTableMenuPosition, updateTableResizeGuide, }: IUseBEditorTablePointerControllerParams): {
    resolveTableResizeTargetTableForEvent: (target: EventTarget | Node | null | undefined, clientX: number, clientY: number, hitTestSnapshot?: IBEditorTableHitTestSnapshot | null, resolvedCell?: HTMLTableCellElement | null) => HTMLTableElement | null | undefined;
    startTableRowResize: (event: MouseEvent | React.SyntheticEvent<HTMLDivElement>, nativeEvent: MouseEvent, rowResizeTarget: IBEditorTableRowResizeTarget) => void;
};
export {};
