import type { Component, ExtractPublicPropTypes } from 'vue';
import type { ComponentSize } from 'element-plus/es/constants';
import type { IconPropType } from 'element-plus/es/utils';
export declare const buttonTypes: readonly ["default", "primary", "success", "warning", "info", "danger", "text", ""];
export declare const buttonNativeTypes: readonly ["button", "submit", "reset"];
export type ButtonType = (typeof buttonTypes)[number];
export type ButtonNativeType = (typeof buttonNativeTypes)[number];
export interface ButtonProps {
    /**
     * @description button size
     */
    size?: ComponentSize;
    /**
     * @description disable the button
     */
    disabled?: boolean;
    /**
     * @description button type
     */
    type?: ButtonType;
    /**
     * @description icon component
     */
    icon?: IconPropType;
    /**
     * @description native button type
     */
    nativeType?: ButtonNativeType;
    /**
     * @description determine whether it's loading
     */
    loading?: boolean;
    /**
     * @description customize loading icon component
     */
    loadingIcon?: IconPropType;
    /**
     * @description determine whether it's a plain button
     */
    plain?: boolean;
    /**
     * @description determine whether it's a text button
     */
    text?: boolean;
    /**
     * @description determine whether it's a link button
     */
    link?: boolean;
    /**
     * @description determine whether the text button background color is always on
     */
    bg?: boolean;
    /**
     * @description native button autofocus
     */
    autofocus?: boolean;
    /**
     * @description determine whether it's a round button
     */
    round?: boolean;
    /**
     * @description determine whether it's a circle button
     */
    circle?: boolean;
    /**
     * @description determine whether it's a dashed button
     */
    dashed?: boolean;
    /**
     * @description custom button color, automatically calculate `hover` and `active` color
     */
    color?: string;
    /**
     * @description dark mode, which automatically converts `color` to dark mode colors
     */
    dark?: boolean;
    /**
     * @description automatically insert a space between two chinese characters
     */
    autoInsertSpace?: boolean;
    /**
     * @description custom element tag
     */
    tag?: string | Component;
}
/**
 * @deprecated Removed after 3.0.0, Use `ButtonProps` instead.
 */
export declare const buttonProps: {
    readonly size: {
        readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "small" | "default" | "large", never>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    readonly disabled: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
    readonly type: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger", unknown, "", boolean>;
    readonly icon: {
        readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => (string | Component) & {}) | (() => string | Component) | ((new (...args: any[]) => (string | Component) & {}) | (() => string | Component))[], unknown, unknown>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    readonly nativeType: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "button" | "reset" | "submit", unknown, "button", boolean>;
    readonly loading: BooleanConstructor;
    readonly loadingIcon: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (string | Component) & {}) | (() => string | Component) | ((new (...args: any[]) => (string | Component) & {}) | (() => string | Component))[], unknown, unknown, () => any, boolean>;
    readonly plain: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
    readonly text: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
    readonly link: BooleanConstructor;
    readonly bg: BooleanConstructor;
    readonly autofocus: BooleanConstructor;
    readonly round: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
    readonly circle: BooleanConstructor;
    readonly dashed: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
    readonly color: StringConstructor;
    readonly dark: BooleanConstructor;
    readonly autoInsertSpace: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
    readonly tag: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (string | Component) & {}) | (() => string | Component) | ((new (...args: any[]) => (string | Component) & {}) | (() => string | Component))[], unknown, unknown, "button", boolean>;
};
export declare const buttonEmits: {
    click: (evt: MouseEvent) => boolean;
};
/**
 * @deprecated Removed after 3.0.0, Use `ButtonProps` instead.
 */
export type ButtonPropsPublic = ExtractPublicPropTypes<typeof buttonProps>;
export type ButtonEmits = typeof buttonEmits;
export interface ButtonConfigContext {
    type?: ButtonProps['type'];
    plain?: ButtonProps['plain'];
    text?: ButtonProps['text'];
    round?: ButtonProps['round'];
    dashed?: ButtonProps['dashed'];
    autoInsertSpace?: ButtonProps['autoInsertSpace'];
}
