import type { ReactElement } from "react";
import React from "react";
import type { DialogActionsProps, DialogCloseRender, DialogContentProps, DialogContextValue, DialogFooterProps, DialogHeaderProps, DialogProviderProps, DialogScrollAreaProps, DialogTriggerRender } from "./Dialog.types";
import { type Drawer as BaseDrawer } from "../unstyledPrimitives";
/**
 * Resolves the trigger element for `Dialog.Trigger`. Copied from Menu's
 * `resolveMenuTriggerRender` so an Atlantis `<Button>` works as a trigger via
 * `children` or `render` identically in both shells. Raw text children are
 * wrapped in a default `Button`.
 */
export declare function resolveComposableTriggerRender({ children, render, }: {
    readonly children?: React.ReactNode;
    readonly render?: DialogTriggerRender;
}): ReactElement<unknown, string | React.JSXElementConstructor<any>> | ((props: React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>) => React.JSX.Element);
/**
 * Resolves the dismiss element for `Dialog.Close`, mirroring
 * `resolveComposableTriggerRender` so a custom render works in both shells.
 * Falls back to the subtle "remove" `ButtonDismiss` when neither `render` nor
 * `children` are supplied. An Atlantis `<Button>`/`<ButtonDismiss>` passed via
 * `render` or `children` is adapted; any other valid element is used as-is.
 */
export declare function resolveComposableCloseRender({ children, render, }: {
    readonly children?: React.ReactNode;
    readonly render?: DialogCloseRender;
}): ReactElement<unknown, string | React.JSXElementConstructor<any>> | ((props: React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>) => React.JSX.Element);
/**
 * Adapts a `Dialog.Content` `render` for the bottom sheet's drawer popup. A
 * render element passes through; a render function is wrapped to receive the
 * drawer's state re-shaped as the dialog popup's state (e.g. `nestedDrawerOpen`
 * becomes `nestedDialogOpen`), so `render` sees the same shape as the desktop
 * dialog.
 */
export declare function resolveBottomSheetContentRender(render: DialogContentProps["render"]): React.ComponentProps<typeof BaseDrawer.Popup>["render"];
/** Supplies the static config (type/size/isMobile/finalFocus) to the parts. */
export declare function DialogProvider({ children, type, size, isMobile, finalFocus, }: DialogProviderProps): React.JSX.Element;
/** Reads the Dialog config; throws if a part is used outside `<Dialog>`. */
export declare function useDialogContext(): DialogContextValue;
/**
 * True when the current parts render inside a `Dialog.ScrollArea` (or the scroll
 * region a `Dialog.Body` wraps itself in). Header/Footer read it to know whether
 * they are sticky (not nested inside a `Dialog.ScrollArea`) or scroll (nested inside a `Dialog.ScrollArea`); `Dialog.Body`
 * reads it to avoid creating a nested scroller.
 */
export declare const DialogScrollAreaContext: React.Context<boolean>;
/** Whether the current part is nested inside a `Dialog.ScrollArea`. */
export declare function useInsideDialogScrollArea(): boolean;
/**
 * The modal's scroll region — a BaseUI `ScrollArea` that scrolls its content
 * with the browser's native scrollbar (re-enabled in Dialog.module.css). Content
 * placed inside it scrolls and owns the scrollbar; `Dialog.Body` used on its own
 * wraps itself in one. (The bottom sheet uses `DialogBottomSheetScrollArea`,
 * backed by the BottomSheet primitive's scroll area, for its fade.)
 */
export declare function DialogScrollArea({ children, className, style, }: DialogScrollAreaProps): React.JSX.Element;
/** Layout-only header row; sticky unless nested inside a `Dialog.ScrollArea`. */
export declare function SharedDialogHeader({ children, className, style, ...rest }: DialogHeaderProps): React.JSX.Element;
/** Generic footer region; sticky unless nested inside a `Dialog.ScrollArea`. */
export declare function SharedDialogFooter({ children, className, style, ...rest }: DialogFooterProps): React.JSX.Element;
/**
 * The action-button layout: tertiary on the left, primary/secondary grouped on
 * the right. Drop it inside a `Dialog.Footer`.
 */
export declare function DialogActions({ primary, secondary, tertiary, align, className, style, ...rest }: DialogActionsProps): React.JSX.Element;
