///
import { Props } from '../../../common';
import { IFontAwesomeIconButtonProps } from '../../Buttons/FontAwesomeIconButton/FontAwesomeIconButton';
import { TableRowVariant } from './services/colors';
import { ColumnAlignment, ColumnSize, ColumnSortDirection, IColumnProps, IColumnSorts, IRowProps, InteractionType } from './services/types';
interface ITableProps {
/** Rows of the table */
rows: Array>;
/** Columns of the table */
columns: Array>;
/** Empty state of the table */
emptyState: JSX.Element;
/** Sorting of the table and only allow one column sorting at once */
sort?: IColumnSorts;
/** Called when the sorting is changed */
onSortChange?: (sort: IColumnSorts) => void;
/** Called when the selected row is changed */
onSelectedRowChange?: (selectedRowData: T[]) => void;
/** Icon Buttons group for bulkActions when the user selects some row */
bulkActions?: IFontAwesomeIconButtonProps[];
/** Called when some row is removed */
onRowRemove?: (removedRowData: T) => void;
/** If yes the left action cells are displayed (checkbox and remove button) */
hasLeftAction?: boolean;
/** If interaction type is Hover, it will display hover actions when hover. If interaction type is swipe, it will display swipe actions when tap or swipe. */
interactionType?: InteractionType;
/** If yes, sort is enable with interaction. If no, sort button display in disable style with given sort */
hasSortEnabled?: boolean;
/** Margins around the table */
margins?: Props.IMargins;
/** The component context */
componentContext?: string;
}
declare const Table: (props: ITableProps) => JSX.Element;
declare type ITableType = typeof Table & {
ColumnAlignment: typeof ColumnAlignment;
ColumnSize: typeof ColumnSize;
ColumnSortDirection: typeof ColumnSortDirection;
InteractionType: typeof InteractionType;
RowVariant: typeof TableRowVariant;
};
declare const MemoTable: ITableType;
export { Table as UnmemoTable, // Needed for styleguide (memoed components won't be detected)
MemoTable as Table };