use crate::api::call::{call, CallResult};
use candid::{CandidType, Nat, Principal};
use serde::{Deserialize, Serialize};
pub use super::main::{CanisterId, CanisterIdRecord, CanisterSettings};
#[derive(
CandidType, Serialize, Deserialize, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Default,
)]
pub struct ProvisionalCreateCanisterWithCyclesArgument {
pub amount: Option<Nat>,
pub settings: Option<CanisterSettings>,
}
#[derive(
CandidType, Serialize, Deserialize, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone,
)]
pub struct ProvisionalTopUpCanisterArgument {
pub canister_id: CanisterId,
pub amount: Nat,
}
pub async fn provisional_create_canister_with_cycles(
arg: ProvisionalCreateCanisterWithCyclesArgument,
) -> CallResult<(CanisterIdRecord,)> {
call(
Principal::management_canister(),
"provisional_create_canister_with_cycles",
(arg,),
)
.await
}
pub async fn provisional_top_up_canister(arg: ProvisionalTopUpCanisterArgument) -> CallResult<()> {
call(
Principal::management_canister(),
"provisional_top_up_canister",
(arg,),
)
.await
}