/*
 * This file is auto-generated, do not modify!
 *
 * SPDX-License-Identifier: LGPL-2.1-or-later
 */

#pragma once
#include <fu-input-stream.h>
/**
 * FuGenesysTsVersion:
 *
 * Tool String Descriptor
 */
typedef enum {
    /**
     * FU_GENESYS_TS_VERSION_DYNAMIC_9_BYTE:
     */
    FU_GENESYS_TS_VERSION_DYNAMIC_9_BYTE = 0x30,
    /**
     * FU_GENESYS_TS_VERSION_BONDING:
     */
    FU_GENESYS_TS_VERSION_BONDING,
    /**
     * FU_GENESYS_TS_VERSION_BONDING_QC:
     */
    FU_GENESYS_TS_VERSION_BONDING_QC,
    /**
     * FU_GENESYS_TS_VERSION_VENDOR_SUPPORT:
     */
    FU_GENESYS_TS_VERSION_VENDOR_SUPPORT,
    /**
     * FU_GENESYS_TS_VERSION_MULTI_TOKEN:
     */
    FU_GENESYS_TS_VERSION_MULTI_TOKEN,
    /**
     * FU_GENESYS_TS_VERSION_DYNAMIC_2ND:
     */
    FU_GENESYS_TS_VERSION_DYNAMIC_2ND,
    /**
     * FU_GENESYS_TS_VERSION_RESERVED:
     */
    FU_GENESYS_TS_VERSION_RESERVED,
    /**
     * FU_GENESYS_TS_VERSION_DYNAMIC_13_BYTE:
     */
    FU_GENESYS_TS_VERSION_DYNAMIC_13_BYTE,
    /**
     * FU_GENESYS_TS_VERSION_BRAND_PROJECT:
     */
    FU_GENESYS_TS_VERSION_BRAND_PROJECT,
}  FuGenesysTsVersion;
const gchar *fu_genesys_ts_version_to_string(FuGenesysTsVersion val) G_GNUC_CONST;
/**
 * FuGenesysFwStatus:
 */
typedef enum {
    /**
     * FU_GENESYS_FW_STATUS_MASK:
     */
    FU_GENESYS_FW_STATUS_MASK = 0x30,
    /**
     * FU_GENESYS_FW_STATUS_BANK1:
     */
    FU_GENESYS_FW_STATUS_BANK1,
    /**
     * FU_GENESYS_FW_STATUS_BANK2:
     */
    FU_GENESYS_FW_STATUS_BANK2,
}  FuGenesysFwStatus;
const gchar *fu_genesys_fw_status_to_string(FuGenesysFwStatus val) G_GNUC_CONST;
/**
 * FuGenesysVsCodesignCheck:
 */
typedef enum {
    /**
     * FU_GENESYS_VS_CODESIGN_CHECK_UNSUPPORTED:
     */
    FU_GENESYS_VS_CODESIGN_CHECK_UNSUPPORTED = 0x30,
    /**
     * FU_GENESYS_VS_CODESIGN_CHECK_SCALER:
     */
    FU_GENESYS_VS_CODESIGN_CHECK_SCALER,
    /**
     * FU_GENESYS_VS_CODESIGN_CHECK_FW:
     */
    FU_GENESYS_VS_CODESIGN_CHECK_FW,
    /**
     * FU_GENESYS_VS_CODESIGN_CHECK_MASTER:
     *
     * there is a master hub has Scaler or Hw, and this hub verified by the master.
     */
    FU_GENESYS_VS_CODESIGN_CHECK_MASTER,
    /**
     * FU_GENESYS_VS_CODESIGN_CHECK_RESERVED:
     */
    FU_GENESYS_VS_CODESIGN_CHECK_RESERVED,
    /**
     * FU_GENESYS_VS_CODESIGN_CHECK_HW:
     */
    FU_GENESYS_VS_CODESIGN_CHECK_HW,
}  FuGenesysVsCodesignCheck;
const gchar *fu_genesys_vs_codesign_check_to_string(FuGenesysVsCodesignCheck val) G_GNUC_CONST;
/**
 * FuGenesysVsHidIsp:
 */
typedef enum {
    /**
     * FU_GENESYS_VS_HID_ISP_UNSUPPORTED:
     */
    FU_GENESYS_VS_HID_ISP_UNSUPPORTED = 0x30,
    /**
     * FU_GENESYS_VS_HID_ISP_SUPPORT:
     */
    FU_GENESYS_VS_HID_ISP_SUPPORT,
    /**
     * FU_GENESYS_VS_HID_ISP_CODESIGN_N_RESET:
     *
     * Support Codesign ISP Bank2 FW without reset.
     */
    FU_GENESYS_VS_HID_ISP_CODESIGN_N_RESET,
}  FuGenesysVsHidIsp;
/**
 * FuGenesysFwCodesign:
 *
 * Firmware info
 */
typedef enum {
    /**
     * FU_GENESYS_FW_CODESIGN_NONE:
     */
    FU_GENESYS_FW_CODESIGN_NONE,
    /**
     * FU_GENESYS_FW_CODESIGN_RSA:
     */
    FU_GENESYS_FW_CODESIGN_RSA,
    /**
     * FU_GENESYS_FW_CODESIGN_ECDSA:
     */
    FU_GENESYS_FW_CODESIGN_ECDSA,
}  FuGenesysFwCodesign;
#define FU_GENESYS_FW_CODESIGN_LAST 3
const gchar *fu_genesys_fw_codesign_to_string(FuGenesysFwCodesign val) G_GNUC_CONST;
/**
 * FuGenesysFwType:
 */
typedef enum {
    /**
     * FU_GENESYS_FW_TYPE_HUB:
     *
     * inside hub start
     */
    FU_GENESYS_FW_TYPE_HUB,
    /**
     * FU_GENESYS_FW_TYPE_DEV_BRIDGE:
     */
    FU_GENESYS_FW_TYPE_DEV_BRIDGE,
    /**
     * FU_GENESYS_FW_TYPE_PD:
     */
    FU_GENESYS_FW_TYPE_PD,
    /**
     * FU_GENESYS_FW_TYPE_CODESIGN:
     *
     * inside hub end
     */
    FU_GENESYS_FW_TYPE_CODESIGN,
    /**
     * FU_GENESYS_FW_TYPE_INSIDE_HUB_COUNT:
     */
    FU_GENESYS_FW_TYPE_INSIDE_HUB_COUNT,
    /**
     * FU_GENESYS_FW_TYPE_SCALER:
     *
     * vendor support start
     */
    FU_GENESYS_FW_TYPE_SCALER,
    /**
     * FU_GENESYS_FW_TYPE_UNKNOWN:
     */
    FU_GENESYS_FW_TYPE_UNKNOWN = 0xff,
}  FuGenesysFwType;
const gchar *fu_genesys_fw_type_to_string(FuGenesysFwType val) G_GNUC_CONST;
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysFirmwareHdr;

FuStructGenesysFirmwareHdr *fu_struct_genesys_firmware_hdr_ref(FuStructGenesysFirmwareHdr *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_firmware_hdr_unref(FuStructGenesysFirmwareHdr *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysFirmwareHdr, fu_struct_genesys_firmware_hdr_unref)
gboolean fu_struct_genesys_firmware_hdr_validate_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_FIRMWARE_HDR_OFFSET_MAGIC 0xFC
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_FIRMWARE_HDR_SIZE_MAGIC 0x4
#define FU_STRUCT_GENESYS_FIRMWARE_HDR_N_ELEMENTS_MAGIC 4
#define FU_STRUCT_GENESYS_FIRMWARE_HDR_SIZE 0x100
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_FIRMWARE_HDR_DEFAULT_MAGIC "XROM"
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysDevFirmwareHdr;

FuStructGenesysDevFirmwareHdr *fu_struct_genesys_dev_firmware_hdr_ref(FuStructGenesysDevFirmwareHdr *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_dev_firmware_hdr_unref(FuStructGenesysDevFirmwareHdr *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysDevFirmwareHdr, fu_struct_genesys_dev_firmware_hdr_unref)
gboolean fu_struct_genesys_dev_firmware_hdr_validate_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_DEV_FIRMWARE_HDR_OFFSET_MAGIC 0xFC
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_DEV_FIRMWARE_HDR_SIZE_MAGIC 0x4
#define FU_STRUCT_GENESYS_DEV_FIRMWARE_HDR_N_ELEMENTS_MAGIC 4
#define FU_STRUCT_GENESYS_DEV_FIRMWARE_HDR_SIZE 0x100
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_DEV_FIRMWARE_HDR_DEFAULT_MAGIC "HOST"
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysPdFirmwareHdr;

FuStructGenesysPdFirmwareHdr *fu_struct_genesys_pd_firmware_hdr_ref(FuStructGenesysPdFirmwareHdr *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_pd_firmware_hdr_unref(FuStructGenesysPdFirmwareHdr *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysPdFirmwareHdr, fu_struct_genesys_pd_firmware_hdr_unref)
gboolean fu_struct_genesys_pd_firmware_hdr_validate_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_PD_FIRMWARE_HDR_OFFSET_MAGIC 0xFC
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_PD_FIRMWARE_HDR_SIZE_MAGIC 0x4
#define FU_STRUCT_GENESYS_PD_FIRMWARE_HDR_N_ELEMENTS_MAGIC 4
#define FU_STRUCT_GENESYS_PD_FIRMWARE_HDR_SIZE 0x100
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_PD_FIRMWARE_HDR_DEFAULT_MAGIC "PRDY"
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysTsStatic;

FuStructGenesysTsStatic *fu_struct_genesys_ts_static_ref(FuStructGenesysTsStatic *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_ts_static_unref(FuStructGenesysTsStatic *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysTsStatic, fu_struct_genesys_ts_static_unref)
FuStructGenesysTsStatic *fu_struct_genesys_ts_static_new(void) G_GNUC_WARN_UNUSED_RESULT;
FuStructGenesysTsStatic *fu_struct_genesys_ts_static_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
FuStructGenesysTsStatic *fu_struct_genesys_ts_static_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
FuGenesysTsVersion fu_struct_genesys_ts_static_get_tool_string_version(const FuStructGenesysTsStatic *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_static_get_mask_project_code(const FuStructGenesysTsStatic *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_static_get_mask_project_hardware(const FuStructGenesysTsStatic *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_static_get_mask_project_firmware(const FuStructGenesysTsStatic *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_static_get_mask_project_ic_type(const FuStructGenesysTsStatic *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_static_get_running_project_code(const FuStructGenesysTsStatic *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_static_get_running_project_hardware(const FuStructGenesysTsStatic *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_static_get_running_project_firmware(const FuStructGenesysTsStatic *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_static_get_running_project_ic_type(const FuStructGenesysTsStatic *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_static_get_firmware_version(const FuStructGenesysTsStatic *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_genesys_ts_static_set_tool_string_version(FuStructGenesysTsStatic *st, FuGenesysTsVersion value) G_GNUC_NON_NULL(1);
gboolean fu_struct_genesys_ts_static_set_mask_project_code(FuStructGenesysTsStatic *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_ts_static_set_mask_project_hardware(FuStructGenesysTsStatic *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_ts_static_set_mask_project_firmware(FuStructGenesysTsStatic *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_ts_static_set_mask_project_ic_type(FuStructGenesysTsStatic *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_ts_static_set_running_project_code(FuStructGenesysTsStatic *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_ts_static_set_running_project_hardware(FuStructGenesysTsStatic *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_ts_static_set_running_project_firmware(FuStructGenesysTsStatic *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_ts_static_set_running_project_ic_type(FuStructGenesysTsStatic *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_ts_static_set_firmware_version(FuStructGenesysTsStatic *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#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
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_MASK_PROJECT_CODE 0x4
#define FU_STRUCT_GENESYS_TS_STATIC_N_ELEMENTS_MASK_PROJECT_CODE 4
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_MASK_PROJECT_FIRMWARE 0x2
#define FU_STRUCT_GENESYS_TS_STATIC_N_ELEMENTS_MASK_PROJECT_FIRMWARE 2
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_MASK_PROJECT_IC_TYPE 0x6
#define FU_STRUCT_GENESYS_TS_STATIC_N_ELEMENTS_MASK_PROJECT_IC_TYPE 6
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_RUNNING_PROJECT_CODE 0x4
#define FU_STRUCT_GENESYS_TS_STATIC_N_ELEMENTS_RUNNING_PROJECT_CODE 4
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_RUNNING_PROJECT_FIRMWARE 0x2
#define FU_STRUCT_GENESYS_TS_STATIC_N_ELEMENTS_RUNNING_PROJECT_FIRMWARE 2
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_RUNNING_PROJECT_IC_TYPE 0x6
#define FU_STRUCT_GENESYS_TS_STATIC_N_ELEMENTS_RUNNING_PROJECT_IC_TYPE 6
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE_FIRMWARE_VERSION 0x4
#define FU_STRUCT_GENESYS_TS_STATIC_N_ELEMENTS_FIRMWARE_VERSION 4
#define FU_STRUCT_GENESYS_TS_STATIC_SIZE 0x1F
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysTsDynamicGl3523;

FuStructGenesysTsDynamicGl3523 *fu_struct_genesys_ts_dynamic_gl3523_ref(FuStructGenesysTsDynamicGl3523 *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_ts_dynamic_gl3523_unref(FuStructGenesysTsDynamicGl3523 *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysTsDynamicGl3523, fu_struct_genesys_ts_dynamic_gl3523_unref)
FuStructGenesysTsDynamicGl3523 *fu_struct_genesys_ts_dynamic_gl3523_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_running_mode(const FuStructGenesysTsDynamicGl3523 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_ss_port_number(const FuStructGenesysTsDynamicGl3523 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_hs_port_number(const FuStructGenesysTsDynamicGl3523 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_ss_connection_status(const FuStructGenesysTsDynamicGl3523 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_hs_connection_status(const FuStructGenesysTsDynamicGl3523 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_fs_connection_status(const FuStructGenesysTsDynamicGl3523 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_ls_connection_status(const FuStructGenesysTsDynamicGl3523 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_charging(const FuStructGenesysTsDynamicGl3523 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_non_removable_port_status(const FuStructGenesysTsDynamicGl3523 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3523_get_bonding(const FuStructGenesysTsDynamicGl3523 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#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
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3523_SIZE 0xA
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysTsDynamicGl3590;

FuStructGenesysTsDynamicGl3590 *fu_struct_genesys_ts_dynamic_gl3590_ref(FuStructGenesysTsDynamicGl3590 *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_ts_dynamic_gl3590_unref(FuStructGenesysTsDynamicGl3590 *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysTsDynamicGl3590, fu_struct_genesys_ts_dynamic_gl3590_unref)
FuStructGenesysTsDynamicGl3590 *fu_struct_genesys_ts_dynamic_gl3590_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_running_mode(const FuStructGenesysTsDynamicGl3590 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_ss_port_number(const FuStructGenesysTsDynamicGl3590 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_hs_port_number(const FuStructGenesysTsDynamicGl3590 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_ss_connection_status(const FuStructGenesysTsDynamicGl3590 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_hs_connection_status(const FuStructGenesysTsDynamicGl3590 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_fs_connection_status(const FuStructGenesysTsDynamicGl3590 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_ls_connection_status(const FuStructGenesysTsDynamicGl3590 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_charging(const FuStructGenesysTsDynamicGl3590 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3590_get_non_removable_port_status(const FuStructGenesysTsDynamicGl3590 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_genesys_ts_dynamic_gl3590_get_bonding(const FuStructGenesysTsDynamicGl3590 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#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
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3590_SIZE 0xA
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysTsDynamicGl359030;

FuStructGenesysTsDynamicGl359030 *fu_struct_genesys_ts_dynamic_gl359030_ref(FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_ts_dynamic_gl359030_unref(FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysTsDynamicGl359030, fu_struct_genesys_ts_dynamic_gl359030_unref)
FuStructGenesysTsDynamicGl359030 *fu_struct_genesys_ts_dynamic_gl359030_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_running_mode(const FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_ss_port_number(const FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_hs_port_number(const FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_ss_connection_status(const FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_hs_connection_status(const FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_fs_connection_status(const FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_ls_connection_status(const FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_charging(const FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl359030_get_non_removable_port_status(const FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_genesys_ts_dynamic_gl359030_get_bonding(const FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
FuGenesysFwStatus fu_struct_genesys_ts_dynamic_gl359030_get_hub_fw_status(const FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
FuGenesysFwStatus fu_struct_genesys_ts_dynamic_gl359030_get_dev_fw_status(const FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_genesys_ts_dynamic_gl359030_get_dev_fw_version(const FuStructGenesysTsDynamicGl359030 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#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
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL359030_SIZE 0xE
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysTsDynamicGl3525;

FuStructGenesysTsDynamicGl3525 *fu_struct_genesys_ts_dynamic_gl3525_ref(FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_ts_dynamic_gl3525_unref(FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysTsDynamicGl3525, fu_struct_genesys_ts_dynamic_gl3525_unref)
FuStructGenesysTsDynamicGl3525 *fu_struct_genesys_ts_dynamic_gl3525_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_running_mode(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_ss_port_number(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_hs_port_number(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_ss_connection_status(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_hs_connection_status(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_fs_connection_status(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_ls_connection_status(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_charging(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_dynamic_gl3525_get_non_removable_port_status(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_genesys_ts_dynamic_gl3525_get_bonding(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
FuGenesysFwStatus fu_struct_genesys_ts_dynamic_gl3525_get_hub_fw_status(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
FuGenesysFwStatus fu_struct_genesys_ts_dynamic_gl3525_get_pd_fw_status(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_genesys_ts_dynamic_gl3525_get_pd_fw_version(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
FuGenesysFwStatus fu_struct_genesys_ts_dynamic_gl3525_get_dev_fw_status(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_genesys_ts_dynamic_gl3525_get_dev_fw_version(const FuStructGenesysTsDynamicGl3525 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#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
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_TS_DYNAMIC_GL3525_SIZE 0x11
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysTsFirmwareInfo;

FuStructGenesysTsFirmwareInfo *fu_struct_genesys_ts_firmware_info_ref(FuStructGenesysTsFirmwareInfo *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_ts_firmware_info_unref(FuStructGenesysTsFirmwareInfo *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysTsFirmwareInfo, fu_struct_genesys_ts_firmware_info_unref)
FuStructGenesysTsFirmwareInfo *fu_struct_genesys_ts_firmware_info_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const guint8 *fu_struct_genesys_ts_firmware_info_get_tool_version(const FuStructGenesysTsFirmwareInfo *st, gsize *bufsz) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_genesys_ts_firmware_info_get_address_mode(const FuStructGenesysTsFirmwareInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_firmware_info_get_build_fw_time(const FuStructGenesysTsFirmwareInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_firmware_info_get_update_fw_time(const FuStructGenesysTsFirmwareInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#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
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_SIZE_TOOL_VERSION 0x6
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_N_ELEMENTS_TOOL_VERSION 6
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_SIZE_BUILD_FW_TIME 0xC
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_N_ELEMENTS_BUILD_FW_TIME 12
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_SIZE_UPDATE_FW_TIME 0xC
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_N_ELEMENTS_UPDATE_FW_TIME 12
#define FU_STRUCT_GENESYS_TS_FIRMWARE_INFO_SIZE 0x1F
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysTsVendorSupport;

FuStructGenesysTsVendorSupport *fu_struct_genesys_ts_vendor_support_ref(FuStructGenesysTsVendorSupport *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_ts_vendor_support_unref(FuStructGenesysTsVendorSupport *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysTsVendorSupport, fu_struct_genesys_ts_vendor_support_unref)
FuStructGenesysTsVendorSupport *fu_struct_genesys_ts_vendor_support_new(void) G_GNUC_WARN_UNUSED_RESULT;
FuStructGenesysTsVendorSupport *fu_struct_genesys_ts_vendor_support_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_vendor_support_get_version(const FuStructGenesysTsVendorSupport *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_vendor_support_get_reserved1(const FuStructGenesysTsVendorSupport *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
FuGenesysVsCodesignCheck fu_struct_genesys_ts_vendor_support_get_codesign_check(const FuStructGenesysTsVendorSupport *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_vendor_support_get_reserved2(const FuStructGenesysTsVendorSupport *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
FuGenesysVsHidIsp fu_struct_genesys_ts_vendor_support_get_hid_isp(const FuStructGenesysTsVendorSupport *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_vendor_support_get_reserved3(const FuStructGenesysTsVendorSupport *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_ts_vendor_support_set_version(FuStructGenesysTsVendorSupport *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_ts_vendor_support_set_reserved1(FuStructGenesysTsVendorSupport *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_genesys_ts_vendor_support_set_codesign_check(FuStructGenesysTsVendorSupport *st, FuGenesysVsCodesignCheck value) G_GNUC_NON_NULL(1);
gboolean fu_struct_genesys_ts_vendor_support_set_reserved2(FuStructGenesysTsVendorSupport *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_genesys_ts_vendor_support_set_hid_isp(FuStructGenesysTsVendorSupport *st, FuGenesysVsHidIsp value) G_GNUC_NON_NULL(1);
gboolean fu_struct_genesys_ts_vendor_support_set_reserved3(FuStructGenesysTsVendorSupport *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#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
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_SIZE_VERSION 0x2
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_N_ELEMENTS_VERSION 2
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_SIZE_RESERVED1 0x8
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_N_ELEMENTS_RESERVED1 8
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_SIZE_RESERVED2 0x4
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_N_ELEMENTS_RESERVED2 4
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_SIZE_RESERVED3 0xF
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_N_ELEMENTS_RESERVED3 15
#define FU_STRUCT_GENESYS_TS_VENDOR_SUPPORT_SIZE 0x1F
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysTsBrandProject;

FuStructGenesysTsBrandProject *fu_struct_genesys_ts_brand_project_ref(FuStructGenesysTsBrandProject *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_ts_brand_project_unref(FuStructGenesysTsBrandProject *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysTsBrandProject, fu_struct_genesys_ts_brand_project_unref)
FuStructGenesysTsBrandProject *fu_struct_genesys_ts_brand_project_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_ts_brand_project_get_project(const FuStructGenesysTsBrandProject *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_TS_BRAND_PROJECT_OFFSET_PROJECT 0x0
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_TS_BRAND_PROJECT_SIZE_PROJECT 0xF
#define FU_STRUCT_GENESYS_TS_BRAND_PROJECT_N_ELEMENTS_PROJECT 15
#define FU_STRUCT_GENESYS_TS_BRAND_PROJECT_SIZE 0xF
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysFwCodesignInfoRsa;

FuStructGenesysFwCodesignInfoRsa *fu_struct_genesys_fw_codesign_info_rsa_ref(FuStructGenesysFwCodesignInfoRsa *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_fw_codesign_info_rsa_unref(FuStructGenesysFwCodesignInfoRsa *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysFwCodesignInfoRsa, fu_struct_genesys_fw_codesign_info_rsa_unref)
FuStructGenesysFwCodesignInfoRsa *fu_struct_genesys_fw_codesign_info_rsa_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_fw_codesign_info_rsa_validate_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_fw_codesign_info_rsa_get_text_n(const FuStructGenesysFwCodesignInfoRsa *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_fw_codesign_info_rsa_get_text_e(const FuStructGenesysFwCodesignInfoRsa *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const guint8 *fu_struct_genesys_fw_codesign_info_rsa_get_signature(const FuStructGenesysFwCodesignInfoRsa *st, gsize *bufsz) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#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
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_SIZE_TEXT_N 0x200
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_N_ELEMENTS_TEXT_N 512
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_SIZE_TEXT_E 0x6
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_N_ELEMENTS_TEXT_E 6
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_SIZE_SIGNATURE 0x100
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_N_ELEMENTS_SIGNATURE 256
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_RSA_SIZE 0x312
#endif

#ifndef __GI_SCANNER__
#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
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysFwRsaPublicKeyText;

FuStructGenesysFwRsaPublicKeyText *fu_struct_genesys_fw_rsa_public_key_text_ref(FuStructGenesysFwRsaPublicKeyText *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_fw_rsa_public_key_text_unref(FuStructGenesysFwRsaPublicKeyText *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysFwRsaPublicKeyText, fu_struct_genesys_fw_rsa_public_key_text_unref)
FuStructGenesysFwRsaPublicKeyText *fu_struct_genesys_fw_rsa_public_key_text_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_fw_rsa_public_key_text_validate(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_fw_rsa_public_key_text_get_text_n(const FuStructGenesysFwRsaPublicKeyText *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_genesys_fw_rsa_public_key_text_get_text_e(const FuStructGenesysFwRsaPublicKeyText *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#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
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_SIZE_TEXT_N 0x200
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_N_ELEMENTS_TEXT_N 512
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_SIZE_TEXT_E 0x6
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_N_ELEMENTS_TEXT_E 6
#define FU_STRUCT_GENESYS_FW_RSA_PUBLIC_KEY_TEXT_SIZE 0x212
#endif

#ifndef __GI_SCANNER__
#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
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysFwCodesignInfoEcdsa;

FuStructGenesysFwCodesignInfoEcdsa *fu_struct_genesys_fw_codesign_info_ecdsa_ref(FuStructGenesysFwCodesignInfoEcdsa *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_fw_codesign_info_ecdsa_unref(FuStructGenesysFwCodesignInfoEcdsa *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysFwCodesignInfoEcdsa, fu_struct_genesys_fw_codesign_info_ecdsa_unref)
FuStructGenesysFwCodesignInfoEcdsa *fu_struct_genesys_fw_codesign_info_ecdsa_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
FuStructGenesysFwCodesignInfoEcdsa *fu_struct_genesys_fw_codesign_info_ecdsa_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_fw_codesign_info_ecdsa_validate(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_fw_codesign_info_ecdsa_validate_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const guint8 *fu_struct_genesys_fw_codesign_info_ecdsa_get_hash(const FuStructGenesysFwCodesignInfoEcdsa *st, gsize *bufsz) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const guint8 *fu_struct_genesys_fw_codesign_info_ecdsa_get_key(const FuStructGenesysFwCodesignInfoEcdsa *st, gsize *bufsz) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const guint8 *fu_struct_genesys_fw_codesign_info_ecdsa_get_signature(const FuStructGenesysFwCodesignInfoEcdsa *st, gsize *bufsz) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#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
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_SIZE_HASH 0x20
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_N_ELEMENTS_HASH 32
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_SIZE_KEY 0x40
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_N_ELEMENTS_KEY 64
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_SIZE_SIGNATURE 0x40
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_N_ELEMENTS_SIGNATURE 64
#define FU_STRUCT_GENESYS_FW_CODESIGN_INFO_ECDSA_SIZE 0xA0
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGenesysFwEcdsaPublicKey;

FuStructGenesysFwEcdsaPublicKey *fu_struct_genesys_fw_ecdsa_public_key_ref(FuStructGenesysFwEcdsaPublicKey *st) G_GNUC_NON_NULL(1);
void fu_struct_genesys_fw_ecdsa_public_key_unref(FuStructGenesysFwEcdsaPublicKey *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGenesysFwEcdsaPublicKey, fu_struct_genesys_fw_ecdsa_public_key_unref)
FuStructGenesysFwEcdsaPublicKey *fu_struct_genesys_fw_ecdsa_public_key_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_genesys_fw_ecdsa_public_key_validate(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const guint8 *fu_struct_genesys_fw_ecdsa_public_key_get_key(const FuStructGenesysFwEcdsaPublicKey *st, gsize *bufsz) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_FW_ECDSA_PUBLIC_KEY_OFFSET_KEY 0x0
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GENESYS_FW_ECDSA_PUBLIC_KEY_SIZE_KEY 0x40
#define FU_STRUCT_GENESYS_FW_ECDSA_PUBLIC_KEY_N_ELEMENTS_KEY 64
#define FU_STRUCT_GENESYS_FW_ECDSA_PUBLIC_KEY_SIZE 0x40
#endif

#ifndef __GI_SCANNER__
#endif
