import * as React from "react";
import { type ReactElement } from "react";
export declare enum ETabSizes {
    XS = "xs",
    SM = "sm",
    MD = "md",
    LG = "lg"
}
export type TTabSize = `${ETabSizes}`;
/**
 * Props for the Tab component.
 */
export interface ITabProps {
    /**
     * Id of the tab.
     */
    id?: string;
    /**
     * Name of the tab.
     */
    title: React.ReactNode;
    /**
     * Function to call when the tab is displayed.
     */
    onEnter?: () => void;
    /**
     * Function to call when the tab is exited.
     */
    onExit?: () => void;
    /**
     * Dynamically updates the className applied to the component.
     */
    className?: string;
    /**
     * Content to be displayed within the tab.
     */
    children: React.ReactNode;
    /**
     * Indicates whether the tab is disabled.
     */
    disabled?: boolean;
    /**
     * Icon to be displayed before the title of the Tab.
     * @description
     * This prop accepts either an IconType (string) or a ReactNode.
     * - If an IconType is provided, it will be rendered as-is.
     * - If a ReactNode is provided, it will be rendered as-is.
     */
    prefixIcon?: React.ReactNode;
    /**
     * Icon to be displayed after the title of the Tab.
     * @description
     * This prop accepts either an IconType (string) or a ReactNode.
     * - If an IconType is provided, it will be rendered as-is.
     * - If a ReactNode is provided, it will be rendered as-is.
     */
    suffixIcon?: React.ReactNode;
}
export declare const Tab: React.ForwardRefExoticComponent<ITabProps & React.RefAttributes<HTMLDivElement>>;
/**
 * Props for the Tabs component.
 */
export interface ITabsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect"> {
    /**
     * Active tab index. Tab index starts from 0.
     */
    activeIndex?: number;
    /**
     * Default active tab index, to be used with the uncontrolled version of the Tabs component.
     * @default 0
     */
    defaultActiveIndex?: number;
    /**
     * Dynamically updates the className applied to the component.
     */
    className?: string;
    /**
     * Renders all the tabs at once and switches between them using CSS.
     * @default false
     */
    switchUsingCss?: boolean;
    /**
     * Called on click of a tab header.
     * @param selectedTabIndex {number} Selected tab index.
     */
    onSelect?: (selectedTabIndex: number) => void;
    /**
     * Array of items to be displayed in the Tabs,
     * each item should be wrapped in Tabs.Tab component
     * @required
     * @example
     * ```tsx
     * <Tabs>
     *  <Tabs.Tab title="Tab 1">Content of Tab 1</Tabs.Tab>
     * </Tabs>
     * ```
     */
    children: ReactElement<ITabProps> | Array<ReactElement<ITabProps> | boolean> | boolean;
    /**
     * Size of the tab.
     * @default md
     */
    size?: TTabSize;
    /**
     * Variant of the tab.
     * @default text
     */
    variant?: "filled" | "text" | "brick";
    /**
     * Color of the tab. Only applicable for filled variant.
     */
    color?: "primary" | "secondary";
}
declare const TabsComponent: React.ForwardRefExoticComponent<ITabsProps & React.RefAttributes<HTMLDivElement>>;
type TTabsType = typeof TabsComponent & {
    Tab: typeof Tab;
};
declare const Tabs: TTabsType;
export { Tabs };
