multiversx_sc/types/interaction/
contract_call_legacy.rs1mod async_call;
2mod async_call_promises;
3mod contract_call_convert;
4mod contract_call_exec;
5mod contract_call_no_payment;
6mod contract_call_trait;
7mod contract_call_with_any_payment;
8mod contract_call_with_egld;
9mod contract_call_with_egld_or_single_esdt;
10mod contract_call_with_multi_esdt;
11mod contract_deploy;
12
13pub use async_call::AsyncCall;
14pub use async_call_promises::AsyncCallPromises;
15pub use contract_call_no_payment::ContractCallNoPayment;
16pub use contract_call_trait::{ContractCall, ContractCallBase};
17pub use contract_call_with_any_payment::ContractCallWithAnyPayment;
18pub use contract_call_with_egld::ContractCallWithEgld;
19pub use contract_call_with_egld_or_single_esdt::ContractCallWithEgldOrSingleEsdt;
20pub use contract_call_with_multi_esdt::ContractCallWithMultiEsdt;
21pub use contract_deploy::{ContractDeploy, new_contract_deploy};
22use multiversx_sc_codec::TopEncodeMulti;
23
24pub(crate) const UNSPECIFIED_GAS_LIMIT: u64 = u64::MAX;
28
29use crate::{
30 api::CallTypeApi,
31 types::{
32 DeployCall, FunctionCall, ManagedOption, OriginalResultMarker, Tx, TxPayment,
33 TxPaymentEgldOnly, TxScEnv, TxTo, TxToSpecified,
34 },
35};
36
37impl<Api, To, Payment, OriginalResult> ContractCallBase<Api>
39 for Tx<
40 TxScEnv<Api>,
41 (),
42 To,
43 Payment,
44 (),
45 FunctionCall<Api>,
46 OriginalResultMarker<OriginalResult>,
47 >
48where
49 Api: CallTypeApi + 'static,
50 To: TxToSpecified<TxScEnv<Api>>,
51 Payment: TxPayment<TxScEnv<Api>>,
52 OriginalResult: TopEncodeMulti,
53{
54 type OriginalResult = OriginalResult;
55
56 fn into_normalized(self) -> ContractCallWithEgld<Api, OriginalResult> {
57 self.payment.with_normalized(
58 &self.env,
59 &self.from,
60 self.to,
61 self.data,
62 |norm_to, norm_egld, norm_fc| ContractCallWithEgld {
63 basic: ContractCallNoPayment {
64 _phantom: core::marker::PhantomData,
65 to: norm_to.clone(),
66 function_call: norm_fc.clone(),
67 explicit_gas_limit: UNSPECIFIED_GAS_LIMIT,
68 _return_type: core::marker::PhantomData,
69 },
70 egld_payment: norm_egld.clone(),
71 },
72 )
73 }
74}
75
76impl<Api, To, Payment, OriginalResult>
77 From<
78 Tx<
79 TxScEnv<Api>,
80 (),
81 To,
82 Payment,
83 (),
84 DeployCall<TxScEnv<Api>, ()>,
85 OriginalResultMarker<OriginalResult>,
86 >,
87 > for ContractDeploy<Api, OriginalResult>
88where
89 Api: CallTypeApi + 'static,
90 To: TxTo<TxScEnv<Api>>,
91 Payment: TxPaymentEgldOnly<TxScEnv<Api>>,
92 OriginalResult: TopEncodeMulti,
93{
94 fn from(
95 value: Tx<
96 TxScEnv<Api>,
97 (),
98 To,
99 Payment,
100 (),
101 DeployCall<TxScEnv<Api>, ()>,
102 OriginalResultMarker<OriginalResult>,
103 >,
104 ) -> Self {
105 ContractDeploy {
106 _phantom: core::marker::PhantomData,
107 to: ManagedOption::none(),
108 egld_payment: value.payment.into_egld_payment(&value.env),
109 explicit_gas_limit: UNSPECIFIED_GAS_LIMIT,
110 arg_buffer: value.data.arg_buffer,
111 _return_type: core::marker::PhantomData,
112 }
113 }
114}