/*
 *
 *    Copyright (c) 2022 Project CHIP Authors
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

// THIS FILE IS GENERATED BY ZAP

#pragma once

#include <stdint.h>

namespace chip {
namespace app {
namespace Clusters {

namespace detail {
// Enums shared across multiple clusters.

// Enum for ChangeIndicationEnum
enum class ChangeIndicationEnum : uint8_t
{
    kOk       = 0x00,
    kWarning  = 0x01,
    kCritical = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for DegradationDirectionEnum
enum class DegradationDirectionEnum : uint8_t
{
    kUp   = 0x00,
    kDown = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for ErrorStateEnum
enum class ErrorStateEnum : uint8_t
{
    kNoError                   = 0x00,
    kUnableToStartOrResume     = 0x01,
    kUnableToCompleteOperation = 0x02,
    kCommandInvalidInState     = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for LevelValueEnum
enum class LevelValueEnum : uint8_t
{
    kUnknown  = 0x00,
    kLow      = 0x01,
    kMedium   = 0x02,
    kHigh     = 0x03,
    kCritical = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for MeasurementMediumEnum
enum class MeasurementMediumEnum : uint8_t
{
    kAir   = 0x00,
    kWater = 0x01,
    kSoil  = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for MeasurementTypeEnum
enum class MeasurementTypeEnum : uint16_t
{
    kUnspecified      = 0x00,
    kVoltage          = 0x01,
    kActiveCurrent    = 0x02,
    kReactiveCurrent  = 0x03,
    kApparentCurrent  = 0x04,
    kActivePower      = 0x05,
    kReactivePower    = 0x06,
    kApparentPower    = 0x07,
    kRMSVoltage       = 0x08,
    kRMSCurrent       = 0x09,
    kRMSPower         = 0x0A,
    kFrequency        = 0x0B,
    kPowerFactor      = 0x0C,
    kNeutralCurrent   = 0x0D,
    kElectricalEnergy = 0x0E,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 15,
};

// Enum for MeasurementUnitEnum
enum class MeasurementUnitEnum : uint8_t
{
    kPpm  = 0x00,
    kPpb  = 0x01,
    kPpt  = 0x02,
    kMgm3 = 0x03,
    kUgm3 = 0x04,
    kNgm3 = 0x05,
    kPm3  = 0x06,
    kBqm3 = 0x07,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 8,
};

// Enum for OperationalStateEnum
enum class OperationalStateEnum : uint8_t
{
    kStopped = 0x00,
    kRunning = 0x01,
    kPaused  = 0x02,
    kError   = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for ProductIdentifierTypeEnum
enum class ProductIdentifierTypeEnum : uint8_t
{
    kUpc    = 0x00,
    kGtin8  = 0x01,
    kEan    = 0x02,
    kGtin14 = 0x03,
    kOem    = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Bitmaps shared across multiple clusters.

} // namespace detail

namespace Identify {

// Enum for EffectIdentifierEnum
enum class EffectIdentifierEnum : uint8_t
{
    kBlink         = 0x00,
    kBreathe       = 0x01,
    kOkay          = 0x02,
    kChannelChange = 0x0B,
    kFinishEffect  = 0xFE,
    kStopEffect    = 0xFF,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for EffectVariantEnum
enum class EffectVariantEnum : uint8_t
{
    kDefault = 0x00,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 1,
};

// Enum for IdentifyTypeEnum
enum class IdentifyTypeEnum : uint8_t
{
    kNone             = 0x00,
    kLightOutput      = 0x01,
    kVisibleIndicator = 0x02,
    kAudibleBeep      = 0x03,
    kDisplay          = 0x04,
    kActuator         = 0x05,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 6,
};
} // namespace Identify

namespace Groups {

// Bitmap for Feature
enum class Feature : uint32_t
{
    kGroupNames = 0x1,
};

// Bitmap for NameSupportBitmap
enum class NameSupportBitmap : uint8_t
{
    kGroupNames = 0x80,
};
} // namespace Groups

namespace OnOff {

// Enum for DelayedAllOffEffectVariantEnum
enum class DelayedAllOffEffectVariantEnum : uint8_t
{
    kDelayedOffFastFade = 0x00,
    kNoFade             = 0x01,
    kDelayedOffSlowFade = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for DyingLightEffectVariantEnum
enum class DyingLightEffectVariantEnum : uint8_t
{
    kDyingLightFadeOff = 0x00,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 1,
};

// Enum for EffectIdentifierEnum
enum class EffectIdentifierEnum : uint8_t
{
    kDelayedAllOff = 0x00,
    kDyingLight    = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for StartUpOnOffEnum
enum class StartUpOnOffEnum : uint8_t
{
    kOff    = 0x00,
    kOn     = 0x01,
    kToggle = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kLighting          = 0x1,
    kDeadFrontBehavior = 0x2,
    kOffOnly           = 0x4,
};

// Bitmap for OnOffControlBitmap
enum class OnOffControlBitmap : uint8_t
{
    kAcceptOnlyWhenOn = 0x1,
};
} // namespace OnOff

namespace OnOffSwitchConfiguration {} // namespace OnOffSwitchConfiguration

namespace LevelControl {

// Enum for MoveModeEnum
enum class MoveModeEnum : uint8_t
{
    kUp   = 0x00,
    kDown = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for StepModeEnum
enum class StepModeEnum : uint8_t
{
    kUp   = 0x00,
    kDown = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kOnOff     = 0x1,
    kLighting  = 0x2,
    kFrequency = 0x4,
};

// Bitmap for OptionsBitmap
enum class OptionsBitmap : uint8_t
{
    kExecuteIfOff           = 0x1,
    kCoupleColorTempToLevel = 0x2,
};
} // namespace LevelControl

namespace BinaryInputBasic {} // namespace BinaryInputBasic

namespace PulseWidthModulation {} // namespace PulseWidthModulation

namespace Descriptor {

// Bitmap for Feature
enum class Feature : uint32_t
{
    kTagList = 0x1,
};
} // namespace Descriptor

namespace Binding {} // namespace Binding

namespace AccessControl {

// Enum for AccessControlEntryAuthModeEnum
enum class AccessControlEntryAuthModeEnum : uint8_t
{
    kPase  = 0x01,
    kCase  = 0x02,
    kGroup = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 0,
};

// Enum for AccessControlEntryPrivilegeEnum
enum class AccessControlEntryPrivilegeEnum : uint8_t
{
    kView       = 0x01,
    kProxyView  = 0x02,
    kOperate    = 0x03,
    kManage     = 0x04,
    kAdminister = 0x05,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 0,
};

// Enum for ChangeTypeEnum
enum class ChangeTypeEnum : uint8_t
{
    kChanged = 0x00,
    kAdded   = 0x01,
    kRemoved = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};
} // namespace AccessControl

namespace Actions {

// Enum for ActionErrorEnum
enum class ActionErrorEnum : uint8_t
{
    kUnknown     = 0x00,
    kInterrupted = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for ActionStateEnum
enum class ActionStateEnum : uint8_t
{
    kInactive = 0x00,
    kActive   = 0x01,
    kPaused   = 0x02,
    kDisabled = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for ActionTypeEnum
enum class ActionTypeEnum : uint8_t
{
    kOther        = 0x00,
    kScene        = 0x01,
    kSequence     = 0x02,
    kAutomation   = 0x03,
    kException    = 0x04,
    kNotification = 0x05,
    kAlarm        = 0x06,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};

// Enum for EndpointListTypeEnum
enum class EndpointListTypeEnum : uint8_t
{
    kOther = 0x00,
    kRoom  = 0x01,
    kZone  = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Bitmap for CommandBits
enum class CommandBits : uint16_t
{
    kInstantAction               = 0x1,
    kInstantActionWithTransition = 0x2,
    kStartAction                 = 0x4,
    kStartActionWithDuration     = 0x8,
    kStopAction                  = 0x10,
    kPauseAction                 = 0x20,
    kPauseActionWithDuration     = 0x40,
    kResumeAction                = 0x80,
    kEnableAction                = 0x100,
    kEnableActionWithDuration    = 0x200,
    kDisableAction               = 0x400,
    kDisableActionWithDuration   = 0x800,
};
} // namespace Actions

namespace BasicInformation {

// Enum for ColorEnum
enum class ColorEnum : uint8_t
{
    kBlack   = 0x00,
    kNavy    = 0x01,
    kGreen   = 0x02,
    kTeal    = 0x03,
    kMaroon  = 0x04,
    kPurple  = 0x05,
    kOlive   = 0x06,
    kGray    = 0x07,
    kBlue    = 0x08,
    kLime    = 0x09,
    kAqua    = 0x0A,
    kRed     = 0x0B,
    kFuchsia = 0x0C,
    kYellow  = 0x0D,
    kWhite   = 0x0E,
    kNickel  = 0x0F,
    kChrome  = 0x10,
    kBrass   = 0x11,
    kCopper  = 0x12,
    kSilver  = 0x13,
    kGold    = 0x14,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 21,
};

// Enum for ProductFinishEnum
enum class ProductFinishEnum : uint8_t
{
    kOther    = 0x00,
    kMatte    = 0x01,
    kSatin    = 0x02,
    kPolished = 0x03,
    kRugged   = 0x04,
    kFabric   = 0x05,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 6,
};
} // namespace BasicInformation

namespace OtaSoftwareUpdateProvider {

// Enum for ApplyUpdateActionEnum
enum class ApplyUpdateActionEnum : uint8_t
{
    kProceed         = 0x00,
    kAwaitNextAction = 0x01,
    kDiscontinue     = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for DownloadProtocolEnum
enum class DownloadProtocolEnum : uint8_t
{
    kBDXSynchronous  = 0x00,
    kBDXAsynchronous = 0x01,
    kHttps           = 0x02,
    kVendorSpecific  = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for StatusEnum
enum class StatusEnum : uint8_t
{
    kUpdateAvailable              = 0x00,
    kBusy                         = 0x01,
    kNotAvailable                 = 0x02,
    kDownloadProtocolNotSupported = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};
} // namespace OtaSoftwareUpdateProvider

namespace OtaSoftwareUpdateRequestor {

// Enum for AnnouncementReasonEnum
enum class AnnouncementReasonEnum : uint8_t
{
    kSimpleAnnouncement    = 0x00,
    kUpdateAvailable       = 0x01,
    kUrgentUpdateAvailable = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for ChangeReasonEnum
enum class ChangeReasonEnum : uint8_t
{
    kUnknown         = 0x00,
    kSuccess         = 0x01,
    kFailure         = 0x02,
    kTimeOut         = 0x03,
    kDelayByProvider = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for UpdateStateEnum
enum class UpdateStateEnum : uint8_t
{
    kUnknown              = 0x00,
    kIdle                 = 0x01,
    kQuerying             = 0x02,
    kDelayedOnQuery       = 0x03,
    kDownloading          = 0x04,
    kApplying             = 0x05,
    kDelayedOnApply       = 0x06,
    kRollingBack          = 0x07,
    kDelayedOnUserConsent = 0x08,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 9,
};
} // namespace OtaSoftwareUpdateRequestor

namespace LocalizationConfiguration {} // namespace LocalizationConfiguration

namespace TimeFormatLocalization {

// Enum for CalendarTypeEnum
enum class CalendarTypeEnum : uint8_t
{
    kBuddhist        = 0x00,
    kChinese         = 0x01,
    kCoptic          = 0x02,
    kEthiopian       = 0x03,
    kGregorian       = 0x04,
    kHebrew          = 0x05,
    kIndian          = 0x06,
    kIslamic         = 0x07,
    kJapanese        = 0x08,
    kKorean          = 0x09,
    kPersian         = 0x0A,
    kTaiwanese       = 0x0B,
    kUseActiveLocale = 0xFF,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 12,
};

// Enum for HourFormatEnum
enum class HourFormatEnum : uint8_t
{
    k12hr            = 0x00,
    k24hr            = 0x01,
    kUseActiveLocale = 0xFF,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kCalendarFormat = 0x1,
};
} // namespace TimeFormatLocalization

namespace UnitLocalization {

// Enum for TempUnitEnum
enum class TempUnitEnum : uint8_t
{
    kFahrenheit = 0x00,
    kCelsius    = 0x01,
    kKelvin     = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kTemperatureUnit = 0x1,
};
} // namespace UnitLocalization

namespace PowerSourceConfiguration {} // namespace PowerSourceConfiguration

namespace PowerSource {

// Enum for BatApprovedChemistryEnum
enum class BatApprovedChemistryEnum : uint16_t
{
    kUnspecified             = 0x00,
    kAlkaline                = 0x01,
    kLithiumCarbonFluoride   = 0x02,
    kLithiumChromiumOxide    = 0x03,
    kLithiumCopperOxide      = 0x04,
    kLithiumIronDisulfide    = 0x05,
    kLithiumManganeseDioxide = 0x06,
    kLithiumThionylChloride  = 0x07,
    kMagnesium               = 0x08,
    kMercuryOxide            = 0x09,
    kNickelOxyhydride        = 0x0A,
    kSilverOxide             = 0x0B,
    kZincAir                 = 0x0C,
    kZincCarbon              = 0x0D,
    kZincChloride            = 0x0E,
    kZincManganeseDioxide    = 0x0F,
    kLeadAcid                = 0x10,
    kLithiumCobaltOxide      = 0x11,
    kLithiumIon              = 0x12,
    kLithiumIonPolymer       = 0x13,
    kLithiumIronPhosphate    = 0x14,
    kLithiumSulfur           = 0x15,
    kLithiumTitanate         = 0x16,
    kNickelCadmium           = 0x17,
    kNickelHydrogen          = 0x18,
    kNickelIron              = 0x19,
    kNickelMetalHydride      = 0x1A,
    kNickelZinc              = 0x1B,
    kSilverZinc              = 0x1C,
    kSodiumIon               = 0x1D,
    kSodiumSulfur            = 0x1E,
    kZincBromide             = 0x1F,
    kZincCerium              = 0x20,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 33,
};

// Enum for BatChargeFaultEnum
enum class BatChargeFaultEnum : uint8_t
{
    kUnspecified         = 0x00,
    kAmbientTooHot       = 0x01,
    kAmbientTooCold      = 0x02,
    kBatteryTooHot       = 0x03,
    kBatteryTooCold      = 0x04,
    kBatteryAbsent       = 0x05,
    kBatteryOverVoltage  = 0x06,
    kBatteryUnderVoltage = 0x07,
    kChargerOverVoltage  = 0x08,
    kChargerUnderVoltage = 0x09,
    kSafetyTimeout       = 0x0A,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 11,
};

// Enum for BatChargeLevelEnum
enum class BatChargeLevelEnum : uint8_t
{
    kOk       = 0x00,
    kWarning  = 0x01,
    kCritical = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for BatChargeStateEnum
enum class BatChargeStateEnum : uint8_t
{
    kUnknown        = 0x00,
    kIsCharging     = 0x01,
    kIsAtFullCharge = 0x02,
    kIsNotCharging  = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for BatCommonDesignationEnum
enum class BatCommonDesignationEnum : uint16_t
{
    kUnspecified = 0x00,
    kAaa         = 0x01,
    kAa          = 0x02,
    kC           = 0x03,
    kD           = 0x04,
    k4v5         = 0x05,
    k6v0         = 0x06,
    k9v0         = 0x07,
    k12aa        = 0x08,
    kAaaa        = 0x09,
    kA           = 0x0A,
    kB           = 0x0B,
    kF           = 0x0C,
    kN           = 0x0D,
    kNo6         = 0x0E,
    kSubC        = 0x0F,
    kA23         = 0x10,
    kA27         = 0x11,
    kBa5800      = 0x12,
    kDuplex      = 0x13,
    k4sr44       = 0x14,
    k523         = 0x15,
    k531         = 0x16,
    k15v0        = 0x17,
    k22v5        = 0x18,
    k30v0        = 0x19,
    k45v0        = 0x1A,
    k67v5        = 0x1B,
    kJ           = 0x1C,
    kCr123a      = 0x1D,
    kCr2         = 0x1E,
    k2cr5        = 0x1F,
    kCrP2        = 0x20,
    kCrV3        = 0x21,
    kSr41        = 0x22,
    kSr43        = 0x23,
    kSr44        = 0x24,
    kSr45        = 0x25,
    kSr48        = 0x26,
    kSr54        = 0x27,
    kSr55        = 0x28,
    kSr57        = 0x29,
    kSr58        = 0x2A,
    kSr59        = 0x2B,
    kSr60        = 0x2C,
    kSr63        = 0x2D,
    kSr64        = 0x2E,
    kSr65        = 0x2F,
    kSr66        = 0x30,
    kSr67        = 0x31,
    kSr68        = 0x32,
    kSr69        = 0x33,
    kSr516       = 0x34,
    kSr731       = 0x35,
    kSr712       = 0x36,
    kLr932       = 0x37,
    kA5          = 0x38,
    kA10         = 0x39,
    kA13         = 0x3A,
    kA312        = 0x3B,
    kA675        = 0x3C,
    kAc41e       = 0x3D,
    k10180       = 0x3E,
    k10280       = 0x3F,
    k10440       = 0x40,
    k14250       = 0x41,
    k14430       = 0x42,
    k14500       = 0x43,
    k14650       = 0x44,
    k15270       = 0x45,
    k16340       = 0x46,
    kRcr123a     = 0x47,
    k17500       = 0x48,
    k17670       = 0x49,
    k18350       = 0x4A,
    k18500       = 0x4B,
    k18650       = 0x4C,
    k19670       = 0x4D,
    k25500       = 0x4E,
    k26650       = 0x4F,
    k32600       = 0x50,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 81,
};

// Enum for BatFaultEnum
enum class BatFaultEnum : uint8_t
{
    kUnspecified = 0x00,
    kOverTemp    = 0x01,
    kUnderTemp   = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for BatReplaceabilityEnum
enum class BatReplaceabilityEnum : uint8_t
{
    kUnspecified        = 0x00,
    kNotReplaceable     = 0x01,
    kUserReplaceable    = 0x02,
    kFactoryReplaceable = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for PowerSourceStatusEnum
enum class PowerSourceStatusEnum : uint8_t
{
    kUnspecified = 0x00,
    kActive      = 0x01,
    kStandby     = 0x02,
    kUnavailable = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for WiredCurrentTypeEnum
enum class WiredCurrentTypeEnum : uint8_t
{
    kAc = 0x00,
    kDc = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for WiredFaultEnum
enum class WiredFaultEnum : uint8_t
{
    kUnspecified  = 0x00,
    kOverVoltage  = 0x01,
    kUnderVoltage = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kWired        = 0x1,
    kBattery      = 0x2,
    kRechargeable = 0x4,
    kReplaceable  = 0x8,
};
} // namespace PowerSource

namespace GeneralCommissioning {

// Enum for CommissioningErrorEnum
enum class CommissioningErrorEnum : uint8_t
{
    kOk                    = 0x00,
    kValueOutsideRange     = 0x01,
    kInvalidAuthentication = 0x02,
    kNoFailSafe            = 0x03,
    kBusyWithOtherAdmin    = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for RegulatoryLocationTypeEnum
enum class RegulatoryLocationTypeEnum : uint8_t
{
    kIndoor        = 0x00,
    kOutdoor       = 0x01,
    kIndoorOutdoor = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};
} // namespace GeneralCommissioning

namespace NetworkCommissioning {

// Enum for NetworkCommissioningStatusEnum
enum class NetworkCommissioningStatusEnum : uint8_t
{
    kSuccess                = 0x00,
    kOutOfRange             = 0x01,
    kBoundsExceeded         = 0x02,
    kNetworkIDNotFound      = 0x03,
    kDuplicateNetworkID     = 0x04,
    kNetworkNotFound        = 0x05,
    kRegulatoryError        = 0x06,
    kAuthFailure            = 0x07,
    kUnsupportedSecurity    = 0x08,
    kOtherConnectionFailure = 0x09,
    kIPV6Failed             = 0x0A,
    kIPBindFailed           = 0x0B,
    kUnknownError           = 0x0C,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 13,
};

// Enum for WiFiBandEnum
enum class WiFiBandEnum : uint8_t
{
    k2g4  = 0x00,
    k3g65 = 0x01,
    k5g   = 0x02,
    k6g   = 0x03,
    k60g  = 0x04,
    k1g   = 0x05,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 6,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kWiFiNetworkInterface     = 0x1,
    kThreadNetworkInterface   = 0x2,
    kEthernetNetworkInterface = 0x4,
    kPerDeviceCredentials     = 0x8,
};

// Bitmap for ThreadCapabilitiesBitmap
enum class ThreadCapabilitiesBitmap : uint16_t
{
    kIsBorderRouterCapable                = 0x1,
    kIsRouterCapable                      = 0x2,
    kIsSleepyEndDeviceCapable             = 0x4,
    kIsFullThreadDevice                   = 0x8,
    kIsSynchronizedSleepyEndDeviceCapable = 0x10,
};

// Bitmap for WiFiSecurityBitmap
enum class WiFiSecurityBitmap : uint8_t
{
    kUnencrypted   = 0x1,
    kWep           = 0x2,
    kWpaPersonal   = 0x4,
    kWpa2Personal  = 0x8,
    kWpa3Personal  = 0x10,
    kWpa3MatterPdc = 0x20,
};
} // namespace NetworkCommissioning

namespace DiagnosticLogs {

// Enum for IntentEnum
enum class IntentEnum : uint8_t
{
    kEndUserSupport = 0x00,
    kNetworkDiag    = 0x01,
    kCrashLogs      = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for StatusEnum
enum class StatusEnum : uint8_t
{
    kSuccess   = 0x00,
    kExhausted = 0x01,
    kNoLogs    = 0x02,
    kBusy      = 0x03,
    kDenied    = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for TransferProtocolEnum
enum class TransferProtocolEnum : uint8_t
{
    kResponsePayload = 0x00,
    kBdx             = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};
} // namespace DiagnosticLogs

namespace GeneralDiagnostics {

// Enum for BootReasonEnum
enum class BootReasonEnum : uint8_t
{
    kUnspecified             = 0x00,
    kPowerOnReboot           = 0x01,
    kBrownOutReset           = 0x02,
    kSoftwareWatchdogReset   = 0x03,
    kHardwareWatchdogReset   = 0x04,
    kSoftwareUpdateCompleted = 0x05,
    kSoftwareReset           = 0x06,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};

// Enum for HardwareFaultEnum
enum class HardwareFaultEnum : uint8_t
{
    kUnspecified            = 0x00,
    kRadio                  = 0x01,
    kSensor                 = 0x02,
    kResettableOverTemp     = 0x03,
    kNonResettableOverTemp  = 0x04,
    kPowerSource            = 0x05,
    kVisualDisplayFault     = 0x06,
    kAudioOutputFault       = 0x07,
    kUserInterfaceFault     = 0x08,
    kNonVolatileMemoryError = 0x09,
    kTamperDetected         = 0x0A,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 11,
};

// Enum for InterfaceTypeEnum
enum class InterfaceTypeEnum : uint8_t
{
    kUnspecified = 0x00,
    kWiFi        = 0x01,
    kEthernet    = 0x02,
    kCellular    = 0x03,
    kThread      = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for NetworkFaultEnum
enum class NetworkFaultEnum : uint8_t
{
    kUnspecified      = 0x00,
    kHardwareFailure  = 0x01,
    kNetworkJammed    = 0x02,
    kConnectionFailed = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for RadioFaultEnum
enum class RadioFaultEnum : uint8_t
{
    kUnspecified   = 0x00,
    kWiFiFault     = 0x01,
    kCellularFault = 0x02,
    kThreadFault   = 0x03,
    kNFCFault      = 0x04,
    kBLEFault      = 0x05,
    kEthernetFault = 0x06,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kDataModelTest = 0x1,
};
} // namespace GeneralDiagnostics

namespace SoftwareDiagnostics {

// Bitmap for Feature
enum class Feature : uint32_t
{
    kWatermarks = 0x1,
};
} // namespace SoftwareDiagnostics

namespace ThreadNetworkDiagnostics {

// Enum for ConnectionStatusEnum
enum class ConnectionStatusEnum : uint8_t
{
    kConnected    = 0x00,
    kNotConnected = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for NetworkFaultEnum
enum class NetworkFaultEnum : uint8_t
{
    kUnspecified     = 0x00,
    kLinkDown        = 0x01,
    kHardwareFailure = 0x02,
    kNetworkJammed   = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for RoutingRoleEnum
enum class RoutingRoleEnum : uint8_t
{
    kUnspecified     = 0x00,
    kUnassigned      = 0x01,
    kSleepyEndDevice = 0x02,
    kEndDevice       = 0x03,
    kReed            = 0x04,
    kRouter          = 0x05,
    kLeader          = 0x06,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kPacketCounts = 0x1,
    kErrorCounts  = 0x2,
    kMLECounts    = 0x4,
    kMACCounts    = 0x8,
};
} // namespace ThreadNetworkDiagnostics

namespace WiFiNetworkDiagnostics {

// Enum for AssociationFailureCauseEnum
enum class AssociationFailureCauseEnum : uint8_t
{
    kUnknown              = 0x00,
    kAssociationFailed    = 0x01,
    kAuthenticationFailed = 0x02,
    kSsidNotFound         = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for ConnectionStatusEnum
enum class ConnectionStatusEnum : uint8_t
{
    kConnected    = 0x00,
    kNotConnected = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for SecurityTypeEnum
enum class SecurityTypeEnum : uint8_t
{
    kUnspecified = 0x00,
    kNone        = 0x01,
    kWep         = 0x02,
    kWpa         = 0x03,
    kWpa2        = 0x04,
    kWpa3        = 0x05,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 6,
};

// Enum for WiFiVersionEnum
enum class WiFiVersionEnum : uint8_t
{
    kA  = 0x00,
    kB  = 0x01,
    kG  = 0x02,
    kN  = 0x03,
    kAc = 0x04,
    kAx = 0x05,
    kAh = 0x06,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kPacketCounts = 0x1,
    kErrorCounts  = 0x2,
};
} // namespace WiFiNetworkDiagnostics

namespace EthernetNetworkDiagnostics {

// Enum for PHYRateEnum
enum class PHYRateEnum : uint8_t
{
    kRate10M  = 0x00,
    kRate100M = 0x01,
    kRate1G   = 0x02,
    kRate25g  = 0x03,
    kRate5G   = 0x04,
    kRate10G  = 0x05,
    kRate40G  = 0x06,
    kRate100G = 0x07,
    kRate200G = 0x08,
    kRate400G = 0x09,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 10,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kPacketCounts = 0x1,
    kErrorCounts  = 0x2,
};
} // namespace EthernetNetworkDiagnostics

namespace TimeSynchronization {

// Enum for GranularityEnum
enum class GranularityEnum : uint8_t
{
    kNoTimeGranularity       = 0x00,
    kMinutesGranularity      = 0x01,
    kSecondsGranularity      = 0x02,
    kMillisecondsGranularity = 0x03,
    kMicrosecondsGranularity = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for StatusCode
enum class StatusCode : uint8_t
{
    kTimeNotAccepted = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 0,
};

// Enum for TimeSourceEnum
enum class TimeSourceEnum : uint8_t
{
    kNone             = 0x00,
    kUnknown          = 0x01,
    kAdmin            = 0x02,
    kNodeTimeCluster  = 0x03,
    kNonMatterSNTP    = 0x04,
    kNonMatterNTP     = 0x05,
    kMatterSNTP       = 0x06,
    kMatterNTP        = 0x07,
    kMixedNTP         = 0x08,
    kNonMatterSNTPNTS = 0x09,
    kNonMatterNTPNTS  = 0x0A,
    kMatterSNTPNTS    = 0x0B,
    kMatterNTPNTS     = 0x0C,
    kMixedNTPNTS      = 0x0D,
    kCloudSource      = 0x0E,
    kPtp              = 0x0F,
    kGnss             = 0x10,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 17,
};

// Enum for TimeZoneDatabaseEnum
enum class TimeZoneDatabaseEnum : uint8_t
{
    kFull    = 0x00,
    kPartial = 0x01,
    kNone    = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kTimeZone       = 0x1,
    kNTPClient      = 0x2,
    kNTPServer      = 0x4,
    kTimeSyncClient = 0x8,
};
} // namespace TimeSynchronization

namespace BridgedDeviceBasicInformation {

// Enum for ColorEnum
enum class ColorEnum : uint8_t
{
    kBlack   = 0x00,
    kNavy    = 0x01,
    kGreen   = 0x02,
    kTeal    = 0x03,
    kMaroon  = 0x04,
    kPurple  = 0x05,
    kOlive   = 0x06,
    kGray    = 0x07,
    kBlue    = 0x08,
    kLime    = 0x09,
    kAqua    = 0x0A,
    kRed     = 0x0B,
    kFuchsia = 0x0C,
    kYellow  = 0x0D,
    kWhite   = 0x0E,
    kNickel  = 0x0F,
    kChrome  = 0x10,
    kBrass   = 0x11,
    kCopper  = 0x12,
    kSilver  = 0x13,
    kGold    = 0x14,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 21,
};

// Enum for ProductFinishEnum
enum class ProductFinishEnum : uint8_t
{
    kOther    = 0x00,
    kMatte    = 0x01,
    kSatin    = 0x02,
    kPolished = 0x03,
    kRugged   = 0x04,
    kFabric   = 0x05,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 6,
};
} // namespace BridgedDeviceBasicInformation

namespace Switch {

// Bitmap for Feature
enum class Feature : uint32_t
{
    kLatchingSwitch            = 0x1,
    kMomentarySwitch           = 0x2,
    kMomentarySwitchRelease    = 0x4,
    kMomentarySwitchLongPress  = 0x8,
    kMomentarySwitchMultiPress = 0x10,
};
} // namespace Switch

namespace AdministratorCommissioning {

// Enum for CommissioningWindowStatusEnum
enum class CommissioningWindowStatusEnum : uint8_t
{
    kWindowNotOpen      = 0x00,
    kEnhancedWindowOpen = 0x01,
    kBasicWindowOpen    = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for StatusCode
enum class StatusCode : uint8_t
{
    kBusy               = 0x02,
    kPAKEParameterError = 0x03,
    kWindowNotOpen      = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 0,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kBasic = 0x1,
};
} // namespace AdministratorCommissioning

namespace OperationalCredentials {

// Enum for CertificateChainTypeEnum
enum class CertificateChainTypeEnum : uint8_t
{
    kDACCertificate = 0x01,
    kPAICertificate = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 0,
};

// Enum for NodeOperationalCertStatusEnum
enum class NodeOperationalCertStatusEnum : uint8_t
{
    kOk                  = 0x00,
    kInvalidPublicKey    = 0x01,
    kInvalidNodeOpId     = 0x02,
    kInvalidNOC          = 0x03,
    kMissingCsr          = 0x04,
    kTableFull           = 0x05,
    kInvalidAdminSubject = 0x06,
    kFabricConflict      = 0x09,
    kLabelConflict       = 0x0A,
    kInvalidFabricIndex  = 0x0B,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};
} // namespace OperationalCredentials

namespace GroupKeyManagement {

// Enum for GroupKeySecurityPolicyEnum
enum class GroupKeySecurityPolicyEnum : uint8_t
{
    kTrustFirst   = 0x00,
    kCacheAndSync = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kCacheAndSync = 0x1,
};
} // namespace GroupKeyManagement

namespace FixedLabel {} // namespace FixedLabel

namespace UserLabel {} // namespace UserLabel

namespace ProxyConfiguration {} // namespace ProxyConfiguration

namespace ProxyDiscovery {} // namespace ProxyDiscovery

namespace ProxyValid {} // namespace ProxyValid

namespace BooleanState {} // namespace BooleanState

namespace IcdManagement {

// Enum for OperatingModeEnum
enum class OperatingModeEnum : uint8_t
{
    kSit = 0x00,
    kLit = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kCheckInProtocolSupport = 0x1,
    kUserActiveModeTrigger  = 0x2,
    kLongIdleTimeSupport    = 0x4,
};

// Bitmap for UserActiveModeTriggerBitmap
enum class UserActiveModeTriggerBitmap : uint32_t
{
    kPowerCycle               = 0x1,
    kSettingsMenu             = 0x2,
    kCustomInstruction        = 0x4,
    kDeviceManual             = 0x8,
    kActuateSensor            = 0x10,
    kActuateSensorSeconds     = 0x20,
    kActuateSensorTimes       = 0x40,
    kActuateSensorLightsBlink = 0x80,
    kResetButton              = 0x100,
    kResetButtonLightsBlink   = 0x200,
    kResetButtonSeconds       = 0x400,
    kResetButtonTimes         = 0x800,
    kSetupButton              = 0x1000,
    kSetupButtonSeconds       = 0x2000,
    kSetupButtonLightsBlink   = 0x4000,
    kSetupButtonTimes         = 0x8000,
    kAppDefinedButton         = 0x10000,
};
} // namespace IcdManagement

namespace Timer {

// Enum for TimerStatusEnum
enum class TimerStatusEnum : uint8_t
{
    kRunning = 0x00,
    kPaused  = 0x01,
    kExpired = 0x02,
    kReady   = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kReset = 0x1,
};
} // namespace Timer

namespace OvenCavityOperationalState {

using ErrorStateEnum = Clusters::detail::ErrorStateEnum;

using OperationalStateEnum = Clusters::detail::OperationalStateEnum;
} // namespace OvenCavityOperationalState

namespace OvenMode {

// Enum for ModeTag
enum class ModeTag : uint16_t
{
    kBake            = 0x4000,
    kConvection      = 0x4001,
    kGrill           = 0x4002,
    kRoast           = 0x4003,
    kClean           = 0x4004,
    kConvectionBake  = 0x4005,
    kConvectionRoast = 0x4006,
    kWarming         = 0x4007,
    kProofing        = 0x4008,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 0,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kOnOff = 0x1,
};
} // namespace OvenMode

namespace LaundryDryerControls {

// Enum for DrynessLevelEnum
enum class DrynessLevelEnum : uint8_t
{
    kLow    = 0x00,
    kNormal = 0x01,
    kExtra  = 0x02,
    kMax    = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};
} // namespace LaundryDryerControls

namespace ModeSelect {

// Bitmap for Feature
enum class Feature : uint32_t
{
    kOnOff = 0x1,
};
} // namespace ModeSelect

namespace LaundryWasherMode {

// Enum for ModeTag
enum class ModeTag : uint16_t
{
    kNormal   = 0x4000,
    kDelicate = 0x4001,
    kHeavy    = 0x4002,
    kWhites   = 0x4003,
    // kUnknownEnumValue intentionally not defined. This enum never goes
    // through DataModel::Decode, likely because it is a part of a derived
    // cluster. As a result having kUnknownEnumValue in this enum is error
    // prone, and was removed. See
    // src/app/common/templates/config-data.yaml.
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kOnOff = 0x1,
};
} // namespace LaundryWasherMode

namespace RefrigeratorAndTemperatureControlledCabinetMode {

// Enum for ModeTag
enum class ModeTag : uint16_t
{
    kRapidCool   = 0x4000,
    kRapidFreeze = 0x4001,
    // kUnknownEnumValue intentionally not defined. This enum never goes
    // through DataModel::Decode, likely because it is a part of a derived
    // cluster. As a result having kUnknownEnumValue in this enum is error
    // prone, and was removed. See
    // src/app/common/templates/config-data.yaml.
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kOnOff = 0x1,
};
} // namespace RefrigeratorAndTemperatureControlledCabinetMode

namespace LaundryWasherControls {

// Enum for NumberOfRinsesEnum
enum class NumberOfRinsesEnum : uint8_t
{
    kNone   = 0x00,
    kNormal = 0x01,
    kExtra  = 0x02,
    kMax    = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kSpin  = 0x1,
    kRinse = 0x2,
};
} // namespace LaundryWasherControls

namespace RvcRunMode {

// Enum for ModeTag
enum class ModeTag : uint16_t
{
    kIdle     = 0x4000,
    kCleaning = 0x4001,
    kMapping  = 0x4002,
    // kUnknownEnumValue intentionally not defined. This enum never goes
    // through DataModel::Decode, likely because it is a part of a derived
    // cluster. As a result having kUnknownEnumValue in this enum is error
    // prone, and was removed. See
    // src/app/common/templates/config-data.yaml.
};

// Enum for StatusCode
enum class StatusCode : uint8_t
{
    kStuck                 = 0x41,
    kDustBinMissing        = 0x42,
    kDustBinFull           = 0x43,
    kWaterTankEmpty        = 0x44,
    kWaterTankMissing      = 0x45,
    kWaterTankLidOpen      = 0x46,
    kMopCleaningPadMissing = 0x47,
    kBatteryLow            = 0x48,
    // kUnknownEnumValue intentionally not defined. This enum never goes
    // through DataModel::Decode, likely because it is a part of a derived
    // cluster. As a result having kUnknownEnumValue in this enum is error
    // prone, and was removed. See
    // src/app/common/templates/config-data.yaml.
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNoFeatures = 0x0,
};
} // namespace RvcRunMode

namespace RvcCleanMode {

// Enum for ModeTag
enum class ModeTag : uint16_t
{
    kDeepClean = 0x4000,
    kVacuum    = 0x4001,
    kMop       = 0x4002,
    // kUnknownEnumValue intentionally not defined. This enum never goes
    // through DataModel::Decode, likely because it is a part of a derived
    // cluster. As a result having kUnknownEnumValue in this enum is error
    // prone, and was removed. See
    // src/app/common/templates/config-data.yaml.
};

// Enum for StatusCode
enum class StatusCode : uint8_t
{
    kCleaningInProgress = 0x40,
    // kUnknownEnumValue intentionally not defined. This enum never goes
    // through DataModel::Decode, likely because it is a part of a derived
    // cluster. As a result having kUnknownEnumValue in this enum is error
    // prone, and was removed. See
    // src/app/common/templates/config-data.yaml.
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNoFeatures = 0x0,
};
} // namespace RvcCleanMode

namespace TemperatureControl {

// Bitmap for Feature
enum class Feature : uint32_t
{
    kTemperatureNumber = 0x1,
    kTemperatureLevel  = 0x2,
    kTemperatureStep   = 0x4,
};
} // namespace TemperatureControl

namespace RefrigeratorAlarm {

// Bitmap for AlarmBitmap
enum class AlarmBitmap : uint32_t
{
    kDoorOpen = 0x1,
};
} // namespace RefrigeratorAlarm

namespace DishwasherMode {

// Enum for ModeTag
enum class ModeTag : uint16_t
{
    kNormal = 0x4000,
    kHeavy  = 0x4001,
    kLight  = 0x4002,
    // kUnknownEnumValue intentionally not defined. This enum never goes
    // through DataModel::Decode, likely because it is a part of a derived
    // cluster. As a result having kUnknownEnumValue in this enum is error
    // prone, and was removed. See
    // src/app/common/templates/config-data.yaml.
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kOnOff = 0x1,
};
} // namespace DishwasherMode

namespace AirQuality {

// Enum for AirQualityEnum
enum class AirQualityEnum : uint8_t
{
    kUnknown       = 0x00,
    kGood          = 0x01,
    kFair          = 0x02,
    kModerate      = 0x03,
    kPoor          = 0x04,
    kVeryPoor      = 0x05,
    kExtremelyPoor = 0x06,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kFair          = 0x1,
    kModerate      = 0x2,
    kVeryPoor      = 0x4,
    kExtremelyPoor = 0x8,
};
} // namespace AirQuality

namespace SmokeCoAlarm {

// Enum for AlarmStateEnum
enum class AlarmStateEnum : uint8_t
{
    kNormal   = 0x00,
    kWarning  = 0x01,
    kCritical = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for ContaminationStateEnum
enum class ContaminationStateEnum : uint8_t
{
    kNormal   = 0x00,
    kLow      = 0x01,
    kWarning  = 0x02,
    kCritical = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for EndOfServiceEnum
enum class EndOfServiceEnum : uint8_t
{
    kNormal  = 0x00,
    kExpired = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for ExpressedStateEnum
enum class ExpressedStateEnum : uint8_t
{
    kNormal            = 0x00,
    kSmokeAlarm        = 0x01,
    kCOAlarm           = 0x02,
    kBatteryAlert      = 0x03,
    kTesting           = 0x04,
    kHardwareFault     = 0x05,
    kEndOfService      = 0x06,
    kInterconnectSmoke = 0x07,
    kInterconnectCO    = 0x08,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 9,
};

// Enum for MuteStateEnum
enum class MuteStateEnum : uint8_t
{
    kNotMuted = 0x00,
    kMuted    = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for SensitivityEnum
enum class SensitivityEnum : uint8_t
{
    kHigh     = 0x00,
    kStandard = 0x01,
    kLow      = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kSmokeAlarm = 0x1,
    kCoAlarm    = 0x2,
};
} // namespace SmokeCoAlarm

namespace DishwasherAlarm {

// Bitmap for AlarmBitmap
enum class AlarmBitmap : uint32_t
{
    kInflowError     = 0x1,
    kDrainError      = 0x2,
    kDoorError       = 0x4,
    kTempTooLow      = 0x8,
    kTempTooHigh     = 0x10,
    kWaterLevelError = 0x20,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kReset = 0x1,
};
} // namespace DishwasherAlarm

namespace MicrowaveOvenMode {

// Enum for ModeTag
enum class ModeTag : uint16_t
{
    kNormal  = 0x4000,
    kDefrost = 0x4001,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 0,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kOnOff = 0x1,
};
} // namespace MicrowaveOvenMode

namespace MicrowaveOvenControl {

// Bitmap for Feature
enum class Feature : uint32_t
{
    kPowerAsNumber     = 0x1,
    kPowerInWatts      = 0x2,
    kPowerNumberLimits = 0x4,
};
} // namespace MicrowaveOvenControl

namespace OperationalState {

using ErrorStateEnum = Clusters::detail::ErrorStateEnum;

using OperationalStateEnum = Clusters::detail::OperationalStateEnum;
} // namespace OperationalState

namespace RvcOperationalState {

// Enum for ErrorStateEnum
enum class ErrorStateEnum : uint8_t
{
    kFailedToFindChargingDock = 0x40,
    kStuck                    = 0x41,
    kDustBinMissing           = 0x42,
    kDustBinFull              = 0x43,
    kWaterTankEmpty           = 0x44,
    kWaterTankMissing         = 0x45,
    kWaterTankLidOpen         = 0x46,
    kMopCleaningPadMissing    = 0x47,
    // kUnknownEnumValue intentionally not defined. This enum never goes
    // through DataModel::Decode, likely because it is a part of a derived
    // cluster. As a result having kUnknownEnumValue in this enum is error
    // prone, and was removed. See
    // src/app/common/templates/config-data.yaml.
};

// Enum for OperationalStateEnum
enum class OperationalStateEnum : uint8_t
{
    kSeekingCharger = 0x40,
    kCharging       = 0x41,
    kDocked         = 0x42,
    // kUnknownEnumValue intentionally not defined. This enum never goes
    // through DataModel::Decode, likely because it is a part of a derived
    // cluster. As a result having kUnknownEnumValue in this enum is error
    // prone, and was removed. See
    // src/app/common/templates/config-data.yaml.
};
} // namespace RvcOperationalState

namespace ScenesManagement {

// Bitmap for CopyModeBitmap
enum class CopyModeBitmap : uint8_t
{
    kCopyAllScenes = 0x1,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kSceneNames = 0x1,
};
} // namespace ScenesManagement

namespace HepaFilterMonitoring {

using ChangeIndicationEnum = Clusters::detail::ChangeIndicationEnum;

using DegradationDirectionEnum = Clusters::detail::DegradationDirectionEnum;

using ProductIdentifierTypeEnum = Clusters::detail::ProductIdentifierTypeEnum;

// Bitmap for Feature
enum class Feature : uint32_t
{
    kCondition              = 0x1,
    kWarning                = 0x2,
    kReplacementProductList = 0x4,
};
} // namespace HepaFilterMonitoring

namespace ActivatedCarbonFilterMonitoring {

using ChangeIndicationEnum = Clusters::detail::ChangeIndicationEnum;

using DegradationDirectionEnum = Clusters::detail::DegradationDirectionEnum;

using ProductIdentifierTypeEnum = Clusters::detail::ProductIdentifierTypeEnum;

// Bitmap for Feature
enum class Feature : uint32_t
{
    kCondition              = 0x1,
    kWarning                = 0x2,
    kReplacementProductList = 0x4,
};
} // namespace ActivatedCarbonFilterMonitoring

namespace BooleanStateConfiguration {

// Bitmap for AlarmModeBitmap
enum class AlarmModeBitmap : uint8_t
{
    kVisual  = 0x1,
    kAudible = 0x2,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kVisual           = 0x1,
    kAudible          = 0x2,
    kAlarmSuppress    = 0x4,
    kSensitivityLevel = 0x8,
};

// Bitmap for SensorFaultBitmap
enum class SensorFaultBitmap : uint16_t
{
    kGeneralFault = 0x1,
};
} // namespace BooleanStateConfiguration

namespace ValveConfigurationAndControl {

// Enum for StatusCodeEnum
enum class StatusCodeEnum : uint8_t
{
    kFailureDueToFault = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 0,
};

// Enum for ValveStateEnum
enum class ValveStateEnum : uint8_t
{
    kClosed        = 0x00,
    kOpen          = 0x01,
    kTransitioning = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kTimeSync = 0x1,
    kLevel    = 0x2,
};

// Bitmap for ValveFaultBitmap
enum class ValveFaultBitmap : uint16_t
{
    kGeneralFault    = 0x1,
    kBlocked         = 0x2,
    kLeaking         = 0x4,
    kNotConnected    = 0x8,
    kShortCircuit    = 0x10,
    kCurrentExceeded = 0x20,
};
} // namespace ValveConfigurationAndControl

namespace ElectricalPowerMeasurement {

using MeasurementTypeEnum = Clusters::detail::MeasurementTypeEnum;

// Enum for PowerModeEnum
enum class PowerModeEnum : uint8_t
{
    kUnknown = 0x00,
    kDc      = 0x01,
    kAc      = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kDirectCurrent      = 0x1,
    kAlternatingCurrent = 0x2,
    kPolyphasePower     = 0x4,
    kHarmonics          = 0x8,
    kPowerQuality       = 0x10,
};
} // namespace ElectricalPowerMeasurement

namespace ElectricalEnergyMeasurement {

using MeasurementTypeEnum = Clusters::detail::MeasurementTypeEnum;

// Bitmap for Feature
enum class Feature : uint32_t
{
    kImportedEnergy   = 0x1,
    kExportedEnergy   = 0x2,
    kCumulativeEnergy = 0x4,
    kPeriodicEnergy   = 0x8,
};
} // namespace ElectricalEnergyMeasurement

namespace DemandResponseLoadControl {

// Enum for CriticalityLevelEnum
enum class CriticalityLevelEnum : uint8_t
{
    kUnknown           = 0x00,
    kGreen             = 0x01,
    kLevel1            = 0x02,
    kLevel2            = 0x03,
    kLevel3            = 0x04,
    kLevel4            = 0x05,
    kLevel5            = 0x06,
    kEmergency         = 0x07,
    kPlannedOutage     = 0x08,
    kServiceDisconnect = 0x09,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 10,
};

// Enum for HeatingSourceEnum
enum class HeatingSourceEnum : uint8_t
{
    kAny         = 0x00,
    kElectric    = 0x01,
    kNonElectric = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for LoadControlEventChangeSourceEnum
enum class LoadControlEventChangeSourceEnum : uint8_t
{
    kAutomatic  = 0x00,
    kUserAction = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for LoadControlEventStatusEnum
enum class LoadControlEventStatusEnum : uint8_t
{
    kUnknown         = 0x00,
    kReceived        = 0x01,
    kInProgress      = 0x02,
    kCompleted       = 0x03,
    kOptedOut        = 0x04,
    kOptedIn         = 0x05,
    kCanceled        = 0x06,
    kSuperseded      = 0x07,
    kPartialOptedOut = 0x08,
    kPartialOptedIn  = 0x09,
    kNoParticipation = 0x0A,
    kUnavailable     = 0x0B,
    kFailed          = 0x0C,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 13,
};

// Bitmap for CancelControlBitmap
enum class CancelControlBitmap : uint16_t
{
    kRandomEnd = 0x1,
};

// Bitmap for DeviceClassBitmap
enum class DeviceClassBitmap : uint32_t
{
    kHvac             = 0x1,
    kStripHeater      = 0x2,
    kWaterHeater      = 0x4,
    kPoolPump         = 0x8,
    kSmartAppliance   = 0x10,
    kIrrigationPump   = 0x20,
    kCommercialLoad   = 0x40,
    kResidentialLoad  = 0x80,
    kExteriorLighting = 0x100,
    kInteriorLighting = 0x200,
    kEv               = 0x400,
    kGenerationSystem = 0x800,
    kSmartInverter    = 0x1000,
    kEvse             = 0x2000,
    kResu             = 0x4000,
    kEms              = 0x8000,
    kSem              = 0x10000,
};

// Bitmap for EventControlBitmap
enum class EventControlBitmap : uint16_t
{
    kRandomStart = 0x1,
};

// Bitmap for EventTransitionControlBitmap
enum class EventTransitionControlBitmap : uint16_t
{
    kRandomDuration = 0x1,
    kIgnoreOptOut   = 0x2,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kEnrollmentGroups    = 0x1,
    kTemperatureOffset   = 0x2,
    kTemperatureSetpoint = 0x4,
    kLoadAdjustment      = 0x8,
    kDutyCycle           = 0x10,
    kPowerSavings        = 0x20,
    kHeatingSource       = 0x40,
};
} // namespace DemandResponseLoadControl

namespace Messages {

// Enum for FutureMessagePreferenceEnum
enum class FutureMessagePreferenceEnum : uint8_t
{
    kAllowed    = 0x00,
    kIncreased  = 0x01,
    kReduced    = 0x02,
    kDisallowed = 0x03,
    kBanned     = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for MessagePriorityEnum
enum class MessagePriorityEnum : uint8_t
{
    kLow      = 0x00,
    kMedium   = 0x01,
    kHigh     = 0x02,
    kCritical = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kReceivedConfirmation = 0x1,
    kConfirmationResponse = 0x2,
    kConfirmationReply    = 0x4,
    kProtectedMessages    = 0x8,
};

// Bitmap for MessageControlBitmap
enum class MessageControlBitmap : uint8_t
{
    kConfirmationRequired = 0x1,
    kResponseRequired     = 0x2,
    kReplyMessage         = 0x4,
    kMessageConfirmed     = 0x8,
    kMessageProtected     = 0x10,
};
} // namespace Messages

namespace DeviceEnergyManagement {

// Enum for AdjustmentCauseEnum
enum class AdjustmentCauseEnum : uint8_t
{
    kLocalOptimization = 0x00,
    kGridOptimization  = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for CauseEnum
enum class CauseEnum : uint8_t
{
    kNormalCompletion = 0x00,
    kOffline          = 0x01,
    kFault            = 0x02,
    kUserOptOut       = 0x03,
    kCancelled        = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for CostTypeEnum
enum class CostTypeEnum : uint8_t
{
    kFinancial    = 0x00,
    kGHGEmissions = 0x01,
    kComfort      = 0x02,
    kTemperature  = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for ESAStateEnum
enum class ESAStateEnum : uint8_t
{
    kOffline           = 0x00,
    kOnline            = 0x01,
    kFault             = 0x02,
    kPowerAdjustActive = 0x03,
    kPaused            = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for ESATypeEnum
enum class ESATypeEnum : uint8_t
{
    kEvse                = 0x00,
    kSpaceHeating        = 0x01,
    kWaterHeating        = 0x02,
    kSpaceCooling        = 0x03,
    kSpaceHeatingCooling = 0x04,
    kBatteryStorage      = 0x05,
    kSolarPV             = 0x06,
    kFridgeFreezer       = 0x07,
    kWashingMachine      = 0x08,
    kDishwasher          = 0x09,
    kCooking             = 0x0A,
    kHomeWaterPump       = 0x0B,
    kIrrigationWaterPump = 0x0C,
    kPoolPump            = 0x0D,
    kOther               = 0xFF,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 14,
};

// Enum for ForecastUpdateReasonEnum
enum class ForecastUpdateReasonEnum : uint8_t
{
    kInternalOptimization = 0x00,
    kLocalOptimization    = 0x01,
    kGridOptimization     = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for OptOutStateEnum
enum class OptOutStateEnum : uint8_t
{
    kNoOptOut    = 0x00,
    kLocalOptOut = 0x01,
    kGridOptOut  = 0x02,
    kOptOut      = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kPowerAdjustment           = 0x1,
    kPowerForecastReporting    = 0x2,
    kStateForecastReporting    = 0x4,
    kStartTimeAdjustment       = 0x8,
    kPausable                  = 0x10,
    kForecastAdjustment        = 0x20,
    kConstraintBasedAdjustment = 0x40,
};
} // namespace DeviceEnergyManagement

namespace EnergyEvse {

// Enum for EnergyTransferStoppedReasonEnum
enum class EnergyTransferStoppedReasonEnum : uint8_t
{
    kEVStopped   = 0x00,
    kEVSEStopped = 0x01,
    kOther       = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for FaultStateEnum
enum class FaultStateEnum : uint8_t
{
    kNoError           = 0x00,
    kMeterFailure      = 0x01,
    kOverVoltage       = 0x02,
    kUnderVoltage      = 0x03,
    kOverCurrent       = 0x04,
    kContactWetFailure = 0x05,
    kContactDryFailure = 0x06,
    kGroundFault       = 0x07,
    kPowerLoss         = 0x08,
    kPowerQuality      = 0x09,
    kPilotShortCircuit = 0x0A,
    kEmergencyStop     = 0x0B,
    kEVDisconnected    = 0x0C,
    kWrongPowerSupply  = 0x0D,
    kLiveNeutralSwap   = 0x0E,
    kOverTemperature   = 0x0F,
    kOther             = 0xFF,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 16,
};

// Enum for StateEnum
enum class StateEnum : uint8_t
{
    kNotPluggedIn         = 0x00,
    kPluggedInNoDemand    = 0x01,
    kPluggedInDemand      = 0x02,
    kPluggedInCharging    = 0x03,
    kPluggedInDischarging = 0x04,
    kSessionEnding        = 0x05,
    kFault                = 0x06,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};

// Enum for SupplyStateEnum
enum class SupplyStateEnum : uint8_t
{
    kDisabled            = 0x00,
    kChargingEnabled     = 0x01,
    kDischargingEnabled  = 0x02,
    kDisabledError       = 0x03,
    kDisabledDiagnostics = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kChargingPreferences = 0x1,
    kSoCReporting        = 0x2,
    kPlugAndCharge       = 0x4,
    kRfid                = 0x8,
    kV2x                 = 0x10,
};

// Bitmap for TargetDayOfWeekBitmap
enum class TargetDayOfWeekBitmap : uint8_t
{
    kSunday    = 0x1,
    kMonday    = 0x2,
    kTuesday   = 0x4,
    kWednesday = 0x8,
    kThursday  = 0x10,
    kFriday    = 0x20,
    kSaturday  = 0x40,
};
} // namespace EnergyEvse

namespace EnergyPreference {

// Enum for EnergyPriorityEnum
enum class EnergyPriorityEnum : uint8_t
{
    kComfort          = 0x00,
    kSpeed            = 0x01,
    kEfficiency       = 0x02,
    kWaterConsumption = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kEnergyBalance           = 0x1,
    kLowPowerModeSensitivity = 0x2,
};
} // namespace EnergyPreference

namespace PowerTopology {

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNodeTopology     = 0x1,
    kTreeTopology     = 0x2,
    kSetTopology      = 0x4,
    kDynamicPowerFlow = 0x8,
};
} // namespace PowerTopology

namespace EnergyEvseMode {

// Enum for ModeTag
enum class ModeTag : uint16_t
{
    kManual        = 0x4000,
    kTimeOfUse     = 0x4001,
    kSolarCharging = 0x4002,
    // kUnknownEnumValue intentionally not defined. This enum never goes
    // through DataModel::Decode, likely because it is a part of a derived
    // cluster. As a result having kUnknownEnumValue in this enum is error
    // prone, and was removed. See
    // src/app/common/templates/config-data.yaml.
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kOnOff = 0x1,
};
} // namespace EnergyEvseMode

namespace DeviceEnergyManagementMode {

// Enum for ModeTag
enum class ModeTag : uint16_t
{
    kNoOptimization     = 0x4000,
    kDeviceOptimization = 0x4001,
    kLocalOptimization  = 0x4002,
    kGridOptimization   = 0x4003,
    // kUnknownEnumValue intentionally not defined. This enum never goes
    // through DataModel::Decode, likely because it is a part of a derived
    // cluster. As a result having kUnknownEnumValue in this enum is error
    // prone, and was removed. See
    // src/app/common/templates/config-data.yaml.
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kOnOff = 0x1,
};
} // namespace DeviceEnergyManagementMode

namespace DoorLock {

// Enum for AlarmCodeEnum
enum class AlarmCodeEnum : uint8_t
{
    kLockJammed              = 0x00,
    kLockFactoryReset        = 0x01,
    kLockRadioPowerCycled    = 0x03,
    kWrongCodeEntryLimit     = 0x04,
    kFrontEsceutcheonRemoved = 0x05,
    kDoorForcedOpen          = 0x06,
    kDoorAjar                = 0x07,
    kForcedUser              = 0x08,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for CredentialRuleEnum
enum class CredentialRuleEnum : uint8_t
{
    kSingle = 0x00,
    kDual   = 0x01,
    kTri    = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for CredentialTypeEnum
enum class CredentialTypeEnum : uint8_t
{
    kProgrammingPIN               = 0x00,
    kPin                          = 0x01,
    kRfid                         = 0x02,
    kFingerprint                  = 0x03,
    kFingerVein                   = 0x04,
    kFace                         = 0x05,
    kAliroCredentialIssuerKey     = 0x06,
    kAliroEvictableEndpointKey    = 0x07,
    kAliroNonEvictableEndpointKey = 0x08,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 9,
};

// Enum for DataOperationTypeEnum
enum class DataOperationTypeEnum : uint8_t
{
    kAdd    = 0x00,
    kClear  = 0x01,
    kModify = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for DlLockState
enum class DlLockState : uint8_t
{
    kNotFullyLocked = 0x00,
    kLocked         = 0x01,
    kUnlocked       = 0x02,
    kUnlatched      = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for DlLockType
enum class DlLockType : uint8_t
{
    kDeadBolt           = 0x00,
    kMagnetic           = 0x01,
    kOther              = 0x02,
    kMortise            = 0x03,
    kRim                = 0x04,
    kLatchBolt          = 0x05,
    kCylindricalLock    = 0x06,
    kTubularLock        = 0x07,
    kInterconnectedLock = 0x08,
    kDeadLatch          = 0x09,
    kDoorFurniture      = 0x0A,
    kEurocylinder       = 0x0B,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 12,
};

// Enum for DlStatus
enum class DlStatus : uint8_t
{
    kSuccess           = 0x00,
    kFailure           = 0x01,
    kDuplicate         = 0x02,
    kOccupied          = 0x03,
    kInvalidField      = 0x85,
    kResourceExhausted = 0x89,
    kNotFound          = 0x8B,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for DoorLockOperationEventCode
enum class DoorLockOperationEventCode : uint8_t
{
    kUnknownOrMfgSpecific  = 0x00,
    kLock                  = 0x01,
    kUnlock                = 0x02,
    kLockInvalidPinOrId    = 0x03,
    kLockInvalidSchedule   = 0x04,
    kUnlockInvalidPinOrId  = 0x05,
    kUnlockInvalidSchedule = 0x06,
    kOneTouchLock          = 0x07,
    kKeyLock               = 0x08,
    kKeyUnlock             = 0x09,
    kAutoLock              = 0x0A,
    kScheduleLock          = 0x0B,
    kScheduleUnlock        = 0x0C,
    kManualLock            = 0x0D,
    kManualUnlock          = 0x0E,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 15,
};

// Enum for DoorLockProgrammingEventCode
enum class DoorLockProgrammingEventCode : uint8_t
{
    kUnknownOrMfgSpecific = 0x00,
    kMasterCodeChanged    = 0x01,
    kPinAdded             = 0x02,
    kPinDeleted           = 0x03,
    kPinChanged           = 0x04,
    kIdAdded              = 0x05,
    kIdDeleted            = 0x06,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};

// Enum for DoorLockSetPinOrIdStatus
enum class DoorLockSetPinOrIdStatus : uint8_t
{
    kSuccess            = 0x00,
    kGeneralFailure     = 0x01,
    kMemoryFull         = 0x02,
    kDuplicateCodeError = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for DoorLockUserStatus
enum class DoorLockUserStatus : uint8_t
{
    kAvailable        = 0x00,
    kOccupiedEnabled  = 0x01,
    kOccupiedDisabled = 0x03,
    kNotSupported     = 0xFF,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for DoorLockUserType
enum class DoorLockUserType : uint8_t
{
    kUnrestricted        = 0x00,
    kYearDayScheduleUser = 0x01,
    kWeekDayScheduleUser = 0x02,
    kMasterUser          = 0x03,
    kNonAccessUser       = 0x04,
    kNotSupported        = 0xFF,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for DoorStateEnum
enum class DoorStateEnum : uint8_t
{
    kDoorOpen             = 0x00,
    kDoorClosed           = 0x01,
    kDoorJammed           = 0x02,
    kDoorForcedOpen       = 0x03,
    kDoorUnspecifiedError = 0x04,
    kDoorAjar             = 0x05,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 6,
};

// Enum for LockDataTypeEnum
enum class LockDataTypeEnum : uint8_t
{
    kUnspecified                  = 0x00,
    kProgrammingCode              = 0x01,
    kUserIndex                    = 0x02,
    kWeekDaySchedule              = 0x03,
    kYearDaySchedule              = 0x04,
    kHolidaySchedule              = 0x05,
    kPin                          = 0x06,
    kRfid                         = 0x07,
    kFingerprint                  = 0x08,
    kFingerVein                   = 0x09,
    kFace                         = 0x0A,
    kAliroCredentialIssuerKey     = 0x0B,
    kAliroEvictableEndpointKey    = 0x0C,
    kAliroNonEvictableEndpointKey = 0x0D,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 14,
};

// Enum for LockOperationTypeEnum
enum class LockOperationTypeEnum : uint8_t
{
    kLock               = 0x00,
    kUnlock             = 0x01,
    kNonAccessUserEvent = 0x02,
    kForcedUserEvent    = 0x03,
    kUnlatch            = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for OperatingModeEnum
enum class OperatingModeEnum : uint8_t
{
    kNormal             = 0x00,
    kVacation           = 0x01,
    kPrivacy            = 0x02,
    kNoRemoteLockUnlock = 0x03,
    kPassage            = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for OperationErrorEnum
enum class OperationErrorEnum : uint8_t
{
    kUnspecified         = 0x00,
    kInvalidCredential   = 0x01,
    kDisabledUserDenied  = 0x02,
    kRestricted          = 0x03,
    kInsufficientBattery = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for OperationSourceEnum
enum class OperationSourceEnum : uint8_t
{
    kUnspecified       = 0x00,
    kManual            = 0x01,
    kProprietaryRemote = 0x02,
    kKeypad            = 0x03,
    kAuto              = 0x04,
    kButton            = 0x05,
    kSchedule          = 0x06,
    kRemote            = 0x07,
    kRfid              = 0x08,
    kBiometric         = 0x09,
    kAliro             = 0x0A,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 11,
};

// Enum for UserStatusEnum
enum class UserStatusEnum : uint8_t
{
    kAvailable        = 0x00,
    kOccupiedEnabled  = 0x01,
    kOccupiedDisabled = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for UserTypeEnum
enum class UserTypeEnum : uint8_t
{
    kUnrestrictedUser       = 0x00,
    kYearDayScheduleUser    = 0x01,
    kWeekDayScheduleUser    = 0x02,
    kProgrammingUser        = 0x03,
    kNonAccessUser          = 0x04,
    kForcedUser             = 0x05,
    kDisposableUser         = 0x06,
    kExpiringUser           = 0x07,
    kScheduleRestrictedUser = 0x08,
    kRemoteOnlyUser         = 0x09,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 10,
};

// Bitmap for DaysMaskMap
enum class DaysMaskMap : uint8_t
{
    kSunday    = 0x1,
    kMonday    = 0x2,
    kTuesday   = 0x4,
    kWednesday = 0x8,
    kThursday  = 0x10,
    kFriday    = 0x20,
    kSaturday  = 0x40,
};

// Bitmap for DlCredentialRuleMask
enum class DlCredentialRuleMask : uint8_t
{
    kSingle = 0x1,
    kDual   = 0x2,
    kTri    = 0x4,
};

// Bitmap for DlCredentialRulesSupport
enum class DlCredentialRulesSupport : uint8_t
{
    kSingle = 0x1,
    kDual   = 0x2,
    kTri    = 0x4,
};

// Bitmap for DlDefaultConfigurationRegister
enum class DlDefaultConfigurationRegister : uint16_t
{
    kEnableLocalProgrammingEnabled         = 0x1,
    kKeypadInterfaceDefaultAccessEnabled   = 0x2,
    kRemoteInterfaceDefaultAccessIsEnabled = 0x4,
    kSoundEnabled                          = 0x20,
    kAutoRelockTimeSet                     = 0x40,
    kLEDSettingsSet                        = 0x80,
};

// Bitmap for DlKeypadOperationEventMask
enum class DlKeypadOperationEventMask : uint16_t
{
    kUnknown               = 0x1,
    kLock                  = 0x2,
    kUnlock                = 0x4,
    kLockInvalidPIN        = 0x8,
    kLockInvalidSchedule   = 0x10,
    kUnlockInvalidCode     = 0x20,
    kUnlockInvalidSchedule = 0x40,
    kNonAccessUserOpEvent  = 0x80,
};

// Bitmap for DlKeypadProgrammingEventMask
enum class DlKeypadProgrammingEventMask : uint16_t
{
    kUnknown               = 0x1,
    kProgrammingPINChanged = 0x2,
    kPINAdded              = 0x4,
    kPINCleared            = 0x8,
    kPINChanged            = 0x10,
};

// Bitmap for DlLocalProgrammingFeatures
enum class DlLocalProgrammingFeatures : uint8_t
{
    kAddUsersCredentialsSchedulesLocally    = 0x1,
    kModifyUsersCredentialsSchedulesLocally = 0x2,
    kClearUsersCredentialsSchedulesLocally  = 0x4,
    kAdjustLockSettingsLocally              = 0x8,
};

// Bitmap for DlManualOperationEventMask
enum class DlManualOperationEventMask : uint16_t
{
    kUnknown         = 0x1,
    kThumbturnLock   = 0x2,
    kThumbturnUnlock = 0x4,
    kOneTouchLock    = 0x8,
    kKeyLock         = 0x10,
    kKeyUnlock       = 0x20,
    kAutoLock        = 0x40,
    kScheduleLock    = 0x80,
    kScheduleUnlock  = 0x100,
    kManualLock      = 0x200,
    kManualUnlock    = 0x400,
};

// Bitmap for DlRFIDOperationEventMask
enum class DlRFIDOperationEventMask : uint16_t
{
    kUnknown               = 0x1,
    kLock                  = 0x2,
    kUnlock                = 0x4,
    kLockInvalidRFID       = 0x8,
    kLockInvalidSchedule   = 0x10,
    kUnlockInvalidRFID     = 0x20,
    kUnlockInvalidSchedule = 0x40,
};

// Bitmap for DlRFIDProgrammingEventMask
enum class DlRFIDProgrammingEventMask : uint16_t
{
    kUnknown         = 0x1,
    kRFIDCodeAdded   = 0x20,
    kRFIDCodeCleared = 0x40,
};

// Bitmap for DlRemoteOperationEventMask
enum class DlRemoteOperationEventMask : uint16_t
{
    kUnknown               = 0x1,
    kLock                  = 0x2,
    kUnlock                = 0x4,
    kLockInvalidCode       = 0x8,
    kLockInvalidSchedule   = 0x10,
    kUnlockInvalidCode     = 0x20,
    kUnlockInvalidSchedule = 0x40,
};

// Bitmap for DlRemoteProgrammingEventMask
enum class DlRemoteProgrammingEventMask : uint16_t
{
    kUnknown               = 0x1,
    kProgrammingPINChanged = 0x2,
    kPINAdded              = 0x4,
    kPINCleared            = 0x8,
    kPINChanged            = 0x10,
    kRFIDCodeAdded         = 0x20,
    kRFIDCodeCleared       = 0x40,
};

// Bitmap for DlSupportedOperatingModes
enum class DlSupportedOperatingModes : uint16_t
{
    kNormal             = 0x1,
    kVacation           = 0x2,
    kPrivacy            = 0x4,
    kNoRemoteLockUnlock = 0x8,
    kPassage            = 0x10,
};

// Bitmap for DoorLockDayOfWeek
enum class DoorLockDayOfWeek : uint8_t
{
    kSunday    = 0x1,
    kMonday    = 0x2,
    kTuesday   = 0x4,
    kWednesday = 0x8,
    kThursday  = 0x10,
    kFriday    = 0x20,
    kSaturday  = 0x40,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kPinCredential               = 0x1,
    kRfidCredential              = 0x2,
    kFingerCredentials           = 0x4,
    kLogging                     = 0x8,
    kWeekDayAccessSchedules      = 0x10,
    kDoorPositionSensor          = 0x20,
    kFaceCredentials             = 0x40,
    kCredentialsOverTheAirAccess = 0x80,
    kUser                        = 0x100,
    kNotification                = 0x200,
    kYearDayAccessSchedules      = 0x400,
    kHolidaySchedules            = 0x800,
    kUnbolt                      = 0x1000,
    kAliroProvisioning           = 0x2000,
    kAliroBLEUWB                 = 0x4000,
};
} // namespace DoorLock

namespace WindowCovering {

// Enum for EndProductType
enum class EndProductType : uint8_t
{
    kRollerShade               = 0x00,
    kRomanShade                = 0x01,
    kBalloonShade              = 0x02,
    kWovenWood                 = 0x03,
    kPleatedShade              = 0x04,
    kCellularShade             = 0x05,
    kLayeredShade              = 0x06,
    kLayeredShade2D            = 0x07,
    kSheerShade                = 0x08,
    kTiltOnlyInteriorBlind     = 0x09,
    kInteriorBlind             = 0x0A,
    kVerticalBlindStripCurtain = 0x0B,
    kInteriorVenetianBlind     = 0x0C,
    kExteriorVenetianBlind     = 0x0D,
    kLateralLeftCurtain        = 0x0E,
    kLateralRightCurtain       = 0x0F,
    kCentralCurtain            = 0x10,
    kRollerShutter             = 0x11,
    kExteriorVerticalScreen    = 0x12,
    kAwningTerracePatio        = 0x13,
    kAwningVerticalScreen      = 0x14,
    kTiltOnlyPergola           = 0x15,
    kSwingingShutter           = 0x16,
    kSlidingShutter            = 0x17,
    kUnknown                   = 0xFF,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 24,
};

// Enum for Type
enum class Type : uint8_t
{
    kRollerShade               = 0x00,
    kRollerShade2Motor         = 0x01,
    kRollerShadeExterior       = 0x02,
    kRollerShadeExterior2Motor = 0x03,
    kDrapery                   = 0x04,
    kAwning                    = 0x05,
    kShutter                   = 0x06,
    kTiltBlindTiltOnly         = 0x07,
    kTiltBlindLiftAndTilt      = 0x08,
    kProjectorScreen           = 0x09,
    kUnknown                   = 0xFF,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 10,
};

// Bitmap for ConfigStatus
enum class ConfigStatus : uint8_t
{
    kOperational           = 0x1,
    kOnlineReserved        = 0x2,
    kLiftMovementReversed  = 0x4,
    kLiftPositionAware     = 0x8,
    kTiltPositionAware     = 0x10,
    kLiftEncoderControlled = 0x20,
    kTiltEncoderControlled = 0x40,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kLift              = 0x1,
    kTilt              = 0x2,
    kPositionAwareLift = 0x4,
    kAbsolutePosition  = 0x8,
    kPositionAwareTilt = 0x10,
};

// Bitmap for Mode
enum class Mode : uint8_t
{
    kMotorDirectionReversed = 0x1,
    kCalibrationMode        = 0x2,
    kMaintenanceMode        = 0x4,
    kLedFeedback            = 0x8,
};

// Bitmap for OperationalStatus
enum class OperationalStatus : uint8_t
{
    kGlobal = 0x3,
    kLift   = 0xC,
    kTilt   = 0x30,
};

// Bitmap for SafetyStatus
enum class SafetyStatus : uint16_t
{
    kRemoteLockout       = 0x1,
    kTamperDetection     = 0x2,
    kFailedCommunication = 0x4,
    kPositionFailure     = 0x8,
    kThermalProtection   = 0x10,
    kObstacleDetected    = 0x20,
    kPower               = 0x40,
    kStopInput           = 0x80,
    kMotorJammed         = 0x100,
    kHardwareFailure     = 0x200,
    kManualOperation     = 0x400,
    kProtection          = 0x800,
};
} // namespace WindowCovering

namespace BarrierControl {

// Bitmap for BarrierControlCapabilities
enum class BarrierControlCapabilities : uint8_t
{
    kPartialBarrier = 0x1,
};

// Bitmap for BarrierControlSafetyStatus
enum class BarrierControlSafetyStatus : uint16_t
{
    kRemoteLockout       = 0x1,
    kTemperDetected      = 0x2,
    kFailedCommunication = 0x4,
    kPositionFailure     = 0x8,
};
} // namespace BarrierControl

namespace PumpConfigurationAndControl {

// Enum for ControlModeEnum
enum class ControlModeEnum : uint8_t
{
    kConstantSpeed        = 0x00,
    kConstantPressure     = 0x01,
    kProportionalPressure = 0x02,
    kConstantFlow         = 0x03,
    kConstantTemperature  = 0x05,
    kAutomatic            = 0x07,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for OperationModeEnum
enum class OperationModeEnum : uint8_t
{
    kNormal  = 0x00,
    kMinimum = 0x01,
    kMaximum = 0x02,
    kLocal   = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kConstantPressure    = 0x1,
    kCompensatedPressure = 0x2,
    kConstantFlow        = 0x4,
    kConstantSpeed       = 0x8,
    kConstantTemperature = 0x10,
    kAutomatic           = 0x20,
    kLocalOperation      = 0x40,
};

// Bitmap for PumpStatusBitmap
enum class PumpStatusBitmap : uint16_t
{
    kDeviceFault       = 0x1,
    kSupplyFault       = 0x2,
    kSpeedLow          = 0x4,
    kSpeedHigh         = 0x8,
    kLocalOverride     = 0x10,
    kRunning           = 0x20,
    kRemotePressure    = 0x40,
    kRemoteFlow        = 0x80,
    kRemoteTemperature = 0x100,
};
} // namespace PumpConfigurationAndControl

namespace Thermostat {

// Enum for ACCapacityFormatEnum
enum class ACCapacityFormatEnum : uint8_t
{
    kBTUh = 0x00,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 1,
};

// Enum for ACCompressorTypeEnum
enum class ACCompressorTypeEnum : uint8_t
{
    kUnknown = 0x00,
    kT1      = 0x01,
    kT2      = 0x02,
    kT3      = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for ACLouverPositionEnum
enum class ACLouverPositionEnum : uint8_t
{
    kClosed        = 0x01,
    kOpen          = 0x02,
    kQuarter       = 0x03,
    kHalf          = 0x04,
    kThreeQuarters = 0x05,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 0,
};

// Enum for ACRefrigerantTypeEnum
enum class ACRefrigerantTypeEnum : uint8_t
{
    kUnknown = 0x00,
    kR22     = 0x01,
    kR410a   = 0x02,
    kR407c   = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for ACTypeEnum
enum class ACTypeEnum : uint8_t
{
    kUnknown          = 0x00,
    kCoolingFixed     = 0x01,
    kHeatPumpFixed    = 0x02,
    kCoolingInverter  = 0x03,
    kHeatPumpInverter = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for ControlSequenceOfOperationEnum
enum class ControlSequenceOfOperationEnum : uint8_t
{
    kCoolingOnly                 = 0x00,
    kCoolingWithReheat           = 0x01,
    kHeatingOnly                 = 0x02,
    kHeatingWithReheat           = 0x03,
    kCoolingAndHeating           = 0x04,
    kCoolingAndHeatingWithReheat = 0x05,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 6,
};

// Enum for PresetScenarioEnum
enum class PresetScenarioEnum : uint8_t
{
    kUnspecified = 0x00,
    kOccupied    = 0x01,
    kUnoccupied  = 0x02,
    kSleep       = 0x03,
    kWake        = 0x04,
    kVacation    = 0x05,
    kUserDefined = 0x06,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};

// Enum for SetpointChangeSourceEnum
enum class SetpointChangeSourceEnum : uint8_t
{
    kManual   = 0x00,
    kSchedule = 0x01,
    kExternal = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for SetpointRaiseLowerModeEnum
enum class SetpointRaiseLowerModeEnum : uint8_t
{
    kHeat = 0x00,
    kCool = 0x01,
    kBoth = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for StartOfWeekEnum
enum class StartOfWeekEnum : uint8_t
{
    kSunday    = 0x00,
    kMonday    = 0x01,
    kTuesday   = 0x02,
    kWednesday = 0x03,
    kThursday  = 0x04,
    kFriday    = 0x05,
    kSaturday  = 0x06,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};

// Enum for SystemModeEnum
enum class SystemModeEnum : uint8_t
{
    kOff           = 0x00,
    kAuto          = 0x01,
    kCool          = 0x03,
    kHeat          = 0x04,
    kEmergencyHeat = 0x05,
    kPrecooling    = 0x06,
    kFanOnly       = 0x07,
    kDry           = 0x08,
    kSleep         = 0x09,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for TemperatureSetpointHoldEnum
enum class TemperatureSetpointHoldEnum : uint8_t
{
    kSetpointHoldOff = 0x00,
    kSetpointHoldOn  = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for ThermostatRunningModeEnum
enum class ThermostatRunningModeEnum : uint8_t
{
    kOff  = 0x00,
    kCool = 0x03,
    kHeat = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 1,
};

// Bitmap for ACErrorCodeBitmap
enum class ACErrorCodeBitmap : uint32_t
{
    kCompressorFail    = 0x1,
    kRoomSensorFail    = 0x2,
    kOutdoorSensorFail = 0x4,
    kCoilSensorFail    = 0x8,
    kFanFail           = 0x10,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kHeating                     = 0x1,
    kCooling                     = 0x2,
    kOccupancy                   = 0x4,
    kScheduleConfiguration       = 0x8,
    kSetback                     = 0x10,
    kAutoMode                    = 0x20,
    kLocalTemperatureNotExposed  = 0x40,
    kMatterScheduleConfiguration = 0x80,
    kPresets                     = 0x100,
    kSetpoints                   = 0x200,
    kQueuedPresetsSupported      = 0x400,
};

// Bitmap for HVACSystemTypeBitmap
enum class HVACSystemTypeBitmap : uint8_t
{
    kCoolingStage      = 0x3,
    kHeatingStage      = 0xC,
    kHeatingIsHeatPump = 0x10,
    kHeatingUsesFuel   = 0x20,
};

// Bitmap for PresetTypeFeaturesBitmap
enum class PresetTypeFeaturesBitmap : uint16_t
{
    kAutomatic     = 0x1,
    kSupportsNames = 0x2,
};

// Bitmap for ProgrammingOperationModeBitmap
enum class ProgrammingOperationModeBitmap : uint8_t
{
    kScheduleActive = 0x1,
    kAutoRecovery   = 0x2,
    kEconomy        = 0x4,
};

// Bitmap for RelayStateBitmap
enum class RelayStateBitmap : uint16_t
{
    kHeat       = 0x1,
    kCool       = 0x2,
    kFan        = 0x4,
    kHeatStage2 = 0x8,
    kCoolStage2 = 0x10,
    kFanStage2  = 0x20,
    kFanStage3  = 0x40,
};

// Bitmap for RemoteSensingBitmap
enum class RemoteSensingBitmap : uint8_t
{
    kLocalTemperature   = 0x1,
    kOutdoorTemperature = 0x2,
    kOccupancy          = 0x4,
};

// Bitmap for ScheduleDayOfWeekBitmap
enum class ScheduleDayOfWeekBitmap : uint8_t
{
    kSunday    = 0x1,
    kMonday    = 0x2,
    kTuesday   = 0x4,
    kWednesday = 0x8,
    kThursday  = 0x10,
    kFriday    = 0x20,
    kSaturday  = 0x40,
    kAway      = 0x80,
};

// Bitmap for ScheduleModeBitmap
enum class ScheduleModeBitmap : uint8_t
{
    kHeatSetpointPresent = 0x1,
    kCoolSetpointPresent = 0x2,
};

// Bitmap for ScheduleTypeFeaturesBitmap
enum class ScheduleTypeFeaturesBitmap : uint16_t
{
    kSupportsPresets   = 0x1,
    kSupportsSetpoints = 0x2,
    kSupportsNames     = 0x4,
    kSupportsOff       = 0x8,
};

// Bitmap for TemperatureSetpointHoldPolicyBitmap
enum class TemperatureSetpointHoldPolicyBitmap : uint8_t
{
    kHoldDurationElapsed                = 0x1,
    kHoldDurationElapsedOrPresetChanged = 0x2,
};
} // namespace Thermostat

namespace FanControl {

// Enum for AirflowDirectionEnum
enum class AirflowDirectionEnum : uint8_t
{
    kForward = 0x00,
    kReverse = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for FanModeEnum
enum class FanModeEnum : uint8_t
{
    kOff    = 0x00,
    kLow    = 0x01,
    kMedium = 0x02,
    kHigh   = 0x03,
    kOn     = 0x04,
    kAuto   = 0x05,
    kSmart  = 0x06,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};

// Enum for FanModeSequenceEnum
enum class FanModeSequenceEnum : uint8_t
{
    kOffLowMedHigh     = 0x00,
    kOffLowHigh        = 0x01,
    kOffLowMedHighAuto = 0x02,
    kOffLowHighAuto    = 0x03,
    kOffHighAuto       = 0x04,
    kOffHigh           = 0x05,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 6,
};

// Enum for StepDirectionEnum
enum class StepDirectionEnum : uint8_t
{
    kIncrease = 0x00,
    kDecrease = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kMultiSpeed       = 0x1,
    kAuto             = 0x2,
    kRocking          = 0x4,
    kWind             = 0x8,
    kStep             = 0x10,
    kAirflowDirection = 0x20,
};

// Bitmap for RockBitmap
enum class RockBitmap : uint8_t
{
    kRockLeftRight = 0x1,
    kRockUpDown    = 0x2,
    kRockRound     = 0x4,
};

// Bitmap for WindBitmap
enum class WindBitmap : uint8_t
{
    kSleepWind   = 0x1,
    kNaturalWind = 0x2,
};
} // namespace FanControl

namespace ThermostatUserInterfaceConfiguration {

// Enum for KeypadLockoutEnum
enum class KeypadLockoutEnum : uint8_t
{
    kNoLockout = 0x00,
    kLockout1  = 0x01,
    kLockout2  = 0x02,
    kLockout3  = 0x03,
    kLockout4  = 0x04,
    kLockout5  = 0x05,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 6,
};

// Enum for ScheduleProgrammingVisibilityEnum
enum class ScheduleProgrammingVisibilityEnum : uint8_t
{
    kScheduleProgrammingPermitted = 0x00,
    kScheduleProgrammingDenied    = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for TemperatureDisplayModeEnum
enum class TemperatureDisplayModeEnum : uint8_t
{
    kCelsius    = 0x00,
    kFahrenheit = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};
} // namespace ThermostatUserInterfaceConfiguration

namespace ColorControl {

// Enum for ColorLoopAction
enum class ColorLoopAction : uint8_t
{
    kDeactivate                            = 0x00,
    kActivateFromColorLoopStartEnhancedHue = 0x01,
    kActivateFromEnhancedCurrentHue        = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for ColorLoopDirection
enum class ColorLoopDirection : uint8_t
{
    kDecrementHue = 0x00,
    kIncrementHue = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for ColorMode
enum class ColorMode : uint8_t
{
    kCurrentHueAndCurrentSaturation = 0x00,
    kCurrentXAndCurrentY            = 0x01,
    kColorTemperature               = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for HueDirection
enum class HueDirection : uint8_t
{
    kShortestDistance = 0x00,
    kLongestDistance  = 0x01,
    kUp               = 0x02,
    kDown             = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for HueMoveMode
enum class HueMoveMode : uint8_t
{
    kStop = 0x00,
    kUp   = 0x01,
    kDown = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for HueStepMode
enum class HueStepMode : uint8_t
{
    kUp   = 0x01,
    kDown = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 0,
};

// Enum for SaturationMoveMode
enum class SaturationMoveMode : uint8_t
{
    kStop = 0x00,
    kUp   = 0x01,
    kDown = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for SaturationStepMode
enum class SaturationStepMode : uint8_t
{
    kUp   = 0x01,
    kDown = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 0,
};

// Bitmap for ColorCapabilities
enum class ColorCapabilities : uint16_t
{
    kHueSaturationSupported    = 0x1,
    kEnhancedHueSupported      = 0x2,
    kColorLoopSupported        = 0x4,
    kXYAttributesSupported     = 0x8,
    kColorTemperatureSupported = 0x10,
};

// Bitmap for ColorLoopUpdateFlags
enum class ColorLoopUpdateFlags : uint8_t
{
    kUpdateAction    = 0x1,
    kUpdateDirection = 0x2,
    kUpdateTime      = 0x4,
    kUpdateStartHue  = 0x8,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kHueAndSaturation = 0x1,
    kEnhancedHue      = 0x2,
    kColorLoop        = 0x4,
    kXy               = 0x8,
    kColorTemperature = 0x10,
};
} // namespace ColorControl

namespace BallastConfiguration {

// Bitmap for BallastStatusBitmap
enum class BallastStatusBitmap : uint8_t
{
    kBallastNonOperational = 0x1,
    kLampFailure           = 0x2,
};

// Bitmap for LampAlarmModeBitmap
enum class LampAlarmModeBitmap : uint8_t
{
    kLampBurnHours = 0x1,
};
} // namespace BallastConfiguration

namespace IlluminanceMeasurement {

// Enum for LightSensorTypeEnum
enum class LightSensorTypeEnum : uint8_t
{
    kPhotodiode = 0x00,
    kCmos       = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};
} // namespace IlluminanceMeasurement

namespace TemperatureMeasurement {} // namespace TemperatureMeasurement

namespace PressureMeasurement {

// Bitmap for Feature
enum class Feature : uint32_t
{
    kExtended = 0x1,
};
} // namespace PressureMeasurement

namespace FlowMeasurement {} // namespace FlowMeasurement

namespace RelativeHumidityMeasurement {} // namespace RelativeHumidityMeasurement

namespace OccupancySensing {

// Enum for OccupancySensorTypeEnum
enum class OccupancySensorTypeEnum : uint8_t
{
    kPir              = 0x00,
    kUltrasonic       = 0x01,
    kPIRAndUltrasonic = 0x02,
    kPhysicalContact  = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Bitmap for OccupancyBitmap
enum class OccupancyBitmap : uint8_t
{
    kOccupied = 0x1,
};

// Bitmap for OccupancySensorTypeBitmap
enum class OccupancySensorTypeBitmap : uint8_t
{
    kPir             = 0x1,
    kUltrasonic      = 0x2,
    kPhysicalContact = 0x4,
};
} // namespace OccupancySensing

namespace CarbonMonoxideConcentrationMeasurement {

using LevelValueEnum = Clusters::detail::LevelValueEnum;

using MeasurementMediumEnum = Clusters::detail::MeasurementMediumEnum;

using MeasurementUnitEnum = Clusters::detail::MeasurementUnitEnum;

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNumericMeasurement = 0x1,
    kLevelIndication    = 0x2,
    kMediumLevel        = 0x4,
    kCriticalLevel      = 0x8,
    kPeakMeasurement    = 0x10,
    kAverageMeasurement = 0x20,
};
} // namespace CarbonMonoxideConcentrationMeasurement

namespace CarbonDioxideConcentrationMeasurement {

using LevelValueEnum = Clusters::detail::LevelValueEnum;

using MeasurementMediumEnum = Clusters::detail::MeasurementMediumEnum;

using MeasurementUnitEnum = Clusters::detail::MeasurementUnitEnum;

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNumericMeasurement = 0x1,
    kLevelIndication    = 0x2,
    kMediumLevel        = 0x4,
    kCriticalLevel      = 0x8,
    kPeakMeasurement    = 0x10,
    kAverageMeasurement = 0x20,
};
} // namespace CarbonDioxideConcentrationMeasurement

namespace NitrogenDioxideConcentrationMeasurement {

using LevelValueEnum = Clusters::detail::LevelValueEnum;

using MeasurementMediumEnum = Clusters::detail::MeasurementMediumEnum;

using MeasurementUnitEnum = Clusters::detail::MeasurementUnitEnum;

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNumericMeasurement = 0x1,
    kLevelIndication    = 0x2,
    kMediumLevel        = 0x4,
    kCriticalLevel      = 0x8,
    kPeakMeasurement    = 0x10,
    kAverageMeasurement = 0x20,
};
} // namespace NitrogenDioxideConcentrationMeasurement

namespace OzoneConcentrationMeasurement {

using LevelValueEnum = Clusters::detail::LevelValueEnum;

using MeasurementMediumEnum = Clusters::detail::MeasurementMediumEnum;

using MeasurementUnitEnum = Clusters::detail::MeasurementUnitEnum;

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNumericMeasurement = 0x1,
    kLevelIndication    = 0x2,
    kMediumLevel        = 0x4,
    kCriticalLevel      = 0x8,
    kPeakMeasurement    = 0x10,
    kAverageMeasurement = 0x20,
};
} // namespace OzoneConcentrationMeasurement

namespace Pm25ConcentrationMeasurement {

using LevelValueEnum = Clusters::detail::LevelValueEnum;

using MeasurementMediumEnum = Clusters::detail::MeasurementMediumEnum;

using MeasurementUnitEnum = Clusters::detail::MeasurementUnitEnum;

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNumericMeasurement = 0x1,
    kLevelIndication    = 0x2,
    kMediumLevel        = 0x4,
    kCriticalLevel      = 0x8,
    kPeakMeasurement    = 0x10,
    kAverageMeasurement = 0x20,
};
} // namespace Pm25ConcentrationMeasurement

namespace FormaldehydeConcentrationMeasurement {

using LevelValueEnum = Clusters::detail::LevelValueEnum;

using MeasurementMediumEnum = Clusters::detail::MeasurementMediumEnum;

using MeasurementUnitEnum = Clusters::detail::MeasurementUnitEnum;

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNumericMeasurement = 0x1,
    kLevelIndication    = 0x2,
    kMediumLevel        = 0x4,
    kCriticalLevel      = 0x8,
    kPeakMeasurement    = 0x10,
    kAverageMeasurement = 0x20,
};
} // namespace FormaldehydeConcentrationMeasurement

namespace Pm1ConcentrationMeasurement {

using LevelValueEnum = Clusters::detail::LevelValueEnum;

using MeasurementMediumEnum = Clusters::detail::MeasurementMediumEnum;

using MeasurementUnitEnum = Clusters::detail::MeasurementUnitEnum;

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNumericMeasurement = 0x1,
    kLevelIndication    = 0x2,
    kMediumLevel        = 0x4,
    kCriticalLevel      = 0x8,
    kPeakMeasurement    = 0x10,
    kAverageMeasurement = 0x20,
};
} // namespace Pm1ConcentrationMeasurement

namespace Pm10ConcentrationMeasurement {

using LevelValueEnum = Clusters::detail::LevelValueEnum;

using MeasurementMediumEnum = Clusters::detail::MeasurementMediumEnum;

using MeasurementUnitEnum = Clusters::detail::MeasurementUnitEnum;

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNumericMeasurement = 0x1,
    kLevelIndication    = 0x2,
    kMediumLevel        = 0x4,
    kCriticalLevel      = 0x8,
    kPeakMeasurement    = 0x10,
    kAverageMeasurement = 0x20,
};
} // namespace Pm10ConcentrationMeasurement

namespace TotalVolatileOrganicCompoundsConcentrationMeasurement {

using LevelValueEnum = Clusters::detail::LevelValueEnum;

using MeasurementMediumEnum = Clusters::detail::MeasurementMediumEnum;

using MeasurementUnitEnum = Clusters::detail::MeasurementUnitEnum;

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNumericMeasurement = 0x1,
    kLevelIndication    = 0x2,
    kMediumLevel        = 0x4,
    kCriticalLevel      = 0x8,
    kPeakMeasurement    = 0x10,
    kAverageMeasurement = 0x20,
};
} // namespace TotalVolatileOrganicCompoundsConcentrationMeasurement

namespace RadonConcentrationMeasurement {

using LevelValueEnum = Clusters::detail::LevelValueEnum;

using MeasurementMediumEnum = Clusters::detail::MeasurementMediumEnum;

using MeasurementUnitEnum = Clusters::detail::MeasurementUnitEnum;

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNumericMeasurement = 0x1,
    kLevelIndication    = 0x2,
    kMediumLevel        = 0x4,
    kCriticalLevel      = 0x8,
    kPeakMeasurement    = 0x10,
    kAverageMeasurement = 0x20,
};
} // namespace RadonConcentrationMeasurement

namespace WakeOnLan {} // namespace WakeOnLan

namespace Channel {

// Enum for ChannelTypeEnum
enum class ChannelTypeEnum : uint8_t
{
    kSatellite   = 0x00,
    kCable       = 0x01,
    kTerrestrial = 0x02,
    kOtt         = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for LineupInfoTypeEnum
enum class LineupInfoTypeEnum : uint8_t
{
    kMso = 0x00,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 1,
};

// Enum for StatusEnum
enum class StatusEnum : uint8_t
{
    kSuccess         = 0x00,
    kMultipleMatches = 0x01,
    kNoMatches       = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kChannelList     = 0x1,
    kLineupInfo      = 0x2,
    kElectronicGuide = 0x4,
    kRecordProgram   = 0x8,
};

// Bitmap for RecordingFlagBitmap
enum class RecordingFlagBitmap : uint32_t
{
    kScheduled    = 0x1,
    kRecordSeries = 0x2,
    kRecorded     = 0x4,
};
} // namespace Channel

namespace TargetNavigator {

// Enum for StatusEnum
enum class StatusEnum : uint8_t
{
    kSuccess        = 0x00,
    kTargetNotFound = 0x01,
    kNotAllowed     = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};
} // namespace TargetNavigator

namespace MediaPlayback {

// Enum for CharacteristicEnum
enum class CharacteristicEnum : uint8_t
{
    kForcedSubtitles              = 0x00,
    kDescribesVideo               = 0x01,
    kEasyToRead                   = 0x02,
    kFrameBased                   = 0x03,
    kMainProgram                  = 0x04,
    kOriginalContent              = 0x05,
    kVoiceOverTranslation         = 0x06,
    kCaption                      = 0x07,
    kSubtitle                     = 0x08,
    kAlternate                    = 0x09,
    kSupplementary                = 0x0A,
    kCommentary                   = 0x0B,
    kDubbedTranslation            = 0x0C,
    kDescription                  = 0x0D,
    kMetadata                     = 0x0E,
    kEnhancedAudioIntelligibility = 0x0F,
    kEmergency                    = 0x10,
    kKaraoke                      = 0x11,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 18,
};

// Enum for PlaybackStateEnum
enum class PlaybackStateEnum : uint8_t
{
    kPlaying    = 0x00,
    kPaused     = 0x01,
    kNotPlaying = 0x02,
    kBuffering  = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for StatusEnum
enum class StatusEnum : uint8_t
{
    kSuccess                = 0x00,
    kInvalidStateForCommand = 0x01,
    kNotAllowed             = 0x02,
    kNotActive              = 0x03,
    kSpeedOutOfRange        = 0x04,
    kSeekOutOfRange         = 0x05,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 6,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kAdvancedSeek  = 0x1,
    kVariableSpeed = 0x2,
    kTextTracks    = 0x4,
    kAudioTracks   = 0x8,
    kAudioAdvance  = 0x10,
};
} // namespace MediaPlayback

namespace MediaInput {

// Enum for InputTypeEnum
enum class InputTypeEnum : uint8_t
{
    kInternal  = 0x00,
    kAux       = 0x01,
    kCoax      = 0x02,
    kComposite = 0x03,
    kHdmi      = 0x04,
    kInput     = 0x05,
    kLine      = 0x06,
    kOptical   = 0x07,
    kVideo     = 0x08,
    kScart     = 0x09,
    kUsb       = 0x0A,
    kOther     = 0x0B,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 12,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNameUpdates = 0x1,
};
} // namespace MediaInput

namespace LowPower {} // namespace LowPower

namespace KeypadInput {

// Enum for CECKeyCodeEnum
enum class CECKeyCodeEnum : uint8_t
{
    kSelect                    = 0x00,
    kUp                        = 0x01,
    kDown                      = 0x02,
    kLeft                      = 0x03,
    kRight                     = 0x04,
    kRightUp                   = 0x05,
    kRightDown                 = 0x06,
    kLeftUp                    = 0x07,
    kLeftDown                  = 0x08,
    kRootMenu                  = 0x09,
    kSetupMenu                 = 0x0A,
    kContentsMenu              = 0x0B,
    kFavoriteMenu              = 0x0C,
    kExit                      = 0x0D,
    kMediaTopMenu              = 0x10,
    kMediaContextSensitiveMenu = 0x11,
    kNumberEntryMode           = 0x1D,
    kNumber11                  = 0x1E,
    kNumber12                  = 0x1F,
    kNumber0OrNumber10         = 0x20,
    kNumbers1                  = 0x21,
    kNumbers2                  = 0x22,
    kNumbers3                  = 0x23,
    kNumbers4                  = 0x24,
    kNumbers5                  = 0x25,
    kNumbers6                  = 0x26,
    kNumbers7                  = 0x27,
    kNumbers8                  = 0x28,
    kNumbers9                  = 0x29,
    kDot                       = 0x2A,
    kEnter                     = 0x2B,
    kClear                     = 0x2C,
    kNextFavorite              = 0x2F,
    kChannelUp                 = 0x30,
    kChannelDown               = 0x31,
    kPreviousChannel           = 0x32,
    kSoundSelect               = 0x33,
    kInputSelect               = 0x34,
    kDisplayInformation        = 0x35,
    kHelp                      = 0x36,
    kPageUp                    = 0x37,
    kPageDown                  = 0x38,
    kPower                     = 0x40,
    kVolumeUp                  = 0x41,
    kVolumeDown                = 0x42,
    kMute                      = 0x43,
    kPlay                      = 0x44,
    kStop                      = 0x45,
    kPause                     = 0x46,
    kRecord                    = 0x47,
    kRewind                    = 0x48,
    kFastForward               = 0x49,
    kEject                     = 0x4A,
    kForward                   = 0x4B,
    kBackward                  = 0x4C,
    kStopRecord                = 0x4D,
    kPauseRecord               = 0x4E,
    kReserved                  = 0x4F,
    kAngle                     = 0x50,
    kSubPicture                = 0x51,
    kVideoOnDemand             = 0x52,
    kElectronicProgramGuide    = 0x53,
    kTimerProgramming          = 0x54,
    kInitialConfiguration      = 0x55,
    kSelectBroadcastType       = 0x56,
    kSelectSoundPresentation   = 0x57,
    kPlayFunction              = 0x60,
    kPausePlayFunction         = 0x61,
    kRecordFunction            = 0x62,
    kPauseRecordFunction       = 0x63,
    kStopFunction              = 0x64,
    kMuteFunction              = 0x65,
    kRestoreVolumeFunction     = 0x66,
    kTuneFunction              = 0x67,
    kSelectMediaFunction       = 0x68,
    kSelectAvInputFunction     = 0x69,
    kSelectAudioInputFunction  = 0x6A,
    kPowerToggleFunction       = 0x6B,
    kPowerOffFunction          = 0x6C,
    kPowerOnFunction           = 0x6D,
    kF1Blue                    = 0x71,
    kF2Red                     = 0x72,
    kF3Green                   = 0x73,
    kF4Yellow                  = 0x74,
    kF5                        = 0x75,
    kData                      = 0x76,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 14,
};

// Enum for StatusEnum
enum class StatusEnum : uint8_t
{
    kSuccess                  = 0x00,
    kUnsupportedKey           = 0x01,
    kInvalidKeyInCurrentState = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNavigationKeyCodes = 0x1,
    kLocationKeys       = 0x2,
    kNumberKeys         = 0x4,
};
} // namespace KeypadInput

namespace ContentLauncher {

// Enum for CharacteristicEnum
enum class CharacteristicEnum : uint8_t
{
    kForcedSubtitles              = 0x00,
    kDescribesVideo               = 0x01,
    kEasyToRead                   = 0x02,
    kFrameBased                   = 0x03,
    kMainProgram                  = 0x04,
    kOriginalContent              = 0x05,
    kVoiceOverTranslation         = 0x06,
    kCaption                      = 0x07,
    kSubtitle                     = 0x08,
    kAlternate                    = 0x09,
    kSupplementary                = 0x0A,
    kCommentary                   = 0x0B,
    kDubbedTranslation            = 0x0C,
    kDescription                  = 0x0D,
    kMetadata                     = 0x0E,
    kEnhancedAudioIntelligibility = 0x0F,
    kEmergency                    = 0x10,
    kKaraoke                      = 0x11,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 18,
};

// Enum for MetricTypeEnum
enum class MetricTypeEnum : uint8_t
{
    kPixels     = 0x00,
    kPercentage = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for ParameterEnum
enum class ParameterEnum : uint8_t
{
    kActor      = 0x00,
    kChannel    = 0x01,
    kCharacter  = 0x02,
    kDirector   = 0x03,
    kEvent      = 0x04,
    kFranchise  = 0x05,
    kGenre      = 0x06,
    kLeague     = 0x07,
    kPopularity = 0x08,
    kProvider   = 0x09,
    kSport      = 0x0A,
    kSportsTeam = 0x0B,
    kType       = 0x0C,
    kVideo      = 0x0D,
    kSeason     = 0x0E,
    kEpisode    = 0x0F,
    kAny        = 0x10,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 17,
};

// Enum for StatusEnum
enum class StatusEnum : uint8_t
{
    kSuccess                = 0x00,
    kURLNotAvailable        = 0x01,
    kAuthFailed             = 0x02,
    kTextTrackNotAvailable  = 0x03,
    kAudioTrackNotAvailable = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kContentSearch = 0x1,
    kURLPlayback   = 0x2,
    kAdvancedSeek  = 0x3,
    kTextTracks    = 0x4,
    kAudioTracks   = 0x5,
};

// Bitmap for SupportedProtocolsBitmap
enum class SupportedProtocolsBitmap : uint32_t
{
    kDash = 0x1,
    kHls  = 0x2,
};
} // namespace ContentLauncher

namespace AudioOutput {

// Enum for OutputTypeEnum
enum class OutputTypeEnum : uint8_t
{
    kHdmi      = 0x00,
    kBt        = 0x01,
    kOptical   = 0x02,
    kHeadphone = 0x03,
    kInternal  = 0x04,
    kOther     = 0x05,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 6,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kNameUpdates = 0x1,
};
} // namespace AudioOutput

namespace ApplicationLauncher {

// Enum for StatusEnum
enum class StatusEnum : uint8_t
{
    kSuccess         = 0x00,
    kAppNotAvailable = 0x01,
    kSystemBusy      = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Bitmap for Feature
enum class Feature : uint32_t
{
    kApplicationPlatform = 0x1,
};
} // namespace ApplicationLauncher

namespace ApplicationBasic {

// Enum for ApplicationStatusEnum
enum class ApplicationStatusEnum : uint8_t
{
    kStopped               = 0x00,
    kActiveVisibleFocus    = 0x01,
    kActiveHidden          = 0x02,
    kActiveVisibleNotFocus = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};
} // namespace ApplicationBasic

namespace AccountLogin {} // namespace AccountLogin

namespace ContentControl {

// Bitmap for Feature
enum class Feature : uint32_t
{
    kScreenTime             = 0x1,
    kPINManagement          = 0x2,
    kBlockUnrated           = 0x4,
    kOnDemandContentRating  = 0x8,
    kScheduledContentRating = 0x10,
};
} // namespace ContentControl

namespace ContentAppObserver {

// Enum for StatusEnum
enum class StatusEnum : uint8_t
{
    kSuccess        = 0x00,
    kUnexpectedData = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};
} // namespace ContentAppObserver

namespace ElectricalMeasurement {} // namespace ElectricalMeasurement

namespace UnitTesting {

// Enum for SimpleEnum
enum class SimpleEnum : uint8_t
{
    kUnspecified = 0x00,
    kValueA      = 0x01,
    kValueB      = 0x02,
    kValueC      = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Bitmap for Bitmap16MaskMap
enum class Bitmap16MaskMap : uint16_t
{
    kMaskVal1 = 0x1,
    kMaskVal2 = 0x2,
    kMaskVal3 = 0x4,
    kMaskVal4 = 0x4000,
};

// Bitmap for Bitmap32MaskMap
enum class Bitmap32MaskMap : uint32_t
{
    kMaskVal1 = 0x1,
    kMaskVal2 = 0x2,
    kMaskVal3 = 0x4,
    kMaskVal4 = 0x40000000,
};

// Bitmap for Bitmap64MaskMap
enum class Bitmap64MaskMap : uint64_t
{
    kMaskVal1 = 0x1,
    kMaskVal2 = 0x2,
    kMaskVal3 = 0x4,
    kMaskVal4 = 0x4000000000000000,
};

// Bitmap for Bitmap8MaskMap
enum class Bitmap8MaskMap : uint8_t
{
    kMaskVal1 = 0x1,
    kMaskVal2 = 0x2,
    kMaskVal3 = 0x4,
    kMaskVal4 = 0x40,
};

// Bitmap for SimpleBitmap
enum class SimpleBitmap : uint8_t
{
    kValueA = 0x1,
    kValueB = 0x2,
    kValueC = 0x4,
};
} // namespace UnitTesting

namespace FaultInjection {

// Enum for FaultType
enum class FaultType : uint8_t
{
    kUnspecified = 0x00,
    kSystemFault = 0x01,
    kInetFault   = 0x02,
    kChipFault   = 0x03,
    kCertFault   = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};
} // namespace FaultInjection

namespace SampleMei {} // namespace SampleMei

} // namespace Clusters
} // namespace app
} // namespace chip

// Included at the end, so all our definitions above are available.
#include <app/common/CompatEnumNames.h>
