use crate::{
InternalError,
cdk::types::Principal,
dto::component_registry::ComponentRegistryHead,
ids::{CanisterRole, ComponentInstanceId},
};
use async_trait::async_trait;
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct RootComponentChildProvisionRequest {
pub operation_id: [u8; 32],
pub component: ComponentInstanceId,
pub expected_registry: ComponentRegistryHead,
pub child_role: CanisterRole,
pub application_init_args: Option<Vec<u8>>,
}
#[async_trait]
pub trait RootCapabilityLifecycleExecutor: Send + Sync {
async fn provision_component_child(
&self,
request: RootComponentChildProvisionRequest,
) -> Result<Principal, InternalError>;
}