/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { IdentifyServer as BaseIdentifyServer } from "../behaviors/identify/IdentifyServer.js";
import { ThermostatServer as BaseThermostatServer } from "../behaviors/thermostat/ThermostatServer.js";
import { GroupsServer as BaseGroupsServer } from "../behaviors/groups/GroupsServer.js";
import {
  EnergyPreferenceServer as BaseEnergyPreferenceServer
} from "../behaviors/energy-preference/EnergyPreferenceServer.js";
import {
  ThermostatUserInterfaceConfigurationServer as BaseThermostatUserInterfaceConfigurationServer
} from "../behaviors/thermostat-user-interface-configuration/ThermostatUserInterfaceConfigurationServer.js";
import { FanControlClient as BaseFanControlClient } from "../behaviors/fan-control/FanControlClient.js";
import {
  TemperatureMeasurementClient as BaseTemperatureMeasurementClient
} from "../behaviors/temperature-measurement/TemperatureMeasurementClient.js";
import {
  RelativeHumidityMeasurementClient as BaseRelativeHumidityMeasurementClient
} from "../behaviors/relative-humidity-measurement/RelativeHumidityMeasurementClient.js";
import {
  OccupancySensingClient as BaseOccupancySensingClient
} from "../behaviors/occupancy-sensing/OccupancySensingClient.js";
import { MutableEndpoint } from "../endpoint/type/MutableEndpoint.js";
import { SupportedBehaviors } from "../endpoint/properties/SupportedBehaviors.js";
var ThermostatRequirements;
((ThermostatRequirements2) => {
  ThermostatRequirements2.IdentifyServer = BaseIdentifyServer;
  ThermostatRequirements2.ThermostatServer = BaseThermostatServer;
  ThermostatRequirements2.GroupsServer = BaseGroupsServer;
  ThermostatRequirements2.EnergyPreferenceServer = BaseEnergyPreferenceServer;
  ThermostatRequirements2.ThermostatUserInterfaceConfigurationServer = BaseThermostatUserInterfaceConfigurationServer;
  ThermostatRequirements2.FanControlClient = BaseFanControlClient;
  ThermostatRequirements2.TemperatureMeasurementClient = BaseTemperatureMeasurementClient;
  ThermostatRequirements2.RelativeHumidityMeasurementClient = BaseRelativeHumidityMeasurementClient;
  ThermostatRequirements2.OccupancySensingClient = BaseOccupancySensingClient;
  ThermostatRequirements2.server = {
    mandatory: { Identify: ThermostatRequirements2.IdentifyServer, Thermostat: ThermostatRequirements2.ThermostatServer },
    optional: {
      Groups: ThermostatRequirements2.GroupsServer,
      EnergyPreference: ThermostatRequirements2.EnergyPreferenceServer,
      ThermostatUserInterfaceConfiguration: ThermostatRequirements2.ThermostatUserInterfaceConfigurationServer
    }
  };
  ThermostatRequirements2.client = {
    optional: {
      FanControl: ThermostatRequirements2.FanControlClient,
      TemperatureMeasurement: ThermostatRequirements2.TemperatureMeasurementClient,
      RelativeHumidityMeasurement: ThermostatRequirements2.RelativeHumidityMeasurementClient,
      OccupancySensing: ThermostatRequirements2.OccupancySensingClient
    },
    mandatory: {}
  };
})(ThermostatRequirements || (ThermostatRequirements = {}));
const ThermostatDeviceDefinition = MutableEndpoint({
  name: "Thermostat",
  deviceType: 769,
  deviceRevision: 5,
  requirements: ThermostatRequirements,
  behaviors: SupportedBehaviors(ThermostatRequirements.server.mandatory.Identify)
});
Object.freeze(ThermostatDeviceDefinition);
const ThermostatDevice = ThermostatDeviceDefinition;
export {
  ThermostatDevice,
  ThermostatDeviceDefinition,
  ThermostatRequirements
};
//# sourceMappingURL=thermostat.js.map
