pub mod admission;
pub mod funding;
pub mod operation;
pub mod retirement;
pub mod survey;
use candid::Principal;
use canic_contracts::ids::{FleetBinding, SubnetId};
use serde::{Deserialize, Serialize};
pub const DEFAULT_IMPORT_SOURCE_DEBIT_CYCLES: u128 = 100_000_000_000;
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct CapacityImportBootstrapRecord {
pub review_sha256: [u8; 32],
pub operator: Principal,
pub sources: Vec<Principal>,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct CapacityImportAuthority {
pub fleet: FleetBinding,
pub network_root_key_sha256: [u8; 32],
pub operator: Principal,
pub coordinator: Principal,
pub root: Principal,
pub subnet: SubnetId,
pub root_authority_sha256: [u8; 32],
pub import_sequence: u64,
pub recovery_controllers: Vec<Principal>,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct CapacityImportSourceBinding {
pub canister_id: Principal,
pub subnet: SubnetId,
pub controllers: Vec<Principal>,
#[serde(deserialize_with = "crate::fleet_ensure::model::serialization::required_option")]
pub module_sha256: Option<[u8; 32]>,
pub canister_version: u64,
pub stopped: bool,
pub snapshots_size_bytes: u64,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub enum CapacityImportDisposition {
AbsenceEvidence { evidence_sha256: [u8; 32] },
Retired { evidence_sha256: [u8; 32] },
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct CapacityImportSourceRecord {
pub binding: CapacityImportSourceBinding,
pub disposition: CapacityImportDisposition,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub observed_cycles: u128,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub observed_reserved_cycles: u128,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub minimum_ready_cycles: u128,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub maximum_debit_cycles: u128,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct CapacityImportPlanRecord {
pub funding_credits: Vec<funding::CapacityImportFundingCreditRecord>,
pub schema_version: u16,
#[serde(deserialize_with = "crate::fleet_ensure::model::serialization::required_option")]
pub admission: Option<admission::CapacityImportAdmissionRecord>,
pub authority: CapacityImportAuthority,
pub sources: Vec<CapacityImportSourceRecord>,
pub transitional_controllers: Vec<Principal>,
pub final_controllers: Vec<Principal>,
pub root_budget: CapacityImportRootBudget,
pub plan_sha256: [u8; 32],
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct CapacityImportHandoffRecord {
pub canister_id: Principal,
pub retirements: Vec<retirement::CapacityImportHandoffRetirementRecord>,
#[serde(deserialize_with = "crate::fleet_ensure::model::serialization::required_option")]
pub effect: Option<crate::fleet_ensure::model::EffectRecord>,
#[serde(deserialize_with = "crate::fleet_ensure::model::serialization::required_option")]
pub request: Option<CapacityImportHandoffRequestRecord>,
#[serde(with = "crate::fleet_ensure::model::option_u128_text")]
pub before_reserved_cycles: Option<u128>,
#[serde(with = "crate::fleet_ensure::model::option_u128_text")]
pub after_reserved_cycles: Option<u128>,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct CapacityImportJournalRecord {
pub plan: CapacityImportPlanRecord,
#[serde(deserialize_with = "crate::fleet_ensure::model::serialization::required_option")]
pub operation: Option<operation::CapacityImportOperationRecord>,
pub approved: bool,
#[serde(deserialize_with = "crate::fleet_ensure::model::serialization::required_option")]
pub reservation: Option<CapacityImportReservationRecord>,
pub handoffs: Vec<CapacityImportHandoffRecord>,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct CapacityImportReservationRecord {
pub plan_sha256: [u8; 32],
pub authority: CapacityImportAuthority,
pub sources: Vec<Principal>,
}
#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct CapacityImportRootBudget {
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub observed_reserved_cycles: u128,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub observed_cycles: u128,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub minimum_retained_cycles: u128,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub maximum_debit_cycles: u128,
pub maximum_paid_calls: u32,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct CapacityImportHandoffRequestRecord {
pub request_id: [u8; 32],
pub ingress_expiry: u64,
pub signed_envelope_hex: String,
}