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();
}