multiversx_sc/types/interaction/
tx_proxy.rs1use multiversx_sc_codec::TopEncodeMulti;
2
3use crate::abi::TypeAbiFrom;
4
5use super::{
6 DeployCall, FunctionCall, OriginalResultMarker, Tx, TxEnv, TxFrom, TxGas, TxTo, UpgradeCall,
7};
8
9pub trait TxProxyTrait<Env, From, To, Gas>
11where
12 Env: TxEnv,
13 From: TxFrom<Env>,
14 To: TxTo<Env>,
15 Gas: TxGas<Env>,
16{
17 type TxProxyMethods;
18
19 fn proxy_methods(self, tx: Tx<Env, From, To, (), Gas, (), ()>) -> Self::TxProxyMethods;
21}
22
23pub type TxProxyDeploy<Env, From, Gas, Original> =
27 Tx<Env, From, (), (), Gas, DeployCall<Env, ()>, OriginalResultMarker<Original>>;
28
29pub type TxTypedDeploy<Env, From, Payment, Gas, Original> =
31 Tx<Env, From, (), Payment, Gas, DeployCall<Env, ()>, OriginalResultMarker<Original>>;
32
33pub type TxProxyCall<Env, From, To, Gas, Original> =
37 Tx<Env, From, To, (), Gas, FunctionCall<<Env as TxEnv>::Api>, OriginalResultMarker<Original>>;
38
39pub type TxTypedCall<Env, From, To, Payment, Gas, Original> = Tx<
41 Env,
42 From,
43 To,
44 Payment,
45 Gas,
46 FunctionCall<<Env as TxEnv>::Api>,
47 OriginalResultMarker<Original>,
48>;
49
50pub type TxProxyUpgrade<Env, From, To, Gas, Original> =
54 Tx<Env, From, To, (), Gas, UpgradeCall<Env, ()>, OriginalResultMarker<Original>>;
55
56pub type TxTypedUpgrade<Env, From, To, Payment, Gas, Original> =
58 Tx<Env, From, To, Payment, Gas, UpgradeCall<Env, ()>, OriginalResultMarker<Original>>;
59
60pub trait ProxyArg<O>: TopEncodeMulti {}
64
65impl<O, T> ProxyArg<O> for T
66where
67 O: TypeAbiFrom<T>,
68 T: TopEncodeMulti,
69{
70}