import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
import { ModuleRef } from '@nestjs/core';
import { PluginOptions } from './plugin.module';
import { HookService } from './hook.service';
import { PluginMetadata, PluginRegistrationOptions, PluginManager as IPluginManager, HookHandler } from '../../interfaces/plugin.interfaces';
export declare class PluginManagerMain implements IPluginManager, OnModuleInit, OnModuleDestroy {
    private readonly options;
    private readonly hookService;
    private readonly moduleRef;
    private readonly logger;
    private readonly plugins;
    private readonly enabledPlugins;
    private readonly moduleContexts;
    constructor(options: PluginOptions, hookService: HookService, moduleRef: ModuleRef);
    onModuleInit(): Promise<void>;
    onModuleDestroy(): Promise<void>;
    register(plugin: PluginRegistrationOptions): Promise<void>;
    enable(pluginName: string): Promise<boolean>;
    disable(pluginName: string): Promise<boolean>;
    getPlugins(): PluginMetadata[];
    getPlugin(name: string): PluginMetadata | undefined;
    isEnabled(name: string): boolean;
    registerHook(hookName: string, handler: HookHandler): void;
    executeHook<T = any, R = any>(hookName: string, data: T): Promise<R[]>;
}
