declare namespace Api {
  /** 认证类型 */
  namespace Auth {
    /** 登录参数 */
    interface LoginParams {
      accountName: string
      phone: string
      password: string
    }

    /** Token 响应 */
    interface TokenResponse {
      accessToken: string
      accessTokenExpiresAt: string
      refreshToken: string
      refreshTokenExpiresAt: string
      user: UserInfo
      isNewUser: boolean
    }

    /** 登录响应 */
    type LoginResponse = TokenResponse

    /** 用户信息 */
    interface UserInfo {
      userId: string
      account: string
      displayName: string
      tenantId: string
      merchantId?: string
      roles: string[]
      permissions: string[]
      avatar?: string
    }

    /** 菜单权限项 */
    interface MenuAuthItem {
      title: string
      authMark: string
    }

    /** 菜单元数据 */
    interface MenuMeta {
      title: string
      icon?: string
      keepAlive?: boolean
      isIframe?: boolean
      link?: string
      roles?: string[]
      authList?: MenuAuthItem[]
    }

    /** 菜单节点 */
    interface MenuNode {
      name: string
      path: string
      component: string
      meta: MenuMeta
      children?: MenuNode[]
    }

    /** 菜单列表响应 */
    type MenuListResponse = MenuNode[]

    /** 用户权限响应 */
    type UserPermissionsResponse = string[]

    /** 通过重置链接令牌重置管理员密码请求 */
    interface ResetAdminPasswordRequest {
      token: string
      newPassword: string
    }
  }
}
