#include <ccan/short_types/short_types.h>
#include <common/amount.h>
#include <common/bigsize.h>
#include <common/utils.h>
#include "enum.h"
# AUTOGENERATED MOCKS START
# AUTOGENERATED MOCKS END

# omnibus method
msgtype,test_msg,16
# test array u8 (helper)
msgdata,test_msg,test_arr_u8,u8,10
# test array assignable
msgdata,test_msg,test_arr_assignable,u16,5
# test var len u8 (helper)
msgdata,test_msg,len_var_u8,u16,
msgdata,test_msg,test_var_len_u8_arr,byte,len_var_u8
# test variable length assignable
msgdata,test_msg,len_var_ass,u16,
msgdata,test_msg,test_var_len_ass_arr,u32,len_var_ass
# test array struct
msgdata,test_msg,test_struct_arr,test_short_id,10
# test var-len struct
msgdata,test_msg,len_test_struct_varlen,u16,
msgdata,test_msg,test_struct_varlen,test_short_id,len_test_struct_varlen
# test var-len var-size struct
msgdata,test_msg,len_varsize_struct,u16,
msgdata,test_msg,test_varsize_struct_varlen,test_features,len_varsize_struct
# assignable
msgdata,test_msg,test_assignable,u16,
# enum
msgdata,test_msg,test_enum,enum test_enum,
# test struct
msgdata,test_msg,test_struct,test_short_id,
# test var-size struct
msgdata,test_msg,test_varsize_struct,test_features,
# test optional assignable
msgdata,test_msg,test_optional_assignable,?u32,
# test optional struct
msgdata,test_msg,test_optional_struct,?test_short_id,
# test optional var-size struct
msgdata,test_msg,test_optional_varsize_struct,?test_features,
msgdata,test_msg,test_sbt_struct_nested,subtype_nested,
msgdata,test_msg,test_sbt_varsize_struct,subtype_varsize_struct,
msgdata,test_msg,test_sbt_varsize_var_assign,subtype_var_assign,
msgdata,test_msg,test_sbt_var_len,subtype_var_len,
msgdata,test_msg,test_sbt_varlen_varsize,subtype_varlen_varsize,
msgdata,test_msg,test_sbt_arrays,subtype_arrays,
# test extension fields
msgdata,test_msg,extension_1,test_features,,option_short_id
msgdata,test_msg,extension_2,test_short_id,,option_one,option_two

msgtype,test_ifdef,100
#ifdef TEST_IFDEF
msgdata,test_ifdef,is_def,u32,

msgtype,test_tlv1,2
msgdata,test_tlv1,test_struct,test_short_id,
msgdata,test_tlv1,tlv,test_n1,

msgtype,test_tlv2,3
msgdata,test_tlv2,tlv,test_n2,

msgtype,test_tlv3,4
msgdata,test_tlv3,tlv,test_n3,

# A subtype with a nested subtype
subtype,subtype_nested
subtypedata,subtype_nested,field_1,test_short_id,

# subtype with a nested varsize size struct
subtype,subtype_varsize_struct
subtypedata,subtype_varsize_struct,field_0,test_features,

# A subtype to test varsize things of
# - A two level subtype comment
subtype,subtype_var_assign
# variable length set of assignables (helper)
subtypedata,subtype_var_assign,len_1,u8,
subtypedata,subtype_var_assign,field_1,u16,len_1
# variable length set of assignables (helper)

# Subtype to test arrays of things
subtype,subtype_arrays
subtypedata,subtype_arrays,field1,u8,2
subtypedata,subtype_arrays,field2,u16,2
subtypedata,subtype_arrays,field3,test_short_id,2

# variable length set of structs
subtype,subtype_var_len
subtypedata,subtype_var_len,len_2,u8,
subtypedata,subtype_var_len,field_2,test_short_id,len_2

subtype,subtype_varlen_varsize
# variable length set of variable size structs
subtypedata,subtype_varlen_varsize,len,u8,
subtypedata,subtype_varlen_varsize,field_1,test_features,len

# normal struct
subtype,test_short_id
subtypedata,test_short_id,u64,u64,

# var-sized struct
subtype,test_features
subtypedata,test_features,len_lf,u16,
subtypedata,test_features,localfeatures,u8,len_lf
subtypedata,test_features,len_gf,u16,
subtypedata,test_features,globalfeatures,u8,len_gf

# TLV's!
tlvtype,test_n1,tlv1,1
# a truncated u64
tlvdata,test_n1,tlv1,amount_msat,tu64,
tlvtype,test_n1,tlv2,2
# neseted subtype
tlvdata,test_n1,tlv2,scid,test_short_id,
tlvtype,test_n1,tlv3,3
tlvdata,test_n1,tlv3,features,test_features,
tlvdata,test_n1,tlv3,amount_msat_1,u64,
tlvdata,test_n1,tlv3,amount_msat_2,u64,
tlvtype,test_n1,tlv4,254
tlvdata,test_n1,tlv4,cltv_delta,u16,
tlvtype,test_n2,tlv1,0
tlvdata,test_n2,tlv1,amount_msat,tu64,
tlvtype,test_n2,tlv2,11
tlvdata,test_n2,tlv2,cltv_expiry,tu32,
# TLV with all varsized atest_nd array structs
tlvtype,test_n3,tlv3,1
tlvdata,test_n3,tlv3,subtype,test_short_id,
tlvdata,test_n3,tlv3,varlen_subtype,subtype_var_len,
tlvdata,test_n3,tlv3,varlen_assigned,subtype_var_assign,
tlvdata,test_n3,tlv3,test_sbt_varlen_varsize,subtype_varlen_varsize,
# array assigtest_nable
tlvdata,test_n3,tlv3,arr_assign,u32,2
# array structs
tlvdata,test_n3,tlv3,arr_struct,test_short_id,2
# varletest_n assignable (helper)
tlvdata,test_n3,tlv3,len_lf,u16,
tlvdata,test_n3,tlv3,localfeatures,u8,len_lf
# varletest_n assignable (no-helper)
tlvdata,test_n3,tlv3,len_varlen_ass,u16,
tlvdata,test_n3,tlv3,varlen_ass,u64,len_varlen_ass
# varletest_n structs
tlvdata,test_n3,tlv3,len_varlen,u8,
tlvdata,test_n3,tlv3,varlen_struct,test_short_id,len_varlen
# varletest_n varsized structs
tlvdata,test_n3,tlv3,len_varlenvarsize,u8,
tlvdata,test_n3,tlv3,varlen_varsize,test_features,len_varlenvarsize
# implicit length
tlvdata,test_n3,tlv3,remainder,byte,...
