import React from 'react';
import { IAction, ISeparator, TableProps } from '@patternfly/react-table';
import { WithTestID } from '../../types';
import { TableMemoColType } from './AITableMemo';
import { usePagination } from './usePagination';
import './HostsTable.css';
export type TableRow<R> = {
    header: TableMemoColType;
    cell?: (obj: R) => {
        title: React.ReactNode;
        props: any;
        sortableValue?: string | number;
    };
};
export type ActionsResolver<R> = (obj: R) => (IAction | ISeparator)[];
export type ExpandComponentProps<R> = {
    obj: R;
};
export type AITableProps<R> = ReturnType<typeof usePagination> & {
    data: R[];
    content: TableRow<R>[];
    ExpandComponent?: React.ComponentType<ExpandComponentProps<R>>;
    children: React.ReactNode;
    getDataId: (obj: R) => string;
    onSelect?: (obj: R, isSelected: boolean) => void;
    selectedIDs?: string[];
    setSelectedIDs?: (selectedIDs: string[]) => void;
    className?: string;
    actionResolver?: ActionsResolver<R>;
    canSelectAll?: boolean;
    variant?: TableProps['variant'];
    alreadySorted?: boolean;
};
declare const AITable: <R extends any>({ data, testId, className, content, ExpandComponent, getDataId, actionResolver, onSelect, children, selectedIDs, setSelectedIDs, perPage, page, onSetPage, onPerPageSelect, showPagination, perPageOptions, canSelectAll, variant, alreadySorted, }: WithTestID & AITableProps<R>) => React.JSX.Element;
export default AITable;
//# sourceMappingURL=AITable.d.ts.map