import { Game } from '../core/Game.js';
import { PluginManager } from '../core/PluginManager.js';
import { Plugin, PluginMetadata, PluginHooks } from '../types/index.js';
/**
 * Helper function để tạo plugin dễ dàng hơn
 */
export declare function createPlugin(options: {
    metadata: PluginMetadata;
    hooks?: PluginHooks;
    initialize?: (game: any, pluginManager: any) => void | Promise<void>;
    dispose?: () => void | Promise<void>;
    api?: {
        [key: string]: any;
    };
}): Plugin;
/**
 * Decorator để đánh dấu plugin method hooks
 */
export declare function hook(eventType: keyof PluginHooks): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
/**
 * Class-based Plugin helper
 */
export declare abstract class PluginBase implements Plugin {
    abstract metadata: PluginMetadata;
    hooks?: PluginHooks;
    api?: {
        [key: string]: any;
    };
    constructor();
    private collectHooks;
    initialize?(game: Game, pluginManager: PluginManager): Promise<void>;
    dispose?(): Promise<void>;
}
/**
 * Plugin Registry Builder để quản lý nhiều plugins :v
 */
export declare class PluginRegistryBuilder {
    private plugins;
    add(plugin: Plugin): this;
    addMultiple(plugins: Plugin[]): this;
    build(): Plugin[];
    registerAll(game: Game): Promise<void>;
}
/**
 * Validation helper cho plugin
 */
export declare function validatePlugin(plugin: Plugin): {
    valid: boolean;
    errors: string[];
};
