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

namespace EventsAppQuest.Web.Application
{
    /// <summary>
    /// Serviço mock de dados da camada Web (sem backend real).
    /// </summary>
    public interface IMockWebDataService
    {
        IReadOnlyList<WebLead> GetLeads();
        IReadOnlyList<SalesOpportunity> GetOpportunities();
        IReadOnlyList<ProposalRecord> GetProposals();
        IReadOnlyList<SessionRecord> GetSessions();
        IReadOnlyList<FollowUpTask> GetFollowUpTasks();

        /// <summary>Aplica o resultado de uma sessão Quest à oportunidade (mock: atualiza SessionRecord e SalesOpportunity em memória).</summary>
        /// <returns>Id do SessionRecord criado/atualizado e indicadores gerados.</returns>
        (string sessionRecordId, IReadOnlyList<string> indicators) ApplyQuestSessionToOpportunity(QuestSessionSnapshot snapshot, string opportunityId);

        /// <summary>Marca a oportunidade como encerrada no pipeline (ex.: ciclo do pedido concluído). Mock: define Stage = Won.</summary>
        void MarkOpportunityOrderCycleClosed(string opportunityId);
    }
}
