use serde::{Deserialize, Serialize};
use super::fragment_types::is_zero;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FragRegistration {
pub service: String,
pub implementation: String,
pub namespace: String,
pub line: usize,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FragPublish {
pub verb: String,
pub message: String,
pub namespace: String,
pub line: usize,
#[serde(default, rename = "outerTypes", skip_serializing_if = "Vec::is_empty")]
pub outer_types: Vec<String>,
#[serde(
default,
rename = "enclosingMethod",
skip_serializing_if = "Option::is_none"
)]
pub enclosing_method: Option<String>,
#[serde(default, rename = "argCount", skip_serializing_if = "is_zero")]
pub arg_count: usize,
#[serde(
default,
rename = "enclosingCall",
skip_serializing_if = "Option::is_none"
)]
pub enclosing_call: Option<FragEnclosingCall>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FragEnclosingCall {
pub verb: String,
#[serde(rename = "argPosition")]
pub arg_position: usize,
#[serde(rename = "argCount")]
pub arg_count: usize,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FragHandlerRegistration {
pub handler: String,
pub namespace: String,
pub line: usize,
}