radix_native_sdk/runtime/
local_auth_zone.rs

1use 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}