use num_enum::{IntoPrimitive, TryFromPrimitive};

#[derive(
    Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, IntoPrimitive, TryFromPrimitive,
)]
#[repr(u8)]
pub enum ValueKind {
    None = 0,
    Some = 1,
    Bool = 2,
    U8 = 3,
    I8 = 4,
    U16 = 5,
    I16 = 6,
    U32 = 7,
    I32 = 8,
    U64 = 9,
    I64 = 10,
    F32 = 11,
    F64 = 12,
    String = 13,
    Uuid = 14,
    ObjectId = 15,
    ServiceId = 16,
    Vec1 = 17,
    Bytes1 = 18,
    U8Map1 = 19,
    I8Map1 = 20,
    U16Map1 = 21,
    I16Map1 = 22,
    U32Map1 = 23,
    I32Map1 = 24,
    U64Map1 = 25,
    I64Map1 = 26,
    StringMap1 = 27,
    UuidMap1 = 28,
    U8Set1 = 29,
    I8Set1 = 30,
    U16Set1 = 31,
    I16Set1 = 32,
    U32Set1 = 33,
    I32Set1 = 34,
    U64Set1 = 35,
    I64Set1 = 36,
    StringSet1 = 37,
    UuidSet1 = 38,
    Struct1 = 39,
    Enum = 40,
    Sender = 41,
    Receiver = 42,
    Vec2 = 43,
    Bytes2 = 44,
    U8Map2 = 45,
    I8Map2 = 46,
    U16Map2 = 47,
    I16Map2 = 48,
    U32Map2 = 49,
    I32Map2 = 50,
    U64Map2 = 51,
    I64Map2 = 52,
    StringMap2 = 53,
    UuidMap2 = 54,
    U8Set2 = 55,
    I8Set2 = 56,
    U16Set2 = 57,
    I16Set2 = 58,
    U32Set2 = 59,
    I32Set2 = 60,
    U64Set2 = 61,
    I64Set2 = 62,
    StringSet2 = 63,
    UuidSet2 = 64,
    Struct2 = 65,
}
