// DO NOT EDIT MANUALLY - Generated file
//
// Cluster metadata information for cluster ColorControl (cluster code: 768/0x300)
// based on src/controller/data_model/controller-clusters.matter
#pragma once

#include <app/data-model-provider/MetadataTypes.h>
#include <array>
#include <lib/core/DataModelTypes.h>

#include <cstdint>

#include <clusters/ColorControl/Ids.h>

namespace chip {
namespace app {
namespace Clusters {
namespace ColorControl {

inline constexpr uint32_t kRevision = 7;

namespace Attributes {

namespace CurrentHue {
inline constexpr DataModel::AttributeEntry kMetadataEntry(CurrentHue::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace CurrentHue
namespace CurrentSaturation {
inline constexpr DataModel::AttributeEntry kMetadataEntry(CurrentSaturation::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace CurrentSaturation
namespace RemainingTime {
inline constexpr DataModel::AttributeEntry kMetadataEntry(RemainingTime::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace RemainingTime
namespace CurrentX {
inline constexpr DataModel::AttributeEntry kMetadataEntry(CurrentX::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace CurrentX
namespace CurrentY {
inline constexpr DataModel::AttributeEntry kMetadataEntry(CurrentY::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace CurrentY
namespace DriftCompensation {
inline constexpr DataModel::AttributeEntry kMetadataEntry(DriftCompensation::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace DriftCompensation
namespace CompensationText {
inline constexpr DataModel::AttributeEntry kMetadataEntry(CompensationText::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace CompensationText
namespace ColorTemperatureMireds {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorTemperatureMireds::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorTemperatureMireds
namespace ColorMode {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorMode::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorMode
namespace Options {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Options::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, Access::Privilege::kOperate);
} // namespace Options
namespace NumberOfPrimaries {
inline constexpr DataModel::AttributeEntry kMetadataEntry(NumberOfPrimaries::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace NumberOfPrimaries
namespace Primary1X {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary1X::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary1X
namespace Primary1Y {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary1Y::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary1Y
namespace Primary1Intensity {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary1Intensity::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary1Intensity
namespace Primary2X {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary2X::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary2X
namespace Primary2Y {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary2Y::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary2Y
namespace Primary2Intensity {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary2Intensity::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary2Intensity
namespace Primary3X {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary3X::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary3X
namespace Primary3Y {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary3Y::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary3Y
namespace Primary3Intensity {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary3Intensity::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary3Intensity
namespace Primary4X {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary4X::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary4X
namespace Primary4Y {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary4Y::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary4Y
namespace Primary4Intensity {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary4Intensity::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary4Intensity
namespace Primary5X {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary5X::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary5X
namespace Primary5Y {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary5Y::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary5Y
namespace Primary5Intensity {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary5Intensity::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary5Intensity
namespace Primary6X {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary6X::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary6X
namespace Primary6Y {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary6Y::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary6Y
namespace Primary6Intensity {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Primary6Intensity::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Primary6Intensity
namespace WhitePointX {
inline constexpr DataModel::AttributeEntry kMetadataEntry(WhitePointX::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace WhitePointX
namespace WhitePointY {
inline constexpr DataModel::AttributeEntry kMetadataEntry(WhitePointY::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace WhitePointY
namespace ColorPointRX {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorPointRX::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorPointRX
namespace ColorPointRY {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorPointRY::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorPointRY
namespace ColorPointRIntensity {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorPointRIntensity::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorPointRIntensity
namespace ColorPointGX {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorPointGX::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorPointGX
namespace ColorPointGY {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorPointGY::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorPointGY
namespace ColorPointGIntensity {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorPointGIntensity::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorPointGIntensity
namespace ColorPointBX {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorPointBX::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorPointBX
namespace ColorPointBY {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorPointBY::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorPointBY
namespace ColorPointBIntensity {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorPointBIntensity::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorPointBIntensity
namespace EnhancedCurrentHue {
inline constexpr DataModel::AttributeEntry kMetadataEntry(EnhancedCurrentHue::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace EnhancedCurrentHue
namespace EnhancedColorMode {
inline constexpr DataModel::AttributeEntry kMetadataEntry(EnhancedColorMode::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace EnhancedColorMode
namespace ColorLoopActive {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorLoopActive::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorLoopActive
namespace ColorLoopDirection {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorLoopDirection::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorLoopDirection
namespace ColorLoopTime {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorLoopTime::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorLoopTime
namespace ColorLoopStartEnhancedHue {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorLoopStartEnhancedHue::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          std::nullopt);
} // namespace ColorLoopStartEnhancedHue
namespace ColorLoopStoredEnhancedHue {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorLoopStoredEnhancedHue::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          std::nullopt);
} // namespace ColorLoopStoredEnhancedHue
namespace ColorCapabilities {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorCapabilities::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ColorCapabilities
namespace ColorTempPhysicalMinMireds {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorTempPhysicalMinMireds::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          std::nullopt);
} // namespace ColorTempPhysicalMinMireds
namespace ColorTempPhysicalMaxMireds {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ColorTempPhysicalMaxMireds::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          std::nullopt);
} // namespace ColorTempPhysicalMaxMireds
namespace CoupleColorTempToLevelMinMireds {
inline constexpr DataModel::AttributeEntry kMetadataEntry(CoupleColorTempToLevelMinMireds::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          std::nullopt);
} // namespace CoupleColorTempToLevelMinMireds
namespace StartUpColorTemperatureMireds {
inline constexpr DataModel::AttributeEntry kMetadataEntry(StartUpColorTemperatureMireds::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          Access::Privilege::kManage);
} // namespace StartUpColorTemperatureMireds
constexpr std::array<DataModel::AttributeEntry, 5> kMandatoryMetadata = {
    ColorMode::kMetadataEntry,         Options::kMetadataEntry,           NumberOfPrimaries::kMetadataEntry,
    EnhancedColorMode::kMetadataEntry, ColorCapabilities::kMetadataEntry,

};

} // namespace Attributes

namespace Commands {

namespace MoveToHue {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(MoveToHue::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace MoveToHue
namespace MoveHue {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(MoveHue::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace MoveHue
namespace StepHue {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(StepHue::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace StepHue
namespace MoveToSaturation {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(MoveToSaturation::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace MoveToSaturation
namespace MoveSaturation {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(MoveSaturation::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace MoveSaturation
namespace StepSaturation {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(StepSaturation::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace StepSaturation
namespace MoveToHueAndSaturation {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(MoveToHueAndSaturation::Id, BitFlags<DataModel::CommandQualityFlags>(), Access::Privilege::kOperate);
} // namespace MoveToHueAndSaturation
namespace MoveToColor {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(MoveToColor::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace MoveToColor
namespace MoveColor {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(MoveColor::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace MoveColor
namespace StepColor {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(StepColor::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace StepColor
namespace MoveToColorTemperature {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(MoveToColorTemperature::Id, BitFlags<DataModel::CommandQualityFlags>(), Access::Privilege::kOperate);
} // namespace MoveToColorTemperature
namespace EnhancedMoveToHue {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(EnhancedMoveToHue::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace EnhancedMoveToHue
namespace EnhancedMoveHue {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(EnhancedMoveHue::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace EnhancedMoveHue
namespace EnhancedStepHue {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(EnhancedStepHue::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace EnhancedStepHue
namespace EnhancedMoveToHueAndSaturation {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(EnhancedMoveToHueAndSaturation::Id, BitFlags<DataModel::CommandQualityFlags>(), Access::Privilege::kOperate);
} // namespace EnhancedMoveToHueAndSaturation
namespace ColorLoopSet {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(ColorLoopSet::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace ColorLoopSet
namespace StopMoveStep {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(StopMoveStep::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kOperate);
} // namespace StopMoveStep
namespace MoveColorTemperature {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(MoveColorTemperature::Id, BitFlags<DataModel::CommandQualityFlags>(), Access::Privilege::kOperate);
} // namespace MoveColorTemperature
namespace StepColorTemperature {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(StepColorTemperature::Id, BitFlags<DataModel::CommandQualityFlags>(), Access::Privilege::kOperate);
} // namespace StepColorTemperature

} // namespace Commands

namespace Events {} // namespace Events
} // namespace ColorControl
} // namespace Clusters
} // namespace app
} // namespace chip
