import { type KeyboardEvent, type MouseEvent, type ReactNode } from "react";
import { type IAccessibilityConfigBase } from "../../typings/accessibility.js";
import { type IconType } from "../@types/icon.js";
import { type SizeLarge, type SizeMedium, type SizeSmall } from "../@types/size.js";
import { type VariantDanger, type VariantDropdownInline, type VariantLink, type VariantPopOut, type VariantPrimary, type VariantSecondary, type VariantTertiary, type VariantTooltip } from "../@types/variant.js";
/**
 * @internal
 */
export interface IUiButtonAccessibilityConfig extends IAccessibilityConfigBase {
    iconAriaHidden?: boolean;
}
/**
 * @internal
 */
export interface IUiButtonProps {
    id?: string;
    size?: SizeSmall | SizeMedium | SizeLarge;
    variant?: VariantPrimary | VariantSecondary | VariantTertiary | VariantPopOut | VariantDanger | VariantTooltip | VariantLink | VariantDropdownInline;
    disableIconAnimation?: boolean;
    iconBefore?: IconType;
    iconBeforeSize?: number;
    badgeAfter?: number | string;
    iconAfter?: IconType;
    iconAfterSize?: number;
    label: string;
    isDisabled?: boolean;
    isLoading?: boolean;
    isSelected?: boolean;
    tooltip?: ReactNode;
    onClick?: (e: MouseEvent<HTMLButtonElement>) => void;
    onKeyDown?: (e: KeyboardEvent<HTMLButtonElement>) => void;
    dataId?: string;
    dataTestId?: string;
    accessibilityConfig?: IUiButtonAccessibilityConfig;
    maxWidth?: number;
    tabIndex?: number;
    /**
     * When true, the button is focused on mount via the native HTML
     * `autofocus` attribute. Use sparingly — best fit is the safest
     * action in a confirmation dialog so accidental Enter presses cancel
     * rather than confirm a destructive action.
     */
    autoFocus?: boolean;
}
/**
 * @internal
 */
export declare const UiButton: import("react").ForwardRefExoticComponent<IUiButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
//# sourceMappingURL=UiButton.d.ts.map