import { ComponentPropsWithoutRef, ReactElement, ReactNode, RefObject } from 'react';
/**
 * Props for the Surface component.
 * @property {ReactNode} [children] - Content rendered inside the Surface provider.
 * @property {boolean} open - Controls whether the associated surface content is visible.
 * @property {string} [id] - Stable id used to connect the trigger and content for accessibility.
 */
export type SurfaceProps = {
    children?: ReactNode;
    open: boolean;
    id?: string;
};
/**
 * Props passed to the Surface trigger render function.
 * @property {(node: Element | null) => void} ref - Assigns the trigger element as the positioning reference.
 * @property {string} id - Id used by the content element to identify its trigger.
 * @property {string} aria-controls - Id of the controlled surface content element.
 * @property {"dialog"} aria-haspopup - Identifies the controlled content as dialog-like UI.
 * @property {boolean} aria-expanded - Indicates whether the surface content is currently open.
 * @property {"open" | "closed"} data-state - Mirrors the open state for styling hooks.
 */
export type SurfaceTriggerChildrenProps = {
    ref: (node: Element | null) => void;
    id: string;
    "aria-controls": string;
    "aria-haspopup": "dialog";
    "aria-expanded": boolean;
    "data-state": "open" | "closed";
};
/**
 * Props for the SurfaceTrigger component.
 * @property {(props: SurfaceTriggerChildrenProps) => ReactElement} children - Render prop receiving accessibility and positioning props for the trigger element.
 */
export type SurfaceTriggerProps = {
    children: (props: SurfaceTriggerChildrenProps) => ReactElement;
};
/**
 * SurfaceTrigger component for wiring a trigger element to Surface content.
 *
 * Features:
 * - Provides ARIA attributes and open state for the trigger.
 * - Registers the trigger as the positioning reference.
 *
 * @param props SurfaceTrigger props including a trigger render function.
 * @returns The trigger element returned by the render function.
 */
export declare function SurfaceTrigger({ children }: SurfaceTriggerProps): ReactElement<any, string | import('react').JSXElementConstructor<any>>;
/**
 * Props for the SurfaceContent component.
 * @property {ReactNode} children - Main body rendered inside the positioned surface.
 * @property {() => void} onClose - Called when the user requests the surface to close and commit behavior is desired.
 * @property {() => void} [onCancel] - Called for cancellation flows such as Escape; falls back to onClose when omitted.
 * @property {ReactNode} [title] - Header title used as the default accessible label.
 * @property {ReactNode} [headerContent] - Additional header actions rendered before the close button.
 * @property {RefObject<HTMLElement | null>} [initialFocusRef] - Element focused after the surface opens.
 * @property {RefObject<HTMLElement | null>} [intersectionBoundaryRef] - Optional element that positioned content should intersect after placement or drag.
 * @property {number | string} [width] - Surface width as pixels or a CSS dimension.
 * @property {number | string} [maxHeight] - Maximum surface height as pixels or a CSS dimension.
 * @property {string} [closeButtonLabel] - Accessible label for the header close button.
 * @extends ComponentPropsWithoutRef<"div">
 */
export type SurfaceContentProps = Omit<ComponentPropsWithoutRef<"div">, "children" | "id" | "title"> & {
    children: ReactNode;
    onClose: () => void;
    onCancel?: () => void;
    title?: ReactNode;
    headerContent?: ReactNode;
    initialFocusRef?: RefObject<HTMLElement | null>;
    intersectionBoundaryRef?: RefObject<HTMLElement | null>;
    width?: number | string;
    maxHeight?: number | string;
    closeButtonLabel?: string;
};
/**
 * SurfaceContent component for rendering positioned, non-modal content as a manual popover.
 *
 * Features:
 * - Positions content relative to the Surface trigger.
 * - Supports accessible labels, close behavior, and viewport-aware sizing.
 *
 * @param props SurfaceContent props including close handlers, labels, dimensions, and content.
 * @param ref Ref forwarded to the surface content element.
 * @returns Positioned surface content when rendered within a Surface provider.
 */
export declare const SurfaceContent: import('react').ForwardRefExoticComponent<Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "title" | "id" | "children"> & {
    children: ReactNode;
    onClose: () => void;
    onCancel?: () => void;
    title?: ReactNode;
    headerContent?: ReactNode;
    initialFocusRef?: RefObject<HTMLElement | null>;
    intersectionBoundaryRef?: RefObject<HTMLElement | null>;
    width?: number | string;
    maxHeight?: number | string;
    closeButtonLabel?: string;
} & import('react').RefAttributes<HTMLDivElement>>;
/**
 * Surface component for coordinating trigger and content state in compound overlay UI.
 *
 * Features:
 * - Connects trigger and content with shared accessibility ids.
 * - Tracks the trigger element for floating positioning.
 * - Exposes Surface.Trigger and Surface.Content compound components.
 *
 * @param props Surface props including open state, optional id, and compound children.
 * @returns A Surface context provider that coordinates compound components.
 * @example
 * <Surface open={open}>
 *   <Surface.Trigger>
 *     {(triggerProps) => <Button {...triggerProps}>Open filters</Button>}
 *   </Surface.Trigger>
 *   <Surface.Content title="Filters" onClose={() => setOpen(false)}>
 *     <FilterForm />
 *   </Surface.Content>
 * </Surface>
 */
export declare const Surface: (({ children, open, id }: SurfaceProps) => import("react/jsx-runtime").JSX.Element) & {
    /**
     * SurfaceTrigger component for wiring a trigger element to Surface content.
     *
     * Features:
     * - Provides ARIA attributes and open state for the trigger.
     * - Registers the trigger as the positioning reference.
     */
    Trigger: typeof SurfaceTrigger;
    /**
     * SurfaceContent component for rendering positioned, non-modal content as a manual popover.
     *
     * Features:
     * - Positions content relative to the Surface trigger.
     * - Supports accessible labels, close behavior, and viewport-aware sizing.
     */
    Content: import('react').ForwardRefExoticComponent<Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "title" | "id" | "children"> & {
        children: ReactNode;
        onClose: () => void;
        onCancel?: () => void;
        title?: ReactNode;
        headerContent?: ReactNode;
        initialFocusRef?: RefObject<HTMLElement | null>;
        intersectionBoundaryRef?: RefObject<HTMLElement | null>;
        width?: number | string;
        maxHeight?: number | string;
        closeButtonLabel?: string;
    } & import('react').RefAttributes<HTMLDivElement>>;
};
