1use std::string::String;
2use std::vec::Vec;
3
4#[cfg(feature = "serde")]
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, PartialEq, Eq)]
9#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
10pub struct NeoContractManifest {
11 pub name: String,
12 pub version: String,
13 pub author: String,
14 pub email: String,
15 pub description: String,
16 pub abi: NeoContractABI,
17 pub permissions: Vec<NeoContractPermission>,
18 pub trusts: Vec<String>,
19 pub supported_standards: Vec<String>,
20}
21
22#[derive(Debug, Clone, PartialEq, Eq)]
24#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
25pub struct NeoContractABI {
26 pub hash: String,
27 pub methods: Vec<NeoContractMethod>,
28 pub events: Vec<NeoContractEvent>,
29}
30
31#[derive(Debug, Clone, PartialEq, Eq)]
33#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
34pub struct NeoContractMethod {
35 pub name: String,
36 pub parameters: Vec<NeoContractParameter>,
37 pub return_type: String,
38 pub offset: u32,
39 pub safe: bool,
40}
41
42#[derive(Debug, Clone, PartialEq, Eq)]
44#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
45pub struct NeoContractEvent {
46 pub name: String,
47 pub parameters: Vec<NeoContractParameter>,
48}
49
50#[derive(Debug, Clone, PartialEq, Eq)]
52#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
53pub struct NeoContractParameter {
54 pub name: String,
55 pub r#type: String,
56}
57
58#[derive(Debug, Clone, PartialEq, Eq)]
60#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
61pub struct NeoContractPermission {
62 pub contract: String,
63 pub methods: Vec<String>,
64}