import React from "react";
import { CollectionChildren } from "@react-types/shared";
/** Value for a single Option inside this Menu */
export declare type MenuOption<Key extends string> = {
    /** A string that uniquely identifies this option */
    key: Key;
    /** The main text to display within this option */
    title: string;
    /** Sub-options for this option */
    children?: MenuOption<Key>[];
};
export declare type MenuContainerProps = {
    /** An HTML ID attribute that will be attached to the the rendered component. Useful for targeting it from tests */
    id?: string;
    /** The menu's trigger and its body, in order */
    children: [React.ReactElement, React.ReactElement];
    /** Controls if this Menu will be open by default */
    defaultOpen?: boolean;
    /** Controls if this Menu is disabled */
    isDisabled?: boolean;
};
/**
 * A Menu is an overlay that allows you select a single option, then disappears
 */
declare function MenuContainer({ id, children, defaultOpen, isDisabled, }: MenuContainerProps): JSX.Element;
export declare type MenuBodyProps<OptionKey extends string> = {
    /** An HTML ID attribute that will be attached to the the rendered component. Useful for targeting it from tests */
    id?: string;
    /** Children to render */
    children: CollectionChildren<MenuOption<OptionKey>>;
    /** A string describing what this Menu represents */
    title: string;
    /** Options for a user to anchor the menu  */
    anchor?: "left" | "right";
    /** Callback invoked when the Menu's selection changes */
    onSelectionChange?: (key: OptionKey) => void;
};
/**
 * Container for all Menu Sections and Options
 */
declare function MenuBody<OptionKey extends string>({ id, children, title, anchor, onSelectionChange, }: MenuBodyProps<OptionKey>): JSX.Element;
export declare const Menu: {
    Container: typeof MenuContainer;
    Section: <T>(props: import("@react-types/shared").SectionProps<T>) => JSX.Element;
    Option: <T_1>(props: import("@react-types/shared").ItemProps<T_1>) => JSX.Element;
    Body: typeof MenuBody;
};
export {};
