use serde::{Deserialize, Serialize};
use tidecoin::block::{Header, Version};
use tidecoin::{
amount, fee_rate, Amount, BlockHash, BlockTime, CompactTarget, FeeRate, TxMerkleNode,
};
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct Foo {
#[serde(with = "primitives::serde_as_consensus")]
header: Header,
#[serde(with = "amount::serde::as_sat")]
amount: Amount,
#[serde(with = "fee_rate::serde::as_sat_per_kwu_floor")]
fee_rate: FeeRate,
}
fn main() {
let f = Foo { header: dummy_header(), amount: Amount::ONE_TDC, fee_rate: FeeRate::DUST };
let s = serde_json::to_string(&f).unwrap();
println!("{s}");
let deser = serde_json::from_str::<Foo>(&s).unwrap();
assert_eq!(deser, f);
}
fn dummy_header() -> Header {
Header {
version: Version::ONE,
prev_blockhash: BlockHash::from_byte_array([0x99; 32]),
merkle_root: TxMerkleNode::from_byte_array([0x77; 32]),
time: BlockTime::from(2),
bits: CompactTarget::from_consensus(3),
nonce: 4,
auxpow: None,
}
}