sig
  type t = private Limiter.limiter
  val create_exn :
    now:Time.t ->
    burst_size:float ->
    sustained_rate_per_sec:float ->
    ?initial_bucket_level:float -> unit -> Limiter.Token_bucket.t
  val try_take :
    Limiter.Token_bucket.t ->
    now:Time.t ->
    float -> [ `Asked_for_more_than_bucket_size | `Taken | `Unable ]
end