using PSLauncher.Models; namespace PSLauncher.Core.Licensing; public interface ILicenseService { Task ValidateAsync(string licenseKey, CancellationToken ct); LicenseValidationResponse? GetCached(); void SaveCached(string licenseKey, LicenseValidationResponse response); void Clear(); bool HasLicense(); string GetMachineId(); bool CanDownloadVersion(LicenseValidationResponse? license, VersionManifest version); /// /// Demande au serveur une URL HMAC-signée valide 1 h pour le ZIP de cette version. /// Retourne null si l'endpoint n'est pas dispo / pas configuré (ancien serveur), /// auquel cas l'appelant retombe sur l'URL publique du manifest. /// Task GetSignedDownloadUrlAsync(string version, CancellationToken ct); /// /// Décrypte la clé de license stockée en cache (DPAPI CurrentUser). Retourne null /// si pas de clé stockée ou si le déchiffrement échoue (cache déplacé vers une /// autre machine ou autre user Windows). /// string? GetDecryptedKey(); }