node/transition_frontier/genesis_effectful/
transition_frontier_genesis_effectful_actions.rs

1use std::sync::Arc;
2
3use mina_p2p_messages::v2::{ProverExtendBlockchainInputStableV2, StateHash};
4use openmina_core::ActionEvent;
5use serde::{Deserialize, Serialize};
6
7use crate::transition_frontier::genesis::GenesisConfig;
8
9pub type TransitionFrontierGenesisEffectfulActionWithMeta =
10    redux::ActionWithMeta<TransitionFrontierGenesisEffectfulAction>;
11pub type TransitionFrontierGenesisEffectfulActionWithMetaRef<'a> =
12    redux::ActionWithMeta<&'a TransitionFrontierGenesisEffectfulAction>;
13
14#[derive(derive_more::From, Serialize, Deserialize, Debug, Clone, ActionEvent)]
15#[action_event(level = trace)]
16pub enum TransitionFrontierGenesisEffectfulAction {
17    LedgerLoadInit {
18        config: Arc<GenesisConfig>,
19    },
20    ProveInit {
21        block_hash: StateHash,
22        input: Box<ProverExtendBlockchainInputStableV2>,
23    },
24}
25
26impl redux::EnablingCondition<crate::State> for TransitionFrontierGenesisEffectfulAction {
27    fn is_enabled(&self, _state: &crate::State, _time: redux::Timestamp) -> bool {
28        true
29    }
30}
31
32impl From<TransitionFrontierGenesisEffectfulAction> for crate::Action {
33    fn from(value: TransitionFrontierGenesisEffectfulAction) -> Self {
34        crate::transition_frontier::TransitionFrontierAction::GenesisEffect(value).into()
35    }
36}