/* auto-generated, do not modify */
#pragma once
#include <fwupd-common.h>
typedef enum {
    FU_GENESYS_TS_VERSION_DYNAMIC_9_BYTE = 0x30,
    FU_GENESYS_TS_VERSION_BONDING,
    FU_GENESYS_TS_VERSION_BONDING_QC,
    FU_GENESYS_TS_VERSION_VENDOR_SUPPORT,
    FU_GENESYS_TS_VERSION_MULTI_TOKEN,
    FU_GENESYS_TS_VERSION_DYNAMIC_2ND,
    FU_GENESYS_TS_VERSION_RESERVED,
    FU_GENESYS_TS_VERSION_DYNAMIC_13_BYTE,
    FU_GENESYS_TS_VERSION_BRAND_PROJECT,
} FuGenesysTsVersion;
const gchar *fu_genesys_ts_version_to_string(FuGenesysTsVersion val);
typedef enum {
    FU_GENESYS_FW_STATUS_MASK = 0x30,
    FU_GENESYS_FW_STATUS_BANK1,
    FU_GENESYS_FW_STATUS_BANK2,
} FuGenesysFwStatus;
const gchar *fu_genesys_fw_status_to_string(FuGenesysFwStatus val);
typedef enum {
    FU_GENESYS_VS_CODESIGN_CHECK_UNSUPPORTED = 0x30,
    FU_GENESYS_VS_CODESIGN_CHECK_SCALER,
    FU_GENESYS_VS_CODESIGN_CHECK_FW,
    FU_GENESYS_VS_CODESIGN_CHECK_MASTER,
    FU_GENESYS_VS_CODESIGN_CHECK_RESERVED,
    FU_GENESYS_VS_CODESIGN_CHECK_HW,
} FuGenesysVsCodesignCheck;
const gchar *fu_genesys_vs_codesign_check_to_string(FuGenesysVsCodesignCheck val);
typedef enum {
    FU_GENESYS_VS_HID_ISP_UNSUPPORTED = 0x30,
    FU_GENESYS_VS_HID_ISP_SUPPORT,
    FU_GENESYS_VS_HID_ISP_CODESIGN_N_RESET,
} FuGenesysVsHidIsp;
typedef enum {
    FU_GENESYS_FW_CODESIGN_NONE,
    FU_GENESYS_FW_CODESIGN_RSA,
    FU_GENESYS_FW_CODESIGN_ECDSA,
} FuGenesysFwCodesign;
const gchar *fu_genesys_fw_codesign_to_string(FuGenesysFwCodesign val);
typedef enum {
    FU_GENESYS_FW_TYPE_HUB,
    FU_GENESYS_FW_TYPE_DEV_BRIDGE,
    FU_GENESYS_FW_TYPE_PD,
    FU_GENESYS_FW_TYPE_CODESIGN,
    FU_GENESYS_FW_TYPE_INSIDE_HUB_COUNT,
    FU_GENESYS_FW_TYPE_SCALER,
    FU_GENESYS_FW_TYPE_UNKNOWN = 0xff,
} FuGenesysFwType;
const gchar *fu_genesys_fw_type_to_string(FuGenesysFwType val);

GByteArray *fu_struct_genesys_ts_static_new(void);
GByteArray *fu_struct_genesys_ts_static_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
GByteArray *fu_struct_genesys_ts_static_parse_bytes(GBytes *blob, gsize offset, GError **error);
gchar *fu_struct_genesys_ts_static_to_string(const GByteArray *st);
FuGenesysTsVersion fu_struct_genesys_ts_static_get_tool_string_version(const GByteArray *st);
gchar *fu_struct_genesys_ts_static_get_mask_project_code(const GByteArray *st);
gchar *fu_struct_genesys_ts_static_get_mask_project_hardware(const GByteArray *st);
gchar *fu_struct_genesys_ts_static_get_mask_project_firmware(const GByteArray *st);
gchar *fu_struct_genesys_ts_static_get_mask_project_ic_type(const GByteArray *st);
gchar *fu_struct_genesys_ts_static_get_running_project_code(const GByteArray *st);
gchar *fu_struct_genesys_ts_static_get_running_project_hardware(const GByteArray *st);
gchar *fu_struct_genesys_ts_static_get_running_project_firmware(const GByteArray *st);
gchar *fu_struct_genesys_ts_static_get_running_project_ic_type(const GByteArray *st);
gchar *fu_struct_genesys_ts_static_get_firmware_version(const GByteArray *st);
void fu_struct_genesys_ts_static_set_tool_string_version(GByteArray *st, FuGenesysTsVersion value);
gboolean fu_struct_genesys_ts_static_set_mask_project_code(GByteArray *st, const gchar *value, GError **error);
gboolean fu_struct_genesys_ts_static_set_mask_project_hardware(GByteArray *st, const gchar *value, GError **error);
gboolean fu_struct_genesys_ts_static_set_mask_project_firmware(GByteArray *st, const gchar *value, GError **error);
gboolean fu_struct_genesys_ts_static_set_mask_project_ic_type(GByteArray *st, const gchar *value, GError **error);
gboolean fu_struct_genesys_ts_static_set_running_project_code(GByteArray *st, const gchar *value, GError **error);
gboolean fu_struct_genesys_ts_static_set_running_project_hardware(GByteArray *st, const gchar *value, GError **error);
gboolean fu_struct_genesys_ts_static_set_running_project_firmware(GByteArray *st, const gchar *value, GError **error);
gboolean fu_struct_genesys_ts_static_set_running_project_ic_type(GByteArray *st, const gchar *value, GError **error);
gboolean fu_struct_genesys_ts_static_set_firmware_version(GByteArray *st, const gchar *value, GError **error);
#define FU_STRUCT_GENESYS_TS_STATIC_OFFSET_TOOL_STRING_VERSION 0x0
#define FU_STRUCT_GENESYS_TS_STATIC_OFFSET_MASK_PROJECT_CODE 0x1
#define FU_STRUCT_GENESYS_TS_STATIC_OFFSET_MASK_PROJECT_HARDWARE 0x5
#define FU_STRUCT_GENESYS_TS_STATIC_OFFSET_MASK_PROJECT_FIRMWARE 0x6
#define FU_STRUCT_GENESYS_TS_STATIC_OFFSET_MASK_PROJECT_IC_TYPE 0x8
#define FU_STRUCT_GENESYS_TS_STATIC_OFFSET_RUNNING_PROJECT_CODE 0xE
#define FU_STRUCT_GENESYS_TS_STATIC_OFFSET_RUNNING_PROJECT_HARDWARE 0x12
#define FU_STRUCT_GENESYS_TS_STATIC_OFFSET_RUNNING_PROJECT_FIRMWARE 0x13
#define FU_STRUCT_GENESYS_TS_STATIC_OFFSET_RUNNING_PROJECT_IC_TYPE 0x15
#define FU_STRUCT_GENESYS_TS_STATIC_OFFSET_FIRMWARE_VERSION 0x1B
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_MASK_PROJECT_CODE 0x4
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_MASK_PROJECT_FIRMWARE 0x2
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_MASK_PROJECT_IC_TYPE 0x6
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_RUNNING_PROJECT_CODE 0x4
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_RUNNING_PROJECT_FIRMWARE 0x2
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_RUNNING_PROJECT_IC_TYPE 0x6
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_FIRMWARE_VERSION 0x4
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE 0x1F

GByteArray *fu_struct_genesys_ts_dynamic_gl3523_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
gchar *fu_struct_genesys_ts_dynamic_gl3523_to_string(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_running_mode(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_ss_port_number(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_hs_port_number(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_ss_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_hs_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_fs_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_ls_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_charging(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_non_removable_port_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_bonding(const GByteArray *st);
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3523_OFFSET_RUNNING_MODE 0x0
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3523_OFFSET_SS_PORT_NUMBER 0x1
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3523_OFFSET_HS_PORT_NUMBER 0x2
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3523_OFFSET_SS_CONNECTION_STATUS 0x3
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3523_OFFSET_HS_CONNECTION_STATUS 0x4
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3523_OFFSET_FS_CONNECTION_STATUS 0x5
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3523_OFFSET_LS_CONNECTION_STATUS 0x6
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3523_OFFSET_CHARGING 0x7
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3523_OFFSET_NON_REMOVABLE_PORT_STATUS 0x8
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3523_OFFSET_BONDING 0x9
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3523_SIZE 0xA

GByteArray *fu_struct_genesys_ts_dynamic_gl3590_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
gchar *fu_struct_genesys_ts_dynamic_gl3590_to_string(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_running_mode(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_ss_port_number(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_hs_port_number(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_ss_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_hs_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_fs_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_ls_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_charging(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_non_removable_port_status(const GByteArray *st);
guint8 fu_struct_genesys_ts_dynamic_gl3590_get_bonding(const GByteArray *st);
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3590_OFFSET_RUNNING_MODE 0x0
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3590_OFFSET_SS_PORT_NUMBER 0x1
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3590_OFFSET_HS_PORT_NUMBER 0x2
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3590_OFFSET_SS_CONNECTION_STATUS 0x3
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3590_OFFSET_HS_CONNECTION_STATUS 0x4
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3590_OFFSET_FS_CONNECTION_STATUS 0x5
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3590_OFFSET_LS_CONNECTION_STATUS 0x6
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3590_OFFSET_CHARGING 0x7
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3590_OFFSET_NON_REMOVABLE_PORT_STATUS 0x8
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3590_OFFSET_BONDING 0x9
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3590_SIZE 0xA

GByteArray *fu_struct_genesys_ts_dynamic_gl359030_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
gchar *fu_struct_genesys_ts_dynamic_gl359030_to_string(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_running_mode(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_ss_port_number(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_hs_port_number(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_ss_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_hs_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_fs_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_ls_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_charging(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_non_removable_port_status(const GByteArray *st);
guint8 fu_struct_genesys_ts_dynamic_gl359030_get_bonding(const GByteArray *st);
FuGenesysFwStatus fu_struct_genesys_ts_dynamic_gl359030_get_hub_fw_status(const GByteArray *st);
FuGenesysFwStatus fu_struct_genesys_ts_dynamic_gl359030_get_dev_fw_status(const GByteArray *st);
guint16 fu_struct_genesys_ts_dynamic_gl359030_get_dev_fw_version(const GByteArray *st);
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_OFFSET_RUNNING_MODE 0x0
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_OFFSET_SS_PORT_NUMBER 0x1
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_OFFSET_HS_PORT_NUMBER 0x2
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_OFFSET_SS_CONNECTION_STATUS 0x3
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_OFFSET_HS_CONNECTION_STATUS 0x4
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_OFFSET_FS_CONNECTION_STATUS 0x5
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_OFFSET_LS_CONNECTION_STATUS 0x6
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_OFFSET_CHARGING 0x7
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_OFFSET_NON_REMOVABLE_PORT_STATUS 0x8
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_OFFSET_BONDING 0x9
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_OFFSET_HUB_FW_STATUS 0xA
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_OFFSET_DEV_FW_STATUS 0xB
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_OFFSET_DEV_FW_VERSION 0xC
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_SIZE 0xE

GByteArray *fu_struct_genesys_ts_dynamic_gl3525_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
gchar *fu_struct_genesys_ts_dynamic_gl3525_to_string(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_running_mode(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_ss_port_number(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_hs_port_number(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_ss_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_hs_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_fs_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_ls_connection_status(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_charging(const GByteArray *st);
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_non_removable_port_status(const GByteArray *st);
guint8 fu_struct_genesys_ts_dynamic_gl3525_get_bonding(const GByteArray *st);
FuGenesysFwStatus fu_struct_genesys_ts_dynamic_gl3525_get_hub_fw_status(const GByteArray *st);
FuGenesysFwStatus fu_struct_genesys_ts_dynamic_gl3525_get_pd_fw_status(const GByteArray *st);
guint16 fu_struct_genesys_ts_dynamic_gl3525_get_pd_fw_version(const GByteArray *st);
FuGenesysFwStatus fu_struct_genesys_ts_dynamic_gl3525_get_dev_fw_status(const GByteArray *st);
guint16 fu_struct_genesys_ts_dynamic_gl3525_get_dev_fw_version(const GByteArray *st);
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_RUNNING_MODE 0x0
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_SS_PORT_NUMBER 0x1
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_HS_PORT_NUMBER 0x2
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_SS_CONNECTION_STATUS 0x3
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_HS_CONNECTION_STATUS 0x4
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_FS_CONNECTION_STATUS 0x5
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_LS_CONNECTION_STATUS 0x6
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_CHARGING 0x7
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_NON_REMOVABLE_PORT_STATUS 0x8
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_BONDING 0x9
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_HUB_FW_STATUS 0xA
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_PD_FW_STATUS 0xB
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_PD_FW_VERSION 0xC
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_DEV_FW_STATUS 0xE
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_OFFSET_DEV_FW_VERSION 0xF
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_SIZE 0x11

GByteArray *fu_struct_genesys_ts_firmware_info_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
gchar *fu_struct_genesys_ts_firmware_info_to_string(const GByteArray *st);
const guint8 *fu_struct_genesys_ts_firmware_info_get_tool_version(const GByteArray *st, gsize *bufsz);
guint8 fu_struct_genesys_ts_firmware_info_get_address_mode(const GByteArray *st);
gchar *fu_struct_genesys_ts_firmware_info_get_build_fw_time(const GByteArray *st);
gchar *fu_struct_genesys_ts_firmware_info_get_update_fw_time(const GByteArray *st);
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_OFFSET_TOOL_VERSION 0x0
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_OFFSET_ADDRESS_MODE 0x6
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_OFFSET_BUILD_FW_TIME 0x7
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_OFFSET_UPDATE_FW_TIME 0x13
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_SIZE_TOOL_VERSION 0x6
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_SIZE_BUILD_FW_TIME 0xC
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_SIZE_UPDATE_FW_TIME 0xC
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_SIZE 0x1F

GByteArray *fu_struct_genesys_ts_vendor_support_new(void);
GByteArray *fu_struct_genesys_ts_vendor_support_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
gchar *fu_struct_genesys_ts_vendor_support_to_string(const GByteArray *st);
gchar *fu_struct_genesys_ts_vendor_support_get_version(const GByteArray *st);
gchar *fu_struct_genesys_ts_vendor_support_get_reserved1(const GByteArray *st);
FuGenesysVsCodesignCheck fu_struct_genesys_ts_vendor_support_get_codesign_check(const GByteArray *st);
gchar *fu_struct_genesys_ts_vendor_support_get_reserved2(const GByteArray *st);
FuGenesysVsHidIsp fu_struct_genesys_ts_vendor_support_get_hid_isp(const GByteArray *st);
gchar *fu_struct_genesys_ts_vendor_support_get_reserved3(const GByteArray *st);
gboolean fu_struct_genesys_ts_vendor_support_set_version(GByteArray *st, const gchar *value, GError **error);
gboolean fu_struct_genesys_ts_vendor_support_set_reserved1(GByteArray *st, const gchar *value, GError **error);
void fu_struct_genesys_ts_vendor_support_set_codesign_check(GByteArray *st, FuGenesysVsCodesignCheck value);
gboolean fu_struct_genesys_ts_vendor_support_set_reserved2(GByteArray *st, const gchar *value, GError **error);
void fu_struct_genesys_ts_vendor_support_set_hid_isp(GByteArray *st, FuGenesysVsHidIsp value);
gboolean fu_struct_genesys_ts_vendor_support_set_reserved3(GByteArray *st, const gchar *value, GError **error);
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_OFFSET_VERSION 0x0
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_OFFSET_RESERVED1 0x2
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_OFFSET_CODESIGN_CHECK 0xA
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_OFFSET_RESERVED2 0xB
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_OFFSET_HID_ISP 0xF
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_OFFSET_RESERVED3 0x10
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_SIZE_VERSION 0x2
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_SIZE_RESERVED1 0x8
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_SIZE_RESERVED2 0x4
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_SIZE_RESERVED3 0xF
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_SIZE 0x1F

GByteArray *fu_struct_genesys_ts_brand_project_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
gchar *fu_struct_genesys_ts_brand_project_to_string(const GByteArray *st);
gchar *fu_struct_genesys_ts_brand_project_get_project(const GByteArray *st);
#define FU_STRUCT_GENESYS_TS_BRAND_PROJECT_OFFSET_PROJECT 0x0
#define FU_STRUCT_GENESYS_TS_BRAND_PROJECT_SIZE_PROJECT 0xF
#define FU_STRUCT_GENESYS_TS_BRAND_PROJECT_SIZE 0xF

GByteArray *fu_struct_genesys_fw_codesign_info_rsa_parse_bytes(GBytes *blob, gsize offset, GError **error);
gboolean fu_struct_genesys_fw_codesign_info_rsa_validate_bytes(GBytes *blob, gsize offset, GError **error);
gchar *fu_struct_genesys_fw_codesign_info_rsa_get_text_n(const GByteArray *st);
gchar *fu_struct_genesys_fw_codesign_info_rsa_get_text_e(const GByteArray *st);
const guint8 *fu_struct_genesys_fw_codesign_info_rsa_get_signature(const GByteArray *st, gsize *bufsz);
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_OFFSET_TAG_N 0x0
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_OFFSET_TEXT_N 0x4
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_OFFSET_END_N 0x204
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_OFFSET_TAG_E 0x206
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_OFFSET_TEXT_E 0x20A
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_OFFSET_END_E 0x210
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_OFFSET_SIGNATURE 0x212
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_SIZE_TEXT_N 0x200
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_SIZE_TEXT_E 0x6
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_SIZE_SIGNATURE 0x100
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_SIZE 0x312
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_DEFAULT_TAG_N 0x4E203D20
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_DEFAULT_END_N 0x0D0A
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_DEFAULT_TAG_E 0x45203D20
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_DEFAULT_END_E 0x0D0A

GByteArray *fu_struct_genesys_fw_rsa_public_key_text_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
gboolean fu_struct_genesys_fw_rsa_public_key_text_validate(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
gchar *fu_struct_genesys_fw_rsa_public_key_text_get_text_n(const GByteArray *st);
gchar *fu_struct_genesys_fw_rsa_public_key_text_get_text_e(const GByteArray *st);
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_OFFSET_TAG_N 0x0
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_OFFSET_TEXT_N 0x4
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_OFFSET_END_N 0x204
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_OFFSET_TAG_E 0x206
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_OFFSET_TEXT_E 0x20A
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_OFFSET_END_E 0x210
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_SIZE_TEXT_N 0x200
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_SIZE_TEXT_E 0x6
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_SIZE 0x212
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_DEFAULT_TAG_N 0x4E203D20
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_DEFAULT_END_N 0x0D0A
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_DEFAULT_TAG_E 0x45203D20
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_DEFAULT_END_E 0x0D0A

GByteArray *fu_struct_genesys_fw_codesign_info_ecdsa_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
GByteArray *fu_struct_genesys_fw_codesign_info_ecdsa_parse_bytes(GBytes *blob, gsize offset, GError **error);
gboolean fu_struct_genesys_fw_codesign_info_ecdsa_validate(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
gboolean fu_struct_genesys_fw_codesign_info_ecdsa_validate_bytes(GBytes *blob, gsize offset, GError **error);
const guint8 *fu_struct_genesys_fw_codesign_info_ecdsa_get_hash(const GByteArray *st, gsize *bufsz);
const guint8 *fu_struct_genesys_fw_codesign_info_ecdsa_get_key(const GByteArray *st, gsize *bufsz);
const guint8 *fu_struct_genesys_fw_codesign_info_ecdsa_get_signature(const GByteArray *st, gsize *bufsz);
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_OFFSET_HASH 0x0
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_OFFSET_KEY 0x20
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_OFFSET_SIGNATURE 0x60
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_SIZE_HASH 0x20
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_SIZE_KEY 0x40
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_SIZE_SIGNATURE 0x40
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_SIZE 0xA0

GByteArray *fu_struct_genesys_fw_ecdsa_public_key_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
gboolean fu_struct_genesys_fw_ecdsa_public_key_validate(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
const guint8 *fu_struct_genesys_fw_ecdsa_public_key_get_key(const GByteArray *st, gsize *bufsz);
#define FU_STRUCT_GENESYS_FW_ECDSA_PUBLIC_KEY_OFFSET_KEY 0x0
#define FU_STRUCT_GENESYS_FW_ECDSA_PUBLIC_KEY_SIZE_KEY 0x40
#define FU_STRUCT_GENESYS_FW_ECDSA_PUBLIC_KEY_SIZE 0x40
