use serde::{Deserialize, Serialize};
use wick_interface_types::ComponentSignature;
use crate::claims::Named;
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
#[non_exhaustive]
pub struct WickComponent {
#[serde(rename = "hash")]
pub module_hash: String,
#[serde(rename = "tags", skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<String>>,
#[serde(rename = "interface")]
pub interface: ComponentSignature,
#[serde(rename = "ver", skip_serializing_if = "Option::is_none")]
pub ver: Option<String>,
}
impl Named for WickComponent {
fn name(&self) -> String {
self.interface.name.as_ref().unwrap_or(&"Anonymous".to_owned()).clone()
}
}