radix_transactions/model/v2/subintent_v2.rs
1use super::*;
2use crate::internal_prelude::*;
3
4//=================================================================================
5// NOTE:
6// See versioned.rs for tests and a demonstration for the calculation of hashes etc
7//=================================================================================
8
9/// A Subintent is a distinct concept to a [`TransactionIntentV2`].
10///
11/// * A subintent has to have a parent in a transaction.
12/// * A subintent is only "committed" on failure.
13/// * A subintent can't pay fees.
14///
15/// If you are looking to construct a subintent, use a [`PartialTransactionV2Builder`],
16/// which builds a [`SignedPartialTransactionV2`].
17#[derive(Debug, Clone, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
18pub struct SubintentV2 {
19 pub intent_core: IntentCoreV2,
20}
21
22define_transaction_payload!(
23 SubintentV2,
24 RawSubintent,
25 PreparedSubintentV2 {
26 intent_core: PreparedIntentCoreV2,
27 },
28 TransactionDiscriminator::V2Subintent,
29);
30
31impl HasSubintentHash for PreparedSubintentV2 {
32 fn subintent_hash(&self) -> SubintentHash {
33 SubintentHash::from_hash(self.summary.hash)
34 }
35}