Module S.Either

val wrap_model : ?⁠on_action_for_other_component:([ `Action_for_first of 'm2 | `Action_for_second of 'm1 ]('m1'm2) Core_kernel.Either.t) on_action_mismatch -> ('input'm1'r1) t -> ('input'm2'r2) t -> ('input('m1'm2) Core_kernel.Either.t('r1'r2) Core_kernel.Either.t) t
val wrap_model_with_same_result : ?⁠on_action_for_other_component:([ `Action_for_first of 'm2 | `Action_for_second of 'm1 ]('m1'm2) Core_kernel.Either.t) on_action_mismatch -> ('input'm1'r) t -> ('input'm2'r) t -> ('input('m1'm2) Core_kernel.Either.t'r) t