ApplicableComponents<CA, S>: CA extends [infer C extends ClusterInterface.Component, ...(infer R extends ClusterInterface.Component[])]
    ? S extends C["flags"]
        ? [C, ...ClusterInterface.ApplicableComponents<R, S>]
        : ClusterInterface.ApplicableComponents<R, S>
    : []

Type Parameters