neo3/neo_protocol/responses/
neo_balances.rs

1use getset::Getters;
2use serde::{Deserialize, Serialize};
3
4use neo3::prelude::{deserialize_script_hash, serialize_script_hash, ScriptHash};
5
6#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Hash, Debug)]
7pub struct Nep11Balances {
8	pub address: String,
9	#[serde(rename = "balance")]
10	pub balances: Vec<Nep11Balance>,
11}
12
13#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Hash, Debug)]
14pub struct Nep11Balance {
15	pub name: String,
16	pub symbol: String,
17	pub decimals: String,
18	pub tokens: Vec<Nep11Token>,
19	#[serde(rename = "assethash")]
20	#[serde(deserialize_with = "deserialize_script_hash")]
21	#[serde(serialize_with = "serialize_script_hash")]
22	pub asset_hash: ScriptHash,
23}
24
25impl Nep11Balance {
26	// Constructor function to create a new Nep11Balance instance
27	pub fn new(
28		asset_hash: ScriptHash,
29		name: String,
30		symbol: String,
31		decimals: String,
32		tokens: Vec<Nep11Token>,
33	) -> Self {
34		Nep11Balance { name, symbol, decimals, tokens, asset_hash }
35	}
36}
37
38#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Hash, Debug)]
39pub struct Nep11Token {
40	#[serde(rename = "tokenid")]
41	pub token_id: String,
42	pub amount: String,
43	#[serde(rename = "lastupdatedblock")]
44	pub last_updated_block: u32,
45}
46
47impl Nep11Token {
48	// Constructor function to create a new Nep11Token instance
49	pub fn new(token_id: String, amount: String, last_updated_block: u32) -> Self {
50		Nep11Token { token_id, amount, last_updated_block }
51	}
52}
53
54#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Hash, Debug)]
55pub struct Nep17Balances {
56	pub address: String,
57	#[serde(rename = "balance", default)]
58	pub balances: Vec<Nep17Balance>,
59}
60
61#[derive(Getters, Serialize, Deserialize, Clone, PartialEq, Eq, Hash, Debug)]
62pub struct Nep17Balance {
63	pub name: Option<String>,
64	pub symbol: Option<String>,
65	pub decimals: Option<String>,
66	pub amount: String,
67	#[serde(rename = "lastupdatedblock")]
68	pub last_updated_block: u32,
69	#[serde(rename = "assethash")]
70	#[serde(deserialize_with = "deserialize_script_hash")]
71	#[serde(serialize_with = "serialize_script_hash")]
72	pub asset_hash: ScriptHash,
73}
74
75impl Nep17Balance {
76	// Constructor equivalent to the Java constructor
77	pub fn new(
78		asset_hash: ScriptHash,
79		name: Option<String>,
80		symbol: Option<String>,
81		decimals: Option<String>,
82		amount: String,
83		last_updated_block: u32,
84	) -> Self {
85		Self { name, symbol, decimals, amount, last_updated_block, asset_hash }
86	}
87}