/* eslint-disable */
/* prettier-ignore */
// Generated by elegant-router
// Read more: https://github.com/soybeanjs/elegant-router

declare module "@elegant-router/types" {
  type ElegantConstRoute = import('@elegant-router/vue').ElegantConstRoute;

  /**
   * route layout
   */
  export type RouteLayout = "base" | "blank";

  /**
   * route map
   */
  export type RouteMap = {
    "root": "/";
    "not-found": "/:pathMatch(.*)*";
    "exception": "/exception";
    "exception_403": "/exception/403";
    "exception_404": "/exception/404";
    "exception_500": "/exception/500";
    "document": "/document";
    "document_project": "/document/project";
    "document_project-link": "/document/project-link";
    "document_video": "/document/video";
    "document_vue": "/document/vue";
    "document_vite": "/document/vite";
    "document_unocss": "/document/unocss";
    "document_naive": "/document/naive";
    "document_pro-naive": "/document/pro-naive";
    "document_antd": "/document/antd";
    "document_alova": "/document/alova";
    "403": "/403";
    "404": "/404";
    "500": "/500";
    "about": "/about";
    "config": "/config";
    "config_dict": "/config/dict";
    "config_fright-config": "/config/fright-config";
    "config_order-split": "/config/order-split";
    "delivery": "/delivery";
    "delivery_after-sales-order": "/delivery/after-sales-order";
    "delivery_normal-order": "/delivery/normal-order";
    "delivery_ponits-details": "/delivery/ponits-details";
    "delivery_split-order": "/delivery/split-order";
    "delivery_split-order-detail": "/delivery/split-order-detail";
    "finance": "/finance";
    "finance_commodity-freight": "/finance/commodity-freight";
    "finance_summary": "/finance/summary";
    "goods": "/goods";
    "goods_desk-category": "/goods/desk-category";
    "goods_store-goods": "/goods/store-goods";
    "goods_tag": "/goods/tag";
    "government": "/government";
    "government_government-list": "/government/government-list";
    "government_points": "/government/points";
    "government_user-list": "/government/user-list";
    "home": "/home";
    "iframe-page": "/iframe-page/:url";
    "login": "/login/:module(pwd-login|code-login|register|reset-pwd|bind-wechat)?";
    "manage": "/manage";
    "manage_config": "/manage/config";
    "manage_department": "/manage/department";
    "manage_log": "/manage/log";
    "manage_menu": "/manage/menu";
    "manage_role": "/manage/role";
    "manage_schedule": "/manage/schedule";
    "manage_user": "/manage/user";
    "operation": "/operation";
    "operation_advertisement": "/operation/advertisement";
    "operation_delivery-admin": "/operation/delivery-admin";
    "operation_search": "/operation/search";
    "plugin": "/plugin";
    "plugin_barcode": "/plugin/barcode";
    "plugin_charts": "/plugin/charts";
    "plugin_charts_antv": "/plugin/charts/antv";
    "plugin_charts_echarts": "/plugin/charts/echarts";
    "plugin_charts_vchart": "/plugin/charts/vchart";
    "plugin_copy": "/plugin/copy";
    "plugin_editor": "/plugin/editor";
    "plugin_editor_markdown": "/plugin/editor/markdown";
    "plugin_editor_quill": "/plugin/editor/quill";
    "plugin_excel": "/plugin/excel";
    "plugin_gantt": "/plugin/gantt";
    "plugin_gantt_dhtmlx": "/plugin/gantt/dhtmlx";
    "plugin_gantt_vtable": "/plugin/gantt/vtable";
    "plugin_icon": "/plugin/icon";
    "plugin_map": "/plugin/map";
    "plugin_pdf": "/plugin/pdf";
    "plugin_pinyin": "/plugin/pinyin";
    "plugin_print": "/plugin/print";
    "plugin_swiper": "/plugin/swiper";
    "plugin_tables": "/plugin/tables";
    "plugin_tables_vtable": "/plugin/tables/vtable";
    "plugin_typeit": "/plugin/typeit";
    "plugin_video": "/plugin/video";
    "pro-naive": "/pro-naive";
    "pro-naive_form": "/pro-naive/form";
    "pro-naive_form_basic": "/pro-naive/form/basic";
    "pro-naive_form_query": "/pro-naive/form/query";
    "pro-naive_form_step": "/pro-naive/form/step";
    "pro-naive_table": "/pro-naive/table";
    "pro-naive_table_remote": "/pro-naive/table/remote";
    "pro-naive_table_row-edit": "/pro-naive/table/row-edit";
    "store-management": "/store-management";
    "store-management_store-info": "/store-management/store-info";
    "user-center": "/user-center";
    "user-management": "/user-management";
    "user-management_user-list": "/user-management/user-list";
    "user-management_user-reviews": "/user-management/user-reviews";
  };

  /**
   * route key
   */
  export type RouteKey = keyof RouteMap;

  /**
   * route path
   */
  export type RoutePath = RouteMap[RouteKey];

  /**
   * custom route key
   */
  export type CustomRouteKey = Extract<
    RouteKey,
    | "root"
    | "not-found"
    | "exception"
    | "exception_403"
    | "exception_404"
    | "exception_500"
    | "document"
    | "document_project"
    | "document_project-link"
    | "document_video"
    | "document_vue"
    | "document_vite"
    | "document_unocss"
    | "document_naive"
    | "document_pro-naive"
    | "document_antd"
    | "document_alova"
  >;

  /**
   * the generated route key
   */
  export type GeneratedRouteKey = Exclude<RouteKey, CustomRouteKey>;

  /**
   * the first level route key, which contain the layout of the route
   */
  export type FirstLevelRouteKey = Extract<
    RouteKey,
    | "403"
    | "404"
    | "500"
    | "about"
    | "config"
    | "delivery"
    | "finance"
    | "goods"
    | "government"
    | "home"
    | "iframe-page"
    | "login"
    | "manage"
    | "operation"
    | "plugin"
    | "pro-naive"
    | "store-management"
    | "user-center"
    | "user-management"
  >;

  /**
   * the custom first level route key
   */
  export type CustomFirstLevelRouteKey = Extract<
    CustomRouteKey,
    | "root"
    | "not-found"
    | "exception"
    | "document"
  >;

  /**
   * the last level route key, which has the page file
   */
  export type LastLevelRouteKey = Extract<
    RouteKey,
    | "403"
    | "404"
    | "500"
    | "iframe-page"
    | "login"
    | "about"
    | "config_dict"
    | "config_fright-config"
    | "config_order-split"
    | "delivery_after-sales-order"
    | "delivery_normal-order"
    | "delivery_ponits-details"
    | "delivery_split-order-detail"
    | "delivery_split-order"
    | "finance_commodity-freight"
    | "finance_summary"
    | "goods_desk-category"
    | "goods_store-goods"
    | "goods_tag"
    | "government_government-list"
    | "government_points"
    | "government_user-list"
    | "home"
    | "manage_config"
    | "manage_department"
    | "manage_log"
    | "manage_menu"
    | "manage_role"
    | "manage_schedule"
    | "manage_user"
    | "operation_advertisement"
    | "operation_delivery-admin"
    | "operation_search"
    | "plugin_barcode"
    | "plugin_charts_antv"
    | "plugin_charts_echarts"
    | "plugin_charts_vchart"
    | "plugin_copy"
    | "plugin_editor_markdown"
    | "plugin_editor_quill"
    | "plugin_excel"
    | "plugin_gantt_dhtmlx"
    | "plugin_gantt_vtable"
    | "plugin_icon"
    | "plugin_map"
    | "plugin_pdf"
    | "plugin_pinyin"
    | "plugin_print"
    | "plugin_swiper"
    | "plugin_tables_vtable"
    | "plugin_typeit"
    | "plugin_video"
    | "pro-naive_form_basic"
    | "pro-naive_form_query"
    | "pro-naive_form_step"
    | "pro-naive_table_remote"
    | "pro-naive_table_row-edit"
    | "store-management_store-info"
    | "user-center"
    | "user-management_user-list"
    | "user-management_user-reviews"
  >;

  /**
   * the custom last level route key
   */
  export type CustomLastLevelRouteKey = Extract<
    CustomRouteKey,
    | "root"
    | "not-found"
    | "exception_403"
    | "exception_404"
    | "exception_500"
    | "document_project"
    | "document_project-link"
    | "document_video"
    | "document_vue"
    | "document_vite"
    | "document_unocss"
    | "document_naive"
    | "document_pro-naive"
    | "document_antd"
    | "document_alova"
  >;

  /**
   * the single level route key
   */
  export type SingleLevelRouteKey = FirstLevelRouteKey & LastLevelRouteKey;

  /**
   * the custom single level route key
   */
  export type CustomSingleLevelRouteKey = CustomFirstLevelRouteKey & CustomLastLevelRouteKey;

  /**
   * the first level route key, but not the single level
  */
  export type FirstLevelRouteNotSingleKey = Exclude<FirstLevelRouteKey, SingleLevelRouteKey>;

  /**
   * the custom first level route key, but not the single level
   */
  export type CustomFirstLevelRouteNotSingleKey = Exclude<CustomFirstLevelRouteKey, CustomSingleLevelRouteKey>;

  /**
   * the center level route key
   */
  export type CenterLevelRouteKey = Exclude<GeneratedRouteKey, FirstLevelRouteKey | LastLevelRouteKey>;

  /**
   * the custom center level route key
   */
  export type CustomCenterLevelRouteKey = Exclude<CustomRouteKey, CustomFirstLevelRouteKey | CustomLastLevelRouteKey>;

  /**
   * the center level route key
   */
  type GetChildRouteKey<K extends RouteKey, T extends RouteKey = RouteKey> = T extends `${K}_${infer R}`
    ? R extends `${string}_${string}`
      ? never
      : T
    : never;

  /**
   * the single level route
   */
  type SingleLevelRoute<K extends SingleLevelRouteKey = SingleLevelRouteKey> = K extends string
    ? Omit<ElegantConstRoute, 'children'> & {
        name: K;
        path: RouteMap[K];
        component: `layout.${RouteLayout}$view.${K}`;
      }
    : never;

  /**
   * the last level route
   */
  type LastLevelRoute<K extends GeneratedRouteKey> = K extends LastLevelRouteKey
    ? Omit<ElegantConstRoute, 'children'> & {
        name: K;
        path: RouteMap[K];
        component: `view.${K}`;
      }
    : never;
  
  /**
   * the center level route
   */
  type CenterLevelRoute<K extends GeneratedRouteKey> = K extends CenterLevelRouteKey
    ? Omit<ElegantConstRoute, 'component'> & {
        name: K;
        path: RouteMap[K];
        children: (CenterLevelRoute<GetChildRouteKey<K>> | LastLevelRoute<GetChildRouteKey<K>>)[];
      }
    : never;

  /**
   * the multi level route
   */
  type MultiLevelRoute<K extends FirstLevelRouteNotSingleKey = FirstLevelRouteNotSingleKey> = K extends string
    ? ElegantConstRoute & {
        name: K;
        path: RouteMap[K];
        component: `layout.${RouteLayout}`;
        children: (CenterLevelRoute<GetChildRouteKey<K>> | LastLevelRoute<GetChildRouteKey<K>>)[];
      }
    : never;
  
  /**
   * the custom first level route
   */
  type CustomSingleLevelRoute<K extends CustomFirstLevelRouteKey = CustomFirstLevelRouteKey> = K extends string
    ? Omit<ElegantConstRoute, 'children'> & {
        name: K;
        path: RouteMap[K];
        component?: `layout.${RouteLayout}$view.${LastLevelRouteKey}`;
      }
    : never;

  /**
   * the custom last level route
   */
  type CustomLastLevelRoute<K extends CustomRouteKey> = K extends CustomLastLevelRouteKey
    ? Omit<ElegantConstRoute, 'children'> & {
        name: K;
        path: RouteMap[K];
        component?: `view.${LastLevelRouteKey}`;
      }
    : never;

  /**
   * the custom center level route
   */
  type CustomCenterLevelRoute<K extends CustomRouteKey> = K extends CustomCenterLevelRouteKey
    ? Omit<ElegantConstRoute, 'component'> & {
        name: K;
        path: RouteMap[K];
        children: (CustomCenterLevelRoute<GetChildRouteKey<K>> | CustomLastLevelRoute<GetChildRouteKey<K>>)[];
      }
    : never;

  /**
   * the custom multi level route
   */
  type CustomMultiLevelRoute<K extends CustomFirstLevelRouteNotSingleKey = CustomFirstLevelRouteNotSingleKey> =
    K extends string
      ? ElegantConstRoute & {
          name: K;
          path: RouteMap[K];
          component: `layout.${RouteLayout}`;
          children: (CustomCenterLevelRoute<GetChildRouteKey<K>> | CustomLastLevelRoute<GetChildRouteKey<K>>)[];
        }
      : never;

  /**
   * the custom route
   */
  type CustomRoute = CustomSingleLevelRoute | CustomMultiLevelRoute;

  /**
   * the generated route
   */
  type GeneratedRoute = SingleLevelRoute | MultiLevelRoute;

  /**
   * the elegant route
   */
  type ElegantRoute = GeneratedRoute | CustomRoute;
}
