import { RouteConfig } from 'vue-router'; import { Module } from 'vuex'; import { StateInterface } from 'src/store'; import { AsyncComponentPromise } from 'vue/types/options'; declare namespace FG_Plugin { interface ShortCutLink { link: string; icon: string; permissions?: string[]; } interface PluginRouteConfig extends RouteConfig { shortcut?: boolean; title: string; icon: string; children?: PluginRouteConfig[]; meta?: { permissions?: string[] }; } interface Widget { name: string; priority: number; permissions: FG.Permission[]; widget: AsyncComponentPromise; } 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: RouteConfig[]; mainLinks: PluginMainLink[]; shortcuts: ShortCutLink[]; shortcutsOut: ShortCutLink[]; widgets: Widget[]; } }