radix_transactions/model/v2/
instruction_v2.rs1use crate::internal_prelude::*;
2
3impl<T: SborEnumVariantFor<InstructionV2, ManifestCustomValueKind>> From<T> for InstructionV2 {
4 fn from(value: T) -> Self {
5 value.into_enum()
6 }
7}
8
9impl ManifestInstructionSet for InstructionV2 {
10 fn map_ref<M: InstructionRefMapper>(&self, mapper: M) -> M::Output<'_> {
11 match self {
12 InstructionV2::TakeFromWorktop(x) => mapper.apply(x),
13 InstructionV2::TakeNonFungiblesFromWorktop(x) => mapper.apply(x),
14 InstructionV2::TakeAllFromWorktop(x) => mapper.apply(x),
15 InstructionV2::ReturnToWorktop(x) => mapper.apply(x),
16 InstructionV2::BurnResource(x) => mapper.apply(x),
17 InstructionV2::AssertWorktopContainsAny(x) => mapper.apply(x),
18 InstructionV2::AssertWorktopContains(x) => mapper.apply(x),
19 InstructionV2::AssertWorktopContainsNonFungibles(x) => mapper.apply(x),
20 InstructionV2::AssertWorktopResourcesOnly(x) => mapper.apply(x),
21 InstructionV2::AssertWorktopResourcesInclude(x) => mapper.apply(x),
22 InstructionV2::AssertNextCallReturnsOnly(x) => mapper.apply(x),
23 InstructionV2::AssertNextCallReturnsInclude(x) => mapper.apply(x),
24 InstructionV2::AssertBucketContents(x) => mapper.apply(x),
25 InstructionV2::CreateProofFromBucketOfAmount(x) => mapper.apply(x),
26 InstructionV2::CreateProofFromBucketOfNonFungibles(x) => mapper.apply(x),
27 InstructionV2::CreateProofFromBucketOfAll(x) => mapper.apply(x),
28 InstructionV2::CreateProofFromAuthZoneOfAmount(x) => mapper.apply(x),
29 InstructionV2::CreateProofFromAuthZoneOfNonFungibles(x) => mapper.apply(x),
30 InstructionV2::CreateProofFromAuthZoneOfAll(x) => mapper.apply(x),
31 InstructionV2::CloneProof(x) => mapper.apply(x),
32 InstructionV2::DropProof(x) => mapper.apply(x),
33 InstructionV2::PushToAuthZone(x) => mapper.apply(x),
34 InstructionV2::PopFromAuthZone(x) => mapper.apply(x),
35 InstructionV2::DropAuthZoneProofs(x) => mapper.apply(x),
36 InstructionV2::DropAuthZoneRegularProofs(x) => mapper.apply(x),
37 InstructionV2::DropAuthZoneSignatureProofs(x) => mapper.apply(x),
38 InstructionV2::DropNamedProofs(x) => mapper.apply(x),
39 InstructionV2::DropAllProofs(x) => mapper.apply(x),
40 InstructionV2::CallFunction(x) => mapper.apply(x),
41 InstructionV2::CallMethod(x) => mapper.apply(x),
42 InstructionV2::CallRoyaltyMethod(x) => mapper.apply(x),
43 InstructionV2::CallMetadataMethod(x) => mapper.apply(x),
44 InstructionV2::CallRoleAssignmentMethod(x) => mapper.apply(x),
45 InstructionV2::CallDirectVaultMethod(x) => mapper.apply(x),
46 InstructionV2::AllocateGlobalAddress(x) => mapper.apply(x),
47 InstructionV2::YieldToParent(x) => mapper.apply(x),
48 InstructionV2::YieldToChild(x) => mapper.apply(x),
49 InstructionV2::VerifyParent(x) => mapper.apply(x),
50 }
51 }
52
53 fn map_self<M: OwnedInstructionMapper>(self, mapper: M) -> M::Output {
54 match self {
55 InstructionV2::TakeFromWorktop(x) => mapper.apply(x),
56 InstructionV2::TakeNonFungiblesFromWorktop(x) => mapper.apply(x),
57 InstructionV2::TakeAllFromWorktop(x) => mapper.apply(x),
58 InstructionV2::ReturnToWorktop(x) => mapper.apply(x),
59 InstructionV2::BurnResource(x) => mapper.apply(x),
60 InstructionV2::AssertWorktopContainsAny(x) => mapper.apply(x),
61 InstructionV2::AssertWorktopContains(x) => mapper.apply(x),
62 InstructionV2::AssertWorktopContainsNonFungibles(x) => mapper.apply(x),
63 InstructionV2::AssertWorktopResourcesOnly(x) => mapper.apply(x),
64 InstructionV2::AssertWorktopResourcesInclude(x) => mapper.apply(x),
65 InstructionV2::AssertNextCallReturnsOnly(x) => mapper.apply(x),
66 InstructionV2::AssertNextCallReturnsInclude(x) => mapper.apply(x),
67 InstructionV2::AssertBucketContents(x) => mapper.apply(x),
68 InstructionV2::CreateProofFromBucketOfAmount(x) => mapper.apply(x),
69 InstructionV2::CreateProofFromBucketOfNonFungibles(x) => mapper.apply(x),
70 InstructionV2::CreateProofFromBucketOfAll(x) => mapper.apply(x),
71 InstructionV2::CreateProofFromAuthZoneOfAmount(x) => mapper.apply(x),
72 InstructionV2::CreateProofFromAuthZoneOfNonFungibles(x) => mapper.apply(x),
73 InstructionV2::CreateProofFromAuthZoneOfAll(x) => mapper.apply(x),
74 InstructionV2::CloneProof(x) => mapper.apply(x),
75 InstructionV2::DropProof(x) => mapper.apply(x),
76 InstructionV2::PushToAuthZone(x) => mapper.apply(x),
77 InstructionV2::PopFromAuthZone(x) => mapper.apply(x),
78 InstructionV2::DropAuthZoneProofs(x) => mapper.apply(x),
79 InstructionV2::DropAuthZoneRegularProofs(x) => mapper.apply(x),
80 InstructionV2::DropAuthZoneSignatureProofs(x) => mapper.apply(x),
81 InstructionV2::DropNamedProofs(x) => mapper.apply(x),
82 InstructionV2::DropAllProofs(x) => mapper.apply(x),
83 InstructionV2::CallFunction(x) => mapper.apply(x),
84 InstructionV2::CallMethod(x) => mapper.apply(x),
85 InstructionV2::CallRoyaltyMethod(x) => mapper.apply(x),
86 InstructionV2::CallMetadataMethod(x) => mapper.apply(x),
87 InstructionV2::CallRoleAssignmentMethod(x) => mapper.apply(x),
88 InstructionV2::CallDirectVaultMethod(x) => mapper.apply(x),
89 InstructionV2::AllocateGlobalAddress(x) => mapper.apply(x),
90 InstructionV2::YieldToParent(x) => mapper.apply(x),
91 InstructionV2::YieldToChild(x) => mapper.apply(x),
92 InstructionV2::VerifyParent(x) => mapper.apply(x),
93 }
94 }
95}
96
97#[derive(Debug, Clone, PartialEq, Eq, ManifestSbor, ScryptoDescribe, ScryptoSborAssertion)]
98#[sbor(impl_variant_traits)]
99#[sbor_assert(
100 backwards_compatible(
101 v1 = "FILE:../v1/instruction_v1_schema.txt",
102 v2 = "FILE:instruction_v2_schema.bin",
103 ),
104 settings(
105 comparison_between_versions = "EXPR: |s| s.allow_all_name_changes()",
106 comparison_between_current_and_latest = "EXPR: |s| s",
107 )
108)]
109pub enum InstructionV2 {
110 #[sbor(discriminator(TakeFromWorktop::ID))]
114 TakeFromWorktop(#[sbor(flatten)] TakeFromWorktop),
115
116 #[sbor(discriminator(TakeNonFungiblesFromWorktop::ID))]
117 TakeNonFungiblesFromWorktop(#[sbor(flatten)] TakeNonFungiblesFromWorktop),
118
119 #[sbor(discriminator(TakeAllFromWorktop::ID))]
120 TakeAllFromWorktop(#[sbor(flatten)] TakeAllFromWorktop),
121
122 #[sbor(discriminator(ReturnToWorktop::ID))]
123 ReturnToWorktop(#[sbor(flatten)] ReturnToWorktop),
124
125 #[sbor(discriminator(BurnResource::ID))]
126 BurnResource(#[sbor(flatten)] BurnResource),
127
128 #[sbor(discriminator(AssertWorktopContainsAny::ID))]
132 AssertWorktopContainsAny(#[sbor(flatten)] AssertWorktopContainsAny),
133
134 #[sbor(discriminator(AssertWorktopContains::ID))]
135 AssertWorktopContains(#[sbor(flatten)] AssertWorktopContains),
136
137 #[sbor(discriminator(AssertWorktopContainsNonFungibles::ID))]
138 AssertWorktopContainsNonFungibles(#[sbor(flatten)] AssertWorktopContainsNonFungibles),
139
140 #[sbor(discriminator(AssertWorktopResourcesOnly::ID))]
141 AssertWorktopResourcesOnly(#[sbor(flatten)] AssertWorktopResourcesOnly),
142
143 #[sbor(discriminator(AssertWorktopResourcesInclude::ID))]
144 AssertWorktopResourcesInclude(#[sbor(flatten)] AssertWorktopResourcesInclude),
145
146 #[sbor(discriminator(AssertNextCallReturnsOnly::ID))]
147 AssertNextCallReturnsOnly(#[sbor(flatten)] AssertNextCallReturnsOnly),
148
149 #[sbor(discriminator(AssertNextCallReturnsInclude::ID))]
150 AssertNextCallReturnsInclude(#[sbor(flatten)] AssertNextCallReturnsInclude),
151
152 #[sbor(discriminator(AssertBucketContents::ID))]
153 AssertBucketContents(#[sbor(flatten)] AssertBucketContents),
154
155 #[sbor(discriminator(CreateProofFromBucketOfAmount::ID))]
159 CreateProofFromBucketOfAmount(#[sbor(flatten)] CreateProofFromBucketOfAmount),
160
161 #[sbor(discriminator(CreateProofFromBucketOfNonFungibles::ID))]
162 CreateProofFromBucketOfNonFungibles(#[sbor(flatten)] CreateProofFromBucketOfNonFungibles),
163
164 #[sbor(discriminator(CreateProofFromBucketOfAll::ID))]
165 CreateProofFromBucketOfAll(#[sbor(flatten)] CreateProofFromBucketOfAll),
166
167 #[sbor(discriminator(CreateProofFromAuthZoneOfAmount::ID))]
168 CreateProofFromAuthZoneOfAmount(#[sbor(flatten)] CreateProofFromAuthZoneOfAmount),
169
170 #[sbor(discriminator(CreateProofFromAuthZoneOfNonFungibles::ID))]
171 CreateProofFromAuthZoneOfNonFungibles(#[sbor(flatten)] CreateProofFromAuthZoneOfNonFungibles),
172
173 #[sbor(discriminator(CreateProofFromAuthZoneOfAll::ID))]
174 CreateProofFromAuthZoneOfAll(#[sbor(flatten)] CreateProofFromAuthZoneOfAll),
175
176 #[sbor(discriminator(CloneProof::ID))]
177 CloneProof(#[sbor(flatten)] CloneProof),
178
179 #[sbor(discriminator(DropProof::ID))]
180 DropProof(#[sbor(flatten)] DropProof),
181
182 #[sbor(discriminator(PushToAuthZone::ID))]
183 PushToAuthZone(#[sbor(flatten)] PushToAuthZone),
184
185 #[sbor(discriminator(PopFromAuthZone::ID))]
186 PopFromAuthZone(#[sbor(flatten)] PopFromAuthZone),
187
188 #[sbor(discriminator(DropAuthZoneProofs::ID))]
189 DropAuthZoneProofs(#[sbor(flatten)] DropAuthZoneProofs),
190
191 #[sbor(discriminator(DropAuthZoneRegularProofs::ID))]
192 DropAuthZoneRegularProofs(#[sbor(flatten)] DropAuthZoneRegularProofs),
193
194 #[sbor(discriminator(DropAuthZoneSignatureProofs::ID))]
195 DropAuthZoneSignatureProofs(#[sbor(flatten)] DropAuthZoneSignatureProofs),
196
197 #[sbor(discriminator(DropNamedProofs::ID))]
198 DropNamedProofs(#[sbor(flatten)] DropNamedProofs),
199
200 #[sbor(discriminator(DropAllProofs::ID))]
201 DropAllProofs(#[sbor(flatten)] DropAllProofs),
202
203 #[sbor(discriminator(CallFunction::ID))]
207 CallFunction(#[sbor(flatten)] CallFunction),
208
209 #[sbor(discriminator(CallMethod::ID))]
210 CallMethod(#[sbor(flatten)] CallMethod),
211
212 #[sbor(discriminator(CallRoyaltyMethod::ID))]
213 CallRoyaltyMethod(#[sbor(flatten)] CallRoyaltyMethod),
214
215 #[sbor(discriminator(CallMetadataMethod::ID))]
216 CallMetadataMethod(#[sbor(flatten)] CallMetadataMethod),
217
218 #[sbor(discriminator(CallRoleAssignmentMethod::ID))]
219 CallRoleAssignmentMethod(#[sbor(flatten)] CallRoleAssignmentMethod),
220
221 #[sbor(discriminator(CallDirectVaultMethod::ID))]
222 CallDirectVaultMethod(#[sbor(flatten)] CallDirectVaultMethod),
223
224 #[sbor(discriminator(AllocateGlobalAddress::ID))]
228 AllocateGlobalAddress(#[sbor(flatten)] AllocateGlobalAddress),
229
230 #[sbor(discriminator(YieldToParent::ID))]
234 YieldToParent(#[sbor(flatten)] YieldToParent),
235
236 #[sbor(discriminator(YieldToChild::ID))]
237 YieldToChild(#[sbor(flatten)] YieldToChild),
238
239 #[sbor(discriminator(VerifyParent::ID))]
240 VerifyParent(#[sbor(flatten)] VerifyParent),
241}