import { type ReactElement, type ReactNode } from "react";
import { type NonNullMutableRef, type UseStateObject } from "../types.js";
/**
 * @since 5.0.0
 * @since 6.0.0 Added the `defaultFocusIndex` ref.
 */
export interface MenuVisibilityContext extends UseStateObject<"visible", boolean> {
    defaultFocusIndex: NonNullMutableRef<number>;
}
/**
 * This hook allows you control the visibility of a parent menu. The main
 * use-case for this hook is adding a custom sheet header/footer.
 *
 * @example Simple Example
 * ```tsx
 * function SheetFooter(): ReactElement {
 *   const { setVisible } = useMenuVisibility();
 *
 *   return (
 *     <DialogFooter>
 *       <Button onClick={() => setVisible(false)}>Cancel</Button>
 *     </DialogFooter>
 *   );
 * }
 * ```
 *
 * @returns the {@link MenuVisibilityContext}
 * @since 5.0.0
 */
export declare function useMenuVisibility(): Readonly<MenuVisibilityContext>;
/**
 * @internal
 * @since 5.0.0
 */
export interface MenuVisibilityProviderProps extends MenuVisibilityContext {
    children: ReactNode;
}
/**
 * **Client Component**
 *
 * @internal
 * @since 5.0.0
 */
export declare function MenuVisibilityProvider({ visible, setVisible, defaultFocusIndex, children, }: MenuVisibilityProviderProps): ReactElement;
