#![allow(
missing_docs,
clippy::doc_markdown,
clippy::struct_excessive_bools,
clippy::derive_partial_eq_without_eq
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PanprotoProtocol {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub constraint_sorts: Option<Vec<String>>,
pub created_at: idiolect_records::Datetime,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub edge_rules: Option<Vec<EdgeRule>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_causal: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_coercions: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_coproducts: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_defaults: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_mergers: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_order: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_recursion: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub instance_composition: Option<CompositionSpec>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub instance_theory: Option<String>,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub nominal_identity: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub obj_kinds: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub schema_composition: Option<CompositionSpec>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub schema_theory: Option<String>,
}
impl crate::Record for PanprotoProtocol {
const NSID: &'static str = "dev.panproto.schema.protocol";
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CompositionSpec {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shared_sorts: Option<Vec<String>>,
pub theories: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EdgeRule {
pub edge_kind: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub src_kinds: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tgt_kinds: Option<Vec<String>>,
}