# `Kombu.Utils.Limits.TokenBucket`
[🔗](https://github.com/hacktobeer/kombu/blob/v0.1.0/lib/kombu/utils/limits.ex#L6)

Token Bucket rate limiter (`kombu.utils.limits.TokenBucket`).

# `t`

```elixir
@type t() :: %Kombu.Utils.Limits.TokenBucket{
  capacity: float(),
  contents: :queue.queue(),
  fill_rate: float(),
  timestamp: float(),
  tokens: float()
}
```

# `add`

```elixir
@spec add(t(), term()) :: t()
```

# `can_consume`

```elixir
@spec can_consume(t(), number(), keyword()) :: {boolean(), t()}
```

# `clear_pending`

```elixir
@spec clear_pending(t()) :: t()
```

# `expected_time`

```elixir
@spec expected_time(t(), number(), keyword()) :: {float(), t()}
```

# `new`

```elixir
@spec new(number(), number(), keyword()) :: t()
```

# `pop`

```elixir
@spec pop(t()) :: {term(), t()}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
