1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use crate::types::{SignedTransaction, Transaction};
5
6#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
7pub struct BlockHeader {
8 pub previous: String,
9 pub timestamp: String,
10 pub witness: String,
11 pub transaction_merkle_root: String,
12 #[serde(default)]
13 pub extensions: Vec<Value>,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
17pub struct SignedBlockHeader {
18 #[serde(flatten)]
19 pub header: BlockHeader,
20 pub witness_signature: String,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24pub struct SignedBlock {
25 #[serde(flatten)]
26 pub header: SignedBlockHeader,
27 #[serde(default)]
28 pub transactions: Vec<Transaction>,
29 #[serde(default)]
30 pub signed_transactions: Vec<SignedTransaction>,
31 #[serde(default)]
32 pub block_id: Option<String>,
33 #[serde(default)]
34 pub signing_key: Option<String>,
35 #[serde(default)]
36 pub transaction_ids: Vec<String>,
37}