use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct EconomicIdentity {
pub address: String,
pub key_blob_id: Option<String>,
pub created_at: u64,
}
impl EconomicIdentity {
pub fn placeholder(address: impl Into<String>) -> Self {
Self {
address: address.into(),
key_blob_id: None,
created_at: 0,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn identity_serde_roundtrip() {
let id = EconomicIdentity {
address: "0xdeadbeef".into(),
key_blob_id: Some("blob-123".into()),
created_at: 1700000000000,
};
let json = serde_json::to_string(&id).unwrap();
let back: EconomicIdentity = serde_json::from_str(&json).unwrap();
assert_eq!(id, back);
}
#[test]
fn identity_placeholder() {
let id = EconomicIdentity::placeholder("0xabc");
assert_eq!(id.address, "0xabc");
assert!(id.key_blob_id.is_none());
}
}