"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var Thermostat_exports = {};
__export(Thermostat_exports, {
  Thermostat: () => Thermostat
});
module.exports = __toCommonJS(Thermostat_exports);
var import_MatterDefinition = require("../MatterDefinition.js");
var import_elements = require("../../elements/index.js");
/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
const Thermostat = (0, import_elements.ClusterElement)(
  {
    name: "Thermostat",
    id: 513,
    asOf: "1.3",
    classification: "application",
    pics: "TSTAT",
    details: "This cluster provides an interface to the functionality of a thermostat.",
    xref: { document: "cluster", section: "4.3" }
  },
  (0, import_elements.AttributeElement)({ name: "ClusterRevision", id: 65533, type: "ClusterRevision", default: 6 }),
  (0, import_elements.AttributeElement)(
    { name: "FeatureMap", id: 65532, type: "FeatureMap", xref: { document: "cluster", section: "4.3.4" } },
    (0, import_elements.FieldElement)({
      name: "HEAT",
      conformance: "AUTO, O.a+",
      constraint: "0",
      description: "Heating",
      details: "Thermostat is capable of managing a heating device"
    }),
    (0, import_elements.FieldElement)({
      name: "COOL",
      conformance: "AUTO, O.a+",
      constraint: "1",
      description: "Cooling",
      details: "Thermostat is capable of managing a cooling device"
    }),
    (0, import_elements.FieldElement)({
      name: "OCC",
      conformance: "O",
      constraint: "2",
      description: "Occupancy",
      details: "Supports Occupied and Unoccupied setpoints"
    }),
    (0, import_elements.FieldElement)({
      name: "SCH",
      conformance: "O",
      constraint: "3",
      description: "ScheduleConfiguration",
      details: "Supports remote configuration of a weekly schedule of setpoint transitions"
    }),
    (0, import_elements.FieldElement)({
      name: "SB",
      conformance: "O",
      constraint: "4",
      description: "Setback",
      details: "Supports configurable setback (or span)"
    }),
    (0, import_elements.FieldElement)({
      name: "AUTO",
      conformance: "O",
      constraint: "5",
      description: "AutoMode",
      details: "Supports a System Mode of Auto"
    }),
    (0, import_elements.FieldElement)({
      name: "LTNE",
      conformance: "O",
      constraint: "6",
      description: "LocalTemperatureNotExposed",
      details: "This feature indicates that the Calculated Local Temperature used internally is unavailable to report externally, for example due to the temperature control being done by a separate subsystem which does not offer a view into the currently measured temperature, but allows setpoints to be provided.",
      xref: { document: "cluster", section: "4.3.4.1" }
    })
  ),
  (0, import_elements.AttributeElement)({
    name: "LocalTemperature",
    id: 0,
    type: "temperature",
    access: "R V",
    conformance: "M",
    default: null,
    quality: "X P",
    details: "Indicates the current Calculated Local Temperature, when available.\n  \u2022 If the LTNE feature is not supported:\n    \u25E6 If the LocalTemperatureCalibration is invalid or currently unavailable, the attribute shall       report null.\n    \u25E6 If the LocalTemperatureCalibration is valid, the attribute shall report that value.\n  \u2022 Otherwise, if the LTNE feature is supported, there is no feedback externally available for the     LocalTemperatureCalibration. In that case, the LocalTemperature attribute shall always report     null.",
    xref: { document: "cluster", section: "4.3.9.3" }
  }),
  (0, import_elements.AttributeElement)({
    name: "OutdoorTemperature",
    id: 1,
    type: "temperature",
    access: "R V",
    conformance: "O",
    default: null,
    quality: "X",
    details: "Indicates the outdoor temperature, as measured locally or remotely (over the network).",
    xref: { document: "cluster", section: "4.3.9.4" }
  }),
  (0, import_elements.AttributeElement)({
    name: "Occupancy",
    id: 2,
    type: "OccupancyBitmap",
    access: "R V",
    conformance: "OCC",
    constraint: "desc",
    default: 1,
    details: "Indicates whether the heated/cooled space is occupied or not, as measured locally or remotely (over the network).",
    xref: { document: "cluster", section: "4.3.9.5" }
  }),
  (0, import_elements.AttributeElement)({
    name: "AbsMinHeatSetpointLimit",
    id: 3,
    type: "temperature",
    access: "R V",
    conformance: "[HEAT]",
    constraint: "desc",
    default: { type: "celsius", value: 7 },
    quality: "F",
    xref: { document: "cluster", section: "4.3.9" }
  }),
  (0, import_elements.AttributeElement)({
    name: "AbsMaxHeatSetpointLimit",
    id: 4,
    type: "temperature",
    access: "R V",
    conformance: "[HEAT]",
    constraint: "desc",
    default: { type: "celsius", value: 30 },
    quality: "F",
    xref: { document: "cluster", section: "4.3.9" }
  }),
  (0, import_elements.AttributeElement)({
    name: "AbsMinCoolSetpointLimit",
    id: 5,
    type: "temperature",
    access: "R V",
    conformance: "[COOL]",
    constraint: "desc",
    default: { type: "celsius", value: 16 },
    quality: "F",
    details: "Indicates the absolute minimum level that the cooling setpoint may be set to. This is a limitation imposed by the manufacturer.\nRefer to Setpoint Limits for constraints",
    xref: { document: "cluster", section: "4.3.9.8" }
  }),
  (0, import_elements.AttributeElement)({
    name: "AbsMaxCoolSetpointLimit",
    id: 6,
    type: "temperature",
    access: "R V",
    conformance: "[COOL]",
    constraint: "desc",
    default: { type: "celsius", value: 32 },
    quality: "F",
    details: "Indicates the absolute maximum level that the cooling setpoint may be set to. This is a limitation imposed by the manufacturer.\nRefer to Setpoint Limits for constraints",
    xref: { document: "cluster", section: "4.3.9.9" }
  }),
  (0, import_elements.AttributeElement)({
    name: "PiCoolingDemand",
    id: 7,
    type: "uint8",
    access: "R V",
    conformance: "[COOL]",
    constraint: "0 to 100",
    quality: "P",
    details: "Indicates the level of cooling demanded by the PI (proportional integral) control loop in use by the thermostat (if any), in percent. This value is 0 when the thermostat is in \u201Coff\u201D or \u201Cheating\u201D mode.\nThis attribute is reported regularly and may be used to control a cooling device.",
    xref: { document: "cluster", section: "4.3.9.10" }
  }),
  (0, import_elements.AttributeElement)({
    name: "PiHeatingDemand",
    id: 8,
    type: "uint8",
    access: "R V",
    conformance: "[HEAT]",
    constraint: "0 to 100",
    quality: "P",
    details: "Indicates the level of heating demanded by the PI loop in percent. This value is 0 when the thermostat is in \u201Coff\u201D or \u201Ccooling\u201D mode.\nThis attribute is reported regularly and may be used to control a heating device.",
    xref: { document: "cluster", section: "4.3.9.11" }
  }),
  (0, import_elements.AttributeElement)({
    name: "HvacSystemTypeConfiguration",
    id: 9,
    type: "HVACSystemTypeBitmap",
    access: "R[W] VM",
    conformance: "D",
    constraint: "desc",
    default: 0,
    quality: "N",
    details: "Indicates the HVAC system type controlled by the thermostat. If the thermostat uses physical DIP switches to set these parameters, this information shall be available read-only from the DIP switches. If these parameters are set via software, there shall be read/write access in order to provide remote programming capability.",
    xref: { document: "cluster", section: "4.3.9.12" }
  }),
  (0, import_elements.AttributeElement)({
    name: "LocalTemperatureCalibration",
    id: 16,
    type: "SignedTemperature",
    access: "RW VM",
    conformance: "[!LTNE]",
    constraint: "-2.5\xB0C to 2.5\xB0C",
    default: { type: "celsius", value: 0 },
    quality: "N",
    details: "Indicates the offset the Thermostat server shall make to the measured temperature (locally or remotely) to adjust the Calculated Local Temperature prior to using, displaying or reporting it.\nThe purpose of this attribute is to adjust the calibration of the Thermostat server per the user\u2019s preferences (e.g., to match if there are multiple servers displaying different values for the same HVAC area) or compensate for variability amongst temperature sensors.\nIf a Thermostat client attempts to write LocalTemperatureCalibration attribute to an unsupported value (e.g., out of the range supported by the Thermostat server), the Thermostat server shall respond with a status of SUCCESS and set the value of LocalTemperatureCalibration to the upper or lower limit reached.",
    xref: { document: "cluster", section: "4.3.9.13" }
  }),
  (0, import_elements.AttributeElement)({
    name: "OccupiedCoolingSetpoint",
    id: 17,
    type: "temperature",
    access: "RW VO",
    conformance: "COOL",
    constraint: "desc",
    default: { type: "celsius", value: 26 },
    quality: "N S",
    details: "Indicates the cooling mode setpoint when the room is occupied.\nRefer to Setpoint Limits for constraints. If an attempt is made to set this attribute such that these constraints are violated, a response with the status code CONSTRAINT_ERROR shall be returned.\nIf the occupancy status of the room is unknown, this attribute shall be used as the cooling mode setpoint.",
    xref: { document: "cluster", section: "4.3.9.14" }
  }),
  (0, import_elements.AttributeElement)({
    name: "OccupiedHeatingSetpoint",
    id: 18,
    type: "temperature",
    access: "RW VO",
    conformance: "HEAT",
    constraint: "desc",
    default: { type: "celsius", value: 20 },
    quality: "N S",
    details: "Indicates the heating mode setpoint when the room is occupied.\nRefer to Setpoint Limits for constraints. If an attempt is made to set this attribute such that these constraints are violated, a response with the status code CONSTRAINT_ERROR shall be returned.\nIf the occupancy status of the room is unknown, this attribute shall be used as the heating mode setpoint.",
    xref: { document: "cluster", section: "4.3.9.15" }
  }),
  (0, import_elements.AttributeElement)({
    name: "UnoccupiedCoolingSetpoint",
    id: 19,
    type: "temperature",
    access: "RW VO",
    conformance: "COOL & OCC",
    constraint: "desc",
    default: { type: "celsius", value: 26 },
    quality: "N",
    details: "Indicates the cooling mode setpoint when the room is unoccupied.\nRefer to Setpoint Limits for constraints. If an attempt is made to set this attribute such that these constraints are violated, a response with the status code CONSTRAINT_ERROR shall be returned.\nIf the occupancy status of the room is unknown, this attribute shall NOT be used.",
    xref: { document: "cluster", section: "4.3.9.16" }
  }),
  (0, import_elements.AttributeElement)({
    name: "UnoccupiedHeatingSetpoint",
    id: 20,
    type: "temperature",
    access: "RW VO",
    conformance: "HEAT & OCC",
    constraint: "desc",
    default: { type: "celsius", value: 20 },
    quality: "N",
    details: "Indicates the heating mode setpoint when the room is unoccupied.\nRefer to Setpoint Limits for constraints. If an attempt is made to set this attribute such that these constraints are violated, a response with the status code CONSTRAINT_ERROR shall be returned.\nIf the occupancy status of the room is unknown, this attribute shall NOT be used.",
    xref: { document: "cluster", section: "4.3.9.17" }
  }),
  (0, import_elements.AttributeElement)({
    name: "MinHeatSetpointLimit",
    id: 21,
    type: "temperature",
    access: "RW VM",
    conformance: "[HEAT]",
    constraint: "desc",
    default: { type: "reference", name: "AbsMinHeatSetpointLimit" },
    quality: "N",
    details: "Indicates the minimum level that the heating setpoint may be set to.\nThis attribute, and the following three attributes, allow the user to define setpoint limits more constrictive than the manufacturer imposed ones. Limiting users (e.g., in a commercial building) to such setpoint limits can help conserve power.\nRefer to Setpoint Limits for constraints. If an attempt is made to set this attribute to a value which conflicts with setpoint values then those setpoints shall be adjusted by the minimum amount to permit this attribute to be set to the desired value. If an attempt is made to set this attribute to a value which is not consistent with the constraints and cannot be resolved by modifying setpoints then a response with the status code CONSTRAINT_ERROR shall be returned.",
    xref: { document: "cluster", section: "4.3.9.18" }
  }),
  (0, import_elements.AttributeElement)({
    name: "MaxHeatSetpointLimit",
    id: 22,
    type: "temperature",
    access: "RW VM",
    conformance: "[HEAT]",
    constraint: "desc",
    default: { type: "reference", name: "AbsMaxHeatSetpointLimit" },
    quality: "N",
    details: "Indicates the maximum level that the heating setpoint may be set to.\nRefer to Setpoint Limits for constraints. If an attempt is made to set this attribute to a value which conflicts with setpoint values then those setpoints shall be adjusted by the minimum amount to permit this attribute to be set to the desired value. If an attempt is made to set this attribute to a value which is not consistent with the constraints and cannot be resolved by modifying setpoints then a response with the status code CONSTRAINT_ERROR shall be returned.",
    xref: { document: "cluster", section: "4.3.9.19" }
  }),
  (0, import_elements.AttributeElement)({
    name: "MinCoolSetpointLimit",
    id: 23,
    type: "temperature",
    access: "RW VM",
    conformance: "[COOL]",
    constraint: "desc",
    default: { type: "reference", name: "AbsMinCoolSetpointLimit" },
    quality: "N",
    details: "Indicates the minimum level that the cooling setpoint may be set to.\nRefer to Setpoint Limits for constraints. If an attempt is made to set this attribute to a value which conflicts with setpoint values then those setpoints shall be adjusted by the minimum amount to permit this attribute to be set to the desired value. If an attempt is made to set this attribute to a value which is not consistent with the constraints and cannot be resolved by modifying setpoints then a response with the status code CONSTRAINT_ERROR shall be returned.",
    xref: { document: "cluster", section: "4.3.9.20" }
  }),
  (0, import_elements.AttributeElement)({
    name: "MaxCoolSetpointLimit",
    id: 24,
    type: "temperature",
    access: "RW VM",
    conformance: "[COOL]",
    constraint: "desc",
    default: { type: "reference", name: "AbsMaxCoolSetpointLimit" },
    quality: "N",
    details: "Indicates the maximum level that the cooling setpoint may be set to.\nRefer to Setpoint Limits for constraints. If an attempt is made to set this attribute to a value which conflicts with setpoint values then those setpoints shall be adjusted by the minimum amount to permit this attribute to be set to the desired value. If an attempt is made to set this attribute to a value which is not consistent with the constraints and cannot be resolved by modifying setpoints then a response with the status code CONSTRAINT_ERROR shall be returned.",
    xref: { document: "cluster", section: "4.3.9.21" }
  }),
  (0, import_elements.AttributeElement)({
    name: "MinSetpointDeadBand",
    id: 25,
    type: "SignedTemperature",
    access: "R[W] VM",
    conformance: "AUTO",
    constraint: "0\xB0C to 2.5\xB0C",
    default: { type: "celsius", value: 2 },
    quality: "N",
    details: "On devices which support the AUTO feature, this attribute shall indicate the minimum difference between the Heat Setpoint and the Cool Setpoint.\nRefer to Setpoint Limits for constraints. If an attempt is made to set this attribute to a value which conflicts with setpoint values then those setpoints shall be adjusted by the minimum amount to permit this attribute to be set to the desired value. If an attempt is made to set this attribute to a value which is not consistent with the constraints and cannot be resolved by modifying setpoints then a response with the status code CONSTRAINT_ERROR shall be returned.",
    xref: { document: "cluster", section: "4.3.9.22" }
  }),
  (0, import_elements.AttributeElement)({
    name: "RemoteSensing",
    id: 26,
    type: "RemoteSensingBitmap",
    access: "RW VM",
    conformance: "O",
    default: 0,
    quality: "N",
    details: "Indicates when the local temperature, outdoor temperature and occupancy are being sensed by remote networked sensors, rather than internal sensors.\nIf the LTNE feature is present in the server, the LocalTemperature RemoteSensing bit value shall always report a value of 0.\nIf the LocalTemperature RemoteSensing bit is written with a value of 1 when the LTNE feature is present, the write shall fail and the server shall report a CONSTRAINT_ERROR.",
    xref: { document: "cluster", section: "4.3.9.23" }
  }),
  (0, import_elements.AttributeElement)({
    name: "ControlSequenceOfOperation",
    id: 27,
    type: "ControlSequenceOfOperationEnum",
    access: "RW VM",
    conformance: "M",
    constraint: "desc",
    quality: "N",
    details: "Indicates the overall operating environment of the thermostat, and thus the possible system modes that the thermostat can operate in.",
    xref: { document: "cluster", section: "4.3.9.24" }
  }),
  (0, import_elements.AttributeElement)({
    name: "SystemMode",
    id: 28,
    type: "SystemModeEnum",
    access: "RW VM",
    conformance: "M",
    constraint: "desc",
    default: 1,
    quality: "N S",
    details: "Indicates the current operating mode of the thermostat. Its value shall be limited by the ControlSequenceOfOperation attribute.",
    xref: { document: "cluster", section: "4.3.9.25" }
  }),
  (0, import_elements.AttributeElement)({
    name: "ThermostatRunningMode",
    id: 30,
    type: "ThermostatRunningModeEnum",
    access: "R V",
    conformance: "[AUTO]",
    constraint: "desc",
    default: 0,
    details: "Indicates the running mode of the thermostat. This attribute uses the same values as SystemModeEnum but can only be Off, Cool or Heat. This attribute is intended to provide additional information when the thermostat\u2019s system mode is in auto mode.",
    xref: { document: "cluster", section: "4.3.9.27" }
  }),
  (0, import_elements.AttributeElement)({
    name: "StartOfWeek",
    id: 32,
    type: "StartOfWeekEnum",
    access: "R V",
    conformance: "SCH",
    constraint: "desc",
    quality: "F",
    details: "Indicates the day of the week that this thermostat considers to be the start of week for weekly setpoint scheduling.\nThis attribute may be able to be used as the base to determine if the device supports weekly scheduling by reading the attribute. Successful response means that the weekly scheduling is supported.",
    xref: { document: "cluster", section: "4.3.9.28" }
  }),
  (0, import_elements.AttributeElement)({
    name: "NumberOfWeeklyTransitions",
    id: 33,
    type: "uint8",
    access: "R V",
    conformance: "SCH",
    default: 0,
    quality: "F",
    details: "Indicates how many weekly schedule transitions the thermostat is capable of handling.",
    xref: { document: "cluster", section: "4.3.9.29" }
  }),
  (0, import_elements.AttributeElement)({
    name: "NumberOfDailyTransitions",
    id: 34,
    type: "uint8",
    access: "R V",
    conformance: "SCH",
    default: 0,
    quality: "F",
    details: "Indicates how many daily schedule transitions the thermostat is capable of handling.",
    xref: { document: "cluster", section: "4.3.9.30" }
  }),
  (0, import_elements.AttributeElement)({
    name: "TemperatureSetpointHold",
    id: 35,
    type: "TemperatureSetpointHoldEnum",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "N",
    details: "Indicates the temperature hold status on the thermostat. If hold status is on, the thermostat SHOULD maintain the temperature setpoint for the current mode until a system mode change. If hold status is off, the thermostat SHOULD follow the setpoint transitions specified by its internal scheduling program. If the thermostat supports setpoint hold for a specific duration, it SHOULD also implement the TemperatureSetpointHoldDuration attribute.",
    xref: { document: "cluster", section: "4.3.9.31" }
  }),
  (0, import_elements.AttributeElement)({
    name: "TemperatureSetpointHoldDuration",
    id: 36,
    type: "uint16",
    access: "RW VM",
    conformance: "O",
    constraint: "max 1440",
    default: null,
    quality: "X N",
    details: "Indicates the period in minutes for which a setpoint hold is active. Thermostats that support hold for a specified duration SHOULD implement this attribute. The null value indicates the field is unused. All other values are reserved.",
    xref: { document: "cluster", section: "4.3.9.32" }
  }),
  (0, import_elements.AttributeElement)({
    name: "ThermostatProgrammingOperationMode",
    id: 37,
    type: "ProgrammingOperationModeBitmap",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "P",
    details: "Indicates the operational state of the thermostat\u2019s programming. The thermostat shall modify its programming operation when this attribute is modified by a client and update this attribute when its programming operation is modified locally by a user. The thermostat may support more than one active ProgrammingOperationModeBitmap. For example, the thermostat may operate simultaneously in Schedule Programming Mode and Recovery Mode.\nThermostats which contain a schedule may use this attribute to control how that schedule is used, even if they do not support the ScheduleConfiguration feature.\nWhen ScheduleActive is not set, the setpoint is altered only by manual up/down changes at the thermostat or remotely, not by internal schedule programming.\nNOTE\nModifying the ScheduleActive bit does not clear or delete previous weekly schedule programming configurations.",
    xref: { document: "cluster", section: "4.3.9.33" }
  }),
  (0, import_elements.AttributeElement)({
    name: "ThermostatRunningState",
    id: 41,
    type: "RelayStateBitmap",
    access: "R V",
    conformance: "O",
    constraint: "desc",
    details: "Indicates the current relay state of the heat, cool, and fan relays. Unimplemented outputs shall be treated as if they were Off.",
    xref: { document: "cluster", section: "4.3.9.34" }
  }),
  (0, import_elements.AttributeElement)({
    name: "SetpointChangeSource",
    id: 48,
    type: "SetpointChangeSourceEnum",
    access: "R V",
    conformance: "O",
    constraint: "desc",
    default: 0,
    details: "Indicates the source of the current active OccupiedCoolingSetpoint or OccupiedHeatingSetpoint (i.e., who or what determined the current setpoint).\nThis attribute enables service providers to determine whether changes to setpoints were initiated due to occupant comfort, scheduled programming or some other source (e.g., electric utility or other service provider). Because automation services may initiate frequent setpoint changes, this attribute clearly differentiates the source of setpoint changes made at the thermostat.",
    xref: { document: "cluster", section: "4.3.9.35" }
  }),
  (0, import_elements.AttributeElement)({
    name: "SetpointChangeAmount",
    id: 49,
    type: "TemperatureDifference",
    access: "R V",
    conformance: "O",
    default: null,
    quality: "X",
    details: "Indicates the delta between the current active OccupiedCoolingSetpoint or OccupiedHeatingSetpoint and the previous active setpoint. This attribute is meant to accompany the SetpointChangeSource attribute; devices implementing SetpointChangeAmount SHOULD also implement SetpointChangeSource.\nThe null value indicates that the previous setpoint was unknown.",
    xref: { document: "cluster", section: "4.3.9.36" }
  }),
  (0, import_elements.AttributeElement)({
    name: "SetpointChangeSourceTimestamp",
    id: 50,
    type: "epoch-s",
    access: "R V",
    conformance: "O",
    default: 0,
    details: "Indicates the time in UTC at which the SetpointChangeAmount attribute change was recorded.",
    xref: { document: "cluster", section: "4.3.9.37" }
  }),
  (0, import_elements.AttributeElement)({
    name: "OccupiedSetback",
    id: 52,
    type: "UnsignedTemperature",
    access: "RW VM",
    conformance: "SB",
    constraint: "occupiedSetbackMin to occupiedSetbackMax",
    default: null,
    quality: "X N",
    details: "Indicates the amount that the Thermostat server will allow the Calculated Local Temperature to float above the OccupiedCoolingSetpoint (i.e., OccupiedCoolingSetpoint + OccupiedSetback) or below the OccupiedHeatingSetpoint setpoint (i.e., OccupiedHeatingSetpoint \u2013 OccupiedSetback) before initiating a state change to bring the temperature back to the user\u2019s desired setpoint. This attribute is sometimes also referred to as the \u201Cspan.\u201D\nThe purpose of this attribute is to allow remote configuration of the span between the desired setpoint and the measured temperature to help prevent over-cycling and reduce energy bills, though this may result in lower comfort on the part of some users.\nThe null value indicates the attribute is unused.\nIf the Thermostat client attempts to write OccupiedSetback to a value greater than OccupiedSetbackMax, the Thermostat server shall set its OccupiedSetback value to OccupiedSetbackMax and shall send a Write Attribute Response command with a Status Code field enumeration of SUCCESS response.\nIf the Thermostat client attempts to write OccupiedSetback to a value less than OccupiedSetbackMin, the Thermostat server shall set its OccupiedSetback value to OccupiedSetbackMin and shall send a Write Attribute Response command with a Status Code field enumeration of SUCCESS response.",
    xref: { document: "cluster", section: "4.3.9.38" }
  }),
  (0, import_elements.AttributeElement)({
    name: "OccupiedSetbackMin",
    id: 53,
    type: "UnsignedTemperature",
    access: "R V",
    conformance: "SB",
    constraint: "max occupiedSetbackMax",
    default: null,
    quality: "X F",
    details: "Indicates the minimum value that the Thermostat server will allow the OccupiedSetback attribute to be configured by a user.\nThe null value indicates the attribute is unused.",
    xref: { document: "cluster", section: "4.3.9.39" }
  }),
  (0, import_elements.AttributeElement)({
    name: "OccupiedSetbackMax",
    id: 54,
    type: "UnsignedTemperature",
    access: "R V",
    conformance: "SB",
    constraint: "occupiedSetbackMin to 25.4\xB0C",
    default: null,
    quality: "X F",
    details: "Indicates the maximum value that the Thermostat server will allow the OccupiedSetback attribute to be configured by a user.\nThe null value indicates the attribute is unused.",
    xref: { document: "cluster", section: "4.3.9.40" }
  }),
  (0, import_elements.AttributeElement)({
    name: "UnoccupiedSetback",
    id: 55,
    type: "UnsignedTemperature",
    access: "RW VM",
    conformance: "SB & OCC",
    constraint: "unoccupiedSetbackMin to unoccupiedSetbackMax",
    default: null,
    quality: "X N",
    details: "Indicates the amount that the Thermostat server will allow the Calculated Local Temperature to float above the UnoccupiedCoolingSetpoint (i.e., UnoccupiedCoolingSetpoint + UnoccupiedSetback) or below the UnoccupiedHeatingSetpoint setpoint (i.e., UnoccupiedHeatingSetpoint - UnoccupiedSetback) before initiating a state change to bring the temperature back to the user\u2019s desired setpoint. This attribute is sometimes also referred to as the \u201Cspan.\u201D\nThe purpose of this attribute is to allow remote configuration of the span between the desired setpoint and the measured temperature to help prevent over-cycling and reduce energy bills, though this may result in lower comfort on the part of some users.\nThe null value indicates the attribute is unused.\nIf the Thermostat client attempts to write UnoccupiedSetback to a value greater than UnoccupiedSetbackMax, the Thermostat server shall set its UnoccupiedSetback value to UnoccupiedSetbackMax and shall send a Write Attribute Response command with a Status Code field enumeration of SUCCESS response.\nIf the Thermostat client attempts to write UnoccupiedSetback to a value less than UnoccupiedSetbackMin, the Thermostat server shall set its UnoccupiedSetback value to UnoccupiedSetbackMin and shall send a Write Attribute Response command with a Status Code field enumeration of SUCCESS response.",
    xref: { document: "cluster", section: "4.3.9.41" }
  }),
  (0, import_elements.AttributeElement)({
    name: "UnoccupiedSetbackMin",
    id: 56,
    type: "UnsignedTemperature",
    access: "R V",
    conformance: "SB & OCC",
    constraint: "max unoccupiedSetbackMax",
    default: null,
    quality: "X F",
    details: "Indicates the minimum value that the Thermostat server will allow the UnoccupiedSetback attribute to be configured by a user.\nThe null value indicates the attribute is unused.",
    xref: { document: "cluster", section: "4.3.9.42" }
  }),
  (0, import_elements.AttributeElement)({
    name: "UnoccupiedSetbackMax",
    id: 57,
    type: "UnsignedTemperature",
    access: "R V",
    conformance: "SB & OCC",
    constraint: "unoccupiedSetbackMin to 25.4\xB0C",
    default: null,
    quality: "X F",
    details: "Indicates the maximum value that the Thermostat server will allow the UnoccupiedSetback attribute to be configured by a user.\nThe null value indicates the attribute is unused.",
    xref: { document: "cluster", section: "4.3.9.43" }
  }),
  (0, import_elements.AttributeElement)(
    {
      name: "EmergencyHeatDelta",
      id: 58,
      type: "UnsignedTemperature",
      access: "RW VM",
      conformance: "O",
      default: { type: "celsius", value: 25 },
      quality: "N",
      details: "Indicates the delta between the Calculated Local Temperature and the OccupiedHeatingSetpoint or UnoccupiedHeatingSetpoint attributes at which the Thermostat server will operate in emergency heat mode.\nIf the difference between the Calculated Local Temperature and OccupiedCoolingSetpoint or UnoccupiedCoolingSetpoint is greater than or equal to the EmergencyHeatDelta and the Thermostat server\u2019s SystemMode attribute is in a heating-related mode, then the Thermostat server shall immediately switch to the SystemMode attribute value that provides the highest stage of heating (e.g., emergency heat) and continue operating in that running state until the OccupiedHeatingSetpoint value is reached. For example:\n  \u2022 Calculated Local Temperature = 10.0\xB0C\n  \u2022 OccupiedHeatingSetpoint = 16.0\xB0C\n  \u2022 EmergencyHeatDelta = 2.0\xB0C\n\u21D2 OccupiedHeatingSetpoint - Calculated Local Temperature \u2265? EmergencyHeatDelta\n\u21D2 16\xB0C - 10\xB0C \u2265? 2\xB0C\n\u21D2 TRUE >>> Thermostat server changes its SystemMode to operate in 2nd stage or emergency heat mode\nThe purpose of this attribute is to provide Thermostat clients the ability to configure rapid heating when a setpoint is of a specified amount greater than the measured temperature. This allows the heated space to be quickly heated to the desired level set by the user.",
      xref: { document: "cluster", section: "4.3.9.44" }
    }
  ),
  (0, import_elements.AttributeElement)({
    name: "AcType",
    id: 64,
    type: "ACTypeEnum",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "N",
    details: "Indicates the type of Mini Split ACTypeEnum of Mini Split AC is defined depending on how Cooling and Heating condition is achieved by Mini Split AC.",
    xref: { document: "cluster", section: "4.3.9.45" }
  }),
  (0, import_elements.AttributeElement)({
    name: "AcCapacity",
    id: 65,
    type: "uint16",
    access: "RW VM",
    conformance: "O",
    default: 0,
    quality: "N",
    details: "Indicates capacity of Mini Split AC in terms of the format defined by the ACCapacityFormat attribute",
    xref: { document: "cluster", section: "4.3.9.46" }
  }),
  (0, import_elements.AttributeElement)({
    name: "AcRefrigerantType",
    id: 66,
    type: "ACRefrigerantTypeEnum",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "N",
    details: "Indicates type of refrigerant used within the Mini Split AC.",
    xref: { document: "cluster", section: "4.3.9.47" }
  }),
  (0, import_elements.AttributeElement)({
    name: "AcCompressorType",
    id: 67,
    type: "ACCompressorTypeEnum",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "N",
    details: "Indicates the type of compressor used within the Mini Split AC.",
    xref: { document: "cluster", section: "4.3.9.48" }
  }),
  (0, import_elements.AttributeElement)({
    name: "AcErrorCode",
    id: 68,
    type: "ACErrorCodeBitmap",
    access: "RW VM",
    conformance: "O",
    default: 0,
    details: "Indicates the type of errors encountered within the Mini Split AC.",
    xref: { document: "cluster", section: "4.3.9.49" }
  }),
  (0, import_elements.AttributeElement)({
    name: "AcLouverPosition",
    id: 69,
    type: "ACLouverPositionEnum",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "N",
    details: "Indicates the position of Louver on the AC.",
    xref: { document: "cluster", section: "4.3.9.50" }
  }),
  (0, import_elements.AttributeElement)({
    name: "AcCoilTemperature",
    id: 70,
    type: "temperature",
    access: "R V",
    conformance: "O",
    default: null,
    quality: "X",
    details: "Indicates the temperature of the AC coil, as measured locally or remotely (over the network).",
    xref: { document: "cluster", section: "4.3.9.51" }
  }),
  (0, import_elements.AttributeElement)({
    name: "AcCapacityFormat",
    id: 71,
    type: "ACCapacityFormatEnum",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "N",
    details: "Indicates the format for the ACCapacity attribute.",
    xref: { document: "cluster", section: "4.3.9.52" }
  }),
  (0, import_elements.CommandElement)(
    {
      name: "SetpointRaiseLower",
      id: 0,
      access: "O",
      conformance: "M",
      direction: "request",
      response: "status",
      details: "Upon receipt, the attributes for the indicated setpoint(s) shall have the amount specified in the Amount field added to them. If the resulting value is outside the limits imposed by MinCoolSetpointLimit, MaxCoolSetpointLimit, MinHeatSetpointLimit and MaxHeatSetpointLimit, the value is clamped to those limits. This is not considered an error condition.",
      xref: { document: "cluster", section: "4.3.10.1" }
    },
    (0, import_elements.FieldElement)({ name: "Mode", id: 0, type: "SetpointRaiseLowerModeEnum", conformance: "M", constraint: "desc" }),
    (0, import_elements.FieldElement)({ name: "Amount", id: 1, type: "int8", conformance: "M" })
  ),
  (0, import_elements.CommandElement)(
    {
      name: "SetWeeklySchedule",
      id: 1,
      access: "M",
      conformance: "SCH",
      direction: "request",
      response: "status",
      details: "Upon receipt, the weekly schedule for updating setpoints shall be stored in the thermostat and SHOULD begin at the time of receipt. A status code shall be sent in response.\nWhen a command is received that requires a total number of transitions greater than the device supports, the status of the response shall be INSUFFICIENT_SPACE.\nWhen any of the setpoints sent in the sequence is out of range (AbsMin/MaxSetPointLimit), or when the Mode for Sequence field includes a mode not supported by the device, the status of the response shall be CONSTRAINT_ERROR and no setpoints from the entire sequence SHOULD be used.\nWhen an overlapping transition is detected, the status of the response shall be FAILURE.\nWhen a device which does not support multiple days in a command receives a command with more than one bit set in the DayOfWeekForSequence field, or when a device which does not support multiple modes in a command receives a command with more than one bit set in the ModeForSequence field, or when the contents of the Transitions field does not agree with NumberOfTransitionsForSequence, DayOfWeekForSequence or ModeForSequence, the status of the response shall be INVALID_COMMAND.\nWhen the transitions could be added successfully, the status of the response shall be SUCCESS.\nThe set weekly schedule command is used to update the thermostat weekly setpoint schedule from a management system. If the thermostat already has a weekly setpoint schedule programmed, then it SHOULD replace each daily setpoint set as it receives the updates from the management system. For example, if the thermostat has 4 setpoints for every day of the week and is sent a Set Weekly Schedule command with one setpoint for Saturday then the thermostat SHOULD remove all 4 setpoints for Saturday and replace those with the updated setpoint but leave all other days unchanged. If the schedule is larger than what fits in one frame or contains more than 10 transitions, the schedule shall then be sent using multiple Set Weekly Schedule Commands.",
      xref: { document: "cluster", section: "4.3.10.4" }
    },
    (0, import_elements.FieldElement)({
      name: "NumberOfTransitionsForSequence",
      id: 0,
      type: "uint8",
      conformance: "M",
      details: "This field shall indicate how many individual transitions to expect for this sequence of commands. If a device supports more than 10 transitions in its schedule they can send this by sending more than 1 \u201CSet Weekly Schedule\u201D command, each containing the separate information that the device needs to set.",
      xref: { document: "cluster", section: "4.3.10.4.1" }
    }),
    (0, import_elements.FieldElement)({
      name: "DayOfWeekForSequence",
      id: 1,
      type: "ScheduleDayOfWeekBitmap",
      conformance: "M",
      constraint: "desc",
      details: "This field shall represent the day of the week at which all the transitions within the payload of the command SHOULD be associated to. This field is a bitmap and therefore the associated setpoint could overlap onto multiple days (you could set one transition time for all \u201Cweek days\u201D or whatever combination of days the implementation requests).\nEach setpoint transition will begin with the day of week for this transition. There can be up to 10 transitions for each command.",
      xref: { document: "cluster", section: "4.3.10.4.2" }
    }),
    (0, import_elements.FieldElement)({
      name: "ModeForSequence",
      id: 2,
      type: "ScheduleModeBitmap",
      conformance: "M",
      constraint: "desc",
      details: "This field shall indicate how the application decodes the setpoint fields of each transition in the Transitions list.\nIf the HeatSetpointPresent bit is On, the HeatSetpoint field shall NOT be null in every entry of the Transitions list.\nIf the HeatSetpointPresent bit is Off, the HeatSetpoint field shall be null in every entry of the Transitions list.\nIf the CoolSetpointPresent bit is On, the CoolSetpoint field shall NOT be null in every entry of the Transitions list.\nIf the CoolSetpointPresent bit is Off, the CoolSetpoint field shall be null in every entry of the Transitions list.\nAt least one of the bits in the Mode For Sequence byte shall be on.\nBoth bits must be respected, even if the HEAT or COOL feature is not supported, to ensure the command is decoded and handled correctly.",
      xref: { document: "cluster", section: "4.3.10.4.3" }
    }),
    (0, import_elements.FieldElement)(
      {
        name: "Transitions",
        id: 3,
        type: "list",
        conformance: "M",
        constraint: "max 10",
        details: "This field shall contain the list of setpoint transitions used to update the specified daily schedules",
        xref: { document: "cluster", section: "4.3.10.4.4" }
      },
      (0, import_elements.FieldElement)({ name: "entry", type: "WeeklyScheduleTransitionStruct" })
    )
  ),
  (0, import_elements.CommandElement)(
    {
      name: "GetWeeklySchedule",
      id: 2,
      access: "O",
      conformance: "SCH",
      direction: "request",
      response: "GetWeeklyScheduleResponse",
      details: "Upon receipt, the unit SHOULD send in return the Get Weekly Schedule Response command. The Days to Return and Mode to Return fields are defined as bitmask for the flexibility to support multiple days and multiple modes within one command. If thermostat cannot handle incoming command with multiple days and/or multiple modes within one command, it shall send default response of INVALID_COMMAND in return.",
      xref: { document: "cluster", section: "4.3.10.5" }
    },
    (0, import_elements.FieldElement)({
      name: "DaysToReturn",
      id: 0,
      type: "ScheduleDayOfWeekBitmap",
      conformance: "M",
      constraint: "desc",
      details: "This field shall indicate the number of days the client would like to return the setpoint values for and could be any combination of single days or the entire week.",
      xref: { document: "cluster", section: "4.3.10.5.1" }
    }),
    (0, import_elements.FieldElement)({
      name: "ModeToReturn",
      id: 1,
      type: "ScheduleModeBitmap",
      conformance: "M",
      constraint: "desc",
      details: "This field shall indicate the mode the client would like to return the set point values for and could be any combination of heat only, cool only or heat & cool.",
      xref: { document: "cluster", section: "4.3.10.5.2" }
    })
  ),
  (0, import_elements.CommandElement)(
    {
      name: "GetWeeklyScheduleResponse",
      id: 0,
      conformance: "SCH",
      direction: "response",
      details: "This command has the same payload format as the Set Weekly Schedule.",
      xref: { document: "cluster", section: "4.3.10.6" }
    },
    (0, import_elements.FieldElement)({ name: "NumberOfTransitionsForSequence", id: 0, type: "uint8", conformance: "M" }),
    (0, import_elements.FieldElement)({
      name: "DayOfWeekForSequence",
      id: 1,
      type: "ScheduleDayOfWeekBitmap",
      conformance: "M",
      constraint: "desc"
    }),
    (0, import_elements.FieldElement)({ name: "ModeForSequence", id: 2, type: "ScheduleModeBitmap", conformance: "M", constraint: "desc" }),
    (0, import_elements.FieldElement)(
      { name: "Transitions", id: 3, type: "list", conformance: "M", constraint: "max 10" },
      (0, import_elements.FieldElement)({ name: "entry", type: "WeeklyScheduleTransitionStruct" })
    )
  ),
  (0, import_elements.CommandElement)({
    name: "ClearWeeklySchedule",
    id: 3,
    access: "M",
    conformance: "SCH",
    direction: "request",
    response: "status",
    details: "This command is used to clear the weekly schedule. The Clear weekly schedule has no payload.\nUpon receipt, all transitions currently stored shall be cleared and a default response of SUCCESS shall be sent in response. There are no error responses to this command.",
    xref: { document: "cluster", section: "4.3.10.7" }
  }),
  (0, import_elements.CommandElement)(
    {
      name: "GetRelayStatusLogResponse",
      id: 1,
      conformance: "GetRelayStatusLog",
      direction: "response",
      details: "This command is sent from the thermostat cluster server in response to the Get Relay Status Log. After the Relay Status Entry is sent over the air to the requesting client, the specific entry will be cleared from the thermostat internal log.",
      xref: { document: "cluster", section: "4.3.10.9" }
    },
    (0, import_elements.FieldElement)({
      name: "TimeOfDay",
      id: 0,
      type: "uint16",
      conformance: "M",
      constraint: "max 1439",
      details: "This field shall indicate the sample time of the day, in minutes since midnight, when the relay status was captured for this associated log entry. For example, 6am will be represented by 360 minutes since midnight and 11:30pm will be represented by 1410 minutes since midnight.",
      xref: { document: "cluster", section: "4.3.10.9.1" }
    }),
    (0, import_elements.FieldElement)({
      name: "RelayStatus",
      id: 1,
      type: "RelayStateBitmap",
      conformance: "M",
      constraint: "desc",
      details: "This field shall indicate the relay status for thermostat when the log is captured. Each bit represents one relay used by the thermostat. If the bit is on, the associated relay is on and active. Each thermostat manufacturer can create its own mapping between the bitmap and the associated relay.",
      xref: { document: "cluster", section: "4.3.10.9.2" }
    }),
    (0, import_elements.FieldElement)({
      name: "LocalTemperature",
      id: 2,
      type: "temperature",
      conformance: "M",
      quality: "X",
      details: "This field shall indicate the LocalTemperature when the log is captured. The null value indicates that LocalTemperature was invalid or unavailable.",
      xref: { document: "cluster", section: "4.3.10.9.3" }
    }),
    (0, import_elements.FieldElement)({
      name: "HumidityInPercentage",
      id: 3,
      type: "uint8",
      conformance: "M",
      constraint: "0 to 100",
      quality: "X"
    }),
    (0, import_elements.FieldElement)({
      name: "SetPoint",
      id: 4,
      type: "temperature",
      conformance: "M",
      details: "This field shall indicate the target setpoint temperature when the log is captured.",
      xref: { document: "cluster", section: "4.3.10.9.5" }
    }),
    (0, import_elements.FieldElement)({
      name: "UnreadEntries",
      id: 5,
      type: "uint16",
      conformance: "M",
      details: "This field shall indicate the number of unread entries within the thermostat internal log system.",
      xref: { document: "cluster", section: "4.3.10.9.6" }
    })
  ),
  (0, import_elements.DatatypeElement)(
    {
      name: "TemperatureDifference",
      type: "int16",
      details: "This data type is derived from int16 and represents a temperature difference with a resolution of 0.01\xB0C.\n  \u2022 value = (temperature in \xB0C) x 100\n  \u2022 -4\xB0C \u21D2 -400\n  \u2022 123.45\xB0C \u21D2 12345\nThe full (non-null) range of -327.67\xB0C to 327.67\xB0C may be used.",
      xref: { document: "cluster", section: "4.3.8.1" }
    }
  ),
  (0, import_elements.DatatypeElement)(
    {
      name: "SignedTemperature",
      type: "int8",
      details: "This data type is derived from int8 and represents a temperature from -12.7\xB0C to 12.7\xB0C with a resolution of 0.1\xB0C.\n  \u2022 value = (temperature in \xB0C) x 10\n  \u2022 -4\xB0C \u21D2 -40\n  \u2022 12.3\xB0C \u21D2 123\nThis type is employed where compactness of representation is important and where the resolution and range are still satisfactory.",
      xref: { document: "cluster", section: "4.3.8.2" }
    }
  ),
  (0, import_elements.DatatypeElement)(
    {
      name: "UnsignedTemperature",
      type: "uint8",
      details: "This data type is derived from uint8 and represents a temperature from 0\xB0C to 25.5\xB0C with a resolution of 0.1\xB0C.\n  \u2022 value = (temperature in \xB0C) x 10\n  \u2022 4\xB0C \u21D2 40\n  \u2022 12.3\xB0C \u21D2 123\nThis type is employed where compactness of representation is important and where the resolution and range are still satisfactory.",
      xref: { document: "cluster", section: "4.3.8.3" }
    }
  ),
  (0, import_elements.DatatypeElement)(
    { name: "ACErrorCodeBitmap", type: "map32", xref: { document: "cluster", section: "4.3.8.4" } },
    (0, import_elements.FieldElement)({ name: "CompressorFail", constraint: "0", description: "Compressor Failure or Refrigerant Leakage" }),
    (0, import_elements.FieldElement)({ name: "RoomSensorFail", constraint: "1", description: "Room Temperature Sensor Failure" }),
    (0, import_elements.FieldElement)({ name: "OutdoorSensorFail", constraint: "2", description: "Outdoor Temperature Sensor Failure" }),
    (0, import_elements.FieldElement)({ name: "CoilSensorFail", constraint: "3", description: "Indoor Coil Temperature Sensor Failure" }),
    (0, import_elements.FieldElement)({ name: "FanFail", constraint: "4", description: "Fan Failure" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "AlarmCodeBitmap", type: "map8", xref: { document: "cluster", section: "4.3.8.5" } },
    (0, import_elements.FieldElement)({
      name: "Initialization",
      constraint: "0",
      description: "Initialization failure. The device failed to complete initialization at power-up."
    }),
    (0, import_elements.FieldElement)({ name: "Hardware", constraint: "1", description: "Hardware failure" }),
    (0, import_elements.FieldElement)({ name: "SelfCalibration", constraint: "2", description: "Self-calibration failure" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "HVACSystemTypeBitmap", type: "map8", xref: { document: "cluster", section: "4.3.8.6" } },
    (0, import_elements.FieldElement)(
      {
        name: "CoolingStage",
        constraint: "0 to 2",
        description: "Stage of cooling the HVAC system is using.",
        details: "These bits shall indicate what stage of cooling the HVAC system is using.\n  \u2022 00 = Cool Stage 1\n  \u2022 01 = Cool Stage 2\n  \u2022 10 = Cool Stage 3\n  \u2022 11 = Reserved",
        xref: { document: "cluster", section: "4.3.8.6.1" }
      }
    ),
    (0, import_elements.FieldElement)(
      {
        name: "HeatingStage",
        constraint: "2 to 4",
        description: "Stage of heating the HVAC system is using.",
        details: "These bits shall indicate what stage of heating the HVAC system is using.\n  \u2022 00 = Heat Stage 1\n  \u2022 01 = Heat Stage 2\n  \u2022 10 = Heat Stage 3\n  \u2022 11 = Reserved",
        xref: { document: "cluster", section: "4.3.8.6.2" }
      }
    ),
    (0, import_elements.FieldElement)(
      {
        name: "HeatingIsHeatPump",
        constraint: "4",
        description: "Is the heating type Heat Pump.",
        details: "This bit shall indicate whether the HVAC system is conventional or a heat pump.\n  \u2022 0 = Conventional\n  \u2022 1 = Heat Pump",
        xref: { document: "cluster", section: "4.3.8.6.3" }
      }
    ),
    (0, import_elements.FieldElement)(
      {
        name: "HeatingUsesFuel",
        constraint: "5",
        description: "Does the HVAC system use fuel.",
        details: "This bit shall indicate whether the HVAC system uses fuel.\n  \u2022 0 = Does not use fuel\n  \u2022 1 = Uses fuel",
        xref: { document: "cluster", section: "4.3.8.6.4" }
      }
    )
  ),
  (0, import_elements.DatatypeElement)(
    { name: "ProgrammingOperationModeBitmap", type: "map8", xref: { document: "cluster", section: "4.3.8.7" } },
    (0, import_elements.FieldElement)({
      name: "ScheduleActive",
      constraint: "0",
      description: "Schedule programming mode. This enables any programmed weekly schedule configurations."
    }),
    (0, import_elements.FieldElement)({ name: "AutoRecovery", constraint: "1", description: "Auto/recovery mode" }),
    (0, import_elements.FieldElement)({ name: "Economy", constraint: "2", description: "Economy/EnergyStar mode" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "RelayStateBitmap", type: "map16", xref: { document: "cluster", section: "4.3.8.8" } },
    (0, import_elements.FieldElement)({ name: "Heat", constraint: "0", description: "Heat State On" }),
    (0, import_elements.FieldElement)({ name: "Cool", constraint: "1", description: "Cool State On" }),
    (0, import_elements.FieldElement)({ name: "Fan", constraint: "2", description: "Fan State On" }),
    (0, import_elements.FieldElement)({ name: "HeatStage2", constraint: "3", description: "Heat 2nd State On" }),
    (0, import_elements.FieldElement)({ name: "CoolStage2", constraint: "4", description: "Cool 2nd State On" }),
    (0, import_elements.FieldElement)({ name: "FanStage2", constraint: "5", description: "Fan 2nd State On" }),
    (0, import_elements.FieldElement)({ name: "FanStage3", constraint: "6", description: "Fan 3rd Stage On" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "RemoteSensingBitmap", type: "map8", xref: { document: "cluster", section: "4.3.8.9" } },
    (0, import_elements.FieldElement)({
      name: "LocalTemperature",
      constraint: "0",
      description: "Calculated Local Temperature is derived from a remote node"
    }),
    (0, import_elements.FieldElement)({
      name: "OutdoorTemperature",
      constraint: "1",
      description: "OutdoorTemperature is derived from a remote node",
      details: "This bit shall be supported if the OutdoorTemperature attribute is supported.",
      xref: { document: "cluster", section: "4.3.8.9.1" }
    }),
    (0, import_elements.FieldElement)({ name: "Occupancy", constraint: "2", description: "Occupancy is derived from a remote node" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "ScheduleDayOfWeekBitmap", type: "map8", xref: { document: "cluster", section: "4.3.8.10" } },
    (0, import_elements.FieldElement)({ name: "Sunday", constraint: "0", description: "Sunday" }),
    (0, import_elements.FieldElement)({ name: "Monday", constraint: "1", description: "Monday" }),
    (0, import_elements.FieldElement)({ name: "Tuesday", constraint: "2", description: "Tuesday" }),
    (0, import_elements.FieldElement)({ name: "Wednesday", constraint: "3", description: "Wednesday" }),
    (0, import_elements.FieldElement)({ name: "Thursday", constraint: "4", description: "Thursday" }),
    (0, import_elements.FieldElement)({ name: "Friday", constraint: "5", description: "Friday" }),
    (0, import_elements.FieldElement)({ name: "Saturday", constraint: "6", description: "Saturday" }),
    (0, import_elements.FieldElement)({ name: "Away", constraint: "7", description: "Away or Vacation" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "ScheduleModeBitmap", type: "map8", xref: { document: "cluster", section: "4.3.8.11" } },
    (0, import_elements.FieldElement)({ name: "HeatSetpointPresent", constraint: "0", description: "Adjust Heat Setpoint" }),
    (0, import_elements.FieldElement)({ name: "CoolSetpointPresent", constraint: "1", description: "Adjust Cool Setpoint" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "ACCapacityFormatEnum", type: "enum8", xref: { document: "cluster", section: "4.3.8.12" } },
    (0, import_elements.FieldElement)({ name: "BtUh", id: 0, conformance: "O", description: "British Thermal Unit per Hour" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "ACCompressorTypeEnum", type: "enum8", xref: { document: "cluster", section: "4.3.8.13" } },
    (0, import_elements.FieldElement)({ name: "Unknown", id: 0, conformance: "O", description: "Unknown compressor type" }),
    (0, import_elements.FieldElement)({ name: "T1", id: 1, conformance: "O", description: "Max working ambient 43 \xB0C" }),
    (0, import_elements.FieldElement)({ name: "T2", id: 2, conformance: "O", description: "Max working ambient 35 \xB0C" }),
    (0, import_elements.FieldElement)({ name: "T3", id: 3, conformance: "O", description: "Max working ambient 52 \xB0C" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "ACLouverPositionEnum", type: "enum8", xref: { document: "cluster", section: "4.3.8.14" } },
    (0, import_elements.FieldElement)({ name: "Closed", id: 1, conformance: "O", description: "Fully Closed" }),
    (0, import_elements.FieldElement)({ name: "Open", id: 2, conformance: "O", description: "Fully Open" }),
    (0, import_elements.FieldElement)({ name: "Quarter", id: 3, conformance: "O", description: "Quarter Open" }),
    (0, import_elements.FieldElement)({ name: "Half", id: 4, conformance: "O", description: "Half Open" }),
    (0, import_elements.FieldElement)({ name: "ThreeQuarters", id: 5, conformance: "O", description: "Three Quarters Open" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "ACRefrigerantTypeEnum", type: "enum8", xref: { document: "cluster", section: "4.3.8.15" } },
    (0, import_elements.FieldElement)({ name: "Unknown", id: 0, conformance: "O", description: "Unknown Refrigerant Type" }),
    (0, import_elements.FieldElement)({ name: "R22", id: 1, conformance: "O", description: "R22 Refrigerant" }),
    (0, import_elements.FieldElement)({ name: "R410A", id: 2, conformance: "O", description: "R410a Refrigerant" }),
    (0, import_elements.FieldElement)({ name: "R407C", id: 3, conformance: "O", description: "R407c Refrigerant" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "ACTypeEnum", type: "enum8", xref: { document: "cluster", section: "4.3.8.16" } },
    (0, import_elements.FieldElement)({ name: "Unknown", id: 0, conformance: "O", description: "Unknown AC Type" }),
    (0, import_elements.FieldElement)({ name: "CoolingFixed", id: 1, conformance: "O", description: "Cooling and Fixed Speed" }),
    (0, import_elements.FieldElement)({ name: "HeatPumpFixed", id: 2, conformance: "O", description: "Heat Pump and Fixed Speed" }),
    (0, import_elements.FieldElement)({ name: "CoolingInverter", id: 3, conformance: "O", description: "Cooling and Inverter" }),
    (0, import_elements.FieldElement)({ name: "HeatPumpInverter", id: 4, conformance: "O", description: "Heat Pump and Inverter" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "SetpointRaiseLowerModeEnum", type: "enum8", xref: { document: "cluster", section: "4.3.8.17" } },
    (0, import_elements.FieldElement)({ name: "Heat", id: 0, conformance: "HEAT", description: "Adjust Heat Setpoint" }),
    (0, import_elements.FieldElement)({ name: "Cool", id: 1, conformance: "COOL", description: "Adjust Cool Setpoint" }),
    (0, import_elements.FieldElement)({ name: "Both", id: 2, conformance: "HEAT | COOL", description: "Adjust Heat Setpoint and Cool Setpoint" })
  ),
  (0, import_elements.DatatypeElement)(
    {
      name: "ControlSequenceOfOperationEnum",
      type: "enum8",
      details: "NOTE\nCoolingAndHeating\nA thermostat indicating it supports CoolingAndHeating (or CoolingAndHeatingWithReheat) SHOULD be able to request heating or cooling on demand and will usually support the Auto SystemMode.\nSystems which support cooling or heating, requiring external intervention to change modes or where the whole building must be in the same mode, SHOULD report CoolingOnly or HeatingOnly based on the current capability.",
      xref: { document: "cluster", section: "4.3.8.18" }
    },
    (0, import_elements.FieldElement)({ name: "CoolingOnly", id: 0, conformance: "[COOL]", description: "Heat and Emergency are not possible" }),
    (0, import_elements.FieldElement)({
      name: "CoolingWithReheat",
      id: 1,
      conformance: "[COOL]",
      description: "Heat and Emergency are not possible"
    }),
    (0, import_elements.FieldElement)({
      name: "HeatingOnly",
      id: 2,
      conformance: "[HEAT]",
      description: "Cool and precooling (see Terms) are not possible"
    }),
    (0, import_elements.FieldElement)({
      name: "HeatingWithReheat",
      id: 3,
      conformance: "[HEAT]",
      description: "Cool and precooling are not possible"
    }),
    (0, import_elements.FieldElement)({ name: "CoolingAndHeating", id: 4, conformance: "[HEAT & COOL]", description: "All modes are possible" }),
    (0, import_elements.FieldElement)({
      name: "CoolingAndHeatingWithReheat",
      id: 5,
      conformance: "[HEAT & COOL]",
      description: "All modes are possible"
    })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "SetpointChangeSourceEnum", type: "enum8", xref: { document: "cluster", section: "4.3.8.19" } },
    (0, import_elements.FieldElement)({
      name: "Manual",
      id: 0,
      conformance: "O",
      description: "Manual, user-initiated setpoint change via the thermostat"
    }),
    (0, import_elements.FieldElement)({
      name: "Schedule",
      id: 1,
      conformance: "[SCH]",
      description: "Schedule/internal programming-initiated setpoint change"
    }),
    (0, import_elements.FieldElement)({
      name: "External",
      id: 2,
      conformance: "O",
      description: "Externally-initiated setpoint change (e.g., DRLC cluster command, attribute write)"
    })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "StartOfWeekEnum", type: "enum8", xref: { document: "cluster", section: "4.3.8.20" } },
    (0, import_elements.FieldElement)({ name: "Sunday", id: 0, conformance: "M" }),
    (0, import_elements.FieldElement)({ name: "Monday", id: 1, conformance: "M" }),
    (0, import_elements.FieldElement)({ name: "Tuesday", id: 2, conformance: "M" }),
    (0, import_elements.FieldElement)({ name: "Wednesday", id: 3, conformance: "M" }),
    (0, import_elements.FieldElement)({ name: "Thursday", id: 4, conformance: "M" }),
    (0, import_elements.FieldElement)({ name: "Friday", id: 5, conformance: "M" }),
    (0, import_elements.FieldElement)({ name: "Saturday", id: 6, conformance: "M" })
  ),
  (0, import_elements.DatatypeElement)(
    {
      name: "SystemModeEnum",
      type: "enum8",
      details: "Table 35. Interpretation of Heat, Cool and Auto SystemModeEnum Values",
      xref: { document: "cluster", section: "4.3.8.21" }
    },
    (0, import_elements.FieldElement)({
      name: "Off",
      id: 0,
      conformance: "O",
      description: "The Thermostat does not generate demand for Cooling or Heating"
    }),
    (0, import_elements.FieldElement)({
      name: "Auto",
      id: 1,
      conformance: "AUTO",
      description: "Demand is generated for either Cooling or Heating, as required"
    }),
    (0, import_elements.FieldElement)({ name: "Cool", id: 3, conformance: "[COOL]", description: "Demand is only generated for Cooling" }),
    (0, import_elements.FieldElement)({ name: "Heat", id: 4, conformance: "[HEAT]", description: "Demand is only generated for Heating" }),
    (0, import_elements.FieldElement)({
      name: "EmergencyHeat",
      id: 5,
      conformance: "[HEAT]",
      description: "2nd stage heating is in use to achieve desired temperature"
    }),
    (0, import_elements.FieldElement)({ name: "Precooling", id: 6, conformance: "[COOL]", description: "(see Terms)" }),
    (0, import_elements.FieldElement)({ name: "FanOnly", id: 7, conformance: "O" }),
    (0, import_elements.FieldElement)({ name: "Dry", id: 8, conformance: "O" }),
    (0, import_elements.FieldElement)({ name: "Sleep", id: 9, conformance: "O" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "ThermostatRunningModeEnum", type: "enum8", xref: { document: "cluster", section: "4.3.8.22" } },
    (0, import_elements.FieldElement)({
      name: "Off",
      id: 0,
      conformance: "O",
      description: "The Thermostat does not generate demand for Cooling or Heating"
    }),
    (0, import_elements.FieldElement)({ name: "Cool", id: 3, conformance: "[COOL]", description: "Demand is only generated for Cooling" }),
    (0, import_elements.FieldElement)({ name: "Heat", id: 4, conformance: "[HEAT]", description: "Demand is only generated for Heating" })
  ),
  (0, import_elements.DatatypeElement)(
    { name: "TemperatureSetpointHoldEnum", type: "enum8", xref: { document: "cluster", section: "4.3.8.23" } },
    (0, import_elements.FieldElement)({ name: "SetpointHoldOff", id: 0, conformance: "M", description: "Follow scheduling program" }),
    (0, import_elements.FieldElement)({
      name: "SetpointHoldOn",
      id: 1,
      conformance: "M",
      description: "Maintain current setpoint, regardless of schedule transitions"
    })
  ),
  (0, import_elements.DatatypeElement)(
    {
      name: "WeeklyScheduleTransitionStruct",
      type: "struct",
      details: "This represents a single transition in a Thermostat schedule",
      xref: { document: "cluster", section: "4.3.8.24" }
    },
    (0, import_elements.FieldElement)({
      name: "TransitionTime",
      id: 0,
      type: "uint16",
      conformance: "M",
      constraint: "max 1439",
      details: "This field shall represent the start time of the schedule transition during the associated day. The time will be represented by a 16 bits unsigned integer to designate the minutes since midnight. For example, 6am will be represented by 360 minutes since midnight and 11:30pm will be represented by 1410 minutes since midnight.",
      xref: { document: "cluster", section: "4.3.8.24.1" }
    }),
    (0, import_elements.FieldElement)({
      name: "HeatSetpoint",
      id: 1,
      type: "temperature",
      conformance: "M",
      quality: "X",
      details: "This field shall represent the heat setpoint to be applied at this associated transition start time.",
      xref: { document: "cluster", section: "4.3.8.24.2" }
    }),
    (0, import_elements.FieldElement)({
      name: "CoolSetpoint",
      id: 2,
      type: "temperature",
      conformance: "M",
      quality: "X",
      details: "This field shall represent the cool setpoint to be applied at this associated transition start time.",
      xref: { document: "cluster", section: "4.3.8.24.3" }
    })
  ),
  (0, import_elements.DatatypeElement)({ name: "OccupancyBitmap", type: "OccupancySensing.OccupancyBitmap" })
);
import_MatterDefinition.MatterDefinition.children.push(Thermostat);
//# sourceMappingURL=Thermostat.js.map
