import { CSSProperties, PropType, ExtractPropTypes } from 'vue';
import { MouseEventHandler, FocusEventHandler } from '../_util/EventInterface';
import { ItemType, MenuTheme, MenuMode } from '..';
import { Key } from '../_util/type';
import { CSSMotionProps } from '../_util/transition';
import { BuiltinPlacements, TriggerSubMenuAction, SelectEventHandler, MenuClickEventHandler } from '../menu/src/interface';
import { VueTypeValidableDef } from 'vue-types';
import { ButtonType } from '../button';
import { ButtonHTMLType } from '../button/buttonTypes';
export interface Align {
    points?: [string, string];
    offset?: [number, number];
    targetOffset?: [number, number];
    overflow?: {
        adjustX?: boolean;
        adjustY?: boolean;
    };
    useCssRight?: boolean;
    useCssBottom?: boolean;
    useCssTransform?: boolean;
}
export type Trigger = 'click' | 'hover' | 'contextmenu';
export interface DropdownArrowOptions {
    pointAtCenter?: boolean;
}
declare const dropdownProps: () => {
    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>;
    /** @deprecated Please use `open` instead */
    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;
    };
    /** @deprecated Please use `onOpenChange` instead */
    onVisibleChange: {
        type: PropType<(val: boolean) => void>;
    };
    /** @deprecated Please use `onUpdate:open` instead */
    'onUpdate:visible': {
        type: PropType<(val: boolean) => void>;
    };
    onOpenChange: {
        type: PropType<(val: boolean) => void>;
    };
    'onUpdate:open': {
        type: PropType<(val: boolean) => void>;
    };
};
declare const dropdownButtonProps: () => {
    type: PropType< ButtonType>;
    size: PropType<"small" | "large">;
    htmlType: {
        type: PropType< ButtonHTMLType>;
        default: string;
    };
    href: StringConstructor;
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    prefixCls: StringConstructor;
    icon: VueTypeValidableDef<any>;
    title: StringConstructor;
    loading: {
        type: PropType<boolean | {
            delay?: number;
        }>;
        default: () => boolean | {
            delay?: number;
        };
    };
    onClick: {
        type: PropType<MouseEventHandler | MouseEventHandler[]>;
    };
    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>;
    /** @deprecated Please use `open` instead */
    visible: {
        type: BooleanConstructor;
        default: boolean;
    };
    open: {
        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>;
    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;
    };
    /** @deprecated Please use `onOpenChange` instead */
    onVisibleChange: {
        type: PropType<(val: boolean) => void>;
    };
    /** @deprecated Please use `onUpdate:open` instead */
    'onUpdate:visible': {
        type: PropType<(val: boolean) => void>;
    };
    onOpenChange: {
        type: PropType<(val: boolean) => void>;
    };
    'onUpdate:open': {
        type: PropType<(val: boolean) => void>;
    };
};
export { dropdownButtonProps, dropdownProps };
export default dropdownProps;
