namespace SpaceGame.Api.Stations.Runtime; public sealed class ClaimRuntime { public required string Id { get; init; } public required string FactionId { get; init; } public required string SystemId { get; init; } public required string CelestialId { get; init; } public string? CommanderId { get; set; } public DateTimeOffset PlacedAtUtc { get; init; } public DateTimeOffset ActivatesAtUtc { get; set; } public string State { get; set; } = ClaimStateKinds.Placed; public float Health { get; set; } public string LastDeltaSignature { get; set; } = string.Empty; } public sealed class ConstructionSiteRuntime { public required string Id { get; init; } public required string FactionId { get; init; } public required string SystemId { get; init; } public required string CelestialId { get; init; } public required string TargetKind { get; init; } public required string TargetDefinitionId { get; init; } public string? BlueprintId { get; set; } public string? ClaimId { get; set; } public string? StationId { get; set; } public Dictionary Inventory { get; } = new(StringComparer.Ordinal); public Dictionary RequiredItems { get; } = new(StringComparer.Ordinal); public Dictionary DeliveredItems { get; } = new(StringComparer.Ordinal); public HashSet AssignedConstructorShipIds { get; } = new(StringComparer.Ordinal); public HashSet MarketOrderIds { get; } = new(StringComparer.Ordinal); public float Progress { get; set; } public string State { get; set; } = ConstructionSiteStateKinds.Planned; public string LastDeltaSignature { get; set; } = string.Empty; }