import { Plugin, PluginRegistry, PluginHookContext, PluginEventType, PluginMetadata } from '../types/index.js';
export declare class PluginManager {
    private plugins;
    private game;
    private isInitialized;
    constructor(game: any);
    register(plugin: Plugin): Promise<void>;
    unregister(pluginName: string): Promise<void>;
    initialize(): Promise<void>;
    executeHooks(eventType: PluginEventType, context: PluginHookContext): Promise<void>;
    executeCustomHooks(eventName: string, context: PluginHookContext): Promise<void>;
    getPlugin(name: string): Plugin | undefined;
    getAllPlugins(): PluginRegistry;
    getPluginAPI(name: string): any;
    hasPlugin(name: string): boolean;
    getPluginMetadata(name: string): PluginMetadata | undefined;
    getPluginNames(): string[];
    dispose(): Promise<void>;
    private validatePlugin;
    private checkDependencies;
    createHookContext(additionalContext?: Partial<PluginHookContext>): PluginHookContext;
}
