use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize)]
pub struct RegisterRequest {
pub fcm_token: String,
pub install_id: String,
pub key: String,
pub locale: String,
pub model: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub tos: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub device_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub serial_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Debug, Deserialize)]
pub struct RegisterResponse {
pub id: String,
pub token: String,
pub account: Account,
pub config: Config,
}
#[derive(Debug, Deserialize)]
pub struct Account {
#[serde(default)]
pub license: String,
#[serde(default)]
pub warp_plus: bool,
}
#[derive(Debug, Deserialize)]
pub struct Config {
pub interface: Interface,
pub peers: Vec<Peer>,
#[serde(default)]
pub client_id: Option<String>,
}
#[derive(Debug, Deserialize)]
pub struct Interface {
pub addresses: NetworkAddress,
}
#[derive(Debug, Deserialize)]
pub struct NetworkAddress {
pub v4: String,
pub v6: String,
}
#[derive(Debug, Deserialize)]
pub struct Peer {
pub public_key: String,
pub endpoint: Endpoint,
}
#[derive(Debug, Deserialize)]
pub struct Endpoint {
pub host: String,
pub v4: String,
pub v6: String,
}
#[derive(Debug, Deserialize)]
pub struct GetSourceDeviceResponse {
pub config: Config,
pub account: Account,
}
#[derive(Debug, Serialize)]
pub struct UpdateAccountRequest {
pub license: String,
}