/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { PartsBehavior } from "../behavior/system/parts/PartsBehavior.js";
import { IndexBehavior } from "../behavior/system/index/IndexBehavior.js";
import {
  BasicInformationServer as BaseBasicInformationServer
} from "../behaviors/basic-information/BasicInformationServer.js";
import { AccessControlServer as BaseAccessControlServer } from "../behaviors/access-control/AccessControlServer.js";
import {
  GroupKeyManagementServer as BaseGroupKeyManagementServer
} from "../behaviors/group-key-management/GroupKeyManagementServer.js";
import {
  GeneralCommissioningServer as BaseGeneralCommissioningServer
} from "../behaviors/general-commissioning/GeneralCommissioningServer.js";
import {
  AdministratorCommissioningServer as BaseAdministratorCommissioningServer
} from "../behaviors/administrator-commissioning/AdministratorCommissioningServer.js";
import {
  OperationalCredentialsServer as BaseOperationalCredentialsServer
} from "../behaviors/operational-credentials/OperationalCredentialsServer.js";
import {
  GeneralDiagnosticsServer as BaseGeneralDiagnosticsServer
} from "../behaviors/general-diagnostics/GeneralDiagnosticsServer.js";
import {
  PowerSourceConfigurationServer as BasePowerSourceConfigurationServer
} from "../behaviors/power-source-configuration/PowerSourceConfigurationServer.js";
import {
  TimeSynchronizationServer as BaseTimeSynchronizationServer
} from "../behaviors/time-synchronization/TimeSynchronizationServer.js";
import {
  NetworkCommissioningServer as BaseNetworkCommissioningServer
} from "../behaviors/network-commissioning/NetworkCommissioningServer.js";
import {
  LocalizationConfigurationServer as BaseLocalizationConfigurationServer
} from "../behaviors/localization-configuration/LocalizationConfigurationServer.js";
import {
  TimeFormatLocalizationServer as BaseTimeFormatLocalizationServer
} from "../behaviors/time-format-localization/TimeFormatLocalizationServer.js";
import {
  UnitLocalizationServer as BaseUnitLocalizationServer
} from "../behaviors/unit-localization/UnitLocalizationServer.js";
import { DiagnosticLogsServer as BaseDiagnosticLogsServer } from "../behaviors/diagnostic-logs/DiagnosticLogsServer.js";
import {
  SoftwareDiagnosticsServer as BaseSoftwareDiagnosticsServer
} from "../behaviors/software-diagnostics/SoftwareDiagnosticsServer.js";
import {
  EthernetNetworkDiagnosticsServer as BaseEthernetNetworkDiagnosticsServer
} from "../behaviors/ethernet-network-diagnostics/EthernetNetworkDiagnosticsServer.js";
import {
  WiFiNetworkDiagnosticsServer as BaseWiFiNetworkDiagnosticsServer
} from "../behaviors/wi-fi-network-diagnostics/WiFiNetworkDiagnosticsServer.js";
import {
  ThreadNetworkDiagnosticsServer as BaseThreadNetworkDiagnosticsServer
} from "../behaviors/thread-network-diagnostics/ThreadNetworkDiagnosticsServer.js";
import { IcdManagementServer as BaseIcdManagementServer } from "../behaviors/icd-management/IcdManagementServer.js";
import { MutableEndpoint } from "../endpoint/type/MutableEndpoint.js";
import { DeviceClassification } from "#model";
import { SupportedBehaviors } from "../endpoint/properties/SupportedBehaviors.js";
var RootRequirements;
((RootRequirements2) => {
  RootRequirements2.BasicInformationServer = BaseBasicInformationServer;
  RootRequirements2.AccessControlServer = BaseAccessControlServer;
  RootRequirements2.GroupKeyManagementServer = BaseGroupKeyManagementServer;
  RootRequirements2.GeneralCommissioningServer = BaseGeneralCommissioningServer;
  RootRequirements2.AdministratorCommissioningServer = BaseAdministratorCommissioningServer;
  RootRequirements2.OperationalCredentialsServer = BaseOperationalCredentialsServer;
  RootRequirements2.GeneralDiagnosticsServer = BaseGeneralDiagnosticsServer;
  RootRequirements2.PowerSourceConfigurationServer = BasePowerSourceConfigurationServer;
  RootRequirements2.TimeSynchronizationServer = BaseTimeSynchronizationServer;
  RootRequirements2.NetworkCommissioningServer = BaseNetworkCommissioningServer;
  RootRequirements2.LocalizationConfigurationServer = BaseLocalizationConfigurationServer;
  RootRequirements2.TimeFormatLocalizationServer = BaseTimeFormatLocalizationServer;
  RootRequirements2.UnitLocalizationServer = BaseUnitLocalizationServer;
  RootRequirements2.DiagnosticLogsServer = BaseDiagnosticLogsServer;
  RootRequirements2.SoftwareDiagnosticsServer = BaseSoftwareDiagnosticsServer;
  RootRequirements2.EthernetNetworkDiagnosticsServer = BaseEthernetNetworkDiagnosticsServer;
  RootRequirements2.WiFiNetworkDiagnosticsServer = BaseWiFiNetworkDiagnosticsServer;
  RootRequirements2.ThreadNetworkDiagnosticsServer = BaseThreadNetworkDiagnosticsServer;
  RootRequirements2.IcdManagementServer = BaseIcdManagementServer;
  RootRequirements2.server = {
    mandatory: {
      Parts: PartsBehavior,
      Index: IndexBehavior,
      BasicInformation: RootRequirements2.BasicInformationServer,
      AccessControl: RootRequirements2.AccessControlServer,
      GroupKeyManagement: RootRequirements2.GroupKeyManagementServer,
      GeneralCommissioning: RootRequirements2.GeneralCommissioningServer,
      AdministratorCommissioning: RootRequirements2.AdministratorCommissioningServer,
      OperationalCredentials: RootRequirements2.OperationalCredentialsServer,
      GeneralDiagnostics: RootRequirements2.GeneralDiagnosticsServer
    },
    optional: {
      PowerSourceConfiguration: RootRequirements2.PowerSourceConfigurationServer,
      TimeSynchronization: RootRequirements2.TimeSynchronizationServer,
      NetworkCommissioning: RootRequirements2.NetworkCommissioningServer,
      LocalizationConfiguration: RootRequirements2.LocalizationConfigurationServer,
      TimeFormatLocalization: RootRequirements2.TimeFormatLocalizationServer,
      UnitLocalization: RootRequirements2.UnitLocalizationServer,
      DiagnosticLogs: RootRequirements2.DiagnosticLogsServer,
      SoftwareDiagnostics: RootRequirements2.SoftwareDiagnosticsServer,
      EthernetNetworkDiagnostics: RootRequirements2.EthernetNetworkDiagnosticsServer,
      WiFiNetworkDiagnostics: RootRequirements2.WiFiNetworkDiagnosticsServer,
      ThreadNetworkDiagnostics: RootRequirements2.ThreadNetworkDiagnosticsServer,
      IcdManagement: RootRequirements2.IcdManagementServer
    }
  };
})(RootRequirements || (RootRequirements = {}));
const RootEndpointDefinition = MutableEndpoint({
  name: "RootNode",
  deviceType: 22,
  deviceRevision: 3,
  deviceClass: DeviceClassification.Node,
  requirements: RootRequirements,
  behaviors: SupportedBehaviors(
    RootRequirements.server.mandatory.Parts,
    RootRequirements.server.mandatory.Index,
    RootRequirements.server.mandatory.BasicInformation,
    RootRequirements.server.mandatory.AccessControl,
    RootRequirements.server.mandatory.GroupKeyManagement,
    RootRequirements.server.mandatory.GeneralCommissioning,
    RootRequirements.server.mandatory.AdministratorCommissioning,
    RootRequirements.server.mandatory.OperationalCredentials,
    RootRequirements.server.mandatory.GeneralDiagnostics
  )
});
Object.freeze(RootEndpointDefinition);
const RootEndpoint = RootEndpointDefinition;
export {
  RootEndpoint,
  RootEndpointDefinition,
  RootRequirements
};
//# sourceMappingURL=root.js.map
