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}
15
16impl UpgradeType {
17 pub fn chain_config(&self) -> Option<ChainConfig> {
20 match self {
21 UpgradeType::Fee { chain_config } => Some(*chain_config),
22 UpgradeType::Epoch { chain_config } => Some(*chain_config),
23 UpgradeType::DrbAndHeader { chain_config } => Some(*chain_config),
24 UpgradeType::Da { chain_config } => Some(*chain_config),
25 }
26 }
27}
28
29#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
31pub struct TimeBasedUpgrade {
32 pub start_proposing_time: Timestamp,
34 pub stop_proposing_time: Timestamp,
36 pub start_voting_time: Option<Timestamp>,
38 pub stop_voting_time: Option<Timestamp>,
40}
41
42#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
44pub struct ViewBasedUpgrade {
45 pub start_proposing_view: u64,
47 pub stop_proposing_view: u64,
49 pub start_voting_view: Option<u64>,
51 pub stop_voting_view: Option<u64>,
53}
54
55#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
57#[serde(untagged)]
58pub enum UpgradeMode {
59 Time(TimeBasedUpgrade),
61 View(ViewBasedUpgrade),
63}
64
65#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
67pub struct Upgrade {
68 pub mode: UpgradeMode,
70 pub upgrade_type: UpgradeType,
72}
73
74#[derive(Clone, Copy, Debug)]
75pub struct NoStorage;