import React, { type AriaAttributes } from "react";
import { type TooltipProps } from "../Tooltip/Tooltip";
import { type SubIcon } from "@vibe/icon";
import { type Size } from "./services/IconButton-helpers";
import { type VibeComponentProps } from "../../types";
import { type ButtonColor, type ButtonType } from "@vibe/button";
export interface IconButtonProps extends VibeComponentProps {
    /**
     * Callback fired when the button is clicked.
     */
    onClick?: (event: React.MouseEvent) => void;
    /**
     * Class name applied to the button wrapper.
     */
    wrapperClassName?: string;
    /**
     * Class name applied to the icon.
     */
    iconClassName?: string;
    /**
     * The icon displayed inside the button.
     */
    icon?: SubIcon;
    /**
     * The ID of the element that labels this button.
     */
    ariaLabeledBy?: string;
    /**
     * The ARIA label for accessibility.
     */
    ariaLabel?: string;
    /**
     * If true, indicates that the button controls a popup.
     */
    ariaHasPopup?: React.HTMLProps<HTMLButtonElement>["aria-haspopup"];
    /**
     * If true, indicates that the associated popup is open.
     */
    ariaExpanded?: boolean;
    /**
     * The ID of the region controlled by the button.
     */
    ariaControls?: string;
    /**
     * ID of the element describing the button.
     */
    "aria-describedby"?: AriaAttributes["aria-describedby"];
    /**
     * If true, hides the button from assistive technologies.
     */
    "aria-hidden"?: AriaAttributes["aria-hidden"];
    /**
     * Indicates the current "pressed" state of toggle buttons.
     */
    "aria-pressed"?: AriaAttributes["aria-pressed"];
    /**
     * The size of the button.
     */
    size?: Size;
    /**
     * If true, hides the tooltip.
     */
    hideTooltip?: boolean;
    /**
     * Props for the Tooltip component.
     */
    tooltipProps?: Partial<TooltipProps>;
    /**
     * Tooltip content displayed on hover.
     */
    tooltipContent?: string;
    /**
     * The button variant.
     */
    kind?: ButtonType;
    /**
     * If true, the button is in an active state.
     */
    active?: boolean;
    /**
     * The color of the button.
     */
    color?: ButtonColor;
    /**
     * If true, the button is disabled.
     */
    disabled?: boolean;
    /**
     * If disabled, this message will be displayed in the tooltip.
     */
    disabledReason?: string;
    /**
     * If true, the focus indicator is displayed inside the button instead of around it.
     */
    insetFocus?: boolean;
    /**
     * The tab order of the button.
     */
    tabIndex?: number;
    /**
     * If true, a loader replaces the icon.
     */
    loading?: boolean;
}
declare const _default: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<HTMLElement>> & {
    sizes: {
        readonly SMALL: "small";
        readonly MEDIUM: "medium";
        readonly LARGE: "large";
        readonly XXS: "xxs";
        readonly XS: "xs";
    };
    kinds: typeof import("@vibe/button/dist/Button/ButtonConstants").ButtonType;
    colors: typeof import("@vibe/button/dist/Button/ButtonConstants").ButtonColor;
};
export default _default;
