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

#pragma once
#include <fu-input-stream.h>
/**
 * FuReleasePriority:
 */
typedef enum {
    /**
     * FU_RELEASE_PRIORITY_NONE:
     */
    FU_RELEASE_PRIORITY_NONE,
    /**
     * FU_RELEASE_PRIORITY_LOCAL:
     */
    FU_RELEASE_PRIORITY_LOCAL,
    /**
     * FU_RELEASE_PRIORITY_REMOTE:
     */
    FU_RELEASE_PRIORITY_REMOTE,
}  FuReleasePriority;
#define FU_RELEASE_PRIORITY_LAST 3
FuReleasePriority fu_release_priority_from_string(const gchar *val) G_GNUC_CONST G_GNUC_NON_NULL(1);
/**
 * FuP2pPolicy:
 */
typedef enum {
    /**
     * FU_P2P_POLICY_NOTHING:
     */
    FU_P2P_POLICY_NOTHING = 0x00,
    /**
     * FU_P2P_POLICY_METADATA:
     */
    FU_P2P_POLICY_METADATA = 0x01,
    /**
     * FU_P2P_POLICY_FIRMWARE:
     */
    FU_P2P_POLICY_FIRMWARE = 0x02,
}  FuP2pPolicy;
FuP2pPolicy fu_p2p_policy_from_string(const gchar *val) G_GNUC_CONST G_GNUC_NON_NULL(1);
/**
 * FuEngineEmulatorPhase:
 */
typedef enum {
    /**
     * FU_ENGINE_EMULATOR_PHASE_SETUP:
     */
    FU_ENGINE_EMULATOR_PHASE_SETUP,
    /**
     * FU_ENGINE_EMULATOR_PHASE_INSTALL:
     */
    FU_ENGINE_EMULATOR_PHASE_INSTALL,
    /**
     * FU_ENGINE_EMULATOR_PHASE_ATTACH:
     */
    FU_ENGINE_EMULATOR_PHASE_ATTACH,
    /**
     * FU_ENGINE_EMULATOR_PHASE_DETACH:
     */
    FU_ENGINE_EMULATOR_PHASE_DETACH,
    /**
     * FU_ENGINE_EMULATOR_PHASE_PREPARE:
     */
    FU_ENGINE_EMULATOR_PHASE_PREPARE,
    /**
     * FU_ENGINE_EMULATOR_PHASE_CLEANUP:
     */
    FU_ENGINE_EMULATOR_PHASE_CLEANUP,
    /**
     * FU_ENGINE_EMULATOR_PHASE_RELOAD:
     */
    FU_ENGINE_EMULATOR_PHASE_RELOAD,
    /**
     * FU_ENGINE_EMULATOR_PHASE_COMPOSITE_PREPARE:
     */
    FU_ENGINE_EMULATOR_PHASE_COMPOSITE_PREPARE,
    /**
     * FU_ENGINE_EMULATOR_PHASE_COMPOSITE_CLEANUP:
     */
    FU_ENGINE_EMULATOR_PHASE_COMPOSITE_CLEANUP,
}  FuEngineEmulatorPhase;
#define FU_ENGINE_EMULATOR_PHASE_LAST 9
const gchar *fu_engine_emulator_phase_to_string(FuEngineEmulatorPhase val) G_GNUC_CONST;
/**
 * FuEngineRequestFlags:
 */
typedef enum {
    /**
     * FU_ENGINE_REQUEST_FLAG_NONE:
     */
    FU_ENGINE_REQUEST_FLAG_NONE = 0,
    /**
     * FU_ENGINE_REQUEST_FLAG_NO_REQUIREMENTS:
     */
    FU_ENGINE_REQUEST_FLAG_NO_REQUIREMENTS = 1 << 0,
    /**
     * FU_ENGINE_REQUEST_FLAG_ANY_RELEASE:
     */
    FU_ENGINE_REQUEST_FLAG_ANY_RELEASE = 1 << 1,
} G_GNUC_FLAG_ENUM FuEngineRequestFlags;
gchar *fu_engine_request_flags_to_string(FuEngineRequestFlags val) G_GNUC_CONST;
/**
 * FuEngineLoadFlags:
 */
typedef enum {
    /**
     * FU_ENGINE_LOAD_FLAG_NONE:
     */
    FU_ENGINE_LOAD_FLAG_NONE = 0,
    /**
     * FU_ENGINE_LOAD_FLAG_READONLY:
     */
    FU_ENGINE_LOAD_FLAG_READONLY = 1 << 0,
    /**
     * FU_ENGINE_LOAD_FLAG_COLDPLUG:
     */
    FU_ENGINE_LOAD_FLAG_COLDPLUG = 1 << 1,
    /**
     * FU_ENGINE_LOAD_FLAG_REMOTES:
     */
    FU_ENGINE_LOAD_FLAG_REMOTES = 1 << 2,
    /**
     * FU_ENGINE_LOAD_FLAG_HWINFO:
     */
    FU_ENGINE_LOAD_FLAG_HWINFO = 1 << 3,
    /**
     * FU_ENGINE_LOAD_FLAG_NO_CACHE:
     */
    FU_ENGINE_LOAD_FLAG_NO_CACHE = 1 << 4,
    /**
     * FU_ENGINE_LOAD_FLAG_BUILTIN_PLUGINS:
     */
    FU_ENGINE_LOAD_FLAG_BUILTIN_PLUGINS = 1 << 6,
    /**
     * FU_ENGINE_LOAD_FLAG_ENSURE_CLIENT_CERT:
     */
    FU_ENGINE_LOAD_FLAG_ENSURE_CLIENT_CERT = 1 << 7,
    /**
     * FU_ENGINE_LOAD_FLAG_EXTERNAL_PLUGINS:
     *
     * dload'ed plugins such as flashrom
     */
    FU_ENGINE_LOAD_FLAG_EXTERNAL_PLUGINS = 1 << 8,
    /**
     * FU_ENGINE_LOAD_FLAG_DEVICE_HOTPLUG:
     */
    FU_ENGINE_LOAD_FLAG_DEVICE_HOTPLUG = 1 << 9,
    /**
     * FU_ENGINE_LOAD_FLAG_COLDPLUG_FORCE:
     *
     * even without a matched plugin
     */
    FU_ENGINE_LOAD_FLAG_COLDPLUG_FORCE = 1 << 10,
    /**
     * FU_ENGINE_LOAD_FLAG_READY:
     */
    FU_ENGINE_LOAD_FLAG_READY = 1 << 11,
    /**
     * FU_ENGINE_LOAD_FLAG_HISTORY:
     */
    FU_ENGINE_LOAD_FLAG_HISTORY = 1 << 12,
    /**
     * FU_ENGINE_LOAD_FLAG_ALLOW_TEST_PLUGIN:
     */
    FU_ENGINE_LOAD_FLAG_ALLOW_TEST_PLUGIN = 1 << 13,
} G_GNUC_FLAG_ENUM FuEngineLoadFlags;
/**
 * FuIdleInhibit:
 */
typedef enum {
    /**
     * FU_IDLE_INHIBIT_NONE:
     */
    FU_IDLE_INHIBIT_NONE = 0,
    /**
     * FU_IDLE_INHIBIT_TIMEOUT:
     */
    FU_IDLE_INHIBIT_TIMEOUT = 1 << 0,
    /**
     * FU_IDLE_INHIBIT_SIGNALS:
     */
    FU_IDLE_INHIBIT_SIGNALS = 1 << 1,
} G_GNUC_FLAG_ENUM FuIdleInhibit;
gchar *fu_idle_inhibit_to_string(FuIdleInhibit val) G_GNUC_CONST;
/**
 * FuClientFlags:
 */
typedef enum {
    /**
     * FU_CLIENT_FLAG_NONE:
     */
    FU_CLIENT_FLAG_NONE = 0,
    /**
     * FU_CLIENT_FLAG_ACTIVE:
     */
    FU_CLIENT_FLAG_ACTIVE = 1 << 0,
} G_GNUC_FLAG_ENUM FuClientFlags;
/**
 * FuEngineCapabilityFlags:
 */
typedef enum {
    /**
     * FU_ENGINE_CAPABILITY_FLAG_UNKNOWN:
     */
    FU_ENGINE_CAPABILITY_FLAG_UNKNOWN = 0,
    /**
     * FU_ENGINE_CAPABILITY_FLAG_ID_REQUIREMENT_GLOB:
     */
    FU_ENGINE_CAPABILITY_FLAG_ID_REQUIREMENT_GLOB = 1 << 0,
} G_GNUC_FLAG_ENUM FuEngineCapabilityFlags;
FuEngineCapabilityFlags fu_engine_capability_flags_from_string(const gchar *val) G_GNUC_CONST G_GNUC_NON_NULL(1);
/**
 * FuUdevMonitorNetlinkGroup:
 */
typedef enum {
    /**
     * FU_UDEV_MONITOR_NETLINK_GROUP_NONE:
     */
    FU_UDEV_MONITOR_NETLINK_GROUP_NONE,
    /**
     * FU_UDEV_MONITOR_NETLINK_GROUP_KERNEL:
     */
    FU_UDEV_MONITOR_NETLINK_GROUP_KERNEL,
    /**
     * FU_UDEV_MONITOR_NETLINK_GROUP_UDEV:
     */
    FU_UDEV_MONITOR_NETLINK_GROUP_UDEV,
}  FuUdevMonitorNetlinkGroup;
#define FU_UDEV_MONITOR_NETLINK_GROUP_LAST 3
/**
 * FuUdevAction:
 */
typedef enum {
    /**
     * FU_UDEV_ACTION_UNKNOWN:
     */
    FU_UDEV_ACTION_UNKNOWN,
    /**
     * FU_UDEV_ACTION_ADD:
     */
    FU_UDEV_ACTION_ADD,
    /**
     * FU_UDEV_ACTION_REMOVE:
     */
    FU_UDEV_ACTION_REMOVE,
    /**
     * FU_UDEV_ACTION_CHANGE:
     */
    FU_UDEV_ACTION_CHANGE,
    /**
     * FU_UDEV_ACTION_MOVE:
     */
    FU_UDEV_ACTION_MOVE,
    /**
     * FU_UDEV_ACTION_ONLINE:
     */
    FU_UDEV_ACTION_ONLINE,
    /**
     * FU_UDEV_ACTION_OFFLINE:
     */
    FU_UDEV_ACTION_OFFLINE,
    /**
     * FU_UDEV_ACTION_BIND:
     */
    FU_UDEV_ACTION_BIND,
    /**
     * FU_UDEV_ACTION_UNBIND:
     */
    FU_UDEV_ACTION_UNBIND,
}  FuUdevAction;
#define FU_UDEV_ACTION_LAST 9
FuUdevAction fu_udev_action_from_string(const gchar *val) G_GNUC_CONST G_GNUC_NON_NULL(1);
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructUdevMonitorNetlinkHeader;

FuStructUdevMonitorNetlinkHeader *fu_struct_udev_monitor_netlink_header_ref(FuStructUdevMonitorNetlinkHeader *st) G_GNUC_NON_NULL(1);
void fu_struct_udev_monitor_netlink_header_unref(FuStructUdevMonitorNetlinkHeader *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructUdevMonitorNetlinkHeader, fu_struct_udev_monitor_netlink_header_unref)
FuStructUdevMonitorNetlinkHeader *fu_struct_udev_monitor_netlink_header_parse_bytes(GBytes *blob, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_udev_monitor_netlink_header_get_header_size(const FuStructUdevMonitorNetlinkHeader *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_udev_monitor_netlink_header_get_properties_off(const FuStructUdevMonitorNetlinkHeader *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_udev_monitor_netlink_header_get_properties_len(const FuStructUdevMonitorNetlinkHeader *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_udev_monitor_netlink_header_get_filter_subsystem_hash(const FuStructUdevMonitorNetlinkHeader *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_udev_monitor_netlink_header_get_filter_devtype_hash(const FuStructUdevMonitorNetlinkHeader *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_udev_monitor_netlink_header_get_filter_tag_bloom_hi(const FuStructUdevMonitorNetlinkHeader *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_udev_monitor_netlink_header_get_filter_tag_bloom_lo(const FuStructUdevMonitorNetlinkHeader *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_OFFSET_PREFIX 0x0
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_OFFSET_MAGIC 0x8
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_OFFSET_HEADER_SIZE 0xC
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_OFFSET_PROPERTIES_OFF 0x10
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_OFFSET_PROPERTIES_LEN 0x14
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_OFFSET_FILTER_SUBSYSTEM_HASH 0x18
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_OFFSET_FILTER_DEVTYPE_HASH 0x1C
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_OFFSET_FILTER_TAG_BLOOM_HI 0x20
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_OFFSET_FILTER_TAG_BLOOM_LO 0x24
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_SIZE_PREFIX 0x8
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_N_ELEMENTS_PREFIX 8
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_SIZE 0x28
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_DEFAULT_PREFIX "libudev"
#define FU_STRUCT_UDEV_MONITOR_NETLINK_HEADER_DEFAULT_MAGIC 0xFEEDCAFE
#endif
