1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use super::ProposalConfig;
use std::collections::VecDeque;

#[derive(Debug, Clone, Default)]
pub struct ChallengeConfig {
    pub(crate) proposals: VecDeque<ProposalConfig>,
    pub(crate) rewards_total: Option<u64>,
    pub(crate) proposers_rewards: Option<u64>,
}

impl ChallengeConfig {
    pub fn proposals(mut self, proposals: Vec<ProposalConfig>) -> Self {
        self.proposals = VecDeque::from(proposals);
        self
    }

    pub fn proposals_len(&self) -> usize {
        self.proposals.len()
    }

    pub fn proposal(mut self, proposal: ProposalConfig) -> Self {
        self.proposals.push_back(proposal);
        self
    }

    pub fn rewards_total(mut self, rewards_total: u64) -> Self {
        self.rewards_total = Some(rewards_total);
        self
    }

    pub fn proposers_rewards(mut self, proposers_rewards: u64) -> Self {
        self.proposers_rewards = Some(proposers_rewards);
        self
    }
}