# QuestDataTypes

#### PeriodState

```solidity
enum PeriodState {
  ZERO,
  ACTIVE,
  CLOSED,
  DISTRIBUTED
}
```

State of each Period for each Quest

All Periods are `ACTIVE` at creation since the voters from past periods are also accounted for the future period

#### QuestVoteType

```solidity
enum QuestVoteType {
  NORMAL,
  BLACKLIST,
  WHITELIST
}
```

Types of Vote logic for Quests

* `NORMAL`: basic vote logic&#x20;
* `BLACKLIST`: remove the blacklisted voters bias from the gauge biases
* `WHITELIST`: only sum up the whitelisted voters biases

#### QuestRewardsType

```solidity
enum QuestRewardsType {
  FIXED,
  RANGE
}
```

Types of Rewards logic for Quests

* `FIXED`: reward per vote is fixed&#x20;
* `RANGE`: reward per vote is a range between min and max, based on the Quest completion between min objective and max objective

#### QuestCloseType

```solidity
enum QuestCloseType {
  NORMAL,
  ROLLOVER,
  DISTRIBUTE
}
```

Types of logic for undistributed rewards when closing Quest periods

* `NORMAL`: undistributed rewards are available to be withdrawn by the creator&#x20;
* `ROLLOVER`: undistributed rewards are added to the next period, increasing the reward/vote parameter
* `DISTRIBUTE`: undistributed rewards are sent to the gauge for direct distribution
