//
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
//
using System.Collections.Immutable;
namespace StellaOps.Facet;
///
/// A sealed facet entry within a .
///
public sealed record FacetEntry
{
///
/// Gets the facet identifier (e.g., "os-packages-dpkg", "lang-deps-npm").
///
public required string FacetId { get; init; }
///
/// Gets the human-readable name.
///
public required string Name { get; init; }
///
/// Gets the category for grouping.
///
public required FacetCategory Category { get; init; }
///
/// Gets the selectors used to identify files in this facet.
///
public required ImmutableArray Selectors { get; init; }
///
/// Gets the Merkle root of all files in this facet.
///
///
/// Format: "sha256:{hex}" computed from sorted file entries.
///
public required string MerkleRoot { get; init; }
///
/// Gets the number of files in this facet.
///
public required int FileCount { get; init; }
///
/// Gets the total bytes across all files.
///
public required long TotalBytes { get; init; }
///
/// Gets the optional individual file entries (for detailed audit).
///
///
/// May be null for compact seals that only store Merkle roots.
///
public ImmutableArray? Files { get; init; }
}