sig
  type 'a t = 'a Async_condition.t
  val create : unit -> 'a t
  val signal : 'a t -> 'a -> unit
  val broadcast : 'a t -> 'a -> unit
  val wait : 'a t -> 'a Deferred.t
  val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
end