use crate::model::TypeBool;
use crate::model::TypeChr;
use crate::model::TypeEnum;
use crate::model::TypeF32;
use crate::model::TypeF64;
use crate::model::TypeFlags;
use crate::model::TypeList;
use crate::model::TypeOption;
use crate::model::TypeRecord;
use crate::model::TypeResult;
use crate::model::TypeS16;
use crate::model::TypeS32;
use crate::model::TypeS64;
use crate::model::TypeS8;
use crate::model::TypeStr;
use crate::model::TypeTuple;
use crate::model::TypeU16;
use crate::model::TypeU32;
use crate::model::TypeU64;
use crate::model::TypeU8;
use crate::model::TypeVariant;
use serde::Deserialize;
use serde::Serialize;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum Type {
Variant(TypeVariant),
Result(Box<TypeResult>),
Option(Box<TypeOption>),
Enum(TypeEnum),
Flags(TypeFlags),
Record(TypeRecord),
Tuple(TypeTuple),
List(Box<TypeList>),
Str(TypeStr),
Chr(TypeChr),
F64(TypeF64),
F32(TypeF32),
U64(TypeU64),
S64(TypeS64),
U32(TypeU32),
S32(TypeS32),
U16(TypeU16),
S16(TypeS16),
U8(TypeU8),
S8(TypeS8),
Bool(TypeBool),
}