import { IconName } from '@mesalvo/icons';
import { DropdownItemProps } from '../../Dropdown/components/items';
import { IconButtonProps } from '../../IconButton/IconButton';
import { CustomColumn } from './customColumn';
export type DataType = {
    [key: string]: string | number | boolean | DataType | DataType[] | null;
};
export declare enum DataValidationErrors {
    DataIsNotArray = "DataIsNotArray",
    NoData = "NoData",
    NotArrayOfObjects = "NotArrayOfObjects",
    DifferentKeys = "DifferentKeys"
}
export type ErrorMessage = keyof typeof DataValidationErrors;
export type DataValidation = {
    hasError: false;
} | {
    hasError: true;
    message: ErrorMessage;
};
/**
 * Column Data Type
 * @name ColumnDataType
 */
export type ColumnDataType = "string" | "number" | "boolean" | "object" | "array" | "null";
export type Translate = (key: string) => string;
export interface Column<T> extends Omit<CustomColumn<T>, "columnName"> {
    name: string;
    /**
     * Column Data Type part of the Column
     * @name dataType
     * @type ColumnDataType
     * @description The data type of the column
     */
    dataType: ColumnDataType;
    label: string;
}
export type ColumnName = string;
export type ColumnsConfig<T> = {
    customColumns?: {
        [K in keyof T]?: CustomColumn<T[K]>;
    };
    columnOrder?: (keyof T)[];
    translate: Translate;
};
export type CompleteColumnConfig<T> = ColumnsConfig<T> & {
    translate: Translate;
};
export interface TableActions extends Omit<IconButtonProps, "icon"> {
    icon: IconName;
    onClick: () => void;
    label: string;
    disabled?: boolean;
}
export interface RowActions<T> extends Omit<DropdownItemProps, "onClick" | "children"> {
    onClick?: (row: T) => void;
    children?: (row: T) => React.ReactNode;
}
export type TableSortingValue<T> = {
    column: keyof T;
    direction: "asc" | "desc";
};
export interface TableSorting<T> {
    value: TableSortingValue<T> | undefined;
    setValue: (value: TableSortingValue<T> | undefined) => void;
}
//# sourceMappingURL=base.d.ts.map