1use std::{cell::RefCell, ffi::c_void};
8
9use crate::{MemLength, MemPtr, VMHooks, VMHooksEarlyExit, VMHooksLegacy};
10
11pub trait VMHooksSetEarlyExit: VMHooks {
13 fn set_early_exit(&self, early_exit: VMHooksEarlyExit);
14}
15
16#[derive(Debug)]
20pub struct VMHooksLegacyAdapter<VH: VMHooksSetEarlyExit> {
21 inner_cell: RefCell<VH>,
22}
23
24impl<VH: VMHooksSetEarlyExit> VMHooksLegacyAdapter<VH> {
25 pub fn new(inner: VH) -> Self {
26 VMHooksLegacyAdapter {
27 inner_cell: RefCell::new(inner),
28 }
29 }
30
31 fn adapt_vm_hooks<F, R>(&self, f: F) -> R
32 where
33 R: Default,
34 F: FnOnce(&mut dyn VMHooks) -> Result<R, VMHooksEarlyExit>,
35 {
36 let mut vm_hooks = self.inner_cell.borrow_mut();
37 let result = f(&mut *vm_hooks);
38 result.unwrap_or_else(|early_exit| {
39 vm_hooks.set_early_exit(early_exit);
40 R::default()
41 })
42 }
43}
44
45#[rustfmt::skip]
46impl<VH: VMHooksSetEarlyExit> VMHooksLegacy for VMHooksLegacyAdapter<VH> {
47 fn set_vm_hooks_ptr(&mut self, _vm_hooks_ptr: *mut c_void) {
48 }
49
50 fn get_gas_left(&self) -> i64 {
51 self.adapt_vm_hooks(|inner| VMHooks::get_gas_left(inner))
52 }
53
54 fn get_sc_address(&self, result_offset: MemPtr) {
55 self.adapt_vm_hooks(|inner| VMHooks::get_sc_address(inner, result_offset))
56 }
57
58 fn get_owner_address(&self, result_offset: MemPtr) {
59 self.adapt_vm_hooks(|inner| VMHooks::get_owner_address(inner, result_offset))
60 }
61
62 fn get_shard_of_address(&self, address_offset: MemPtr) -> i32 {
63 self.adapt_vm_hooks(|inner| VMHooks::get_shard_of_address(inner, address_offset))
64 }
65
66 fn is_smart_contract(&self, address_offset: MemPtr) -> i32 {
67 self.adapt_vm_hooks(|inner| VMHooks::is_smart_contract(inner, address_offset))
68 }
69
70 fn signal_error(&self, message_offset: MemPtr, message_length: MemLength) {
71 self.adapt_vm_hooks(|inner| VMHooks::signal_error(inner, message_offset, message_length))
72 }
73
74 fn get_external_balance(&self, address_offset: MemPtr, result_offset: MemPtr) {
75 self.adapt_vm_hooks(|inner| VMHooks::get_external_balance(inner, address_offset, result_offset))
76 }
77
78 fn get_block_hash(&self, nonce: i64, result_offset: MemPtr) -> i32 {
79 self.adapt_vm_hooks(|inner| VMHooks::get_block_hash(inner, nonce, result_offset))
80 }
81
82 fn get_dcdt_balance(&self, address_offset: MemPtr, token_id_offset: MemPtr, token_id_len: MemLength, nonce: i64, result_offset: MemPtr) -> i32 {
83 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_balance(inner, address_offset, token_id_offset, token_id_len, nonce, result_offset))
84 }
85
86 fn get_dcdt_nft_name_length(&self, address_offset: MemPtr, token_id_offset: MemPtr, token_id_len: MemLength, nonce: i64) -> i32 {
87 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_nft_name_length(inner, address_offset, token_id_offset, token_id_len, nonce))
88 }
89
90 fn get_dcdt_nft_attribute_length(&self, address_offset: MemPtr, token_id_offset: MemPtr, token_id_len: MemLength, nonce: i64) -> i32 {
91 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_nft_attribute_length(inner, address_offset, token_id_offset, token_id_len, nonce))
92 }
93
94 fn get_dcdt_nft_uri_length(&self, address_offset: MemPtr, token_id_offset: MemPtr, token_id_len: MemLength, nonce: i64) -> i32 {
95 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_nft_uri_length(inner, address_offset, token_id_offset, token_id_len, nonce))
96 }
97
98 fn get_dcdt_token_data(&self, address_offset: MemPtr, token_id_offset: MemPtr, token_id_len: MemLength, nonce: i64, value_handle: i32, properties_offset: MemPtr, hash_offset: MemPtr, name_offset: MemPtr, attributes_offset: MemPtr, creator_offset: MemPtr, royalties_handle: i32, uris_offset: MemPtr) -> i32 {
99 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_token_data(inner, address_offset, token_id_offset, token_id_len, nonce, value_handle, properties_offset, hash_offset, name_offset, attributes_offset, creator_offset, royalties_handle, uris_offset))
100 }
101
102 fn get_dcdt_local_roles(&self, token_id_handle: i32) -> i64 {
103 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_local_roles(inner, token_id_handle))
104 }
105
106 fn validate_token_identifier(&self, token_id_handle: i32) -> i32 {
107 self.adapt_vm_hooks(|inner| VMHooks::validate_token_identifier(inner, token_id_handle))
108 }
109
110 fn transfer_value(&self, dest_offset: MemPtr, value_offset: MemPtr, data_offset: MemPtr, length: MemLength) -> i32 {
111 self.adapt_vm_hooks(|inner| VMHooks::transfer_value(inner, dest_offset, value_offset, data_offset, length))
112 }
113
114 fn transfer_value_execute(&self, dest_offset: MemPtr, value_offset: MemPtr, gas_limit: i64, function_offset: MemPtr, function_length: MemLength, num_arguments: i32, arguments_length_offset: MemPtr, data_offset: MemPtr) -> i32 {
115 self.adapt_vm_hooks(|inner| VMHooks::transfer_value_execute(inner, dest_offset, value_offset, gas_limit, function_offset, function_length, num_arguments, arguments_length_offset, data_offset))
116 }
117
118 fn transfer_dcdt_execute(&self, dest_offset: MemPtr, token_id_offset: MemPtr, token_id_len: MemLength, value_offset: MemPtr, gas_limit: i64, function_offset: MemPtr, function_length: MemLength, num_arguments: i32, arguments_length_offset: MemPtr, data_offset: MemPtr) -> i32 {
119 self.adapt_vm_hooks(|inner| VMHooks::transfer_dcdt_execute(inner, dest_offset, token_id_offset, token_id_len, value_offset, gas_limit, function_offset, function_length, num_arguments, arguments_length_offset, data_offset))
120 }
121
122 fn transfer_dcdt_nft_execute(&self, dest_offset: MemPtr, token_id_offset: MemPtr, token_id_len: MemLength, value_offset: MemPtr, nonce: i64, gas_limit: i64, function_offset: MemPtr, function_length: MemLength, num_arguments: i32, arguments_length_offset: MemPtr, data_offset: MemPtr) -> i32 {
123 self.adapt_vm_hooks(|inner| VMHooks::transfer_dcdt_nft_execute(inner, dest_offset, token_id_offset, token_id_len, value_offset, nonce, gas_limit, function_offset, function_length, num_arguments, arguments_length_offset, data_offset))
124 }
125
126 fn multi_transfer_dcdt_nft_execute(&self, dest_offset: MemPtr, num_token_transfers: i32, token_transfers_args_length_offset: MemPtr, token_transfer_data_offset: MemPtr, gas_limit: i64, function_offset: MemPtr, function_length: MemLength, num_arguments: i32, arguments_length_offset: MemPtr, data_offset: MemPtr) -> i32 {
127 self.adapt_vm_hooks(|inner| VMHooks::multi_transfer_dcdt_nft_execute(inner, dest_offset, num_token_transfers, token_transfers_args_length_offset, token_transfer_data_offset, gas_limit, function_offset, function_length, num_arguments, arguments_length_offset, data_offset))
128 }
129
130 fn create_async_call(&self, dest_offset: MemPtr, value_offset: MemPtr, data_offset: MemPtr, data_length: MemLength, success_offset: MemPtr, success_length: MemLength, error_offset: MemPtr, error_length: MemLength, gas: i64, extra_gas_for_callback: i64) -> i32 {
131 self.adapt_vm_hooks(|inner| VMHooks::create_async_call(inner, dest_offset, value_offset, data_offset, data_length, success_offset, success_length, error_offset, error_length, gas, extra_gas_for_callback))
132 }
133
134 fn set_async_context_callback(&self, callback: MemPtr, callback_length: MemLength, data: MemPtr, data_length: MemLength, gas: i64) -> i32 {
135 self.adapt_vm_hooks(|inner| VMHooks::set_async_context_callback(inner, callback, callback_length, data, data_length, gas))
136 }
137
138 fn upgrade_contract(&self, dest_offset: MemPtr, gas_limit: i64, value_offset: MemPtr, code_offset: MemPtr, code_metadata_offset: MemPtr, length: MemLength, num_arguments: i32, arguments_length_offset: MemPtr, data_offset: MemPtr) {
139 self.adapt_vm_hooks(|inner| VMHooks::upgrade_contract(inner, dest_offset, gas_limit, value_offset, code_offset, code_metadata_offset, length, num_arguments, arguments_length_offset, data_offset))
140 }
141
142 fn upgrade_from_source_contract(&self, dest_offset: MemPtr, gas_limit: i64, value_offset: MemPtr, source_contract_address_offset: MemPtr, code_metadata_offset: MemPtr, num_arguments: i32, arguments_length_offset: MemPtr, data_offset: MemPtr) {
143 self.adapt_vm_hooks(|inner| VMHooks::upgrade_from_source_contract(inner, dest_offset, gas_limit, value_offset, source_contract_address_offset, code_metadata_offset, num_arguments, arguments_length_offset, data_offset))
144 }
145
146 fn delete_contract(&self, dest_offset: MemPtr, gas_limit: i64, num_arguments: i32, arguments_length_offset: MemPtr, data_offset: MemPtr) {
147 self.adapt_vm_hooks(|inner| VMHooks::delete_contract(inner, dest_offset, gas_limit, num_arguments, arguments_length_offset, data_offset))
148 }
149
150 fn async_call(&self, dest_offset: MemPtr, value_offset: MemPtr, data_offset: MemPtr, length: MemLength) {
151 self.adapt_vm_hooks(|inner| VMHooks::async_call(inner, dest_offset, value_offset, data_offset, length))
152 }
153
154 fn get_argument_length(&self, id: i32) -> i32 {
155 self.adapt_vm_hooks(|inner| VMHooks::get_argument_length(inner, id))
156 }
157
158 fn get_argument(&self, id: i32, arg_offset: MemPtr) -> i32 {
159 self.adapt_vm_hooks(|inner| VMHooks::get_argument(inner, id, arg_offset))
160 }
161
162 fn get_function(&self, function_offset: MemPtr) -> i32 {
163 self.adapt_vm_hooks(|inner| VMHooks::get_function(inner, function_offset))
164 }
165
166 fn get_num_arguments(&self) -> i32 {
167 self.adapt_vm_hooks(|inner| VMHooks::get_num_arguments(inner))
168 }
169
170 fn storage_store(&self, key_offset: MemPtr, key_length: MemLength, data_offset: MemPtr, data_length: MemLength) -> i32 {
171 self.adapt_vm_hooks(|inner| VMHooks::storage_store(inner, key_offset, key_length, data_offset, data_length))
172 }
173
174 fn storage_load_length(&self, key_offset: MemPtr, key_length: MemLength) -> i32 {
175 self.adapt_vm_hooks(|inner| VMHooks::storage_load_length(inner, key_offset, key_length))
176 }
177
178 fn storage_load_from_address(&self, address_offset: MemPtr, key_offset: MemPtr, key_length: MemLength, data_offset: MemPtr) -> i32 {
179 self.adapt_vm_hooks(|inner| VMHooks::storage_load_from_address(inner, address_offset, key_offset, key_length, data_offset))
180 }
181
182 fn storage_load(&self, key_offset: MemPtr, key_length: MemLength, data_offset: MemPtr) -> i32 {
183 self.adapt_vm_hooks(|inner| VMHooks::storage_load(inner, key_offset, key_length, data_offset))
184 }
185
186 fn set_storage_lock(&self, key_offset: MemPtr, key_length: MemLength, lock_timestamp: i64) -> i32 {
187 self.adapt_vm_hooks(|inner| VMHooks::set_storage_lock(inner, key_offset, key_length, lock_timestamp))
188 }
189
190 fn get_storage_lock(&self, key_offset: MemPtr, key_length: MemLength) -> i64 {
191 self.adapt_vm_hooks(|inner| VMHooks::get_storage_lock(inner, key_offset, key_length))
192 }
193
194 fn is_storage_locked(&self, key_offset: MemPtr, key_length: MemLength) -> i32 {
195 self.adapt_vm_hooks(|inner| VMHooks::is_storage_locked(inner, key_offset, key_length))
196 }
197
198 fn clear_storage_lock(&self, key_offset: MemPtr, key_length: MemLength) -> i32 {
199 self.adapt_vm_hooks(|inner| VMHooks::clear_storage_lock(inner, key_offset, key_length))
200 }
201
202 fn get_caller(&self, result_offset: MemPtr) {
203 self.adapt_vm_hooks(|inner| VMHooks::get_caller(inner, result_offset))
204 }
205
206 fn check_no_payment(&self) {
207 self.adapt_vm_hooks(|inner| VMHooks::check_no_payment(inner))
208 }
209
210 fn get_call_value(&self, result_offset: MemPtr) -> i32 {
211 self.adapt_vm_hooks(|inner| VMHooks::get_call_value(inner, result_offset))
212 }
213
214 fn get_dcdt_value(&self, result_offset: MemPtr) -> i32 {
215 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_value(inner, result_offset))
216 }
217
218 fn get_dcdt_value_by_index(&self, result_offset: MemPtr, index: i32) -> i32 {
219 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_value_by_index(inner, result_offset, index))
220 }
221
222 fn get_dcdt_token_name(&self, result_offset: MemPtr) -> i32 {
223 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_token_name(inner, result_offset))
224 }
225
226 fn get_dcdt_token_name_by_index(&self, result_offset: MemPtr, index: i32) -> i32 {
227 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_token_name_by_index(inner, result_offset, index))
228 }
229
230 fn get_dcdt_token_nonce(&self) -> i64 {
231 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_token_nonce(inner))
232 }
233
234 fn get_dcdt_token_nonce_by_index(&self, index: i32) -> i64 {
235 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_token_nonce_by_index(inner, index))
236 }
237
238 fn get_current_dcdt_nft_nonce(&self, address_offset: MemPtr, token_id_offset: MemPtr, token_id_len: MemLength) -> i64 {
239 self.adapt_vm_hooks(|inner| VMHooks::get_current_dcdt_nft_nonce(inner, address_offset, token_id_offset, token_id_len))
240 }
241
242 fn get_dcdt_token_type(&self) -> i32 {
243 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_token_type(inner))
244 }
245
246 fn get_dcdt_token_type_by_index(&self, index: i32) -> i32 {
247 self.adapt_vm_hooks(|inner| VMHooks::get_dcdt_token_type_by_index(inner, index))
248 }
249
250 fn get_num_dcdt_transfers(&self) -> i32 {
251 self.adapt_vm_hooks(|inner| VMHooks::get_num_dcdt_transfers(inner))
252 }
253
254 fn get_call_value_token_name(&self, call_value_offset: MemPtr, token_name_offset: MemPtr) -> i32 {
255 self.adapt_vm_hooks(|inner| VMHooks::get_call_value_token_name(inner, call_value_offset, token_name_offset))
256 }
257
258 fn get_call_value_token_name_by_index(&self, call_value_offset: MemPtr, token_name_offset: MemPtr, index: i32) -> i32 {
259 self.adapt_vm_hooks(|inner| VMHooks::get_call_value_token_name_by_index(inner, call_value_offset, token_name_offset, index))
260 }
261
262 fn is_reserved_function_name(&self, name_handle: i32) -> i32 {
263 self.adapt_vm_hooks(|inner| VMHooks::is_reserved_function_name(inner, name_handle))
264 }
265
266 fn write_log(&self, data_pointer: MemPtr, data_length: MemLength, topic_ptr: MemPtr, num_topics: i32) {
267 self.adapt_vm_hooks(|inner| VMHooks::write_log(inner, data_pointer, data_length, topic_ptr, num_topics))
268 }
269
270 fn write_event_log(&self, num_topics: i32, topic_lengths_offset: MemPtr, topic_offset: MemPtr, data_offset: MemPtr, data_length: MemLength) {
271 self.adapt_vm_hooks(|inner| VMHooks::write_event_log(inner, num_topics, topic_lengths_offset, topic_offset, data_offset, data_length))
272 }
273
274 fn get_block_timestamp(&self) -> i64 {
275 self.adapt_vm_hooks(|inner| VMHooks::get_block_timestamp(inner))
276 }
277
278 fn get_block_nonce(&self) -> i64 {
279 self.adapt_vm_hooks(|inner| VMHooks::get_block_nonce(inner))
280 }
281
282 fn get_block_round(&self) -> i64 {
283 self.adapt_vm_hooks(|inner| VMHooks::get_block_round(inner))
284 }
285
286 fn get_block_epoch(&self) -> i64 {
287 self.adapt_vm_hooks(|inner| VMHooks::get_block_epoch(inner))
288 }
289
290 fn get_block_random_seed(&self, pointer: MemPtr) {
291 self.adapt_vm_hooks(|inner| VMHooks::get_block_random_seed(inner, pointer))
292 }
293
294 fn get_state_root_hash(&self, pointer: MemPtr) {
295 self.adapt_vm_hooks(|inner| VMHooks::get_state_root_hash(inner, pointer))
296 }
297
298 fn get_prev_block_timestamp(&self) -> i64 {
299 self.adapt_vm_hooks(|inner| VMHooks::get_prev_block_timestamp(inner))
300 }
301
302 fn get_prev_block_nonce(&self) -> i64 {
303 self.adapt_vm_hooks(|inner| VMHooks::get_prev_block_nonce(inner))
304 }
305
306 fn get_prev_block_round(&self) -> i64 {
307 self.adapt_vm_hooks(|inner| VMHooks::get_prev_block_round(inner))
308 }
309
310 fn get_prev_block_epoch(&self) -> i64 {
311 self.adapt_vm_hooks(|inner| VMHooks::get_prev_block_epoch(inner))
312 }
313
314 fn get_prev_block_random_seed(&self, pointer: MemPtr) {
315 self.adapt_vm_hooks(|inner| VMHooks::get_prev_block_random_seed(inner, pointer))
316 }
317
318 fn finish(&self, pointer: MemPtr, length: MemLength) {
319 self.adapt_vm_hooks(|inner| VMHooks::finish(inner, pointer, length))
320 }
321
322 fn execute_on_same_context(&self, gas_limit: i64, address_offset: MemPtr, value_offset: MemPtr, function_offset: MemPtr, function_length: MemLength, num_arguments: i32, arguments_length_offset: MemPtr, data_offset: MemPtr) -> i32 {
323 self.adapt_vm_hooks(|inner| VMHooks::execute_on_same_context(inner, gas_limit, address_offset, value_offset, function_offset, function_length, num_arguments, arguments_length_offset, data_offset))
324 }
325
326 fn execute_on_dest_context(&self, gas_limit: i64, address_offset: MemPtr, value_offset: MemPtr, function_offset: MemPtr, function_length: MemLength, num_arguments: i32, arguments_length_offset: MemPtr, data_offset: MemPtr) -> i32 {
327 self.adapt_vm_hooks(|inner| VMHooks::execute_on_dest_context(inner, gas_limit, address_offset, value_offset, function_offset, function_length, num_arguments, arguments_length_offset, data_offset))
328 }
329
330 fn execute_read_only(&self, gas_limit: i64, address_offset: MemPtr, function_offset: MemPtr, function_length: MemLength, num_arguments: i32, arguments_length_offset: MemPtr, data_offset: MemPtr) -> i32 {
331 self.adapt_vm_hooks(|inner| VMHooks::execute_read_only(inner, gas_limit, address_offset, function_offset, function_length, num_arguments, arguments_length_offset, data_offset))
332 }
333
334 fn create_contract(&self, gas_limit: i64, value_offset: MemPtr, code_offset: MemPtr, code_metadata_offset: MemPtr, length: MemLength, result_offset: MemPtr, num_arguments: i32, arguments_length_offset: MemPtr, data_offset: MemPtr) -> i32 {
335 self.adapt_vm_hooks(|inner| VMHooks::create_contract(inner, gas_limit, value_offset, code_offset, code_metadata_offset, length, result_offset, num_arguments, arguments_length_offset, data_offset))
336 }
337
338 fn deploy_from_source_contract(&self, gas_limit: i64, value_offset: MemPtr, source_contract_address_offset: MemPtr, code_metadata_offset: MemPtr, result_address_offset: MemPtr, num_arguments: i32, arguments_length_offset: MemPtr, data_offset: MemPtr) -> i32 {
339 self.adapt_vm_hooks(|inner| VMHooks::deploy_from_source_contract(inner, gas_limit, value_offset, source_contract_address_offset, code_metadata_offset, result_address_offset, num_arguments, arguments_length_offset, data_offset))
340 }
341
342 fn get_num_return_data(&self) -> i32 {
343 self.adapt_vm_hooks(|inner| VMHooks::get_num_return_data(inner))
344 }
345
346 fn get_return_data_size(&self, result_id: i32) -> i32 {
347 self.adapt_vm_hooks(|inner| VMHooks::get_return_data_size(inner, result_id))
348 }
349
350 fn get_return_data(&self, result_id: i32, data_offset: MemPtr) -> i32 {
351 self.adapt_vm_hooks(|inner| VMHooks::get_return_data(inner, result_id, data_offset))
352 }
353
354 fn clean_return_data(&self) {
355 self.adapt_vm_hooks(|inner| VMHooks::clean_return_data(inner))
356 }
357
358 fn delete_from_return_data(&self, result_id: i32) {
359 self.adapt_vm_hooks(|inner| VMHooks::delete_from_return_data(inner, result_id))
360 }
361
362 fn get_original_tx_hash(&self, data_offset: MemPtr) {
363 self.adapt_vm_hooks(|inner| VMHooks::get_original_tx_hash(inner, data_offset))
364 }
365
366 fn get_current_tx_hash(&self, data_offset: MemPtr) {
367 self.adapt_vm_hooks(|inner| VMHooks::get_current_tx_hash(inner, data_offset))
368 }
369
370 fn get_prev_tx_hash(&self, data_offset: MemPtr) {
371 self.adapt_vm_hooks(|inner| VMHooks::get_prev_tx_hash(inner, data_offset))
372 }
373
374 fn managed_sc_address(&self, destination_handle: i32) {
375 self.adapt_vm_hooks(|inner| VMHooks::managed_sc_address(inner, destination_handle))
376 }
377
378 fn managed_owner_address(&self, destination_handle: i32) {
379 self.adapt_vm_hooks(|inner| VMHooks::managed_owner_address(inner, destination_handle))
380 }
381
382 fn managed_caller(&self, destination_handle: i32) {
383 self.adapt_vm_hooks(|inner| VMHooks::managed_caller(inner, destination_handle))
384 }
385
386 fn managed_get_original_caller_addr(&self, destination_handle: i32) {
387 self.adapt_vm_hooks(|inner| VMHooks::managed_get_original_caller_addr(inner, destination_handle))
388 }
389
390 fn managed_get_relayer_addr(&self, destination_handle: i32) {
391 self.adapt_vm_hooks(|inner| VMHooks::managed_get_relayer_addr(inner, destination_handle))
392 }
393
394 fn managed_signal_error(&self, err_handle: i32) {
395 self.adapt_vm_hooks(|inner| VMHooks::managed_signal_error(inner, err_handle))
396 }
397
398 fn managed_write_log(&self, topics_handle: i32, data_handle: i32) {
399 self.adapt_vm_hooks(|inner| VMHooks::managed_write_log(inner, topics_handle, data_handle))
400 }
401
402 fn managed_get_original_tx_hash(&self, result_handle: i32) {
403 self.adapt_vm_hooks(|inner| VMHooks::managed_get_original_tx_hash(inner, result_handle))
404 }
405
406 fn managed_get_state_root_hash(&self, result_handle: i32) {
407 self.adapt_vm_hooks(|inner| VMHooks::managed_get_state_root_hash(inner, result_handle))
408 }
409
410 fn managed_get_block_random_seed(&self, result_handle: i32) {
411 self.adapt_vm_hooks(|inner| VMHooks::managed_get_block_random_seed(inner, result_handle))
412 }
413
414 fn managed_get_prev_block_random_seed(&self, result_handle: i32) {
415 self.adapt_vm_hooks(|inner| VMHooks::managed_get_prev_block_random_seed(inner, result_handle))
416 }
417
418 fn managed_get_return_data(&self, result_id: i32, result_handle: i32) {
419 self.adapt_vm_hooks(|inner| VMHooks::managed_get_return_data(inner, result_id, result_handle))
420 }
421
422 fn managed_get_multi_dcdt_call_value(&self, multi_call_value_handle: i32) {
423 self.adapt_vm_hooks(|inner| VMHooks::managed_get_multi_dcdt_call_value(inner, multi_call_value_handle))
424 }
425
426 fn managed_get_back_transfers(&self, dcdt_transfers_value_handle: i32, rewa_value_handle: i32) {
427 self.adapt_vm_hooks(|inner| VMHooks::managed_get_back_transfers(inner, dcdt_transfers_value_handle, rewa_value_handle))
428 }
429
430 fn managed_get_dcdt_balance(&self, address_handle: i32, token_id_handle: i32, nonce: i64, value_handle: i32) {
431 self.adapt_vm_hooks(|inner| VMHooks::managed_get_dcdt_balance(inner, address_handle, token_id_handle, nonce, value_handle))
432 }
433
434 fn managed_get_dcdt_token_data(&self, address_handle: i32, token_id_handle: i32, nonce: i64, value_handle: i32, properties_handle: i32, hash_handle: i32, name_handle: i32, attributes_handle: i32, creator_handle: i32, royalties_handle: i32, uris_handle: i32) {
435 self.adapt_vm_hooks(|inner| VMHooks::managed_get_dcdt_token_data(inner, address_handle, token_id_handle, nonce, value_handle, properties_handle, hash_handle, name_handle, attributes_handle, creator_handle, royalties_handle, uris_handle))
436 }
437
438 fn managed_async_call(&self, dest_handle: i32, value_handle: i32, function_handle: i32, arguments_handle: i32) {
439 self.adapt_vm_hooks(|inner| VMHooks::managed_async_call(inner, dest_handle, value_handle, function_handle, arguments_handle))
440 }
441
442 fn managed_create_async_call(&self, dest_handle: i32, value_handle: i32, function_handle: i32, arguments_handle: i32, success_offset: MemPtr, success_length: MemLength, error_offset: MemPtr, error_length: MemLength, gas: i64, extra_gas_for_callback: i64, callback_closure_handle: i32) -> i32 {
443 self.adapt_vm_hooks(|inner| VMHooks::managed_create_async_call(inner, dest_handle, value_handle, function_handle, arguments_handle, success_offset, success_length, error_offset, error_length, gas, extra_gas_for_callback, callback_closure_handle))
444 }
445
446 fn managed_get_callback_closure(&self, callback_closure_handle: i32) {
447 self.adapt_vm_hooks(|inner| VMHooks::managed_get_callback_closure(inner, callback_closure_handle))
448 }
449
450 fn managed_upgrade_from_source_contract(&self, dest_handle: i32, gas: i64, value_handle: i32, address_handle: i32, code_metadata_handle: i32, arguments_handle: i32, result_handle: i32) {
451 self.adapt_vm_hooks(|inner| VMHooks::managed_upgrade_from_source_contract(inner, dest_handle, gas, value_handle, address_handle, code_metadata_handle, arguments_handle, result_handle))
452 }
453
454 fn managed_upgrade_contract(&self, dest_handle: i32, gas: i64, value_handle: i32, code_handle: i32, code_metadata_handle: i32, arguments_handle: i32, result_handle: i32) {
455 self.adapt_vm_hooks(|inner| VMHooks::managed_upgrade_contract(inner, dest_handle, gas, value_handle, code_handle, code_metadata_handle, arguments_handle, result_handle))
456 }
457
458 fn managed_delete_contract(&self, dest_handle: i32, gas_limit: i64, arguments_handle: i32) {
459 self.adapt_vm_hooks(|inner| VMHooks::managed_delete_contract(inner, dest_handle, gas_limit, arguments_handle))
460 }
461
462 fn managed_deploy_from_source_contract(&self, gas: i64, value_handle: i32, address_handle: i32, code_metadata_handle: i32, arguments_handle: i32, result_address_handle: i32, result_handle: i32) -> i32 {
463 self.adapt_vm_hooks(|inner| VMHooks::managed_deploy_from_source_contract(inner, gas, value_handle, address_handle, code_metadata_handle, arguments_handle, result_address_handle, result_handle))
464 }
465
466 fn managed_create_contract(&self, gas: i64, value_handle: i32, code_handle: i32, code_metadata_handle: i32, arguments_handle: i32, result_address_handle: i32, result_handle: i32) -> i32 {
467 self.adapt_vm_hooks(|inner| VMHooks::managed_create_contract(inner, gas, value_handle, code_handle, code_metadata_handle, arguments_handle, result_address_handle, result_handle))
468 }
469
470 fn managed_execute_read_only(&self, gas: i64, address_handle: i32, function_handle: i32, arguments_handle: i32, result_handle: i32) -> i32 {
471 self.adapt_vm_hooks(|inner| VMHooks::managed_execute_read_only(inner, gas, address_handle, function_handle, arguments_handle, result_handle))
472 }
473
474 fn managed_execute_on_same_context(&self, gas: i64, address_handle: i32, value_handle: i32, function_handle: i32, arguments_handle: i32, result_handle: i32) -> i32 {
475 self.adapt_vm_hooks(|inner| VMHooks::managed_execute_on_same_context(inner, gas, address_handle, value_handle, function_handle, arguments_handle, result_handle))
476 }
477
478 fn managed_execute_on_dest_context(&self, gas: i64, address_handle: i32, value_handle: i32, function_handle: i32, arguments_handle: i32, result_handle: i32) -> i32 {
479 self.adapt_vm_hooks(|inner| VMHooks::managed_execute_on_dest_context(inner, gas, address_handle, value_handle, function_handle, arguments_handle, result_handle))
480 }
481
482 fn managed_multi_transfer_dcdt_nft_execute(&self, dst_handle: i32, token_transfers_handle: i32, gas_limit: i64, function_handle: i32, arguments_handle: i32) -> i32 {
483 self.adapt_vm_hooks(|inner| VMHooks::managed_multi_transfer_dcdt_nft_execute(inner, dst_handle, token_transfers_handle, gas_limit, function_handle, arguments_handle))
484 }
485
486 fn managed_multi_transfer_dcdt_nft_execute_by_user(&self, user_handle: i32, dst_handle: i32, token_transfers_handle: i32, gas_limit: i64, function_handle: i32, arguments_handle: i32) -> i32 {
487 self.adapt_vm_hooks(|inner| VMHooks::managed_multi_transfer_dcdt_nft_execute_by_user(inner, user_handle, dst_handle, token_transfers_handle, gas_limit, function_handle, arguments_handle))
488 }
489
490 fn managed_transfer_value_execute(&self, dst_handle: i32, value_handle: i32, gas_limit: i64, function_handle: i32, arguments_handle: i32) -> i32 {
491 self.adapt_vm_hooks(|inner| VMHooks::managed_transfer_value_execute(inner, dst_handle, value_handle, gas_limit, function_handle, arguments_handle))
492 }
493
494 fn managed_is_dcdt_frozen(&self, address_handle: i32, token_id_handle: i32, nonce: i64) -> i32 {
495 self.adapt_vm_hooks(|inner| VMHooks::managed_is_dcdt_frozen(inner, address_handle, token_id_handle, nonce))
496 }
497
498 fn managed_is_dcdt_limited_transfer(&self, token_id_handle: i32) -> i32 {
499 self.adapt_vm_hooks(|inner| VMHooks::managed_is_dcdt_limited_transfer(inner, token_id_handle))
500 }
501
502 fn managed_is_dcdt_paused(&self, token_id_handle: i32) -> i32 {
503 self.adapt_vm_hooks(|inner| VMHooks::managed_is_dcdt_paused(inner, token_id_handle))
504 }
505
506 fn managed_buffer_to_hex(&self, source_handle: i32, dest_handle: i32) {
507 self.adapt_vm_hooks(|inner| VMHooks::managed_buffer_to_hex(inner, source_handle, dest_handle))
508 }
509
510 fn managed_get_code_metadata(&self, address_handle: i32, response_handle: i32) {
511 self.adapt_vm_hooks(|inner| VMHooks::managed_get_code_metadata(inner, address_handle, response_handle))
512 }
513
514 fn managed_is_builtin_function(&self, function_name_handle: i32) -> i32 {
515 self.adapt_vm_hooks(|inner| VMHooks::managed_is_builtin_function(inner, function_name_handle))
516 }
517
518 fn big_float_new_from_parts(&self, integral_part: i32, fractional_part: i32, exponent: i32) -> i32 {
519 self.adapt_vm_hooks(|inner| VMHooks::big_float_new_from_parts(inner, integral_part, fractional_part, exponent))
520 }
521
522 fn big_float_new_from_frac(&self, numerator: i64, denominator: i64) -> i32 {
523 self.adapt_vm_hooks(|inner| VMHooks::big_float_new_from_frac(inner, numerator, denominator))
524 }
525
526 fn big_float_new_from_sci(&self, significand: i64, exponent: i64) -> i32 {
527 self.adapt_vm_hooks(|inner| VMHooks::big_float_new_from_sci(inner, significand, exponent))
528 }
529
530 fn big_float_add(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
531 self.adapt_vm_hooks(|inner| VMHooks::big_float_add(inner, destination_handle, op1_handle, op2_handle))
532 }
533
534 fn big_float_sub(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
535 self.adapt_vm_hooks(|inner| VMHooks::big_float_sub(inner, destination_handle, op1_handle, op2_handle))
536 }
537
538 fn big_float_mul(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
539 self.adapt_vm_hooks(|inner| VMHooks::big_float_mul(inner, destination_handle, op1_handle, op2_handle))
540 }
541
542 fn big_float_div(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
543 self.adapt_vm_hooks(|inner| VMHooks::big_float_div(inner, destination_handle, op1_handle, op2_handle))
544 }
545
546 fn big_float_neg(&self, destination_handle: i32, op_handle: i32) {
547 self.adapt_vm_hooks(|inner| VMHooks::big_float_neg(inner, destination_handle, op_handle))
548 }
549
550 fn big_float_clone(&self, destination_handle: i32, op_handle: i32) {
551 self.adapt_vm_hooks(|inner| VMHooks::big_float_clone(inner, destination_handle, op_handle))
552 }
553
554 fn big_float_cmp(&self, op1_handle: i32, op2_handle: i32) -> i32 {
555 self.adapt_vm_hooks(|inner| VMHooks::big_float_cmp(inner, op1_handle, op2_handle))
556 }
557
558 fn big_float_abs(&self, destination_handle: i32, op_handle: i32) {
559 self.adapt_vm_hooks(|inner| VMHooks::big_float_abs(inner, destination_handle, op_handle))
560 }
561
562 fn big_float_sign(&self, op_handle: i32) -> i32 {
563 self.adapt_vm_hooks(|inner| VMHooks::big_float_sign(inner, op_handle))
564 }
565
566 fn big_float_sqrt(&self, destination_handle: i32, op_handle: i32) {
567 self.adapt_vm_hooks(|inner| VMHooks::big_float_sqrt(inner, destination_handle, op_handle))
568 }
569
570 fn big_float_pow(&self, destination_handle: i32, op_handle: i32, exponent: i32) {
571 self.adapt_vm_hooks(|inner| VMHooks::big_float_pow(inner, destination_handle, op_handle, exponent))
572 }
573
574 fn big_float_floor(&self, dest_big_int_handle: i32, op_handle: i32) {
575 self.adapt_vm_hooks(|inner| VMHooks::big_float_floor(inner, dest_big_int_handle, op_handle))
576 }
577
578 fn big_float_ceil(&self, dest_big_int_handle: i32, op_handle: i32) {
579 self.adapt_vm_hooks(|inner| VMHooks::big_float_ceil(inner, dest_big_int_handle, op_handle))
580 }
581
582 fn big_float_truncate(&self, dest_big_int_handle: i32, op_handle: i32) {
583 self.adapt_vm_hooks(|inner| VMHooks::big_float_truncate(inner, dest_big_int_handle, op_handle))
584 }
585
586 fn big_float_set_int64(&self, destination_handle: i32, value: i64) {
587 self.adapt_vm_hooks(|inner| VMHooks::big_float_set_int64(inner, destination_handle, value))
588 }
589
590 fn big_float_is_int(&self, op_handle: i32) -> i32 {
591 self.adapt_vm_hooks(|inner| VMHooks::big_float_is_int(inner, op_handle))
592 }
593
594 fn big_float_set_big_int(&self, destination_handle: i32, big_int_handle: i32) {
595 self.adapt_vm_hooks(|inner| VMHooks::big_float_set_big_int(inner, destination_handle, big_int_handle))
596 }
597
598 fn big_float_get_const_pi(&self, destination_handle: i32) {
599 self.adapt_vm_hooks(|inner| VMHooks::big_float_get_const_pi(inner, destination_handle))
600 }
601
602 fn big_float_get_const_e(&self, destination_handle: i32) {
603 self.adapt_vm_hooks(|inner| VMHooks::big_float_get_const_e(inner, destination_handle))
604 }
605
606 fn big_int_get_unsigned_argument(&self, id: i32, destination_handle: i32) {
607 self.adapt_vm_hooks(|inner| VMHooks::big_int_get_unsigned_argument(inner, id, destination_handle))
608 }
609
610 fn big_int_get_signed_argument(&self, id: i32, destination_handle: i32) {
611 self.adapt_vm_hooks(|inner| VMHooks::big_int_get_signed_argument(inner, id, destination_handle))
612 }
613
614 fn big_int_storage_store_unsigned(&self, key_offset: MemPtr, key_length: MemLength, source_handle: i32) -> i32 {
615 self.adapt_vm_hooks(|inner| VMHooks::big_int_storage_store_unsigned(inner, key_offset, key_length, source_handle))
616 }
617
618 fn big_int_storage_load_unsigned(&self, key_offset: MemPtr, key_length: MemLength, destination_handle: i32) -> i32 {
619 self.adapt_vm_hooks(|inner| VMHooks::big_int_storage_load_unsigned(inner, key_offset, key_length, destination_handle))
620 }
621
622 fn big_int_get_call_value(&self, destination_handle: i32) {
623 self.adapt_vm_hooks(|inner| VMHooks::big_int_get_call_value(inner, destination_handle))
624 }
625
626 fn big_int_get_dcdt_call_value(&self, destination: i32) {
627 self.adapt_vm_hooks(|inner| VMHooks::big_int_get_dcdt_call_value(inner, destination))
628 }
629
630 fn big_int_get_dcdt_call_value_by_index(&self, destination_handle: i32, index: i32) {
631 self.adapt_vm_hooks(|inner| VMHooks::big_int_get_dcdt_call_value_by_index(inner, destination_handle, index))
632 }
633
634 fn big_int_get_external_balance(&self, address_offset: MemPtr, result: i32) {
635 self.adapt_vm_hooks(|inner| VMHooks::big_int_get_external_balance(inner, address_offset, result))
636 }
637
638 fn big_int_get_dcdt_external_balance(&self, address_offset: MemPtr, token_id_offset: MemPtr, token_id_len: MemLength, nonce: i64, result_handle: i32) {
639 self.adapt_vm_hooks(|inner| VMHooks::big_int_get_dcdt_external_balance(inner, address_offset, token_id_offset, token_id_len, nonce, result_handle))
640 }
641
642 fn big_int_new(&self, small_value: i64) -> i32 {
643 self.adapt_vm_hooks(|inner| VMHooks::big_int_new(inner, small_value))
644 }
645
646 fn big_int_unsigned_byte_length(&self, reference_handle: i32) -> i32 {
647 self.adapt_vm_hooks(|inner| VMHooks::big_int_unsigned_byte_length(inner, reference_handle))
648 }
649
650 fn big_int_signed_byte_length(&self, reference_handle: i32) -> i32 {
651 self.adapt_vm_hooks(|inner| VMHooks::big_int_signed_byte_length(inner, reference_handle))
652 }
653
654 fn big_int_get_unsigned_bytes(&self, reference_handle: i32, byte_offset: MemPtr) -> i32 {
655 self.adapt_vm_hooks(|inner| VMHooks::big_int_get_unsigned_bytes(inner, reference_handle, byte_offset))
656 }
657
658 fn big_int_get_signed_bytes(&self, reference_handle: i32, byte_offset: MemPtr) -> i32 {
659 self.adapt_vm_hooks(|inner| VMHooks::big_int_get_signed_bytes(inner, reference_handle, byte_offset))
660 }
661
662 fn big_int_set_unsigned_bytes(&self, destination_handle: i32, byte_offset: MemPtr, byte_length: MemLength) {
663 self.adapt_vm_hooks(|inner| VMHooks::big_int_set_unsigned_bytes(inner, destination_handle, byte_offset, byte_length))
664 }
665
666 fn big_int_set_signed_bytes(&self, destination_handle: i32, byte_offset: MemPtr, byte_length: MemLength) {
667 self.adapt_vm_hooks(|inner| VMHooks::big_int_set_signed_bytes(inner, destination_handle, byte_offset, byte_length))
668 }
669
670 fn big_int_is_int64(&self, destination_handle: i32) -> i32 {
671 self.adapt_vm_hooks(|inner| VMHooks::big_int_is_int64(inner, destination_handle))
672 }
673
674 fn big_int_get_int64(&self, destination_handle: i32) -> i64 {
675 self.adapt_vm_hooks(|inner| VMHooks::big_int_get_int64(inner, destination_handle))
676 }
677
678 fn big_int_set_int64(&self, destination_handle: i32, value: i64) {
679 self.adapt_vm_hooks(|inner| VMHooks::big_int_set_int64(inner, destination_handle, value))
680 }
681
682 fn big_int_add(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
683 self.adapt_vm_hooks(|inner| VMHooks::big_int_add(inner, destination_handle, op1_handle, op2_handle))
684 }
685
686 fn big_int_sub(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
687 self.adapt_vm_hooks(|inner| VMHooks::big_int_sub(inner, destination_handle, op1_handle, op2_handle))
688 }
689
690 fn big_int_mul(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
691 self.adapt_vm_hooks(|inner| VMHooks::big_int_mul(inner, destination_handle, op1_handle, op2_handle))
692 }
693
694 fn big_int_tdiv(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
695 self.adapt_vm_hooks(|inner| VMHooks::big_int_tdiv(inner, destination_handle, op1_handle, op2_handle))
696 }
697
698 fn big_int_tmod(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
699 self.adapt_vm_hooks(|inner| VMHooks::big_int_tmod(inner, destination_handle, op1_handle, op2_handle))
700 }
701
702 fn big_int_ediv(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
703 self.adapt_vm_hooks(|inner| VMHooks::big_int_ediv(inner, destination_handle, op1_handle, op2_handle))
704 }
705
706 fn big_int_emod(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
707 self.adapt_vm_hooks(|inner| VMHooks::big_int_emod(inner, destination_handle, op1_handle, op2_handle))
708 }
709
710 fn big_int_sqrt(&self, destination_handle: i32, op_handle: i32) {
711 self.adapt_vm_hooks(|inner| VMHooks::big_int_sqrt(inner, destination_handle, op_handle))
712 }
713
714 fn big_int_pow(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
715 self.adapt_vm_hooks(|inner| VMHooks::big_int_pow(inner, destination_handle, op1_handle, op2_handle))
716 }
717
718 fn big_int_log2(&self, op1_handle: i32) -> i32 {
719 self.adapt_vm_hooks(|inner| VMHooks::big_int_log2(inner, op1_handle))
720 }
721
722 fn big_int_abs(&self, destination_handle: i32, op_handle: i32) {
723 self.adapt_vm_hooks(|inner| VMHooks::big_int_abs(inner, destination_handle, op_handle))
724 }
725
726 fn big_int_neg(&self, destination_handle: i32, op_handle: i32) {
727 self.adapt_vm_hooks(|inner| VMHooks::big_int_neg(inner, destination_handle, op_handle))
728 }
729
730 fn big_int_sign(&self, op_handle: i32) -> i32 {
731 self.adapt_vm_hooks(|inner| VMHooks::big_int_sign(inner, op_handle))
732 }
733
734 fn big_int_cmp(&self, op1_handle: i32, op2_handle: i32) -> i32 {
735 self.adapt_vm_hooks(|inner| VMHooks::big_int_cmp(inner, op1_handle, op2_handle))
736 }
737
738 fn big_int_not(&self, destination_handle: i32, op_handle: i32) {
739 self.adapt_vm_hooks(|inner| VMHooks::big_int_not(inner, destination_handle, op_handle))
740 }
741
742 fn big_int_and(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
743 self.adapt_vm_hooks(|inner| VMHooks::big_int_and(inner, destination_handle, op1_handle, op2_handle))
744 }
745
746 fn big_int_or(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
747 self.adapt_vm_hooks(|inner| VMHooks::big_int_or(inner, destination_handle, op1_handle, op2_handle))
748 }
749
750 fn big_int_xor(&self, destination_handle: i32, op1_handle: i32, op2_handle: i32) {
751 self.adapt_vm_hooks(|inner| VMHooks::big_int_xor(inner, destination_handle, op1_handle, op2_handle))
752 }
753
754 fn big_int_shr(&self, destination_handle: i32, op_handle: i32, bits: i32) {
755 self.adapt_vm_hooks(|inner| VMHooks::big_int_shr(inner, destination_handle, op_handle, bits))
756 }
757
758 fn big_int_shl(&self, destination_handle: i32, op_handle: i32, bits: i32) {
759 self.adapt_vm_hooks(|inner| VMHooks::big_int_shl(inner, destination_handle, op_handle, bits))
760 }
761
762 fn big_int_finish_unsigned(&self, reference_handle: i32) {
763 self.adapt_vm_hooks(|inner| VMHooks::big_int_finish_unsigned(inner, reference_handle))
764 }
765
766 fn big_int_finish_signed(&self, reference_handle: i32) {
767 self.adapt_vm_hooks(|inner| VMHooks::big_int_finish_signed(inner, reference_handle))
768 }
769
770 fn big_int_to_string(&self, big_int_handle: i32, destination_handle: i32) {
771 self.adapt_vm_hooks(|inner| VMHooks::big_int_to_string(inner, big_int_handle, destination_handle))
772 }
773
774 fn mbuffer_new(&self) -> i32 {
775 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_new(inner))
776 }
777
778 fn mbuffer_new_from_bytes(&self, data_offset: MemPtr, data_length: MemLength) -> i32 {
779 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_new_from_bytes(inner, data_offset, data_length))
780 }
781
782 fn mbuffer_get_length(&self, m_buffer_handle: i32) -> i32 {
783 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_get_length(inner, m_buffer_handle))
784 }
785
786 fn mbuffer_get_bytes(&self, m_buffer_handle: i32, result_offset: MemPtr) -> i32 {
787 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_get_bytes(inner, m_buffer_handle, result_offset))
788 }
789
790 fn mbuffer_get_byte_slice(&self, source_handle: i32, starting_position: i32, slice_length: i32, result_offset: MemPtr) -> i32 {
791 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_get_byte_slice(inner, source_handle, starting_position, slice_length, result_offset))
792 }
793
794 fn mbuffer_copy_byte_slice(&self, source_handle: i32, starting_position: i32, slice_length: i32, destination_handle: i32) -> i32 {
795 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_copy_byte_slice(inner, source_handle, starting_position, slice_length, destination_handle))
796 }
797
798 fn mbuffer_eq(&self, m_buffer_handle1: i32, m_buffer_handle2: i32) -> i32 {
799 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_eq(inner, m_buffer_handle1, m_buffer_handle2))
800 }
801
802 fn mbuffer_set_bytes(&self, m_buffer_handle: i32, data_offset: MemPtr, data_length: MemLength) -> i32 {
803 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_set_bytes(inner, m_buffer_handle, data_offset, data_length))
804 }
805
806 fn mbuffer_set_byte_slice(&self, m_buffer_handle: i32, starting_position: i32, data_length: MemLength, data_offset: MemPtr) -> i32 {
807 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_set_byte_slice(inner, m_buffer_handle, starting_position, data_length, data_offset))
808 }
809
810 fn mbuffer_append(&self, accumulator_handle: i32, data_handle: i32) -> i32 {
811 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_append(inner, accumulator_handle, data_handle))
812 }
813
814 fn mbuffer_append_bytes(&self, accumulator_handle: i32, data_offset: MemPtr, data_length: MemLength) -> i32 {
815 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_append_bytes(inner, accumulator_handle, data_offset, data_length))
816 }
817
818 fn mbuffer_to_big_int_unsigned(&self, m_buffer_handle: i32, big_int_handle: i32) -> i32 {
819 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_to_big_int_unsigned(inner, m_buffer_handle, big_int_handle))
820 }
821
822 fn mbuffer_to_big_int_signed(&self, m_buffer_handle: i32, big_int_handle: i32) -> i32 {
823 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_to_big_int_signed(inner, m_buffer_handle, big_int_handle))
824 }
825
826 fn mbuffer_from_big_int_unsigned(&self, m_buffer_handle: i32, big_int_handle: i32) -> i32 {
827 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_from_big_int_unsigned(inner, m_buffer_handle, big_int_handle))
828 }
829
830 fn mbuffer_from_big_int_signed(&self, m_buffer_handle: i32, big_int_handle: i32) -> i32 {
831 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_from_big_int_signed(inner, m_buffer_handle, big_int_handle))
832 }
833
834 fn mbuffer_to_big_float(&self, m_buffer_handle: i32, big_float_handle: i32) -> i32 {
835 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_to_big_float(inner, m_buffer_handle, big_float_handle))
836 }
837
838 fn mbuffer_from_big_float(&self, m_buffer_handle: i32, big_float_handle: i32) -> i32 {
839 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_from_big_float(inner, m_buffer_handle, big_float_handle))
840 }
841
842 fn mbuffer_storage_store(&self, key_handle: i32, source_handle: i32) -> i32 {
843 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_storage_store(inner, key_handle, source_handle))
844 }
845
846 fn mbuffer_storage_load(&self, key_handle: i32, destination_handle: i32) -> i32 {
847 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_storage_load(inner, key_handle, destination_handle))
848 }
849
850 fn mbuffer_storage_load_from_address(&self, address_handle: i32, key_handle: i32, destination_handle: i32) {
851 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_storage_load_from_address(inner, address_handle, key_handle, destination_handle))
852 }
853
854 fn mbuffer_get_argument(&self, id: i32, destination_handle: i32) -> i32 {
855 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_get_argument(inner, id, destination_handle))
856 }
857
858 fn mbuffer_finish(&self, source_handle: i32) -> i32 {
859 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_finish(inner, source_handle))
860 }
861
862 fn mbuffer_set_random(&self, destination_handle: i32, length: i32) -> i32 {
863 self.adapt_vm_hooks(|inner| VMHooks::mbuffer_set_random(inner, destination_handle, length))
864 }
865
866 fn managed_map_new(&self) -> i32 {
867 self.adapt_vm_hooks(|inner| VMHooks::managed_map_new(inner))
868 }
869
870 fn managed_map_put(&self, m_map_handle: i32, key_handle: i32, value_handle: i32) -> i32 {
871 self.adapt_vm_hooks(|inner| VMHooks::managed_map_put(inner, m_map_handle, key_handle, value_handle))
872 }
873
874 fn managed_map_get(&self, m_map_handle: i32, key_handle: i32, out_value_handle: i32) -> i32 {
875 self.adapt_vm_hooks(|inner| VMHooks::managed_map_get(inner, m_map_handle, key_handle, out_value_handle))
876 }
877
878 fn managed_map_remove(&self, m_map_handle: i32, key_handle: i32, out_value_handle: i32) -> i32 {
879 self.adapt_vm_hooks(|inner| VMHooks::managed_map_remove(inner, m_map_handle, key_handle, out_value_handle))
880 }
881
882 fn managed_map_contains(&self, m_map_handle: i32, key_handle: i32) -> i32 {
883 self.adapt_vm_hooks(|inner| VMHooks::managed_map_contains(inner, m_map_handle, key_handle))
884 }
885
886 fn small_int_get_unsigned_argument(&self, id: i32) -> i64 {
887 self.adapt_vm_hooks(|inner| VMHooks::small_int_get_unsigned_argument(inner, id))
888 }
889
890 fn small_int_get_signed_argument(&self, id: i32) -> i64 {
891 self.adapt_vm_hooks(|inner| VMHooks::small_int_get_signed_argument(inner, id))
892 }
893
894 fn small_int_finish_unsigned(&self, value: i64) {
895 self.adapt_vm_hooks(|inner| VMHooks::small_int_finish_unsigned(inner, value))
896 }
897
898 fn small_int_finish_signed(&self, value: i64) {
899 self.adapt_vm_hooks(|inner| VMHooks::small_int_finish_signed(inner, value))
900 }
901
902 fn small_int_storage_store_unsigned(&self, key_offset: MemPtr, key_length: MemLength, value: i64) -> i32 {
903 self.adapt_vm_hooks(|inner| VMHooks::small_int_storage_store_unsigned(inner, key_offset, key_length, value))
904 }
905
906 fn small_int_storage_store_signed(&self, key_offset: MemPtr, key_length: MemLength, value: i64) -> i32 {
907 self.adapt_vm_hooks(|inner| VMHooks::small_int_storage_store_signed(inner, key_offset, key_length, value))
908 }
909
910 fn small_int_storage_load_unsigned(&self, key_offset: MemPtr, key_length: MemLength) -> i64 {
911 self.adapt_vm_hooks(|inner| VMHooks::small_int_storage_load_unsigned(inner, key_offset, key_length))
912 }
913
914 fn small_int_storage_load_signed(&self, key_offset: MemPtr, key_length: MemLength) -> i64 {
915 self.adapt_vm_hooks(|inner| VMHooks::small_int_storage_load_signed(inner, key_offset, key_length))
916 }
917
918 fn int64get_argument(&self, id: i32) -> i64 {
919 self.adapt_vm_hooks(|inner| VMHooks::int64get_argument(inner, id))
920 }
921
922 fn int64finish(&self, value: i64) {
923 self.adapt_vm_hooks(|inner| VMHooks::int64finish(inner, value))
924 }
925
926 fn int64storage_store(&self, key_offset: MemPtr, key_length: MemLength, value: i64) -> i32 {
927 self.adapt_vm_hooks(|inner| VMHooks::int64storage_store(inner, key_offset, key_length, value))
928 }
929
930 fn int64storage_load(&self, key_offset: MemPtr, key_length: MemLength) -> i64 {
931 self.adapt_vm_hooks(|inner| VMHooks::int64storage_load(inner, key_offset, key_length))
932 }
933
934 fn sha256(&self, data_offset: MemPtr, length: MemLength, result_offset: MemPtr) -> i32 {
935 self.adapt_vm_hooks(|inner| VMHooks::sha256(inner, data_offset, length, result_offset))
936 }
937
938 fn managed_sha256(&self, input_handle: i32, output_handle: i32) -> i32 {
939 self.adapt_vm_hooks(|inner| VMHooks::managed_sha256(inner, input_handle, output_handle))
940 }
941
942 fn keccak256(&self, data_offset: MemPtr, length: MemLength, result_offset: MemPtr) -> i32 {
943 self.adapt_vm_hooks(|inner| VMHooks::keccak256(inner, data_offset, length, result_offset))
944 }
945
946 fn managed_keccak256(&self, input_handle: i32, output_handle: i32) -> i32 {
947 self.adapt_vm_hooks(|inner| VMHooks::managed_keccak256(inner, input_handle, output_handle))
948 }
949
950 fn ripemd160(&self, data_offset: MemPtr, length: MemLength, result_offset: MemPtr) -> i32 {
951 self.adapt_vm_hooks(|inner| VMHooks::ripemd160(inner, data_offset, length, result_offset))
952 }
953
954 fn managed_ripemd160(&self, input_handle: i32, output_handle: i32) -> i32 {
955 self.adapt_vm_hooks(|inner| VMHooks::managed_ripemd160(inner, input_handle, output_handle))
956 }
957
958 fn verify_bls(&self, key_offset: MemPtr, message_offset: MemPtr, message_length: MemLength, sig_offset: MemPtr) -> i32 {
959 self.adapt_vm_hooks(|inner| VMHooks::verify_bls(inner, key_offset, message_offset, message_length, sig_offset))
960 }
961
962 fn managed_verify_bls(&self, key_handle: i32, message_handle: i32, sig_handle: i32) -> i32 {
963 self.adapt_vm_hooks(|inner| VMHooks::managed_verify_bls(inner, key_handle, message_handle, sig_handle))
964 }
965
966 fn verify_ed25519(&self, key_offset: MemPtr, message_offset: MemPtr, message_length: MemLength, sig_offset: MemPtr) -> i32 {
967 self.adapt_vm_hooks(|inner| VMHooks::verify_ed25519(inner, key_offset, message_offset, message_length, sig_offset))
968 }
969
970 fn managed_verify_ed25519(&self, key_handle: i32, message_handle: i32, sig_handle: i32) -> i32 {
971 self.adapt_vm_hooks(|inner| VMHooks::managed_verify_ed25519(inner, key_handle, message_handle, sig_handle))
972 }
973
974 fn verify_custom_secp256k1(&self, key_offset: MemPtr, key_length: MemLength, message_offset: MemPtr, message_length: MemLength, sig_offset: MemPtr, hash_type: i32) -> i32 {
975 self.adapt_vm_hooks(|inner| VMHooks::verify_custom_secp256k1(inner, key_offset, key_length, message_offset, message_length, sig_offset, hash_type))
976 }
977
978 fn managed_verify_custom_secp256k1(&self, key_handle: i32, message_handle: i32, sig_handle: i32, hash_type: i32) -> i32 {
979 self.adapt_vm_hooks(|inner| VMHooks::managed_verify_custom_secp256k1(inner, key_handle, message_handle, sig_handle, hash_type))
980 }
981
982 fn verify_secp256k1(&self, key_offset: MemPtr, key_length: MemLength, message_offset: MemPtr, message_length: MemLength, sig_offset: MemPtr) -> i32 {
983 self.adapt_vm_hooks(|inner| VMHooks::verify_secp256k1(inner, key_offset, key_length, message_offset, message_length, sig_offset))
984 }
985
986 fn managed_verify_secp256k1(&self, key_handle: i32, message_handle: i32, sig_handle: i32) -> i32 {
987 self.adapt_vm_hooks(|inner| VMHooks::managed_verify_secp256k1(inner, key_handle, message_handle, sig_handle))
988 }
989
990 fn encode_secp256k1_der_signature(&self, r_offset: MemPtr, r_length: MemLength, s_offset: MemPtr, s_length: MemLength, sig_offset: MemPtr) -> i32 {
991 self.adapt_vm_hooks(|inner| VMHooks::encode_secp256k1_der_signature(inner, r_offset, r_length, s_offset, s_length, sig_offset))
992 }
993
994 fn managed_encode_secp256k1_der_signature(&self, r_handle: i32, s_handle: i32, sig_handle: i32) -> i32 {
995 self.adapt_vm_hooks(|inner| VMHooks::managed_encode_secp256k1_der_signature(inner, r_handle, s_handle, sig_handle))
996 }
997
998 fn add_ec(&self, x_result_handle: i32, y_result_handle: i32, ec_handle: i32, fst_point_xhandle: i32, fst_point_yhandle: i32, snd_point_xhandle: i32, snd_point_yhandle: i32) {
999 self.adapt_vm_hooks(|inner| VMHooks::add_ec(inner, x_result_handle, y_result_handle, ec_handle, fst_point_xhandle, fst_point_yhandle, snd_point_xhandle, snd_point_yhandle))
1000 }
1001
1002 fn double_ec(&self, x_result_handle: i32, y_result_handle: i32, ec_handle: i32, point_xhandle: i32, point_yhandle: i32) {
1003 self.adapt_vm_hooks(|inner| VMHooks::double_ec(inner, x_result_handle, y_result_handle, ec_handle, point_xhandle, point_yhandle))
1004 }
1005
1006 fn is_on_curve_ec(&self, ec_handle: i32, point_xhandle: i32, point_yhandle: i32) -> i32 {
1007 self.adapt_vm_hooks(|inner| VMHooks::is_on_curve_ec(inner, ec_handle, point_xhandle, point_yhandle))
1008 }
1009
1010 fn scalar_base_mult_ec(&self, x_result_handle: i32, y_result_handle: i32, ec_handle: i32, data_offset: MemPtr, length: MemLength) -> i32 {
1011 self.adapt_vm_hooks(|inner| VMHooks::scalar_base_mult_ec(inner, x_result_handle, y_result_handle, ec_handle, data_offset, length))
1012 }
1013
1014 fn managed_scalar_base_mult_ec(&self, x_result_handle: i32, y_result_handle: i32, ec_handle: i32, data_handle: i32) -> i32 {
1015 self.adapt_vm_hooks(|inner| VMHooks::managed_scalar_base_mult_ec(inner, x_result_handle, y_result_handle, ec_handle, data_handle))
1016 }
1017
1018 fn scalar_mult_ec(&self, x_result_handle: i32, y_result_handle: i32, ec_handle: i32, point_xhandle: i32, point_yhandle: i32, data_offset: MemPtr, length: MemLength) -> i32 {
1019 self.adapt_vm_hooks(|inner| VMHooks::scalar_mult_ec(inner, x_result_handle, y_result_handle, ec_handle, point_xhandle, point_yhandle, data_offset, length))
1020 }
1021
1022 fn managed_scalar_mult_ec(&self, x_result_handle: i32, y_result_handle: i32, ec_handle: i32, point_xhandle: i32, point_yhandle: i32, data_handle: i32) -> i32 {
1023 self.adapt_vm_hooks(|inner| VMHooks::managed_scalar_mult_ec(inner, x_result_handle, y_result_handle, ec_handle, point_xhandle, point_yhandle, data_handle))
1024 }
1025
1026 fn marshal_ec(&self, x_pair_handle: i32, y_pair_handle: i32, ec_handle: i32, result_offset: MemPtr) -> i32 {
1027 self.adapt_vm_hooks(|inner| VMHooks::marshal_ec(inner, x_pair_handle, y_pair_handle, ec_handle, result_offset))
1028 }
1029
1030 fn managed_marshal_ec(&self, x_pair_handle: i32, y_pair_handle: i32, ec_handle: i32, result_handle: i32) -> i32 {
1031 self.adapt_vm_hooks(|inner| VMHooks::managed_marshal_ec(inner, x_pair_handle, y_pair_handle, ec_handle, result_handle))
1032 }
1033
1034 fn marshal_compressed_ec(&self, x_pair_handle: i32, y_pair_handle: i32, ec_handle: i32, result_offset: MemPtr) -> i32 {
1035 self.adapt_vm_hooks(|inner| VMHooks::marshal_compressed_ec(inner, x_pair_handle, y_pair_handle, ec_handle, result_offset))
1036 }
1037
1038 fn managed_marshal_compressed_ec(&self, x_pair_handle: i32, y_pair_handle: i32, ec_handle: i32, result_handle: i32) -> i32 {
1039 self.adapt_vm_hooks(|inner| VMHooks::managed_marshal_compressed_ec(inner, x_pair_handle, y_pair_handle, ec_handle, result_handle))
1040 }
1041
1042 fn unmarshal_ec(&self, x_result_handle: i32, y_result_handle: i32, ec_handle: i32, data_offset: MemPtr, length: MemLength) -> i32 {
1043 self.adapt_vm_hooks(|inner| VMHooks::unmarshal_ec(inner, x_result_handle, y_result_handle, ec_handle, data_offset, length))
1044 }
1045
1046 fn managed_unmarshal_ec(&self, x_result_handle: i32, y_result_handle: i32, ec_handle: i32, data_handle: i32) -> i32 {
1047 self.adapt_vm_hooks(|inner| VMHooks::managed_unmarshal_ec(inner, x_result_handle, y_result_handle, ec_handle, data_handle))
1048 }
1049
1050 fn unmarshal_compressed_ec(&self, x_result_handle: i32, y_result_handle: i32, ec_handle: i32, data_offset: MemPtr, length: MemLength) -> i32 {
1051 self.adapt_vm_hooks(|inner| VMHooks::unmarshal_compressed_ec(inner, x_result_handle, y_result_handle, ec_handle, data_offset, length))
1052 }
1053
1054 fn managed_unmarshal_compressed_ec(&self, x_result_handle: i32, y_result_handle: i32, ec_handle: i32, data_handle: i32) -> i32 {
1055 self.adapt_vm_hooks(|inner| VMHooks::managed_unmarshal_compressed_ec(inner, x_result_handle, y_result_handle, ec_handle, data_handle))
1056 }
1057
1058 fn generate_key_ec(&self, x_pub_key_handle: i32, y_pub_key_handle: i32, ec_handle: i32, result_offset: MemPtr) -> i32 {
1059 self.adapt_vm_hooks(|inner| VMHooks::generate_key_ec(inner, x_pub_key_handle, y_pub_key_handle, ec_handle, result_offset))
1060 }
1061
1062 fn managed_generate_key_ec(&self, x_pub_key_handle: i32, y_pub_key_handle: i32, ec_handle: i32, result_handle: i32) -> i32 {
1063 self.adapt_vm_hooks(|inner| VMHooks::managed_generate_key_ec(inner, x_pub_key_handle, y_pub_key_handle, ec_handle, result_handle))
1064 }
1065
1066 fn create_ec(&self, data_offset: MemPtr, data_length: MemLength) -> i32 {
1067 self.adapt_vm_hooks(|inner| VMHooks::create_ec(inner, data_offset, data_length))
1068 }
1069
1070 fn managed_create_ec(&self, data_handle: i32) -> i32 {
1071 self.adapt_vm_hooks(|inner| VMHooks::managed_create_ec(inner, data_handle))
1072 }
1073
1074 fn get_curve_length_ec(&self, ec_handle: i32) -> i32 {
1075 self.adapt_vm_hooks(|inner| VMHooks::get_curve_length_ec(inner, ec_handle))
1076 }
1077
1078 fn get_priv_key_byte_length_ec(&self, ec_handle: i32) -> i32 {
1079 self.adapt_vm_hooks(|inner| VMHooks::get_priv_key_byte_length_ec(inner, ec_handle))
1080 }
1081
1082 fn elliptic_curve_get_values(&self, ec_handle: i32, field_order_handle: i32, base_point_order_handle: i32, eq_constant_handle: i32, x_base_point_handle: i32, y_base_point_handle: i32) -> i32 {
1083 self.adapt_vm_hooks(|inner| VMHooks::elliptic_curve_get_values(inner, ec_handle, field_order_handle, base_point_order_handle, eq_constant_handle, x_base_point_handle, y_base_point_handle))
1084 }
1085
1086 fn managed_verify_secp256r1(&self, key_handle: i32, message_handle: i32, sig_handle: i32) -> i32 {
1087 self.adapt_vm_hooks(|inner| VMHooks::managed_verify_secp256r1(inner, key_handle, message_handle, sig_handle))
1088 }
1089
1090 fn managed_verify_blssignature_share(&self, key_handle: i32, message_handle: i32, sig_handle: i32) -> i32 {
1091 self.adapt_vm_hooks(|inner| VMHooks::managed_verify_blssignature_share(inner, key_handle, message_handle, sig_handle))
1092 }
1093
1094 fn managed_verify_blsaggregated_signature(&self, key_handle: i32, message_handle: i32, sig_handle: i32) -> i32 {
1095 self.adapt_vm_hooks(|inner| VMHooks::managed_verify_blsaggregated_signature(inner, key_handle, message_handle, sig_handle))
1096 }
1097}