import { nextTick, Ref, StyleValue, ComponentInternalInstance, Component, VNodeProps, AllowedComponentProps, ComponentCustomProps, Attrs, Slot, ComponentPublicInstance, ComponentOptionsBase, ComputedRef, ComponentOptionsMixin, GlobalComponents, GlobalDirectives, ComponentProvideOptions, DebuggerEvent, WatchOptions, WatchStopHandle, ShallowUnwrapRef, ComponentCustomProperties, DefineComponent, PublicProps, CSSProperties } from 'vue';
import { ReferenceElement, Placement } from '@floating-ui/dom';
import { DropdownCommand, DropdownItem, DropdownPopperOptions, DropdownProps, DropdownRole, DropdownSelectItem, DropdownTrigger } from './dropdown.js';
import { ComponentSize } from '../../../xiaoye-primitives/index.js';
import { ButtonType, ButtonNativeType, ButtonProps } from '../../index.js';
import { OnCleanup } from '@vue/reactivity';
declare function __VLS_template(): {
    attrs: Partial<{}>;
    slots: Readonly<{
        default?: () => unknown;
        dropdown?: () => unknown;
    }> & {
        default?: () => unknown;
        dropdown?: () => unknown;
    };
    refs: {
        triggerRef: HTMLSpanElement;
        mainButtonRef: ({
            $: ComponentInternalInstance;
            $data: {};
            $props: {
                readonly size?: ComponentSize | undefined;
                readonly disabled?: boolean | undefined;
                readonly type?: ButtonType | undefined;
                readonly icon?: string | undefined;
                readonly nativeType?: ButtonNativeType | undefined;
                readonly loading?: boolean | undefined;
                readonly loadingIcon?: string | undefined;
                readonly plain?: boolean | undefined;
                readonly text?: boolean | undefined;
                readonly link?: boolean | undefined;
                readonly bg?: boolean | undefined;
                readonly autofocus?: boolean | undefined;
                readonly round?: boolean | undefined;
                readonly circle?: boolean | undefined;
                readonly block?: boolean | undefined;
                readonly tag?: (string | Component) | undefined;
                readonly onClick?: ((event: MouseEvent) => any) | undefined;
            } & VNodeProps & AllowedComponentProps & ComponentCustomProps;
            $attrs: Attrs;
            $refs: {
                [x: string]: unknown;
            } & {
                buttonRef: unknown;
            };
            $slots: Readonly<{
                [name: string]: Slot<any> | undefined;
            }>;
            $root: ComponentPublicInstance | null;
            $parent: ComponentPublicInstance | null;
            $host: Element | null;
            $emit: (event: "click", event: MouseEvent) => void;
            $el: any;
            $options: ComponentOptionsBase<Readonly< ButtonProps> & Readonly<{
                onClick?: ((event: MouseEvent) => any) | undefined;
            }>, {
                ref: Ref<HTMLElement | null, HTMLElement | null>;
                size: ComputedRef<ComponentSize>;
                type: ComputedRef<"primary" | "success" | "warning" | "danger" | "default">;
                disabled: ComputedRef<boolean | undefined>;
            }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
                click: (event: MouseEvent) => any;
            }, string, {
                link: boolean;
                circle: boolean;
                text: boolean;
                disabled: boolean;
                block: boolean;
                tag: string | Component;
                loading: boolean;
                round: boolean;
                nativeType: ButtonNativeType;
                loadingIcon: string;
                plain: boolean;
                bg: boolean;
                autofocus: boolean;
            }, {}, string, {}, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & {
                beforeCreate?: (() => void) | (() => void)[];
                created?: (() => void) | (() => void)[];
                beforeMount?: (() => void) | (() => void)[];
                mounted?: (() => void) | (() => void)[];
                beforeUpdate?: (() => void) | (() => void)[];
                updated?: (() => void) | (() => void)[];
                activated?: (() => void) | (() => void)[];
                deactivated?: (() => void) | (() => void)[];
                beforeDestroy?: (() => void) | (() => void)[];
                beforeUnmount?: (() => void) | (() => void)[];
                destroyed?: (() => void) | (() => void)[];
                unmounted?: (() => void) | (() => void)[];
                renderTracked?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
                renderTriggered?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
                errorCaptured?: ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void)[];
            };
            $forceUpdate: () => void;
            $nextTick: typeof nextTick;
            $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, OnCleanup]) => any : (...args: [any, any, OnCleanup]) => any, options?: WatchOptions): WatchStopHandle;
        } & Readonly<{
            link: boolean;
            circle: boolean;
            text: boolean;
            disabled: boolean;
            block: boolean;
            tag: string | Component;
            loading: boolean;
            round: boolean;
            nativeType: ButtonNativeType;
            loadingIcon: string;
            plain: boolean;
            bg: boolean;
            autofocus: boolean;
        }> & Omit<Readonly< ButtonProps> & Readonly<{
            onClick?: ((event: MouseEvent) => any) | undefined;
        }>, "size" | "type" | "ref" | ("link" | "circle" | "text" | "disabled" | "block" | "tag" | "loading" | "round" | "nativeType" | "loadingIcon" | "plain" | "bg" | "autofocus")> & ShallowUnwrapRef<{
            ref: Ref<HTMLElement | null, HTMLElement | null>;
            size: ComputedRef<ComponentSize>;
            type: ComputedRef<"primary" | "success" | "warning" | "danger" | "default">;
            disabled: ComputedRef<boolean | undefined>;
        }> & {} & ComponentCustomProperties & {} & {
            $slots: Readonly<{
                default?: () => unknown;
                icon?: () => unknown;
                loading?: () => unknown;
                prefix?: () => unknown;
                suffix?: () => unknown;
            }> & {
                default?: () => unknown;
                icon?: () => unknown;
                loading?: () => unknown;
                prefix?: () => unknown;
                suffix?: () => unknown;
            };
        }) | null;
        caretButtonRef: ({
            $: ComponentInternalInstance;
            $data: {};
            $props: {
                readonly size?: ComponentSize | undefined;
                readonly disabled?: boolean | undefined;
                readonly type?: ButtonType | undefined;
                readonly icon?: string | undefined;
                readonly nativeType?: ButtonNativeType | undefined;
                readonly loading?: boolean | undefined;
                readonly loadingIcon?: string | undefined;
                readonly plain?: boolean | undefined;
                readonly text?: boolean | undefined;
                readonly link?: boolean | undefined;
                readonly bg?: boolean | undefined;
                readonly autofocus?: boolean | undefined;
                readonly round?: boolean | undefined;
                readonly circle?: boolean | undefined;
                readonly block?: boolean | undefined;
                readonly tag?: (string | Component) | undefined;
                readonly onClick?: ((event: MouseEvent) => any) | undefined;
            } & VNodeProps & AllowedComponentProps & ComponentCustomProps;
            $attrs: Attrs;
            $refs: {
                [x: string]: unknown;
            } & {
                buttonRef: unknown;
            };
            $slots: Readonly<{
                [name: string]: Slot<any> | undefined;
            }>;
            $root: ComponentPublicInstance | null;
            $parent: ComponentPublicInstance | null;
            $host: Element | null;
            $emit: (event: "click", event: MouseEvent) => void;
            $el: any;
            $options: ComponentOptionsBase<Readonly< ButtonProps> & Readonly<{
                onClick?: ((event: MouseEvent) => any) | undefined;
            }>, {
                ref: Ref<HTMLElement | null, HTMLElement | null>;
                size: ComputedRef<ComponentSize>;
                type: ComputedRef<"primary" | "success" | "warning" | "danger" | "default">;
                disabled: ComputedRef<boolean | undefined>;
            }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
                click: (event: MouseEvent) => any;
            }, string, {
                link: boolean;
                circle: boolean;
                text: boolean;
                disabled: boolean;
                block: boolean;
                tag: string | Component;
                loading: boolean;
                round: boolean;
                nativeType: ButtonNativeType;
                loadingIcon: string;
                plain: boolean;
                bg: boolean;
                autofocus: boolean;
            }, {}, string, {}, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & {
                beforeCreate?: (() => void) | (() => void)[];
                created?: (() => void) | (() => void)[];
                beforeMount?: (() => void) | (() => void)[];
                mounted?: (() => void) | (() => void)[];
                beforeUpdate?: (() => void) | (() => void)[];
                updated?: (() => void) | (() => void)[];
                activated?: (() => void) | (() => void)[];
                deactivated?: (() => void) | (() => void)[];
                beforeDestroy?: (() => void) | (() => void)[];
                beforeUnmount?: (() => void) | (() => void)[];
                destroyed?: (() => void) | (() => void)[];
                unmounted?: (() => void) | (() => void)[];
                renderTracked?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
                renderTriggered?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
                errorCaptured?: ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void)[];
            };
            $forceUpdate: () => void;
            $nextTick: typeof nextTick;
            $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, OnCleanup]) => any : (...args: [any, any, OnCleanup]) => any, options?: WatchOptions): WatchStopHandle;
        } & Readonly<{
            link: boolean;
            circle: boolean;
            text: boolean;
            disabled: boolean;
            block: boolean;
            tag: string | Component;
            loading: boolean;
            round: boolean;
            nativeType: ButtonNativeType;
            loadingIcon: string;
            plain: boolean;
            bg: boolean;
            autofocus: boolean;
        }> & Omit<Readonly< ButtonProps> & Readonly<{
            onClick?: ((event: MouseEvent) => any) | undefined;
        }>, "size" | "type" | "ref" | ("link" | "circle" | "text" | "disabled" | "block" | "tag" | "loading" | "round" | "nativeType" | "loadingIcon" | "plain" | "bg" | "autofocus")> & ShallowUnwrapRef<{
            ref: Ref<HTMLElement | null, HTMLElement | null>;
            size: ComputedRef<ComponentSize>;
            type: ComputedRef<"primary" | "success" | "warning" | "danger" | "default">;
            disabled: ComputedRef<boolean | undefined>;
        }> & {} & ComponentCustomProperties & {} & {
            $slots: Readonly<{
                default?: () => unknown;
                icon?: () => unknown;
                loading?: () => unknown;
                prefix?: () => unknown;
                suffix?: () => unknown;
            }> & {
                default?: () => unknown;
                icon?: () => unknown;
                loading?: () => unknown;
                prefix?: () => unknown;
                suffix?: () => unknown;
            };
        }) | null;
        menuRef: HTMLDivElement;
        arrowRef: HTMLSpanElement;
    };
    rootEl: any;
};
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
declare const __VLS_component: DefineComponent<DropdownProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
    click: (event: MouseEvent) => any;
    select: (item: DropdownItem | DropdownSelectItem) => any;
    "update:modelValue": (value: boolean) => any;
    visibleChange: (value: boolean) => any;
    command: (command: DropdownCommand | undefined, item: DropdownItem | DropdownSelectItem) => any;
}, string, PublicProps, Readonly<DropdownProps> & Readonly<{
    onClick?: ((event: MouseEvent) => any) | undefined;
    onSelect?: ((item: DropdownItem | DropdownSelectItem) => any) | undefined;
    "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
    onVisibleChange?: ((value: boolean) => any) | undefined;
    onCommand?: ((command: DropdownCommand | undefined, item: DropdownItem | DropdownSelectItem) => any) | undefined;
}>, {
    modelValue: boolean;
    openDelay: number;
    closeDelay: number;
    placement: Placement;
    disabled: boolean;
    teleported: boolean;
    appendTo: string | HTMLElement;
    loop: boolean;
    role: DropdownRole;
    maxHeight: string | number;
    tabindex: string | number;
    persistent: boolean;
    popperClass: string;
    popperStyle: string | false | CSSProperties | StyleValue[] | null;
    showArrow: boolean;
    trigger: DropdownTrigger | DropdownTrigger[];
    triggerKeys: string[];
    virtualRef: ReferenceElement | null;
    virtualTriggering: boolean;
    showAfter: number;
    hideAfter: number;
    popperOptions: DropdownPopperOptions;
    items: DropdownItem[];
    hideOnClick: boolean;
    closeOnSelect: boolean;
    splitButton: boolean;
    buttonProps: Partial< ButtonProps>;
}, {}, {}, {}, string, ComponentProvideOptions, false, {
    triggerRef: HTMLSpanElement;
    mainButtonRef: ({
        $: ComponentInternalInstance;
        $data: {};
        $props: {
            readonly size?: ComponentSize | undefined;
            readonly disabled?: boolean | undefined;
            readonly type?: ButtonType | undefined;
            readonly icon?: string | undefined;
            readonly nativeType?: ButtonNativeType | undefined;
            readonly loading?: boolean | undefined;
            readonly loadingIcon?: string | undefined;
            readonly plain?: boolean | undefined;
            readonly text?: boolean | undefined;
            readonly link?: boolean | undefined;
            readonly bg?: boolean | undefined;
            readonly autofocus?: boolean | undefined;
            readonly round?: boolean | undefined;
            readonly circle?: boolean | undefined;
            readonly block?: boolean | undefined;
            readonly tag?: (string | Component) | undefined;
            readonly onClick?: ((event: MouseEvent) => any) | undefined;
        } & VNodeProps & AllowedComponentProps & ComponentCustomProps;
        $attrs: Attrs;
        $refs: {
            [x: string]: unknown;
        } & {
            buttonRef: unknown;
        };
        $slots: Readonly<{
            [name: string]: Slot<any> | undefined;
        }>;
        $root: ComponentPublicInstance | null;
        $parent: ComponentPublicInstance | null;
        $host: Element | null;
        $emit: (event: "click", event: MouseEvent) => void;
        $el: any;
        $options: ComponentOptionsBase<Readonly< ButtonProps> & Readonly<{
            onClick?: ((event: MouseEvent) => any) | undefined;
        }>, {
            ref: Ref<HTMLElement | null, HTMLElement | null>;
            size: ComputedRef<ComponentSize>;
            type: ComputedRef<"primary" | "success" | "warning" | "danger" | "default">;
            disabled: ComputedRef<boolean | undefined>;
        }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
            click: (event: MouseEvent) => any;
        }, string, {
            link: boolean;
            circle: boolean;
            text: boolean;
            disabled: boolean;
            block: boolean;
            tag: string | Component;
            loading: boolean;
            round: boolean;
            nativeType: ButtonNativeType;
            loadingIcon: string;
            plain: boolean;
            bg: boolean;
            autofocus: boolean;
        }, {}, string, {}, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & {
            beforeCreate?: (() => void) | (() => void)[];
            created?: (() => void) | (() => void)[];
            beforeMount?: (() => void) | (() => void)[];
            mounted?: (() => void) | (() => void)[];
            beforeUpdate?: (() => void) | (() => void)[];
            updated?: (() => void) | (() => void)[];
            activated?: (() => void) | (() => void)[];
            deactivated?: (() => void) | (() => void)[];
            beforeDestroy?: (() => void) | (() => void)[];
            beforeUnmount?: (() => void) | (() => void)[];
            destroyed?: (() => void) | (() => void)[];
            unmounted?: (() => void) | (() => void)[];
            renderTracked?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
            renderTriggered?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
            errorCaptured?: ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void)[];
        };
        $forceUpdate: () => void;
        $nextTick: typeof nextTick;
        $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, OnCleanup]) => any : (...args: [any, any, OnCleanup]) => any, options?: WatchOptions): WatchStopHandle;
    } & Readonly<{
        link: boolean;
        circle: boolean;
        text: boolean;
        disabled: boolean;
        block: boolean;
        tag: string | Component;
        loading: boolean;
        round: boolean;
        nativeType: ButtonNativeType;
        loadingIcon: string;
        plain: boolean;
        bg: boolean;
        autofocus: boolean;
    }> & Omit<Readonly< ButtonProps> & Readonly<{
        onClick?: ((event: MouseEvent) => any) | undefined;
    }>, "size" | "type" | "ref" | ("link" | "circle" | "text" | "disabled" | "block" | "tag" | "loading" | "round" | "nativeType" | "loadingIcon" | "plain" | "bg" | "autofocus")> & ShallowUnwrapRef<{
        ref: Ref<HTMLElement | null, HTMLElement | null>;
        size: ComputedRef<ComponentSize>;
        type: ComputedRef<"primary" | "success" | "warning" | "danger" | "default">;
        disabled: ComputedRef<boolean | undefined>;
    }> & {} & ComponentCustomProperties & {} & {
        $slots: Readonly<{
            default?: () => unknown;
            icon?: () => unknown;
            loading?: () => unknown;
            prefix?: () => unknown;
            suffix?: () => unknown;
        }> & {
            default?: () => unknown;
            icon?: () => unknown;
            loading?: () => unknown;
            prefix?: () => unknown;
            suffix?: () => unknown;
        };
    }) | null;
    caretButtonRef: ({
        $: ComponentInternalInstance;
        $data: {};
        $props: {
            readonly size?: ComponentSize | undefined;
            readonly disabled?: boolean | undefined;
            readonly type?: ButtonType | undefined;
            readonly icon?: string | undefined;
            readonly nativeType?: ButtonNativeType | undefined;
            readonly loading?: boolean | undefined;
            readonly loadingIcon?: string | undefined;
            readonly plain?: boolean | undefined;
            readonly text?: boolean | undefined;
            readonly link?: boolean | undefined;
            readonly bg?: boolean | undefined;
            readonly autofocus?: boolean | undefined;
            readonly round?: boolean | undefined;
            readonly circle?: boolean | undefined;
            readonly block?: boolean | undefined;
            readonly tag?: (string | Component) | undefined;
            readonly onClick?: ((event: MouseEvent) => any) | undefined;
        } & VNodeProps & AllowedComponentProps & ComponentCustomProps;
        $attrs: Attrs;
        $refs: {
            [x: string]: unknown;
        } & {
            buttonRef: unknown;
        };
        $slots: Readonly<{
            [name: string]: Slot<any> | undefined;
        }>;
        $root: ComponentPublicInstance | null;
        $parent: ComponentPublicInstance | null;
        $host: Element | null;
        $emit: (event: "click", event: MouseEvent) => void;
        $el: any;
        $options: ComponentOptionsBase<Readonly< ButtonProps> & Readonly<{
            onClick?: ((event: MouseEvent) => any) | undefined;
        }>, {
            ref: Ref<HTMLElement | null, HTMLElement | null>;
            size: ComputedRef<ComponentSize>;
            type: ComputedRef<"primary" | "success" | "warning" | "danger" | "default">;
            disabled: ComputedRef<boolean | undefined>;
        }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
            click: (event: MouseEvent) => any;
        }, string, {
            link: boolean;
            circle: boolean;
            text: boolean;
            disabled: boolean;
            block: boolean;
            tag: string | Component;
            loading: boolean;
            round: boolean;
            nativeType: ButtonNativeType;
            loadingIcon: string;
            plain: boolean;
            bg: boolean;
            autofocus: boolean;
        }, {}, string, {}, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & {
            beforeCreate?: (() => void) | (() => void)[];
            created?: (() => void) | (() => void)[];
            beforeMount?: (() => void) | (() => void)[];
            mounted?: (() => void) | (() => void)[];
            beforeUpdate?: (() => void) | (() => void)[];
            updated?: (() => void) | (() => void)[];
            activated?: (() => void) | (() => void)[];
            deactivated?: (() => void) | (() => void)[];
            beforeDestroy?: (() => void) | (() => void)[];
            beforeUnmount?: (() => void) | (() => void)[];
            destroyed?: (() => void) | (() => void)[];
            unmounted?: (() => void) | (() => void)[];
            renderTracked?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
            renderTriggered?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
            errorCaptured?: ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void)[];
        };
        $forceUpdate: () => void;
        $nextTick: typeof nextTick;
        $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, OnCleanup]) => any : (...args: [any, any, OnCleanup]) => any, options?: WatchOptions): WatchStopHandle;
    } & Readonly<{
        link: boolean;
        circle: boolean;
        text: boolean;
        disabled: boolean;
        block: boolean;
        tag: string | Component;
        loading: boolean;
        round: boolean;
        nativeType: ButtonNativeType;
        loadingIcon: string;
        plain: boolean;
        bg: boolean;
        autofocus: boolean;
    }> & Omit<Readonly< ButtonProps> & Readonly<{
        onClick?: ((event: MouseEvent) => any) | undefined;
    }>, "size" | "type" | "ref" | ("link" | "circle" | "text" | "disabled" | "block" | "tag" | "loading" | "round" | "nativeType" | "loadingIcon" | "plain" | "bg" | "autofocus")> & ShallowUnwrapRef<{
        ref: Ref<HTMLElement | null, HTMLElement | null>;
        size: ComputedRef<ComponentSize>;
        type: ComputedRef<"primary" | "success" | "warning" | "danger" | "default">;
        disabled: ComputedRef<boolean | undefined>;
    }> & {} & ComponentCustomProperties & {} & {
        $slots: Readonly<{
            default?: () => unknown;
            icon?: () => unknown;
            loading?: () => unknown;
            prefix?: () => unknown;
            suffix?: () => unknown;
        }> & {
            default?: () => unknown;
            icon?: () => unknown;
            loading?: () => unknown;
            prefix?: () => unknown;
            suffix?: () => unknown;
        };
    }) | null;
    menuRef: HTMLDivElement;
    arrowRef: HTMLSpanElement;
}, any>;
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
export default _default;
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
