export const FirewallAuditRecord = Schema.Union(
exactStruct({
kind: Schema.Literal("start"),
format,
snapshotId,
startedAt: Schema.DateTimeUtc,
}),
exactStruct({
kind: Schema.Literal("check"),
checkId: Schema.NonEmptyString,
direction: Schema.Literal("incoming", "outgoing"),
revision: Schema.NonNegativeInt,
disposition: Schema.Literal(
"checking",
"interrupted",
"stale",
"admitted",
"withheld",
),
post: Schema.NullOr(firewallAuditPost),
candidate: Schema.Uint8ArrayFromBase64,
input: firewallAuditInput,
result: Schema.NullOr(firewallAuditResult),
}),
exactStruct({
kind: Schema.Literal("activation"),
...firewallActivationSchema.fields,
}),
exactStruct({
kind: Schema.Literal("complete"),
format,
snapshotId,
checkCount: Schema.NonNegativeInt,
activationCount: Schema.NonNegativeInt,
sha256: digest,
}),
).annotations({ identifier: "FirewallAuditRecord" })