# `Parrhesia.Protocol.EventValidator`

Strict NIP-01 event validation helpers.

# `error_reason`

```elixir
@type error_reason() ::
  :invalid_shape
  | :invalid_id
  | :invalid_pubkey
  | :invalid_created_at
  | :created_at_too_far_in_future
  | :invalid_kind
  | :too_many_tags
  | :invalid_tags
  | :invalid_content
  | :invalid_sig
  | :invalid_id_hash
  | :invalid_signature
  | :invalid_marmot_keypackage_content
  | :missing_marmot_encoding_tag
  | :invalid_marmot_encoding_tag
  | :missing_marmot_protocol_version_tag
  | :invalid_marmot_protocol_version_tag
  | :missing_marmot_ciphersuite_tag
  | :invalid_marmot_ciphersuite_tag
  | :missing_marmot_extensions_tag
  | :invalid_marmot_extensions_tag
  | :missing_marmot_relays_tag
  | :invalid_marmot_relays_tag
  | :missing_marmot_keypackage_ref_tag
  | :invalid_marmot_keypackage_ref_tag
  | :missing_marmot_relay_tag
  | :invalid_marmot_relay_tag
  | :invalid_marmot_direct_welcome_event
  | :invalid_giftwrap_content
  | :missing_giftwrap_recipient_tag
  | :invalid_giftwrap_recipient_tag
  | :missing_marmot_group_tag
  | :invalid_marmot_group_tag
  | :invalid_marmot_group_content
  | :missing_nip66_d_tag
  | :invalid_nip66_d_tag
  | :invalid_nip66_discovery_tag
  | :missing_nip66_frequency_tag
  | :invalid_nip66_frequency_tag
  | :invalid_nip66_timeout_tag
  | :invalid_nip66_check_tag
  | :missing_nip43_protected_tag
  | :missing_nip43_claim_tag
  | :invalid_nip43_claim_tag
  | :missing_nip43_member_tag
  | :invalid_nip43_member_tag
  | :missing_nip43_pubkey_tag
  | :invalid_nip43_pubkey_tag
  | :stale_nip43_join_request
  | :stale_nip43_leave_request
```

# `compute_id`

```elixir
@spec compute_id(map()) :: String.t()
```

# `error_message`

```elixir
@spec error_message(error_reason()) :: String.t()
```

# `validate`

```elixir
@spec validate(map()) :: :ok | {:error, error_reason()}
```

---

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