// -----------------------------------------------------------------------------
// BatchSnapshotResult.cs
// Sprint: SPRINT_20260105_002_002_SCHEDULER_hlc_queue_chain
// Task: SQC-013 - Implement BatchSnapshotService
// -----------------------------------------------------------------------------
using StellaOps.HybridLogicalClock;
namespace StellaOps.Scheduler.Queue.Models;
///
/// Result of creating a batch snapshot.
///
public sealed record BatchSnapshotResult
{
///
/// Unique batch snapshot identifier.
///
public required Guid BatchId { get; init; }
///
/// Tenant this snapshot belongs to.
///
public required string TenantId { get; init; }
///
/// Start of the HLC range (inclusive).
///
public required HlcTimestamp RangeStart { get; init; }
///
/// End of the HLC range (inclusive).
///
public required HlcTimestamp RangeEnd { get; init; }
///
/// Chain head link at the end of this range.
///
public required byte[] HeadLink { get; init; }
///
/// Number of jobs included in this snapshot.
///
public required int JobCount { get; init; }
///
/// When the snapshot was created.
///
public required DateTimeOffset CreatedAt { get; init; }
///
/// Key ID of the signer (if signed).
///
public string? SignedBy { get; init; }
///
/// DSSE signature (if signed).
///
public byte[]? Signature { get; init; }
///
/// Whether this snapshot is signed.
///
public bool IsSigned => SignedBy is not null && Signature is not null;
}