import { CSSProperties, ExtractPropTypes, PropType, CreateComponentPublicInstanceWithMixins, ComponentOptionsMixin, PublicProps, GlobalComponents, GlobalDirectives, ComponentProvideOptions, ComponentOptionsBase, VNodeProps, AllowedComponentProps, ComponentCustomProps, Plugin } from 'vue';
import { KeyboardEventHandler, MouseEventHandler } from '../_util/EventInterface';
import { CustomSlotsType, VueNode } from '../_util/type';
import { VueTypeValidableDef, VueTypeDef } from 'vue-types';
type ILevelMove = number | [number, number];
declare const PlacementTypes: readonly ["top", "right", "bottom", "left"];
export type placementType = (typeof PlacementTypes)[number];
declare const SizeTypes: readonly ["default", "large"];
export type sizeType = (typeof SizeTypes)[number];
export interface PushState {
    distance: string | number;
}
type getContainerFunc = () => HTMLElement;
export declare function drawerProps(): {
    autofocus: {
        type: BooleanConstructor;
        default: undefined;
    };
    closable: {
        type: BooleanConstructor;
        default: undefined;
    };
    closeIcon: VueTypeValidableDef<any>;
    destroyOnClose: {
        type: BooleanConstructor;
        default: undefined;
    };
    forceRender: {
        type: BooleanConstructor;
        default: undefined;
    };
    getContainer: {
        type: PropType<string | HTMLElement | getContainerFunc | false>;
        default: string | HTMLElement | getContainerFunc | false;
    };
    maskClosable: {
        type: BooleanConstructor;
        default: undefined;
    };
    mask: {
        type: BooleanConstructor;
        default: undefined;
    };
    maskStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    rootClassName: StringConstructor;
    rootStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    size: {
        type: PropType<sizeType>;
    };
    drawerStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    headerStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    bodyStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    contentWrapperStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    title: VueTypeValidableDef<any>;
    /** @deprecated Please use `open` instead */
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    open: {
        type: BooleanConstructor;
        default: undefined;
    };
    width: VueTypeDef<string | number>;
    height: VueTypeDef<string | number>;
    zIndex: NumberConstructor;
    prefixCls: StringConstructor;
    push: VueTypeDef<boolean | PushState>;
    placement: VueTypeDef<"left" | "right" | "bottom" | "top">;
    keyboard: {
        type: BooleanConstructor;
        default: undefined;
    };
    extra: VueTypeValidableDef<any>;
    footer: VueTypeValidableDef<any>;
    footerStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    level: VueTypeValidableDef<any>;
    levelMove: {
        type: PropType<ILevelMove | ((e: {
            target: HTMLElement;
            open: boolean;
        }) => ILevelMove)>;
    };
    handle: VueTypeValidableDef<any>;
    /** @deprecated Use `@afterVisibleChange` instead */
    afterVisibleChange: PropType<(visible: boolean) => void>;
    /** @deprecated Please use `@afterOpenChange` instead */
    onAfterVisibleChange: PropType<(visible: boolean) => void>;
    onAfterOpenChange: PropType<(open: boolean) => void>;
    /** @deprecated Please use `onUpdate:open` instead */
    'onUpdate:visible': PropType<(visible: boolean) => void>;
    'onUpdate:open': PropType<(open: boolean) => void>;
    onClose: PropType<MouseEventHandler | KeyboardEventHandler>;
};
export type DrawerProps = Partial<ExtractPropTypes<ReturnType<typeof drawerProps>>>;
declare const _default: {
    new (...args: any[]): CreateComponentPublicInstanceWithMixins<Readonly<ExtractPropTypes<{
        autofocus: {
            type: BooleanConstructor;
            default: undefined;
        };
        closable: {
            type: BooleanConstructor;
            default: undefined;
        };
        closeIcon: VueTypeValidableDef<any>;
        destroyOnClose: {
            type: BooleanConstructor;
            default: undefined;
        };
        forceRender: {
            type: BooleanConstructor;
            default: undefined;
        };
        getContainer: {
            type: PropType<string | HTMLElement | getContainerFunc | false>;
            default: string | HTMLElement | getContainerFunc | false;
        };
        maskClosable: {
            type: BooleanConstructor;
            default: undefined;
        };
        mask: {
            type: BooleanConstructor;
            default: undefined;
        };
        maskStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        rootClassName: StringConstructor;
        rootStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        size: {
            type: PropType<sizeType>;
        };
        drawerStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        headerStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        bodyStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        contentWrapperStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        title: VueTypeValidableDef<any>;
        /** @deprecated Please use `open` instead */
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        open: {
            type: BooleanConstructor;
            default: undefined;
        };
        width: VueTypeDef<string | number>;
        height: VueTypeDef<string | number>;
        zIndex: NumberConstructor;
        prefixCls: StringConstructor;
        push: VueTypeDef<boolean | PushState>;
        placement: VueTypeDef<"left" | "right" | "bottom" | "top">;
        keyboard: {
            type: BooleanConstructor;
            default: undefined;
        };
        extra: VueTypeValidableDef<any>;
        footer: VueTypeValidableDef<any>;
        footerStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        level: VueTypeValidableDef<any>;
        levelMove: {
            type: PropType<ILevelMove | ((e: {
                target: HTMLElement;
                open: boolean;
            }) => ILevelMove)>;
        };
        handle: VueTypeValidableDef<any>;
        /** @deprecated Use `@afterVisibleChange` instead */
        afterVisibleChange: PropType<(visible: boolean) => void>;
        /** @deprecated Please use `@afterOpenChange` instead */
        onAfterVisibleChange: PropType<(visible: boolean) => void>;
        onAfterOpenChange: PropType<(open: boolean) => void>;
        /** @deprecated Please use `onUpdate:open` instead */
        'onUpdate:visible': PropType<(visible: boolean) => void>;
        'onUpdate:open': PropType<(open: boolean) => void>;
        onClose: PropType<MouseEventHandler | KeyboardEventHandler>;
    }>> & Readonly<{}>, () => VueNode, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, PublicProps, {
        open: boolean;
        mask: boolean;
        visible: boolean;
        autofocus: boolean;
        getContainer: string | false | HTMLElement | getContainerFunc;
        closable: boolean;
        forceRender: boolean;
        maskClosable: boolean;
        rootStyle: CSSProperties;
        keyboard: boolean;
        bodyStyle: CSSProperties;
        maskStyle: CSSProperties;
        contentWrapperStyle: CSSProperties;
        destroyOnClose: boolean;
        drawerStyle: CSSProperties;
        headerStyle: CSSProperties;
        footerStyle: CSSProperties;
    }, true, {}, CustomSlotsType<{
        closeIcon: any;
        title: any;
        extra: any;
        footer: any;
        handle: any;
        default: any;
    }>, GlobalComponents, GlobalDirectives, string, {}, any, ComponentProvideOptions, {
        P: {};
        B: {};
        D: {};
        C: {};
        M: {};
        Defaults: {};
    }, Readonly<ExtractPropTypes<{
        autofocus: {
            type: BooleanConstructor;
            default: undefined;
        };
        closable: {
            type: BooleanConstructor;
            default: undefined;
        };
        closeIcon: VueTypeValidableDef<any>;
        destroyOnClose: {
            type: BooleanConstructor;
            default: undefined;
        };
        forceRender: {
            type: BooleanConstructor;
            default: undefined;
        };
        getContainer: {
            type: PropType<string | HTMLElement | getContainerFunc | false>;
            default: string | HTMLElement | getContainerFunc | false;
        };
        maskClosable: {
            type: BooleanConstructor;
            default: undefined;
        };
        mask: {
            type: BooleanConstructor;
            default: undefined;
        };
        maskStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        rootClassName: StringConstructor;
        rootStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        size: {
            type: PropType<sizeType>;
        };
        drawerStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        headerStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        bodyStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        contentWrapperStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        title: VueTypeValidableDef<any>;
        /** @deprecated Please use `open` instead */
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        open: {
            type: BooleanConstructor;
            default: undefined;
        };
        width: VueTypeDef<string | number>;
        height: VueTypeDef<string | number>;
        zIndex: NumberConstructor;
        prefixCls: StringConstructor;
        push: VueTypeDef<boolean | PushState>;
        placement: VueTypeDef<"left" | "right" | "bottom" | "top">;
        keyboard: {
            type: BooleanConstructor;
            default: undefined;
        };
        extra: VueTypeValidableDef<any>;
        footer: VueTypeValidableDef<any>;
        footerStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        level: VueTypeValidableDef<any>;
        levelMove: {
            type: PropType<ILevelMove | ((e: {
                target: HTMLElement;
                open: boolean;
            }) => ILevelMove)>;
        };
        handle: VueTypeValidableDef<any>;
        /** @deprecated Use `@afterVisibleChange` instead */
        afterVisibleChange: PropType<(visible: boolean) => void>;
        /** @deprecated Please use `@afterOpenChange` instead */
        onAfterVisibleChange: PropType<(visible: boolean) => void>;
        onAfterOpenChange: PropType<(open: boolean) => void>;
        /** @deprecated Please use `onUpdate:open` instead */
        'onUpdate:visible': PropType<(visible: boolean) => void>;
        'onUpdate:open': PropType<(open: boolean) => void>;
        onClose: PropType<MouseEventHandler | KeyboardEventHandler>;
    }>> & Readonly<{}>, () => VueNode, {}, {}, {}, {
        open: boolean;
        mask: boolean;
        visible: boolean;
        autofocus: boolean;
        getContainer: string | false | HTMLElement | getContainerFunc;
        closable: boolean;
        forceRender: boolean;
        maskClosable: boolean;
        rootStyle: CSSProperties;
        keyboard: boolean;
        bodyStyle: CSSProperties;
        maskStyle: CSSProperties;
        contentWrapperStyle: CSSProperties;
        destroyOnClose: boolean;
        drawerStyle: CSSProperties;
        headerStyle: CSSProperties;
        footerStyle: CSSProperties;
    }>;
    __isFragment?: never;
    __isTeleport?: never;
    __isSuspense?: never;
} & ComponentOptionsBase<Readonly<ExtractPropTypes<{
    autofocus: {
        type: BooleanConstructor;
        default: undefined;
    };
    closable: {
        type: BooleanConstructor;
        default: undefined;
    };
    closeIcon: VueTypeValidableDef<any>;
    destroyOnClose: {
        type: BooleanConstructor;
        default: undefined;
    };
    forceRender: {
        type: BooleanConstructor;
        default: undefined;
    };
    getContainer: {
        type: PropType<string | HTMLElement | getContainerFunc | false>;
        default: string | HTMLElement | getContainerFunc | false;
    };
    maskClosable: {
        type: BooleanConstructor;
        default: undefined;
    };
    mask: {
        type: BooleanConstructor;
        default: undefined;
    };
    maskStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    rootClassName: StringConstructor;
    rootStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    size: {
        type: PropType<sizeType>;
    };
    drawerStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    headerStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    bodyStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    contentWrapperStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    title: VueTypeValidableDef<any>;
    /** @deprecated Please use `open` instead */
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    open: {
        type: BooleanConstructor;
        default: undefined;
    };
    width: VueTypeDef<string | number>;
    height: VueTypeDef<string | number>;
    zIndex: NumberConstructor;
    prefixCls: StringConstructor;
    push: VueTypeDef<boolean | PushState>;
    placement: VueTypeDef<"left" | "right" | "bottom" | "top">;
    keyboard: {
        type: BooleanConstructor;
        default: undefined;
    };
    extra: VueTypeValidableDef<any>;
    footer: VueTypeValidableDef<any>;
    footerStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    level: VueTypeValidableDef<any>;
    levelMove: {
        type: PropType<ILevelMove | ((e: {
            target: HTMLElement;
            open: boolean;
        }) => ILevelMove)>;
    };
    handle: VueTypeValidableDef<any>;
    /** @deprecated Use `@afterVisibleChange` instead */
    afterVisibleChange: PropType<(visible: boolean) => void>;
    /** @deprecated Please use `@afterOpenChange` instead */
    onAfterVisibleChange: PropType<(visible: boolean) => void>;
    onAfterOpenChange: PropType<(open: boolean) => void>;
    /** @deprecated Please use `onUpdate:open` instead */
    'onUpdate:visible': PropType<(visible: boolean) => void>;
    'onUpdate:open': PropType<(open: boolean) => void>;
    onClose: PropType<MouseEventHandler | KeyboardEventHandler>;
}>> & Readonly<{}>, () => VueNode, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, {
    open: boolean;
    mask: boolean;
    visible: boolean;
    autofocus: boolean;
    getContainer: string | false | HTMLElement | getContainerFunc;
    closable: boolean;
    forceRender: boolean;
    maskClosable: boolean;
    rootStyle: CSSProperties;
    keyboard: boolean;
    bodyStyle: CSSProperties;
    maskStyle: CSSProperties;
    contentWrapperStyle: CSSProperties;
    destroyOnClose: boolean;
    drawerStyle: CSSProperties;
    headerStyle: CSSProperties;
    footerStyle: CSSProperties;
}, {}, string, CustomSlotsType<{
    closeIcon: any;
    title: any;
    extra: any;
    footer: any;
    handle: any;
    default: any;
}>, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & VNodeProps & AllowedComponentProps & ComponentCustomProps & Plugin;
export default _default;
