import type { ButtonHTMLAttributes } from 'vue';
import type { IconName } from '../Icon';
import type { SharedButtonAppearance, SharedButtonSize, SharedButtonType, SharedButtonVariant } from '../shared/button/types';
export type IconButtonProps = {
label: string;
appearance?: SharedButtonAppearance;
variant?: SharedButtonVariant;
size?: SharedButtonSize;
type?: SharedButtonType;
icon?: IconName;
/**
* Accessible name for the button (screen readers). When set, the hover tooltip
* still uses `label` but is not linked as aria-describedby so SR does not repeat it.
*/
ariaLabel?: string;
/** Icon properties */
/** Tooltip properties */
hideTooltip?: boolean;
tooltipPosition?: string;
tooltipVariant?: string;
tooltipZindex?: number;
tooltipOffset?: number[];
tooltipWithinTarget?: boolean;
/** Button properties */
isDisabled?: boolean;
isLoading?: boolean;
isRounded?: boolean;
isPressed?: boolean | undefined;
descriptionTextId?: string;
} & /* @vue-ignore */ ButtonHTMLAttributes;
type __VLS_Slots = {
default: () => unknown;
pin: (props: {}) => unknown;
};
declare const __VLS_base: import("vue").DefineComponent any;
}, string, import("vue").PublicProps, Readonly & Readonly<{
onClick?: ((event: MouseEvent) => any) | undefined;
}>, {
size: SharedButtonSize;
tooltipVariant: string;
tooltipPosition: string;
type: SharedButtonType;
variant: SharedButtonVariant;
appearance: SharedButtonAppearance;
icon: IconName;
tooltipZindex: number;
tooltipWithinTarget: boolean;
isDisabled: boolean;
isLoading: boolean;
isRounded: boolean;
isPressed: boolean;
descriptionTextId: string;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
declare const __VLS_export: __VLS_WithSlots;
declare const _default: typeof __VLS_export;
export default _default;
type __VLS_WithSlots = T & {
new (): {
$slots: S;
};
};