import type { ButtonHTMLAttributes, ExtractPropTypes, PropType, SlotsType, VNode, VNodeChild } from 'vue';
import type { BaseWaveRef } from '../../_internal';
import type { ExtractPublicPropTypes, MaybeArray } from '../../_utils';
import type { ButtonSize, ButtonType } from './public-types';
export declare const buttonProps: {
readonly color: StringConstructor;
readonly textColor: StringConstructor;
readonly text: BooleanConstructor;
readonly block: BooleanConstructor;
readonly loading: BooleanConstructor;
readonly loadingSkeleton: BooleanConstructor;
readonly disabled: BooleanConstructor;
readonly circle: BooleanConstructor;
readonly size: PropType;
readonly ghost: BooleanConstructor;
readonly round: BooleanConstructor;
readonly secondary: BooleanConstructor;
readonly tertiary: BooleanConstructor;
readonly quaternary: BooleanConstructor;
readonly strong: BooleanConstructor;
readonly focusable: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly keyboard: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly tag: {
readonly type: PropType;
readonly default: "button";
};
readonly type: {
readonly type: PropType;
readonly default: "default";
};
readonly dashed: BooleanConstructor;
readonly renderIcon: PropType<() => VNodeChild>;
readonly iconPlacement: {
readonly type: PropType<"left" | "right">;
readonly default: "left";
};
readonly attrType: {
readonly type: PropType<"button" | "submit" | "reset">;
readonly default: "button";
};
readonly bordered: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly onClick: PropType void>>;
readonly nativeFocusBehavior: {
readonly type: BooleanConstructor;
readonly default: boolean;
};
readonly visible: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly theme: PropType>;
readonly themeOverrides: PropType>>;
readonly builtinThemeOverrides: PropType>>;
};
export type ButtonProps = ExtractPublicPropTypes;
export interface ButtonSlots {
default?: () => VNode[];
icon?: () => VNode[];
}
declare const Button: import("vue").DefineComponent;
readonly ghost: BooleanConstructor;
readonly round: BooleanConstructor;
readonly secondary: BooleanConstructor;
readonly tertiary: BooleanConstructor;
readonly quaternary: BooleanConstructor;
readonly strong: BooleanConstructor;
readonly focusable: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly keyboard: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly tag: {
readonly type: PropType;
readonly default: "button";
};
readonly type: {
readonly type: PropType;
readonly default: "default";
};
readonly dashed: BooleanConstructor;
readonly renderIcon: PropType<() => VNodeChild>;
readonly iconPlacement: {
readonly type: PropType<"left" | "right">;
readonly default: "left";
};
readonly attrType: {
readonly type: PropType<"button" | "submit" | "reset">;
readonly default: "button";
};
readonly bordered: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly onClick: PropType void>>;
readonly nativeFocusBehavior: {
readonly type: BooleanConstructor;
readonly default: boolean;
};
readonly visible: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly theme: PropType>;
readonly themeOverrides: PropType>>;
readonly builtinThemeOverrides: PropType>>;
}>, {
selfElRef: import("vue").Ref;
waveElRef: import("vue").Ref<{
play: () => void;
} | null, BaseWaveRef | {
play: () => void;
} | null>;
mergedClsPrefix: import("vue").Ref;
mergedFocusable: import("vue").ComputedRef;
mergedSize: import("vue").ComputedRef<"small" | "medium" | "large" | "tiny">;
showBorder: import("vue").ComputedRef;
enterPressed: import("vue").Ref;
rtlEnabled: import("vue").Ref | undefined;
handleMousedown: (e: MouseEvent) => void;
handleKeydown: (e: KeyboardEvent) => void;
handleBlur: () => void;
handleKeyup: (e: KeyboardEvent) => void;
handleClick: (e: MouseEvent) => void;
customColorCssVars: import("vue").ComputedRef<{
'--u-border-color': string;
'--u-border-color-hover': string;
'--u-border-color-pressed': string;
'--u-border-color-focus': string;
'--u-border-color-disabled': string;
} | null>;
cssVars: import("vue").ComputedRef<{
'text-decoration-line': string;
'text-underline-offset': string;
'line-height': string;
'--u-font-size': string;
'--u-font-weight': string;
'--u-color': string;
'--u-color-hover': string;
'--u-color-pressed': string;
'--u-color-focus': string;
'--u-color-focus-visible': string;
'--u-color-disabled': string;
'--u-ripple-color': string;
'--u-text-color': string;
'--u-text-color-hover': string;
'--u-text-color-pressed': string;
'--u-text-color-focus': string;
'--u-text-color-disabled': string;
'--u-width': string;
'--u-height': string;
'--u-padding': string;
'--u-icon-size': string;
'--u-icon-margin': string;
'--u-border-radius': string;
'--u-border': string;
'--u-border-hover': string;
'--u-border-pressed': string;
'--u-border-focus': string;
'--u-border-disabled': string;
'--u-bezier': string;
'--u-bezier-ease-out': string;
'--u-ripple-duration': string;
'--u-opacity-disabled': string;
'--u-wave-opacity': string;
}> | undefined;
themeClass: import("vue").Ref | undefined;
onRender: (() => void) | undefined;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly;
readonly ghost: BooleanConstructor;
readonly round: BooleanConstructor;
readonly secondary: BooleanConstructor;
readonly tertiary: BooleanConstructor;
readonly quaternary: BooleanConstructor;
readonly strong: BooleanConstructor;
readonly focusable: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly keyboard: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly tag: {
readonly type: PropType;
readonly default: "button";
};
readonly type: {
readonly type: PropType;
readonly default: "default";
};
readonly dashed: BooleanConstructor;
readonly renderIcon: PropType<() => VNodeChild>;
readonly iconPlacement: {
readonly type: PropType<"left" | "right">;
readonly default: "left";
};
readonly attrType: {
readonly type: PropType<"button" | "submit" | "reset">;
readonly default: "button";
};
readonly bordered: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly onClick: PropType void>>;
readonly nativeFocusBehavior: {
readonly type: BooleanConstructor;
readonly default: boolean;
};
readonly visible: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly theme: PropType>;
readonly themeOverrides: PropType>>;
readonly builtinThemeOverrides: PropType>>;
}>> & Readonly<{}>, {
readonly bordered: boolean;
readonly disabled: boolean;
readonly type: ButtonType;
readonly strong: boolean;
readonly circle: boolean;
readonly text: boolean;
readonly loading: boolean;
readonly tag: keyof HTMLElementTagNameMap;
readonly block: boolean;
readonly round: boolean;
readonly tertiary: boolean;
readonly loadingSkeleton: boolean;
readonly ghost: boolean;
readonly secondary: boolean;
readonly quaternary: boolean;
readonly focusable: boolean;
readonly keyboard: boolean;
readonly dashed: boolean;
readonly iconPlacement: "left" | "right";
readonly attrType: "submit" | "button" | "reset";
readonly nativeFocusBehavior: boolean;
readonly visible: boolean;
}, SlotsType, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
type InternalButtonProps = ExtractPropTypes;
type NativeButtonProps = Omit;
type MergedProps = Partial;
export default Button;
export declare const XButton: new () => {
$props: MergedProps;
};