type IntersectRequired<
Gates extends readonly Gate<GateContextBase>[]
> = Gates extends readonly [
infer First extends Gate<GateContextBase>,
...infer Rest extends readonly Gate<GateContextBase>[]
]
? RequiredOf<First> & IntersectRequired<Rest>
: unknown;type IntersectRequired<
Gates extends readonly Gate<GateContextBase>[]
> = Gates extends readonly [
infer First extends Gate<GateContextBase>,
...infer Rest extends readonly Gate<GateContextBase>[]
]
? RequiredOf<First> & IntersectRequired<Rest>
: unknown;Gates
Gates extends readonly Gate<GateContextBase>[]Gates extends readonly Gate<GateContextBase>[]