declare namespace Api {
  /**
   * 菜单管理
   * 对齐 Swagger: /api/admin/v1/menus
   */
  namespace Menu {
    /** 菜单权限项 */
    interface MenuAuthItemDto {
      title: string | null
      authMark: string | null
    }

    /** 菜单定义（平铺） */
    interface MenuDefinitionDto {
      /** 菜单 ID（Snowflake，前端以 string 接收） */
      id: string
      /** 父级菜单 ID（根节点通常为 0） */
      parentId: string
      /** 路由名称 */
      name: string | null
      /** 路由路径 */
      path: string | null
      /** 组件路径 */
      component: string | null
      /** 显示标题 */
      title: string | null
      /** 图标 */
      icon: string | null
      /** 是否为 iframe */
      isIframe: boolean
      /** 外部链接 */
      link: string | null
      /** 是否缓存 */
      keepAlive: boolean
      /** 排序 */
      sortOrder: number
      /** 访问所需权限（后端校验） */
      requiredPermissions: string[] | null
      /** 元数据权限（前端校验） */
      metaPermissions: string[] | null
      /** 元数据角色（前端校验） */
      metaRoles: string[] | null
      /** 权限按钮列表 */
      authList: MenuAuthItemDto[] | null
    }

    /** 创建菜单命令 */
    interface CreateMenuCommand {
      parentId: string
      name: string | null
      path: string | null
      component: string | null
      title: string | null
      icon: string | null
      isIframe: boolean
      link: string | null
      keepAlive: boolean
      sortOrder: number
      requiredPermissions: string[] | null
      metaPermissions: string[] | null
      metaRoles: string[] | null
      authList: MenuAuthItemDto[] | null
    }

    /** 更新菜单命令 */
    interface UpdateMenuCommand extends CreateMenuCommand {
      id: string
    }
  }
}
