/**
 * @license
 * Copyright 2022-2024 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { MatterDefinition } from "../MatterDefinition.js";
import {
  DeviceTypeElement as DeviceType,
  RequirementElement as Requirement,
  FieldElement as Field
} from "../../elements/index.js";
const RootNodeDt = DeviceType({
  name: "RootNode",
  id: 22,
  category: "Utility",
  classification: "node",
  details: 'This defines conformance for a root node endpoint (see System Model specification). This endpoint is akin to a "read me first" endpoint that describes itself and the other endpoints that make up the node.\n  \u2022 Device types with Endpoint scope shall NOT be supported on the same endpoint as this device     type.\n  \u2022 Clusters with an Application role shall NOT be supported on the same endpoint as this device     type.\n  \u2022 Other device types with Node scope may be supported on the same endpoint as this device type.',
  xref: { document: "device", section: "2.1" },
  children: [
    Requirement({
      name: "Descriptor",
      id: 29,
      element: "serverCluster",
      children: [
        Requirement({ name: "DeviceTypeList", default: [{ deviceType: 22, revision: 2 }], element: "attribute" })
      ]
    }),
    Requirement({
      name: "BasicInformation",
      id: 40,
      conformance: "M",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "AccessControl",
      id: 31,
      conformance: "M",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "PowerSourceConfiguration",
      id: 46,
      conformance: "O, D",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "TimeSynchronization",
      id: 56,
      conformance: "O",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "GroupKeyManagement",
      id: 63,
      conformance: "M",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "GeneralCommissioning",
      id: 48,
      conformance: "M",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "NetworkCommissioning",
      id: 49,
      conformance: "!CustomNetworkConfig",
      element: "serverCluster",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "AdministratorCommissioning",
      id: 60,
      conformance: "M",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "OperationalCredentials",
      id: 62,
      conformance: "M",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "LocalizationConfiguration",
      id: 43,
      conformance: "LanguageLocale",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "TimeFormatLocalization",
      id: 44,
      conformance: "TimeLocale",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "UnitLocalization",
      id: 45,
      conformance: "UnitLocale",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "GeneralDiagnostics",
      id: 51,
      conformance: "M",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "DiagnosticLogs",
      id: 50,
      conformance: "O",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "SoftwareDiagnostics",
      id: 52,
      conformance: "O",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "EthernetNetworkDiagnostics",
      id: 55,
      conformance: "[Ethernet]",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "WiFiNetworkDiagnostics",
      id: 54,
      conformance: "[Wi, 0, i]",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "ThreadNetworkDiagnostics",
      id: 53,
      conformance: "[Thread]",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" }
    }),
    Requirement({
      name: "IcdManagement",
      id: 70,
      conformance: "SIT",
      element: "serverCluster",
      quality: "I",
      xref: { document: "device", section: "2.1.5" },
      children: [Requirement({ name: "LONGIDLETIMESUPPORT", conformance: "P, LIT", element: "feature" })]
    }),
    Field({
      name: "conditions",
      type: "enum8",
      children: [Field({
        name: "CustomNetworkConfig",
        description: "The node only supports out-of-band-configured networking (e.g. rich user interface, manufacturer-specific means, custom commissioning flows, or future IP-compliant network technology not yet directly supported by NetworkCommissioning cluster).",
        xref: { document: "device", section: "2.1.3" }
      })]
    })
  ]
});
MatterDefinition.children.push(RootNodeDt);
export {
  RootNodeDt
};
//# sourceMappingURL=RootNodeDT.js.map
