import type { ExtractPropTypes, PropType, VNode } from 'vue';
import type { SizeType } from '../config-provider';
import type { MouseEventHandler } from '../_util/EventInterface';
export type ButtonType = 'link' | 'default' | 'primary' | 'dashed' | 'text';
export type ButtonShape = 'default' | 'circle' | 'round';
export type ButtonIconPosition = 'start' | 'end';
export type ButtonHTMLType = 'submit' | 'button' | 'reset';
export type ButtonVariantType = 'outlined' | 'dashed' | 'solid' | 'filled' | 'text' | 'link';
declare const _ButtonColorTypes: readonly ["default", "primary", "danger", "blue", "purple", "cyan", "green", "magenta", "pink", "red", "orange", "yellow", "volcano", "geekblue", "lime", "gold"];
export type ButtonColorType = (typeof _ButtonColorTypes)[number];
export type LegacyButtonType = ButtonType | 'danger';
export declare function convertLegacyProps(type?: LegacyButtonType): ButtonProps;
export declare const buttonProps: () => {
    prefixCls: StringConstructor;
    type: PropType<ButtonType>;
    htmlType: {
        type: PropType<ButtonHTMLType>;
        default: string;
    };
    shape: {
        type: PropType<ButtonShape>;
    };
    size: {
        type: PropType<SizeType>;
    };
    loading: {
        type: PropType<boolean | {
            delay?: number;
            icon?: VNode;
        }>;
        default: () => boolean | {
            delay?: number;
            icon?: VNode;
        };
    };
    disabled: {
        type: BooleanConstructor;
        default: any;
    };
    ghost: {
        type: BooleanConstructor;
        default: any;
    };
    block: {
        type: BooleanConstructor;
        default: any;
    };
    danger: {
        type: BooleanConstructor;
        default: any;
    };
    icon: import("vue-types").VueTypeValidableDef<any>;
    href: StringConstructor;
    target: StringConstructor;
    title: StringConstructor;
    onClick: {
        type: PropType<MouseEventHandler | MouseEventHandler[]>;
    };
    onMousedown: {
        type: PropType<MouseEventHandler | MouseEventHandler[]>;
    };
    autoInsertSpace: BooleanConstructor;
    iconPosition: {
        type: PropType<ButtonIconPosition>;
        default: string;
    };
    color: PropType<"default" | "blue" | "cyan" | "gold" | "green" | "lime" | "magenta" | "orange" | "pink" | "purple" | "red" | "yellow" | "volcano" | "geekblue" | "danger" | "primary">;
    variant: PropType<ButtonVariantType>;
};
export type ButtonProps = Partial<ExtractPropTypes<ReturnType<typeof buttonProps>>>;
export default buttonProps;
