declare namespace PageRoute {
  /**
   * the root route key
   * @translate 根路由
   */
  type RootRouteKey = 'root';

  /**
   * the not found route, which catch the invalid route path
   * @translate 未找到路由(捕获无效路径的路由)
   */
  type NotFoundRouteKey = 'not-found';

  /**
   * the route key
   * @translate 页面路由
   */
  type RouteKey =
    | '403'
    | '404'
    | '500'
    | 'login'
    | 'not-found'
    | 'about'
    | 'archives'
    | 'archives_attendance'
    | 'archives_other'
    | 'archives_scores'
    | 'archives_students'
    | 'archives_students_component'
    | 'dashboard'
    | 'dashboard_workbench'
    | 'exception'
    | 'exception_403'
    | 'exception_404'
    | 'exception_500'
    | 'lesson'
    | 'lesson_calendar'
    | 'lesson_checkin'
    | 'lesson_classroom'
    | 'lesson_group'
    | 'lesson_schedule'
    | 'lesson_score'
    | 'lesson_student'
    | 'management'
    | 'management_attendance'
    | 'management_auth'
    | 'management_role'
    | 'management_route'
    | 'management_sort'
    | 'management_student'
    | 'management_user';

  /**
   * last degree route key, which has the page file
   * @translate 最后一级路由(该级路有对应的页面文件)
   */
  type LastDegreeRouteKey = Extract<
    RouteKey,
    | '403'
    | '404'
    | '500'
    | 'login'
    | 'not-found'
    | 'about'
    | 'archives_attendance'
    | 'archives_other'
    | 'archives_scores'
    | 'archives_students_component'
    | 'archives_students'
    | 'dashboard_workbench'
    | 'exception_403'
    | 'exception_404'
    | 'exception_500'
    | 'lesson_calendar'
    | 'lesson_checkin'
    | 'lesson_classroom'
    | 'lesson_group'
    | 'lesson_schedule'
    | 'lesson_score'
    | 'lesson_student'
    | 'management_attendance'
    | 'management_auth'
    | 'management_role'
    | 'management_route'
    | 'management_sort'
    | 'management_student'
    | 'management_user'
  >;
}
