"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_user_interface_configuration_exports = {};
__export(thermostat_user_interface_configuration_exports, {
  ThermostatUserInterfaceConfiguration: () => ThermostatUserInterfaceConfiguration,
  ThermostatUserInterfaceConfigurationCluster: () => ThermostatUserInterfaceConfigurationCluster
});
module.exports = __toCommonJS(thermostat_user_interface_configuration_exports);
var import_MutableCluster = require("../cluster/mutation/MutableCluster.js");
var import_Cluster = require("../cluster/Cluster.js");
var import_TlvNumber = require("../tlv/TlvNumber.js");
var import_model = require("#model");
var import_ClusterRegistry = require("../cluster/ClusterRegistry.js");
/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
var ThermostatUserInterfaceConfiguration;
((ThermostatUserInterfaceConfiguration2) => {
  let TemperatureDisplayMode;
  ((TemperatureDisplayMode2) => {
    TemperatureDisplayMode2[TemperatureDisplayMode2["Celsius"] = 0] = "Celsius";
    TemperatureDisplayMode2[TemperatureDisplayMode2["Fahrenheit"] = 1] = "Fahrenheit";
  })(TemperatureDisplayMode = ThermostatUserInterfaceConfiguration2.TemperatureDisplayMode || (ThermostatUserInterfaceConfiguration2.TemperatureDisplayMode = {}));
  let KeypadLockout;
  ((KeypadLockout2) => {
    KeypadLockout2[KeypadLockout2["NoLockout"] = 0] = "NoLockout";
    KeypadLockout2[KeypadLockout2["Lockout1"] = 1] = "Lockout1";
    KeypadLockout2[KeypadLockout2["Lockout2"] = 2] = "Lockout2";
    KeypadLockout2[KeypadLockout2["Lockout3"] = 3] = "Lockout3";
    KeypadLockout2[KeypadLockout2["Lockout4"] = 4] = "Lockout4";
    KeypadLockout2[KeypadLockout2["Lockout5"] = 5] = "Lockout5";
  })(KeypadLockout = ThermostatUserInterfaceConfiguration2.KeypadLockout || (ThermostatUserInterfaceConfiguration2.KeypadLockout = {}));
  let ScheduleProgrammingVisibility;
  ((ScheduleProgrammingVisibility2) => {
    ScheduleProgrammingVisibility2[ScheduleProgrammingVisibility2["ScheduleProgrammingPermitted"] = 0] = "ScheduleProgrammingPermitted";
    ScheduleProgrammingVisibility2[ScheduleProgrammingVisibility2["ScheduleProgrammingDenied"] = 1] = "ScheduleProgrammingDenied";
  })(ScheduleProgrammingVisibility = ThermostatUserInterfaceConfiguration2.ScheduleProgrammingVisibility || (ThermostatUserInterfaceConfiguration2.ScheduleProgrammingVisibility = {}));
  ThermostatUserInterfaceConfiguration2.ClusterInstance = (0, import_MutableCluster.MutableCluster)({
    id: 516,
    name: "ThermostatUserInterfaceConfiguration",
    revision: 2,
    attributes: {
      /**
       * Indicates the units of the temperature displayed on the thermostat screen.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 4.5.6.1
       */
      temperatureDisplayMode: (0, import_Cluster.WritableAttribute)(0, (0, import_TlvNumber.TlvEnum)()),
      /**
       * Indicates the level of functionality that is available to the user via the keypad.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 4.5.6.2
       */
      keypadLockout: (0, import_Cluster.WritableAttribute)(1, (0, import_TlvNumber.TlvEnum)(), { writeAcl: import_model.AccessLevel.Manage }),
      /**
       * This attribute is used to hide the weekly schedule programming functionality or menu on a thermostat from
       * a user to prevent local user programming of the weekly schedule. The schedule programming may still be
       * performed via a remote interface, and the thermostat may operate in schedule programming mode.
       *
       * This attribute is designed to prevent local tampering with or disabling of schedules that may have been
       * programmed by users or service providers via a more capable remote interface. The programming schedule
       * shall continue to run even though it is not visible to the user locally at the thermostat.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 4.5.6.3
       */
      scheduleProgrammingVisibility: (0, import_Cluster.OptionalWritableAttribute)(
        2,
        (0, import_TlvNumber.TlvEnum)(),
        { default: 0 /* ScheduleProgrammingPermitted */, writeAcl: import_model.AccessLevel.Manage }
      )
    }
  });
  ThermostatUserInterfaceConfiguration2.Cluster = ThermostatUserInterfaceConfiguration2.ClusterInstance;
  ThermostatUserInterfaceConfiguration2.Complete = ThermostatUserInterfaceConfiguration2.Cluster;
})(ThermostatUserInterfaceConfiguration || (ThermostatUserInterfaceConfiguration = {}));
const ThermostatUserInterfaceConfigurationCluster = ThermostatUserInterfaceConfiguration.Cluster;
import_ClusterRegistry.ClusterRegistry.register(ThermostatUserInterfaceConfiguration.Complete);
//# sourceMappingURL=thermostat-user-interface-configuration.js.map
