import * as React from 'react'; import React__default from 'react'; declare const STOP_PROP_TAG = "allowRowEvents"; declare const SYSTEM_COL_WIDTH = 48; declare enum Direction { LTR = "ltr", RTL = "rtl", AUTO = "auto" } declare enum Alignment { LEFT = "left", RIGHT = "right", CENTER = "center" } declare enum Media { SM = "sm", MD = "md", LG = "lg" } type CSSObject = React__default.CSSProperties; type FilterType = 'text' | 'number' | 'date'; type FilterOperator = 'contains' | 'notContains' | 'equals' | 'notEquals' | 'startsWith' | 'endsWith' | 'blank' | 'notBlank' | 'gt' | 'gte' | 'lt' | 'lte' | 'between' | 'before' | 'after'; type FilterCondition = { operator: FilterOperator; value?: string; value2?: string; }; type FilterState = { condition1: FilterCondition; condition2?: FilterCondition; logic?: 'AND' | 'OR'; }; declare enum SortOrder { ASC = "asc", DESC = "desc" } type SortColumn = { column: TableColumn; sortDirection: SortOrder; }; type Primitive = string | number | boolean; type ColumnSortFunction = (a: T, b: T) => number; type ExpandRowToggled = (expanded: boolean, row: T) => void; type Format = (row: T, rowIndex: number) => React__default.ReactNode; type RowState = ((row: T) => boolean) | null; type Selector = (row: T, rowIndex?: number) => Primitive; type SortFunction = (rows: T[], field: Selector, sortDirection: SortOrder) => T[]; type TableRow = Record; type ComponentProps = Record; type ExpanderComponentProps = { data: T; }; type ExpandableRowsComponent = React__default.ComponentType>; type PaginationChangePage = (page: number, totalRows: number) => void; type PaginationChangeRowsPerPage = (currentRowsPerPage: number, currentPage: number) => void; type PaginationComponentProps = { rowsPerPage: number; rowCount: number; currentPage: number; onChangePage: PaginationChangePage; onChangeRowsPerPage: PaginationChangeRowsPerPage; direction?: Direction; paginationRowsPerPageOptions?: number[]; paginationIcons?: PaginationIcons; paginationComponentOptions?: PaginationOptions; localization?: Localization['pagination']; }; type PaginationComponent = React__default.ComponentType; type ColumnFooter = React__default.ReactNode | ((rows: T[]) => React__default.ReactNode); type FooterComponentProps = { rows: T[]; columns: TableColumn[]; }; type FooterComponent = React__default.ComponentType>; type DataTableHandle = { clearSelectedRows: () => void; clearSort: () => void; }; type SelectionProps = { clearSelectedRows?: boolean; onSelectedRowsChange?: (selected: { allSelected: boolean; selectedCount: number; selectedRows: T[]; }) => void; selectableRowDisabled?: RowState; selectableRows?: boolean; selectableRowsComponent?: 'input' | React__default.ComponentType>; selectableRowsComponentProps?: ComponentProps; selectableRowSelected?: RowState; selectableRowsHighlight?: boolean; selectableRowsNoSelectAll?: boolean; selectableRowsVisibleOnly?: boolean; selectableRowsSingle?: boolean; selectedRows?: T[]; selectableRowsRange?: boolean; }; interface PaginationIcons { first?: React__default.ReactNode; last?: React__default.ReactNode; next?: React__default.ReactNode; previous?: React__default.ReactNode; } type PaginationProps = { onChangePage?: PaginationChangePage; onChangeRowsPerPage?: PaginationChangeRowsPerPage; pagination?: boolean; paginationComponent?: PaginationComponent; paginationComponentOptions?: PaginationOptions; paginationDefaultPage?: number; paginationIcons?: PaginationIcons; paginationPerPage?: number; paginationPage?: number; paginationPosition?: 'top' | 'bottom' | 'both'; paginationResetDefaultPage?: boolean; paginationRowsPerPageOptions?: number[]; paginationServer?: boolean; paginationServerOptions?: PaginationServerOptions; paginationTotalRows?: number; }; type ExpandableProps = { expandableIcon?: ExpandableIcon; expandableInheritConditionalStyles?: boolean; expandableRowDisabled?: RowState; expandableRowExpanded?: RowState; expandableRows?: boolean; expandableRowsComponent?: ExpandableRowsComponent; expandableRowsComponentProps?: ComponentProps; expandableRowsHideExpander?: boolean; expandOnRowClicked?: boolean; expandOnRowDoubleClicked?: boolean; onRowExpandToggled?: ExpandRowToggled; expandableRowsOptions?: ExpandableRowsOptions; }; type SortProps = { defaultSortAsc?: boolean; defaultSortFieldId?: string | number | null | undefined; onSort?: (selectedColumn: TableColumn, sortDirection: SortOrder, sortedRows: T[], sortColumns: SortColumn[]) => void; sortFunction?: SortFunction | null; sortIcon?: React__default.ReactNode; sortServer?: boolean; sortMulti?: boolean; }; type BaseTableProps = { actions?: React__default.ReactNode | React__default.ReactNode[]; ariaLabel?: string; className?: string; columns: TableColumn[]; conditionalRowStyles?: ConditionalStyles[]; customStyles?: TableStyles; data: T[]; dense?: boolean; direction?: Direction; disabled?: boolean; fixedHeader?: boolean; fixedHeaderScrollHeight?: string; highlightOnHover?: boolean; keyField?: keyof T & string; noDataComponent?: React__default.ReactNode; noHeader?: boolean; noTableHead?: boolean; onRowClicked?: (row: T, e: React__default.MouseEvent) => void; onRowDoubleClicked?: (row: T, e: React__default.MouseEvent) => void; onRowMiddleClicked?: (row: T, e: React__default.MouseEvent) => void; onRowMouseEnter?: (row: T, e: React__default.MouseEvent) => void; onRowMouseLeave?: (row: T, e: React__default.MouseEvent) => void; onScroll?: (e: React__default.UIEvent) => void; resizable?: boolean; initialColumnWidths?: Record; onColumnResize?: (columnId: string | number, width: number, allWidths: Record) => void; animateRows?: boolean; columnSeparator?: boolean | 'subtle' | 'full'; headerSeparator?: boolean | 'subtle' | 'full'; columnGroups?: ColumnGroup[]; filterValues?: Record; onFilterChange?: (columnId: string | number, filter: FilterState) => void; localization?: Localization; columnFilterOptions?: ColumnFilterOptions; onColumnOrderChange?: (nextOrder: TableColumn[]) => void; onColumnGroupOrderChange?: (nextGroups: ColumnGroup[], nextColumns: TableColumn[]) => void; persistTableHead?: boolean; pointerOnHover?: boolean; progressComponent?: React__default.ReactNode; progressPending?: boolean; responsive?: boolean; striped?: boolean; style?: CSSObject; subHeader?: React__default.ReactNode; subHeaderAlign?: Alignment; subHeaderWrap?: boolean; theme?: ThemeProp; colorMode?: ColorMode; title?: string | React__default.ReactNode; footerComponent?: FooterComponent; showFooter?: boolean; }; type TableProps = BaseTableProps & SelectionProps & PaginationProps & ExpandableProps & SortProps; type TableColumnBase = { allowOverflow?: boolean; button?: boolean; center?: boolean; compact?: boolean; reorder?: boolean; grow?: number; hide?: number | Media; id?: string | number; ignoreRowClick?: boolean; maxWidth?: string; minWidth?: string; name?: string | number | React__default.ReactNode; omit?: boolean; right?: boolean; sortable?: boolean; filterable?: boolean; filterType?: FilterType; style?: CSSObject; width?: string; wrap?: boolean; pinned?: 'left' | 'right'; editable?: boolean; editor?: CellEditor; }; interface CustomCellEditorContext { row: T; value: string; setValue: (next: string) => void; commit: (value?: string) => void; cancel: () => void; column: TableColumn; } type CellEditor = { type: 'text'; placeholder?: string; } | { type: 'number'; placeholder?: string; min?: number; max?: number; step?: number; } | { type: 'date'; min?: string; max?: string; } | { type: 'checkbox'; } | { type: 'select'; options: Array<{ value: string; label: React__default.ReactNode; }>; placeholder?: string; } | { type: 'custom'; render: (ctx: CustomCellEditorContext) => React__default.ReactNode; }; type CellValidateResult = true | false | string; type CellEditCallback = (row: T, value: string, column: TableColumn) => void; interface TableColumn extends TableColumnBase { name?: string | number | React__default.ReactNode; sortField?: string; cell?: (row: T, rowIndex: number, column: TableColumn, id: string | number) => React__default.ReactNode; conditionalCellStyles?: ConditionalStyles[]; format?: Format | undefined; selector?: (row: T, rowIndex?: number) => Primitive | React__default.ReactNode; sortFunction?: ColumnSortFunction; filterFunction?: (row: T, filter: FilterState) => boolean; onCellEdit?: CellEditCallback; validate?: (value: string, row: T, column: TableColumn) => CellValidateResult; footer?: ColumnFooter; } interface ColumnGroup { name: string | React__default.ReactNode; columnIds: (string | number)[]; align?: 'left' | 'center' | 'right'; reorder?: boolean; } interface ConditionalStyles { when: (row: T) => boolean; style?: CSSObject | ((row: T) => CSSObject); classNames?: string[]; } interface TableStyles { table?: { style: CSSObject; }; tableWrapper?: { style: CSSObject; }; responsiveWrapper?: { style: CSSObject; }; header?: { style: CSSObject; fontColor?: string; fontSize?: string; }; subHeader?: { style: CSSObject; }; head?: { style: CSSObject; }; headRow?: { style?: CSSObject; denseStyle?: CSSObject; }; headCells?: { style?: CSSObject; draggingStyle?: CSSObject; }; cells?: { style: CSSObject; draggingStyle?: CSSObject; }; rows?: { style?: CSSObject; selectedHighlightStyle?: CSSObject; denseStyle?: CSSObject; highlightOnHoverStyle?: CSSObject; stripedStyle?: CSSObject; }; expanderRow?: { style: CSSObject; }; expanderCell?: { style: CSSObject; }; expanderButton?: { style: CSSObject; }; pagination?: { style?: CSSObject; pageButtonsStyle?: CSSObject; }; footer?: { style?: CSSObject; }; footerCells?: { style?: CSSObject; }; noData?: { style: CSSObject; }; progress?: { style: CSSObject; }; } interface PaginationOptions { noRowsPerPage?: boolean; rowsPerPageText?: string; rangeSeparatorText?: string; selectAllRowsItem?: boolean; selectAllRowsItemText?: string; } type ColumnFilterOptions = NonNullable; type ExpandableRowsOptions = NonNullable; interface Localization { pagination?: { navigationAriaLabel?: string; firstPageAriaLabel?: string; previousPageAriaLabel?: string; nextPageAriaLabel?: string; lastPageAriaLabel?: string; }; filter?: { filterColumnAriaLabel?: string; filterActiveAriaLabel?: string; filterPanelAriaLabel?: string; operatorAriaLabel?: string; valuePlaceholder?: string; valueAriaLabel?: string; value2Placeholder?: string; value2AriaLabel?: string; betweenSeparatorText?: string; removeConditionAriaLabel?: string; addConditionAriaLabel?: string; addConditionLabel?: string; clearLabel?: string; applyLabel?: string; andLabel?: string; orLabel?: string; operators?: { contains?: string; notContains?: string; equals?: string; notEquals?: string; startsWith?: string; endsWith?: string; blank?: string; notBlank?: string; gt?: string; gte?: string; lt?: string; lte?: string; between?: string; before?: string; after?: string; }; }; expandable?: { expandRowAriaLabel?: string; collapseRowAriaLabel?: string; }; } interface PaginationServerOptions { persistSelectedOnSort?: boolean; persistSelectedOnPageChange?: boolean; } interface ExpandableIcon { collapsed: React__default.ReactNode; expanded: React__default.ReactNode; } interface ThemeIcons { sort?: React__default.ReactNode; expandable?: Partial; pagination?: Partial; } type TableState = { allSelected: boolean; selectedCount: number; selectedRows: T[]; selectedColumn: TableColumn; sortDirection: SortOrder; sortColumns: SortColumn[]; currentPage: number; rowsPerPage: number; selectedRowsFlag: boolean; toggleOnSelectedRowsChange: boolean; sortTriggeredPageReset: boolean; }; type ThemeText = { primary: string; secondary: string; disabled: string; }; type ThemeBackground = { default: string; header?: string; footer?: string; }; type ThemeContext = { background: string; text: string; }; type ThemeDivider = { default: string; }; type ThemeButton = { default: string; focus: string; hover: string; disabled: string; }; type ThemeSelected = { default: string; text: string; }; type ThemeHighlightOnHover = { default: string; text: string; }; type ThemeStriped = { default: string; text: string; }; type ThemeSpacing = { rowHeight?: string; headerHeight?: string; cellPaddingX?: string; iconSize?: string; }; type ThemeTypography = { fontSize?: string; fontSizeHeader?: string; fontFamily?: string; }; type ThemeShape = { borderRadius?: string; }; type Themes = string; type ThemeProp = string | Partial | Record; type ColorMode = 'light' | 'dark' | 'system'; type DarkModeColors = { primary?: string; text?: Partial; background?: Partial; context?: Partial; divider?: Partial; button?: Partial; selected?: Partial; highlightOnHover?: Partial; striped?: Partial; }; interface Theme { primary?: string; text: ThemeText; background: ThemeBackground; context: ThemeContext; divider: ThemeDivider; button: ThemeButton; selected: ThemeSelected; highlightOnHover: ThemeHighlightOnHover; striped: ThemeStriped; colorScheme?: 'light' | 'dark'; darkMode?: DarkModeColors; spacing?: ThemeSpacing; typography?: ThemeTypography; shape?: ThemeShape; icons?: ThemeIcons; checkbox?: { size?: string; borderRadius?: string; }; headerSeparator?: boolean | 'subtle' | 'full'; columnSeparator?: boolean | 'subtle' | 'full'; } interface AllRowsAction { type: 'SELECT_ALL_ROWS'; keyField: string; rows: T[]; rowCount: number; mergeSelections: boolean; } interface SingleRowAction { type: 'SELECT_SINGLE_ROW'; keyField: string; row: T; isSelected: boolean; rowCount: number; singleSelect: boolean; } interface RangeRowAction { type: 'SELECT_RANGE'; keyField: string; rangeRows: T[]; rowCount: number; select: boolean; disabledRows?: T[]; } interface SortAction { type: 'SORT_CHANGE'; selectedColumn: TableColumn; clearSelectedOnSort: boolean; additive: boolean; defaultSortDirection: SortOrder; } declare const DataTable: (props: TableProps & { ref?: React.Ref; }) => JSX.Element; type ThemeMapping = { [propertyName: string]: Theme; }; declare const defaultThemes: ThemeMapping; declare function createTheme(name: string, overrides?: Partial, inherit?: string): Theme; declare function createTheme(overrides: Partial, inherit?: string): Theme; declare const DEFAULT_PAGINATION_ICONS: Required; declare const DEFAULT_EXPANDABLE_ICON: Required; interface UseTableStateProps { data: T[]; keyField: string; defaultSortColumn: TableColumn; defaultSortDirection: SortOrder; paginationDefaultPage: number; paginationPerPage: number; paginationServer: boolean; paginationServerOptions: { persistSelectedOnSort?: boolean; persistSelectedOnPageChange?: boolean; }; paginationTotalRows: number; pagination: boolean; selectableRowsSingle: boolean; selectableRowsVisibleOnly: boolean; selectableRowSelected: ((row: T) => boolean) | null; clearSelectedRows: boolean; paginationPage?: number; paginationResetDefaultPage: boolean; controlledSelectedRows?: T[]; onSelectedRowsChange: (state: { allSelected: boolean; selectedCount: number; selectedRows: T[]; }) => void; onSort: (selectedColumn: TableColumn, sortDirection: SortOrder, sortedRows: T[], sortColumns: SortColumn[]) => void; onChangePage: (page: number, totalRows: number) => void; onChangeRowsPerPage: (currentRowsPerPage: number, currentPage: number) => void; } interface UseTableStateReturn { tableState: TableState; handleSort: (action: SortAction) => void; handleSelectAllRows: (action: AllRowsAction) => void; handleSelectedRow: (action: SingleRowAction) => void; handleSelectedRange: (action: RangeRowAction) => void; handleChangePage: (page: number) => void; handleChangeRowsPerPage: (newRowsPerPage: number, tableRowsLength: number) => void; handleClearSelectedRows: () => void; handleClearSort: () => void; } declare function useTableState(props: UseTableStateProps): UseTableStateReturn; type ColumnsHook = { tableColumns: TableColumn[]; tableGroups: ColumnGroup[]; draggingColumnId: string; draggingGroupKey: string; handleDragStart: (e: React.DragEvent) => void; handleDragEnter: (e: React.DragEvent) => void; handleDragOver: (e: React.DragEvent) => void; handleDragLeave: (e: React.DragEvent) => void; handleDragEnd: (e: React.DragEvent) => void; handleGroupDragStart: (e: React.DragEvent) => void; handleGroupDragEnter: (e: React.DragEvent) => void; handleGroupDragOver: (e: React.DragEvent) => void; handleGroupDragEnd: (e: React.DragEvent) => void; defaultSortDirection: SortOrder; defaultSortColumn: TableColumn; }; declare function useColumns(columns: TableColumn[], onColumnOrderChange: (nextOrder: TableColumn[]) => void, onColumnGroupOrderChange: ((nextGroups: ColumnGroup[], nextColumns: TableColumn[]) => void) | undefined, columnGroups: ColumnGroup[] | undefined, defaultSortFieldId: string | number | null | undefined, defaultSortAsc: boolean): ColumnsHook; interface UseTableDataProps { data: T[]; columns: TableColumn[]; selectedColumn: TableColumn; sortDirection: SortOrder; sortColumns: SortColumn[]; currentPage: number; rowsPerPage: number; pagination: boolean; paginationServer: boolean; sortServer: boolean; sortFunction: SortFunction | null; onSort: (selectedColumn: TableColumn, sortDirection: SortOrder, sortedRows: T[], sortColumns: SortColumn[]) => void; } interface UseTableDataReturn { sortedData: T[]; tableRows: T[]; } declare function useTableData(props: UseTableDataProps): UseTableDataReturn; interface UseColumnFilterResult { filterValues: Record; handleFilterChange: (columnId: string | number, filter: FilterState) => void; filteredData: (data: T[]) => T[]; } declare function emptyFilterState(filterType?: FilterType): FilterState; declare function isFilterActive(filter: FilterState): boolean; declare function useColumnFilter(columns: TableColumn[], controlledFilterValues?: Record, onFilterChangeProp?: (columnId: string | number, filter: FilterState) => void): UseColumnFilterResult; interface ColumnVisibilityEntry { column: TableColumn; visible: boolean; } interface UseColumnVisibilityResult { columns: TableColumn[]; entries: ColumnVisibilityEntry[]; toggleColumn: (columnId: string | number) => void; isVisible: (columnId: string | number) => boolean; showAll: () => void; hideAll: () => void; } declare function useColumnVisibility(initialColumns: TableColumn[]): UseColumnVisibilityResult; type ExportFormat = 'csv' | 'json'; interface UseTableExportOptions { columns: TableColumn[]; rows: T[]; valueSource?: 'selector' | 'format'; headerOverrides?: Record; columnOrder?: (string | number)[]; } interface UseTableExportResult { toCSV: () => string; toJSON: () => string; download: (filename: string, format?: ExportFormat) => void; copy: (format?: ExportFormat) => Promise; } declare function useTableExport(options: UseTableExportOptions): UseTableExportResult; export { Alignment, type CellEditCallback, type CellEditor, type CellValidateResult, type ColorMode, type ColumnFilterOptions, type ColumnFooter, type ColumnGroup, type ColumnVisibilityEntry, type ConditionalStyles, type CustomCellEditorContext, DEFAULT_EXPANDABLE_ICON, DEFAULT_PAGINATION_ICONS, type DataTableHandle, Direction, type ExpandableRowsOptions, type ExpanderComponentProps, type ExportFormat, type FilterCondition, type FilterOperator, type FilterState, type FilterType, type FooterComponent, type FooterComponentProps, type Localization, Media, type PaginationComponentProps, type PaginationIcons, type PaginationOptions, type PaginationServerOptions, STOP_PROP_TAG, SYSTEM_COL_WIDTH, type Selector, type SortColumn, type SortFunction, SortOrder, type TableColumn, type TableProps, type TableRow, type TableStyles, type Theme, type ThemeIcons, type ThemeProp, type Themes, type UseColumnVisibilityResult, type UseTableExportOptions, type UseTableExportResult, createTheme, DataTable as default, defaultThemes, emptyFilterState, isFilterActive, useColumnFilter, useColumnVisibility, useColumns, useTableData, useTableExport, useTableState };