1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use super::*;
use crate::rust::collections::IndexMap;
use crate::rust::vec::Vec;

/// A schema for the values that a codec can decode / views as valid
#[derive(Debug, Clone, PartialEq, Eq, Sbor)]
#[sbor(child_types = "C,L")]
pub enum TypeKind<C: CustomTypeKind<L>, L: SchemaTypeLink> {
    Any,

    // Simple Types
    Bool,
    I8,
    I16,
    I32,
    I64,
    I128,
    U8,
    U16,
    U32,
    U64,
    U128,
    String,

    // Composite Types
    Array { element_type: L },

    Tuple { field_types: Vec<L> },

    Enum { variants: IndexMap<u8, Vec<L>> },

    Map { key_type: L, value_type: L },

    // Custom Types
    Custom(C),
}