using System.Security.Cryptography;

namespace Kbx.Tests.Scenarios;

public sealed record KbxScenarioArtifact(string Type, string Path, string? Sha256 = null);

public sealed record KbxScenarioEvidence(
    string ScenarioId,
    string RunId,
    DateTimeOffset StartedAt,
    DateTimeOffset? FinishedAt,
    string Result,
    IReadOnlyDictionary<string,string> ContractVersions,
    IReadOnlyList<string> CorrelationIds,
    IReadOnlyList<KbxScenarioArtifact> Artifacts);

public static class KbxScenarioHash
{
    public static string Sha256File(string path)
    {
        using var stream = File.OpenRead(path);
        return Convert.ToHexString(SHA256.HashData(stream)).ToLowerInvariant();
    }
}
