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;
    align?: 'left' | 'center' | 'right';
    priority?: 'primary' | 'important' | 'secondary' | 'debug';
    mobileRole?: 'title' | 'subtitle' | 'meta' | 'badge' | 'status' | 'action' | 'hidden';
};
export type GetRowId<Row> = (row: Row, index: number) => string;
export type DataTableKind = NonNullable<Parameters<typeof styles.container>[0]>['kind'];
export type DataTableDensity = NonNullable<Parameters<typeof styles.densityRecipe>[0]>['density'];
export type DataTableRowState = NonNullable<Parameters<typeof styles.rowStateRecipe>[0]>['state'];
export type DataTableHeaderBehavior = {
    sticky?: boolean;
    offsetTop?: number;
};
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;
    density?: DataTableDensity;
    headerBehavior?: DataTableHeaderBehavior;
    rowState?: (row: Row, index: number) => DataTableRowState;
    classes?: SlotClasses<DataTableSlot>;
    ariaLabel?: string;
    ariaLabelledBy?: string;
};
export declare const DataTable: <Row>({ columns, rows, getRowId, emptyState, className, headerClassName, bodyClassName, rowClassName, gridTemplateClassName, gridTemplateColumns, kind, density, headerBehavior, rowState, classes, ariaLabel, ariaLabelledBy, }: 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