using PSLauncher.Models;

namespace PSLauncher.Core.Updates;

public interface ILauncherSelfUpdater
{
    /// <summary>Compare la version courante avec celle annoncée dans le manifest.</summary>
    bool IsNewerThanCurrent(LauncherInfo launcher);

    string GetCurrentVersion();

    /// <summary>
    /// Télécharge le nouveau binaire dans un dossier de staging et déclenche l'updater.
    /// L'application courante doit s'arrêter rapidement après le retour de cette méthode.
    /// </summary>
    Task<bool> DownloadAndApplyAsync(
        LauncherInfo launcher,
        IProgress<DownloadProgress>? progress,
        CancellationToken ct);
}
