radix_engine_interface/blueprints/account/
invocations.rs

1use crate::blueprints::component::*;
2use crate::blueprints::resource::*;
3
4use radix_common::math::Decimal;
5use radix_common::prelude::*;
6use sbor::rust::collections::IndexSet;
7use sbor::rust::fmt::Debug;
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, ScryptoSbor, ManifestSbor)]
10pub enum ResourcePreference {
11    /// The resource is on the allow list.
12    Allowed,
13
14    /// The resource is on the deny list.
15    Disallowed,
16}
17
18#[derive(Debug, Eq, PartialEq, PartialOrd, Ord, ScryptoSbor, ManifestSbor, Clone, Copy, Hash)]
19pub enum DefaultDepositRule {
20    /// Allows the deposit of all resources - the deny list is honored in this state.o
21    Accept,
22
23    /// Disallows the deposit of all resources - the allow list is honored in this state.
24    Reject,
25
26    /// Only deposits of existing resources is accepted - both allow and deny lists are honored in
27    /// this mode.
28    AllowExisting,
29}
30
31pub const ACCOUNT_BLUEPRINT: &str = "Account";
32
33define_type_marker!(Some(ACCOUNT_PACKAGE), Account);
34
35//=============
36// Account Create Advanced
37//=============
38
39pub const ACCOUNT_CREATE_ADVANCED_IDENT: &str = "create_advanced";
40
41#[cfg_attr(feature = "fuzzing", derive(::arbitrary::Arbitrary))]
42#[derive(Debug, Clone, Eq, PartialEq, ScryptoSbor)]
43pub struct AccountCreateAdvancedInput {
44    pub owner_role: OwnerRole,
45    pub address_reservation: Option<GlobalAddressReservation>,
46}
47
48#[cfg_attr(feature = "fuzzing", derive(::arbitrary::Arbitrary))]
49#[derive(Debug, Clone, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
50pub struct AccountCreateAdvancedManifestInput {
51    pub owner_role: ManifestOwnerRole,
52    pub address_reservation: Option<ManifestAddressReservation>,
53}
54
55pub type AccountCreateAdvancedOutput = Global<AccountMarker>;
56
57//================
58// Account Create
59//================
60
61pub const ACCOUNT_CREATE_IDENT: &str = "create";
62
63#[cfg_attr(feature = "fuzzing", derive(::arbitrary::Arbitrary))]
64#[derive(Debug, Clone, Eq, PartialEq, ScryptoSbor, ManifestSbor)]
65pub struct AccountCreateInput {}
66
67pub type AccountCreateManifestInput = AccountCreateInput;
68
69pub type AccountCreateOutput = (Global<AccountMarker>, Bucket);
70
71//==================
72// Account Securify
73//==================
74
75pub const ACCOUNT_SECURIFY_IDENT: &str = "securify";
76
77#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestSbor)]
78pub struct AccountSecurifyInput {}
79
80pub type AccountSecurifyManifestInput = AccountSecurifyInput;
81
82pub type AccountSecurifyOutput = Bucket;
83
84//==================
85// Account Lock Fee
86//==================
87
88pub const ACCOUNT_LOCK_FEE_IDENT: &str = "lock_fee";
89
90#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestSbor)]
91pub struct AccountLockFeeInput {
92    pub amount: Decimal,
93}
94
95pub type AccountLockFeeManifestInput = AccountLockFeeInput;
96
97pub type AccountLockFeeOutput = ();
98
99//=============================
100// Account Lock Contingent Fee
101//=============================
102
103pub const ACCOUNT_LOCK_CONTINGENT_FEE_IDENT: &str = "lock_contingent_fee";
104
105#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestSbor)]
106pub struct AccountLockContingentFeeInput {
107    pub amount: Decimal,
108}
109
110pub type AccountLockContingentFeeManifestInput = AccountLockContingentFeeInput;
111
112pub type AccountLockContingentFeeOutput = ();
113
114//=================
115// Account Deposit
116//=================
117
118pub const ACCOUNT_DEPOSIT_IDENT: &str = "deposit";
119
120#[derive(Debug, Eq, PartialEq, ScryptoSbor)]
121pub struct AccountDepositInput {
122    pub bucket: Bucket,
123}
124
125#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
126pub struct AccountDepositManifestInput {
127    pub bucket: ManifestBucket,
128}
129
130pub type AccountDepositOutput = ();
131
132//=======================
133// Account Deposit Batch
134//=======================
135
136pub const ACCOUNT_DEPOSIT_BATCH_IDENT: &str = "deposit_batch";
137
138#[derive(Debug, Eq, PartialEq, ScryptoSbor)]
139pub struct AccountDepositBatchInput {
140    pub buckets: Vec<Bucket>,
141}
142
143#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
144pub struct AccountDepositBatchManifestInput {
145    pub buckets: ManifestBucketBatch,
146}
147
148pub type AccountDepositBatchOutput = ();
149
150//============================
151// Account Withdraw
152//============================
153
154pub const ACCOUNT_WITHDRAW_IDENT: &str = "withdraw";
155
156#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
157pub struct AccountWithdrawInput {
158    pub resource_address: ResourceAddress,
159    pub amount: Decimal,
160}
161
162#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
163pub struct AccountWithdrawManifestInput {
164    pub resource_address: ManifestResourceAddress,
165    pub amount: Decimal,
166}
167
168pub type AccountWithdrawOutput = Bucket;
169
170//=========================
171// Account Withdraw By Ids
172//=========================
173
174pub const ACCOUNT_WITHDRAW_NON_FUNGIBLES_IDENT: &str = "withdraw_non_fungibles";
175
176#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
177pub struct AccountWithdrawNonFungiblesInput {
178    pub resource_address: ResourceAddress,
179    pub ids: IndexSet<NonFungibleLocalId>,
180}
181
182#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
183pub struct AccountWithdrawNonFungiblesManifestInput {
184    pub resource_address: ManifestResourceAddress,
185    pub ids: IndexSet<NonFungibleLocalId>,
186}
187
188pub type AccountWithdrawNonFungiblesOutput = Bucket;
189
190//=====================================
191// Account Withdraw
192//=====================================
193
194pub const ACCOUNT_LOCK_FEE_AND_WITHDRAW_IDENT: &str = "lock_fee_and_withdraw";
195
196#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
197pub struct AccountLockFeeAndWithdrawInput {
198    pub amount_to_lock: Decimal,
199    pub resource_address: ResourceAddress,
200    pub amount: Decimal,
201}
202
203#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
204pub struct AccountLockFeeAndWithdrawManifestInput {
205    pub amount_to_lock: Decimal,
206    pub resource_address: ManifestResourceAddress,
207    pub amount: Decimal,
208}
209
210pub type AccountLockFeeAndWithdrawOutput = Bucket;
211
212//==================================
213// Account Withdraw By Ids And Lock
214//==================================
215
216pub const ACCOUNT_LOCK_FEE_AND_WITHDRAW_NON_FUNGIBLES_IDENT: &str =
217    "lock_fee_and_withdraw_non_fungibles";
218
219#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
220pub struct AccountLockFeeAndWithdrawNonFungiblesInput {
221    pub amount_to_lock: Decimal,
222    pub resource_address: ResourceAddress,
223    pub ids: IndexSet<NonFungibleLocalId>,
224}
225
226#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
227pub struct AccountLockFeeAndWithdrawNonFungiblesManifestInput {
228    pub amount_to_lock: Decimal,
229    pub resource_address: ManifestResourceAddress,
230    pub ids: IndexSet<NonFungibleLocalId>,
231}
232
233pub type AccountLockFeeAndWithdrawNonFungiblesOutput = Bucket;
234
235//================================
236// Account Create Proof By Amount
237//================================
238
239pub const ACCOUNT_CREATE_PROOF_OF_AMOUNT_IDENT: &str = "create_proof_of_amount";
240
241#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
242pub struct AccountCreateProofOfAmountInput {
243    pub resource_address: ResourceAddress,
244    pub amount: Decimal,
245}
246
247#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
248pub struct AccountCreateProofOfAmountManifestInput {
249    pub resource_address: ManifestResourceAddress,
250    pub amount: Decimal,
251}
252
253pub type AccountCreateProofOfAmountOutput = Proof;
254
255//=============================
256// Account Create Proof By Ids
257//=============================
258
259pub const ACCOUNT_CREATE_PROOF_OF_NON_FUNGIBLES_IDENT: &str = "create_proof_of_non_fungibles";
260
261#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
262pub struct AccountCreateProofOfNonFungiblesInput {
263    pub resource_address: ResourceAddress,
264    pub ids: IndexSet<NonFungibleLocalId>,
265}
266
267#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
268pub struct AccountCreateProofOfNonFungiblesManifestInput {
269    pub resource_address: ManifestResourceAddress,
270    pub ids: IndexSet<NonFungibleLocalId>,
271}
272
273pub type AccountCreateProofOfNonFungiblesOutput = Proof;
274
275//=================================
276// Account Transition Deposit Mode
277//=================================
278
279pub const ACCOUNT_SET_DEFAULT_DEPOSIT_RULE_IDENT: &str = "set_default_deposit_rule";
280
281#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestSbor)]
282pub struct AccountSetDefaultDepositRuleInput {
283    pub default: DefaultDepositRule,
284}
285
286pub type AccountSetDefaultDepositRuleManifestInput = AccountSetDefaultDepositRuleInput;
287
288pub type AccountSetDefaultDepositRuleOutput = ();
289
290//=========================
291// Set Resource Preference
292//=========================
293
294pub const ACCOUNT_SET_RESOURCE_PREFERENCE_IDENT: &str = "set_resource_preference";
295
296#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
297pub struct AccountSetResourcePreferenceInput {
298    pub resource_address: ResourceAddress,
299    pub resource_preference: ResourcePreference,
300}
301
302#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
303pub struct AccountSetResourcePreferenceManifestInput {
304    pub resource_address: ManifestResourceAddress,
305    pub resource_preference: ResourcePreference,
306}
307
308pub type AccountSetResourcePreferenceOutput = ();
309
310//============================
311// Remove Resource Preference
312//============================
313
314pub const ACCOUNT_REMOVE_RESOURCE_PREFERENCE_IDENT: &str = "remove_resource_preference";
315
316#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
317pub struct AccountRemoveResourcePreferenceInput {
318    pub resource_address: ResourceAddress,
319}
320
321#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
322pub struct AccountRemoveResourcePreferenceManifestInput {
323    pub resource_address: ManifestResourceAddress,
324}
325
326pub type AccountRemoveResourcePreferenceOutput = ();
327
328//===============================
329// Account Try Deposit Or Refund
330//===============================
331
332pub const ACCOUNT_TRY_DEPOSIT_OR_REFUND_IDENT: &str = "try_deposit_or_refund";
333
334#[derive(Debug, Eq, PartialEq, ScryptoSbor)]
335pub struct AccountTryDepositOrRefundInput {
336    pub bucket: Bucket,
337    pub authorized_depositor_badge: Option<ResourceOrNonFungible>,
338}
339
340#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
341pub struct AccountTryDepositOrRefundManifestInput {
342    pub bucket: ManifestBucket,
343    pub authorized_depositor_badge: Option<ManifestResourceOrNonFungible>,
344}
345
346pub type AccountTryDepositOrRefundOutput = Option<Bucket>;
347
348//=====================================
349// Account Try Deposit Batch Or Refund
350//=====================================
351
352pub const ACCOUNT_TRY_DEPOSIT_BATCH_OR_REFUND_IDENT: &str = "try_deposit_batch_or_refund";
353
354#[derive(Debug, Eq, PartialEq, ScryptoSbor)]
355pub struct AccountTryDepositBatchOrRefundInput {
356    pub buckets: Vec<Bucket>,
357    pub authorized_depositor_badge: Option<ResourceOrNonFungible>,
358}
359
360#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
361pub struct AccountTryDepositBatchOrRefundManifestInput {
362    pub buckets: ManifestBucketBatch,
363    pub authorized_depositor_badge: Option<ManifestResourceOrNonFungible>,
364}
365
366pub type AccountTryDepositBatchOrRefundOutput = Option<Vec<Bucket>>;
367
368//==============================
369// Account Try Deposit Or Abort
370//==============================
371
372pub const ACCOUNT_TRY_DEPOSIT_OR_ABORT_IDENT: &str = "try_deposit_or_abort";
373
374#[derive(Debug, Eq, PartialEq, ScryptoSbor)]
375pub struct AccountTryDepositOrAbortInput {
376    pub bucket: Bucket,
377    pub authorized_depositor_badge: Option<ResourceOrNonFungible>,
378}
379
380#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
381pub struct AccountTryDepositOrAbortManifestInput {
382    pub bucket: ManifestBucket,
383    pub authorized_depositor_badge: Option<ManifestResourceOrNonFungible>,
384}
385
386pub type AccountTryDepositOrAbortOutput = ();
387
388//====================================
389// Account Try Deposit Batch Or Abort
390//====================================
391
392pub const ACCOUNT_TRY_DEPOSIT_BATCH_OR_ABORT_IDENT: &str = "try_deposit_batch_or_abort";
393
394#[derive(Debug, Eq, PartialEq, ScryptoSbor)]
395pub struct AccountTryDepositBatchOrAbortInput {
396    pub buckets: Vec<Bucket>,
397    pub authorized_depositor_badge: Option<ResourceOrNonFungible>,
398}
399
400#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
401pub struct AccountTryDepositBatchOrAbortManifestInput {
402    pub buckets: ManifestBucketBatch,
403    pub authorized_depositor_badge: Option<ManifestResourceOrNonFungible>,
404}
405
406pub type AccountTryDepositBatchOrAbortOutput = ();
407
408//==============
409// Account Burn
410//==============
411
412pub const ACCOUNT_BURN_IDENT: &str = "burn";
413
414#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
415pub struct AccountBurnInput {
416    pub resource_address: ResourceAddress,
417    pub amount: Decimal,
418}
419
420#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
421pub struct AccountBurnManifestInput {
422    pub resource_address: ManifestResourceAddress,
423    pub amount: Decimal,
424}
425
426pub type AccountBurnOutput = ();
427
428//=====================
429// Account Burn By Ids
430//=====================
431
432pub const ACCOUNT_BURN_NON_FUNGIBLES_IDENT: &str = "burn_non_fungibles";
433
434#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
435pub struct AccountBurnNonFungiblesInput {
436    pub resource_address: ResourceAddress,
437    pub ids: IndexSet<NonFungibleLocalId>,
438}
439
440#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
441pub struct AccountBurnNonFungiblesManifestInput {
442    pub resource_address: ManifestResourceAddress,
443    pub ids: IndexSet<NonFungibleLocalId>,
444}
445
446pub type AccountBurnNonFungiblesOutput = ();
447
448//==================================
449// Account Add Authorized Depositor
450//==================================
451
452pub const ACCOUNT_ADD_AUTHORIZED_DEPOSITOR_IDENT: &str = "add_authorized_depositor";
453
454#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
455pub struct AccountAddAuthorizedDepositorInput {
456    pub badge: ResourceOrNonFungible,
457}
458
459#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
460pub struct AccountAddAuthorizedDepositorManifestInput {
461    pub badge: ManifestResourceOrNonFungible,
462}
463
464pub type AccountAddAuthorizedDepositorOutput = ();
465
466//=====================================
467// Account Remove Authorized Depositor
468//=====================================
469
470pub const ACCOUNT_REMOVE_AUTHORIZED_DEPOSITOR_IDENT: &str = "remove_authorized_depositor";
471
472#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
473pub struct AccountRemoveAuthorizedDepositorInput {
474    pub badge: ResourceOrNonFungible,
475}
476
477#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
478pub struct AccountRemoveAuthorizedDepositorManifestInput {
479    pub badge: ManifestResourceOrNonFungible,
480}
481
482pub type AccountRemoveAuthorizedDepositorOutput = ();
483
484//=================
485// Account Balance
486//=================
487
488pub const ACCOUNT_BALANCE_IDENT: &str = "balance";
489
490#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
491pub struct AccountBalanceInput {
492    pub resource_address: ResourceAddress,
493}
494
495#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
496pub struct AccountBalanceManifestInput {
497    pub resource_address: ManifestResourceAddress,
498}
499
500pub type AccountBalanceOutput = Decimal;
501
502//==========================
503// Account Non-Fungible Ids
504//==========================
505
506pub const ACCOUNT_NON_FUNGIBLE_LOCAL_IDS_IDENT: &str = "non_fungible_local_ids";
507
508#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
509pub struct AccountNonFungibleLocalIdsInput {
510    pub resource_address: ResourceAddress,
511    pub limit: u32,
512}
513
514#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
515pub struct AccountNonFungibleLocalIdsManifestInput {
516    pub resource_address: ManifestResourceAddress,
517    pub limit: u32,
518}
519
520pub type AccountNonFungibleLocalIdsOutput = IndexSet<NonFungibleLocalId>;
521
522//==========================
523// Account Has Non-Fungible
524//==========================
525
526pub const ACCOUNT_HAS_NON_FUNGIBLE_IDENT: &str = "has_non_fungible";
527
528#[derive(Debug, Eq, PartialEq, ScryptoSbor, ManifestEncode, ManifestCategorize)]
529pub struct AccountHasNonFungibleInput {
530    pub resource_address: ResourceAddress,
531    pub local_id: NonFungibleLocalId,
532}
533
534#[derive(Debug, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
535pub struct AccountHasNonFungibleManifestInput {
536    pub resource_address: ManifestResourceAddress,
537    pub local_id: NonFungibleLocalId,
538}
539
540pub type AccountHasNonFungibleOutput = bool;