#[macro_export]
macro_rules! call_contract {
($interface:ident ( $contract_id:expr ) :: $func_name:ident ( $($func_args:expr),* ) $(:: payments ( $($payment_args:expr),+ ))?) => {
$(
$(
let error = wevm::v0::bindings::call_payment($payment_args.0.as_ptr(), $payment_args.0.len(), $payment_args.1);
error!(error);
)+
)?
let error = $interface::$func_name($contract_id, $($func_args),* );
error!(error);
};
( ($contract_id:expr) :: call ($func_name:expr, $params:expr ) $(:: payments ( $($payment_args:expr),+ ))?) => {
$(
$(
let error = wevm::v0::bindings::call_payment($payment_args.0.as_ptr(), $payment_args.0.len(), $payment_args.1);
error!(error);
)+
)?
let error = wevm::v0::bindings::call_contract_params(
$contract_id.as_ptr(),
$contract_id.len(),
$func_name.as_ptr(),
$func_name.len(),
$params.as_ptr(),
$params.len(),
);
error!(error);
};
}