import { RefObject } from 'react';
import { Virtualizer } from '@tanstack/react-virtual';
/**
 * Row count threshold at which row virtualization activates. Tables with fewer
 * than this many rows render all rows in the DOM (the pre-virtualization
 * behavior); tables with this many or more are virtualized.
 *
 * Set to 50 so tables with 49 or fewer rows remain non-virtualized (and
 * therefore keep every row — including any editable cells — fully mounted).
 */
export declare const VIRTUALIZATION_THRESHOLD = 50;
export type DataTableVirtualizer = Virtualizer<HTMLDivElement, HTMLDivElement>;
/**
 * Create a TanStack virtualizer for DataTable body rows.
 *
 * Returns `undefined` when virtualization is disabled or when `rowCount` is
 * below `VIRTUALIZATION_THRESHOLD` (and `forced` is not `true`), signaling to
 * the body that rows should render via the non-virtualized flat flow.
 *
 * When both `disabled` and `forced` are `true`, `disabled` wins.
 *
 * @param rowCount Total number of body rows that would render if not virtualized.
 * @param scrollRef Ref to the scrollable container whose scroll position the virtualizer tracks.
 * @param disabled When `true`, virtualization is skipped regardless of row count.
 * @param forced When `true`, virtualization runs regardless of row count (subject to `disabled`).
 * @returns A `Virtualizer` instance when virtualization should run; `undefined` when the body should flat-render.
 */
export declare function useDataTableVirtualizer({ rowCount, scrollRef, disabled, forced, }: {
    rowCount: number;
    scrollRef: RefObject<HTMLDivElement>;
    disabled?: boolean;
    forced?: boolean;
}): DataTableVirtualizer | undefined;
