declare interface VabRouteMeta {
  activeMenu?: string
  badge?: string
  breadcrumbHidden?: boolean
  dot?: boolean
  dynamicNewTab?: boolean
  guard?: string[] | GuardType

  hidden?: boolean

  icon?: string

  isCustomSvg?: boolean

  levelHidden?: boolean

  noClosable?: boolean

  noColumn?: boolean

  noKeepAlive?: boolean

  tabHidden?: boolean

  target?: '_blank' | false

  title?: string

  fullscreen?: boolean
}

// @ts-ignore
declare interface VabRouteRecord extends Omit<RouteRecordRaw, 'meta'> {
  path: string
  // name 首字母必须大写
  name: Capitalize<string>
  meta: VabRouteMeta
  fullPath?: string
  component?: Component | any
  components?: Component | string
  children?: VabRouteRecord[]
  childrenNameList?: (string | undefined)[]
}

declare interface VabRoute extends Omit<VabRouteRecord, 'children' | 'childrenNameList'> {
  query?: any
  params?: any
  matched?: VabRoute[]
}
