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

GenServer-backed deployment circuit breaker for routing skips, half-open probes, and cooldowns.

# `state`

```elixir
@type state() :: :closed | :open | :half_open
```

# `t`

```elixir
@type t() :: %LLMProxy.Providers.CircuitBreaker{
  cooldown_ms: non_neg_integer() | nil,
  failures: non_neg_integer(),
  opened_at: integer() | nil,
  state: state()
}
```

# `available?`

```elixir
@spec available?(LLMProxy.Providers.Attempt.t()) :: boolean()
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `failure`

```elixir
@spec failure(LLMProxy.Providers.Attempt.t(), non_neg_integer() | nil) :: :ok
```

# `reset`

```elixir
@spec reset() :: :ok
```

# `start_link`

```elixir
@spec start_link(keyword()) :: GenServer.on_start()
```

# `status`

```elixir
@spec status(LLMProxy.Providers.Attempt.t()) :: t()
```

# `success`

```elixir
@spec success(LLMProxy.Providers.Attempt.t()) :: :ok
```

---

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