use serde::{Deserialize, Serialize};
use crate::{AssetAmount, AssetId, BlockHeight};
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
pub struct DepositIdentifier {
pub asset_id: AssetId,
pub block_height: BlockHeight,
pub tx_id: Option<String>,
}
#[derive(Debug, Clone, Eq, PartialEq, Deserialize, Serialize)]
pub struct Deposit {
pub identifier: DepositIdentifier,
pub amount: AssetAmount,
}
#[cfg(test)]
mod tests {
use ex3_serde::bincode;
use super::*;
#[test]
fn test_serde() {
let deposit_identifier = DepositIdentifier {
asset_id: 1u64.into(),
block_height: 2u64.into(),
tx_id: Some("tx_id".to_string()),
};
let deposit = Deposit {
identifier: deposit_identifier.clone(),
amount: 3u64.into(),
};
let encoded = bincode::serialize(&deposit).unwrap();
let decoded: Deposit = bincode::deserialize(&encoded).unwrap();
assert_eq!(deposit, decoded);
let encoded = ex3_serde::cbor::serialize(&deposit).unwrap();
let decoded: Deposit = ex3_serde::cbor::deserialize(&encoded).unwrap();
assert_eq!(deposit, decoded);
}
}