namespace StellaOps.AirGap.Controller.Options; public sealed class AirGapStartupOptions { /// /// Tenant to validate at startup. Defaults to single-tenant controller deployment. /// public string TenantId { get; set; } = "default"; /// /// Optional egress allowlist. When null, startup diagnostics consider it missing. /// public string[]? EgressAllowlist { get; set; } = null; /// /// Trust material required to prove bundles and egress policy inputs are present. /// public TrustMaterialOptions Trust { get; set; } = new(); /// /// Pending root rotation metadata; validated when pending keys exist. /// public RotationOptions Rotation { get; set; } = new(); } public sealed class TrustMaterialOptions { public string RootJsonPath { get; set; } = string.Empty; public string SnapshotJsonPath { get; set; } = string.Empty; public string TimestampJsonPath { get; set; } = string.Empty; public bool IsConfigured => !string.IsNullOrWhiteSpace(RootJsonPath) && !string.IsNullOrWhiteSpace(SnapshotJsonPath) && !string.IsNullOrWhiteSpace(TimestampJsonPath); } public sealed class RotationOptions { public Dictionary ActiveKeys { get; set; } = new(StringComparer.Ordinal); public Dictionary PendingKeys { get; set; } = new(StringComparer.Ordinal); public List ApproverIds { get; set; } = new(); }