import { default as React } from 'react';
import { CustomAction } from '../../../types/customActions';
export type ComponentType = "text-input" | "number-input" | "auto-suggest" | "date-picker" | "label-text" | "drop-down-input";
export interface ColumnConfig {
    id: string;
    label?: string;
    tooltip?: string;
    shouldDisplay?: boolean;
    shouldVisible?: boolean;
    width?: string;
    elementType?: ComponentType;
    required?: boolean;
}
interface CEDataGridDynamicTableProps {
    title?: React.ReactNode;
    jsonData: any[];
    columnList?: ColumnConfig[];
    ischeckBoxInGrid?: boolean;
    isSingleSelectionMode?: boolean;
    isRadioButtonInGrid?: boolean;
    renderRadioInColumnId?: string | string[];
    onRadioChange?: (info: {
        rowIndex: number;
        columnId: string;
        rowData: any;
    }) => void;
    getSelectedRadioValue?: (rowIndex: number) => string;
    isSearchBoxInGrid?: boolean;
    isAddButtonRequired?: boolean;
    isEditButtonRequired?: boolean;
    isDeleteButtonRequired?: boolean;
    isApproveButtonRequired?: boolean;
    isReassignButtonRequired?: boolean;
    isCancelButtonRequired?: boolean;
    isCopyButtonRequired?: boolean;
    isViewButtonRequired?: boolean;
    noOfPagesPerPage?: number;
    /** Optional total number of records available for the grid (for display only). */
    totalRecords?: number;
    handleEditClick?: (row: any, rowIndex: number) => void;
    handleAddClick?: () => void;
    handleDeleteClick?: (row: any, rowIndex: number) => void;
    handleApproveClick?: (row: any, rowIndex: number) => void;
    handleReassignClick?: () => void;
    handleCancelClick?: (row: any, rowIndex: number) => void;
    handleCopyClick?: (row: any, rowIndex: number) => void;
    handleViewClick?: (row: any, rowIndex: number) => void;
    clickableColumns?: string[];
    isExportAllToExcel?: boolean;
    conditionalClickableColumns?: Record<string, string[]>;
    /**
     * Optional consumer predicate. Return true to make the specific cell (row + column) clickable.
     * If omitted, existing clickableColumns / conditionalClickableColumns behavior is used.
     */
    clickableCellPredicate?: (rowData: any, columnId: string) => boolean;
    handleCellClick?: (data: any, columnId?: any, event?: any) => void;
    onReload?: () => void;
    showDownloadIcon?: boolean;
    downloadOptions?: Array<{
        label: string;
        onClick: () => void;
        /**
         * If true, this downloadOptions entry's label will be used as the
         * default download item label (which triggers the built-in export).
         * The entry itself will not be rendered as a separate item in the
         * dropdown (it's used only to provide the label).
         */
        usedefault?: boolean;
        /** When true and usedefault is also true, the built-in export will force-export the full dataset (allData). */
        forceAll?: boolean;
    }>;
    /**
     * Label for the default download action included at the top of the
     * download dropdown when `downloadOptions` is provided. Defaults to
     * "Export to Excel".
     */
    showRefreshIcon?: boolean;
    showFullViewIcon?: boolean;
    showColumnVisibilityIcon?: boolean;
    showSortIcon?: boolean;
    showFilterIcon?: boolean;
    defaultSortConfig?: {
        column: string;
        direction: "asc" | "desc";
    };
    onDataUpdate?: (updatedData: {
        fullData: any[];
        updatedRow: any;
    }) => void;
    isOverrideCSS?: any;
    showPagination?: boolean;
    shouldResetSearchOnDataChange?: boolean;
    pageSizeOptions?: Array<number>;
    handleSelectedRows?: ((rows: any[]) => void) | ((payload: {
        ids: (string | number)[];
        rows?: any[];
    }) => void);
    /** Field name OR extractor function to use as the stable selection key on each row. Defaults to `id`. */
    selectionKey?: string | ((row: any) => string | number);
    rowsSelected?: Set<number>;
    /** Called when pagination changes; receives page index (0-based) and optionally page size. */
    onPageChange?: (page: number, pageSize?: number) => void;
    /**
     * Enables server-side pagination. When true, `jsonData` is treated as the
     * already-fetched page data and the grid stops slicing rows locally.
     */
    serverSidePagination?: boolean;
    /**
     * Optional consumer predicate. Return true to disable the specific row.
     * Receives the row data. If omitted, all rows are enabled.
     */
    getRowDisabled?: (row: any) => boolean;
    /**
     * Optional function to dynamically style rows based on column values.
     * Receives the row data and returns an object with CSS properties.
     * Supports backgroundColor, color, condition, and any other CSS properties.
     * Example: getRowStyle={(row) => ({ backgroundColor: row.status === 'active' ? '#E8F5E9' : undefined, color: '#C62828' })}
     */
    getRowStyle?: (row: any) => {
        backgroundColor?: string;
        color?: string;
        condition?: boolean;
        [key: string]: string | number | boolean | undefined;
    } | undefined;
    /**
     * Array of custom action icons to render in the action column.
     * Developers can add their own icons with custom onclick functionality.
     * @default []
     */
    customActions?: CustomAction[];
    shouldColumnPersist?: boolean;
}
declare const CEDataGridDynamicTable: React.FC<CEDataGridDynamicTableProps>;
export default CEDataGridDynamicTable;
