1use crate::dto::{auth::DelegatedToken, prelude::*};
2
3#[derive(CandidType, Clone, Debug, Deserialize, Serialize)]
9pub enum Request {
10 CreateCanister(CreateCanisterRequest),
11 UpgradeCanister(UpgradeCanisterRequest),
12 Cycles(CyclesRequest),
13}
14
15#[derive(CandidType, Clone, Debug, Deserialize, Serialize)]
20pub struct AuthenticatedRequest {
21 pub request: Request,
22 pub delegated_token: DelegatedToken,
23}
24
25#[derive(CandidType, Clone, Debug, Deserialize, Serialize)]
31pub struct CreateCanisterRequest {
32 pub canister_role: CanisterRole,
33 pub parent: CreateCanisterParent,
34 pub extra_arg: Option<Vec<u8>>,
35}
36
37#[derive(CandidType, Clone, Debug, Deserialize, Serialize)]
43pub enum CreateCanisterParent {
44 Root,
45 ThisCanister,
47 Parent,
49 Canister(Principal),
50 Directory(CanisterRole),
51}
52
53#[derive(CandidType, Clone, Debug, Deserialize, Serialize)]
59pub struct UpgradeCanisterRequest {
60 pub canister_pid: Principal,
61}
62
63#[derive(CandidType, Clone, Debug, Deserialize, Serialize)]
69pub struct CyclesRequest {
70 pub cycles: u128,
71}
72
73#[derive(CandidType, Clone, Debug, Deserialize, Serialize)]
79pub enum Response {
80 CreateCanister(CreateCanisterResponse),
81 UpgradeCanister(UpgradeCanisterResponse),
82 Cycles(CyclesResponse),
83}
84
85pub type AuthenticatedResponse = Response;
86
87#[derive(CandidType, Clone, Debug, Deserialize, Serialize)]
93pub struct CreateCanisterResponse {
94 pub new_canister_pid: Principal,
95}
96
97#[derive(CandidType, Clone, Debug, Deserialize, Serialize)]
103pub struct UpgradeCanisterResponse {}
104
105#[derive(CandidType, Clone, Debug, Deserialize, Serialize)]
111pub struct CyclesResponse {
112 pub cycles_transferred: u128,
113}