import React, { ReactNode, Component } from 'react'; import { DragDropContext, DropResult } from 'react-beautiful-dnd'; type SortDirectionType = 'ascending' | 'descending' | 'none'; interface BaseRowType { id: string; selected?: boolean; disabled?: boolean; error?: boolean; [key: string]: string | number | boolean | undefined | Record | ReactNode; } interface ColumnType { order?: number; header?: ReactNode | string | number; align?: 'start' | 'center' | 'end'; width?: string; sort?(cellA: GenericCellType, cellB: GenericCellType): number; render?(cell: GenericCellType, row: GenericRowType): React.JSX.Element; } export interface PropsType { as?: 'table' | 'card'; rows: Array; columns: { [GenericColumnType in keyof Partial]: ColumnType; }; onSelection?(rows: Array): void; onDragEnd?(rows: Array, dropResult: DropResult): void; 'data-testid'?: string; } interface StateType { selectionStart: number; toggleAction: boolean; sorting?: { column: string; direction: SortDirectionType; }; } declare class Table extends Component>, StateType> { constructor(props: PropsType); private dragEndHandler; private handleSelection; private handleHeaderCheck; private getHeaderState; private handleSort; private sortRows; render(): React.JSX.Element; } export default Table; export { DragDropContext, ColumnType, BaseRowType, SortDirectionType };