use candid::Principal;
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct LocalFleetConfig {
pub schema_version: u16,
pub name: String,
pub server_binary: PathBuf,
pub server_binary_sha256: String,
pub gateway_port: u16,
pub application_subnets: u8,
pub maximum_canisters: u16,
pub canister_memory_bytes: u64,
pub allocation_debit_cycles: u64,
pub request_timeout_secs: u32,
pub server_lifetime_secs: u32,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct LocalAllocationInput {
pub name: String,
pub role: String,
pub application_subnet: u8,
pub controller: Principal,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct LocalAllocationRecord {
pub input: LocalAllocationInput,
pub canister_id: Principal,
pub subnet_id: Principal,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct LocalFleetRecord {
pub schema_version: u16,
pub canic_version: String,
pub session_id: String,
pub configuration: LocalFleetConfig,
pub application_subnets: Vec<Principal>,
pub root_key_der_hex: String,
pub allocations: Vec<LocalAllocationIntentRecord>,
pub checkpoint: LocalCheckpoint,
#[serde(deserialize_with = "Option::deserialize")]
pub release_build_id: Option<canic_contracts::ids::ReleaseBuildId>,
}
#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum LocalCheckpoint {
Saved,
Running,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct LocalAllocationIntentRecord {
pub input: LocalAllocationInput,
pub subnet_id: Principal,
pub created_at_time: u64,
#[serde(deserialize_with = "Option::deserialize")]
pub canister_id: Option<Principal>,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct LocalResetRecord {
pub schema_version: u16,
pub session_id: String,
pub complete: bool,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct LocalPreparationRecord {
pub schema_version: u16,
pub source_sha256: String,
pub workspace_root: PathBuf,
#[serde(deserialize_with = "Option::deserialize")]
pub prepared: Option<crate::fleet_ensure::model::DesiredFleet>,
pub roots: Vec<LocalRootInstallRecord>,
pub complete: bool,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct LocalRootInstallRecord {
pub name: String,
pub wasm_sha256: String,
pub arguments_sha256: String,
pub attempts: u32,
pub verified: bool,
}