use crate::core_model::{Feature, MissionCapability, MissionStatus, SettingUpdate};
use crate::spatial_types::GeoPose;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct MissionState {
pub unix_time_ms: i64,
pub mission_id: String,
pub run_id: String,
pub name: String,
pub user_id: String, pub status: MissionStatus,
pub detail: String,
pub fault_code: String,
pub progress_pct: f32,
pub current_path_id: Option<String>,
pub current_target: Option<GeoPose>,
pub current_target_index: u32,
pub total_waypoints: u32,
pub scheduled_start: DateTime<Utc>,
pub time_started: Option<DateTime<Utc>>,
pub expected_end_time: Option<DateTime<Utc>>,
pub time_completed: Option<DateTime<Utc>>,
pub mission_parameters: Vec<SettingUpdate>,
pub feature: Option<Feature>,
pub capabilities: Vec<MissionCapability>,
}