import { type MenuItemProps, type MenuProps } from '@mantine/core'; import { type ReactNode } from 'react'; export interface MantineBetterMenuInstance { id: string; items?: Array; menuProps?: MenuProps; renderer?: ReactNode; visible: boolean; x: number; y: number; } export interface MantineBetterMenuInstanceItem extends Partial { isDivider?: boolean; label?: string; onClick?: (e?: React.MouseEvent) => void; onClickAsync?: () => Promise; renderer?: ((props: MantineBetterMenuInstanceItem & Record) => ReactNode) | ReactNode; } export interface MenuStoreProps { providerID?: string; } export type MenuStoreState = MenuStoreProps & MenuStoreStateOnly; export interface MenuStoreStateOnly { hide: (id: string) => void; menus: Array; setInstanceState: (instanceID: string, key: K, value: MantineBetterMenuInstance[K]) => void; setState: (key: K, value: Partial) => void; show: (id: string, options?: Partial) => void; } declare const MantineBetterMenusStoreProvider: (props: { children: ReactNode; } & { firstSyncProps?: string[]; persist?: import("zustand/middleware").PersistOptions, Partial, unknown> | undefined; } & MenuStoreProps) => React.ReactNode, useMantineBetterMenus: { (): { $sync?: ((props: MenuStoreProps) => void) | undefined; } & MenuStoreProps & MenuStoreStateOnly; (selector: (state: { $sync?: ((props: MenuStoreProps) => void) | undefined; } & MenuStoreProps & MenuStoreStateOnly) => U, equalityFn?: ((a: U, b: U) => boolean) | undefined): U; }; export { MantineBetterMenusStoreProvider, useMantineBetterMenus };