import { FocusStrategy } from '@react-types/shared';
import React, { ReactElement, ReactNode } from 'react';
import { AriaMenuProps } from 'react-aria';
import { Section as BaseSection } from 'react-stately';
import { BasePropsWithoutChildren, ContainerStyleProps, Styles } from '../../../tasty';
import { CollectionItem } from '../../CollectionItem';
import { MenuTrigger } from './MenuTrigger';
import { SubMenuTrigger } from './SubMenuTrigger';
export 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 BaseSection;
declare const Section: SectionComponent;
declare const __Menu: (<T>(props: CubeMenuProps<T> & React.RefAttributes<HTMLUListElement>) => ReactElement) & {
    Item: typeof CollectionItem;
    Section: typeof Section;
    SubMenuTrigger: typeof SubMenuTrigger;
    Trigger: typeof MenuTrigger;
} & {
    Item: (<T>(props: import("../../CollectionItem").CubeCollectionItemProps<T>) => ReactElement) & {
        Action: React.ForwardRefExoticComponent<Omit<import("..").CubeItemActionProps, "ref"> & React.RefAttributes<import("@react-types/shared").FocusableRefValue<HTMLElement, HTMLElement>>>;
        Badge: React.ForwardRefExoticComponent<import("../../..").CubeItemBadgeProps & React.RefAttributes<HTMLDivElement>>;
    };
    Section: any;
    SubMenuTrigger: typeof SubMenuTrigger;
    Trigger: React.ForwardRefExoticComponent<any>;
    displayName: string;
};
export { __Menu as Menu };
