import { default as React } from 'react';
import { MRT_ColumnDef, MRT_ColumnSizingState, MRT_Header, MRT_Row, MRT_RowData, MRT_TableInstance, MRT_TableState, MaterialReactTableProps } from 'material-react-table';
import { IPaginationModel } from '../../@types/pagination-model';

type ExtraEditVariants = 'file' | 'image' | 'date' | 'number' | 'time' | 'date_time' | 'phone' | 'checkbox';
type DisableFunction = (row: any, virtualRow?: any) => boolean;
export type TypeBooleanLabels = {
    1: string;
    0: string;
    true: string;
    false: string;
};
export interface MaterialTableColumnProps extends Omit<MRT_ColumnDef<MRT_RowData>, 'editVariant'> {
    visible?: boolean;
    type?: string;
    showDefaultCurrency?: boolean;
    valueGet?: string;
    custom_class?: string;
    typeArrayAccessorKey?: string;
    typeBooleanLabels?: TypeBooleanLabels;
    editVariant?: MRT_ColumnDef<MRT_RowData>['editVariant'] | ExtraEditVariants;
    editProperties?: {
        field_name?: string;
        valueKey?: string;
        placeholder?: string;
        dateFormat?: string;
        validations?: any[];
        is_multiple?: boolean;
        is_multiline?: boolean;
        disable?: boolean | DisableFunction;
    };
    redirectionPathWithId?: string;
    handleRowClick?: (row: any) => void;
    idField?: string;
}
export interface MaterialTableColumnHeaderProps {
    column: MRT_ColumnDef<any, any>;
    header: MRT_Header<any>;
    table: MRT_TableInstance<any>;
}
type rowSelectionCallback = (row: MRT_Row<any>) => boolean;
interface MaterialTablePropsType {
    enablePagination?: boolean;
    disableMaxHeight?: boolean;
    rows: any;
    totalPages: number;
    columns: any;
    paginationModel: IPaginationModel;
    columnOrder?: string[];
    updateData?: any;
    handleColumnOrdering?: (colOrder: any) => void;
    enableEditing?: boolean;
    enableColumnDragging?: boolean;
    rowActionMenu?: any;
    destructiveActionMenu?: any;
    getRowId?: any;
    states?: Partial<MRT_TableState<any>>;
    onSortingChange?: any;
    disableDefaultActionColumn?: boolean;
    enableRowSelection?: boolean | rowSelectionCallback;
    defaultActionColumnItems?: React.ReactElement[];
    enableBottomToolbar?: boolean;
    SetSelectedRowId?: any;
    isResetRow?: boolean;
    onCreateRow?: (data: any) => Promise<unknown>;
    onEditRow?: (data: any) => Promise<unknown>;
    onDeleteRow?: (data: any) => Promise<unknown>;
    editDisplayMode?: MaterialReactTableProps<any>['editDisplayMode'];
    enableRowCreate?: boolean;
    onChangeRowField?: (e: any, type: string, row: any) => void;
    onSelectRow?: (rows: any, prevSelected?: any) => any;
    enableColumnResizing?: boolean;
    selectedRowIds?: any[];
    onColumnVisibility?: (columns: MaterialTableColumnProps[]) => void;
    getSelectedData: any;
    enableAddCustomField?: boolean;
    disabledDefaultActionColumnIcon?: boolean;
    enableRowDragging?: boolean;
    handleColumnResizing?: (sizes: MRT_ColumnSizingState) => void;
    columnSizes?: MRT_ColumnSizingState;
    showPreview?: boolean;
    handlePreview?: (row: MRT_RowData) => void;
}
export declare const MaterialTable: React.MemoExoticComponent<({ enablePagination, rows, columns, totalPages, paginationModel, columnOrder, updateData, handleColumnOrdering, enableEditing, enableColumnDragging, states, rowActionMenu, destructiveActionMenu, disableDefaultActionColumn, enableRowSelection, defaultActionColumnItems, enableBottomToolbar, SetSelectedRowId, isResetRow, onCreateRow, onEditRow, onDeleteRow, editDisplayMode, enableRowCreate, onChangeRowField, onSelectRow, enableColumnResizing, selectedRowIds, onColumnVisibility, onSortingChange, getSelectedData, disabledDefaultActionColumnIcon, enableAddCustomField, enableRowDragging, handleColumnResizing, columnSizes, disableMaxHeight, showPreview, handlePreview, ...rest }: MaterialTablePropsType) => import("react/jsx-runtime").JSX.Element>;
export default MaterialTable;
