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