using System.Collections.Concurrent;
using System.Text.RegularExpressions;
using Common.Configuration.ContentBlocker;
using Common.Configuration.DownloadCleaner;
using Infrastructure.Interceptors;
namespace Infrastructure.Verticals.DownloadClient;
public interface IDownloadService : IDisposable
{
public Task LoginAsync();
///
/// Checks whether the download should be removed from the *arr queue.
///
/// The download hash.
/// Downloads to ignore from processing.
public Task ShouldRemoveFromArrQueueAsync(string hash, IReadOnlyList ignoredDownloads);
///
/// Blocks unwanted files from being fully downloaded.
///
/// The torrent hash.
/// The .
/// The patterns to test the files against.
/// The regexes to test the files against.
/// Downloads to ignore from processing.
/// True if all files have been blocked; otherwise false.
public Task BlockUnwantedFilesAsync(string hash,
BlocklistType blocklistType,
ConcurrentBag patterns,
ConcurrentBag regexes,
IReadOnlyList ignoredDownloads
);
///
/// Fetches all seeding downloads.
///
/// A list of downloads that are seeding.
Task?> GetSeedingDownloads();
///
/// Filters downloads that should be cleaned.
///
/// The downloads to filter.
/// The categories by which to filter the downloads.
/// A list of downloads for the provided categories.
List