import { MouseEventHandler, ReactNode } from 'react'; import { IDataTableFilterState, IDataTableFilterProps } from './filter'; export type IDataTableColumn = IDataTableColumnWithDataKey | IDataTableColumnWithoutDataKey; export interface IDataTableColumnWithDataKey { dataKey: keyof T; label: string; formatValueForExport?: (options: { value: T[keyof T]; }) => string | number; renderCell?: (options: { value: T[keyof T]; rowIndex: number; }) => ReactNode; } export interface IDataTableColumnWithoutDataKey { dataKey: undefined; formatValueForExport?: (options: { value: T; }) => string | number; label: string; renderCell?: (options: { value: T; rowIndex: number; }) => ReactNode; } export interface IDataTableProps { columns: IDataTableColumn[]; data: T[]; variant?: 'ghost' | 'surface'; page?: number; totalCount?: number; pageSize?: number; filters?: IDataTableFilterProps; onPaginationChange?: (pagination: { page: number; }) => void; onFilterSubmit?: (data: F) => void; emptyText?: string; emptyTitle?: string; allowExport?: boolean; exportDataRequest?: () => Promise | T[]; exportFileName?: string; isLoading?: boolean; showAddButton?: boolean; addButtonLabel?: string; onAddButtonClick?: MouseEventHandler; /** * Maximum height for the table container. When content exceeds this height, vertical scrolling will be enabled. * @example "400px" | "50vh" */ maxHeight?: string; /** * Enable sticky header when scrolling vertically * @default true */ stickyHeader?: boolean; } export declare const DataTable: ({ columns, data, variant, page, pageSize, onPaginationChange, totalCount, filters, onFilterSubmit, emptyText, emptyTitle, allowExport, exportDataRequest, exportFileName, isLoading, showAddButton, addButtonLabel, onAddButtonClick, maxHeight, stickyHeader, }: IDataTableProps) => import("react/jsx-runtime").JSX.Element;