# Events

- [Hub Events](#hub-events)
- [On-Chain Events](#on-chain-events)

## Hub Events

Emitted when the internal state of a hub changes. Applications can subscribe to these events which are useful for staying in sync with the state of the Hub.

### MergeMessage

Emit when a new Farcaster Message is merged into a Hub.

| Name             | Type                            | Description                                                 |
| ---------------- | ------------------------------- | ----------------------------------------------------------- |
| id               | `number`                        | A unique id for the message                                 |
| type             | [`HubEventType`](#hubeventtype) | Always set to `MERGE_MESSAGE`                               |
| message          | `Message`                       | The message that was merged                                 |
| deletedMessages? | `Message[]`                     | (optional) The messages that were deleted as a side-effect. |

### PruneMessage

Emit when a Farcaster message is pruned from a set due to exceeding size or duration limits.

| Name    | Type                            | Description                   |
| ------- | ------------------------------- | ----------------------------- |
| id      | `number`                        | A unique id for the message   |
| type    | [`HubEventType`](#hubeventtype) | Always set to `PRUNE_MESSAGE` |
| message | `Message`                       | The message that was pruned   |

### RevokeMessage

Emit when a Farcaster message is revoked by the user.

| Name    | Type                            | Description                    |
| ------- | ------------------------------- | ------------------------------ |
| id      | `number`                        | A unique id for the message    |
| type    | [`HubEventType`](#hubeventtype) | Always set to `REVOKE_MESSAGE` |
| message | `Message`                       | The message that was revoked   |

### MergeIdRegistry

Emit when an IdRegistryEvent is merged into the Hub.

| Name            | Type                            | Description                             |
| --------------- | ------------------------------- | --------------------------------------- |
| id              | `number`                        | A unique id for the message             |
| type            | [`HubEventType`](#hubeventtype) | Always set to `MERGE_ID_REGISTRY_EVENT` |
| idRegistryEvent | `IdRegistryEvent`               | The message that was merged             |

### MergeNameRegistry

Emit when an NameRegistryEvent is merged into the Hub.

| Name              | Type                            | Description                               |
| ----------------- | ------------------------------- | ----------------------------------------- |
| id                | `number`                        | A unique id for the message               |
| type              | [`HubEventType`](#hubeventtype) | Always set to `MERGE_NAME_REGISTRY_EVENT` |
| nameRegistryEvent | `NameRegistryEvent`             | The message that was merged               |

## On-Chain Events

Emitted by contracts whenever the ownership of fids or fnames changes.

### IdRegistryEvent

Emit when an on-chain event occurs in the IdRegistry which registers or transfers an fid.

| Name            | Type                        | Description                                              |
| --------------- | --------------------------- | -------------------------------------------------------- |
| blockHash       | `Uint8Array`                | The block hash at which the transaction occurred.        |
| blockNumber     | `number`                    | The block number at which the transaction occurred.      |
| fid             | `Uint8Array`                | The fid being registered or transferred.                 |
| from            | `Uint8Array`                | The address that initiated the transaction.              |
| logIndex        | `number`                    | The log index of the event in the transaction.           |
| to              | `Uint8Array`                | The address which now owns the fid.                      |
| transactionHash | `Uint8Array`                | The hash of the transaction in which the event occurred. |
| type            | [`NameRegistryEventType`]() | The type of event which occurred.                        |

### NameRegistryEvent

Emit when an on-chain event occurs in the NameRegistry which registers, transfers or renews an fname.

| Name            | Type                                              | Description                                              |
| --------------- | ------------------------------------------------- | -------------------------------------------------------- |
| blockHash       | `Uint8Array`                                      | The block hash at which the transaction occurred.        |
| blockNumber     | `number`                                          | The block number at which the transaction occurred.      |
| expiry          | `number`                                          | The timestamp at which the fname should expire.          |
| fname           | `Uint8Array`                                      | The fname being registered or renewed.                   |
| from            | `Uint8Array`                                      | The address that initiated the transaction.              |
| logIndex        | `number`                                          | The log index of the event in the transaction.           |
| to              | `Uint8Array`                                      | The address which owns the fname.                        |
| transactionHash | `Uint8Array`                                      | The hash of the transaction in which the event occurred. |
| type            | [`NameRegistryEventType`](#nameregistryeventtype) | The type of event which occurred.                        |

## Enumerations

### HubEventType

The Farcaster network that will accept the message.

| Name                                     | Number | Description                                       |
| ---------------------------------------- | ------ | ------------------------------------------------- |
| HUB_EVENT_TYPE_NONE                      | 0      |                                                   |
| HUB_EVENT_TYPE_MERGE_MESSAGE             | 1      | A message was merged into the Hub                 |
| HUB_EVENT_TYPE_PRUNE_MESSAGE             | 2      | A message was pruned because a limit was exceeded |
| HUB_EVENT_TYPE_REVOKE_MESSAGE            | 3      | A message was revoked by a user                   |
| HUB_EVENT_TYPE_MERGE_ID_REGISTRY_EVENT   | 4      | An fid was issued or transferred.                 |
| HUB_EVENT_TYPE_MERGE_NAME_REGISTRY_EVENT | 5      | An fname was issued, transferred or renewed.      |

### IdRegistryEventType

| Name                            | Number | Description                      |
| ------------------------------- | ------ | -------------------------------- |
| ID_REGISTRY_EVENT_TYPE_NONE     | 0      |                                  |
| ID_REGISTRY_EVENT_TYPE_REGISTER | 1      | A new fid was registered.        |
| ID_REGISTRY_EVENT_TYPE_TRANSFER | 2      | An existing fid was transferred. |

### NameRegistryEventType

| Name                              | Number | Description                         |
| --------------------------------- | ------ | ----------------------------------- |
| NAME_REGISTRY_EVENT_TYPE_NONE     | 0      |                                     |
| NAME_REGISTRY_EVENT_TYPE_TRANSFER | 1      | An fname was minted or transferred. |
| NAME_REGISTRY_EVENT_TYPE_RENEW    | 1      | An fname was renewed.               |
