namespace EventsAppQuest.Core
{
    /// <summary>
    /// Ponte opcional para input XR real: converte acções XR em comandos e envia ao dispatcher existente.
    /// Permite convivência com fallback (teclado/UI) sem substituir a arquitetura actual.
    /// </summary>
    public interface IQuestXRInputBridge
    {
        /// <summary>Estado actual do input XR (disponível, activo, modo, última acção).</summary>
        QuestXRInputStatus GetStatus();

        /// <summary>Liga ao dispatcher central; comandos enviados pela bridge são despachados aqui.</summary>
        void SetDispatcher(IQuestPresentationInputDispatcher dispatcher);

        /// <summary>Envia um comando proveniente de input XR para o dispatcher e actualiza LastXRAction.</summary>
        /// <returns>True se o dispatcher estiver ligado e o comando tiver sido despachado.</returns>
        bool SubmitXRCommand(QuestPresentationInputCommand command);

        /// <summary>Processa um frame: tenta ler input XR real (se disponível) e despacha comandos. Chamado pelo controlador em Update.</summary>
        void ProcessFrame();
    }
}
