import { EntityState } from '@savantly/sprout-api';
import { FC, ReactElement } from 'react';
import { BootstrapTableProps, ColumnDescription } from 'react-bootstrap-table-next';
import { ConfirmModalProps } from '../ConfirmModal/ConfirmModal';
export interface DataTableColumnProviderProps<T> {
    columnDescriptions: ColumnDescription[];
    onEditClick?: (row: T) => void;
    onDeleteClick?: (row: T) => void;
    extraActions?: ReactElement;
    deleteModalProps?: ConfirmModalProps;
}
export declare class DataTableColumnProvider<T> {
    private _onEditClick;
    private _onDeleteClick;
    private props;
    constructor(props: DataTableColumnProviderProps<T>);
    getColumnDescriptions(): (ColumnDescription<any, any> | {
        dataField: string;
        text: string;
        isDummyField: boolean;
        formatter: (cell: any, row: T) => JSX.Element;
    })[];
}
export interface DataTableRowEditor<T> {
    editRow?: (row: T) => T;
    hasError: () => null | ReactElement | string;
}
export interface DataTableProps<T extends object = any> extends Omit<BootstrapTableProps, 'keyField' | 'data' | 'columns'> {
    keyField?: string;
    entityState: EntityState<T>;
    columnProvider: DataTableColumnProvider<T>;
    onCreateClick?: () => void;
    showCreateButton?: boolean;
    leftNav?: ReactElement;
    rightNav?: ReactElement;
    createButtonText?: string;
}
export declare const DataTable: FC<DataTableProps<any>>;
//# sourceMappingURL=DataTable.d.ts.map