type GateFits<Provided, TGate> = [Provided] extends [RequiredOf<TGate>]
? TGate
: TGate extends Gate<infer Req, infer Name>
? Constructor<
[
GateMismatch<
Name,
KindName<Req>,
KindName<Provided>
>
]
>
: never;type GateFits<Provided, TGate> = [Provided] extends [RequiredOf<TGate>]
? TGate
: TGate extends Gate<infer Req, infer Name>
? Constructor<
[
GateMismatch<
Name,
KindName<Req>,
KindName<Provided>
>
]
>
: never;Provided
ProvidedProvidedTGate
TGateTGate