import { CustomSlotsType, VueNode } from '../_util/type';
import { default as buttonProps, ButtonType, ButtonHTMLType, ButtonShape } from './buttonTypes';
import { DefineComponent, ExtractPropTypes, PropType, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
import { ButtonSize } from '.';
import { VueTypeValidableDef } from 'vue-types';
import { MouseEventHandler } from '../_util/EventInterface';
export { buttonProps };
declare const _default: DefineComponent<ExtractPropTypes<{
    prefixCls: StringConstructor;
    type: PropType<ButtonType>;
    htmlType: {
        type: PropType<ButtonHTMLType>;
        default: string;
    };
    shape: {
        type: PropType<ButtonShape>;
    };
    size: {
        type: PropType<ButtonSize>;
    };
    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[]>;
    };
}>, () => VueNode, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly< ExtractPropTypes<{
    prefixCls: StringConstructor;
    type: PropType<ButtonType>;
    htmlType: {
        type: PropType<ButtonHTMLType>;
        default: string;
    };
    shape: {
        type: PropType<ButtonShape>;
    };
    size: {
        type: PropType<ButtonSize>;
    };
    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[]>;
    };
}>> & Readonly<{}>, {
    block: boolean;
    disabled: boolean;
    loading: boolean | {
        delay?: number;
    };
    ghost: boolean;
    danger: boolean;
    htmlType: ButtonHTMLType;
}, CustomSlotsType<{
    icon: any;
    default: any;
}>, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export default _default;
