use crate::protocol::{
Hash256,
services::boot::{
Approval, BridgeConfig, ManifestSet, Namespace, NitroConfig, PivotEnv,
RestartPolicy, ShareSet,
},
};
use super::ManifestVersion;
#[derive(PartialEq, Eq, Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(any(feature = "mock", test), derive(Default))]
pub struct PivotConfigV2 {
#[serde(with = "qos_hex::serde")]
pub hash: Hash256,
pub restart: RestartPolicy,
pub bridge_config: Vec<BridgeConfig>,
pub debug_mode: bool,
pub args: Vec<String>,
#[serde(default, skip_serializing_if = "PivotEnv::is_empty")]
pub env: PivotEnv,
}
#[derive(PartialEq, Eq, Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ManifestV2 {
pub version: ManifestVersion,
pub namespace: Namespace,
pub pivot: PivotConfigV2,
pub manifest_set: ManifestSet,
pub share_set: ShareSet,
pub enclave: NitroConfig,
}
#[derive(PartialEq, Eq, Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ManifestEnvelopeV2 {
pub manifest: ManifestV2,
pub manifest_set_approvals: Vec<Approval>,
pub share_set_approvals: Vec<Approval>,
}