import type { ReactElement, ReactNode } from "react";
import React from "react";
interface TabsProps {
    readonly children: ReactElement | Array<ReactElement | null | undefined | boolean>;
    /**
     * Specifies the index of the tab that should be active on mount
     *
     * @default 0
     */
    readonly defaultTab?: number;
    /**
     * Specifies the index of the active tab.
     * If provided, the component will be controlled and the active tab will be determined by this prop.
     * If not provided, the component will manage its own state internally.
     */
    readonly activeTab?: number;
    /**
     * Callback that fires when the active tab changes
     * @param newTabIndex
     */
    onTabChange?(newTabIndex: number): void;
}
export declare function Tabs({ children, defaultTab, activeTab: controlledActiveTab, onTabChange, }: TabsProps): React.JSX.Element;
interface TabProps {
    readonly label: string | ReactNode;
    readonly children: ReactNode | ReactNode[];
    onClick?(event: React.MouseEvent<HTMLButtonElement>): void;
}
export declare function Tab({ label }: TabProps): React.JSX.Element;
interface InternalTabProps {
    readonly label: string | ReactNode;
    readonly selected: boolean;
    activateTab(): void;
    onClick?(event: React.MouseEvent<HTMLButtonElement>): void;
    readonly tabIndex: number;
}
declare const InternalTab: React.ForwardRefExoticComponent<InternalTabProps & React.RefAttributes<HTMLButtonElement>>;
export { InternalTab };
