multiversx_sc_modules/token_merge/
custom_merged_token_attributes.rs

1multiversx_sc::imports!();
2
3use core::marker::PhantomData;
4
5use multiversx_sc::codec::Empty;
6
7use super::merged_token_instances::MergedTokenInstances;
8
9pub trait AllMergeScTraits:
10    super::merged_token_setup::MergedTokenSetupModule
11    + crate::default_issue_callbacks::DefaultIssueCallbacksModule
12    + crate::pause::PauseModule
13{
14}
15
16impl<T> AllMergeScTraits for T where
17    T: super::merged_token_setup::MergedTokenSetupModule
18        + crate::default_issue_callbacks::DefaultIssueCallbacksModule
19        + crate::pause::PauseModule
20{
21}
22
23pub trait MergedTokenAttributesCreator {
24    type ScType: AllMergeScTraits;
25    type AttributesType: TopEncode + TopDecode;
26
27    fn get_merged_token_attributes(
28        &self,
29        sc: &Self::ScType,
30        merged_token_id: &TokenIdentifier<<Self::ScType as ContractBase>::Api>,
31        merged_token_raw_attributes: &MergedTokenInstances<<Self::ScType as ContractBase>::Api>,
32    ) -> Self::AttributesType;
33}
34
35pub struct DefaultMergedAttributesWrapper<Sc: AllMergeScTraits> {
36    _phantom: PhantomData<Sc>,
37}
38
39impl<Sc> DefaultMergedAttributesWrapper<Sc>
40where
41    Sc: AllMergeScTraits,
42{
43    #[inline]
44    pub fn new() -> Self {
45        Self {
46            _phantom: PhantomData,
47        }
48    }
49}
50
51impl<Sc> Default for DefaultMergedAttributesWrapper<Sc>
52where
53    Sc: AllMergeScTraits,
54{
55    fn default() -> Self {
56        Self::new()
57    }
58}
59
60impl<Sc> MergedTokenAttributesCreator for DefaultMergedAttributesWrapper<Sc>
61where
62    Sc: AllMergeScTraits,
63{
64    type ScType = Sc;
65    type AttributesType = Empty;
66
67    fn get_merged_token_attributes(
68        &self,
69        _sc: &Self::ScType,
70        _merged_token_id: &TokenIdentifier<<Self::ScType as ContractBase>::Api>,
71        _merged_token_raw_attributes: &MergedTokenInstances<<Self::ScType as ContractBase>::Api>,
72    ) -> Self::AttributesType {
73        Empty
74    }
75}