/**
 * @license
 * Copyright 2022-2025 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 {
  ThermostatUserInterfaceConfigurationServer as BaseThermostatUserInterfaceConfigurationServer
} from "../behaviors/thermostat-user-interface-configuration/ThermostatUserInterfaceConfigurationServer.js";
import {
  EnergyPreferenceServer as BaseEnergyPreferenceServer
} from "../behaviors/energy-preference/EnergyPreferenceServer.js";
import { FanControlBehavior as BaseFanControlBehavior } from "../behaviors/fan-control/FanControlBehavior.js";
import {
  TemperatureMeasurementBehavior as BaseTemperatureMeasurementBehavior
} from "../behaviors/temperature-measurement/TemperatureMeasurementBehavior.js";
import {
  RelativeHumidityMeasurementBehavior as BaseRelativeHumidityMeasurementBehavior
} from "../behaviors/relative-humidity-measurement/RelativeHumidityMeasurementBehavior.js";
import {
  OccupancySensingBehavior as BaseOccupancySensingBehavior
} from "../behaviors/occupancy-sensing/OccupancySensingBehavior.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.ThermostatUserInterfaceConfigurationServer = BaseThermostatUserInterfaceConfigurationServer;
  ThermostatRequirements2.EnergyPreferenceServer = BaseEnergyPreferenceServer;
  ThermostatRequirements2.FanControlBehavior = BaseFanControlBehavior;
  ThermostatRequirements2.TemperatureMeasurementBehavior = BaseTemperatureMeasurementBehavior;
  ThermostatRequirements2.RelativeHumidityMeasurementBehavior = BaseRelativeHumidityMeasurementBehavior;
  ThermostatRequirements2.OccupancySensingBehavior = BaseOccupancySensingBehavior;
  ThermostatRequirements2.server = {
    mandatory: { Identify: ThermostatRequirements2.IdentifyServer, Thermostat: ThermostatRequirements2.ThermostatServer },
    optional: {
      Groups: ThermostatRequirements2.GroupsServer,
      ThermostatUserInterfaceConfiguration: ThermostatRequirements2.ThermostatUserInterfaceConfigurationServer,
      EnergyPreference: ThermostatRequirements2.EnergyPreferenceServer
    }
  };
  ThermostatRequirements2.client = {
    optional: {
      FanControl: ThermostatRequirements2.FanControlBehavior,
      TemperatureMeasurement: ThermostatRequirements2.TemperatureMeasurementBehavior,
      RelativeHumidityMeasurement: ThermostatRequirements2.RelativeHumidityMeasurementBehavior,
      OccupancySensing: ThermostatRequirements2.OccupancySensingBehavior
    },
    mandatory: {}
  };
})(ThermostatRequirements || (ThermostatRequirements = {}));
const ThermostatDeviceDefinition = MutableEndpoint({
  name: "Thermostat",
  deviceType: 769,
  deviceRevision: 4,
  requirements: ThermostatRequirements,
  behaviors: SupportedBehaviors(ThermostatRequirements.server.mandatory.Identify)
});
Object.freeze(ThermostatDeviceDefinition);
const ThermostatDevice = ThermostatDeviceDefinition;
export {
  ThermostatDevice,
  ThermostatDeviceDefinition,
  ThermostatRequirements
};
//# sourceMappingURL=thermostat.js.map
