import { Bento } from '../../Bento'; import { PluginReference } from '../../references'; import { Plugin } from '../interfaces'; export declare enum PluginHook { onPreComponentLoad = "onPreComponentLoad", onPreComponentUnload = "onPreComponentUnload", onPostComponentLoad = "onPostComponentLoad", onPostComponentUnload = "onPostComponentUnload" } export declare class PluginManager { private readonly bento; private readonly references; private readonly plugins; constructor(bento: Bento); /** * Delegate for the resolveName function * * @param reference Plugin instance, name or reference * * @see ReferenceManager#resolveName * @returns resolved component name */ resolveName(reference: PluginReference): string; /** * Check if a given plugin exists * * @param reference Plugin instance, name or reference * * @returns boolean */ hasPlugin(reference: PluginReference): boolean; /** * Get plugin instance * @param reference Plugin name or reference * * @returns Plugin instance */ getPlugin(reference: PluginReference): T; /** * Get instances of all currently loaded plugins * * @returns Array of component instances */ getPlugins(): Plugin[]; /** * Add a Plugin to Bento * @param plugin Plugin instance * * @returns Plugin name */ addPlugin(plugin: Plugin): Promise; /** * Remove a Plugin from Bento * @param name - name of plugin to remove */ removePlugin(name: string): Promise; /** * Adds plugins to Bento in order of array * @param plugins - array of plugins * * @returns Array of loaded plugin names */ addPlugins(plugins: Array): Promise; private loadPlugin; /** * FOR INTERNAL PACKAGE USE ONLY * * Calls a given hook for all plugins * This is an internal function to be used by bento managers. * @param hookName Hook name * @param component Component * * @package * @see {@link docs/internal-functions} */ private __handlePluginHook; }