revive_solc_json_interface/standard_json/output/contract/
mod.rs1pub mod evm;
4
5use std::collections::BTreeMap;
6use std::collections::BTreeSet;
7
8use serde::Deserialize;
9use serde::Serialize;
10
11use self::evm::EVM;
12
13#[derive(Debug, Default, Serialize, Deserialize, Clone)]
15#[serde(rename_all = "camelCase")]
16pub struct Contract {
17 #[serde(default, skip_serializing_if = "serde_json::Value::is_null")]
19 pub abi: serde_json::Value,
20 #[serde(default, skip_serializing_if = "serde_json::Value::is_null")]
22 pub metadata: serde_json::Value,
23 #[serde(default, skip_serializing_if = "serde_json::Value::is_null")]
25 pub devdoc: serde_json::Value,
26 #[serde(default, skip_serializing_if = "serde_json::Value::is_null")]
28 pub userdoc: serde_json::Value,
29 #[serde(default, skip_serializing_if = "serde_json::Value::is_null")]
31 pub storage_layout: serde_json::Value,
32 #[serde(default, skip_serializing_if = "serde_json::Value::is_null")]
34 pub transient_storage_layout: serde_json::Value,
35 #[serde(default, skip_serializing_if = "Option::is_none")]
37 pub evm: Option<EVM>,
38 #[serde(default, skip_serializing_if = "Option::is_none")]
40 pub ir: Option<String>,
41 #[serde(default, skip_serializing_if = "String::is_empty")]
43 pub ir_optimized: String,
44 #[serde(default, skip_serializing_if = "Option::is_none")]
46 pub hash: Option<String>,
47 #[serde(default, skip_deserializing)]
49 pub factory_dependencies_unlinked: BTreeSet<String>,
50 #[serde(default, skip_deserializing)]
52 pub factory_dependencies: BTreeMap<String, String>,
53 #[serde(default, skip_deserializing)]
55 pub missing_libraries: BTreeSet<String>,
56 #[serde(default, skip_deserializing)]
58 pub object_format: Option<revive_common::ObjectFormat>,
59}
60
61impl Contract {
62 pub fn is_empty(&self) -> bool {
64 self.abi.is_null()
65 && self.storage_layout.is_null()
66 && self.transient_storage_layout.is_null()
67 && self.metadata.is_null()
68 && self.devdoc.is_null()
69 && self.userdoc.is_null()
70 && self.ir_optimized.is_empty()
71 && self.evm.is_none()
72 && self.hash.is_none()
73 && self.factory_dependencies_unlinked.is_empty()
74 && self.factory_dependencies.is_empty()
75 && self.missing_libraries.is_empty()
76 }
77}