using Cleanuparr.Domain.Entities;
using Cleanuparr.Domain.Entities.HealthCheck;
using Cleanuparr.Persistence.Models.Configuration;
namespace Cleanuparr.Infrastructure.Features.DownloadClient;
///
/// Base contract every download client implements, regardless of protocol or capabilities.
/// Protocol-specific behaviour lives behind the I*Capable interfaces.
///
public interface IDownloadService : IDisposable
{
DownloadClientConfig ClientConfig { get; }
Task LoginAsync();
///
/// Performs a health check on the download client
///
/// The health check result
Task HealthCheckAsync();
///
/// Deletes a download item.
///
/// The download item.
/// Whether to delete the source files along with the download. Defaults to true.
Task DeleteDownload(IDownloadItem item, bool deleteSourceFiles);
}