use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use utoipa::ToSchema;
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
#[schema(example = json!({
"burst_engine_active": true,
"brain_readiness": true,
"neuron_count": 1200000,
"cortical_area_count": 52,
"burst_count": 12345
}))]
pub struct SystemHealthResponse {
pub burst_engine_active: bool,
pub brain_readiness: bool,
pub neuron_count: usize,
pub cortical_area_count: usize,
pub burst_count: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
#[schema(example = json!({
"cortical_id": "v1",
"neuron_count": 45000,
"synapse_count": 2250000,
"density": 0.85,
"populated": true
}))]
pub struct CorticalAreaStatsResponse {
pub cortical_id: String,
pub neuron_count: usize,
pub synapse_count: usize,
pub density: f32,
pub populated: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
#[schema(example = json!({
"source_area": "v1",
"target_area": "v2",
"synapse_count": 125000,
"avg_weight": 0.75,
"excitatory_count": 100000,
"inhibitory_count": 25000
}))]
pub struct ConnectivityStatsResponse {
pub source_area: String,
pub target_area: String,
pub synapse_count: usize,
pub avg_weight: f32,
pub excitatory_count: usize,
pub inhibitory_count: usize,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
#[schema(example = json!({
"total_neurons": 1200000,
"total_synapses": 60000000,
"total_cortical_areas": 52,
"populated_areas": 45,
"avg_density": 0.82,
"per_area_stats": {}
}))]
pub struct ConnectomeAnalyticsResponse {
pub total_neurons: usize,
pub total_synapses: usize,
pub total_cortical_areas: usize,
pub populated_areas: usize,
pub avg_density: f32,
pub per_area_stats: HashMap<String, CorticalAreaStatsResponse>,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
pub struct PopulatedAreasResponse {
pub areas: Vec<PopulatedAreaInfo>,
pub total_count: usize,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
#[schema(example = json!({
"cortical_id": "v1",
"neuron_count": 45000
}))]
pub struct PopulatedAreaInfo {
pub cortical_id: String,
pub neuron_count: usize,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
#[schema(example = json!({
"cortical_id": "v1",
"density": 0.85
}))]
pub struct NeuronDensityResponse {
pub cortical_id: String,
pub density: f32,
}