use serde::{Deserialize, Serialize};
use smol_str::SmolStr;
#[derive(Debug, Serialize, Deserialize)]
pub struct PrintPayload {
pub sequence_id: SmolStr,
#[serde(flatten)]
pub command: PrintCommand,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(tag = "command")]
pub enum PrintCommand {
#[serde(rename = "pause")]
Pause,
#[serde(rename = "resume")]
Resume,
#[serde(rename = "stop")]
Stop,
#[serde(rename = "print_speed")]
PrintSpeed { param: SmolStr },
#[serde(rename = "gcode_line")]
GcodeLine { param: SmolStr },
#[serde(rename = "extrusion_cali_get")]
ExtrusionCalibrationGet {
filament_id: SmolStr,
nozzle_diameter: SmolStr,
},
}