namespace SpaceGame.Api.Geopolitics.Contracts; public sealed record SystemRouteLinkSnapshot( string Id, string SourceSystemId, string DestinationSystemId, float Distance, bool IsPrimaryLane); public sealed record DiplomaticRelationSnapshot( string Id, string FactionAId, string FactionBId, string Status, string Posture, float TrustScore, float TensionScore, float GrievanceScore, string TradeAccessPolicy, string MilitaryAccessPolicy, string? WarStateId, DateTimeOffset? CeasefireUntilUtc, DateTimeOffset UpdatedAtUtc, IReadOnlyList ActiveTreatyIds, IReadOnlyList ActiveIncidentIds); public sealed record TreatySnapshot( string Id, string Kind, string Status, string TradeAccessPolicy, string MilitaryAccessPolicy, string? Summary, DateTimeOffset CreatedAtUtc, DateTimeOffset UpdatedAtUtc, IReadOnlyList FactionIds); public sealed record DiplomaticIncidentSnapshot( string Id, string Kind, string Status, string SourceFactionId, string TargetFactionId, string? SystemId, string? BorderEdgeId, string Summary, float Severity, float EscalationScore, DateTimeOffset CreatedAtUtc, DateTimeOffset LastObservedAtUtc); public sealed record BorderTensionSnapshot( string Id, string RelationId, string BorderEdgeId, string FactionAId, string FactionBId, string Status, float TensionScore, float IncidentScore, float MilitaryPressure, float AccessFriction, DateTimeOffset UpdatedAtUtc, IReadOnlyList SystemIds); public sealed record WarStateSnapshot( string Id, string RelationId, string FactionAId, string FactionBId, string Status, string WarGoal, float EscalationScore, DateTimeOffset StartedAtUtc, DateTimeOffset? CeasefireUntilUtc, DateTimeOffset UpdatedAtUtc, IReadOnlyList ActiveFrontLineIds); public sealed record DiplomaticStateSnapshot( IReadOnlyList Relations, IReadOnlyList Treaties, IReadOnlyList Incidents, IReadOnlyList BorderTensions, IReadOnlyList Wars); public sealed record TerritoryClaimSnapshot( string Id, string? SourceClaimId, string FactionId, string SystemId, string AnchorId, string Status, string ClaimKind, float ClaimStrength, DateTimeOffset UpdatedAtUtc); public sealed record TerritoryInfluenceSnapshot( string Id, string SystemId, string FactionId, float ClaimStrength, float AssetStrength, float LogisticsStrength, float TotalInfluence, bool IsContesting, DateTimeOffset UpdatedAtUtc); public sealed record TerritoryControlStateSnapshot( string SystemId, string? ControllerFactionId, string? PrimaryClaimantFactionId, string ControlKind, bool IsContested, float ControlScore, float StrategicValue, IReadOnlyList ClaimantFactionIds, IReadOnlyList InfluencingFactionIds, DateTimeOffset UpdatedAtUtc); public sealed record SectorStrategicProfileSnapshot( string SystemId, string? ControllerFactionId, string ZoneKind, bool IsContested, float StrategicValue, float SecurityRating, float TerritorialPressure, float LogisticsValue, string? EconomicRegionId, string? FrontLineId, DateTimeOffset UpdatedAtUtc); public sealed record BorderEdgeSnapshot( string Id, string SourceSystemId, string DestinationSystemId, string? SourceFactionId, string? DestinationFactionId, bool IsContested, string? RelationId, float TensionScore, float CorridorImportance, DateTimeOffset UpdatedAtUtc); public sealed record FrontLineSnapshot( string Id, string Kind, string Status, string? AnchorSystemId, float PressureScore, float SupplyRisk, DateTimeOffset UpdatedAtUtc, IReadOnlyList FactionIds, IReadOnlyList SystemIds, IReadOnlyList BorderEdgeIds); public sealed record TerritoryZoneSnapshot( string Id, string SystemId, string? FactionId, string Kind, string Status, string? Reason, DateTimeOffset UpdatedAtUtc); public sealed record TerritoryPressureSnapshot( string Id, string SystemId, string? FactionId, string Kind, float PressureScore, float SecurityScore, float HostileInfluence, float CorridorRisk, DateTimeOffset UpdatedAtUtc); public sealed record TerritoryStateSnapshot( IReadOnlyList Claims, IReadOnlyList Influences, IReadOnlyList ControlStates, IReadOnlyList StrategicProfiles, IReadOnlyList BorderEdges, IReadOnlyList FrontLines, IReadOnlyList Zones, IReadOnlyList Pressures); public sealed record EconomicRegionSnapshot( string Id, string? FactionId, string Label, string Kind, string Status, string CoreSystemId, DateTimeOffset UpdatedAtUtc, IReadOnlyList SystemIds, IReadOnlyList StationIds, IReadOnlyList FrontLineIds, IReadOnlyList CorridorIds); public sealed record SupplyNetworkSnapshot( string Id, string RegionId, float ThroughputScore, float RiskScore, DateTimeOffset UpdatedAtUtc, IReadOnlyList StationIds, IReadOnlyList ProducerItemIds, IReadOnlyList ConsumerItemIds, IReadOnlyList ConstructionItemIds); public sealed record LogisticsCorridorSnapshot( string Id, string? FactionId, string Kind, string Status, float RiskScore, float ThroughputScore, string AccessState, DateTimeOffset UpdatedAtUtc, IReadOnlyList SystemPathIds, IReadOnlyList RegionIds, IReadOnlyList BorderEdgeIds); public sealed record RegionalProductionProfileSnapshot( string RegionId, string PrimaryIndustry, int ShipyardCount, int StationCount, DateTimeOffset UpdatedAtUtc, IReadOnlyList ProducedItemIds, IReadOnlyList ScarceItemIds); public sealed record RegionalTradeBalanceSnapshot( string RegionId, int ImportsRequiredCount, int ExportsSurplusCount, int CriticalShortageCount, float NetTradeScore, DateTimeOffset UpdatedAtUtc); public sealed record RegionalBottleneckSnapshot( string Id, string RegionId, string ItemId, string Cause, string Status, float Severity, DateTimeOffset UpdatedAtUtc); public sealed record RegionalSecurityAssessmentSnapshot( string RegionId, float SupplyRisk, float BorderPressure, int ActiveWarCount, int HostileRelationCount, float AccessFriction, DateTimeOffset UpdatedAtUtc); public sealed record RegionalEconomicAssessmentSnapshot( string RegionId, float SustainmentScore, float ProductionDepth, float ConstructionPressure, float CorridorDependency, DateTimeOffset UpdatedAtUtc); public sealed record EconomyRegionStateSnapshot( IReadOnlyList Regions, IReadOnlyList SupplyNetworks, IReadOnlyList Corridors, IReadOnlyList ProductionProfiles, IReadOnlyList TradeBalances, IReadOnlyList Bottlenecks, IReadOnlyList SecurityAssessments, IReadOnlyList EconomicAssessments); public sealed record GeopoliticalStateSnapshot( int Cycle, DateTimeOffset UpdatedAtUtc, IReadOnlyList Routes, DiplomaticStateSnapshot Diplomacy, TerritoryStateSnapshot Territory, EconomyRegionStateSnapshot EconomyRegions);