namespace SpaceGame.Api.PlayerFaction.Contracts; public sealed record PlayerAssetRegistrySnapshot( IReadOnlyList ShipIds, IReadOnlyList StationIds, IReadOnlyList CommanderIds, IReadOnlyList ClaimIds, IReadOnlyList ConstructionSiteIds, IReadOnlyList PolicySetIds, IReadOnlyList MarketOrderIds, IReadOnlyList FleetIds, IReadOnlyList TaskForceIds, IReadOnlyList StationGroupIds, IReadOnlyList EconomicRegionIds, IReadOnlyList FrontIds, IReadOnlyList ReserveIds); public sealed record PlayerStrategicIntentSnapshot( string StrategicPosture, string EconomicPosture, string MilitaryPosture, string LogisticsPosture, float DesiredReserveRatio, bool AllowDelegatedCombatAutomation, bool AllowDelegatedEconomicAutomation, string? Notes); public sealed record PlayerFleetSnapshot( string Id, string Label, string Status, string Role, string? CommanderId, string? FrontId, string? HomeSystemId, string? HomeStationId, string? PolicyId, string? AutomationPolicyId, string? ReinforcementPolicyId, IReadOnlyList AssetIds, IReadOnlyList TaskForceIds, IReadOnlyList DirectiveIds, DateTimeOffset UpdatedAtUtc); public sealed record PlayerTaskForceSnapshot( string Id, string Label, string Status, string Role, string? FleetId, string? CommanderId, string? FrontId, string? PolicyId, string? AutomationPolicyId, IReadOnlyList AssetIds, IReadOnlyList DirectiveIds, DateTimeOffset UpdatedAtUtc); public sealed record PlayerStationGroupSnapshot( string Id, string Label, string Status, string Role, string? EconomicRegionId, string? PolicyId, string? AutomationPolicyId, IReadOnlyList StationIds, IReadOnlyList DirectiveIds, IReadOnlyList FocusItemIds, DateTimeOffset UpdatedAtUtc); public sealed record PlayerEconomicRegionSnapshot( string Id, string Label, string Status, string Role, string? SharedEconomicRegionId, string? PolicyId, string? AutomationPolicyId, IReadOnlyList SystemIds, IReadOnlyList StationGroupIds, IReadOnlyList DirectiveIds, DateTimeOffset UpdatedAtUtc); public sealed record PlayerFrontSnapshot( string Id, string Label, string Status, float Priority, string Posture, string? SharedFrontLineId, string? TargetFactionId, IReadOnlyList SystemIds, IReadOnlyList FleetIds, IReadOnlyList ReserveIds, IReadOnlyList DirectiveIds, DateTimeOffset UpdatedAtUtc); public sealed record PlayerReserveGroupSnapshot( string Id, string Label, string Status, string ReserveKind, string? HomeSystemId, string? PolicyId, IReadOnlyList AssetIds, IReadOnlyList FrontIds, DateTimeOffset UpdatedAtUtc); public sealed record PlayerFactionPolicySnapshot( string Id, string Label, string ScopeKind, string? ScopeId, string? PolicySetId, bool AllowDelegatedCombat, bool AllowDelegatedTrade, float ReserveCreditsRatio, float ReserveMilitaryRatio, string TradeAccessPolicy, string DockingAccessPolicy, string ConstructionAccessPolicy, string OperationalRangePolicy, string CombatEngagementPolicy, bool AvoidHostileSystems, float FleeHullRatio, IReadOnlyList BlacklistedSystemIds, string? Notes, DateTimeOffset UpdatedAtUtc); public sealed record PlayerAutomationPolicySnapshot( string Id, string Label, string ScopeKind, string? ScopeId, bool Enabled, string BehaviorKind, bool UseOrders, string? StagingOrderKind, int MaxSystemRange, bool KnownStationsOnly, float Radius, float WaitSeconds, string? PreferredItemId, string? Notes, IReadOnlyList RepeatOrders, DateTimeOffset UpdatedAtUtc); public sealed record PlayerReinforcementPolicySnapshot( string Id, string Label, string ScopeKind, string? ScopeId, string ShipKind, int DesiredAssetCount, int MinimumReserveCount, bool AutoTransferReserves, bool AutoQueueProduction, string? SourceReserveId, string? TargetFrontId, string? Notes, DateTimeOffset UpdatedAtUtc); public sealed record PlayerProductionProgramSnapshot( string Id, string Label, string Status, string Kind, string? TargetShipKind, string? TargetModuleId, string? TargetItemId, int TargetCount, int CurrentCount, string? StationGroupId, string? ReinforcementPolicyId, string? Notes, DateTimeOffset UpdatedAtUtc); public sealed record PlayerDirectiveSnapshot( string Id, string Label, string Status, string Kind, string ScopeKind, string ScopeId, string? TargetEntityId, string? TargetSystemId, Vector3Dto? TargetPosition, string? HomeSystemId, string? HomeStationId, string? SourceStationId, string? DestinationStationId, string BehaviorKind, bool UseOrders, string? StagingOrderKind, string? ItemId, string? PreferredNodeId, string? PreferredConstructionSiteId, string? PreferredModuleId, int Priority, float Radius, float WaitSeconds, int MaxSystemRange, bool KnownStationsOnly, IReadOnlyList PatrolPoints, IReadOnlyList RepeatOrders, string? PolicyId, string? AutomationPolicyId, string? Notes, DateTimeOffset CreatedAtUtc, DateTimeOffset UpdatedAtUtc); public sealed record PlayerAssignmentSnapshot( string Id, string AssetKind, string AssetId, string? FleetId, string? TaskForceId, string? StationGroupId, string? EconomicRegionId, string? FrontId, string? ReserveId, string? DirectiveId, string? PolicyId, string? AutomationPolicyId, string Role, string Status, DateTimeOffset UpdatedAtUtc); public sealed record PlayerDecisionLogEntrySnapshot( string Id, string Kind, string Summary, string? RelatedEntityKind, string? RelatedEntityId, DateTimeOffset OccurredAtUtc); public sealed record PlayerAlertSnapshot( string Id, string Kind, string Severity, string Summary, string? AssetKind, string? AssetId, string? RelatedDirectiveId, string Status, DateTimeOffset CreatedAtUtc); public sealed record PlayerFactionSnapshot( string Id, string Label, string? PersonaName, string? RaceId, string SovereignFactionId, bool RequiresOnboarding, string Status, DateTimeOffset CreatedAtUtc, DateTimeOffset UpdatedAtUtc, PlayerAssetRegistrySnapshot AssetRegistry, PlayerStrategicIntentSnapshot StrategicIntent, IReadOnlyList Fleets, IReadOnlyList TaskForces, IReadOnlyList StationGroups, IReadOnlyList EconomicRegions, IReadOnlyList Fronts, IReadOnlyList Reserves, IReadOnlyList Policies, IReadOnlyList AutomationPolicies, IReadOnlyList ReinforcementPolicies, IReadOnlyList ProductionPrograms, IReadOnlyList Directives, IReadOnlyList Assignments, IReadOnlyList DecisionLog, IReadOnlyList Alerts);