use derive_builder::Builder;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;
pub type PortMap = HashMap<String, Vec<PortBinding>>;
pub type PortSet = HashMap<String, HashMap<String, Value>>;
#[derive(Clone, Debug, Default, Deserialize, Serialize, Builder)]
#[builder(default, setter(into))]
pub struct Port {
#[serde(rename = "IP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ip: Option<String>,
#[serde(rename = "PrivatePort")]
pub private_port: u16,
#[serde(rename = "PublicPort")]
#[serde(skip_serializing_if = "Option::is_none")]
pub public_port: Option<u16>,
#[serde(rename = "Type")]
pub port_type: String,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize, Builder)]
#[builder(default, setter(into))]
pub struct PortBinding {
#[serde(rename = "HostIp")]
#[serde(skip_serializing_if = "Option::is_none")]
pub host_ip: Option<String>,
#[serde(rename = "HostPort")]
#[serde(skip_serializing_if = "Option::is_none")]
pub host_port: Option<String>,
}