sig
  val init :
    ?cluster:Import.Cluster.t ->
    ?fail_if_async_has_been_initialized:bool -> unit -> unit
  val shutdown : unit -> unit Core.Std.Or_error.t Async.Std.Deferred.t
  val run :
    ?buffer_age_limit:[ `At_most of Core.Std.Time.Span.t | `Unlimited ] ->
    ?where:[ `F of unit -> string | `Local | `On of string ] ->
    (unit -> 'Async.Std.Deferred.t) ->
    ('a, string) Core.Std.Result.t Async.Std.Deferred.t
  val spawn :
    ?buffer_age_limit:Async.Std.Writer.buffer_age_limit ->
    ?where:[ `F of unit -> string | `Local | `On of string ] ->
    (('a, 'b) Hub.t -> 'Async.Std.Deferred.t) ->
    (('a, 'b) Channel.t * ('c, string) Core.Std.Result.t Async.Std.Deferred.t)
    Async.Std.Deferred.t
  val hub :
    ?buffer_age_limit:Async.Std.Writer.buffer_age_limit ->
    unit -> ('a, 'b) Hub.t Async.Std.Deferred.t
  val is_worker_machine : unit -> bool
  val round_robin : [> `F of unit -> string ]
  val random : [> `F of unit -> string ]
  val random_in : string list -> [> `F of unit -> string ]
end