# Define a Rewards Manager Configuration

A Rewards Manager config consists of an array of stake pool and reward pool configs: `StakePoolConfig[]` and `RewardPoolConfig[]`. These configs are passed to `CozyManager.createRewardsManager` when deploying a new Rewards Manager.

## Stake Pool Config

```solidity
struct StakePoolConfig {
  // The underlying asset of the stake pool.
  IERC20 asset;
  // The rewards weight of the stake pool.
  uint16 rewardsWeight;
}
```

### Stake Pool Assets

Each stake pool must have a unique underlying asset. When constructing `StakePoolConfig[]`, the structs must be sorted by the address of the underlying stake asset. Passing in an array where the structs are unsorted or contain a duplicate asset will revert.

### Stake Pool Rewards Weights

The rewards weight determines the share of the total rewards that are distributed to a given stake pool. For example, a rewards weight of 90% implies stakers in that pool earn 90% of all dripped reward assets.

The `rewardsWeight` parameter is represented as `zoc` (e.g. 5000 is 50%). The sum of rewards weights across all stake pools must be a `zoc` (or 100%).

### Allowed Stake Pools

The `allowedStakePools` constant defines a limit on the number of stake pools in a single Rewards Manager.

## Reward Pool Config

```solidity
struct RewardPoolConfig {
  // The underlying asset of the reward pool.
  IERC20 asset;
  // The drip model for the reward pool.
  IDripModel dripModel;
}
```

### Reward Pool Assets

There are no restrictions on the underlying assets of reward pools.

### Reward Pool Drip Models

The drip model for a reward pool defines the rate at which assets deposited into a reward pool accrue (i.e. "drip") to stakers. Drip-decay models must conform to the `IDripModel` interface.&#x20;

For more details on the mechanics of drip models, see [here](/developer-guides/create-a-rewards-manager/reward-pool-drip-models.md).

### Allowed Reward Pools

The `allowedRewardPools` constant defines a limit on the number of reward pools in a single Rewards Manager.


---

# 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://csm-docs.cozy.finance/developer-guides/create-a-rewards-manager/define-a-rewards-manager-configuration.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.
