sig
  type 'a t
  val invariant :
    'Core_kernel.Invariant_intf.inv -> 'a t Core_kernel.Invariant_intf.inv
  val create : can_subscribe_after_start:bool -> 'Bus.t
  val start : 'Bus.t -> unit
  val flushed : 'Bus.t -> unit Import.Deferred.t
  val write : 'Bus.t -> '-> unit
  module Subscriber :
    sig
      type 'a t
      val sexp_of_t :
        ('-> Sexplib.Sexp.t) -> 'Bus.Subscriber.t -> Sexplib.Sexp.t
    end
  val subscribe_exn : 'Bus.t -> f:('-> unit) -> 'Bus.Subscriber.t
  val unsubscribe : 'Bus.t -> 'Bus.Subscriber.t -> unit
  val reader_exn : 'Bus.t -> 'Import.Pipe.Reader.t
  val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'Bus.t -> Sexplib.Sexp.t
end