using octo_fiesta.Models;
namespace octo_fiesta.Services;
///
/// Interface pour le service de téléchargement de musique (Deezspot ou autre)
///
public interface IDownloadService
{
///
/// Télécharge une chanson depuis un provider externe
///
/// Le provider (deezer, spotify)
/// L'ID sur le provider externe
/// Token d'annulation
/// Le chemin du fichier téléchargé
Task DownloadSongAsync(string externalProvider, string externalId, CancellationToken cancellationToken = default);
///
/// Télécharge une chanson et stream le résultat au fur et à mesure
///
/// Le provider (deezer, spotify)
/// L'ID sur le provider externe
/// Token d'annulation
/// Un stream du fichier audio
Task DownloadAndStreamAsync(string externalProvider, string externalId, CancellationToken cancellationToken = default);
///
/// Vérifie si une chanson est en cours de téléchargement
///
DownloadInfo? GetDownloadStatus(string songId);
///
/// Vérifie si le service est correctement configuré et fonctionnel
///
Task IsAvailableAsync();
}