use serde::Deserialize;
use serde_json::Value;
use super::abi::ManifestAbi;
use super::permissions::ManifestPermission;
use super::trusts::ManifestTrusts;
#[derive(Debug, Clone, Deserialize)]
#[non_exhaustive]
pub struct ContractManifest {
pub name: String,
#[serde(default)]
pub groups: Vec<ManifestGroup>,
#[serde(default)]
pub features: serde_json::Map<String, Value>,
#[serde(default, rename = "supportedstandards")]
pub supported_standards: Vec<String>,
pub abi: ManifestAbi,
#[serde(default)]
pub permissions: Vec<ManifestPermission>,
#[serde(default)]
pub trusts: Option<ManifestTrusts>,
#[serde(default)]
pub extra: Option<Value>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct ManifestGroup {
pub pubkey: String,
pub signature: String,
}