import React, { type ReactElement } from "react";
import { type VibeComponentProps } from "../../../types";
import { type TableHeaderProps } from "../TableHeader/TableHeader";
import { type TableBodyProps } from "../TableBody/TableBody";
import { RowSizes as RowSizesEnum } from "./TableConsts";
import { type RowSizes } from "./Table.types";
import { type SubIcon } from "@vibe/icon";
export type TableLoadingStateType = "long-text" | "medium-text" | "circle" | "rectangle";
type Width = number | `${number}%` | `${number}px` | `${number}fr`;
export interface TableColumn {
    /**
     * Unique identifier for the column.
     */
    id: string;
    /**
     * Column title displayed in the header.
     */
    title: string;
    /**
     * Additional information displayed as a tooltip.
     */
    infoContent?: string;
    /**
     * Column width configuration.
     */
    width?: Width | {
        min: Width;
        max: Width;
    };
    /**
     * Icon displayed next to the column title.
     */
    icon?: SubIcon;
    /**
     * Loading state type for the column when data is being fetched.
     */
    loadingStateType?: TableLoadingStateType;
}
export interface TableProps extends VibeComponentProps {
    /**
     * Defines the columns of the table.
     */
    columns: TableColumn[];
    /**
     * State of the data being displayed (loading or error).
     */
    dataState?: {
        isLoading?: boolean;
        isError?: boolean;
    };
    /**
     * React element displayed when there is an error state.
     */
    errorState: ReactElement;
    /**
     * React element displayed when there is no data.
     */
    emptyState: ReactElement;
    /**
     * Custom styles for the table.
     */
    style?: React.CSSProperties;
    /**
     * The child components inside the table, such as `<TableHeader />` and `<TableBody />`.
     */
    children?: ReactElement<TableHeaderProps> | ReactElement<TableBodyProps> | Array<ReactElement<TableHeaderProps> | ReactElement<TableBodyProps>>;
    /**
     * The row size of the table.
     */
    size?: RowSizes;
    /**
     * If true, removes the table's outer border.
     */
    withoutBorder?: boolean;
}
declare const _default: React.ForwardRefExoticComponent<TableProps & React.RefAttributes<HTMLElement>> & {
    sizes: typeof RowSizesEnum;
};
export default _default;
