using Cleanuparr.Domain.Entities;
using Cleanuparr.Persistence.Models.Configuration.DownloadCleaner;
namespace Cleanuparr.Infrastructure.Features.DownloadClient;
///
/// Download clients whose downloads seed, and so can be evaluated against seeding rules and moved on dead-torrent detection.
/// Implemented by the torrent clients only; usenet downloads never seed.
///
public interface ISeedingCleanupCapable : IDownloadService
{
///
/// Fetches all seeding downloads.
///
/// A list of downloads that are seeding.
Task> GetSeedingDownloads();
///
/// Filters downloads that should be cleaned.
///
/// The downloads to filter.
/// The seeding rules by which to filter the downloads.
/// A list of downloads for the provided categories.
List? FilterDownloadsToBeCleanedAsync(List? downloads, List seedingRules);
///
/// Cleans the downloads.
///
/// The downloads to clean.
/// The seeding rules.
Task CleanDownloadsAsync(List? downloads, List seedingRules);
///
/// Stops a download, leaving it in the client.
///
/// The download item.
Task StopDownload(IDownloadItem item);
}