# `Angelus.Spice.Server`
[🔗](https://github.com/MonsignorEduardo/angelus/blob/v0.0.2/lib/angelus/spice/server.ex#L1)

GenServer that owns the native `spice_worker` Port and serializes SPICE calls.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `load_kernels`

```elixir
@spec load_kernels(
  [String.t()],
  keyword()
) :: {:ok, map()} | {:error, term()}
```

Loads validated kernel paths into the native worker.

# `metadata`

```elixir
@spec metadata() :: {:ok, map() | nil}
```

Returns metadata for the currently loaded kernel set, if any.

# `start_link`

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

Starts the named SPICE server process.

# `state`

```elixir
@spec state(String.t(), float(), keyword()) :: {:ok, map()} | {:error, term()}
```

Returns native SPICE state data for a resolved SPICE target string.

# `utc_to_et`

```elixir
@spec utc_to_et(DateTime.t()) :: {:ok, float()} | {:error, term()}
```

Converts a UTC datetime to SPICE ephemeris time through the native worker.

---

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