use crate::api::call::{call, call_with_payment128, CallResult};
use candid::Principal;
mod types;
pub use types::*;
pub const CREATE_CANISTER_CYCLES: u128 = 100_000_000_000u128;
pub async fn create_canister(arg: CreateCanisterArgument) -> CallResult<(CanisterIdRecord,)> {
call_with_payment128(
Principal::management_canister(),
"create_canister",
(arg,),
CREATE_CANISTER_CYCLES,
)
.await
}
pub async fn create_canister_with_extra_cycles(
arg: CreateCanisterArgument,
cycles: u128,
) -> CallResult<(CanisterIdRecord,)> {
call_with_payment128(
Principal::management_canister(),
"create_canister",
(arg,),
CREATE_CANISTER_CYCLES + cycles,
)
.await
}
pub async fn update_settings(arg: UpdateSettingsArgument) -> CallResult<()> {
call(Principal::management_canister(), "update_settings", (arg,)).await
}
pub async fn install_code(arg: InstallCodeArgument) -> CallResult<()> {
call(Principal::management_canister(), "install_code", (arg,)).await
}
pub async fn uninstall_code(arg: CanisterIdRecord) -> CallResult<()> {
call(Principal::management_canister(), "uninstall_code", (arg,)).await
}
pub async fn start_canister(arg: CanisterIdRecord) -> CallResult<()> {
call(Principal::management_canister(), "start_canister", (arg,)).await
}
pub async fn stop_canister(arg: CanisterIdRecord) -> CallResult<()> {
call(Principal::management_canister(), "stop_canister", (arg,)).await
}
pub async fn canister_status(arg: CanisterIdRecord) -> CallResult<(CanisterStatusResponse,)> {
call(Principal::management_canister(), "canister_status", (arg,)).await
}
pub async fn delete_canister(arg: CanisterIdRecord) -> CallResult<()> {
call(Principal::management_canister(), "delete_canister", (arg,)).await
}
pub async fn deposit_cycles(arg: CanisterIdRecord, cycles: u128) -> CallResult<()> {
call_with_payment128(
Principal::management_canister(),
"deposit_cycles",
(arg,),
cycles,
)
.await
}
pub async fn raw_rand() -> CallResult<(Vec<u8>,)> {
call(Principal::management_canister(), "raw_rand", ()).await
}