use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use utoipa::ToSchema;
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
pub struct PhysiologyResponse {
pub physiology: PhysiologyParameters,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
pub struct PhysiologyParameters {
pub simulation_timestep: f64,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_age: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub evolution_burst_count: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ipu_idle_threshold: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub plasticity_queue_depth: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lifespan_mgmt_interval: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sleep_trigger_inactivity_window: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sleep_trigger_neural_activity_max: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub quantization_precision: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
pub struct PhysiologyUpdateRequest {
pub physiology: HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
pub struct PhysiologyUpdateResponse {
pub success: bool,
pub updated: HashMap<String, serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}