Skip to main content

neo_types/
manifest.rs

1use std::string::String;
2use std::vec::Vec;
3
4#[cfg(feature = "serde")]
5use serde::{Deserialize, Serialize};
6
7/// Neo N3 Contract Manifest
8#[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/// Neo N3 Contract ABI
23#[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/// Neo N3 Contract Method
32#[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/// Neo N3 Contract Event
43#[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/// Neo N3 Contract Parameter
51#[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/// Neo N3 Contract Permission
59#[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}