drt_sc/api/
vm_api.rs

1use super::{
2    BlockchainApi, CallTypeApi, CallValueApi, CryptoApi, EndpointArgumentApi, EndpointFinishApi,
3    ErrorApi, LogApi, ManagedTypeApi, PrintApi, SendApi, StorageMapperApi, StorageReadApi,
4    StorageReadApiImpl, StorageWriteApi,
5};
6
7pub trait VMApi:
8    ManagedTypeApi
9    + BlockchainApi
10    + CallValueApi
11    + CryptoApi
12    + EndpointArgumentApi
13    + EndpointFinishApi
14    + ErrorApi
15    + LogApi
16    + SendApi
17    + StorageReadApi
18    + StorageWriteApi
19    + PrintApi
20    + CallTypeApi
21    + StorageMapperApi
22    + Clone // TODO: remove
23    + PartialEq // for helping derive PartialEq for managed types
24    + Eq
25    + Send
26    + Sync
27{
28    /// Slightly hacky way of overriding the constructor for external view contracts.
29    /// 
30    /// Only required for the tests, in production the meta crate makes sure to replace it.
31    /// 
32    /// TODO: find a more robust and maybe extendable solution.
33    fn external_view_init_override() -> bool {
34        false
35    }
36    fn init_static() {
37        Self::storage_read_api_impl().storage_read_api_init();
38    }
39}