use crate::ids::{CanisterRole, ComponentGroupMemberPath, ComponentSpecId};
use candid::Principal;
use super::DEFAULT_INSTALL_CYCLES;
#[derive(Clone, Debug)]
pub struct ManagedRoleQualificationArtifact {
pub application_init_args: Option<Vec<u8>>,
pub install_cycles: u128,
pub role: CanisterRole,
pub wasm: Vec<u8>,
}
impl ManagedRoleQualificationArtifact {
#[must_use]
pub const fn new(role: CanisterRole, wasm: Vec<u8>) -> Self {
Self {
application_init_args: None,
install_cycles: DEFAULT_INSTALL_CYCLES,
role,
wasm,
}
}
}
pub struct ManagedComponentGroupQualificationInput<'a> {
pub admitted_principals: Vec<Principal>,
pub app_config_source: &'a str,
pub component_group_deployment: &'a str,
pub component_group_ordinal: u32,
pub role_artifacts: Vec<ManagedRoleQualificationArtifact>,
pub release_build_id: &'a str,
}
impl<'a> ManagedComponentGroupQualificationInput<'a> {
#[must_use]
pub const fn new(
app_config_source: &'a str,
component_group_deployment: &'a str,
release_build_id: &'a str,
admitted_principals: Vec<Principal>,
role_artifacts: Vec<ManagedRoleQualificationArtifact>,
) -> Self {
Self {
admitted_principals,
app_config_source,
component_group_deployment,
component_group_ordinal: 0,
role_artifacts,
release_build_id,
}
}
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ManagedComponentNode {
pub binding: crate::ids::ManagedCanisterBinding,
pub canister_id: Principal,
pub component_group_member: ComponentGroupMemberPath,
pub component_spec: ComponentSpecId,
pub parent_canister_id: Option<Principal>,
pub role: CanisterRole,
}