using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Jellyfin.Plugin.SRFPlay.Api.Models;
namespace Jellyfin.Plugin.SRFPlay.Services.Interfaces;
///
/// Interface for managing topic/category data and filtering.
///
public interface ICategoryService
{
///
/// Gets all topics for a business unit.
///
/// The business unit.
/// The cancellation token.
/// List of topics.
Task> GetTopicsAsync(string businessUnit, CancellationToken cancellationToken = default);
///
/// Gets a topic by ID.
///
/// The topic ID.
/// The business unit.
/// The cancellation token.
/// The topic, or null if not found.
Task GetTopicByIdAsync(string topicId, string businessUnit, CancellationToken cancellationToken = default);
///
/// Gets shows for a specific topic, sorted by number of episodes.
///
/// The topic ID.
/// The business unit.
/// Maximum number of results to return.
/// The cancellation token.
/// List of shows for the topic.
Task> GetShowsByTopicAsync(
string topicId,
string businessUnit,
int maxResults = 50,
CancellationToken cancellationToken = default);
///
/// Clears the topics cache.
///
void ClearCache();
}