/// <reference types="react" />
import type { ObjectLike, ColumnDef, DataTableProps, Sort, InferredIdType } from './types';
export declare function useColumnWidths<T>(columnsByField: {
    [K in keyof T]: {
        headerRef: React.RefObject<HTMLTableCellElement>;
    };
}): Record<string, number>;
export declare function useDataTableRenderer<T extends Record<PropertyKey, unknown>, GetId extends ((row: T) => any) | undefined = undefined>({ rows: _rows, columns: columnsProp, pinnedColumns, rowCount: totalRowsProp, initialState, pagination, paginationMode, paginationModel, onPaginationModelChange, sortModel: controlledSortModel, sortOrder: _sortOrder, selectionModel, onSortModelChange, onSelectionModelChange, editMode, getId: _getId, isTotalSelected: _isTotalSelected, isRowSelectable, columnGroupingModel, }: DataTableProps<T, GetId>): {
    rowCount: number;
    selectableRowCount: number;
    page: number;
    pageSize: number;
    onPaginationModelChange: (newPage: number) => void;
    getId: (row: T, index?: number) => InferredIdType<T, GetId>;
    HeadCell: <T_1 extends ObjectLike, GetId_1>(props: ColumnDef<T_1, GetId_1> & {
        tableId: string;
        stickyHeader?: boolean | undefined;
        editMode?: boolean | undefined;
        sort?: Sort | undefined;
        onSortChange?: ((props: {
            field: keyof T_1;
            multiple: boolean;
            currentSort?: Sort | undefined;
        }) => void) | undefined;
        sortOrder: Sort[];
    }) => import("react").JSX.Element;
    BodyRow: <T_2 extends Record<string, any>, ID>(props: {
        tableId: string;
        row: T_2;
        rowId: ID;
        editMode?: boolean | undefined;
        noWrap?: boolean | undefined;
        columns: ColumnDef<T_2, any>[];
    }) => JSX.Element;
    dataInPage: T[];
    handleSortChange: (props: {
        field: keyof T;
        multiple: boolean;
        currentSort?: Sort | undefined;
    }) => void;
    isAllSelected: boolean;
    isTotalSelected: boolean;
    isSelectedRow: (model: InferredIdType<T, GetId>) => boolean;
    isRowSelectable: (rowId: InferredIdType<T, GetId>, row?: T) => boolean;
    focusedRowId: InferredIdType<T, GetId> | null;
    onRowFocus: (rowId: InferredIdType<T, GetId>) => void;
    onAllCheckboxChange: () => void;
    onCheckboxChange: (event: React.MouseEvent | React.ChangeEvent | React.KeyboardEvent, selectedModel: InferredIdType<T, GetId>) => void;
    columns: ColumnDef<T, InferredIdType<T, GetId>>[];
    processedColumnGroups: {
        groups: import("./types").ProcessedColumnGroup[][];
        maxLevel: number;
        fieldsInGroupingModel: Set<keyof T>;
    } | null;
    onTotalSelect: () => void;
    selectionAnchor: {
        rowId: InferredIdType<T, GetId>;
        rowIndex: number;
        wasSelected: boolean;
    } | null;
    setSelectionAnchor: import("react").Dispatch<import("react").SetStateAction<{
        rowId: InferredIdType<T, GetId>;
        rowIndex: number;
        wasSelected: boolean;
    } | null>>;
};
