namespace EventsAppQuest.Core
{
    /// <summary>
    /// Estado temporal de hover/dwell num alvo: tempo decorrido, tempo requerido, se está estável e pronto para confirmar.
    /// Usado pelo QuestHoverDwellController e pela sessão para feedback visual e lógica de confirmação.
    /// </summary>
    public class QuestTargetHoverState
    {
        /// <summary>Identificador do alvo em hover (ex.: "guided_step", "hotspot").</summary>
        public string TargetId { get; set; }

        /// <summary>Tempo em segundos que o alvo permanece apontado.</summary>
        public float HoverElapsedSeconds { get; set; }

        /// <summary>Tempo em segundos necessário para dwell completo (configurável).</summary>
        public float RequiredDwellSeconds { get; set; }

        /// <summary>Se true, o tempo de dwell foi atingido e o alvo está pronto para confirmação por dwell.</summary>
        public bool IsDwellReady { get; set; }

        /// <summary>Se true, o hover é considerado estável (ex.: mesmo alvo por um mínimo de frames).</summary>
        public bool IsHoverStable { get; set; }

        /// <summary>Origem do apontamento (simulado, XR raycast, futuro gaze).</summary>
        public QuestHoverSourceMode HoverSourceMode { get; set; }

        /// <summary>Notas breves (ex.: para debug).</summary>
        public string Notes { get; set; }
    }
}
