import type { ButtonHTMLAttributes, ExtractPropTypes, PropType, SlotsType, VNode, VNodeChild } from 'vue';
import type { BaseWaveRef } from '../../_internal';
import type { ExtractPublicPropTypes, MaybeArray } from '../../_utils';
import type { Size, Type } from './interface';
export declare const buttonProps: {
readonly color: StringConstructor;
readonly textColor: StringConstructor;
readonly text: BooleanConstructor;
readonly block: BooleanConstructor;
readonly loading: 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 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 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<"tiny" | "small" | "medium" | "large">;
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<{
'--n-border-color': string;
'--n-border-color-hover': string;
'--n-border-color-pressed': string;
'--n-border-color-focus': string;
'--n-border-color-disabled': string;
} | null>;
cssVars: import("vue").ComputedRef<{
'--n-width': string;
'--n-height': string;
'--n-font-size': string;
'--n-padding': string;
'--n-icon-size': string;
'--n-icon-margin': string;
'--n-border-radius': string;
'--n-border': string;
'--n-border-hover': string;
'--n-border-pressed': string;
'--n-border-focus': string;
'--n-border-disabled': string;
'--n-color': string;
'--n-color-hover': string;
'--n-color-pressed': string;
'--n-color-focus': string;
'--n-color-disabled': string;
'--n-ripple-color': string;
'--n-text-color': string;
'--n-text-color-hover': string;
'--n-text-color-pressed': string;
'--n-text-color-focus': string;
'--n-text-color-disabled': string;
'--n-font-weight': string;
'--n-bezier': string;
'--n-bezier-ease-out': string;
'--n-ripple-duration': string;
'--n-opacity-disabled': string;
'--n-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 theme: PropType>;
readonly themeOverrides: PropType>>;
readonly builtinThemeOverrides: PropType>>;
}>> & Readonly<{}>, {
readonly disabled: boolean;
readonly type: Type;
readonly bordered: boolean;
readonly block: boolean;
readonly loading: boolean;
readonly circle: boolean;
readonly round: boolean;
readonly text: boolean;
readonly strong: boolean;
readonly tertiary: boolean;
readonly ghost: boolean;
readonly secondary: boolean;
readonly quaternary: boolean;
readonly focusable: boolean;
readonly keyboard: boolean;
readonly tag: keyof HTMLElementTagNameMap;
readonly dashed: boolean;
readonly iconPlacement: "left" | "right";
readonly attrType: "button" | "submit" | "reset";
readonly nativeFocusBehavior: 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;
};