using System; using System.Collections.Generic; namespace StellaOps.Platform.WebService.Contracts; public sealed record TopologyRegionProjection( string RegionId, string DisplayName, int SortOrder, int EnvironmentCount, int TargetCount, int HostCount, int AgentCount, DateTimeOffset? LastSyncAt); public sealed record TopologyEnvironmentProjection( string EnvironmentId, string RegionId, string EnvironmentType, string DisplayName, int SortOrder, int TargetCount, int HostCount, int AgentCount, int PromotionPathCount, int WorkflowCount, DateTimeOffset? LastSyncAt); public sealed record TopologyTargetProjection( string TargetId, string Name, string RegionId, string EnvironmentId, string HostId, string AgentId, string TargetType, string HealthStatus, string ComponentVersionId, string ImageDigest, string ReleaseId, string ReleaseVersionId, DateTimeOffset? LastSyncAt); public sealed record TopologyHostProjection( string HostId, string HostName, string RegionId, string EnvironmentId, string RuntimeType, string Status, string AgentId, int TargetCount, DateTimeOffset? LastSeenAt); public sealed record TopologyAgentProjection( string AgentId, string AgentName, string RegionId, string EnvironmentId, string Status, IReadOnlyList Capabilities, int AssignedTargetCount, DateTimeOffset? LastHeartbeatAt); public sealed record TopologyPromotionPathProjection( string PathId, string RegionId, string SourceEnvironmentId, string TargetEnvironmentId, string PathMode, string Status, int RequiredApprovals, string WorkflowId, string GateProfileId, DateTimeOffset? LastPromotedAt); public sealed record TopologyWorkflowProjection( string WorkflowId, string WorkflowName, string RegionId, string EnvironmentId, string TriggerType, string Status, int StepCount, string GateProfileId, DateTimeOffset UpdatedAt); public sealed record TopologyGateProfileProjection( string GateProfileId, string ProfileName, string RegionId, string EnvironmentId, string PolicyProfile, int RequiredApprovals, bool SeparationOfDuties, IReadOnlyList BlockingRules, DateTimeOffset UpdatedAt);