# Message Type definitions and utilities for Nostr protocol messages. ## Relay Message Types **Enums:** - `RelayMessageType.Auth` - Authentication challenge - `RelayMessageType.Closed` - Subscription closed - `RelayMessageType.Eose` - End of stored events - `RelayMessageType.Event` - Event data - `RelayMessageType.NegErr` - Negentropy error - `RelayMessageType.NegMsg` - Negentropy message - `RelayMessageType.Ok` - Command result **Type Definitions:** - `RelayMessage` - Base relay message type - `RelayAuth`, `RelayClosed`, `RelayEose`, `RelayEvent`, `RelayNegErr`, `RelayNegMsg`, `RelayOk` - Specific message types - `RelayAuthPayload`, `RelayClosedPayload`, etc. - Payload types for each message **Type Guards:** - `isRelayAuth()`, `isRelayClosed()`, `isRelayEose()`, `isRelayEvent()`, `isRelayNegErr()`, `isRelayNegMsg()`, `isRelayOk()` ## Client Message Types **Enums:** - `ClientMessageType.Auth` - Authentication response - `ClientMessageType.Close` - Close subscription - `ClientMessageType.Event` - Publish event - `ClientMessageType.NegClose` - Close negentropy - `ClientMessageType.NegOpen` - Open negentropy - `ClientMessageType.Req` - Request subscription **Type Definitions:** - `ClientMessage` - Base client message type - `ClientAuth`, `ClientClose`, `ClientEvent`, `ClientNegClose`, `ClientNegOpen`, `ClientReq` - Specific message types - `ClientAuthPayload`, `ClientClosePayload`, etc. - Payload types for each message **Type Guards:** - `isClientAuth()`, `isClientClose()`, `isClientEvent()`, `isClientNegClose()`, `isClientNegOpen()`, `isClientReq()` ## Example ```typescript // Handle incoming relay message const handleMessage = (message: RelayMessage) => { if (isRelayEvent(message)) { const [type, subId, event] = message console.log('Event:', event.id) } } ```