sig
  type 'a t
  val create : unit -> 'Lwt_condition.t
  val wait : ?mutex:Lwt_mutex.t -> 'Lwt_condition.t -> 'Lwt.t
  val signal : 'Lwt_condition.t -> '-> unit
  val broadcast : 'Lwt_condition.t -> '-> unit
end