> For the complete documentation index, see [llms.txt](https://csm-docs.cozy.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://csm-docs.cozy.finance/developer-guides/create-a-rewards-manager/define-a-rewards-manager-configuration.md).

# 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.
