/**
 * Sistema de eventos padronizado e type-safe para VLibras Player
 * Fornece eventos detalhados sobre o ciclo de vida do player
 */
export interface PlayerEvents {
    'player:ready': {
        player: any;
        timestamp: number;
    };
    'player:error': {
        error: Error;
        player: any;
        timestamp: number;
    };
    'player:destroy': {
        player: any;
        timestamp: number;
    };
    'translation:start': {
        text: string;
        timestamp: number;
    };
    'translation:progress': {
        progress: number;
        stage: string;
        timestamp: number;
    };
    'translation:complete': {
        gloss: string;
        duration: number;
        timestamp: number;
    };
    'translation:error': {
        error: string;
        text: string;
        timestamp: number;
    };
    'animation:start': {
        gloss: string;
        timestamp: number;
    };
    'animation:progress': {
        progress: number;
        currentFrame: number;
        timestamp: number;
    };
    'animation:pause': {
        timestamp: number;
    };
    'animation:resume': {
        timestamp: number;
    };
    'animation:complete': {
        duration: number;
        totalFrames: number;
        timestamp: number;
    };
    'animation:error': {
        error: string;
        timestamp: number;
    };
    'cache:hit': {
        key: string;
        size: number;
        timestamp: number;
    };
    'cache:miss': {
        key: string;
        timestamp: number;
    };
    'cache:clear': {
        timestamp: number;
    };
    'performance:slow': {
        operation: string;
        duration: number;
        threshold: number;
        timestamp: number;
    };
    'performance:memory': {
        usage: number;
        limit: number;
        timestamp: number;
    };
    'performance:fps': {
        fps: number;
        timestamp: number;
    };
    'diagnostic:webgl': {
        supported: boolean;
        version: string;
        timestamp: number;
    };
    'diagnostic:assets': {
        loaded: boolean;
        size: number;
        version: string;
        timestamp: number;
    };
    'diagnostic:compatibility': {
        browser: string;
        version: string;
        supported: boolean;
        timestamp: number;
    };
}
/**
 * Event Emitter type-safe para VLibras
 */
export declare class VLibrasEventEmitter {
    private listeners;
    private onceListeners;
    /**
     * Adiciona um listener para um evento específico
     */
    on<K extends keyof PlayerEvents>(event: K, listener: (data: PlayerEvents[K]) => void): () => void;
    /**
     * Adiciona um listener que será executado apenas uma vez
     */
    once<K extends keyof PlayerEvents>(event: K, listener: (data: PlayerEvents[K]) => void): () => void;
    /**
     * Remove um listener específico
     */
    off<K extends keyof PlayerEvents>(event: K, listener: (data: PlayerEvents[K]) => void): void;
    /**
     * Emite um evento para todos os listeners
     */
    emit<K extends keyof PlayerEvents>(event: K, data: PlayerEvents[K]): void;
    /**
     * Remove todos os listeners de um evento ou de todos os eventos
     */
    removeAllListeners(event?: keyof PlayerEvents): void;
    /**
     * Retorna o número de listeners para um evento
     */
    listenerCount(event: keyof PlayerEvents): number;
    /**
     * Retorna todos os eventos que têm listeners
     */
    eventNames(): Array<keyof PlayerEvents>;
}
/**
 * Utilitários para eventos
 */
export declare class VLibrasEventUtils {
    /**
     * Cria um timestamp padronizado
     */
    static createTimestamp(): number;
    /**
     * Aguarda por um evento específico
     */
    static waitForEvent<K extends keyof PlayerEvents>(emitter: VLibrasEventEmitter, event: K, timeout?: number): Promise<PlayerEvents[K]>;
    /**
     * Debounce para eventos frequentes
     */
    static debounceEvent<K extends keyof PlayerEvents>(emitter: VLibrasEventEmitter, event: K, callback: (data: PlayerEvents[K]) => void, delay?: number): () => void;
}
export declare const globalEventEmitter: VLibrasEventEmitter;
//# sourceMappingURL=VLibrasEvents.d.ts.map