namespace PSLauncher.Core.Lan;

/// <summary>
/// Récupère le manifest depuis un peer LAN. Sert quand le client n'a pas
/// d'accès Internet : il interroge les peers découverts via UDP discovery
/// (et les peers manuels en config) pour trouver un PC ayant déjà fetché le
/// manifest depuis OVH récemment.
///
/// La sécurité reste celle du manifest signé Ed25519 — le peer pourrait
/// servir n'importe quel JSON, mais le launcher rejettera tout manifest non
/// signé correctement (ou tout ZIP dont le SHA-256 ne match pas).
/// </summary>
public interface IPeerManifestFetcher
{
    /// <summary>
    /// Tente de récupérer le manifest brut (JSON, byte-for-byte) depuis le
    /// premier peer qui répond. Null si aucun peer atteignable, no-op si
    /// ClientEnabled=false.
    /// </summary>
    Task<string?> TryFetchRawAsync(CancellationToken ct);
}
