# `DripDrop.Channels`
[🔗](https://github.com/agoodway/dripdrop/blob/v0.1.0/lib/dripdrop/channels.ex#L1)

Registry and lookup helpers for built-in and host-registered channel providers.

# `channels`

```elixir
@spec channels() :: [atom()]
```

Returns all known channel keys.

# `normalize_key`

```elixir
@spec normalize_key(atom() | binary()) :: {:ok, atom()} | :error
```

Normalizes channel and provider keys into existing atoms.

# `provider_module`

```elixir
@spec provider_module(atom() | binary(), atom() | binary()) ::
  {:ok, module()} | {:error, term()}
```

Looks up the module for a channel/provider pair.

# `providers`

```elixir
@spec providers(atom() | binary()) :: [atom()]
```

Returns all known provider keys for a channel.

# `register`

```elixir
@spec register(atom() | binary(), atom() | binary(), module()) ::
  :ok | {:error, term()}
```

Registers a host-defined channel provider.

---

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