import * as react_jsx_runtime from 'react/jsx-runtime';
import { Table, ColumnDef } from '@tanstack/react-table';
import React__default from 'react';

interface DataTableViewOptionsProps$2<TData> {
    table: Table<TData>;
    transformColumnName?: (id: string) => string;
}
declare function DataTableViewOptions<TData>({ table, transformColumnName, }: DataTableViewOptionsProps$2<TData>): react_jsx_runtime.JSX.Element;

interface DataTableSearchProps<TData> {
    table: Table<TData>;
    keySearch: string;
    placeholder: string;
}
declare function DataTableSearch<TData>({ table, keySearch, placeholder, }: DataTableSearchProps<TData>): react_jsx_runtime.JSX.Element;

interface DataTableViewOptionsProps$1<TData, TValue> {
    table: Table<TData>;
    columns: ColumnDef<TData, TValue>[];
    setQueryParams?: React__default.Dispatch<React__default.SetStateAction<ListParams$1>>;
    isLoadingTable?: boolean;
    dataLabel: string;
    actionColumns?: string[];
    messageEmpty?: React__default.ReactNode;
    dividingColumnKey?: string[];
    loadingContent?: React__default.ReactNode;
    pageSizeOptions?: number[];
    className?: string;
    isScrollable?: boolean;
    scrollMaxHeightClass?: string;
    fixedHeader?: boolean;
}
interface ListParams$1 {
    [propName: string]: string | string[];
}
declare const DataTableMainFrame: <TData, TValue>({ table, columns, isLoadingTable, loadingContent, setQueryParams, dataLabel, actionColumns, messageEmpty, dividingColumnKey, pageSizeOptions, className, scrollMaxHeightClass, isScrollable, fixedHeader, }: DataTableViewOptionsProps$1<TData, TValue>) => react_jsx_runtime.JSX.Element;

interface DataTablePaginationProps<TData> {
    table: Table<TData>;
    pageSizeOptions?: number[];
    dataLabel?: string;
}
declare function DataTablePagination<TData>({ table, pageSizeOptions, dataLabel, }: DataTablePaginationProps<TData>): react_jsx_runtime.JSX.Element;

declare const DataTablePaginationSkeleton: React__default.FC;

interface DataTableRowSkeletonProps extends React__default.HTMLAttributes<HTMLDivElement> {
    columnCount: number;
    rowCount?: number;
    cellWidths?: string[];
    shrinkZero?: boolean;
}
declare function DataTableRowSkeleton(props: DataTableRowSkeletonProps): react_jsx_runtime.JSX.Element;

interface DataTableSkeletonProps extends React__default.HTMLAttributes<HTMLDivElement> {
    /**
     * The number of columns in the table.
     * @type number
     */
    columnCount: number;
    /**
     * The number of rows in the table.
     * @default 10
     * @type number | undefined
     */
    rowCount?: number;
    /**
     * The number of searchable columns in the table.
     * @default 0
     * @type number | undefined
     */
    searchableColumnCount?: number;
    /**
     * The number of filterable columns in the table.
     * @default 0
     * @type number | undefined
     */
    filterableColumnCount?: number;
    /**
     * Flag to show the table view options.
     * @default undefined
     * @type boolean | undefined
     */
    showViewOptions?: boolean;
    /**
     * The width of each cell in the table.
     * The length of the array should be equal to the columnCount.
     * Any valid CSS width value is accepted.
     * @default ["auto"]
     * @type string[] | undefined
     */
    cellWidths?: string[];
    /**
     * Flag to show the pagination bar.
     * @default true
     * @type boolean | undefined
     */
    withPagination?: boolean;
    /**
     * Flag to prevent the table cells from shrinking.
     * @default false
     * @type boolean | undefined
     */
    shrinkZero?: boolean;
}
declare function DataTableSkeleton(props: DataTableSkeletonProps): react_jsx_runtime.JSX.Element;

interface DataTableStatusProps<TData, TEnum> {
    table: Table<TData>;
    uniqueStatusValues: TEnum[];
    renderStatusMessage(status: TEnum): string;
    className?: string;
}
declare function DataTableStatus<TData, TEnum>({ table, uniqueStatusValues, renderStatusMessage, className, }: DataTableStatusProps<TData, TEnum>): react_jsx_runtime.JSX.Element;

interface DataTableViewOptionsProps<TData, TValue> {
    table: Table<TData>;
    columns: ColumnDef<TData, TValue>[];
    setQueryParams?: React__default.Dispatch<React__default.SetStateAction<ListParams>>;
    isLoadingTable?: boolean;
    dataLabel: string;
    actionColumns?: string[];
    data: TData[];
    onDataChange?: (newData: TData[]) => void;
    messageEmpty?: React__default.ReactNode;
    rowKey: keyof TData | Array<keyof TData> | ((row: TData) => string | number);
    dividingColumnKey?: string[];
    loadingContent?: React__default.ReactNode;
    pageSizeOptions?: number[];
    className?: string;
    isScrollable?: boolean;
    scrollMaxHeightClass?: string;
    fixedHeader?: boolean;
}
type RowData = {
    [key: string]: any;
};
interface ListParams {
    [propName: string]: string | string[];
}
declare const DataTableMainFrameSortable: <TData extends RowData, TValue>({ table, columns, isLoadingTable, loadingContent, setQueryParams, dataLabel, actionColumns, data, messageEmpty, onDataChange, rowKey, dividingColumnKey, pageSizeOptions, className, scrollMaxHeightClass, isScrollable, fixedHeader, }: DataTableViewOptionsProps<TData, TValue>) => react_jsx_runtime.JSX.Element;

export { DataTableMainFrame, DataTableMainFrameSortable, DataTablePagination, DataTablePaginationSkeleton, DataTableRowSkeleton, DataTableSearch, DataTableSkeleton, DataTableStatus, DataTableViewOptions };
