import { IBEditorTableCellAddress } from '../core/types';
type TBEditorEventTargetNode = EventTarget | Node | null | undefined;
interface IBEditorTableHitTestRect {
    cell: HTMLTableCellElement;
    rect: Pick<DOMRect, 'bottom' | 'height' | 'left' | 'right' | 'top' | 'width'>;
    table: HTMLTableElement;
}
export interface IBEditorTableHitTestSnapshot {
    cells: IBEditorTableHitTestRect[];
    root: HTMLElement;
    table: HTMLTableElement | null;
}
export declare function createBEditorTableHitTestSnapshot(root: HTMLElement | null | undefined, table?: HTMLTableElement | null): IBEditorTableHitTestSnapshot | null;
export declare function resolveBEditorTableHitTestCellAtPoint(snapshot: IBEditorTableHitTestSnapshot | null | undefined, clientX: number, clientY: number, cells?: Set<HTMLTableCellElement>): HTMLTableCellElement | null;
export declare function resolveBEditorTableHitTestRectForCell(snapshot: IBEditorTableHitTestSnapshot | null | undefined, cell: HTMLTableCellElement | null | undefined): IBEditorTableHitTestRect | null;
export declare function resolveBEditorTableCellAtPoint(target: TBEditorEventTargetNode, root: HTMLElement | null, clientX: number, clientY: number, hitTestSnapshot?: IBEditorTableHitTestSnapshot | null): HTMLTableCellElement | null;
export declare function resolveBEditorSelectedTableCellAtPoint(root: HTMLElement | null, cells: HTMLTableCellElement[], clientX: number, clientY: number, hitTestSnapshot?: IBEditorTableHitTestSnapshot | null): HTMLTableCellElement | null;
export declare function areBEditorTableCellAddressesSame(current: IBEditorTableCellAddress | null, next: IBEditorTableCellAddress | null): boolean;
export declare function isBEditorTableCellTypingSelection(cell: HTMLTableCellElement): boolean;
export declare function isBEditorDocumentSelectionCrossingTableCell(root: HTMLElement | null): boolean;
export declare function resolveBEditorTableTypingModeCell(root: HTMLElement | null, editingAddress: IBEditorTableCellAddress | null, eventTarget?: TBEditorEventTargetNode): HTMLTableCellElement | null;
export declare function areBEditorTableCellAddressListsSame(currentAddresses: IBEditorTableCellAddress[], nextAddresses: IBEditorTableCellAddress[]): boolean;
export declare function resolveBEditorTableKeyboardDirection(key: string): {
    column: number;
    row: number;
} | null;
export declare function isBEditorTableTypingCaretAtCellBoundary(cell: HTMLTableCellElement, key: string): boolean;
export declare function resolveBEditorActiveKeyboardTableCell(root: HTMLElement | null, selectedCells: HTMLTableCellElement[]): HTMLTableCellElement | null;
export declare function resolveBEditorTableKeyboardRangeCells(root: HTMLElement | null, selectedCells: HTMLTableCellElement[], anchorCell: HTMLTableCellElement, headCell: HTMLTableCellElement): HTMLTableCellElement[];
export declare function resolveBEditorTableKeyboardTargetCell(root: HTMLElement | null, cell: HTMLTableCellElement, direction: {
    column: number;
    row: number;
}, moveToEdge: boolean): HTMLTableCellElement | null;
export declare function resolveBEditorTableKeyboardRangeTargetCell(root: HTMLElement | null, selectedCells: HTMLTableCellElement[], anchorCell: HTMLTableCellElement, headCell: HTMLTableCellElement, direction: {
    column: number;
    row: number;
}): HTMLTableCellElement | null;
export declare function areBEditorTableCellsSameByAddress(root: HTMLElement | null, currentCell: HTMLTableCellElement, nextCell: HTMLTableCellElement): boolean;
export declare function resolveBEditorCtrlTableSelectionCells(root: HTMLElement | null, currentCells: HTMLTableCellElement[], targetCell: HTMLTableCellElement): HTMLTableCellElement[];
export declare function resolveBEditorTableCellsOrFallback(selectedCells: HTMLTableCellElement[], fallbackCell: HTMLTableCellElement | null): HTMLTableCellElement[];
export declare function resolveBEditorPreferredTableCells(...cellGroups: HTMLTableCellElement[][]): HTMLTableCellElement[];
export declare function resolveBEditorOptionalTableCells(...cellGroups: HTMLTableCellElement[][]): HTMLTableCellElement[] | undefined;
export {};
