substreams_antelope_abigen/
abi.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
4pub struct ABIType {
5    pub name: String,
6    #[serde(rename = "type")]
7    pub ty: String,
8}
9
10#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
11pub struct ABIStruct {
12    pub name: String,
13    pub base: String,
14    pub fields: Vec<ABIType>,
15}
16
17#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
18pub struct ABIAction {
19    pub name: String,
20    #[serde(rename = "type")]
21    pub ty: String,
22    #[serde(default)]
23    pub ricardian_contract: String,
24}
25
26#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
27pub struct ABITable {
28    name: String,
29    #[serde(rename = "type")]
30    ty: String,
31    index_type: String,
32    #[serde(default)]
33    key_names: Vec<String>,
34    #[serde(default)]
35    key_types: Vec<String>,
36}
37
38#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
39pub struct ABIVariant {
40    name: String,
41    // #[serde(deserialize_with = "string_or_seq_string")]
42    types: Vec<String>,
43}
44
45#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
46pub struct ABITypes {
47    pub new_type_name: String,
48    #[serde(rename = "type")]
49    pub ty: String,
50}
51
52#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
53pub struct ABIRicardianClause {
54    id: String,
55    body: String,
56}
57
58#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
59pub struct ABIActionResult {
60    name: String,
61    result_type: String,
62}
63
64#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
65pub struct ABIErrorMessage {
66    error_code: u64,
67    error_msg: String,
68}
69
70#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
71pub struct WrappedABI {
72    pub account_name: String,
73    pub abi: ABI,
74}
75
76impl TryFrom<&str> for WrappedABI {
77    type Error = serde_json::Error;
78    #[inline]
79    fn try_from(str: &str) -> Result<Self, Self::Error> {
80        serde_json::from_str(str)
81    }
82}
83
84#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
85pub struct ABI {
86    pub version: String,
87    #[serde(default)]
88    pub types: Vec<ABITypes>,
89    #[serde(default)]
90    pub structs: Vec<ABIStruct>,
91    #[serde(default)]
92    pub actions: Vec<ABIAction>,
93    #[serde(default)]
94    pub tables: Vec<ABITable>,
95    #[serde(default)]
96    pub variants: Vec<ABIVariant>,
97    #[serde(default)]
98    pub abi_extensions: Vec<String>,
99    #[serde(default)]
100    pub error_messages: Vec<ABIErrorMessage>,
101    #[serde(default)]
102    pub ricardian_clauses: Vec<ABIRicardianClause>,
103    #[serde(default)]
104    pub action_results: Vec<ABIActionResult>,
105}
106
107impl TryFrom<&str> for ABI {
108    type Error = serde_json::Error;
109    #[inline]
110    fn try_from(str: &str) -> Result<Self, Self::Error> {
111        serde_json::from_str(str)
112    }
113}