import type { UseOverlayStateReturn } from "../../hooks/use-overlay-state";
import type { ModalVariants } from "@heroui/styles";
import type { ComponentPropsWithRef, ReactNode } from "react";
import type { Button as ButtonPrimitive, DialogProps as DialogPrimitiveProps } from "react-aria-components";
import { Heading as HeadingPrimitive, ModalOverlay as ModalOverlayPrimitive, Modal as ModalPrimitive, DialogTrigger as ModalTriggerPrimitive } from "react-aria-components";
type ModalPlacement = "auto" | "top" | "center" | "bottom";
interface ModalRootProps extends ComponentPropsWithRef<typeof ModalTriggerPrimitive> {
    state?: UseOverlayStateReturn;
}
declare const ModalRoot: ({ children, state, ...props }: ModalRootProps) => import("react/jsx-runtime").JSX.Element;
interface ModalTriggerProps extends ComponentPropsWithRef<"div"> {
}
declare const ModalTrigger: ({ children, className, ...props }: ModalTriggerProps) => import("react/jsx-runtime").JSX.Element;
interface ModalBackdropProps extends ComponentPropsWithRef<typeof ModalOverlayPrimitive> {
    variant?: ModalVariants["variant"];
    /**
     * Whether to close the modal when the user interacts outside it.
     * @default true
     */
    isDismissable?: boolean;
}
declare const ModalBackdrop: ({ children, className, isDismissable, onClick, variant, ...props }: ModalBackdropProps) => import("react/jsx-runtime").JSX.Element;
interface ModalContainerProps extends Omit<ComponentPropsWithRef<typeof ModalPrimitive>, Exclude<keyof ModalBackdropProps, "children" | "className">> {
    placement?: ModalPlacement;
    scroll?: ModalVariants["scroll"];
    size?: ModalVariants["size"];
}
declare const ModalContainer: ({ children, className, placement, scroll, size, ...props }: ModalContainerProps) => import("react/jsx-runtime").JSX.Element;
interface ModalDialogProps extends DialogPrimitiveProps {
}
declare const ModalDialog: ({ children, className, ...props }: ModalDialogProps) => import("react/jsx-runtime").JSX.Element;
interface ModalHeaderProps extends ComponentPropsWithRef<"div"> {
}
declare const ModalHeader: ({ children, className, ...props }: ModalHeaderProps) => import("react/jsx-runtime").JSX.Element;
interface ModalBodyProps extends ComponentPropsWithRef<"div"> {
}
declare const ModalBody: ({ children, className, ...props }: ModalBodyProps) => import("react/jsx-runtime").JSX.Element;
interface ModalFooterProps extends ComponentPropsWithRef<"div"> {
}
declare const ModalFooter: ({ children, className, ...props }: ModalFooterProps) => import("react/jsx-runtime").JSX.Element;
interface ModalHeadingProps extends ComponentPropsWithRef<typeof HeadingPrimitive> {
}
declare const ModalHeading: ({ children, className, ...props }: ModalHeadingProps) => import("react/jsx-runtime").JSX.Element;
interface ModalIconProps extends ComponentPropsWithRef<"div"> {
}
declare const ModalIcon: ({ children, className, ...props }: ModalIconProps) => import("react/jsx-runtime").JSX.Element;
interface ModalCloseTriggerProps extends ComponentPropsWithRef<typeof ButtonPrimitive> {
    className?: string;
    children?: ReactNode;
}
declare const ModalCloseTrigger: ({ className, ...rest }: ModalCloseTriggerProps) => import("react/jsx-runtime").JSX.Element;
export { ModalRoot, ModalTrigger, ModalBackdrop, ModalContainer, ModalDialog, ModalHeader, ModalIcon, ModalHeading, ModalBody, ModalFooter, ModalCloseTrigger, };
export type { ModalRootProps, ModalTriggerProps, ModalBackdropProps, ModalContainerProps, ModalDialogProps, ModalHeaderProps, ModalIconProps, ModalHeadingProps, ModalBodyProps, ModalFooterProps, ModalCloseTriggerProps, };
