import { MRT_ColumnDef, MRT_Row } from 'material-react-table';
import { ButtonColorTypes, ButtonVariantTypes, ButtonRoundedTypes, ButtonSizeTypes } from '../../../../types/button-types';
export interface RetryButtonProps {
    color?: ButtonColorTypes;
    rounded?: ButtonRoundedTypes;
    size?: ButtonSizeTypes;
    variant?: ButtonVariantTypes;
}
export interface EmptyStateProps {
    title?: string;
    description?: string;
    icon?: string | React.ReactNode;
}
export interface RowActionItem<T> {
    label: string;
    onClick: (rowData: T) => void;
    permission: boolean;
    condition?: (rowData: T) => boolean;
    variantMenu?: ButtonVariantTypes;
    colorMenu?: ButtonColorTypes;
    roundedMenu?: ButtonRoundedTypes;
    startIconMenu?: React.ReactNode;
    endIconMenu?: React.ReactNode;
    icon?: React.ReactNode;
    id?: string;
}
export interface DataTableProps<T extends Record<string, unknown>> extends Partial<Record<string, unknown>> {
    columns: MRT_ColumnDef<T>[];
    rows: T[];
    enableRowSelection?: boolean | ((row: MRT_Row<T>) => boolean);
    enableColumnVirtualization?: boolean;
    enableRowVirtualization?: boolean;
    enableColumnPinning?: boolean;
    enableRowNumber?: boolean;
    enableRowActions?: boolean;
    leftPinnedColumns?: string[];
    rightPinnedColumns?: string[];
    labelDetailButton?: string;
    variantDetailButton?: ButtonVariantTypes;
    colorDetailButton?: ButtonColorTypes;
    roundedDetailButton?: ButtonRoundedTypes;
    rowActionItems?: RowActionItem<T>[];
    actionDisplay?: "inline" | "dropdown" | undefined;
    onDetailChange?: (rowData: T) => void;
    enableDetailButton?: boolean;
    enableMenuButton?: boolean;
    id?: string;
    uniqueRowIdentifier?: keyof T;
    rowNumberHeader?: string;
    enableDetailTooltip?: boolean;
    enableMenuTooltip?: boolean;
    detailTooltipTitle?: string;
    menuTooltipTitle?: string;
    isLoading?: boolean;
    showProgressBars?: boolean;
    enablePagination?: boolean;
    emptyState?: EmptyStateProps;
    retryButtonProps?: RetryButtonProps;
    dropdownAnchorOrigin?: {
        vertical: "top" | "bottom" | "center";
        horizontal: "left" | "right" | "center";
    };
    dropdownTransformOrigin?: {
        vertical: "top" | "bottom" | "center";
        horizontal: "left" | "right" | "center";
    };
}
