use crate::{cdk::types::Cycles, dto::prelude::*};
#[derive(CandidType, Clone, Debug, Deserialize)]
pub struct CanisterPoolResponse {
pub entries: Vec<CanisterPoolEntry>,
}
#[derive(CandidType, Clone, Debug, Deserialize)]
pub struct CanisterPoolEntry {
pub pid: Principal,
pub created_at: u64,
pub cycles: Cycles,
pub status: CanisterPoolStatus,
pub role: Option<CanisterRole>,
pub parent: Option<Principal>,
pub module_hash: Option<Vec<u8>>,
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq)]
pub enum CanisterPoolStatus {
PendingReset,
Ready,
Failed { reason: String },
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq)]
pub enum PoolAdminCommand {
CreateEmpty,
Recycle { pid: Principal },
ImportImmediate { pid: Principal },
ImportQueued { pids: Vec<Principal> },
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq)]
pub enum PoolAdminResponse {
Created { pid: Principal },
Recycled,
Imported,
QueuedImported { result: PoolBatchResult },
FailedRequeued { result: PoolBatchResult },
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq)]
pub struct PoolBatchResult {
pub total: u64,
pub added: u64,
pub requeued: u64,
pub skipped: u64,
}