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

namespace EventsAppQuest.Application.Services
{
    /// <summary>
    /// Contrato para serviço de temas visuais / direção estética.
    /// </summary>
    public interface IVisualThemeService
    {
        /// <summary>Tema por id.</summary>
        EventVisualTheme GetById(string themeId);

        /// <summary>Temas que se aplicam ao template.</summary>
        IReadOnlyList<EventVisualTheme> GetByTemplateId(string templateId);

        /// <summary>Temas que se aplicam à categoria.</summary>
        IReadOnlyList<EventVisualTheme> GetByCategoryId(string categoryId);

        /// <summary>Temas disponíveis para o projeto atual (por categoria/template).</summary>
        IReadOnlyList<EventVisualTheme> GetAvailableForProject(EventProject project);
    }
}
