# `Tinkex.RetryConfig`
[🔗](https://github.com/North-Shore-AI/tinkex/blob/v0.4.0/lib/tinkex/retry_config.ex#L1)

User-facing retry configuration for sampling operations.

Mirrors the Python SDK surface (time-bounded retries with progress timeout,
backoff tuning, connection limiting, enable/disable toggle). The struct is
designed to be lightweight and easy to pass through opts.

# `t`

```elixir
@type t() :: %Tinkex.RetryConfig{
  base_delay_ms: pos_integer(),
  enable_retry_logic: boolean(),
  jitter_pct: float(),
  max_connections: pos_integer(),
  max_delay_ms: pos_integer(),
  max_retries: non_neg_integer() | :infinity,
  progress_timeout_ms: pos_integer()
}
```

# `default`

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

Return the default retry configuration.

# `new`

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

Build a retry configuration.

Accepts keyword options overriding defaults that match the Python RetryConfig
defaults (0.5s base delay, 10s cap, 25% jitter, 120m progress timeout, and
no retry cap unless explicitly provided).

# `to_handler_opts`

```elixir
@spec to_handler_opts(t()) :: keyword()
```

Convert to RetryHandler options.

# `validate!`

```elixir
@spec validate!(t()) :: t()
```

Validate a retry configuration, raising on invalid values.

---

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