radix_native_sdk/runtime/
local_auth_zone.rs1use crate::resource::NativeAuthZone;
2use radix_common::data::scrypto::model::*;
3use radix_common::math::Decimal;
4use radix_engine_interface::api::*;
5use radix_engine_interface::blueprints::resource::*;
6use radix_engine_interface::types::*;
7use sbor::rust::prelude::*;
8
9pub struct LocalAuthZone {}
10
11impl LocalAuthZone {
12 pub fn drain<Y: SystemApi<E>, E: SystemApiError>(api: &mut Y) -> Result<Vec<Proof>, E> {
13 let auth_zone = api.actor_get_node_id(ACTOR_REF_AUTH_ZONE)?;
14 AuthZoneRef(auth_zone).drain(api)
15 }
16
17 pub fn drop_proofs<Y: SystemApi<E>, E: SystemApiError>(api: &mut Y) -> Result<(), E> {
18 let auth_zone = api.actor_get_node_id(ACTOR_REF_AUTH_ZONE)?;
19 AuthZoneRef(auth_zone).drop_proofs(api)
20 }
21
22 pub fn drop_regular_proofs<Y: SystemApi<E>, E: SystemApiError>(api: &mut Y) -> Result<(), E> {
23 let auth_zone = api.actor_get_node_id(ACTOR_REF_AUTH_ZONE)?;
24 AuthZoneRef(auth_zone).drop_regular_proofs(api)
25 }
26
27 pub fn drop_signature_proofs<Y: SystemApi<E>, E: SystemApiError>(api: &mut Y) -> Result<(), E> {
28 let auth_zone = api.actor_get_node_id(ACTOR_REF_AUTH_ZONE)?;
29 AuthZoneRef(auth_zone).drop_signature_proofs(api)
30 }
31
32 pub fn pop<Y: SystemApi<E>, E: SystemApiError>(api: &mut Y) -> Result<Option<Proof>, E> {
33 let auth_zone = api.actor_get_node_id(ACTOR_REF_AUTH_ZONE)?;
34 AuthZoneRef(auth_zone).pop(api)
35 }
36
37 pub fn create_proof_of_amount<Y: SystemApi<E>, E: SystemApiError>(
38 amount: Decimal,
39 resource_address: ResourceAddress,
40 api: &mut Y,
41 ) -> Result<Proof, E> {
42 let auth_zone = api.actor_get_node_id(ACTOR_REF_AUTH_ZONE)?;
43 AuthZoneRef(auth_zone).create_proof_of_amount(amount, resource_address, api)
44 }
45
46 pub fn create_proof_of_non_fungibles<Y: SystemApi<E>, E: SystemApiError>(
47 ids: &IndexSet<NonFungibleLocalId>,
48 resource_address: ResourceAddress,
49 api: &mut Y,
50 ) -> Result<Proof, E> {
51 let auth_zone = api.actor_get_node_id(ACTOR_REF_AUTH_ZONE)?;
52 AuthZoneRef(auth_zone).create_proof_of_non_fungibles(ids, resource_address, api)
53 }
54
55 pub fn create_proof_of_all<Y: SystemApi<E>, E: SystemApiError>(
56 resource_address: ResourceAddress,
57 api: &mut Y,
58 ) -> Result<Proof, E> {
59 let auth_zone = api.actor_get_node_id(ACTOR_REF_AUTH_ZONE)?;
60 AuthZoneRef(auth_zone).create_proof_of_all(resource_address, api)
61 }
62
63 pub fn push<Y: SystemApi<E>, E: SystemApiError, P: Into<Proof>>(
64 proof: P,
65 api: &mut Y,
66 ) -> Result<(), E> {
67 let proof: Proof = proof.into();
68
69 let auth_zone = api.actor_get_node_id(ACTOR_REF_AUTH_ZONE)?;
70 AuthZoneRef(auth_zone).push(proof, api)
71 }
72}