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 Allowed,
13
14 Disallowed,
16}
17
18#[derive(Debug, Eq, PartialEq, PartialOrd, Ord, ScryptoSbor, ManifestSbor, Clone, Copy, Hash)]
19pub enum DefaultDepositRule {
20 Accept,
22
23 Reject,
25
26 AllowExisting,
29}
30
31pub const ACCOUNT_BLUEPRINT: &str = "Account";
32
33define_type_marker!(Some(ACCOUNT_PACKAGE), Account);
34
35pub 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
57pub 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
71pub 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
84pub 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
99pub 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
114pub 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
132pub 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
150pub 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
170pub 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
190pub 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
212pub 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
235pub 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
255pub 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
275pub 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
290pub 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
310pub 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
328pub 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
348pub 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
368pub 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
388pub 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
408pub 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
428pub 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
448pub 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
466pub 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
484pub 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
502pub 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
522pub 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;