namespace NeonSprawl.Server.Game.Contracts; /// Immutable per-player contract instance snapshot (NEO-146). public sealed class ContractInstanceState( string contractInstanceId, string templateId, string playerId, ContractInstanceStatus status, string seedBucket, DateTimeOffset issuedAt, DateTimeOffset? completedAt) { public string ContractInstanceId { get; } = contractInstanceId; public string TemplateId { get; } = templateId; public string PlayerId { get; } = playerId; public ContractInstanceStatus Status { get; } = status; public string SeedBucket { get; } = seedBucket; public DateTimeOffset IssuedAt { get; } = issuedAt; public DateTimeOffset? CompletedAt { get; } = completedAt; }