# `ZenWebsocket.Examples.DeribitAdapter`
[🔗](https://github.com/ZenHive/zen_websocket/blob/v0.4.2/lib/zen_websocket/examples/deribit_adapter.ex#L1)

Simplified Deribit WebSocket API adapter.

Uses DeribitRpc for all RPC operations and provides
5 essential functions for Deribit integration.

# `t`

```elixir
@type t() :: %ZenWebsocket.Examples.DeribitAdapter{
  authenticated: boolean(),
  client: ZenWebsocket.Client.t() | nil,
  client_id: String.t() | nil,
  client_secret: String.t() | nil,
  subscriptions: MapSet.t()
}
```

# `authenticate`

```elixir
@spec authenticate(t()) :: {:ok, t()} | {:error, term()}
```

Authenticate with Deribit using client credentials.

# `connect`

```elixir
@spec connect(keyword()) :: {:ok, t()} | {:error, term()}
```

Connect to Deribit WebSocket API.

Options:
- `:client_id` - Client ID for authentication
- `:client_secret` - Client secret for authentication
- `:url` - WebSocket URL (defaults to test.deribit.com)
- `:handler` - Message handler function
- `:heartbeat_interval` - Heartbeat interval in seconds (default: 30)

# `send_request`

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

Send a request to Deribit API using any supported method.

# `subscribe`

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

Subscribe to Deribit channels.

# `unsubscribe`

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

Unsubscribe from Deribit channels.

---

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