# `GEPA.Types`
[🔗](https://github.com/nshkrdotcom/gepa_ex/blob/v0.3.0/lib/gepa/types.ex#L1)

Shared type specifications for GEPA.

# `candidate`

```elixir
@type candidate() :: %{required(String.t()) =&gt; String.t()}
```

Program candidate - maps component names to their text implementations

# `data_id`

```elixir
@type data_id() :: term()
```

Data identifier (generic, can be int, string, etc.)

# `data_inst`

```elixir
@type data_inst() :: term()
```

Data instance (user-defined)

# `pareto_fronts`

```elixir
@type pareto_fronts() :: %{required(data_id()) =&gt; MapSet.t(program_idx())}
```

Pareto front per validation example

# `program_idx`

```elixir
@type program_idx() :: non_neg_integer()
```

Program index in state

# `rollout_output`

```elixir
@type rollout_output() :: term()
```

Rollout output (user-defined program output)

# `score`

```elixir
@type score() :: float()
```

Score (higher is better)

# `sparse_scores`

```elixir
@type sparse_scores() :: %{required(data_id()) =&gt; score()}
```

Sparse validation scores

# `trajectory`

```elixir
@type trajectory() :: term()
```

Trajectory (user-defined execution trace)

---

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