import { MouseEvent as ReactMouseEvent, ReactNode } from 'react';
import { TableRowData, TableRowId, TableSortDirection } from '../Table.types';
/**
 * User-facing table interaction state and callbacks consumed by header/body cells.
 *
 * These values are conceptually different from the normalized render model:
 * they describe selection, sorting, and row activation/click behavior rather than
 * the structural table draft.
 */
export type TableInteractionContextValue<RowType extends TableRowData> = {
    showSelectionColumn?: boolean;
    selectedRowIdSet: Set<TableRowId>;
    selectableRowIdSet: Set<TableRowId>;
    selectionHeaderContent?: ReactNode;
    isAllRowsSelected?: boolean;
    isSomeRowsSelected?: boolean;
    hasSelectableRows?: boolean;
    hideSelectionCheckboxesForExcludedRows?: boolean;
    onToggleAllSelection?: () => void;
    onToggleRowSelection?: (rowId: TableRowId) => void;
    activeRowId?: TableRowId;
    onActiveRowChange?: (rowId: TableRowId | undefined, row: RowType, rowIndex: number) => void;
    onRowClick?: (row: RowType, rowIndex: number) => void;
    isClickable: boolean;
    onSortChange?: (columnKey: string, direction: TableSortDirection, event: ReactMouseEvent<HTMLButtonElement>) => void;
};
export declare const TableInteractionContext: import('react').Context<TableInteractionContextValue<TableRowData> | null>;
export declare const useOptionalTableInteractionContext: <RowType extends TableRowData>() => TableInteractionContextValue<RowType> | null;
export declare const useTableInteractionContext: <RowType extends TableRowData>() => TableInteractionContextValue<RowType>;
