import * as react_jsx_runtime from 'react/jsx-runtime';
import react__default from 'react';
import { SortDirection } from '@tanstack/react-table';

interface HeadersData<DataType> {
    id: string;
    accessorKey: keyof DataType | '';
    label: string;
    isSortable?: boolean;
    width?: number | string;
    columnType?: 'th' | 'td';
    headerRenderFn?: () => react__default.ReactNode;
    cellRenderFn?: (data: DataType) => react__default.ReactNode;
}
type NormalRow<DataType> = DataType;
type GroupedRow<DataType> = {
    groupId: string;
    groupName: string;
    items: NormalRow<DataType>[];
};
interface BaseProps<DataType> {
    tableName: string;
    isLoading: boolean;
    headers: HeadersData<DataType>[];
    maxHeight?: string;
    selection?: {
        selectedIds: Set<string>;
        retainSelectionAccrossPages: boolean;
        setSelectedIds: react__default.Dispatch<react__default.SetStateAction<Set<string>>>;
        idSelector: (data: DataType) => string;
        checkBoxLabel?: (data: DataType) => string;
        hideSelectAll?: boolean;
        isRowSelectionDisabled?: (data: DataType) => boolean;
        onSelectAll?: () => void;
    };
    sort?: {
        sortBy: string;
        sortDirection: false | SortDirection;
        onSortClick: (sortby: string, sortDirection: false | SortDirection) => void;
    };
}
interface NormalTableProps<DataType> extends BaseProps<DataType> {
    tableType: 'normal';
    data: NormalRow<DataType>[];
}
interface GroupedTableProps<DataType> extends BaseProps<DataType> {
    tableType: 'grouped';
    data: GroupedRow<DataType>[];
}
declare const sortOptions: {
    asc: react_jsx_runtime.JSX.Element;
    desc: react_jsx_runtime.JSX.Element;
};
declare const sortOrder: readonly [false, "asc", "desc"];
interface SelectAllCheckboxProps<DataType> {
    tableName: string;
    data: DataType[];
    selectedIds: Set<string>;
    onToggle: (select: boolean) => void;
    idSelector: (data: DataType) => string;
    selectionCheckFn?: (data: DataType) => boolean;
}
declare const SelectAllCheckbox: <DataType>(props: SelectAllCheckboxProps<DataType>) => react__default.ReactElement;
type TableProps<DataType> = NormalTableProps<DataType> | GroupedTableProps<DataType>;
declare function CustomTable<DataType>(props: TableProps<DataType>): react_jsx_runtime.JSX.Element;

export { GroupedRow, GroupedTableProps, HeadersData, NormalRow, NormalTableProps, SelectAllCheckbox, CustomTable as default, sortOptions, sortOrder };
