import { default as React, ReactNode, CSSProperties } from 'react';
import { ButtonProps } from './Button';
export interface DrawerProps {
    isOpen: boolean;
    onClose: () => void;
    children?: ReactNode;
    renderContent?: (close: () => void) => ReactNode;
    position?: "left" | "right" | "top" | "bottom";
    size?: string;
    disableOverlayClose?: boolean;
    /** Also block Escape. Defaults to `disableOverlayClose`. */
    disableEscapeClose?: boolean;
    /** Accessible name for the dialog when no DrawerHeader is used. */
    ariaLabel?: string;
    overlayClassName?: string;
    overlayStyle?: CSSProperties;
    /** Applied to the sliding panel that hosts the drawer content. */
    panelClassName?: string;
}
export declare function Drawer({ isOpen, onClose, children, renderContent, position, size, disableOverlayClose, disableEscapeClose, ariaLabel, overlayClassName, overlayStyle, panelClassName, }: DrawerProps): import("react/jsx-runtime").JSX.Element;
export interface DrawerContentProps {
    children: ReactNode;
    className?: string;
    style?: CSSProperties;
}
export declare function DrawerContent({ children, className, style, }: DrawerContentProps): import("react/jsx-runtime").JSX.Element;
export declare function DrawerBody({ children, className, style, }: {
    children: ReactNode;
    className?: string;
    style?: CSSProperties;
}): import("react/jsx-runtime").JSX.Element;
export interface DrawerHeaderProps {
    title?: string;
    icon?: ReactNode;
    onClose?: () => void;
    className?: string;
    style?: CSSProperties;
    titleWrapperClassName?: string;
    titleClassName?: string;
    closeButtonClassName?: string;
}
export declare function DrawerHeader({ title, icon, onClose, className, style, titleWrapperClassName, titleClassName, closeButtonClassName, }: DrawerHeaderProps): import("react/jsx-runtime").JSX.Element;
export declare function DrawerFooter({ children, className, style, }: {
    children: ReactNode;
    className?: string;
    style?: CSSProperties;
}): import("react/jsx-runtime").JSX.Element;
export interface DrawerTriggerProps extends ButtonProps {
    children: React.ReactNode;
    drawerContent: (props: {
        close: () => void;
    }) => React.ReactNode;
    /** Forwarded to the underlying <Drawer />. */
    drawerProps?: Omit<DrawerProps, "isOpen" | "onClose" | "children">;
}
export declare function DrawerTriggerButton({ children, drawerContent, drawerProps, onClick, ...props }: DrawerTriggerProps): import("react/jsx-runtime").JSX.Element;
export interface DrawerButtonProps {
    label?: string;
    icon?: ReactNode;
    iconPosition?: "left" | "right";
    onClick?: () => void;
    className?: string;
    style?: React.CSSProperties;
    labelClassName?: string;
    iconClassName?: string;
}
export declare const DrawerButton: React.FC<DrawerButtonProps>;
