using System; using System.Collections.Generic; using System.Text.Json.Serialization; namespace StellaOps.Concelier.Connector.StellaOpsMirror.Internal; public sealed record MirrorIndexDocument( [property: JsonPropertyName("schemaVersion")] int SchemaVersion, [property: JsonPropertyName("generatedAt")] DateTimeOffset GeneratedAt, [property: JsonPropertyName("targetRepository")] string? TargetRepository, [property: JsonPropertyName("domains")] IReadOnlyList Domains); public sealed record MirrorIndexDomainEntry( [property: JsonPropertyName("domainId")] string DomainId, [property: JsonPropertyName("displayName")] string DisplayName, [property: JsonPropertyName("advisoryCount")] int AdvisoryCount, [property: JsonPropertyName("manifest")] MirrorFileDescriptor Manifest, [property: JsonPropertyName("bundle")] MirrorFileDescriptor Bundle, [property: JsonPropertyName("sources")] IReadOnlyList Sources); public sealed record MirrorFileDescriptor( [property: JsonPropertyName("path")] string Path, [property: JsonPropertyName("sizeBytes")] long SizeBytes, [property: JsonPropertyName("digest")] string Digest, [property: JsonPropertyName("signature")] MirrorSignatureDescriptor? Signature); public sealed record MirrorSignatureDescriptor( [property: JsonPropertyName("path")] string Path, [property: JsonPropertyName("algorithm")] string Algorithm, [property: JsonPropertyName("keyId")] string KeyId, [property: JsonPropertyName("provider")] string Provider, [property: JsonPropertyName("signedAt")] DateTimeOffset SignedAt); public sealed record MirrorSourceSummary( [property: JsonPropertyName("source")] string Source, [property: JsonPropertyName("firstRecordedAt")] DateTimeOffset? FirstRecordedAt, [property: JsonPropertyName("lastRecordedAt")] DateTimeOffset? LastRecordedAt, [property: JsonPropertyName("advisoryCount")] int AdvisoryCount);