import { ExtractPropTypes, DefineComponent, PropType, CSSProperties, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
import { CustomSlotsType, Key, VueNode } from '../_util/type';
import { dropdownProps, DropdownArrowOptions, Trigger, Align } from './props';
import { ItemType, MenuTheme, MenuMode } from '..';
import { CSSMotionProps } from '../_util/transition';
import { BuiltinPlacements, TriggerSubMenuAction, SelectEventHandler, MenuClickEventHandler } from '../menu/src/interface';
import { FocusEventHandler, MouseEventHandler } from '../_util/EventInterface';
import { VueTypeValidableDef } from 'vue-types';
export type DropdownProps = Partial<ExtractPropTypes<ReturnType<typeof dropdownProps>>>;
declare const Dropdown: DefineComponent<ExtractPropTypes<{
    arrow: {
        type: PropType<boolean | DropdownArrowOptions>;
        default: boolean | DropdownArrowOptions;
    };
    trigger: {
        type: PropType< Trigger[] | Trigger>;
    };
    menu: {
        type: PropType<Partial<ExtractPropTypes<{
            id: StringConstructor;
            prefixCls: StringConstructor;
            items: PropType< ItemType[]>;
            disabled: BooleanConstructor;
            inlineCollapsed: BooleanConstructor;
            disabledOverflow: BooleanConstructor;
            forceSubMenuRender: BooleanConstructor;
            openKeys: PropType< Key[]>;
            selectedKeys: PropType< Key[]>;
            activeKey: StringConstructor;
            selectable: {
                type: BooleanConstructor;
                default: boolean;
            };
            multiple: {
                type: BooleanConstructor;
                default: boolean;
            };
            tabindex: {
                type: (StringConstructor | NumberConstructor)[];
            };
            motion: PropType<CSSMotionProps>;
            role: StringConstructor;
            theme: {
                type: PropType<MenuTheme>;
                default: string;
            };
            mode: {
                type: PropType<MenuMode>;
                default: string;
            };
            inlineIndent: {
                type: NumberConstructor;
                default: number;
            };
            subMenuOpenDelay: {
                type: NumberConstructor;
                default: number;
            };
            subMenuCloseDelay: {
                type: NumberConstructor;
                default: number;
            };
            builtinPlacements: {
                type: PropType<BuiltinPlacements>;
            };
            triggerSubMenuAction: {
                type: PropType<TriggerSubMenuAction>;
                default: string;
            };
            getPopupContainer: PropType<(node: HTMLElement) => HTMLElement>;
            expandIcon: PropType<(p?: {
                isOpen: boolean;
                [key: string]: any;
            }) => any>;
            onOpenChange: PropType<(keys: Key[]) => void>;
            onSelect: PropType<SelectEventHandler>;
            onDeselect: PropType<SelectEventHandler>;
            onClick: PropType<MenuClickEventHandler>;
            onFocus: PropType<FocusEventHandler>;
            onBlur: PropType<FocusEventHandler>;
            onMousedown: PropType<MouseEventHandler>;
            'onUpdate:openKeys': PropType<(keys: Key[]) => void>;
            'onUpdate:selectedKeys': PropType<(keys: Key[]) => void>;
            'onUpdate:activeKey': PropType<(key: Key) => void>;
        }>>>;
        default: Partial<ExtractPropTypes<{
            id: StringConstructor;
            prefixCls: StringConstructor;
            items: PropType< ItemType[]>;
            disabled: BooleanConstructor;
            inlineCollapsed: BooleanConstructor;
            disabledOverflow: BooleanConstructor;
            forceSubMenuRender: BooleanConstructor;
            openKeys: PropType< Key[]>;
            selectedKeys: PropType< Key[]>;
            activeKey: StringConstructor;
            selectable: {
                type: BooleanConstructor;
                default: boolean;
            };
            multiple: {
                type: BooleanConstructor;
                default: boolean;
            };
            tabindex: {
                type: (StringConstructor | NumberConstructor)[];
            };
            motion: PropType<CSSMotionProps>;
            role: StringConstructor;
            theme: {
                type: PropType<MenuTheme>;
                default: string;
            };
            mode: {
                type: PropType<MenuMode>;
                default: string;
            };
            inlineIndent: {
                type: NumberConstructor;
                default: number;
            };
            subMenuOpenDelay: {
                type: NumberConstructor;
                default: number;
            };
            subMenuCloseDelay: {
                type: NumberConstructor;
                default: number;
            };
            builtinPlacements: {
                type: PropType<BuiltinPlacements>;
            };
            triggerSubMenuAction: {
                type: PropType<TriggerSubMenuAction>;
                default: string;
            };
            getPopupContainer: PropType<(node: HTMLElement) => HTMLElement>;
            expandIcon: PropType<(p?: {
                isOpen: boolean;
                [key: string]: any;
            }) => any>;
            onOpenChange: PropType<(keys: Key[]) => void>;
            onSelect: PropType<SelectEventHandler>;
            onDeselect: PropType<SelectEventHandler>;
            onClick: PropType<MenuClickEventHandler>;
            onFocus: PropType<FocusEventHandler>;
            onBlur: PropType<FocusEventHandler>;
            onMousedown: PropType<MouseEventHandler>;
            'onUpdate:openKeys': PropType<(keys: Key[]) => void>;
            'onUpdate:selectedKeys': PropType<(keys: Key[]) => void>;
            'onUpdate:activeKey': PropType<(key: Key) => void>;
        }>>;
    };
    overlay: VueTypeValidableDef<any>;
    visible: {
        type: BooleanConstructor;
        default: boolean;
    };
    open: {
        type: BooleanConstructor;
        default: boolean;
    };
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    danger: {
        type: BooleanConstructor;
        default: boolean;
    };
    autofocus: {
        type: BooleanConstructor;
        default: boolean;
    };
    align: {
        type: PropType<Align>;
        default: Align;
    };
    getPopupContainer: PropType<(triggerNode: HTMLElement) => HTMLElement>;
    prefixCls: StringConstructor;
    transitionName: StringConstructor;
    placement: PropType<"topLeft" | "topCenter" | "top" | "topRight" | "bottomLeft" | "bottomCenter" | "bottom" | "bottomRight">;
    overlayClassName: StringConstructor;
    overlayStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    forceRender: {
        type: BooleanConstructor;
        default: boolean;
    };
    mouseEnterDelay: NumberConstructor;
    mouseLeaveDelay: NumberConstructor;
    openClassName: StringConstructor;
    minOverlayWidthMatchTrigger: {
        type: BooleanConstructor;
        default: boolean;
    };
    destroyPopupOnHide: {
        type: BooleanConstructor;
        default: boolean;
    };
    onVisibleChange: {
        type: PropType<(val: boolean) => void>;
    };
    'onUpdate:visible': {
        type: PropType<(val: boolean) => void>;
    };
    onOpenChange: {
        type: PropType<(val: boolean) => void>;
    };
    'onUpdate:open': {
        type: PropType<(val: boolean) => void>;
    };
}>, () => VueNode, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<{
    arrow: {
        type: PropType<boolean | DropdownArrowOptions>;
        default: boolean | DropdownArrowOptions;
    };
    trigger: {
        type: PropType< Trigger[] | Trigger>;
    };
    menu: {
        type: PropType<Partial<ExtractPropTypes<{
            id: StringConstructor;
            prefixCls: StringConstructor;
            items: PropType< ItemType[]>;
            disabled: BooleanConstructor;
            inlineCollapsed: BooleanConstructor;
            disabledOverflow: BooleanConstructor;
            forceSubMenuRender: BooleanConstructor;
            openKeys: PropType< Key[]>;
            selectedKeys: PropType< Key[]>;
            activeKey: StringConstructor;
            selectable: {
                type: BooleanConstructor;
                default: boolean;
            };
            multiple: {
                type: BooleanConstructor;
                default: boolean;
            };
            tabindex: {
                type: (StringConstructor | NumberConstructor)[];
            };
            motion: PropType<CSSMotionProps>;
            role: StringConstructor;
            theme: {
                type: PropType<MenuTheme>;
                default: string;
            };
            mode: {
                type: PropType<MenuMode>;
                default: string;
            };
            inlineIndent: {
                type: NumberConstructor;
                default: number;
            };
            subMenuOpenDelay: {
                type: NumberConstructor;
                default: number;
            };
            subMenuCloseDelay: {
                type: NumberConstructor;
                default: number;
            };
            builtinPlacements: {
                type: PropType<BuiltinPlacements>;
            };
            triggerSubMenuAction: {
                type: PropType<TriggerSubMenuAction>;
                default: string;
            };
            getPopupContainer: PropType<(node: HTMLElement) => HTMLElement>;
            expandIcon: PropType<(p?: {
                isOpen: boolean;
                [key: string]: any;
            }) => any>;
            onOpenChange: PropType<(keys: Key[]) => void>;
            onSelect: PropType<SelectEventHandler>;
            onDeselect: PropType<SelectEventHandler>;
            onClick: PropType<MenuClickEventHandler>;
            onFocus: PropType<FocusEventHandler>;
            onBlur: PropType<FocusEventHandler>;
            onMousedown: PropType<MouseEventHandler>;
            'onUpdate:openKeys': PropType<(keys: Key[]) => void>;
            'onUpdate:selectedKeys': PropType<(keys: Key[]) => void>;
            'onUpdate:activeKey': PropType<(key: Key) => void>;
        }>>>;
        default: Partial<ExtractPropTypes<{
            id: StringConstructor;
            prefixCls: StringConstructor;
            items: PropType< ItemType[]>;
            disabled: BooleanConstructor;
            inlineCollapsed: BooleanConstructor;
            disabledOverflow: BooleanConstructor;
            forceSubMenuRender: BooleanConstructor;
            openKeys: PropType< Key[]>;
            selectedKeys: PropType< Key[]>;
            activeKey: StringConstructor;
            selectable: {
                type: BooleanConstructor;
                default: boolean;
            };
            multiple: {
                type: BooleanConstructor;
                default: boolean;
            };
            tabindex: {
                type: (StringConstructor | NumberConstructor)[];
            };
            motion: PropType<CSSMotionProps>;
            role: StringConstructor;
            theme: {
                type: PropType<MenuTheme>;
                default: string;
            };
            mode: {
                type: PropType<MenuMode>;
                default: string;
            };
            inlineIndent: {
                type: NumberConstructor;
                default: number;
            };
            subMenuOpenDelay: {
                type: NumberConstructor;
                default: number;
            };
            subMenuCloseDelay: {
                type: NumberConstructor;
                default: number;
            };
            builtinPlacements: {
                type: PropType<BuiltinPlacements>;
            };
            triggerSubMenuAction: {
                type: PropType<TriggerSubMenuAction>;
                default: string;
            };
            getPopupContainer: PropType<(node: HTMLElement) => HTMLElement>;
            expandIcon: PropType<(p?: {
                isOpen: boolean;
                [key: string]: any;
            }) => any>;
            onOpenChange: PropType<(keys: Key[]) => void>;
            onSelect: PropType<SelectEventHandler>;
            onDeselect: PropType<SelectEventHandler>;
            onClick: PropType<MenuClickEventHandler>;
            onFocus: PropType<FocusEventHandler>;
            onBlur: PropType<FocusEventHandler>;
            onMousedown: PropType<MouseEventHandler>;
            'onUpdate:openKeys': PropType<(keys: Key[]) => void>;
            'onUpdate:selectedKeys': PropType<(keys: Key[]) => void>;
            'onUpdate:activeKey': PropType<(key: Key) => void>;
        }>>;
    };
    overlay: VueTypeValidableDef<any>;
    visible: {
        type: BooleanConstructor;
        default: boolean;
    };
    open: {
        type: BooleanConstructor;
        default: boolean;
    };
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    danger: {
        type: BooleanConstructor;
        default: boolean;
    };
    autofocus: {
        type: BooleanConstructor;
        default: boolean;
    };
    align: {
        type: PropType<Align>;
        default: Align;
    };
    getPopupContainer: PropType<(triggerNode: HTMLElement) => HTMLElement>;
    prefixCls: StringConstructor;
    transitionName: StringConstructor;
    placement: PropType<"topLeft" | "topCenter" | "top" | "topRight" | "bottomLeft" | "bottomCenter" | "bottom" | "bottomRight">;
    overlayClassName: StringConstructor;
    overlayStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    forceRender: {
        type: BooleanConstructor;
        default: boolean;
    };
    mouseEnterDelay: NumberConstructor;
    mouseLeaveDelay: NumberConstructor;
    openClassName: StringConstructor;
    minOverlayWidthMatchTrigger: {
        type: BooleanConstructor;
        default: boolean;
    };
    destroyPopupOnHide: {
        type: BooleanConstructor;
        default: boolean;
    };
    onVisibleChange: {
        type: PropType<(val: boolean) => void>;
    };
    'onUpdate:visible': {
        type: PropType<(val: boolean) => void>;
    };
    onOpenChange: {
        type: PropType<(val: boolean) => void>;
    };
    'onUpdate:open': {
        type: PropType<(val: boolean) => void>;
    };
}>> & Readonly<{}>, {
    menu: Partial<ExtractPropTypes<{
        id: StringConstructor;
        prefixCls: StringConstructor;
        items: PropType< ItemType[]>;
        disabled: BooleanConstructor;
        inlineCollapsed: BooleanConstructor;
        disabledOverflow: BooleanConstructor;
        forceSubMenuRender: BooleanConstructor;
        openKeys: PropType< Key[]>;
        selectedKeys: PropType< Key[]>;
        activeKey: StringConstructor;
        selectable: {
            type: BooleanConstructor;
            default: boolean;
        };
        multiple: {
            type: BooleanConstructor;
            default: boolean;
        };
        tabindex: {
            type: (StringConstructor | NumberConstructor)[];
        };
        motion: PropType<CSSMotionProps>;
        role: StringConstructor;
        theme: {
            type: PropType<MenuTheme>;
            default: string;
        };
        mode: {
            type: PropType<MenuMode>;
            default: string;
        };
        inlineIndent: {
            type: NumberConstructor;
            default: number;
        };
        subMenuOpenDelay: {
            type: NumberConstructor;
            default: number;
        };
        subMenuCloseDelay: {
            type: NumberConstructor;
            default: number;
        };
        builtinPlacements: {
            type: PropType<BuiltinPlacements>;
        };
        triggerSubMenuAction: {
            type: PropType<TriggerSubMenuAction>;
            default: string;
        };
        getPopupContainer: PropType<(node: HTMLElement) => HTMLElement>;
        expandIcon: PropType<(p?: {
            isOpen: boolean;
            [key: string]: any;
        }) => any>;
        onOpenChange: PropType<(keys: Key[]) => void>;
        onSelect: PropType<SelectEventHandler>;
        onDeselect: PropType<SelectEventHandler>;
        onClick: PropType<MenuClickEventHandler>;
        onFocus: PropType<FocusEventHandler>;
        onBlur: PropType<FocusEventHandler>;
        onMousedown: PropType<MouseEventHandler>;
        'onUpdate:openKeys': PropType<(keys: Key[]) => void>;
        'onUpdate:selectedKeys': PropType<(keys: Key[]) => void>;
        'onUpdate:activeKey': PropType<(key: Key) => void>;
    }>>;
    open: boolean;
    visible: boolean;
    disabled: boolean;
    align: Align;
    autofocus: boolean;
    danger: boolean;
    forceRender: boolean;
    arrow: boolean | DropdownArrowOptions;
    destroyPopupOnHide: boolean;
    overlayStyle: CSSProperties;
    minOverlayWidthMatchTrigger: boolean;
}, CustomSlotsType<{
    default?: any;
    overlay?: any;
}>, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export default Dropdown;
