use crate::fleet_ensure::model::capacity_import::CapacityImportSourceBinding;
use candid::Principal;
use canic_core::ids::FleetBinding;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct FleetReleaseAuthority {
pub fleet: FleetBinding,
pub network_root_key_sha256: [u8; 32],
pub release_build_sha256: [u8; 32],
pub operation_id: [u8; 32],
pub operator: Principal,
pub coordinator: Principal,
pub cycles_ledger: Principal,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub enum FleetReleaseRole {
Coordinator,
Root,
Store { root: Principal },
Child { root: Principal },
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub enum FleetReleaseDestination {
OperatorHeld,
IndependentPool { root: Principal },
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct FleetReleaseSourceRecord {
pub binding: CapacityImportSourceBinding,
pub snapshots: Vec<Vec<u8>>,
pub role: FleetReleaseRole,
pub destination: FleetReleaseDestination,
pub disposition_sha256: [u8; 32],
#[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_retained_cycles: u128,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub maximum_debit_cycles: u128,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub maximum_call_debit_cycles: u128,
pub maximum_paid_calls: u32,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct FleetReleaseAccountRecord {
pub ledger: Principal,
pub owner: Principal,
#[serde(deserialize_with = "crate::fleet_ensure::model::serialization::required_option")]
pub subaccount: Option<[u8; 32]>,
pub recovery_artifact_sha256: [u8; 32],
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub observed_balance: u128,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct FleetReleaseReviewRecord {
pub schema_version: u16,
pub authority: FleetReleaseAuthority,
pub sources: Vec<FleetReleaseSourceRecord>,
pub accounts: Vec<FleetReleaseAccountRecord>,
pub review_sha256: [u8; 32],
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct FleetReleaseExecutionRecord {
pub plan_sha256: String,
pub review: FleetReleaseReviewRecord,
pub reserved_paid_calls: BTreeMap<String, u32>,
}