using System.Collections.Concurrent;
using System.Text.RegularExpressions;
using Cleanuparr.Domain.Enums;
using Cleanuparr.Persistence.Models.Configuration;
using Cleanuparr.Persistence.Models.Configuration.DownloadCleaner;
namespace Cleanuparr.Infrastructure.Features.DownloadClient;
public interface IDownloadService : IDisposable
{
DownloadClientConfig ClientConfig { get; }
public Task LoginAsync();
///
/// Performs a health check on the download client
///
/// The health check result
public Task HealthCheckAsync();
///
/// 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);
///
/// 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