using Cleanuparr.Domain.Entities; using Cleanuparr.Persistence.Models.Configuration.DownloadCleaner; namespace Cleanuparr.Infrastructure.Features.DownloadClient; /// /// Download clients whose files can be checked for hardlinks, so unlinked downloads can be moved to a target category. /// Implemented by the torrent clients only; the *arrs move (never hardlink) usenet downloads on import. /// public interface IUnlinkedCapable : IDownloadService { /// /// Filters downloads that should have their category changed. /// /// The downloads to filter. /// The unlinked config for this download client. /// A list of downloads for the provided categories. List? FilterDownloadsToChangeCategoryAsync(List? downloads, UnlinkedConfig unlinkedConfig); /// /// Changes the category for downloads that have no hardlinks. /// /// The downloads to change. /// The unlinked config for this download client. Task ChangeCategoryForNoHardLinksAsync(List? downloads, UnlinkedConfig unlinkedConfig); /// /// Moves a single torrent to the target category, or adds it as a tag/label when is set. /// /// The torrent to move. /// The target category/tag. /// When true, add a tag/label instead of changing the category (qBittorrent and Transmission). Task ChangeTorrentCategoryAsync(ITorrentItemWrapper torrent, string targetCategory, bool useTag); /// /// Creates a category. /// /// The category name. Task CreateCategoryAsync(string name); }