
import { Styles } from "../../../tasty/styles/types.js";
import { BasePropsWithoutChildren, ContainerStyleProps } from "../../../tasty/types.js";
import "../../../tasty/index.js";
import { CubeItemBadgeProps } from "../../content/ItemBadge/ItemBadge.js";
import { CubeItemActionProps } from "../ItemAction/ItemAction.js";
import { _MenuTrigger } from "./MenuTrigger.js";
import { SubMenuTrigger } from "./SubMenuTrigger.js";
import "../index.js";
import { CubeCollectionItemProps, _CollectionItem } from "../../CollectionItem.js";
import "../../../index.js";
import React, { ReactElement, ReactNode } from "react";
import { AriaMenuProps } from "react-aria";
import { Section } from "react-stately";
import * as _react_types_shared0 from "@react-types/shared";
import { FocusStrategy } from "@react-types/shared";

//#region src/components/actions/Menu/Menu.d.ts
interface CubeMenuProps<T> extends BasePropsWithoutChildren, ContainerStyleProps, Omit<AriaMenuProps<T>, 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange'> {
  header?: ReactNode;
  footer?: ReactNode;
  menuStyles?: Styles;
  headerStyles?: Styles;
  footerStyles?: Styles;
  styles?: Styles;
  itemStyles?: Styles;
  sectionStyles?: Styles;
  sectionHeadingStyles?: Styles;
  /**
   * Whether keyboard navigation should wrap around when reaching the start/end of the collection.
   * This directly maps to the `shouldFocusWrap` option supported by React-Aria's `useMenu` hook.
   */
  shouldFocusWrap?: boolean;
  /**
   * Whether the menu should automatically receive focus when it mounts.
   * This directly maps to the `autoFocus` option supported by React-Aria's `useMenu` hook.
   */
  autoFocus?: boolean | FocusStrategy;
  shouldUseVirtualFocus?: boolean;
  /** Size of the menu items */
  size?: 'medium' | 'large' | (string & {});
  /** Currently selected keys (controlled) */
  selectedKeys?: string[];
  /** Initially selected keys (uncontrolled) */
  defaultSelectedKeys?: string[];
  /** Handler for selection changes */
  onSelectionChange?: (keys: string[]) => void;
}
type SectionComponent = typeof Section;
declare const Section$1: SectionComponent;
declare const __Menu: (<T>(props: CubeMenuProps<T> & React.RefAttributes<HTMLUListElement>) => ReactElement) & {
  Item: typeof _CollectionItem;
  Section: typeof Section$1;
  SubMenuTrigger: typeof SubMenuTrigger;
  Trigger: typeof _MenuTrigger;
} & {
  Item: (<T>(props: CubeCollectionItemProps<T>) => ReactElement) & {
    Action: React.ForwardRefExoticComponent<Omit<CubeItemActionProps, "ref"> & React.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;
    Badge: React.ForwardRefExoticComponent<CubeItemBadgeProps & React.RefAttributes<HTMLDivElement>>;
  };
  Section: any;
  SubMenuTrigger: typeof SubMenuTrigger;
  Trigger: React.ForwardRefExoticComponent<any>;
  displayName: string;
};
//#endregion
export { CubeMenuProps, __Menu };
//# sourceMappingURL=Menu.d.ts.map