# Claim Module

The **ClaimModule** is a smart contract that enables managers to claim tokens from external protocols given to the [SetToken](https://docs.indexcoop.com/index-coop-community-handbook/protocol/index-protocol/core-contracts/set-token) as part of participating in incentivized activities of other protocols. The ClaimModule works in conjunction with ClaimAdapters, in which the claimAdapterID / integrationNames are stored on the [integration registry](https://docs.indexcoop.com/index-coop-community-handbook/protocol/index-protocol/core-contracts/integration-registry).

## Select Methods

### claim()

`claim(ISetToken _setToken, address _rewardPool, string calldata _integrationName)`

**Valid Caller only**. Claim the rewards available on the rewardPool for the specified claim integration. Callable only by manager unless manager has set anyoneClaim to true.

| Parameter Name    | Type      | Description                                                             |
| ----------------- | --------- | ----------------------------------------------------------------------- |
| \_setToken        | ISetToken | Instance of the SetToken                                                |
| \_rewardPool      | address   | Address of the rewardPool that identifies the contract governing claims |
| \_integrationName | string    | ID of claim module integration (mapping on integration registry)        |

### initialize()

`function initialize(ISetToken _setToken, bool _anyoneClaim, address[] calldata _rewardPools, string[] calldata _integrationNames)`

**Manager only.** Initializes this module to the SetToken.

| Parameter Name     | Type       | Description                                                                                                 |
| ------------------ | ---------- | ----------------------------------------------------------------------------------------------------------- |
| \_setToken         | ISetToken  | Address of the SetToken                                                                                     |
| \_anyoneClaim      | bool       | Boolean indicating if anyone can claim or just manager                                                      |
| \_rewardPools      | address\[] | Addresses of rewardPools that identifies the contract governing claims. Maps to same index integrationNames |
| \_integrationNames | string\[]  | Human-readable names matching adapter used to collect claim on pool. Maps to same index in rewardPools      |
