import { RouteRecordRaw } from 'vue-router'; import { Module } from 'vuex'; import { Component } from 'vue'; declare namespace FG_Plugin { interface ShortCutLink { link: string; icon: string; permissions?: string[]; } interface PluginRouteConfig { title: string; icon: string; route: RouteRecordRaw; shortcut?: boolean; children?: PluginRouteConfig[]; permissions?: string[]; } interface Widget { name: string; priority: number; permissions: FG.Permission[]; widget: Component; } interface Plugin { name: string; version: string; widgets: Widget[]; requiredModules: string[]; requiredBackendModules: string[]; mainRoutes?: PluginRouteConfig[]; outRoutes?: PluginRouteConfig[]; store?: Map>; } interface PluginMainLink extends PluginChildLink { children: PluginChildLink[]; } interface PluginChildLink { name: string; title: string; link: string; icon: string; permissions?: string[]; } interface LoadedPlugin { name: string; version: string; } interface LoadedPlugins { plugins: LoadedPlugin[]; routes: RouteRecordRaw[]; mainLinks: PluginMainLink[]; shortcuts: ShortCutLink[]; shortcutsOut: ShortCutLink[]; widgets: Widget[]; } }