drive/state_transition_action/shielded/shield/
transformer.rs

1use crate::state_transition_action::shielded::shield::v0::ShieldTransitionActionV0;
2use crate::state_transition_action::shielded::shield::ShieldTransitionAction;
3use dpp::address_funds::PlatformAddress;
4use dpp::fee::Credits;
5use dpp::prelude::{AddressNonce, ConsensusValidationResult};
6use dpp::state_transition::shield_transition::ShieldTransition;
7use std::collections::BTreeMap;
8
9impl ShieldTransitionAction {
10    /// Transforms the state transition into an action
11    pub fn try_from_transition(
12        value: &ShieldTransition,
13        inputs_with_remaining_balance: BTreeMap<PlatformAddress, (AddressNonce, Credits)>,
14        shield_amount: Credits,
15        current_total_balance: Credits,
16    ) -> ConsensusValidationResult<Self> {
17        match value {
18            ShieldTransition::V0(v0) => {
19                let result = ShieldTransitionActionV0::try_from_transition(
20                    v0,
21                    inputs_with_remaining_balance,
22                    shield_amount,
23                    current_total_balance,
24                );
25                result.map(|action| action.into())
26            }
27        }
28    }
29}