radix_transactions/model/v1/
flash_transaction.rs

1use super::*;
2use crate::internal_prelude::*;
3
4#[derive(Debug, Clone, PartialEq, Eq, Sbor)]
5pub struct FlashTransactionV1 {
6    pub name: String,
7    pub state_updates: StateUpdates,
8}
9
10define_raw_transaction_payload!(RawFlashTransaction, TransactionPayloadKind::Other);
11
12pub struct PreparedFlashTransactionV1 {
13    pub name: String,
14    pub state_updates: StateUpdates,
15    pub summary: Summary,
16}
17
18impl TransactionPayload for FlashTransactionV1 {
19    type Prepared = PreparedFlashTransactionV1;
20    type Raw = RawFlashTransaction;
21}
22
23impl_has_summary!(PreparedFlashTransactionV1);
24
25#[allow(deprecated)]
26impl TransactionPreparableFromValue for PreparedFlashTransactionV1 {
27    fn prepare_from_value(decoder: &mut TransactionDecoder) -> Result<Self, PrepareError> {
28        let ((name, state_updates), summary) = ConcatenatedDigest::prepare_transaction_payload::<(
29            SummarizedRawFullValue<String>,
30            SummarizedRawFullValue<StateUpdates>,
31        )>(
32            decoder,
33            TransactionDiscriminator::V1Flash,
34            ExpectedHeaderKind::TupleWithValueKind,
35        )?;
36        Ok(Self {
37            name: name.inner,
38            state_updates: state_updates.inner,
39            summary,
40        })
41    }
42}
43
44#[allow(deprecated)]
45impl PreparedTransaction for PreparedFlashTransactionV1 {
46    type Raw = RawFlashTransaction;
47
48    fn prepare_from_transaction_enum(
49        decoder: &mut TransactionDecoder,
50    ) -> Result<Self, PrepareError> {
51        let ((name, state_updates), summary) = ConcatenatedDigest::prepare_transaction_payload::<(
52            SummarizedRawFullValue<String>,
53            SummarizedRawFullValue<StateUpdates>,
54        )>(
55            decoder,
56            TransactionDiscriminator::V1Flash,
57            ExpectedHeaderKind::EnumWithValueKind,
58        )?;
59        Ok(Self {
60            name: name.inner,
61            state_updates: state_updates.inner,
62            summary,
63        })
64    }
65}
66
67impl HasFlashTransactionHash for PreparedFlashTransactionV1 {
68    fn flash_transaction_hash(&self) -> FlashTransactionHash {
69        FlashTransactionHash(self.summary.hash)
70    }
71}