espresso_types/v0/v0_1/
instance_state.rs1use serde::{Deserialize, Serialize};
2use std::fmt::Debug;
3
4use crate::{v0::utils::Timestamp, v0_99::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 Marketplace { chain_config: ChainConfig },
12 Epoch { chain_config: ChainConfig },
13}
14
15impl UpgradeType {
16 pub fn chain_config(&self) -> Option<ChainConfig> {
19 match self {
20 UpgradeType::Fee { chain_config } => Some(*chain_config),
21 UpgradeType::Marketplace { chain_config } => Some(*chain_config),
22 UpgradeType::Epoch { chain_config } => Some(*chain_config),
23 }
24 }
25}
26
27#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
29pub struct TimeBasedUpgrade {
30 pub start_proposing_time: Timestamp,
32 pub stop_proposing_time: Timestamp,
34 pub start_voting_time: Option<Timestamp>,
36 pub stop_voting_time: Option<Timestamp>,
38}
39
40#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
42pub struct ViewBasedUpgrade {
43 pub start_proposing_view: u64,
45 pub stop_proposing_view: u64,
47 pub start_voting_view: Option<u64>,
49 pub stop_voting_view: Option<u64>,
51}
52
53#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
55#[serde(untagged)]
56pub enum UpgradeMode {
57 Time(TimeBasedUpgrade),
59 View(ViewBasedUpgrade),
61}
62
63#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
65pub struct Upgrade {
66 pub mode: UpgradeMode,
68 pub upgrade_type: UpgradeType,
70}
71
72#[derive(Clone, Copy, Debug)]
73pub struct NoStorage;