use super::var::VarV1;
use genotype_json_types::GtjAny;
use litty::literal;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SignatureV1 {
pub input: Vec<SignatureInputV1>,
pub output: SignatureOutputV1,
pub n: u8,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SignatureInputFieldsV1 {
pub input: Vec<SignatureInputV1>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SignatureInputV1 {
pub r#type: SignatureInputV1Type,
pub var: VarV1,
}
#[literal("string")]
pub struct SignatureInputV1TypeString;
#[literal("number")]
pub struct SignatureInputV1TypeNumber;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum SignatureInputV1Type {
String(SignatureInputV1TypeString),
Number(SignatureInputV1TypeNumber),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum SignatureOutputV1 {
SignatureOutputStringV1(SignatureOutputStringV1),
SignatureOutputJsonV1(SignatureOutputJsonV1),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SignatureOutputBaseV1 {
pub var: VarV1,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SignatureOutputStringV1 {
pub var: VarV1,
pub r#type: SignatureOutputStringV1TypeString,
}
#[literal("string")]
pub struct SignatureOutputStringV1TypeString;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SignatureOutputJsonV1 {
pub var: VarV1,
pub r#type: SignatureOutputJsonV1TypeJson,
pub descriptor: GtjAny,
}
#[literal("json")]
pub struct SignatureOutputJsonV1TypeJson;