multiversx_sc/std_impl/
bech32_address_impl.rs

1use multiversx_chain_core::std::Bech32Address;
2
3use crate::{
4    abi::TypeAbiFrom,
5    api::ManagedTypeApi,
6    types::{
7        AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo,
8        TxToSpecified,
9    },
10};
11
12impl<Env> AnnotatedValue<Env, ManagedAddress<Env::Api>> for Bech32Address
13where
14    Env: TxEnv,
15{
16    fn annotation(&self, _env: &Env) -> ManagedBuffer<Env::Api> {
17        self.to_bech32_expr().into()
18    }
19
20    fn to_value(&self, env: &Env) -> ManagedAddress<Env::Api> {
21        self.address.to_value(env)
22    }
23}
24
25impl<Env> TxFrom<Env> for Bech32Address
26where
27    Env: TxEnv,
28{
29    fn resolve_address(&self, env: &Env) -> ManagedAddress<Env::Api> {
30        self.address.resolve_address(env)
31    }
32}
33impl<Env> TxFromSpecified<Env> for Bech32Address where Env: TxEnv {}
34impl<Env> TxTo<Env> for Bech32Address where Env: TxEnv {}
35impl<Env> TxToSpecified<Env> for Bech32Address where Env: TxEnv {}
36
37impl<Env> AnnotatedValue<Env, ManagedAddress<Env::Api>> for &Bech32Address
38where
39    Env: TxEnv,
40{
41    fn annotation(&self, _env: &Env) -> ManagedBuffer<Env::Api> {
42        self.to_bech32_expr().into()
43    }
44
45    fn to_value(&self, env: &Env) -> ManagedAddress<Env::Api> {
46        self.address.to_value(env)
47    }
48}
49
50impl<Env> TxFrom<Env> for &Bech32Address
51where
52    Env: TxEnv,
53{
54    fn resolve_address(&self, env: &Env) -> ManagedAddress<Env::Api> {
55        self.address.resolve_address(env)
56    }
57}
58impl<Env> TxFromSpecified<Env> for &Bech32Address where Env: TxEnv {}
59impl<Env> TxTo<Env> for &Bech32Address where Env: TxEnv {}
60impl<Env> TxToSpecified<Env> for &Bech32Address where Env: TxEnv {}
61
62impl<M> TypeAbiFrom<Bech32Address> for ManagedAddress<M> where M: ManagedTypeApi {}
63impl<M> TypeAbiFrom<&Bech32Address> for ManagedAddress<M> where M: ManagedTypeApi {}