use crate::part_1::v3_1::attributes::data_specification::HasDataSpecification;
use crate::part_1::v3_1::attributes::qualifiable::Qualifiable;
use crate::part_1::v3_1::attributes::referable::Referable;
use crate::part_1::v3_1::attributes::semantics::HasSemantics;
use crate::part_1::v3_1::submodel_elements::SubmodelElement;
use serde::{Deserialize, Serialize};
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize, Default)]
pub struct Operation {
#[serde(flatten)]
pub referable: Referable,
#[serde(flatten)]
pub semantics: HasSemantics,
#[serde(flatten)]
pub qualifiable: Qualifiable,
#[serde(flatten)]
pub embedded_data_specifications: HasDataSpecification,
#[serde(rename = "inputVariable")]
pub input_variable: Option<Box<SubmodelElement>>,
#[serde(rename = "outputVariable")]
pub output_variable: Option<Box<SubmodelElement>>,
#[serde(rename = "inoutputVariable")]
pub inoutput_variable: Option<Box<SubmodelElement>>,
}