import { type JSX, type ReactNode } from 'react';
import { type DataTableBodyScrollMode, type DataTableColumn, type DataTableDensity, type DataTableHeaderBehavior, type DataTableKind, type DataTableRowState, type DataTableSlot, type GetRowId } from './DataTable.js';
import type { SlotClasses } from '../../styles/slots.js';
export type VirtualizationConfig = {
    enabled: boolean;
    rowHeightPx: number;
    overscan: number;
};
export type InfiniteScrollConfig = {
    enabled: boolean;
    thresholdPx?: number;
    autoLoad?: boolean;
};
export type VirtualizedConnectionTableProps<Row> = {
    columns: readonly DataTableColumn<Row>[];
    rows: readonly Row[];
    getRowId: GetRowId<Row>;
    emptyState?: JSX.Element;
    className?: string;
    headerClassName?: string;
    bodyClassName?: string;
    rowClassName?: (row: Row, index: number) => string | null | undefined;
    gridTemplateClassName?: string;
    gridTemplateColumns?: string;
    kind?: DataTableKind;
    density?: DataTableDensity;
    headerBehavior?: DataTableHeaderBehavior;
    rowState?: (row: Row, index: number) => DataTableRowState;
    classes?: SlotClasses<DataTableSlot>;
    bodyScrollMode?: DataTableBodyScrollMode;
    bodyFooterNode?: ReactNode;
    virtualization?: VirtualizationConfig;
    infiniteScroll?: InfiniteScrollConfig;
    hasNextPage?: boolean;
    isLoadingMore?: boolean;
    onLoadMore?: () => void;
    ariaLabel?: string;
    ariaLabelledBy?: string;
};
export declare const VirtualizedConnectionTable: <Row>({ columns, rows, getRowId, emptyState, className, headerClassName, bodyClassName, rowClassName, gridTemplateClassName, gridTemplateColumns, kind, density, headerBehavior, rowState, classes, bodyScrollMode, bodyFooterNode, virtualization, infiniteScroll, hasNextPage, isLoadingMore, onLoadMore, ariaLabel, ariaLabelledBy, }: VirtualizedConnectionTableProps<Row>) => JSX.Element;
//# sourceMappingURL=VirtualizedConnectionTable.d.ts.map