export type {
  MenuItemNode,
  MenuItemRow,
  MenuRow,
  MenuTarget,
  MenuTree,
} from '@platform-modules/menus'
import type { MenuItemRow, MenuRow, MenuTarget, MenuTree } from '@platform-modules/menus'

export type EntityTarget = {
  entityType: string
  entityId: string
  label: string
}

export interface MenuClient {
  listMenus(): Promise<MenuRow[]>
  getMenuTree(key: string): Promise<MenuTree | null>
  createMenu(input: { key: string; label: string }): Promise<MenuRow>
  updateMenu(menuId: string, patch: { label?: string }): Promise<MenuRow>
  deleteMenu(menuId: string): Promise<void>
  addItem(
    menuId: string,
    input: { label: string; target: MenuTarget; parentId?: string | null },
  ): Promise<MenuItemRow>
  updateItem(
    itemId: string,
    patch: { label?: string; target?: MenuTarget; openInNew?: boolean },
  ): Promise<MenuItemRow>
  removeItem(itemId: string): Promise<void>
  moveItem(
    itemId: string,
    input: { newParentId: string | null; newPosition: number },
  ): Promise<MenuItemRow>
  reorder(menuId: string, parentId: string | null, orderedIds: string[]): Promise<void>
}
