using System; using System.Collections.Generic; using System.Threading.Tasks; using Wino.Core.Domain.Entities.Mail; using Wino.Core.Domain.Models.Accounts; namespace Wino.Core.Domain.Interfaces; public interface IMailCategoryService { Task> GetCategoriesAsync(Guid accountId); Task> GetFavoriteCategoriesAsync(Guid accountId); Task GetCategoryAsync(Guid categoryId); Task CategoryNameExistsAsync(Guid accountId, string name, Guid? excludedCategoryId = null); Task CreateCategoryAsync(MailCategory category); Task UpdateCategoryAsync(MailCategory category); Task DeleteCategoryAsync(Guid categoryId); Task DeleteCategoriesAsync(Guid accountId); Task ToggleFavoriteAsync(Guid categoryId, bool isFavorite); Task UpdateRemoteIdAsync(Guid categoryId, string remoteId); Task ReplaceCategoriesAsync(Guid accountId, IEnumerable categories); Task ReplaceMailAssignmentsAsync(Guid accountId, Guid mailCopyUniqueId, IEnumerable categoryNames); Task AssignCategoryAsync(Guid categoryId, IEnumerable mailCopyUniqueIds); Task UnassignCategoryAsync(Guid categoryId, IEnumerable mailCopyUniqueIds); Task> GetCategoriesForMailAsync(Guid accountId, IEnumerable mailCopyUniqueIds); Task> GetAssignedCategoryIdsForAllAsync(IEnumerable mailCopyUniqueIds); Task> GetCategoryNamesForMailAsync(Guid mailCopyUniqueId); Task> GetMailCopiesForCategoryAsync(Guid categoryId); Task> GetUnreadCategoryCountResultsAsync(IEnumerable accountIds); }