multiversx_sc_meta_lib/contract/sc_config/
sc_config_serde.rs

1use serde::Deserialize;
2use std::collections::HashMap;
3
4use super::ProxyConfigSerde;
5
6#[derive(Deserialize, Debug)]
7#[serde(deny_unknown_fields)]
8pub struct ScConfigSerde {
9    #[serde(default)]
10    pub settings: MultiContractGeneralSettingsSerde,
11    #[serde(default)]
12    pub contracts: HashMap<String, ContractVariantSerde>,
13    #[serde(default)]
14    pub proxy: Vec<ProxyConfigSerde>,
15    #[serde(default)]
16    #[serde(rename = "labels-for-contracts")]
17    pub labels_for_contracts: HashMap<String, Vec<String>>,
18}
19
20#[derive(Deserialize, Debug)]
21#[serde(deny_unknown_fields)]
22pub struct ContractVariantSerde {
23    pub name: Option<String>,
24
25    #[serde(default)]
26    #[serde(rename = "add-unlabelled")]
27    pub add_unlabelled: Option<bool>,
28
29    #[serde(default)]
30    #[serde(rename = "add-labels")]
31    pub add_labels: Vec<String>,
32
33    #[serde(default)]
34    #[serde(rename = "add-endpoints")]
35    pub add_endpoints: Vec<String>,
36
37    #[serde(default)]
38    #[serde(rename = "external-view")]
39    pub external_view: Option<bool>,
40
41    #[serde(default)]
42    #[serde(rename = "panic-message")]
43    pub panic_message: Option<bool>,
44
45    #[serde(default)]
46    pub ei: Option<String>,
47
48    #[serde(default)]
49    pub allocator: Option<String>,
50
51    #[serde(default)]
52    #[serde(rename = "stack-size")]
53    pub stack_size: Option<String>,
54
55    #[serde(default)]
56    pub features: Vec<String>,
57
58    #[serde(default)]
59    #[serde(rename = "default-features")]
60    pub default_features: Option<bool>,
61
62    #[serde(default)]
63    pub kill_legacy_callback: bool,
64
65    #[serde(default)]
66    pub profile: Option<ContractVariantProfileSerde>,
67
68    #[serde(default)]
69    pub std: Option<bool>,
70
71    #[serde(rename = "rustc-version")]
72    pub rustc_version: Option<String>,
73
74    #[serde(rename = "rustc-target")]
75    pub rustc_target: Option<String>,
76
77    #[serde(rename = "opcode-version")]
78    pub opcode_version: Option<String>,
79
80    #[serde(rename = "wasm-opt-version")]
81    #[serde(default)]
82    pub wasm_opt_version: Option<String>,
83}
84
85#[derive(Deserialize, Default, Debug)]
86#[serde(deny_unknown_fields)]
87pub struct MultiContractGeneralSettingsSerde {
88    #[serde(default)]
89    pub main: Option<String>,
90}
91
92#[derive(Deserialize, Default, Debug, Clone, PartialEq, Eq)]
93#[serde(deny_unknown_fields)]
94pub struct ContractVariantProfileSerde {
95    #[serde(default)]
96    #[serde(rename = "codegen-units")]
97    pub codegen_units: Option<u8>,
98
99    #[serde(default)]
100    #[serde(rename = "opt-level")]
101    pub opt_level: Option<String>,
102
103    #[serde(default)]
104    pub lto: Option<bool>,
105
106    #[serde(default)]
107    pub debug: Option<bool>,
108
109    #[serde(default)]
110    pub panic: Option<String>,
111
112    #[serde(default)]
113    #[serde(rename = "overflow-checks")]
114    pub overflow_checks: Option<bool>,
115}