# `RevenueCat.Client`
[🔗](https://github.com/metacircu1ar/revenue_cat/blob/main/lib/revenue_cat/client.ex#L1)

Behaviour for RevenueCat client adapters.

Required callbacks cover the simple global-config API.
Optional callbacks cover the public overloads (`opts` and client-struct forms).

# `app_user_id_or_options`

```elixir
@type app_user_id_or_options() :: String.t() | keyword()
```

# `client_or_app_user_id`

```elixir
@type client_or_app_user_id() :: RevenueCat.t() | String.t()
```

# `entitlement_or_options`

```elixir
@type entitlement_or_options() :: String.t() | keyword()
```

# `delete_customer`

```elixir
@callback delete_customer(String.t()) :: :ok | {:error, term()}
```

# `delete_customer`
*optional* 

```elixir
@callback delete_customer(client_or_app_user_id(), app_user_id_or_options()) ::
  :ok | {:error, term()}
```

# `has_active_entitlement`

```elixir
@callback has_active_entitlement(String.t(), String.t()) ::
  {:ok, boolean()} | {:error, term()}
```

# `has_active_entitlement`
*optional* 

```elixir
@callback has_active_entitlement(
  client_or_app_user_id(),
  String.t(),
  entitlement_or_options()
) :: {:ok, boolean()} | {:error, term()}
```

---

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