use serde::Serialize;
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct FieldMetadata {
pub rust_name: &'static str,
pub output_name: &'static str,
pub ty: &'static str,
pub is_extension: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub http_header: Option<&'static str>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct RegularVariantMetadata {
pub name: &'static str,
pub message: &'static str,
pub code: &'static str,
pub http_status: u16,
pub jsonrpc_code: i32,
#[serde(skip_serializing_if = "Option::is_none")]
pub help: Option<&'static str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<&'static str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub severity: Option<&'static str>,
pub fields: &'static [FieldMetadata],
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct TransparentVariantMetadata {
pub name: &'static str,
pub forward_to: &'static str,
}
#[derive(Debug, Clone, Serialize)]
#[serde(untagged)]
pub enum VariantMetadata {
Regular(RegularVariantMetadata),
Transparent(TransparentVariantMetadata),
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ErrorMetadata {
pub type_name: &'static str,
pub variants: &'static [VariantMetadata],
}