pub trait TransitionFn<Input: Send + Sync>: for<'a> Fn(Input) -> Pin<Box<dyn Future<Output = TransitionPayload> + Send>> + Send + Sync { }