espresso_types/v0/v0_1/
instance_state.rs1use serde::{Deserialize, Serialize};
2use std::fmt::Debug;
3
4use crate::{v0::utils::Timestamp, v0_3::ChainConfig};
5
6#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
8#[serde(rename_all = "snake_case")]
9pub enum UpgradeType {
10 Fee { chain_config: ChainConfig },
11 Epoch { chain_config: ChainConfig },
12 DrbAndHeader { chain_config: ChainConfig },
13 Da { chain_config: ChainConfig },
14 EpochReward { chain_config: ChainConfig },
15}
16
17impl UpgradeType {
18 pub fn chain_config(&self) -> Option<ChainConfig> {
21 match self {
22 UpgradeType::Fee { chain_config } => Some(*chain_config),
23 UpgradeType::Epoch { chain_config } => Some(*chain_config),
24 UpgradeType::DrbAndHeader { chain_config } => Some(*chain_config),
25 UpgradeType::Da { chain_config } => Some(*chain_config),
26 UpgradeType::EpochReward { chain_config } => Some(*chain_config),
27 }
28 }
29}
30
31#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
33pub struct TimeBasedUpgrade {
34 pub start_proposing_time: Timestamp,
36 pub stop_proposing_time: Timestamp,
38 pub start_voting_time: Option<Timestamp>,
40 pub stop_voting_time: Option<Timestamp>,
42}
43
44#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
46pub struct ViewBasedUpgrade {
47 pub start_proposing_view: u64,
49 pub stop_proposing_view: u64,
51 pub start_voting_view: Option<u64>,
53 pub stop_voting_view: Option<u64>,
55}
56
57#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
59#[serde(untagged)]
60pub enum UpgradeMode {
61 Time(TimeBasedUpgrade),
63 View(ViewBasedUpgrade),
65}
66
67#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
69pub struct Upgrade {
70 pub mode: UpgradeMode,
72 pub upgrade_type: UpgradeType,
74}
75
76#[derive(Clone, Copy, Debug)]
77pub struct NoStorage;