sig
  type 'a t
  val create : unit -> 'a Import.Pipe.Reader.t * 'a Thread_safe_pipe.t
  val pushback : 'a Thread_safe_pipe.t -> unit
  val write_without_pushback' :
    ?wakeup_scheduler:bool ->
    'a Thread_safe_pipe.t -> 'a Core.Std.Queue.t -> unit
  val write_without_pushback :
    ?wakeup_scheduler:bool -> 'a Thread_safe_pipe.t -> 'a -> unit
  val write' : 'a Thread_safe_pipe.t -> 'a Core.Std.Queue.t -> unit
  val write : 'a Thread_safe_pipe.t -> 'a -> unit
  val close : 'a Thread_safe_pipe.t -> unit
  val is_closed : 'a Thread_safe_pipe.t -> bool
  val closed : 'a Thread_safe_pipe.t -> unit
  val sexp_of_t :
    ('a -> Sexplib.Sexp.t) -> 'a Thread_safe_pipe.t -> Sexplib.Sexp.t
end