//! The `solc --standard-json` output contract. pub mod evm; use std::collections::BTreeMap; use std::collections::HashSet; use serde::Deserialize; use serde::Serialize; use self::evm::EVM; /// The `solc --standard-json` output contract. #[derive(Debug, Serialize, Deserialize, Clone)] #[serde(rename_all = "camelCase")] pub struct Contract { /// The contract ABI. #[serde(default, skip_serializing_if = "Option::is_none")] pub abi: Option, /// The contract metadata. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, /// The contract developer documentation. #[serde(default, skip_serializing_if = "Option::is_none")] pub devdoc: Option, /// The contract user documentation. #[serde(default, skip_serializing_if = "Option::is_none")] pub userdoc: Option, /// The contract storage layout. #[serde(default, skip_serializing_if = "Option::is_none")] pub storage_layout: Option, /// Contract's bytecode and related objects #[serde(default, skip_serializing_if = "Option::is_none")] pub evm: Option, /// The contract IR code. #[serde(default, skip_serializing_if = "Option::is_none")] pub ir: Option, /// The contract optimized IR code. #[serde(default, skip_serializing_if = "Option::is_none")] pub ir_optimized: Option, /// The contract PolkaVM bytecode hash. #[serde(default, skip_serializing_if = "Option::is_none")] pub hash: Option, /// The contract factory dependencies. #[serde(default, skip_serializing_if = "Option::is_none")] pub factory_dependencies: Option>, /// The contract missing libraries. #[serde(default, skip_serializing_if = "Option::is_none")] pub missing_libraries: Option>, }