use serde::Deserialize;
#[derive(Debug, Clone, Deserialize, Default)]
pub struct Component {
#[serde(alias = "source_component_id", alias = "sourceComponentId")]
pub component_id: Option<String>,
#[serde(alias = "ftype")]
pub kind: Option<String>,
#[serde(default)]
pub name: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Default)]
pub struct Net {
#[serde(alias = "source_net_id", alias = "sourceNetId", alias = "netId")]
pub net_id: Option<String>,
#[serde(alias = "netName")]
pub name: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Default)]
pub struct Port {
#[serde(alias = "source_port_id", alias = "sourcePortId")]
pub port_id: Option<String>,
#[serde(alias = "portName")]
pub name: Option<String>,
#[serde(alias = "source_net_id", alias = "sourceNetId", alias = "netId")]
pub net_id: Option<String>,
#[serde(default, alias = "source_component_id", alias = "sourceComponentId")]
pub source_component_id: Option<String>,
#[serde(default, alias = "pin_number", alias = "pinNumber")]
pub pin_number: Option<u32>,
#[serde(default, alias = "port_hints", alias = "portHints")]
pub port_hints: Option<Vec<String>>,
}
#[derive(Debug, Clone, Copy, Deserialize, Default)]
pub struct PadPoint {
pub x: f64,
pub y: f64,
}
#[derive(Debug, Clone, Deserialize, Default)]
pub struct Pad {
#[serde(
alias = "source_pad_id",
alias = "sourcePadId",
alias = "pcb_smtpad_id"
)]
pub pad_id: Option<String>,
#[serde(alias = "source_net_id", alias = "sourceNetId", alias = "netId")]
pub net_id: Option<String>,
#[serde(default, alias = "source_port_id", alias = "port_id")]
pub port_id: Option<String>,
#[serde(default, alias = "pcbPortId")]
pub pcb_port_id: Option<String>,
#[serde(default)]
pub x: Option<f64>,
#[serde(default)]
pub y: Option<f64>,
#[serde(default)]
pub width: Option<f64>,
#[serde(default)]
pub height: Option<f64>,
#[serde(default)]
pub radius: Option<f64>,
#[serde(default)]
pub points: Option<Vec<PadPoint>>,
#[serde(default)]
pub layer: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Default)]
pub struct PcbPort {
#[serde(alias = "pcbPortId")]
pub pcb_port_id: Option<String>,
#[serde(default, alias = "sourcePortId")]
pub source_port_id: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Default)]
pub struct Trace {
#[serde(alias = "source_trace_id", alias = "sourceTraceId")]
pub trace_id: Option<String>,
#[serde(
default,
alias = "connectedSourcePortIds",
alias = "connected_port_ids",
alias = "connectedPortIds"
)]
pub connected_source_port_ids: Vec<String>,
#[serde(
default,
alias = "connectedSourceNetIds",
alias = "connected_net_ids",
alias = "connectedNetIds"
)]
pub connected_source_net_ids: Vec<String>,
#[serde(default, alias = "display_name", alias = "displayName")]
pub name: Option<String>,
#[serde(default, alias = "subcircuit_connectivity_map_key")]
pub connectivity_key: Option<String>,
}