import { App } from './app';
import { IPlugin, PluginName } from './types';
import { DependencyMetadata } from './types/plugin/decorators/dependency';
import { EventMetadata } from './types/plugin/decorators/event';
/**
 * add a plugin
 * @param plugin plugin to add
 */
export declare function plugin<TPlugin extends IPlugin>(this: App<TPlugin>, plugin: TPlugin): App<TPlugin>;
/**
 * get a plugin
 */
export declare function getPlugin<TPlugin extends IPlugin>(this: App<TPlugin>, name: PluginName): IPlugin | undefined;
/**
 * inject fields/events into a plugin
 */
export declare function inject<TPlugin extends IPlugin>(this: App<TPlugin>, plugin: IPlugin): void;
export declare function getMetadata(plugin: IPlugin): {
    dependencies: DependencyMetadata[];
    events: EventMetadata[];
    name: string;
    version: string;
    description?: string;
};
