1use bincode::Encode;
2use platform_serialization::de::Decode;
3use serde::{Deserialize, Serialize};
4
5use crate::{errors::ProtocolError, prelude::TimestampMillis, util::deserializer::ProtocolVersion};
6
7#[derive(
8 Serialize, Deserialize, Encode, Decode, Debug, Default, Clone, Copy, PartialEq, PartialOrd, Eq,
9)]
10#[serde(rename_all = "camelCase")]
11pub struct Metadata {
12 #[serde(default)]
13 pub block_height: u64,
14 #[serde(default)]
15 pub core_chain_locked_height: u64,
16 #[serde(default)]
17 pub time_ms: TimestampMillis,
18 #[serde(default)]
19 pub protocol_version: ProtocolVersion,
20}
21
22impl std::convert::TryFrom<&str> for Metadata {
23 type Error = ProtocolError;
24
25 fn try_from(d: &str) -> Result<Metadata, Self::Error> {
26 serde_json::from_str(d).map_err(|e| ProtocolError::EncodingError(e.to_string()))
27 }
28}