const overwriteTag = <Tag extends LiteralValue>(tag: Tag) =>
S.optionalToRequired(S.Unknown, S.Literal(tag), {
decode: () => tag,
encode: () => Option.none()
}).pipe(S.withConstructorDefault(() => tag))
const ErrorBody = S.Struct({
_tag: overwriteTag("ErrorBody"),
ErrorCode: S.Number.pipe(S.nonNegative(), S.int()),
Message: S.String
})
const overwriteTag = <Tag extends LiteralValue>(tag: Tag) =>
S.optionalToRequired(S.Unknown, S.Literal(tag), {
decode: () => tag,
encode: () => Option.none()
}).pipe(S.withConstructorDefault(() => tag))
const ErrorBody = S.Struct({
_tag: overwriteTag("ErrorBody"),
ErrorCode: S.Number.pipe(S.nonNegative(), S.int()),
Message: S.String
})