import { Config } from '@backstage/config';
import { DynamicPluginProvider, BackendDynamicPlugin, DynamicPlugin, FrontendDynamicPlugin } from './types';
import { ScannedPluginPackage } from '../scanner';
import { ModuleLoader } from '../loader';
import { LoggerService } from '@backstage/backend-plugin-api';
import { FeatureDiscoveryService } from '@backstage/backend-plugin-api/alpha';
/**
 * @public
 */
export interface DynamicPluginManagerOptions {
    config: Config;
    logger: LoggerService;
    preferAlpha?: boolean;
    moduleLoader?: ModuleLoader;
}
/**
 * @public
 */
export declare class DynamicPluginManager implements DynamicPluginProvider {
    private readonly logger;
    private packages;
    private readonly moduleLoader;
    static create(options: DynamicPluginManagerOptions): Promise<DynamicPluginManager>;
    private readonly _plugins;
    private _availablePackages;
    private constructor();
    get availablePackages(): ScannedPluginPackage[];
    addBackendPlugin(plugin: BackendDynamicPlugin): void;
    private loadPlugins;
    private loadBackendPlugin;
    backendPlugins(): BackendDynamicPlugin[];
    frontendPlugins(): FrontendDynamicPlugin[];
    plugins(): DynamicPlugin[];
}
/**
 * @public
 */
export declare const dynamicPluginsServiceRef: import("@backstage/backend-plugin-api").ServiceRef<DynamicPluginProvider, "root">;
/**
 * @public
 */
export interface DynamicPluginsFactoryOptions {
    moduleLoader?(logger: LoggerService): ModuleLoader;
}
/**
 * @public
 */
export declare const dynamicPluginsServiceFactory: (options?: DynamicPluginsFactoryOptions | undefined) => import("@backstage/backend-plugin-api").ServiceFactory<DynamicPluginProvider, "root">;
/**
 * @public
 */
export declare const dynamicPluginsFeatureDiscoveryServiceFactory: () => import("@backstage/backend-plugin-api").ServiceFactory<FeatureDiscoveryService, "root">;
