import { CellPosition } from '../../../../internal/types';
export type DTFocusState = {
    /**
     * The currently focused cell or null if no cell is focused
     */
    focusedCell: CellPosition | null;
    /**
     * The last focused cell when the table was blurred or { rowIndex: 0, columnIndex: 0 } if never focused
     */
    focusRestorePoint: CellPosition;
    /**
     * Whether the focus has been disrupted by a sub component
     */
    hasFocusBeenDisrupted: boolean;
};
export type DTFocusStateContextValue = {
    getFocusedCell: () => CellPosition | null;
};
export type DTFocusCellAction = {
    type: "FOCUS_CELL";
    payload: {
        cellPosition: CellPosition;
    };
};
export type DTFocusTableAction = {
    type: "FOCUS_TABLE";
};
export type DTFocusMoveAction = {
    type: "MOVE_FOCUS";
    payload: {
        direction: "up" | "down" | "left" | "right";
    };
};
export type DTFocusJumpAction = {
    type: "JUMP_FOCUS";
    payload: {
        direction: "up" | "down" | "left" | "right";
    };
};
export type DTFocusCellManuallyAction = {
    type: "FOCUS_CELL_MANUALLY";
    payload: {
        cellPosition: CellPosition;
    };
};
export type DTBlurAction = {
    type: "BLUR";
};
export type DTFocusSubComponentAction = {
    type: "FOCUS_SUB_COMPONENT";
};
export type DTFocusSubComponentBlurAction = {
    type: "BLUR_SUB_COMPONENT";
};
export type DTFocusAction = DTFocusCellAction | DTFocusTableAction | DTFocusMoveAction | DTFocusJumpAction | DTBlurAction | DTFocusSubComponentAction | DTFocusSubComponentBlurAction | DTFocusCellManuallyAction;
export declare const DTFocusStateContext: import('react').Context<DTFocusStateContextValue>;
export declare const DTFocusDispatchContext: import('react').Context<import('react').Dispatch<DTFocusAction>>;
