// DO NOT EDIT MANUALLY - Generated file
//
// Cluster metadata information for cluster OccupancySensing (cluster code: 1030/0x406)
// 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/OccupancySensing/Ids.h>

namespace chip {
namespace app {
namespace Clusters {
namespace OccupancySensing {

inline constexpr uint32_t kRevision = 5;

namespace Attributes {

namespace Occupancy {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Occupancy::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace Occupancy
namespace OccupancySensorType {
inline constexpr DataModel::AttributeEntry kMetadataEntry(OccupancySensorType::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace OccupancySensorType
namespace OccupancySensorTypeBitmap {
inline constexpr DataModel::AttributeEntry kMetadataEntry(OccupancySensorTypeBitmap::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          std::nullopt);
} // namespace OccupancySensorTypeBitmap
namespace HoldTime {
inline constexpr DataModel::AttributeEntry kMetadataEntry(HoldTime::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, Access::Privilege::kManage);
} // namespace HoldTime
namespace HoldTimeLimits {
inline constexpr DataModel::AttributeEntry kMetadataEntry(HoldTimeLimits::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace HoldTimeLimits
namespace PIROccupiedToUnoccupiedDelay {
inline constexpr DataModel::AttributeEntry kMetadataEntry(PIROccupiedToUnoccupiedDelay::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          Access::Privilege::kManage);
} // namespace PIROccupiedToUnoccupiedDelay
namespace PIRUnoccupiedToOccupiedDelay {
inline constexpr DataModel::AttributeEntry kMetadataEntry(PIRUnoccupiedToOccupiedDelay::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          Access::Privilege::kManage);
} // namespace PIRUnoccupiedToOccupiedDelay
namespace PIRUnoccupiedToOccupiedThreshold {
inline constexpr DataModel::AttributeEntry kMetadataEntry(PIRUnoccupiedToOccupiedThreshold::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          Access::Privilege::kManage);
} // namespace PIRUnoccupiedToOccupiedThreshold
namespace UltrasonicOccupiedToUnoccupiedDelay {
inline constexpr DataModel::AttributeEntry kMetadataEntry(UltrasonicOccupiedToUnoccupiedDelay::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          Access::Privilege::kManage);
} // namespace UltrasonicOccupiedToUnoccupiedDelay
namespace UltrasonicUnoccupiedToOccupiedDelay {
inline constexpr DataModel::AttributeEntry kMetadataEntry(UltrasonicUnoccupiedToOccupiedDelay::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          Access::Privilege::kManage);
} // namespace UltrasonicUnoccupiedToOccupiedDelay
namespace UltrasonicUnoccupiedToOccupiedThreshold {
inline constexpr DataModel::AttributeEntry kMetadataEntry(UltrasonicUnoccupiedToOccupiedThreshold::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          Access::Privilege::kManage);
} // namespace UltrasonicUnoccupiedToOccupiedThreshold
namespace PhysicalContactOccupiedToUnoccupiedDelay {
inline constexpr DataModel::AttributeEntry kMetadataEntry(PhysicalContactOccupiedToUnoccupiedDelay::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          Access::Privilege::kManage);
} // namespace PhysicalContactOccupiedToUnoccupiedDelay
namespace PhysicalContactUnoccupiedToOccupiedDelay {
inline constexpr DataModel::AttributeEntry kMetadataEntry(PhysicalContactUnoccupiedToOccupiedDelay::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          Access::Privilege::kManage);
} // namespace PhysicalContactUnoccupiedToOccupiedDelay
namespace PhysicalContactUnoccupiedToOccupiedThreshold {
inline constexpr DataModel::AttributeEntry kMetadataEntry(PhysicalContactUnoccupiedToOccupiedThreshold::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          Access::Privilege::kManage);
} // namespace PhysicalContactUnoccupiedToOccupiedThreshold
constexpr std::array<DataModel::AttributeEntry, 3> kMandatoryMetadata = {
    Occupancy::kMetadataEntry,
    OccupancySensorType::kMetadataEntry,
    OccupancySensorTypeBitmap::kMetadataEntry,

};

} // namespace Attributes

namespace Commands {} // namespace Commands

namespace Events {
namespace OccupancyChanged {
inline constexpr DataModel::EventEntry kMetadataEntry{ Access::Privilege::kView };
} // namespace OccupancyChanged

} // namespace Events
} // namespace OccupancySensing
} // namespace Clusters
} // namespace app
} // namespace chip
