radix-transactions 1.3.1

Various Radix transaction models and the manifest compiler/decompiler, from the Radix DLT project.
Documentation
use super::*;
use crate::internal_prelude::*;

#[derive(Debug, Clone, PartialEq, Eq, Sbor)]
pub struct FlashTransactionV1 {
    pub name: String,
    pub state_updates: StateUpdates,
}

define_raw_transaction_payload!(RawFlashTransaction, TransactionPayloadKind::Other);

pub struct PreparedFlashTransactionV1 {
    pub name: String,
    pub state_updates: StateUpdates,
    pub summary: Summary,
}

impl TransactionPayload for FlashTransactionV1 {
    type Prepared = PreparedFlashTransactionV1;
    type Raw = RawFlashTransaction;
}

impl_has_summary!(PreparedFlashTransactionV1);

#[allow(deprecated)]
impl TransactionPreparableFromValue for PreparedFlashTransactionV1 {
    fn prepare_from_value(decoder: &mut TransactionDecoder) -> Result<Self, PrepareError> {
        let ((name, state_updates), summary) = ConcatenatedDigest::prepare_transaction_payload::<(
            SummarizedRawFullValue<String>,
            SummarizedRawFullValue<StateUpdates>,
        )>(
            decoder,
            TransactionDiscriminator::V1Flash,
            ExpectedHeaderKind::TupleWithValueKind,
        )?;
        Ok(Self {
            name: name.inner,
            state_updates: state_updates.inner,
            summary,
        })
    }
}

#[allow(deprecated)]
impl PreparedTransaction for PreparedFlashTransactionV1 {
    type Raw = RawFlashTransaction;

    fn prepare_from_transaction_enum(
        decoder: &mut TransactionDecoder,
    ) -> Result<Self, PrepareError> {
        let ((name, state_updates), summary) = ConcatenatedDigest::prepare_transaction_payload::<(
            SummarizedRawFullValue<String>,
            SummarizedRawFullValue<StateUpdates>,
        )>(
            decoder,
            TransactionDiscriminator::V1Flash,
            ExpectedHeaderKind::EnumWithValueKind,
        )?;
        Ok(Self {
            name: name.inner,
            state_updates: state_updates.inner,
            summary,
        })
    }
}

impl HasFlashTransactionHash for PreparedFlashTransactionV1 {
    fn flash_transaction_hash(&self) -> FlashTransactionHash {
        FlashTransactionHash(self.summary.hash)
    }
}