import { type CSSProperties, type JSX } from 'react';
import * as styles from './DataTable.css.js';
import type { DataTableBreakpoint } from './tableBreakpoints.js';
import type { SlotClasses } from '../../styles/slots.js';
export type DataTableColumn<Row> = {
    id: string;
    header: JSX.Element | string;
    cell: (row: Row) => JSX.Element | string | null;
    minVisibleAt?: DataTableBreakpoint;
    className?: string;
    isPrimary?: boolean;
};
export type GetRowId<Row> = (row: Row, index: number) => string;
export type DataTableKind = NonNullable<Parameters<typeof styles.container>[0]>['kind'];
type DataTableSlot = 'container' | 'header' | 'headerRow' | 'headerCell' | 'primaryHeaderCell' | 'body' | 'row' | 'rowEven' | 'rowOdd' | 'cell' | 'primaryCell' | 'emptyRow' | 'emptyCell';
export type DataTableProps<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;
    classes?: SlotClasses<DataTableSlot>;
};
export declare const DataTable: <Row>({ columns, rows, getRowId, emptyState, className, headerClassName, bodyClassName, rowClassName, gridTemplateClassName, gridTemplateColumns, kind, classes, }: DataTableProps<Row>) => JSX.Element;
export declare const __test: {
    readonly getVisibilityClass: (minVisibleAt?: DataTableBreakpoint) => string | null;
    readonly buildInlineTemplate: (columnCount: number, gridTemplateColumns?: string) => CSSProperties;
};
export {};
//# sourceMappingURL=DataTable.d.ts.map