import { type AnchorHTMLAttributes, type ButtonHTMLAttributes, type ReactElement, type ReactNode } from "react";
import { type ComponentWithRippleProps } from "../interaction/types.js";
import { type CustomLinkComponent } from "../link/Link.js";
import { type BaseTabClassNameOptions } from "./tabStyles.js";
/**
 * @since 6.0.0
 */
export interface BaseTabProps extends ComponentWithRippleProps, BaseTabClassNameOptions {
    /**
     * Set this to `true` if the tab is currently active.
     *
     * This is normally provided by the {@link useTabs} hook.
     */
    active: boolean;
    /**
     * An optional icon to render with the with the {@link children}. The default
     * behavior will render this icon before the children.
     *
     * @see {@link iconAfter}
     * @see {@link stacked}
     */
    icon?: ReactNode;
    /**
     * Set this to `true` to render the {@link icon} after the {@link children}.
     *
     * @defaultValue `false`
     */
    iconAfter?: boolean;
}
/**
 * @since 6.0.0
 */
export interface TabButtonProps extends BaseTabProps, ButtonHTMLAttributes<HTMLButtonElement> {
    as?: "button";
}
/**
 * @since 6.0.0
 */
export interface TabLinkProps extends BaseTabProps, AnchorHTMLAttributes<HTMLAnchorElement> {
    as: CustomLinkComponent;
}
/**
 * @since 6.0.0
 */
export type TabProps = TabButtonProps | TabLinkProps;
/**
 * **Client Component**
 *
 * This component should usually be used with the `TabsList` component and
 * `useTabs` hook.
 *
 * @see {@link https://react-md.dev/components/tabs | Tabs Demos}
 * @see {@link useTabs}
 * @since 6.0.0
 */
export declare function Tab(props: TabProps): ReactElement;
