using PSLauncher.Models;

namespace PSLauncher.Core.Health;

/// <summary>
/// Effectue les vérifications de santé système configurées dans
/// <see cref="HealthChecksConfig"/> : ping IP, processus tournant, etc.
/// </summary>
public interface ISystemHealthService
{
    /// <summary>
    /// Exécute un check unique en async (ping ou check de process). Le résultat
    /// porte la sévérité + un détail textuel destiné au tooltip de la UI.
    /// </summary>
    Task<HealthResult> RunCheckAsync(HealthCheckEntry entry, CancellationToken ct);
}

public sealed record HealthResult(
    HealthSeverity Severity,
    string Detail);

/// <summary>
/// Sévérité d'un check. <see cref="Unknown"/> = check pas configuré
/// (Target vide), affiché en gris.
/// </summary>
public enum HealthSeverity
{
    Unknown,
    Ok,
    Warning,
    Error,
}
