# `LLMProxy.Usage`
[🔗](https://github.com/elixir-vibe/llm_proxy/blob/v0.3.1/lib/llm_proxy/usage.ex#L1)

Token usage accounting and protocol usage-map rendering.

# `t`

```elixir
@type t() :: %LLMProxy.Usage{
  cache_read_tokens: non_neg_integer(),
  cache_write_tokens: non_neg_integer(),
  input_tokens: non_neg_integer(),
  output_tokens: non_neg_integer()
}
```

# `from_anthropic`

```elixir
@spec from_anthropic(map()) :: t()
```

# `from_openai`

```elixir
@spec from_openai(map()) :: t()
```

# `from_responses`

```elixir
@spec from_responses(map()) :: t()
```

# `merge_max`

```elixir
@spec merge_max(t(), t()) :: t()
```

# `new`

```elixir
@spec new(non_neg_integer(), non_neg_integer(), non_neg_integer(), non_neg_integer()) ::
  t()
```

# `put_output_tokens`

```elixir
@spec put_output_tokens(t(), non_neg_integer()) :: t()
```

# `to_openai`

```elixir
@spec to_openai(map() | t() | nil) :: map()
```

# `to_req_llm`

```elixir
@spec to_req_llm(t()) :: map()
```

# `to_responses`

```elixir
@spec to_responses(map() | t() | nil) :: map()
```

# `zero`

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

---

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