import type { UseOverlayStateReturn } from "../../hooks/use-overlay-state";
import type { DrawerVariants } from "@heroui/styles";
import type { ComponentPropsWithRef, ReactNode } from "react";
import type { ButtonProps as ButtonPrimitiveProps, DialogProps as DialogPrimitiveProps } from "react-aria-components";
import { Button as ButtonPrimitive, DialogTrigger as DrawerTriggerPrimitive, Heading as HeadingPrimitive, ModalOverlay as ModalOverlayPrimitive, Modal as ModalPrimitive } from "react-aria-components";
type DrawerPlacement = "top" | "bottom" | "left" | "right";
interface DrawerRootProps extends ComponentPropsWithRef<typeof DrawerTriggerPrimitive> {
    state?: UseOverlayStateReturn;
}
declare const DrawerRoot: {
    ({ children, state, ...props }: DrawerRootProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
interface DrawerTriggerProps extends ComponentPropsWithRef<typeof ButtonPrimitive> {
}
declare const DrawerTrigger: {
    ({ children, className, ...props }: DrawerTriggerProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
interface DrawerBackdropProps extends ComponentPropsWithRef<typeof ModalOverlayPrimitive> {
    variant?: DrawerVariants["variant"];
    /**
     * Whether to close the drawer when the user interacts outside it.
     * @default true
     */
    isDismissable?: boolean;
}
declare const DrawerBackdrop: {
    ({ children, className, isDismissable, variant, ...props }: DrawerBackdropProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
interface DrawerContentProps extends Omit<ComponentPropsWithRef<typeof ModalPrimitive>, Exclude<keyof DrawerBackdropProps, "children" | "className">> {
    placement?: DrawerPlacement;
}
declare const DrawerContent: {
    ({ children, className, placement, ...props }: DrawerContentProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
interface DrawerDialogProps extends DialogPrimitiveProps {
}
declare const DrawerDialog: {
    ({ children, className, ...props }: DrawerDialogProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
interface DrawerHeaderProps extends ComponentPropsWithRef<"div"> {
}
declare const DrawerHeader: {
    ({ children, className, ...props }: DrawerHeaderProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
interface DrawerBodyProps extends ComponentPropsWithRef<"div"> {
}
declare const DrawerBody: {
    ({ children, className, ...props }: DrawerBodyProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
interface DrawerFooterProps extends ComponentPropsWithRef<"div"> {
}
declare const DrawerFooter: {
    ({ children, className, ...props }: DrawerFooterProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
interface DrawerHeadingProps extends ComponentPropsWithRef<typeof HeadingPrimitive> {
}
declare const DrawerHeading: {
    ({ children, className, ...props }: DrawerHeadingProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
interface DrawerHandleProps extends ComponentPropsWithRef<"div"> {
}
declare const DrawerHandle: {
    ({ className, ...props }: DrawerHandleProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
interface DrawerCloseTriggerProps extends ButtonPrimitiveProps {
    className?: string;
    children?: ReactNode;
}
declare const DrawerCloseTrigger: {
    ({ className, ...rest }: DrawerCloseTriggerProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
export { DrawerRoot, DrawerTrigger, DrawerBackdrop, DrawerContent, DrawerDialog, DrawerHeader, DrawerHeading, DrawerBody, DrawerFooter, DrawerHandle, DrawerCloseTrigger, };
export type { DrawerRootProps, DrawerTriggerProps, DrawerBackdropProps, DrawerContentProps, DrawerDialogProps, DrawerHeaderProps, DrawerHeadingProps, DrawerBodyProps, DrawerFooterProps, DrawerHandleProps, DrawerCloseTriggerProps, };
