use serde::{Deserialize, Serialize};
use crate::version::{AbiVersion, SchemaVersionRange};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PluginMeta {
pub sector: String,
pub name: String,
pub version: String,
pub license: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub author: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub homepage: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
pub enum PluginCapability {
Validate,
ComputeMetrics,
GeneratePassport,
SubstanceScreening,
LifecycleAssessment,
AasMapping,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PluginCapabilities {
pub abi_version: AbiVersion,
pub supported_schemas: Vec<SchemaVersionRange>,
pub capabilities: Vec<PluginCapability>,
#[serde(skip_serializing_if = "Option::is_none")]
pub min_host_version: Option<AbiVersion>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_fuel: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_memory_bytes: Option<u64>,
}