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

#pragma once
#include <fu-input-stream.h>
/**
 * FuLenovoAccessoryCommandClass:
 */
typedef enum {
    /**
     * FU_LENOVO_ACCESSORY_COMMAND_CLASS_DEVICE_INFORMATION:
     */
    FU_LENOVO_ACCESSORY_COMMAND_CLASS_DEVICE_INFORMATION = 0x00,
    /**
     * FU_LENOVO_ACCESSORY_COMMAND_CLASS_DFU_CLASS:
     */
    FU_LENOVO_ACCESSORY_COMMAND_CLASS_DFU_CLASS = 0x09,
}  FuLenovoAccessoryCommandClass;
/**
 * FuLenovoAccessoryInfoId:
 */
typedef enum {
    /**
     * FU_LENOVO_ACCESSORY_INFO_ID_FIRMWARE_VERSION:
     */
    FU_LENOVO_ACCESSORY_INFO_ID_FIRMWARE_VERSION = 0x01,
    /**
     * FU_LENOVO_ACCESSORY_INFO_ID_DEVICE_MODE:
     */
    FU_LENOVO_ACCESSORY_INFO_ID_DEVICE_MODE = 0x04,
}  FuLenovoAccessoryInfoId;
/**
 * FuLenovoAccessoryDfuId:
 */
typedef enum {
    /**
     * FU_LENOVO_ACCESSORY_DFU_ID_DFU_ATTRIBUTE:
     */
    FU_LENOVO_ACCESSORY_DFU_ID_DFU_ATTRIBUTE = 0x01,
    /**
     * FU_LENOVO_ACCESSORY_DFU_ID_DFU_PREPARE:
     */
    FU_LENOVO_ACCESSORY_DFU_ID_DFU_PREPARE = 0x02,
    /**
     * FU_LENOVO_ACCESSORY_DFU_ID_DFU_FILE:
     */
    FU_LENOVO_ACCESSORY_DFU_ID_DFU_FILE = 0x03,
    /**
     * FU_LENOVO_ACCESSORY_DFU_ID_DFU_CRC:
     */
    FU_LENOVO_ACCESSORY_DFU_ID_DFU_CRC = 0x04,
    /**
     * FU_LENOVO_ACCESSORY_DFU_ID_DFU_EXIT:
     */
    FU_LENOVO_ACCESSORY_DFU_ID_DFU_EXIT = 0x05,
    /**
     * FU_LENOVO_ACCESSORY_DFU_ID_DFU_ENTRY:
     */
    FU_LENOVO_ACCESSORY_DFU_ID_DFU_ENTRY = 0x06,
}  FuLenovoAccessoryDfuId;
/**
 * FuLenovoAccessoryCmdDir:
 */
typedef enum {
    /**
     * FU_LENOVO_ACCESSORY_CMD_DIR_CMD_SET:
     */
    FU_LENOVO_ACCESSORY_CMD_DIR_CMD_SET = 0x00,
    /**
     * FU_LENOVO_ACCESSORY_CMD_DIR_CMD_GET:
     */
    FU_LENOVO_ACCESSORY_CMD_DIR_CMD_GET = 0x01,
}  FuLenovoAccessoryCmdDir;
/**
 * FuLenovoStatus:
 */
typedef enum {
    /**
     * FU_LENOVO_STATUS_NEW_COMMAND:
     */
    FU_LENOVO_STATUS_NEW_COMMAND = 0x00,
    /**
     * FU_LENOVO_STATUS_COMMAND_BUSY:
     */
    FU_LENOVO_STATUS_COMMAND_BUSY = 0x01,
    /**
     * FU_LENOVO_STATUS_COMMAND_SUCCESSFUL:
     */
    FU_LENOVO_STATUS_COMMAND_SUCCESSFUL = 0x02,
    /**
     * FU_LENOVO_STATUS_COMMAND_FAILURE:
     */
    FU_LENOVO_STATUS_COMMAND_FAILURE = 0x03,
    /**
     * FU_LENOVO_STATUS_COMMAND_TIME_OUT:
     */
    FU_LENOVO_STATUS_COMMAND_TIME_OUT = 0x04,
    /**
     * FU_LENOVO_STATUS_COMMAND_NOT_SUPPORT:
     */
    FU_LENOVO_STATUS_COMMAND_NOT_SUPPORT = 0x05,
}  FuLenovoStatus;
/**
 * FuLenovoDeviceMode:
 */
typedef enum {
    /**
     * FU_LENOVO_DEVICE_MODE_NORMAL_MODE:
     */
    FU_LENOVO_DEVICE_MODE_NORMAL_MODE = 0x00,
    /**
     * FU_LENOVO_DEVICE_MODE_DRIVER_MODE:
     */
    FU_LENOVO_DEVICE_MODE_DRIVER_MODE = 0x01,
    /**
     * FU_LENOVO_DEVICE_MODE_DFU_MODE:
     */
    FU_LENOVO_DEVICE_MODE_DFU_MODE = 0x02,
}  FuLenovoDeviceMode;
/**
 * FuLenovoDfuFileType:
 */
typedef enum {
    /**
     * FU_LENOVO_DFU_FILE_TYPE_HEX_FILE:
     */
    FU_LENOVO_DFU_FILE_TYPE_HEX_FILE = 0x00,
    /**
     * FU_LENOVO_DFU_FILE_TYPE_BIN_FILE:
     */
    FU_LENOVO_DFU_FILE_TYPE_BIN_FILE = 0x01,
}  FuLenovoDfuFileType;
/**
 * FuLenovoDfuExitCode:
 */
typedef enum {
    /**
     * FU_LENOVO_DFU_EXIT_CODE_DFU_SUCCESS:
     */
    FU_LENOVO_DFU_EXIT_CODE_DFU_SUCCESS = 0x00,
    /**
     * FU_LENOVO_DFU_EXIT_CODE_ABORT:
     */
    FU_LENOVO_DFU_EXIT_CODE_ABORT = 0x01,
}  FuLenovoDfuExitCode;
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructLenovoAccessoryCmd;

FuStructLenovoAccessoryCmd *fu_struct_lenovo_accessory_cmd_ref(FuStructLenovoAccessoryCmd *st) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_accessory_cmd_unref(FuStructLenovoAccessoryCmd *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructLenovoAccessoryCmd, fu_struct_lenovo_accessory_cmd_unref)
FuStructLenovoAccessoryCmd *fu_struct_lenovo_accessory_cmd_new(void) G_GNUC_WARN_UNUSED_RESULT;
FuStructLenovoAccessoryCmd *fu_struct_lenovo_accessory_cmd_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_lenovo_accessory_cmd_get_target_status(const FuStructLenovoAccessoryCmd *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_lenovo_accessory_cmd_get_data_size(const FuStructLenovoAccessoryCmd *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_lenovo_accessory_cmd_get_command_class(const FuStructLenovoAccessoryCmd *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_lenovo_accessory_cmd_get_command_id(const FuStructLenovoAccessoryCmd *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_lenovo_accessory_cmd_get_flag_profile(const FuStructLenovoAccessoryCmd *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_lenovo_accessory_cmd_get_reserve(const FuStructLenovoAccessoryCmd *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_lenovo_accessory_cmd_set_target_status(FuStructLenovoAccessoryCmd *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_accessory_cmd_set_data_size(FuStructLenovoAccessoryCmd *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_accessory_cmd_set_command_class(FuStructLenovoAccessoryCmd *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_accessory_cmd_set_command_id(FuStructLenovoAccessoryCmd *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_accessory_cmd_set_flag_profile(FuStructLenovoAccessoryCmd *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_accessory_cmd_set_reserve(FuStructLenovoAccessoryCmd *st, guint8 value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_ACCESSORY_CMD_OFFSET_TARGET_STATUS 0x0
#define FU_STRUCT_LENOVO_ACCESSORY_CMD_OFFSET_DATA_SIZE 0x1
#define FU_STRUCT_LENOVO_ACCESSORY_CMD_OFFSET_COMMAND_CLASS 0x2
#define FU_STRUCT_LENOVO_ACCESSORY_CMD_OFFSET_COMMAND_ID 0x3
#define FU_STRUCT_LENOVO_ACCESSORY_CMD_OFFSET_FLAG_PROFILE 0x4
#define FU_STRUCT_LENOVO_ACCESSORY_CMD_OFFSET_RESERVE 0x5
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_ACCESSORY_CMD_SIZE 0x6
#endif

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

FuStructLenovoDfuFwReq *fu_struct_lenovo_dfu_fw_req_ref(FuStructLenovoDfuFwReq *st) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_dfu_fw_req_unref(FuStructLenovoDfuFwReq *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructLenovoDfuFwReq, fu_struct_lenovo_dfu_fw_req_unref)
FuStructLenovoDfuFwReq *fu_struct_lenovo_dfu_fw_req_new(void) G_GNUC_WARN_UNUSED_RESULT;
gboolean
fu_struct_lenovo_dfu_fw_req_set_cmd(FuStructLenovoDfuFwReq *st, const FuStructLenovoAccessoryCmd *st_donor, GError **error) G_GNUC_NON_NULL(1, 2) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_lenovo_dfu_fw_req_set_file_type(FuStructLenovoDfuFwReq *st, FuLenovoDfuFileType value) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_dfu_fw_req_set_offset_address(FuStructLenovoDfuFwReq *st, guint32 value) G_GNUC_NON_NULL(1);
gboolean fu_struct_lenovo_dfu_fw_req_set_data(FuStructLenovoDfuFwReq *st, const guint8 *buf, gsize bufsz, GError **error) G_GNUC_NON_NULL(1, 2) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DFU_FW_REQ_OFFSET_CMD 0x0
#define FU_STRUCT_LENOVO_DFU_FW_REQ_OFFSET_FILE_TYPE 0x6
#define FU_STRUCT_LENOVO_DFU_FW_REQ_OFFSET_OFFSET_ADDRESS 0x7
#define FU_STRUCT_LENOVO_DFU_FW_REQ_OFFSET_DATA 0xB
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DFU_FW_REQ_SIZE_DATA 0x20
#define FU_STRUCT_LENOVO_DFU_FW_REQ_N_ELEMENTS_DATA 32
#define FU_STRUCT_LENOVO_DFU_FW_REQ_SIZE 0x2B
#endif

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

FuStructLenovoDfuExitReq *fu_struct_lenovo_dfu_exit_req_ref(FuStructLenovoDfuExitReq *st) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_dfu_exit_req_unref(FuStructLenovoDfuExitReq *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructLenovoDfuExitReq, fu_struct_lenovo_dfu_exit_req_unref)
FuStructLenovoDfuExitReq *fu_struct_lenovo_dfu_exit_req_new(void) G_GNUC_WARN_UNUSED_RESULT;
gboolean
fu_struct_lenovo_dfu_exit_req_set_cmd(FuStructLenovoDfuExitReq *st, const FuStructLenovoAccessoryCmd *st_donor, GError **error) G_GNUC_NON_NULL(1, 2) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_lenovo_dfu_exit_req_set_exit_code(FuStructLenovoDfuExitReq *st, FuLenovoDfuExitCode value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DFU_EXIT_REQ_OFFSET_CMD 0x0
#define FU_STRUCT_LENOVO_DFU_EXIT_REQ_OFFSET_EXIT_CODE 0x6
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DFU_EXIT_REQ_SIZE 0x7
#endif

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

FuStructLenovoDfuAttributeRsp *fu_struct_lenovo_dfu_attribute_rsp_ref(FuStructLenovoDfuAttributeRsp *st) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_dfu_attribute_rsp_unref(FuStructLenovoDfuAttributeRsp *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructLenovoDfuAttributeRsp, fu_struct_lenovo_dfu_attribute_rsp_unref)
FuStructLenovoDfuAttributeRsp *fu_struct_lenovo_dfu_attribute_rsp_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_lenovo_dfu_attribute_rsp_get_major_ver(const FuStructLenovoDfuAttributeRsp *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_lenovo_dfu_attribute_rsp_get_minor_ver(const FuStructLenovoDfuAttributeRsp *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_lenovo_dfu_attribute_rsp_get_product_pid(const FuStructLenovoDfuAttributeRsp *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_lenovo_dfu_attribute_rsp_get_processor_id(const FuStructLenovoDfuAttributeRsp *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_lenovo_dfu_attribute_rsp_get_app_max_size(const FuStructLenovoDfuAttributeRsp *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_lenovo_dfu_attribute_rsp_get_page_size(const FuStructLenovoDfuAttributeRsp *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DFU_ATTRIBUTE_RSP_OFFSET_MAJOR_VER 0x0
#define FU_STRUCT_LENOVO_DFU_ATTRIBUTE_RSP_OFFSET_MINOR_VER 0x1
#define FU_STRUCT_LENOVO_DFU_ATTRIBUTE_RSP_OFFSET_PRODUCT_PID 0x2
#define FU_STRUCT_LENOVO_DFU_ATTRIBUTE_RSP_OFFSET_PROCESSOR_ID 0x4
#define FU_STRUCT_LENOVO_DFU_ATTRIBUTE_RSP_OFFSET_APP_MAX_SIZE 0x5
#define FU_STRUCT_LENOVO_DFU_ATTRIBUTE_RSP_OFFSET_PAGE_SIZE 0x9
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DFU_ATTRIBUTE_RSP_SIZE 0xD
#endif

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

FuStructLenovoDfuCrcRsp *fu_struct_lenovo_dfu_crc_rsp_ref(FuStructLenovoDfuCrcRsp *st) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_dfu_crc_rsp_unref(FuStructLenovoDfuCrcRsp *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructLenovoDfuCrcRsp, fu_struct_lenovo_dfu_crc_rsp_unref)
FuStructLenovoDfuCrcRsp *fu_struct_lenovo_dfu_crc_rsp_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_lenovo_dfu_crc_rsp_get_crc32(const FuStructLenovoDfuCrcRsp *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DFU_CRC_RSP_OFFSET_CRC32 0x0
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DFU_CRC_RSP_SIZE 0x4
#endif

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

FuStructLenovoDfuPrepareReq *fu_struct_lenovo_dfu_prepare_req_ref(FuStructLenovoDfuPrepareReq *st) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_dfu_prepare_req_unref(FuStructLenovoDfuPrepareReq *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructLenovoDfuPrepareReq, fu_struct_lenovo_dfu_prepare_req_unref)
FuStructLenovoDfuPrepareReq *fu_struct_lenovo_dfu_prepare_req_new(void) G_GNUC_WARN_UNUSED_RESULT;
gboolean
fu_struct_lenovo_dfu_prepare_req_set_cmd(FuStructLenovoDfuPrepareReq *st, const FuStructLenovoAccessoryCmd *st_donor, GError **error) G_GNUC_NON_NULL(1, 2) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_lenovo_dfu_prepare_req_set_file_type(FuStructLenovoDfuPrepareReq *st, FuLenovoDfuFileType value) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_dfu_prepare_req_set_start_address(FuStructLenovoDfuPrepareReq *st, guint32 value) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_dfu_prepare_req_set_end_address(FuStructLenovoDfuPrepareReq *st, guint32 value) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_dfu_prepare_req_set_crc32(FuStructLenovoDfuPrepareReq *st, guint32 value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DFU_PREPARE_REQ_OFFSET_CMD 0x0
#define FU_STRUCT_LENOVO_DFU_PREPARE_REQ_OFFSET_FILE_TYPE 0x6
#define FU_STRUCT_LENOVO_DFU_PREPARE_REQ_OFFSET_START_ADDRESS 0x7
#define FU_STRUCT_LENOVO_DFU_PREPARE_REQ_OFFSET_END_ADDRESS 0xB
#define FU_STRUCT_LENOVO_DFU_PREPARE_REQ_OFFSET_CRC32 0xF
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DFU_PREPARE_REQ_SIZE 0x13
#endif

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

FuStructLenovoDevicemodeReq *fu_struct_lenovo_devicemode_req_ref(FuStructLenovoDevicemodeReq *st) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_devicemode_req_unref(FuStructLenovoDevicemodeReq *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructLenovoDevicemodeReq, fu_struct_lenovo_devicemode_req_unref)
FuStructLenovoDevicemodeReq *fu_struct_lenovo_devicemode_req_new(void) G_GNUC_WARN_UNUSED_RESULT;
gboolean
fu_struct_lenovo_devicemode_req_set_cmd(FuStructLenovoDevicemodeReq *st, const FuStructLenovoAccessoryCmd *st_donor, GError **error) G_GNUC_NON_NULL(1, 2) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_lenovo_devicemode_req_set_mode(FuStructLenovoDevicemodeReq *st, FuLenovoDeviceMode value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DEVICEMODE_REQ_OFFSET_CMD 0x0
#define FU_STRUCT_LENOVO_DEVICEMODE_REQ_OFFSET_MODE 0x6
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DEVICEMODE_REQ_SIZE 0x7
#endif

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

FuStructLenovoDevicemodeRsp *fu_struct_lenovo_devicemode_rsp_ref(FuStructLenovoDevicemodeRsp *st) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_devicemode_rsp_unref(FuStructLenovoDevicemodeRsp *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructLenovoDevicemodeRsp, fu_struct_lenovo_devicemode_rsp_unref)

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DEVICEMODE_RSP_OFFSET_MODE 0x0
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_DEVICEMODE_RSP_SIZE 0x1
#endif

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

FuStructLenovoFwVersionRsp *fu_struct_lenovo_fw_version_rsp_ref(FuStructLenovoFwVersionRsp *st) G_GNUC_NON_NULL(1);
void fu_struct_lenovo_fw_version_rsp_unref(FuStructLenovoFwVersionRsp *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructLenovoFwVersionRsp, fu_struct_lenovo_fw_version_rsp_unref)
FuStructLenovoFwVersionRsp *fu_struct_lenovo_fw_version_rsp_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_lenovo_fw_version_rsp_get_major(const FuStructLenovoFwVersionRsp *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_lenovo_fw_version_rsp_get_minor(const FuStructLenovoFwVersionRsp *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_lenovo_fw_version_rsp_get_internal(const FuStructLenovoFwVersionRsp *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_FW_VERSION_RSP_OFFSET_MAJOR 0x0
#define FU_STRUCT_LENOVO_FW_VERSION_RSP_OFFSET_MINOR 0x1
#define FU_STRUCT_LENOVO_FW_VERSION_RSP_OFFSET_INTERNAL 0x2
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_LENOVO_FW_VERSION_RSP_SIZE 0x3
#endif

#ifndef __GI_SCANNER__
#endif
