using System.Collections.Generic;
using EventsAppQuest.Domain.Models;

namespace EventsAppQuest.Application.Services
{
    /// <summary>
    /// Serviço de planejamento por momentos/fases do evento (jornada da experiência).
    /// Gera e atualiza o plano de momentos da proposta com base em categoria, showroom, zonas, narrativa e fornecedores.
    /// </summary>
    public interface IEventMomentPlanningService
    {
        /// <summary>Retorna as fases de momento disponíveis (template/catálogo), ordenadas por DisplayOrder.</summary>
        IReadOnlyList<EventMomentPhase> GetAvailablePhases(string eventTemplateId = null);

        /// <summary>Gera o plano de momentos para a proposta com base no projeto (itens, zonas, narrativa, fornecedores).</summary>
        IReadOnlyList<ProposalMomentPlan> GenerateMomentPlan(EventProject project, EventProjectProposal proposal);
    }
}
