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

#pragma once
#include <libfwupd/fwupd-build.h>
/**
 * FwupdPluginFlags:
 *
 * Flags used to represent plugin attributes
 */
typedef enum {
    /**
     * FWUPD_PLUGIN_FLAG_NONE:
     *
     * No plugin flags are set.
     */
    FWUPD_PLUGIN_FLAG_NONE = 0,
    /**
     * FWUPD_PLUGIN_FLAG_DISABLED:
     *
     * The plugin has been disabled, either by daemon configuration or a problem.
     */
    FWUPD_PLUGIN_FLAG_DISABLED = 1 << 0,
    /**
     * FWUPD_PLUGIN_FLAG_USER_WARNING:
     *
     * The plugin has a problem and would like to show a user warning to a supported client.
     */
    FWUPD_PLUGIN_FLAG_USER_WARNING = 1 << 1,
    /**
     * FWUPD_PLUGIN_FLAG_CLEAR_UPDATABLE:
     *
     * When the plugin loads it should clear the UPDATABLE flag from any devices.
     * This typically happens when the device requires a system restart.
     */
    FWUPD_PLUGIN_FLAG_CLEAR_UPDATABLE = 1 << 2,
    /**
     * FWUPD_PLUGIN_FLAG_NO_HARDWARE:
     *
     * The plugin won't load because no supported hardware was found.
     * This typically happens with plugins designed for a specific platform design
     * = such as the dell plugin only works on Dell systems,.
     */
    FWUPD_PLUGIN_FLAG_NO_HARDWARE = 1 << 3,
    /**
     * FWUPD_PLUGIN_FLAG_CAPSULES_UNSUPPORTED:
     *
     * The plugin discovered that UEFI UpdateCapsule are unsupported.
     * Supported clients will display this information to a user.
     */
    FWUPD_PLUGIN_FLAG_CAPSULES_UNSUPPORTED = 1 << 4,
    /**
     * FWUPD_PLUGIN_FLAG_UNLOCK_REQUIRED:
     *
     * The plugin discovered that hardware unlock is required.
     * Supported clients will display this information to a user.
     */
    FWUPD_PLUGIN_FLAG_UNLOCK_REQUIRED = 1 << 5,
    /**
     * FWUPD_PLUGIN_FLAG_EFIVAR_NOT_MOUNTED:
     *
     * The plugin discovered the efivar filesystem is not found and is required for this plugin.
     * Supported clients will display this information to a user.
     */
    FWUPD_PLUGIN_FLAG_EFIVAR_NOT_MOUNTED = 1 << 6,
    /**
     * FWUPD_PLUGIN_FLAG_ESP_NOT_FOUND:
     *
     * The plugins discovered that the EFI system partition was not found.
     * Supported clients will display this information to a user.
     */
    FWUPD_PLUGIN_FLAG_ESP_NOT_FOUND = 1 << 7,
    /**
     * FWUPD_PLUGIN_FLAG_LEGACY_BIOS:
     *
     * The plugin discovered the system is running in legacy CSM mode.
     * Supported clients will display this information to a user.
     */
    FWUPD_PLUGIN_FLAG_LEGACY_BIOS = 1 << 8,
    /**
     * FWUPD_PLUGIN_FLAG_FAILED_OPEN:
     *
     * Failed to open plugin = missing dependency,.
     * Supported clients will display this information to a user.
     */
    FWUPD_PLUGIN_FLAG_FAILED_OPEN = 1 << 9,
    /**
     * FWUPD_PLUGIN_FLAG_REQUIRE_HWID:
     *
     * A specific HWID is required to use this plugin.
     */
    FWUPD_PLUGIN_FLAG_REQUIRE_HWID = 1 << 10,
    /**
     * FWUPD_PLUGIN_FLAG_KERNEL_TOO_OLD:
     *
     * The feature is not supported as the kernel is too old.
     */
    FWUPD_PLUGIN_FLAG_KERNEL_TOO_OLD = 1 << 11,
    /**
     * FWUPD_PLUGIN_FLAG_AUTH_REQUIRED:
     *
     * The plugin requires the user to provide authentication details.
     * Supported clients will display this information to a user.
     */
    FWUPD_PLUGIN_FLAG_AUTH_REQUIRED = 1 << 12,
    /**
     * FWUPD_PLUGIN_FLAG_SECURE_CONFIG:
     *
     * The plugin requires the config file to be saved with permissions that only allow the
     * root user to read.
     */
    FWUPD_PLUGIN_FLAG_SECURE_CONFIG = 1 << 13,
    /**
     * FWUPD_PLUGIN_FLAG_MODULAR:
     *
     * The plugin is loaded from an external module.
     */
    FWUPD_PLUGIN_FLAG_MODULAR = 1 << 14,
    /**
     * FWUPD_PLUGIN_FLAG_MEASURE_SYSTEM_INTEGRITY:
     *
     * The plugin will be checked that it preserves system state such as `KEK`, `PK`,
     * `BOOT####` etc.
     */
    FWUPD_PLUGIN_FLAG_MEASURE_SYSTEM_INTEGRITY = 1 << 15,
    /**
     * FWUPD_PLUGIN_FLAG_ESP_NOT_VALID:
     *
     * The plugins discovered that the EFI system partition may not be valid.
     * Supported clients will display this information to a user.
     */
    FWUPD_PLUGIN_FLAG_ESP_NOT_VALID = 1 << 16,
    /**
     * FWUPD_PLUGIN_FLAG_READY:
     *
     * The plugin is ready for use and all devices have been coldplugged.
     */
    FWUPD_PLUGIN_FLAG_READY = 1 << 17,
    /**
     * FWUPD_PLUGIN_FLAG_TEST_ONLY:
     *
     * The plugin is used for virtual devices that exercise daemon flows.
     */
    FWUPD_PLUGIN_FLAG_TEST_ONLY = 1 << 18,
    /**
     * FWUPD_PLUGIN_FLAG_MUTABLE_ENUMERATION:
     *
     * Some devices supported by the plugin may cause a device to momentarily
     * stop working while probing.
     */
    FWUPD_PLUGIN_FLAG_MUTABLE_ENUMERATION = 1 << 19,
    /**
     * FWUPD_PLUGIN_FLAG_UNKNOWN:
     *
     * The plugin flag is unknown.
     * This is usually caused by a mismatched libfwupdplugin and daemon.
     */
    FWUPD_PLUGIN_FLAG_UNKNOWN = G_MAXUINT64,
}  FwupdPluginFlags;
const gchar *fwupd_plugin_flag_to_string(FwupdPluginFlags val) G_GNUC_CONST;
FwupdPluginFlags fwupd_plugin_flag_from_string(const gchar *val) G_GNUC_CONST G_GNUC_NON_NULL(1);
