import { TransitionProps } from 'vue';
import { default as Drawer } from './drawer.vue.js';
export declare const drawerPlacements: readonly ["left", "right", "top", "bottom"];
export declare const drawerDirections: readonly ["ltr", "rtl", "ttb", "btt"];
export type DrawerPlacement = (typeof drawerPlacements)[number];
export type DrawerDirection = (typeof drawerDirections)[number];
export type DrawerTransition = string | TransitionProps;
export type DrawerCloseReason = "close" | "backdrop" | "escape" | "programmatic";
export type DrawerModelValueChangeHandler = (value: boolean) => void;
export type DrawerResizeHandler = (event: MouseEvent, size: number) => void;
export interface DrawerHeaderSlotProps {
    close: () => void;
    titleId: string;
    titleClass: string;
}
export interface DrawerTitleSlotProps {
    titleId: string;
    titleClass: string;
}
export interface DrawerProps {
    modelValue?: boolean;
    title?: string;
    size?: string | number;
    placement?: DrawerPlacement;
    direction?: DrawerDirection;
    closeOnOverlay?: boolean;
    closeOnClickModal?: boolean;
    closeOnEsc?: boolean;
    closeOnPressEscape?: boolean;
    destroyOnClose?: boolean;
    showClose?: boolean;
    lockScroll?: boolean;
    withHeader?: boolean;
    beforeClose?: (done: (cancel?: boolean) => void, reason?: DrawerCloseReason) => void | Promise<void>;
    appendToBody?: boolean;
    appendTo?: string | HTMLElement;
    modal?: boolean;
    modalClass?: string;
    modalPenetrable?: boolean;
    openDelay?: number;
    closeDelay?: number;
    resizable?: boolean;
    customClass?: string;
    headerClass?: string;
    bodyClass?: string;
    footerClass?: string;
    zIndex?: number;
    headerAriaLevel?: string | number;
    modalFade?: boolean;
    closeIcon?: string;
    fullscreen?: boolean;
    transition?: DrawerTransition;
}
export type DrawerInstance = InstanceType<typeof Drawer> & {
    handleClose: (reason?: DrawerCloseReason) => void;
    afterEnter: () => void;
    afterLeave: () => void;
};
