1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
use super::big_uint_api_mock::*;
use crate::{TxContext, TxPanic};
use elrond_wasm::api::CallValueApi;
use elrond_wasm::err_msg;
use elrond_wasm::types::{EsdtTokenType, TokenIdentifier};

impl CallValueApi<RustBigUint> for TxContext {
	fn check_not_payable(&self) {
		if self.egld_value() > 0 {
			std::panic::panic_any(TxPanic {
				status: 10,
				message: err_msg::NON_PAYABLE_FUNC_EGLD.to_vec(),
			});
		}
		if self.esdt_value() > 0 {
			std::panic::panic_any(TxPanic {
				status: 10,
				message: err_msg::NON_PAYABLE_FUNC_ESDT.to_vec(),
			});
		}
	}

	#[inline]
	fn egld_value(&self) -> RustBigUint {
		self.tx_input_box.call_value.clone().into()
	}

	#[inline]
	fn esdt_value(&self) -> RustBigUint {
		self.tx_input_box.esdt_value.clone().into()
	}

	#[inline]
	fn token(&self) -> TokenIdentifier {
		TokenIdentifier::from(self.tx_input_box.esdt_token_identifier.as_slice())
	}

	#[inline]
	fn esdt_token_nonce(&self) -> u64 {
		// TODO: Add ESDT nonce in mock
		0u64
	}

	#[inline]
	fn esdt_token_type(&self) -> EsdtTokenType {
		// TODO: Add ESDT token type in mock
		EsdtTokenType::Fungible
	}
}