using System;
using System.Collections.Generic;

namespace EventsAppQuest.Core
{
    /// <summary>
    /// Estado do onboarding da sessão Quest: entrada guiada com contexto da proposta,
    /// preset, modo e dicas de interação. Preenchido pelo QuestPresentationOnboardingController.
    /// </summary>
    [Serializable]
    public class QuestPresentationOnboardingState
    {
        /// <summary>Se true, o painel de onboarding está visível.</summary>
        public bool IsOnboardingOpen { get; set; }

        /// <summary>Título da sessão (ex.: do MR plan).</summary>
        public string SessionTitle { get; set; }

        /// <summary>Rótulo da proposta actual (nome ou id).</summary>
        public string ProposalLabel { get; set; }

        /// <summary>Rótulo do preset actual (nome ou "Nenhum").</summary>
        public string PresetLabel { get; set; }

        /// <summary>Rótulo do modo de runtime (EditorFallback, SimulatedXR, RealXR).</summary>
        public string RuntimeModeLabel { get; set; }

        /// <summary>Objetivo principal da apresentação (1 frase).</summary>
        public string PrimaryGoal { get; set; }

        /// <summary>Dicas de interação (navegação, foco, CTA).</summary>
        public List<string> InteractionHints { get; set; } = new List<string>();

        /// <summary>Duração estimada em minutos (0 = não definida).</summary>
        public int EstimatedDurationMinutes { get; set; }

        /// <summary>Se true, a sessão tem dados suficientes para iniciar a apresentação.</summary>
        public bool IsReadyToStart { get; set; }

        /// <summary>Data/hora da última abertura do onboarding (UTC).</summary>
        public DateTime? LastOpenedAt { get; set; }
    }
}
