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

namespace chip {
namespace app {
namespace Clusters {
namespace JointFabricDatastore {

inline constexpr uint32_t kRevision = 1;

namespace Attributes {

namespace AnchorRootCA {
inline constexpr DataModel::AttributeEntry kMetadataEntry(AnchorRootCA::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kAdminister, std::nullopt);
} // namespace AnchorRootCA
namespace AnchorNodeID {
inline constexpr DataModel::AttributeEntry kMetadataEntry(AnchorNodeID::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kAdminister, std::nullopt);
} // namespace AnchorNodeID
namespace AnchorVendorID {
inline constexpr DataModel::AttributeEntry kMetadataEntry(AnchorVendorID::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kAdminister, std::nullopt);
} // namespace AnchorVendorID
namespace FriendlyName {
inline constexpr DataModel::AttributeEntry kMetadataEntry(FriendlyName::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kAdminister, std::nullopt);
} // namespace FriendlyName
namespace GroupKeySetList {
inline constexpr DataModel::AttributeEntry
    kMetadataEntry(GroupKeySetList::Id,
                   BitFlags<DataModel::AttributeQualityFlags>(DataModel::AttributeQualityFlags::kListAttribute),
                   Access::Privilege::kAdminister, std::nullopt);
} // namespace GroupKeySetList
namespace GroupList {
inline constexpr DataModel::AttributeEntry
    kMetadataEntry(GroupList::Id, BitFlags<DataModel::AttributeQualityFlags>(DataModel::AttributeQualityFlags::kListAttribute),
                   Access::Privilege::kAdminister, std::nullopt);
} // namespace GroupList
namespace NodeList {
inline constexpr DataModel::AttributeEntry
    kMetadataEntry(NodeList::Id, BitFlags<DataModel::AttributeQualityFlags>(DataModel::AttributeQualityFlags::kListAttribute),
                   Access::Privilege::kAdminister, std::nullopt);
} // namespace NodeList
namespace AdminList {
inline constexpr DataModel::AttributeEntry
    kMetadataEntry(AdminList::Id, BitFlags<DataModel::AttributeQualityFlags>(DataModel::AttributeQualityFlags::kListAttribute),
                   Access::Privilege::kAdminister, std::nullopt);
} // namespace AdminList
namespace Status {
inline constexpr DataModel::AttributeEntry kMetadataEntry(Status::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kAdminister, std::nullopt);
} // namespace Status
namespace EndpointGroupIDList {
inline constexpr DataModel::AttributeEntry
    kMetadataEntry(EndpointGroupIDList::Id,
                   BitFlags<DataModel::AttributeQualityFlags>(DataModel::AttributeQualityFlags::kListAttribute),
                   Access::Privilege::kAdminister, std::nullopt);
} // namespace EndpointGroupIDList
namespace EndpointBindingList {
inline constexpr DataModel::AttributeEntry
    kMetadataEntry(EndpointBindingList::Id,
                   BitFlags<DataModel::AttributeQualityFlags>(DataModel::AttributeQualityFlags::kListAttribute),
                   Access::Privilege::kAdminister, std::nullopt);
} // namespace EndpointBindingList
namespace NodeKeySetList {
inline constexpr DataModel::AttributeEntry
    kMetadataEntry(NodeKeySetList::Id, BitFlags<DataModel::AttributeQualityFlags>(DataModel::AttributeQualityFlags::kListAttribute),
                   Access::Privilege::kAdminister, std::nullopt);
} // namespace NodeKeySetList
namespace NodeACLList {
inline constexpr DataModel::AttributeEntry
    kMetadataEntry(NodeACLList::Id, BitFlags<DataModel::AttributeQualityFlags>(DataModel::AttributeQualityFlags::kListAttribute),
                   Access::Privilege::kAdminister, std::nullopt);
} // namespace NodeACLList
namespace NodeEndpointList {
inline constexpr DataModel::AttributeEntry
    kMetadataEntry(NodeEndpointList::Id,
                   BitFlags<DataModel::AttributeQualityFlags>(DataModel::AttributeQualityFlags::kListAttribute),
                   Access::Privilege::kAdminister, std::nullopt);
} // namespace NodeEndpointList
constexpr std::array<DataModel::AttributeEntry, 14> kMandatoryMetadata = {
    AnchorRootCA::kMetadataEntry,
    AnchorNodeID::kMetadataEntry,
    AnchorVendorID::kMetadataEntry,
    FriendlyName::kMetadataEntry,
    GroupKeySetList::kMetadataEntry,
    GroupList::kMetadataEntry,
    NodeList::kMetadataEntry,
    AdminList::kMetadataEntry,
    Status::kMetadataEntry,
    EndpointGroupIDList::kMetadataEntry,
    EndpointBindingList::kMetadataEntry,
    NodeKeySetList::kMetadataEntry,
    NodeACLList::kMetadataEntry,
    NodeEndpointList::kMetadataEntry,

};

} // namespace Attributes

namespace Commands {

namespace AddKeySet {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(AddKeySet::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace AddKeySet
namespace UpdateKeySet {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(UpdateKeySet::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace UpdateKeySet
namespace RemoveKeySet {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(RemoveKeySet::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace RemoveKeySet
namespace AddGroup {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(AddGroup::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace AddGroup
namespace UpdateGroup {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(UpdateGroup::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace UpdateGroup
namespace RemoveGroup {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(RemoveGroup::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace RemoveGroup
namespace AddAdmin {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(AddAdmin::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace AddAdmin
namespace UpdateAdmin {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(UpdateAdmin::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace UpdateAdmin
namespace RemoveAdmin {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(RemoveAdmin::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace RemoveAdmin
namespace AddPendingNode {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(AddPendingNode::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace AddPendingNode
namespace RefreshNode {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(RefreshNode::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace RefreshNode
namespace UpdateNode {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(UpdateNode::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace UpdateNode
namespace RemoveNode {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(RemoveNode::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace RemoveNode
namespace UpdateEndpointForNode {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(UpdateEndpointForNode::Id, BitFlags<DataModel::CommandQualityFlags>(), Access::Privilege::kAdminister);
} // namespace UpdateEndpointForNode
namespace AddGroupIDToEndpointForNode {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(AddGroupIDToEndpointForNode::Id, BitFlags<DataModel::CommandQualityFlags>(), Access::Privilege::kAdminister);
} // namespace AddGroupIDToEndpointForNode
namespace RemoveGroupIDFromEndpointForNode {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(RemoveGroupIDFromEndpointForNode::Id,
                                                                BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace RemoveGroupIDFromEndpointForNode
namespace AddBindingToEndpointForNode {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(AddBindingToEndpointForNode::Id, BitFlags<DataModel::CommandQualityFlags>(), Access::Privilege::kAdminister);
} // namespace AddBindingToEndpointForNode
namespace RemoveBindingFromEndpointForNode {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(RemoveBindingFromEndpointForNode::Id,
                                                                BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace RemoveBindingFromEndpointForNode
namespace AddACLToNode {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(AddACLToNode::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace AddACLToNode
namespace RemoveACLFromNode {
inline constexpr DataModel::AcceptedCommandEntry kMetadataEntry(RemoveACLFromNode::Id, BitFlags<DataModel::CommandQualityFlags>(),
                                                                Access::Privilege::kAdminister);
} // namespace RemoveACLFromNode

} // namespace Commands

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