import { ExtractPropTypes, PropType } from 'vue';
import { MouseEventHandler } from '../_util/EventInterface';
import { SizeType } from '../config-provider';
import { VueTypeValidableDef } from 'vue-types';
export type ButtonType = 'link' | 'default' | 'primary' | 'ghost' | 'dashed' | 'text' | 'colours';
export type ButtonShape = 'default' | 'circle' | 'round';
export type ButtonHTMLType = 'submit' | 'button' | 'reset';
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;
        }>;
        default: () => boolean | {
            delay?: number;
        };
    };
    disabled: {
        type: BooleanConstructor;
        default: undefined;
    };
    ghost: {
        type: BooleanConstructor;
        default: undefined;
    };
    block: {
        type: BooleanConstructor;
        default: undefined;
    };
    danger: {
        type: BooleanConstructor;
        default: undefined;
    };
    icon: VueTypeValidableDef<any>;
    href: StringConstructor;
    target: StringConstructor;
    title: StringConstructor;
    onClick: {
        type: PropType<MouseEventHandler | MouseEventHandler[]>;
    };
    onMousedown: {
        type: PropType<MouseEventHandler | MouseEventHandler[]>;
    };
};
export type ButtonProps = Partial<ExtractPropTypes<ReturnType<typeof buttonProps>>>;
export default buttonProps;
