/**
 * Sistema de Plugins Extensível para VLibras
 * Permite extensão da funcionalidade base através de plugins
 */
import { VLibrasPlayer } from '../../core/player/VLibrasPlayer';
/**
 * Interface base para plugins VLibras
 */
export interface VLibrasPlugin {
    readonly name: string;
    readonly version: string;
    readonly description?: string;
    readonly dependencies?: string[];
    readonly category?: 'analytics' | 'accessibility' | 'ui' | 'performance' | 'integration' | 'utility';
    setup(player: VLibrasPlayer, config?: any): void | Promise<void>;
    teardown?(player: VLibrasPlayer): void | Promise<void>;
    onPlayerReady?(player: VLibrasPlayer): void;
    onTranslation?(text: string, player: VLibrasPlayer): void;
    onError?(error: Error, player: VLibrasPlayer): void;
}
/**
 * Resultado da validação de plugin
 */
export interface PluginValidationResult {
    valid: boolean;
    errors: string[];
    warnings: string[];
}
/**
 * Informações de plugin registrado
 */
export interface RegisteredPluginInfo {
    plugin: VLibrasPlugin;
    config?: any;
    active: boolean;
    setupTime?: number;
    errorCount: number;
    lastError?: Error;
}
/**
 * Gerenciador de plugins do VLibras
 */
export declare class VLibrasPluginManager {
    private static instance;
    private plugins;
    private eventEmitter;
    private constructor();
    static getInstance(): VLibrasPluginManager;
    /**
     * Registra um plugin
     */
    register(plugin: VLibrasPlugin, config?: any): Promise<void>;
    /**
     * Ativa um plugin para um player específico
     */
    activate(pluginName: string, player: VLibrasPlayer): Promise<void>;
    /**
     * Desativa um plugin
     */
    deactivate(pluginName: string, player: VLibrasPlayer): Promise<void>;
    /**
     * Lista plugins registrados
     */
    list(): RegisteredPluginInfo[];
    /**
     * Lista plugins por categoria
     */
    listByCategory(category: VLibrasPlugin['category']): RegisteredPluginInfo[];
    /**
     * Obtém informações de um plugin específico
     */
    getPluginInfo(name: string): RegisteredPluginInfo | undefined;
    /**
     * Valida um plugin
     */
    private validatePlugin;
    /**
     * Verifica dependências do plugin
     */
    private checkDependencies;
    /**
     * Ativa plugins automaticamente baseado em configuração
     */
    autoActivate(player: VLibrasPlayer, config?: {
        enabledPlugins?: string[];
    }): Promise<void>;
    /**
     * Obtém estatísticas dos plugins
     */
    getStats(): {
        total: number;
        active: number;
        inactive: number;
        withErrors: number;
        byCategory: Record<string, number>;
        avgSetupTime: number;
    };
    /**
     * Adiciona listener para eventos de plugins
     */
    on(event: string, callback: Function): void;
    /**
     * Remove todos os plugins
     */
    clear(): void;
}
/**
 * Plugin de Analytics simples
 */
export declare const AnalyticsPlugin: VLibrasPlugin;
export declare const AccessibilityPlugin: VLibrasPlugin;
/**
 * Plugin de Performance Monitor
 */
export declare const PerformancePlugin: VLibrasPlugin;
/**
 * Instância singleton do gerenciador
 */
export declare const vlibrasPluginManager: VLibrasPluginManager;
/**
 * API simplificada para uso direto
 */
export declare const VLibrasPlugins: {
    register: (plugin: VLibrasPlugin, config?: any) => Promise<void>;
    activate: (name: string, player: VLibrasPlayer) => Promise<void>;
    deactivate: (name: string, player: VLibrasPlayer) => Promise<void>;
    list: () => RegisteredPluginInfo[];
    stats: () => {
        total: number;
        active: number;
        inactive: number;
        withErrors: number;
        byCategory: Record<string, number>;
        avgSetupTime: number;
    };
    builtIn: {
        analytics: VLibrasPlugin;
        accessibility: VLibrasPlugin;
        performance: VLibrasPlugin;
    };
};
//# sourceMappingURL=VLibrasPlugins.d.ts.map