use crate::identity::CanisterId;
pub async fn create_canister(
settings: Option<ic_cdk::api::management_canister::main::CanisterSettings>,
cycles: u128,
) -> Result<CanisterId, (ic_cdk::api::call::RejectionCode, String)> {
let call_result = ic_cdk::api::management_canister::main::create_canister(
ic_cdk::api::management_canister::main::CreateCanisterArgument {
settings: settings.clone(),
},
cycles,
)
.await;
call_result.map(|r| r.0.canister_id)
}
pub async fn start_canister(canister_id: CanisterId) -> super::types::CanisterCallResult<()> {
let call_result = ic_cdk::api::management_canister::main::start_canister(
ic_cdk::api::management_canister::main::CanisterIdRecord { canister_id },
)
.await;
super::wrap_call_result(canister_id, "ic#start_canister", call_result)
}
pub async fn stop_canister(canister_id: CanisterId) -> super::types::CanisterCallResult<()> {
let call_result = ic_cdk::api::management_canister::main::stop_canister(
ic_cdk::api::management_canister::main::CanisterIdRecord { canister_id },
)
.await;
super::wrap_call_result(canister_id, "ic#stop_canister", call_result)
}
pub async fn delete_canister(canister_id: CanisterId) -> super::types::CanisterCallResult<()> {
let call_result = ic_cdk::api::management_canister::main::delete_canister(
ic_cdk::api::management_canister::main::CanisterIdRecord { canister_id },
)
.await;
super::wrap_call_result(canister_id, "ic#delete_canister", call_result)
}