import type { UnityDebugInfo } from '../types';
/**
 * Utilitário para gerenciamento de estado do Unity WebGL
 * Resolve problemas de detecção de carregamento e estado de animação
 */
export interface UnityInstance {
    Module?: {
        ready?: boolean;
        canvas?: HTMLCanvasElement;
        isAnimationPlaying?: () => boolean;
        isAnimationComplete?: () => boolean;
    };
    SendMessage?: (gameObject: string, methodName: string, value?: any) => void;
}
declare global {
    interface Window {
        unityInstance?: UnityInstance;
        unityInstances?: Map<string, UnityInstance>;
    }
}
export declare class UnityStateManager {
    /**
     * Verifica se o Unity WebGL carregou completamente
     */
    static isUnityReady(container: HTMLElement): boolean;
    /**
     * Verifica se uma animação está sendo reproduzida
     */
    static isAnimationPlaying(container?: HTMLElement): boolean;
    /**
     * Verifica se uma animação foi completada
     */
    static isAnimationComplete(container?: HTMLElement): boolean;
    /**
     * Aguarda o Unity estar completamente carregado
     */
    static waitForUnity(container: HTMLElement, timeout?: number): Promise<void>;
    /**
     * Aguarda uma animação terminar completamente
     */
    static waitForAnimationEnd(container?: HTMLElement, timeout?: number): Promise<void>;
    /**
     * Obtém a instância do Unity para um container específico
     */
    private static getUnityInstance;
    /**
     * Registra uma instância do Unity para um container específico
     */
    static registerUnityInstance(containerId: string, instance: UnityInstance): void;
    /**
     * Remove registro de uma instância do Unity
     */
    static unregisterUnityInstance(containerId: string): void;
    /**
     * Limpa todas as instâncias registradas
     */
    static clearAllInstances(): void;
    /**
     * Obtém informações de debug do estado atual
     */
    static getDebugInfo(container?: HTMLElement): UnityDebugInfo;
}
