radix_transactions/model/v1/
flash_transaction.rs1use 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}