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

Supervised cache and bounded refresh scheduler for provider usage.

One task refreshes accounts sequentially. A second manual or automatic
request cannot start another task while that refresh is active.

# `scope`

```elixir
@type scope() :: :all | {:account, integer()}
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `refresh_account`

```elixir
@spec refresh_account(integer(), GenServer.server()) ::
  {:ok, :started | :already_refreshing}
```

# `refresh_all`

```elixir
@spec refresh_all(GenServer.server()) :: {:ok, :started | :already_refreshing}
```

# `snapshots`

```elixir
@spec snapshots(GenServer.server()) :: [LLMProxy.ProviderUsage.Snapshot.t()]
```

# `start_link`

---

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