use super::*;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ModuleDeclaration {
id: ModuleId,
version: String,
required: bool,
}
impl ModuleDeclaration {
pub fn new(id: ModuleId, version: impl Into<String>, required: bool) -> ContractResult<Self> {
let module = Self {
id,
version: version.into(),
required,
};
module.validate()?;
Ok(module)
}
pub fn id(&self) -> &ModuleId {
&self.id
}
pub fn version(&self) -> &str {
&self.version
}
pub fn is_required(&self) -> bool {
self.required
}
pub(crate) fn validate(&self) -> ContractResult<()> {
validate_text("module.version", &self.version, 64)
}
}