espresso_types/v0/v0_1/
instance_state.rs1use std::fmt::Debug;
2
3use serde::{Deserialize, Serialize};
4
5use crate::{v0::utils::Timestamp, v0_3::ChainConfig};
6
7#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
9#[serde(rename_all = "snake_case")]
10pub enum UpgradeType {
11 Fee { chain_config: ChainConfig },
12 Epoch { chain_config: ChainConfig },
13 DrbAndHeader { chain_config: ChainConfig },
14 Da { chain_config: ChainConfig },
15 EpochReward { chain_config: ChainConfig },
16}
17
18impl UpgradeType {
19 pub fn chain_config(&self) -> Option<ChainConfig> {
22 match self {
23 UpgradeType::Fee { chain_config } => Some(*chain_config),
24 UpgradeType::Epoch { chain_config } => Some(*chain_config),
25 UpgradeType::DrbAndHeader { chain_config } => Some(*chain_config),
26 UpgradeType::Da { chain_config } => Some(*chain_config),
27 UpgradeType::EpochReward { chain_config } => Some(*chain_config),
28 }
29 }
30}
31
32#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
34pub struct TimeBasedUpgrade {
35 pub start_proposing_time: Timestamp,
37 pub stop_proposing_time: Timestamp,
39 pub start_voting_time: Option<Timestamp>,
41 pub stop_voting_time: Option<Timestamp>,
43}
44
45#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
47pub struct ViewBasedUpgrade {
48 pub start_proposing_view: u64,
50 pub stop_proposing_view: u64,
52 pub start_voting_view: Option<u64>,
54 pub stop_voting_view: Option<u64>,
56}
57
58#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
60#[serde(untagged)]
61pub enum UpgradeMode {
62 Time(TimeBasedUpgrade),
64 View(ViewBasedUpgrade),
66}
67
68#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
70pub struct Upgrade {
71 pub mode: UpgradeMode,
73 pub upgrade_type: UpgradeType,
75}
76
77#[derive(Clone, Copy, Debug)]
78pub struct NoStorage;