import type { RefObject } from "react";
import type { TableState } from "../subcomponents/table-provider/table-reducer.js";
import type { CellContext, ObjectSetTableConfig } from "../types.js";
import { SelectionManager } from "./selection-manager.js";
declare class TableApi<TData> {
    private readonly tableRef;
    private readonly configRef;
    private readonly stateRef;
    readonly selection: SelectionManager<TData>;
    constructor(tableRef: RefObject<HTMLTableElement>, configRef: RefObject<ObjectSetTableConfig<TData>>, stateRef: RefObject<TableState<TData>>);
    _getTable(): HTMLTableElement | null;
    _getConfig(): ObjectSetTableConfig<TData>;
    _getState(): TableState<TData>;
    _createCellContext(row: number, column: number): CellContext<TData>;
    /**
     * Checks if the cell at the given row and column can be edited
     *
     * @param row - The row index of the cell to check
     * @param column - The column index of the cell to check
     * @returns `true` if the cell can be edited, `false` otherwise
     */
    canEditCell(row: number, column: number): boolean | undefined;
    /**
     * Checks if the table is currently in cell edit mode
     *
     * @returns `true` if the table is in cell edit mode, `false` otherwise
     */
    isEditing(): boolean;
    /**
     * Checks if the table is currently in cell edit mode for the given cell
     *
     * @param row - The row index of the cell to check
     * @param column - The column index of the cell to check
     * @returns `true` if the table is in cell edit mode for the given cell, `false` otherwise
     */
    isEditingCell(row: number, column: number): boolean;
    /**
     * Enters cell edit mode for the given cell
     *
     * @param row - The row index of the cell to enter edit mode
     * @param column - The column index of the cell to enter edit mode
     */
    enterCellEditMode(row: number, column: number): void;
    /**
     * Exits cell edit mode
     *
     * @param save - Whether to save the changes made in the cell
     */
    exitCellEditMode(save?: boolean): void;
}
export { TableApi };
//# sourceMappingURL=table-api.d.ts.map