# Token Listener

The Prize Pool Token Listener interface allows contracts to "listen" to the complete token lifecycle of mint, transfer and burn.  There are two functions that must be implemented: `beforeTokenMint` and `beforeTokenTransfer`

The beforeTokenMint function must be called whenever a token is minted.

```javascript
function beforeTokenMint(
    address to,
    uint256 amount,
    address controlledToken,
    address referrer
) external;
```

| Paramater Name  | Parameter Description                                 |
| --------------- | ----------------------------------------------------- |
| to              | The address that is receiving the newly minted tokens |
| amount          | The amount of new tokens                              |
| controlledToken | The token being minted                                |
| referrer        | The address that referred the user (for rewards)      |

The beforeTokenTransfer function must be called whenever a token is transferred or burned.

```javascript
function beforeTokenTransfer(
    address from,
    address to,
    uint256 amount,
    address controlledToken
) external;
```

| Paramater Name  | Parameter Description                                                      |
| --------------- | -------------------------------------------------------------------------- |
| from            | The address that is sending the tokens                                     |
| to              | The address that is receiving tokens.  May be the zero address if burning. |
| amount          | The amount of tokens                                                       |
| controlledToken | The token being transferred                                                |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://v3.docs.pooltogether.com/v3.0.1/protocol/prize-pool/token-listener.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
