# onMessageSent

Sets up a listener for when a new message is sent in a conversation.

### Usage

```ts
const sender = '0x...';
const conversationHash = '0x...';
const messageIndex = 99n;

// Listen to all messages sent by the sender
chat.onMessageSent(sender, null, null, (conversationHash, receivedMessage) => {
  console.log(conversationHash);
  console.log(receivedMessage);
});

// Listen to all messages sent to the conversation
chat.onMessageSent(null, conversationHash, null, (conversationHash, receivedMessage) => {
  console.log(conversationHash);
  console.log(receivedMessage);
});

// Listen to a specific message index
chat.onMessageSent(null, null, messageIndex, (conversationHash, receivedMessage) => {
  console.log(conversationHash);
  console.log(receivedMessage);
});
```

#### Stop watching

```ts
// Listen to all messages sent to the conversation
const stopWatching = chat.onMessageSent(
  null,
  conversationHash,
  null,
  (conversationHash, receivedMessage) => {
    console.log(conversationHash);
    console.log(receivedMessage);
  },
);

// ... Later, to stop watching for the events
stopWatching();
```

### Returns

`UnwatchFn`

A function that can be invoked to stop watching for new event logs.

### Parameters

#### sender

* **Type** `Address | null`

The message sender's address. If set to null, it listens for mails from any sender.

#### conversationHash

* **Type** `ConversationHash | null`

The hash of the target conversation. Set to null to listen to messages from any conversation.

#### index

* **Type** `bigint | null`

The index of the message in the conversation. Set to null to listen to messages at any index in a conversation.

#### callback

* **Type** `(conversationHash: ConversationHash, receivedMessage: ReceivedMessage) => void`

A callback function that will be executed when the new message sent event is detected. This callback is passed two arguments:

* `conversationHash`: The hash of the conversation the message belongs to.
* `receivedMessage`: The received message details.

The structure of receivedMessage is based on the type `ReceivedMessage`.
