ethpm/
documentation.rs

1//!
2//! Types for documentation data structures
3//!
4
5#[cfg(all(feature = "no-std", not(test)))]
6use alloc::vec::Vec;
7
8#[cfg(all(feature = "no-std", not(test)))]
9use alloc::collections::btree_map::BTreeMap;
10#[cfg(any(feature = "default", feature = "std", test))]
11use std::collections::BTreeMap;
12
13use serde::{Deserialize, Serialize};
14
15use crate::contract::EthValueType;
16
17#[derive(Serialize, Deserialize, Debug)]
18#[serde(deny_unknown_fields)]
19pub struct LinkReference {
20    offsets: Vec<i64>,
21    length: u64,
22    name: String,
23}
24
25#[derive(Serialize, Deserialize, Debug)]
26#[serde(deny_unknown_fields)]
27enum LinkValueType {
28    #[serde(rename = "literal")]
29    Literal,
30    #[serde(rename = "reference")]
31    Reference,
32}
33
34#[derive(Serialize, Deserialize, Debug)]
35#[serde(deny_unknown_fields)]
36pub struct LinkValue {
37    offsets: Vec<i64>,
38    #[serde(rename = "type")]
39    type_property: LinkValueType,
40    value: String,
41}
42
43#[derive(Serialize, Deserialize, Debug)]
44#[serde(deny_unknown_fields)]
45pub struct CompilerInformation {
46    name: CompilerType,
47    version: String,
48    #[serde(skip_serializing_if = "Option::is_none")]
49    settings: Option<CompilerSettings>,
50}
51
52#[derive(Serialize, Deserialize, Debug)]
53#[serde(deny_unknown_fields)]
54pub enum CompilerType {
55    #[serde(rename = "solc")]
56    Solc,
57    #[serde(rename = "vyper")]
58    Vyper,
59}
60
61#[derive(Serialize, Deserialize, Debug)]
62#[serde(deny_unknown_fields)]
63pub struct CompilerSettings {
64    optimize: bool,
65}
66
67#[derive(Serialize, Deserialize, Debug)]
68#[serde(deny_unknown_fields)]
69pub struct NatSpec {
70    #[serde(skip_serializing_if = "Option::is_none")]
71    compiler: Option<CompilerInformation>,
72    #[serde(skip_serializing_if = "Option::is_none")]
73    author: Option<String>,
74    #[serde(skip_serializing_if = "Option::is_none")]
75    methods: Option<BTreeMap<String, Method>>,
76    #[serde(skip_serializing_if = "Option::is_none")]
77    title: Option<String>,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    description: Option<String>,
80    #[serde(rename = "type")]
81    #[serde(skip_serializing_if = "Option::is_none")]
82    type_property: Option<String>,
83    #[serde(skip_serializing_if = "Option::is_none")]
84    dev: Option<String>,
85}
86
87#[derive(Serialize, Deserialize, Debug)]
88#[serde(deny_unknown_fields)]
89pub struct Method {
90    #[serde(skip_serializing_if = "Option::is_none")]
91    details: Option<String>,
92    #[serde(skip_serializing_if = "Option::is_none")]
93    params: Option<BTreeMap<String, String>>,
94    #[serde(skip_serializing_if = "Option::is_none")]
95    notice: Option<String>,
96    #[serde(rename = "return")]
97    #[serde(skip_serializing_if = "Option::is_none")]
98    return_property: Option<EthValueType>,
99    #[serde(skip_serializing_if = "Option::is_none")]
100    dev: Option<String>,
101}