# `AgentSessionManager.Cost.CostCalculator`
[🔗](https://github.com/nshkrdotcom/agent_session_manager/blob/v0.8.0/lib/agent_session_manager/cost/cost_calculator.ex#L1)

Converts token usage counts into USD cost estimates using
configurable per-model pricing tables.

# `pricing_table`

```elixir
@type pricing_table() :: map()
```

# `rate_entry`

```elixir
@type rate_entry() :: map()
```

# `token_counts`

```elixir
@type token_counts() :: map()
```

# `calculate`

```elixir
@spec calculate(token_counts(), String.t() | nil, String.t() | nil, pricing_table()) ::
  {:ok, float()} | {:error, :no_rates}
```

# `calculate_run_cost`

```elixir
@spec calculate_run_cost(AgentSessionManager.Core.Run.t(), pricing_table()) ::
  {:ok, float()} | {:error, :no_rates}
```

# `default_pricing_table`

```elixir
@spec default_pricing_table() :: pricing_table()
```

# `normalize_legacy_rates`

```elixir
@spec normalize_legacy_rates(map()) :: map()
```

# `resolve_rates`

```elixir
@spec resolve_rates(String.t() | nil, String.t() | nil, pricing_table()) ::
  {:ok, rate_entry()} | {:error, :no_rates}
```

---

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