multiversx_sdk/data/
vm.rs1use super::sdk_address::SdkAddress;
2use serde::{Deserialize, Serialize};
3use serde_repr::{Deserialize_repr, Serialize_repr};
4use std::collections::HashMap;
5
6#[derive(Serialize_repr, Deserialize_repr, Debug, Clone)]
7#[repr(u8)]
8pub enum CallType {
9 DirectCall = 0,
11
12 AsynchronousCall = 1,
15
16 AsynchronousCallBack = 2,
19
20 ESDTTransferAndExecute = 3,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
27#[serde(rename_all = "camelCase")]
28pub struct VMQueryInput {
29 pub sc_address: SdkAddress,
30 pub func_name: String,
31 pub args: Vec<String>,
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
36#[serde(rename_all = "camelCase")]
37pub struct LogEntryApi {
38 pub identifier: String,
39 pub address: SdkAddress,
40 pub topics: Vec<String>,
41 pub data: String,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize)]
46#[serde(rename_all = "camelCase")]
47pub struct OutputTransferApi {
48 pub value: String,
49 pub gas_limit: u64,
50 pub data: String,
51 pub call_type: CallType,
52 pub sender_address: SdkAddress,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
57#[serde(rename_all = "camelCase")]
58pub struct OutputAccountApi {
59 address: SdkAddress,
60 nonce: u64,
61
62 balance_delta: u64,
65 storage_updates: Option<HashMap<String, StorageUpdateApi>>,
66 code: Option<String>,
67 code_metadata: Option<String>,
68
69 #[serde(default)]
70 output_transfers: Vec<OutputTransferApi>,
71 call_type: CallType,
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(rename_all = "camelCase")]
77pub struct StorageUpdateApi {
78 offset: String,
79 data: String,
80}
81
82#[derive(Debug, Clone, Serialize, Deserialize)]
84#[serde(rename_all = "camelCase")]
85pub struct VMOutputApi {
86 #[serde(default)]
87 pub return_data: Vec<String>,
88 pub return_code: String,
89 pub return_message: String,
90 pub gas_remaining: u64,
91 pub gas_refund: u64,
92 pub output_accounts: HashMap<String, OutputAccountApi>,
93 pub deleted_accounts: Option<Vec<String>>,
94 pub touched_accounts: Option<Vec<String>>,
95 pub logs: Option<Vec<LogEntryApi>>,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
100#[serde(rename_all = "camelCase")]
101pub struct VmValuesResponseData {
102 pub data: VMOutputApi,
103}
104
105#[derive(Debug, Clone, Serialize, Deserialize)]
107#[serde(rename_all = "camelCase")]
108pub struct ResponseVmValue {
109 pub data: Option<VmValuesResponseData>,
110 pub error: String,
111 pub code: String,
112}