import { type PropType, type VNodeChild } from 'vue';
import { type ModalBaseProps } from '../ModalBase';
export type DrawerPosition = 'top' | 'bottom' | 'left' | 'right';
export interface DrawerProps extends ModalBaseProps {
    title?: VNodeChild | (() => VNodeChild);
    withOverlay?: boolean;
    overlayProps?: Record<string, any>;
    withCloseButton?: boolean;
    closeButtonProps?: Record<string, any>;
    position?: DrawerPosition;
    radius?: string | number;
    offset?: string | number;
    size?: string | number;
    scrollAreaComponent?: any;
    stackId?: string;
    classNames?: any;
    styles?: any;
    vars?: any;
}
export interface DrawerStackContextValue {
    stack: string[];
    addModal: (id: string, zIndex: string | number) => void;
    removeModal: (id: string) => void;
    getZIndex: (id: string) => string;
    currentId: string;
    maxZIndex: string | number;
}
export declare const DrawerStack: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}>[] | undefined, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
export interface UseDrawersStackReturnType<T extends string> {
    state: Record<T, boolean>;
    open: (id: T) => void;
    close: (id: T) => void;
    toggle: (id: T) => void;
    closeAll: () => void;
    register: (id: T) => {
        opened: boolean;
        onClose: () => void;
        stackId: T;
    };
}
export declare function useDrawersStack<const T extends string>(drawers: T[]): UseDrawersStackReturnType<T>;
export declare const DrawerRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
    opened: {
        type: BooleanConstructor;
        required: true;
    };
    onClose: {
        type: PropType<() => void>;
        required: true;
    };
    position: {
        type: PropType<DrawerPosition>;
        default: string;
    };
    radius: (NumberConstructor | StringConstructor)[];
    offset: {
        type: (NumberConstructor | StringConstructor)[];
        default: number;
    };
    size: {
        type: (NumberConstructor | StringConstructor)[];
        default: string;
    };
    scrollAreaComponent: {
        type: (ObjectConstructor | FunctionConstructor)[];
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    classNames: {
        type: (ObjectConstructor | FunctionConstructor)[];
        default: undefined;
    };
    styles: {
        type: (ObjectConstructor | FunctionConstructor)[];
        default: undefined;
    };
    vars: {
        type: (ObjectConstructor | FunctionConstructor)[];
        default: undefined;
    };
    unstyled: BooleanConstructor;
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
    opened: {
        type: BooleanConstructor;
        required: true;
    };
    onClose: {
        type: PropType<() => void>;
        required: true;
    };
    position: {
        type: PropType<DrawerPosition>;
        default: string;
    };
    radius: (NumberConstructor | StringConstructor)[];
    offset: {
        type: (NumberConstructor | StringConstructor)[];
        default: number;
    };
    size: {
        type: (NumberConstructor | StringConstructor)[];
        default: string;
    };
    scrollAreaComponent: {
        type: (ObjectConstructor | FunctionConstructor)[];
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    classNames: {
        type: (ObjectConstructor | FunctionConstructor)[];
        default: undefined;
    };
    styles: {
        type: (ObjectConstructor | FunctionConstructor)[];
        default: undefined;
    };
    vars: {
        type: (ObjectConstructor | FunctionConstructor)[];
        default: undefined;
    };
    unstyled: BooleanConstructor;
}>> & Readonly<{}>, {
    size: string | number;
    classNames: Function | Record<string, any>;
    styles: Function | Record<string, any>;
    offset: string | number;
    position: DrawerPosition;
    vars: Function | Record<string, any>;
    unstyled: boolean;
    scrollAreaComponent: Function | Record<string, any>;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
export declare const DrawerBody: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    __hidden: BooleanConstructor;
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    __hidden: BooleanConstructor;
}>> & Readonly<{}>, {
    visible: boolean;
    __hidden: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
export declare const DrawerCloseButton: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    __hidden: BooleanConstructor;
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    __hidden: BooleanConstructor;
}>> & Readonly<{}>, {
    visible: boolean;
    __hidden: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
export declare const DrawerHeader: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    __hidden: BooleanConstructor;
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    __hidden: BooleanConstructor;
}>> & Readonly<{}>, {
    visible: boolean;
    __hidden: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
export declare const DrawerOverlay: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    __hidden: BooleanConstructor;
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    __hidden: BooleanConstructor;
}>> & Readonly<{}>, {
    visible: boolean;
    __hidden: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
export declare const DrawerTitle: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    __hidden: BooleanConstructor;
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    __hidden: BooleanConstructor;
}>> & Readonly<{}>, {
    visible: boolean;
    __hidden: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
export declare const DrawerContent: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    __hidden: BooleanConstructor;
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
    visible: {
        type: BooleanConstructor;
        default: undefined;
    };
    transitionProps: ObjectConstructor;
    __hidden: BooleanConstructor;
}>> & Readonly<{}>, {
    visible: boolean;
    __hidden: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
export declare const Drawer: {
    new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("vue").ExtractPropTypes<{
        opened: {
            type: BooleanConstructor;
            required: true;
        };
        onClose: {
            type: PropType<() => void>;
            required: true;
        };
        title: {
            type: PropType<any>;
            default: undefined;
        };
        withOverlay: {
            type: BooleanConstructor;
            default: boolean;
        };
        overlayProps: ObjectConstructor;
        withCloseButton: {
            type: BooleanConstructor;
            default: boolean;
        };
        closeButtonProps: ObjectConstructor;
        stackId: {
            type: StringConstructor;
            default: undefined;
        };
        zIndex: {
            type: (NumberConstructor | StringConstructor)[];
            default: undefined;
        };
    }>> & Readonly<{}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
        title: any;
        zIndex: string | number;
        withCloseButton: boolean;
        withOverlay: boolean;
        stackId: string;
    }, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
        P: {};
        B: {};
        D: {};
        C: {};
        M: {};
        Defaults: {};
    }, Readonly<import("vue").ExtractPropTypes<{
        opened: {
            type: BooleanConstructor;
            required: true;
        };
        onClose: {
            type: PropType<() => void>;
            required: true;
        };
        title: {
            type: PropType<any>;
            default: undefined;
        };
        withOverlay: {
            type: BooleanConstructor;
            default: boolean;
        };
        overlayProps: ObjectConstructor;
        withCloseButton: {
            type: BooleanConstructor;
            default: boolean;
        };
        closeButtonProps: ObjectConstructor;
        stackId: {
            type: StringConstructor;
            default: undefined;
        };
        zIndex: {
            type: (NumberConstructor | StringConstructor)[];
            default: undefined;
        };
    }>> & Readonly<{}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>, {}, {}, {}, {
        title: any;
        zIndex: string | number;
        withCloseButton: boolean;
        withOverlay: boolean;
        stackId: string;
    }>;
    __isFragment?: never;
    __isTeleport?: never;
    __isSuspense?: never;
} & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
    opened: {
        type: BooleanConstructor;
        required: true;
    };
    onClose: {
        type: PropType<() => void>;
        required: true;
    };
    title: {
        type: PropType<any>;
        default: undefined;
    };
    withOverlay: {
        type: BooleanConstructor;
        default: boolean;
    };
    overlayProps: ObjectConstructor;
    withCloseButton: {
        type: BooleanConstructor;
        default: boolean;
    };
    closeButtonProps: ObjectConstructor;
    stackId: {
        type: StringConstructor;
        default: undefined;
    };
    zIndex: {
        type: (NumberConstructor | StringConstructor)[];
        default: undefined;
    };
}>> & Readonly<{}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
    title: any;
    zIndex: string | number;
    withCloseButton: boolean;
    withOverlay: boolean;
    stackId: string;
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & {
    classes: Record<string, string>;
    varsResolver: (theme: import("../..").MantineTheme, props: any, ctx: Record<string, any>) => Record<string, Record<string, string | undefined>>;
    Root: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
        opened: {
            type: BooleanConstructor;
            required: true;
        };
        onClose: {
            type: PropType<() => void>;
            required: true;
        };
        position: {
            type: PropType<DrawerPosition>;
            default: string;
        };
        radius: (NumberConstructor | StringConstructor)[];
        offset: {
            type: (NumberConstructor | StringConstructor)[];
            default: number;
        };
        size: {
            type: (NumberConstructor | StringConstructor)[];
            default: string;
        };
        scrollAreaComponent: {
            type: (ObjectConstructor | FunctionConstructor)[];
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        classNames: {
            type: (ObjectConstructor | FunctionConstructor)[];
            default: undefined;
        };
        styles: {
            type: (ObjectConstructor | FunctionConstructor)[];
            default: undefined;
        };
        vars: {
            type: (ObjectConstructor | FunctionConstructor)[];
            default: undefined;
        };
        unstyled: BooleanConstructor;
    }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
        opened: {
            type: BooleanConstructor;
            required: true;
        };
        onClose: {
            type: PropType<() => void>;
            required: true;
        };
        position: {
            type: PropType<DrawerPosition>;
            default: string;
        };
        radius: (NumberConstructor | StringConstructor)[];
        offset: {
            type: (NumberConstructor | StringConstructor)[];
            default: number;
        };
        size: {
            type: (NumberConstructor | StringConstructor)[];
            default: string;
        };
        scrollAreaComponent: {
            type: (ObjectConstructor | FunctionConstructor)[];
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        classNames: {
            type: (ObjectConstructor | FunctionConstructor)[];
            default: undefined;
        };
        styles: {
            type: (ObjectConstructor | FunctionConstructor)[];
            default: undefined;
        };
        vars: {
            type: (ObjectConstructor | FunctionConstructor)[];
            default: undefined;
        };
        unstyled: BooleanConstructor;
    }>> & Readonly<{}>, {
        size: string | number;
        classNames: Function | Record<string, any>;
        styles: Function | Record<string, any>;
        offset: string | number;
        position: DrawerPosition;
        vars: Function | Record<string, any>;
        unstyled: boolean;
        scrollAreaComponent: Function | Record<string, any>;
    }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
    Overlay: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        __hidden: BooleanConstructor;
    }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        __hidden: BooleanConstructor;
    }>> & Readonly<{}>, {
        visible: boolean;
        __hidden: boolean;
    }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
    Content: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        __hidden: BooleanConstructor;
    }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        __hidden: BooleanConstructor;
    }>> & Readonly<{}>, {
        visible: boolean;
        __hidden: boolean;
    }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
    Body: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        __hidden: BooleanConstructor;
    }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        __hidden: BooleanConstructor;
    }>> & Readonly<{}>, {
        visible: boolean;
        __hidden: boolean;
    }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
    Header: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        __hidden: BooleanConstructor;
    }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        __hidden: BooleanConstructor;
    }>> & Readonly<{}>, {
        visible: boolean;
        __hidden: boolean;
    }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
    Title: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        __hidden: BooleanConstructor;
    }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        __hidden: BooleanConstructor;
    }>> & Readonly<{}>, {
        visible: boolean;
        __hidden: boolean;
    }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
    CloseButton: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        __hidden: BooleanConstructor;
    }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
        visible: {
            type: BooleanConstructor;
            default: undefined;
        };
        transitionProps: ObjectConstructor;
        __hidden: BooleanConstructor;
    }>> & Readonly<{}>, {
        visible: boolean;
        __hidden: boolean;
    }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
    Stack: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>[] | undefined, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
};
export type DrawerStylesNames = 'root' | 'body' | 'close' | 'content' | 'header' | 'inner' | 'overlay' | 'title';
export type DrawerCssVariables = any;
export type DrawerFactory = any;
