import { RouteRecordRaw } from 'vue-router'

declare global {
  namespace RouterTypes {
    interface PageConfig {
      /**
       * 父级路由名称（默认为：main）
       */
      readonly parent: string
      /**
       * 路由地址（全局唯一，默认：page.ts 文件所在的目录且不以 / 开头）
       */
      readonly path: string
      /**
       * 路由名称（全局唯一，默认：page.ts 文件所在的目录名）
       */
      readonly name: string
      /**
       * 页面标题
       */
      readonly  title: string
      /**
       * 是否缓存页面，默认：缓存
       */
      readonly keepAlive: boolean
      /**
       * 页面标签菜单图标
       */
      readonly icon: string
    }

    interface RouteConfig {
      /**
       * 父级路由名称（默认为：main）
       */
      readonly parent?: string
      /**
       * 路由地址（全局唯一，默认：page.ts 文件所在的目录且不以 / 开头）
       */
      readonly path?: string
      /**
       * 路由名称（全局唯一，默认：page.ts 文件所在的目录名）
       */
      readonly name?: string
      /**
       * 页面标题
       */
      title?: string
      /**
       * 组件名称，默认：路由名称
       */
      componentName?: string
      /**
       * 是否缓存页面，默认：缓存
       */
      keepAlive?: boolean
      /**
       * 页面标签菜单图标
       */
      icon?: string
      /**
       * 页面组件
       */
      readonly component: Extract<RouteRecordRaw['component'], any>,
      /**
       * 路由元数据
       */
      readonly meta?: Extract<RouteRecordRaw['meta'], any>,
      /**
       * 路由参数，默认：当 meta.routeParams 有值时将路由参数处理成组件 props
       */
      readonly props?: Extract<RouteRecordRaw['props'], any>,
      /**
       * 路由前置导航守卫
       */
      readonly beforeEnter?: Extract<RouteRecordRaw['beforeEnter'], any>,

    }

    interface RouteInfo {
      parent: string
      route: RouteRecordRaw
    }
  }
}

