1use crate::dto::prelude::*;
2
3#[derive(CandidType, Clone, Debug, Deserialize)]
9pub enum Request {
10 CreateCanister(CreateCanisterRequest),
11 UpgradeCanister(UpgradeCanisterRequest),
12 Cycles(CyclesRequest),
13}
14
15#[derive(CandidType, Clone, Debug, Deserialize)]
21pub struct CreateCanisterRequest {
22 pub canister_role: CanisterRole,
23 pub parent: CreateCanisterParent,
24 pub extra_arg: Option<Vec<u8>>,
25}
26
27#[derive(CandidType, Clone, Debug, Deserialize)]
33pub enum CreateCanisterParent {
34 Root,
35 ThisCanister,
37 Parent,
39 Canister(Principal),
40 Directory(CanisterRole),
41}
42
43#[derive(CandidType, Clone, Debug, Deserialize)]
49pub struct UpgradeCanisterRequest {
50 pub canister_pid: Principal,
51}
52
53#[derive(CandidType, Clone, Debug, Deserialize)]
59pub struct CyclesRequest {
60 pub cycles: u128,
61}
62
63#[derive(CandidType, Clone, Debug, Deserialize)]
69pub enum Response {
70 CreateCanister(CreateCanisterResponse),
71 UpgradeCanister(UpgradeCanisterResponse),
72 Cycles(CyclesResponse),
73}
74
75#[derive(CandidType, Clone, Debug, Deserialize)]
81pub struct CreateCanisterResponse {
82 pub new_canister_pid: Principal,
83}
84
85#[derive(CandidType, Clone, Debug, Deserialize)]
91pub struct UpgradeCanisterResponse {}
92
93#[derive(CandidType, Clone, Debug, Deserialize)]
99pub struct CyclesResponse {
100 pub cycles_transferred: u128,
101}