import type { Cell, CellBorder } from './types';
import type { FiltersMap } from '@wix/bex-core';
import type { EditableTableState } from './EditableTableState';
import { EditTrigger } from '../../components/EditableTable/types';
type Direction = 'up' | 'down' | 'left' | 'right';
type CommitHandler = (editingValue: any, cell: Cell) => void;
export declare class CellInteractionState<T, F extends FiltersMap> {
    focusedCell: Cell | null;
    editingCell: Cell | null;
    editingValue: any;
    editTrigger: EditTrigger | null;
    selectedCells: Set<string>;
    selectionAnchor: Cell | null;
    focusedCellElement: HTMLElement | null | undefined;
    /** True while the user is performing a mouse sweep selection. */
    isSelecting: boolean;
    private readonly _parent;
    private readonly _commitHandler;
    constructor(commitHandler: CommitHandler, parent: EditableTableState<T, F>);
    get isEditing(): boolean;
    focusCell(rowKey: string, columnId: string): void;
    clearFocus(): void;
    startEdit(rowKey?: string, columnId?: string, trigger?: EditTrigger): void;
    setEditingValue(value: any): void;
    commitEdit(): void;
    cancelEdit(): void;
    selectRange(from: Cell, to: Cell): void;
    selectAll(): void;
    moveFocus(direction: Direction, extend?: boolean): void;
    moveToNextCell(): void;
    moveToPreviousCell(): void;
    startSweep(rowKey: string, columnId: string): void;
    sweepTo(rowKey: string, columnId: string): void;
    stopSweep(): void;
    private _diffSelection;
    isCellFocused(rowKey: string, columnId: string): boolean;
    isCellEditing(rowKey: string, columnId: string): boolean;
    isCellSelected(rowKey: string, columnId: string): boolean;
    get selectedCellsList(): Cell[];
    scrollFocusedCellIntoView(): void;
    /**
     * After scrollIntoView, the cell may be hidden behind sticky columns
     * or the sticky header. If so, scroll a bit more to fully reveal it.
     */
    private _adjustScrollForStickyElements;
    getSelectionBorder(rowKey: string, columnId: string): CellBorder;
}
export {};
//# sourceMappingURL=CellInteractionState.d.ts.map