multiversx_sc_derive/model/
argument.rs1use super::EsdtAttribute;
2
3#[derive(Clone, Debug)]
6pub struct MethodArgument {
7 pub original_pat: syn::Pat,
8 pub pat: syn::Pat,
9 pub ty: syn::Type,
10 pub unprocessed_attributes: Vec<syn::Attribute>,
11 pub metadata: ArgMetadata,
12}
13
14#[derive(Clone, Debug)]
16pub struct ArgMetadata {
17 pub payment: ArgPaymentMetadata,
18 pub callback_call_result: bool,
19 pub event_topic: bool,
20}
21
22impl Default for ArgMetadata {
23 fn default() -> Self {
24 ArgMetadata {
25 payment: ArgPaymentMetadata::NotPayment,
26 callback_call_result: false,
27 event_topic: false,
28 }
29 }
30}
31
32#[derive(Clone, Debug)]
33pub enum ArgPaymentMetadata {
34 NotPayment,
35 PaymentAmount,
36 PaymentToken,
37 PaymentNonce,
38 PaymentMulti,
39}
40
41impl ArgPaymentMetadata {
42 pub fn is_payment_arg(&self) -> bool {
43 matches!(
44 self,
45 ArgPaymentMetadata::PaymentAmount
46 | ArgPaymentMetadata::PaymentToken
47 | ArgPaymentMetadata::PaymentNonce
48 | ArgPaymentMetadata::PaymentMulti
49 )
50 }
51}
52
53impl MethodArgument {
54 pub fn is_endpoint_arg(&self) -> bool {
55 matches!(self.metadata.payment, ArgPaymentMetadata::NotPayment)
56 }
57}
58
59#[derive(Clone, Debug, Default)]
60pub struct TraitProperties {
61 pub only_owner: bool,
62 pub only_admin: bool,
63 pub only_user_account: bool,
64 pub allow_multiple_var_args: bool,
65 pub esdt_attribute: Vec<EsdtAttribute>,
66}