use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct TaploSchemaExt {
#[serde(skip_serializing_if = "Option::is_none")]
pub hidden: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub links: Option<ExtLinks>,
#[serde(skip_serializing_if = "Option::is_none")]
pub docs: Option<ExtDocs>,
#[serde(skip_serializing_if = "Option::is_none")]
pub init_keys: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub plugins: Vec<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct ExtDocs {
#[serde(skip_serializing_if = "Option::is_none")]
pub main: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub const_value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enum_values: Option<Vec<Option<String>>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct ExtLinks {
#[serde(skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enum_values: Option<Vec<Option<String>>>,
}