`sig
val create_exn :
now:Time.t ->
hopper_to_bucket_rate_per_sec:float Limiter.Infinite_or_finite.t ->
bucket_size:float ->
initial_bucket_level:float ->
initial_hopper_level:float Limiter.Infinite_or_finite.t -> Limiter.t
val tokens_may_be_available_when :
Limiter.t ->
now:Time.t ->
float ->
[ `At of Time.t
| `Never_because_greater_than_bucket_size
| `When_return_to_hopper_is_called ]
val try_take :
Limiter.t ->
now:Time.t ->
float -> [ `Asked_for_more_than_bucket_size | `Taken | `Unable ]
val return_to_hopper : Limiter.t -> now:Time.t -> float -> unit
val set_hopper_to_bucket_rate_per_sec_exn :
Limiter.t -> now:Time.t -> float Limiter.Infinite_or_finite.t -> unit
val set_token_target_level_exn :
Limiter.t -> now:Time.t -> float Limiter.Infinite_or_finite.t -> unit
val set_bucket_size_exn : Limiter.t -> now:Time.t -> float -> unit
end`