/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { MatterDefinition } from "../MatterDefinition.js";
import {
  ClusterElement as Cluster,
  AttributeElement as Attribute,
  FieldElement as Field,
  CommandElement as Command,
  DatatypeElement as Datatype
} from "../../elements/index.js";
const Thermostat = Cluster(
  { name: "Thermostat", id: 513, classification: "application" },
  Attribute({ name: "ClusterRevision", id: 65533, type: "ClusterRevision", default: 9 }),
  Attribute(
    { name: "FeatureMap", id: 65532, type: "FeatureMap" },
    Field({ name: "HEAT", conformance: "AUTO, O.a+", constraint: "0", title: "Heating" }),
    Field({ name: "COOL", conformance: "AUTO, O.a+", constraint: "1", title: "Cooling" }),
    Field({ name: "OCC", conformance: "O", constraint: "2", title: "Occupancy" }),
    Field({ name: "SCH", conformance: "O", constraint: "3", title: "ScheduleConfiguration" }),
    Field({ name: "SB", conformance: "O", constraint: "4", title: "Setback" }),
    Field({ name: "AUTO", conformance: "O", constraint: "5", title: "AutoMode" }),
    Field({ name: "LTNE", conformance: "O", constraint: "6", title: "LocalTemperatureNotExposed" }),
    Field({ name: "MSCH", conformance: "O", constraint: "7", title: "MatterScheduleConfiguration" }),
    Field({ name: "PRES", conformance: "O", constraint: "8", title: "Presets" })
  ),
  Attribute({ name: "LocalTemperature", id: 0, type: "temperature", access: "R V", conformance: "M", quality: "X P" }),
  Attribute({
    name: "OutdoorTemperature",
    id: 1,
    type: "temperature",
    access: "R V",
    conformance: "O",
    default: null,
    quality: "X"
  }),
  Attribute({ name: "Occupancy", id: 2, type: "OccupancyBitmap", access: "R V", conformance: "OCC", default: 1 }),
  Attribute({
    name: "AbsMinHeatSetpointLimit",
    id: 3,
    type: "temperature",
    access: "R V",
    conformance: "[HEAT]",
    constraint: "desc",
    default: { type: "celsius", value: 7 },
    quality: "F"
  }),
  Attribute({
    name: "AbsMaxHeatSetpointLimit",
    id: 4,
    type: "temperature",
    access: "R V",
    conformance: "[HEAT]",
    constraint: "desc",
    default: { type: "celsius", value: 30 },
    quality: "F"
  }),
  Attribute({
    name: "AbsMinCoolSetpointLimit",
    id: 5,
    type: "temperature",
    access: "R V",
    conformance: "[COOL]",
    constraint: "desc",
    default: { type: "celsius", value: 16 },
    quality: "F"
  }),
  Attribute({
    name: "AbsMaxCoolSetpointLimit",
    id: 6,
    type: "temperature",
    access: "R V",
    conformance: "[COOL]",
    constraint: "desc",
    default: { type: "celsius", value: 32 },
    quality: "F"
  }),
  Attribute({
    name: "PiCoolingDemand",
    id: 7,
    type: "uint8",
    access: "R V",
    conformance: "[COOL]",
    constraint: "0% to 100%",
    quality: "P"
  }),
  Attribute({
    name: "PiHeatingDemand",
    id: 8,
    type: "uint8",
    access: "R V",
    conformance: "[HEAT]",
    constraint: "0% to 100%",
    quality: "P"
  }),
  Attribute({
    name: "HvacSystemTypeConfiguration",
    id: 9,
    type: "HVACSystemTypeBitmap",
    access: "R[W] VM",
    conformance: "D",
    constraint: "desc",
    default: 0,
    quality: "N"
  }),
  Attribute({
    name: "LocalTemperatureCalibration",
    id: 16,
    type: "SignedTemperature",
    access: "RW VM",
    conformance: "[!LTNE]",
    default: { type: "celsius", value: 0 },
    quality: "N"
  }),
  Attribute({
    name: "OccupiedCoolingSetpoint",
    id: 17,
    type: "temperature",
    access: "RW VO",
    conformance: "COOL",
    constraint: "desc",
    default: { type: "celsius", value: 26 },
    quality: "N"
  }),
  Attribute({
    name: "OccupiedHeatingSetpoint",
    id: 18,
    type: "temperature",
    access: "RW VO",
    conformance: "HEAT",
    constraint: "desc",
    default: { type: "celsius", value: 20 },
    quality: "N"
  }),
  Attribute({
    name: "UnoccupiedCoolingSetpoint",
    id: 19,
    type: "temperature",
    access: "RW VO",
    conformance: "COOL & OCC",
    constraint: "desc",
    default: { type: "celsius", value: 26 },
    quality: "N"
  }),
  Attribute({
    name: "UnoccupiedHeatingSetpoint",
    id: 20,
    type: "temperature",
    access: "RW VO",
    conformance: "HEAT & OCC",
    constraint: "desc",
    default: { type: "celsius", value: 20 },
    quality: "N"
  }),
  Attribute({
    name: "MinHeatSetpointLimit",
    id: 21,
    type: "temperature",
    access: "RW VM",
    conformance: "[HEAT]",
    constraint: "desc",
    default: { type: "reference", name: "AbsMinHeatSetpointLimit" },
    quality: "N"
  }),
  Attribute({
    name: "MaxHeatSetpointLimit",
    id: 22,
    type: "temperature",
    access: "RW VM",
    conformance: "[HEAT]",
    constraint: "desc",
    default: { type: "reference", name: "AbsMaxHeatSetpointLimit" },
    quality: "N"
  }),
  Attribute({
    name: "MinCoolSetpointLimit",
    id: 23,
    type: "temperature",
    access: "RW VM",
    conformance: "[COOL]",
    constraint: "desc",
    default: { type: "reference", name: "AbsMinCoolSetpointLimit" },
    quality: "N"
  }),
  Attribute({
    name: "MaxCoolSetpointLimit",
    id: 24,
    type: "temperature",
    access: "RW VM",
    conformance: "[COOL]",
    constraint: "desc",
    default: { type: "reference", name: "AbsMaxCoolSetpointLimit" },
    quality: "N"
  }),
  Attribute({
    name: "MinSetpointDeadBand",
    id: 25,
    type: "SignedTemperature",
    access: "R[W] VM",
    conformance: "AUTO",
    constraint: "0 to 12.7\xB0C",
    default: { type: "celsius", value: 2 },
    quality: "N"
  }),
  Attribute({
    name: "RemoteSensing",
    id: 26,
    type: "RemoteSensingBitmap",
    access: "RW VM",
    conformance: "O",
    default: 0,
    quality: "N"
  }),
  Attribute({
    name: "ControlSequenceOfOperation",
    id: 27,
    type: "ControlSequenceOfOperationEnum",
    access: "RW VM",
    conformance: "M",
    constraint: "desc",
    quality: "N"
  }),
  Attribute({
    name: "SystemMode",
    id: 28,
    type: "SystemModeEnum",
    access: "RW VM",
    conformance: "M",
    constraint: "desc",
    quality: "N"
  }),
  Attribute({
    name: "ThermostatRunningMode",
    id: 30,
    type: "ThermostatRunningModeEnum",
    access: "R V",
    conformance: "[AUTO]",
    constraint: "desc",
    default: 0
  }),
  Attribute({
    name: "StartOfWeek",
    id: 32,
    type: "StartOfWeekEnum",
    access: "R V",
    conformance: "SCH",
    constraint: "desc",
    quality: "F"
  }),
  Attribute({
    name: "NumberOfWeeklyTransitions",
    id: 33,
    type: "uint8",
    access: "R V",
    conformance: "SCH",
    default: 0,
    quality: "F"
  }),
  Attribute({
    name: "NumberOfDailyTransitions",
    id: 34,
    type: "uint8",
    access: "R V",
    conformance: "SCH",
    default: 0,
    quality: "F"
  }),
  Attribute({
    name: "TemperatureSetpointHold",
    id: 35,
    type: "TemperatureSetpointHoldEnum",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "N"
  }),
  Attribute({
    name: "TemperatureSetpointHoldDuration",
    id: 36,
    type: "uint16",
    access: "RW VM",
    conformance: "O",
    constraint: "max 1440",
    default: null,
    quality: "X N"
  }),
  Attribute({
    name: "ThermostatProgrammingOperationMode",
    id: 37,
    type: "ProgrammingOperationModeBitmap",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "P"
  }),
  Attribute({
    name: "ThermostatRunningState",
    id: 41,
    type: "RelayStateBitmap",
    access: "R V",
    conformance: "O",
    constraint: "desc"
  }),
  Attribute({
    name: "SetpointChangeSource",
    id: 48,
    type: "SetpointChangeSourceEnum",
    access: "R V",
    conformance: "O",
    constraint: "desc",
    default: 0
  }),
  Attribute({
    name: "SetpointChangeAmount",
    id: 49,
    type: "TemperatureDifference",
    access: "R V",
    conformance: "O",
    default: null,
    quality: "X"
  }),
  Attribute({ name: "SetpointChangeSourceTimestamp", id: 50, type: "epoch-s", access: "R V", conformance: "O", default: 0 }),
  Attribute({
    name: "OccupiedSetback",
    id: 52,
    type: "UnsignedTemperature",
    access: "RW VM",
    conformance: "SB",
    constraint: "occupiedSetbackMin to occupiedSetbackMax",
    default: null,
    quality: "X N"
  }),
  Attribute({
    name: "OccupiedSetbackMin",
    id: 53,
    type: "UnsignedTemperature",
    access: "R V",
    conformance: "SB",
    constraint: "max occupiedSetbackMax",
    default: null,
    quality: "X F"
  }),
  Attribute({
    name: "OccupiedSetbackMax",
    id: 54,
    type: "UnsignedTemperature",
    access: "R V",
    conformance: "SB",
    constraint: "occupiedSetbackMin to 25.4\xB0C",
    default: null,
    quality: "X F"
  }),
  Attribute({
    name: "UnoccupiedSetback",
    id: 55,
    type: "UnsignedTemperature",
    access: "RW VM",
    conformance: "SB & OCC",
    constraint: "unoccupiedSetbackMin to unoccupiedSetbackMax",
    default: null,
    quality: "X N"
  }),
  Attribute({
    name: "UnoccupiedSetbackMin",
    id: 56,
    type: "UnsignedTemperature",
    access: "R V",
    conformance: "SB & OCC",
    constraint: "max unoccupiedSetbackMax",
    default: null,
    quality: "X F"
  }),
  Attribute({
    name: "UnoccupiedSetbackMax",
    id: 57,
    type: "UnsignedTemperature",
    access: "R V",
    conformance: "SB & OCC",
    constraint: "unoccupiedSetbackMin to 25.4\xB0C",
    default: null,
    quality: "X F"
  }),
  Attribute({
    name: "EmergencyHeatDelta",
    id: 58,
    type: "UnsignedTemperature",
    access: "RW VM",
    conformance: "O",
    default: { type: "celsius", value: 25 },
    quality: "N"
  }),
  Attribute({
    name: "AcType",
    id: 64,
    type: "ACTypeEnum",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "N"
  }),
  Attribute(
    { name: "AcCapacity", id: 65, type: "uint16", access: "RW VM", conformance: "O", default: 0, quality: "N" }
  ),
  Attribute({
    name: "AcRefrigerantType",
    id: 66,
    type: "ACRefrigerantTypeEnum",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "N"
  }),
  Attribute({
    name: "AcCompressorType",
    id: 67,
    type: "ACCompressorTypeEnum",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "N"
  }),
  Attribute({ name: "AcErrorCode", id: 68, type: "ACErrorCodeBitmap", access: "RW VM", conformance: "O", default: 0 }),
  Attribute({
    name: "AcLouverPosition",
    id: 69,
    type: "ACLouverPositionEnum",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "N"
  }),
  Attribute({
    name: "AcCoilTemperature",
    id: 70,
    type: "temperature",
    access: "R V",
    conformance: "O",
    default: null,
    quality: "X"
  }),
  Attribute({
    name: "AcCapacityFormat",
    id: 71,
    type: "ACCapacityFormatEnum",
    access: "RW VM",
    conformance: "O",
    constraint: "desc",
    default: 0,
    quality: "N"
  }),
  Attribute(
    {
      name: "PresetTypes",
      id: 72,
      type: "list",
      access: "R V",
      conformance: "PRES",
      constraint: "desc",
      quality: "F"
    },
    Field({ name: "entry", type: "PresetTypeStruct" })
  ),
  Attribute(
    {
      name: "ScheduleTypes",
      id: 73,
      type: "list",
      access: "R V",
      conformance: "MSCH",
      constraint: "desc",
      quality: "F"
    },
    Field({ name: "entry", type: "ScheduleTypeStruct" })
  ),
  Attribute({ name: "NumberOfPresets", id: 74, type: "uint8", access: "R V", conformance: "PRES", default: 0, quality: "F" }),
  Attribute({
    name: "NumberOfSchedules",
    id: 75,
    type: "uint8",
    access: "R V",
    conformance: "MSCH",
    default: 0,
    quality: "F"
  }),
  Attribute({
    name: "NumberOfScheduleTransitions",
    id: 76,
    type: "uint8",
    access: "R V",
    conformance: "MSCH",
    default: 0,
    quality: "F"
  }),
  Attribute({
    name: "NumberOfScheduleTransitionPerDay",
    id: 77,
    type: "uint8",
    access: "R V",
    conformance: "MSCH",
    default: null,
    quality: "X F"
  }),
  Attribute({
    name: "ActivePresetHandle",
    id: 78,
    type: "octstr",
    access: "R V",
    conformance: "PRES",
    constraint: "max 16",
    default: null,
    quality: "X N"
  }),
  Attribute({
    name: "ActiveScheduleHandle",
    id: 79,
    type: "octstr",
    access: "R V",
    conformance: "MSCH",
    constraint: "max 16",
    default: null,
    quality: "X N"
  }),
  Attribute(
    {
      name: "Presets",
      id: 80,
      type: "list",
      access: "RW VM",
      conformance: "PRES",
      constraint: "max numberOfPresets",
      default: [],
      quality: "N T"
    },
    Field({ name: "entry", type: "PresetStruct" })
  ),
  Attribute(
    {
      name: "Schedules",
      id: 81,
      type: "list",
      access: "RW VM",
      conformance: "MSCH",
      constraint: "desc",
      default: [],
      quality: "N T"
    },
    Field({ name: "entry", type: "ScheduleStruct" })
  ),
  Attribute({
    name: "SetpointHoldExpiryTimestamp",
    id: 82,
    type: "epoch-s",
    access: "R V",
    conformance: "O",
    default: null,
    quality: "X N"
  }),
  Command(
    {
      name: "SetpointRaiseLower",
      id: 0,
      access: "O",
      conformance: "M",
      direction: "request",
      response: "status"
    },
    Field({ name: "Mode", id: 0, type: "SetpointRaiseLowerModeEnum", conformance: "M", constraint: "desc" }),
    Field({ name: "Amount", id: 1, type: "int8", conformance: "M" })
  ),
  Command(
    {
      name: "SetWeeklySchedule",
      id: 1,
      access: "M",
      conformance: "SCH",
      direction: "request",
      response: "status"
    },
    Field({ name: "NumberOfTransitionsForSequence", id: 0, type: "uint8", conformance: "M" }),
    Field({
      name: "DayOfWeekForSequence",
      id: 1,
      type: "ScheduleDayOfWeekBitmap",
      conformance: "M",
      constraint: "desc"
    }),
    Field({ name: "ModeForSequence", id: 2, type: "ScheduleModeBitmap", conformance: "M", constraint: "desc" }),
    Field(
      { name: "Transitions", id: 3, type: "list", conformance: "M", constraint: "max 10" },
      Field({ name: "entry", type: "WeeklyScheduleTransitionStruct" })
    )
  ),
  Command(
    {
      name: "GetWeeklySchedule",
      id: 2,
      access: "O",
      conformance: "SCH",
      direction: "request",
      response: "GetWeeklyScheduleResponse"
    },
    Field({ name: "DaysToReturn", id: 0, type: "ScheduleDayOfWeekBitmap", conformance: "M", constraint: "desc" }),
    Field({ name: "ModeToReturn", id: 1, type: "ScheduleModeBitmap", conformance: "M", constraint: "desc" })
  ),
  Command(
    { name: "GetWeeklyScheduleResponse", id: 0, conformance: "SCH", direction: "response" },
    Field({ name: "NumberOfTransitionsForSequence", id: 0, type: "uint8", conformance: "M" }),
    Field({
      name: "DayOfWeekForSequence",
      id: 1,
      type: "ScheduleDayOfWeekBitmap",
      conformance: "M",
      constraint: "desc"
    }),
    Field({ name: "ModeForSequence", id: 2, type: "ScheduleModeBitmap", conformance: "M", constraint: "desc" }),
    Field(
      { name: "Transitions", id: 3, type: "list", conformance: "M", constraint: "max 10" },
      Field({ name: "entry", type: "WeeklyScheduleTransitionStruct" })
    )
  ),
  Command({ name: "ClearWeeklySchedule", id: 3, access: "M", conformance: "SCH", direction: "request", response: "status" }),
  Command(
    { name: "GetRelayStatusLogResponse", id: 1, conformance: "GetRelayStatusLog", direction: "response" },
    Field({ name: "TimeOfDay", id: 0, type: "uint16", conformance: "M", constraint: "max 1439" }),
    Field({ name: "RelayStatus", id: 1, type: "RelayStateBitmap", conformance: "M", constraint: "desc" }),
    Field({ name: "LocalTemperature", id: 2, type: "temperature", conformance: "M", quality: "X" }),
    Field({
      name: "HumidityInPercentage",
      id: 3,
      type: "uint8",
      conformance: "M",
      constraint: "0% to 100%",
      quality: "X"
    }),
    Field({ name: "Setpoint", id: 4, type: "temperature", conformance: "M" }),
    Field({ name: "UnreadEntries", id: 5, type: "uint16", conformance: "M" })
  ),
  Command(
    {
      name: "SetActiveScheduleRequest",
      id: 5,
      access: "O",
      conformance: "MSCH",
      direction: "request",
      response: "status"
    },
    Field({ name: "ScheduleHandle", id: 0, type: "octstr", conformance: "M", constraint: "max 16" })
  ),
  Command(
    {
      name: "SetActivePresetRequest",
      id: 6,
      access: "O",
      conformance: "PRES",
      direction: "request",
      response: "status"
    },
    Field({ name: "PresetHandle", id: 0, type: "octstr", conformance: "M", constraint: "max 16", quality: "X" })
  ),
  Command(
    { name: "AtomicRequest", id: 254, access: "O", direction: "request", response: "AtomicResponse" },
    Field(
      { name: "RequestType", id: 0, type: "enum8", conformance: "M" },
      Field({ name: "BeginWrite", id: 0 }),
      Field({ name: "CommitWrite", id: 1 }),
      Field({ name: "RollbackWrite", id: 2 })
    ),
    Field(
      { name: "AttributeRequests", id: 1, type: "list", conformance: "M" },
      Field({ name: "entry", type: "attrib-id" })
    ),
    Field({ name: "Timeout", id: 2, type: "uint16", conformance: "O" })
  ),
  Command(
    { name: "AtomicResponse", id: 253, direction: "response" },
    Field({ name: "StatusCode", id: 0, type: "status", conformance: "M" }),
    Field(
      { name: "AttributeStatus", id: 1, type: "list", conformance: "M" },
      Field(
        { name: "entry", type: "struct" },
        Field({ name: "AttributeId", id: 0, type: "attrib-id", conformance: "M" }),
        Field({ name: "StatusCode", id: 1, type: "status", conformance: "M" })
      )
    ),
    Field({ name: "Timeout", id: 2, type: "uint16", conformance: "O" })
  ),
  Datatype({ name: "TemperatureDifference", type: "int16" }),
  Datatype({ name: "SignedTemperature", type: "int8" }),
  Datatype({ name: "UnsignedTemperature", type: "uint8" }),
  Datatype(
    { name: "ACErrorCodeBitmap", type: "map32" },
    Field({ name: "CompressorFail", constraint: "0" }),
    Field({ name: "RoomSensorFail", constraint: "1" }),
    Field({ name: "OutdoorSensorFail", constraint: "2" }),
    Field({ name: "CoilSensorFail", constraint: "3" }),
    Field({ name: "FanFail", constraint: "4" })
  ),
  Datatype(
    { name: "HVACSystemTypeBitmap", type: "map8" },
    Field({ name: "CoolingStage", constraint: "0 to 1" }),
    Field({ name: "HeatingStage", constraint: "2 to 3" }),
    Field({ name: "HeatingIsHeatPump", constraint: "4" }),
    Field({ name: "HeatingUsesFuel", constraint: "5" })
  ),
  Datatype({ name: "OccupancyBitmap", type: "map8" }, Field({ name: "Occupied", constraint: "0" })),
  Datatype(
    { name: "PresetTypeFeaturesBitmap", type: "map16" },
    Field({ name: "Automatic", constraint: "0" }),
    Field({ name: "SupportsNames", constraint: "1" })
  ),
  Datatype(
    { name: "ProgrammingOperationModeBitmap", type: "map8" },
    Field({ name: "ScheduleActive", constraint: "0" }),
    Field({ name: "AutoRecovery", constraint: "1" }),
    Field({ name: "Economy", constraint: "2" })
  ),
  Datatype(
    { name: "RelayStateBitmap", type: "map16" },
    Field({ name: "Heat", constraint: "0" }),
    Field({ name: "Cool", constraint: "1" }),
    Field({ name: "Fan", constraint: "2" }),
    Field({ name: "HeatStage2", constraint: "3" }),
    Field({ name: "CoolStage2", constraint: "4" }),
    Field({ name: "FanStage2", constraint: "5" }),
    Field({ name: "FanStage3", constraint: "6" })
  ),
  Datatype(
    { name: "RemoteSensingBitmap", type: "map8" },
    Field({ name: "LocalTemperature", constraint: "0" }),
    Field({ name: "OutdoorTemperature", constraint: "1" }),
    Field({ name: "Occupancy", constraint: "2" })
  ),
  Datatype(
    { name: "ScheduleTypeFeaturesBitmap", type: "map16" },
    Field({ name: "SupportsPresets", constraint: "0" }),
    Field({ name: "SupportsSetpoints", constraint: "1" }),
    Field({ name: "SupportsNames", constraint: "2" }),
    Field({ name: "SupportsOff", constraint: "3" })
  ),
  Datatype(
    { name: "ScheduleDayOfWeekBitmap", type: "map8" },
    Field({ name: "Sunday", constraint: "0" }),
    Field({ name: "Monday", constraint: "1" }),
    Field({ name: "Tuesday", constraint: "2" }),
    Field({ name: "Wednesday", constraint: "3" }),
    Field({ name: "Thursday", constraint: "4" }),
    Field({ name: "Friday", constraint: "5" }),
    Field({ name: "Saturday", constraint: "6" }),
    Field({ name: "Away", constraint: "7" })
  ),
  Datatype(
    { name: "ScheduleModeBitmap", type: "map8" },
    Field({ name: "HeatSetpointPresent", constraint: "0" }),
    Field({ name: "CoolSetpointPresent", constraint: "1" })
  ),
  Datatype({ name: "ACCapacityFormatEnum", type: "enum8" }, Field({ name: "BtUh", id: 0, conformance: "O" })),
  Datatype(
    { name: "ACCompressorTypeEnum", type: "enum8" },
    Field({ name: "Unknown", id: 0, conformance: "O" }),
    Field({ name: "T1", id: 1, conformance: "O" }),
    Field({ name: "T2", id: 2, conformance: "O" }),
    Field({ name: "T3", id: 3, conformance: "O" })
  ),
  Datatype(
    { name: "ACLouverPositionEnum", type: "enum8" },
    Field({ name: "Closed", id: 1, conformance: "O" }),
    Field({ name: "Open", id: 2, conformance: "O" }),
    Field({ name: "Quarter", id: 3, conformance: "O" }),
    Field({ name: "Half", id: 4, conformance: "O" }),
    Field({ name: "ThreeQuarters", id: 5, conformance: "O" })
  ),
  Datatype(
    { name: "ACRefrigerantTypeEnum", type: "enum8" },
    Field({ name: "Unknown", id: 0, conformance: "O" }),
    Field({ name: "R22", id: 1, conformance: "O" }),
    Field({ name: "R410A", id: 2, conformance: "O" }),
    Field({ name: "R407C", id: 3, conformance: "O" })
  ),
  Datatype(
    { name: "ACTypeEnum", type: "enum8" },
    Field({ name: "Unknown", id: 0, conformance: "O" }),
    Field({ name: "CoolingFixed", id: 1, conformance: "O" }),
    Field({ name: "HeatPumpFixed", id: 2, conformance: "O" }),
    Field({ name: "CoolingInverter", id: 3, conformance: "O" }),
    Field({ name: "HeatPumpInverter", id: 4, conformance: "O" })
  ),
  Datatype(
    { name: "SetpointRaiseLowerModeEnum", type: "enum8" },
    Field({ name: "Heat", id: 0, conformance: "HEAT" }),
    Field({ name: "Cool", id: 1, conformance: "COOL" }),
    Field({ name: "Both", id: 2, conformance: "HEAT | COOL" })
  ),
  Datatype(
    { name: "ControlSequenceOfOperationEnum", type: "enum8" },
    Field({ name: "CoolingOnly", id: 0, conformance: "[COOL]" }),
    Field({ name: "CoolingWithReheat", id: 1, conformance: "[COOL]" }),
    Field({ name: "HeatingOnly", id: 2, conformance: "[HEAT]" }),
    Field({ name: "HeatingWithReheat", id: 3, conformance: "[HEAT]" }),
    Field({ name: "CoolingAndHeating", id: 4, conformance: "[HEAT & COOL]" }),
    Field({ name: "CoolingAndHeatingWithReheat", id: 5, conformance: "[HEAT & COOL]" })
  ),
  Datatype(
    { name: "PresetScenarioEnum", type: "enum8" },
    Field({ name: "Occupied", id: 1, conformance: "M" }),
    Field({ name: "Unoccupied", id: 2, conformance: "M" }),
    Field({ name: "Sleep", id: 3, conformance: "M" }),
    Field({ name: "Wake", id: 4, conformance: "M" }),
    Field({ name: "Vacation", id: 5, conformance: "M" }),
    Field({ name: "GoingToSleep", id: 6, conformance: "M" }),
    Field({ name: "UserDefined", id: 254, conformance: "M" })
  ),
  Datatype(
    { name: "SetpointChangeSourceEnum", type: "enum8" },
    Field({ name: "Manual", id: 0, conformance: "O" }),
    Field({ name: "Schedule", id: 1, conformance: "[SCH | MSCH]" }),
    Field({ name: "External", id: 2, conformance: "O" })
  ),
  Datatype(
    { name: "StartOfWeekEnum", type: "enum8" },
    Field({ name: "Sunday", id: 0, conformance: "M" }),
    Field({ name: "Monday", id: 1, conformance: "M" }),
    Field({ name: "Tuesday", id: 2, conformance: "M" }),
    Field({ name: "Wednesday", id: 3, conformance: "M" }),
    Field({ name: "Thursday", id: 4, conformance: "M" }),
    Field({ name: "Friday", id: 5, conformance: "M" }),
    Field({ name: "Saturday", id: 6, conformance: "M" })
  ),
  Datatype(
    { name: "SystemModeEnum", type: "enum8" },
    Field({ name: "Off", id: 0, conformance: "O" }),
    Field({ name: "Auto", id: 1, conformance: "AUTO" }),
    Field({ name: "Cool", id: 3, conformance: "[COOL]" }),
    Field({ name: "Heat", id: 4, conformance: "[HEAT]" }),
    Field({ name: "EmergencyHeat", id: 5, conformance: "[HEAT]" }),
    Field({ name: "Precooling", id: 6, conformance: "[COOL]" }),
    Field({ name: "FanOnly", id: 7, conformance: "O" }),
    Field({ name: "Dry", id: 8, conformance: "O" }),
    Field({ name: "Sleep", id: 9, conformance: "O" })
  ),
  Datatype(
    { name: "ThermostatRunningModeEnum", type: "enum8" },
    Field({ name: "Off", id: 0, conformance: "O" }),
    Field({ name: "Cool", id: 3, conformance: "[COOL]" }),
    Field({ name: "Heat", id: 4, conformance: "[HEAT]" })
  ),
  Datatype(
    { name: "TemperatureSetpointHoldEnum", type: "enum8" },
    Field({ name: "SetpointHoldOff", id: 0, conformance: "M" }),
    Field({ name: "SetpointHoldOn", id: 1, conformance: "M" })
  ),
  Datatype(
    { name: "PresetStruct", type: "struct" },
    Field({ name: "PresetHandle", id: 0, type: "octstr", conformance: "M", constraint: "max 16", quality: "X" }),
    Field({ name: "PresetScenario", id: 1, type: "PresetScenarioEnum", conformance: "M" }),
    Field({ name: "Name", id: 2, type: "string", conformance: "O", constraint: "max 64", default: null, quality: "X" }),
    Field({
      name: "CoolingSetpoint",
      id: 3,
      type: "temperature",
      conformance: "COOL",
      constraint: "desc",
      default: { type: "celsius", value: 26 }
    }),
    Field({
      name: "HeatingSetpoint",
      id: 4,
      type: "temperature",
      conformance: "HEAT",
      constraint: "desc",
      default: { type: "celsius", value: 20 }
    }),
    Field({ name: "BuiltIn", id: 5, type: "bool", conformance: "M", default: false, quality: "X" })
  ),
  Datatype(
    { name: "PresetTypeStruct", type: "struct" },
    Field({ name: "PresetScenario", id: 0, type: "PresetScenarioEnum", conformance: "M" }),
    Field({ name: "NumberOfPresets", id: 1, type: "uint8", conformance: "M", default: 0 }),
    Field({ name: "PresetTypeFeatures", id: 2, type: "PresetTypeFeaturesBitmap", conformance: "M", default: 0 })
  ),
  Datatype(
    { name: "WeeklyScheduleTransitionStruct", type: "struct" },
    Field({ name: "TransitionTime", id: 0, type: "uint16", conformance: "M", constraint: "max 1439" }),
    Field({ name: "HeatSetpoint", id: 1, type: "temperature", conformance: "M", quality: "X" }),
    Field({ name: "CoolSetpoint", id: 2, type: "temperature", conformance: "M", quality: "X" })
  ),
  Datatype(
    { name: "ScheduleStruct", type: "struct" },
    Field({ name: "ScheduleHandle", id: 0, type: "octstr", conformance: "M", constraint: "max 16", quality: "X" }),
    Field({ name: "SystemMode", id: 1, type: "SystemModeEnum", conformance: "M", constraint: "desc" }),
    Field({ name: "Name", id: 2, type: "string", conformance: "O", constraint: "max 64" }),
    Field({ name: "PresetHandle", id: 3, type: "octstr", conformance: "O", constraint: "max 16" }),
    Field(
      {
        name: "Transitions",
        id: 4,
        type: "list",
        conformance: "M",
        constraint: "1 to numberOfScheduleTransitions",
        default: []
      },
      Field({ name: "entry", type: "ScheduleTransitionStruct" })
    ),
    Field({ name: "BuiltIn", id: 5, type: "bool", conformance: "M", default: false, quality: "X" })
  ),
  Datatype(
    { name: "ScheduleTransitionStruct", type: "struct" },
    Field({ name: "DayOfWeek", id: 0, type: "ScheduleDayOfWeekBitmap", conformance: "M", constraint: "desc" }),
    Field({ name: "TransitionTime", id: 1, type: "uint16", conformance: "M", constraint: "max 1439" }),
    Field({ name: "PresetHandle", id: 2, type: "octstr", conformance: "[PRES]", constraint: "max 16" }),
    Field({ name: "SystemMode", id: 3, type: "SystemModeEnum", conformance: "O", constraint: "desc" }),
    Field({ name: "CoolingSetpoint", id: 4, type: "temperature", conformance: "[COOL]", constraint: "desc" }),
    Field({ name: "HeatingSetpoint", id: 5, type: "temperature", conformance: "[HEAT]", constraint: "desc" })
  ),
  Datatype(
    { name: "ScheduleTypeStruct", type: "struct" },
    Field({ name: "SystemMode", id: 0, type: "SystemModeEnum", conformance: "M", constraint: "desc" }),
    Field({
      name: "NumberOfSchedules",
      id: 1,
      type: "uint8",
      conformance: "M",
      constraint: "max numberOfSchedules",
      default: 0
    }),
    Field({
      name: "ScheduleTypeFeatures",
      id: 2,
      type: "ScheduleTypeFeaturesBitmap",
      conformance: "M",
      constraint: "desc",
      default: 0
    })
  )
);
MatterDefinition.children.push(Thermostat);
export {
  Thermostat
};
//# sourceMappingURL=thermostat-cluster.element.js.map
