sig
  type ('a, 'kind) t_
  type 'a t = ('a, [ `throttle ]) Throttle.t_
  val invariant : 'a Core.Std.Invariant.inv -> 'a t Core.Std.Invariant.inv
  val create :
    continue_on_error:bool -> max_concurrent_jobs:int -> unit Throttle.t
  val create_with : continue_on_error:bool -> 'a list -> 'a Throttle.t
  type 'a outcome = [ `Aborted | `Ok of 'a | `Raised of exn ]
  val enqueue' :
    ('a, 'c) Throttle.t_ ->
    ('a -> 'b Deferred.t) -> 'b Throttle.outcome Deferred.t
  val enqueue :
    ('a, 'c) Throttle.t_ -> ('a -> 'b Deferred.t) -> 'b Deferred.t
  val prior_jobs_done : ('a, 'b) Throttle.t_ -> unit Deferred.t
  val max_concurrent_jobs : ('a, 'b) Throttle.t_ -> int
  val num_jobs_running : ('a, 'b) Throttle.t_ -> int
  val num_jobs_waiting_to_start : ('a, 'b) Throttle.t_ -> int
  val capacity_available : ('a, 'b) Throttle.t_ -> unit Deferred.t
  module Sequencer :
    sig
      type 'a t = ('a, [ `sequencer ]) Throttle.t_
      val create : ?continue_on_error:bool -> 'a -> 'a Throttle.Sequencer.t
      val sexp_of_t :
        ('a -> Sexplib.Sexp.t) -> 'a Throttle.Sequencer.t -> Sexplib.Sexp.t
    end
  val sexp_of_t_ :
    ('a -> Sexplib.Sexp.t) ->
    ('kind -> Sexplib.Sexp.t) -> ('a, 'kind) Throttle.t_ -> Sexplib.Sexp.t
  val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a Throttle.t -> Sexplib.Sexp.t
end