using octo_fiesta.Models;
namespace octo_fiesta.Services;
///
/// Interface for the music download service (Deezspot or other)
///
public interface IDownloadService
{
///
/// Downloads a song from an external provider
///
/// The provider (deezer, spotify)
/// The ID on the external provider
/// Cancellation token
/// The path to the downloaded file
Task DownloadSongAsync(string externalProvider, string externalId, CancellationToken cancellationToken = default);
///
/// Downloads a song and streams the result progressively
///
/// The provider (deezer, spotify)
/// The ID on the external provider
/// Cancellation token
/// A stream of the audio file
Task DownloadAndStreamAsync(string externalProvider, string externalId, CancellationToken cancellationToken = default);
///
/// Checks if a song is currently being downloaded
///
DownloadInfo? GetDownloadStatus(string songId);
///
/// Checks if the service is properly configured and functional
///
Task IsAvailableAsync();
}