type ExcludeAnnotatedInner<S extends Schema.Schema.Any, AnnotationId extends SootsTypeId> =
S extends Schema.Struct<infer Fields>
? {
[K in keyof Fields as Fields[K] extends HasAnnotation<AnnotationId> ? never : K]: Schema.Schema.Type<
Fields[K]
>;
}
: S extends Schema.Union<infer Members>
? {
[K in keyof Members]: ExcludeAnnotatedInner<Members[K], AnnotationId>;
}[number]
: Schema.Schema.Type<S>;
type ExcludeAnnotatedInner<S extends Schema.Schema.Any, AnnotationId extends SootsTypeId> =
S extends Schema.Struct<infer Fields>
? {
[K in keyof Fields as Fields[K] extends HasAnnotation<AnnotationId> ? never : K]: Schema.Schema.Type<
Fields[K]
>;
}
: S extends Schema.Union<infer Members>
? {
[K in keyof Members]: ExcludeAnnotatedInner<Members[K], AnnotationId>;
}[number]
: Schema.Schema.Type<S>;