/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { MutableCluster } from "../cluster/mutation/MutableCluster.js";
import { WritableAttribute, OptionalWritableAttribute } from "../cluster/Cluster.js";
import { TlvEnum } from "../tlv/TlvNumber.js";
import { AccessLevel } from "@matter/model";
import { ClusterRegistry } from "../cluster/ClusterRegistry.js";
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 = 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: WritableAttribute(0, 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: WritableAttribute(1, TlvEnum(), { writeAcl: 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: OptionalWritableAttribute(
        2,
        TlvEnum(),
        { default: 0 /* ScheduleProgrammingPermitted */, writeAcl: AccessLevel.Manage }
      )
    }
  });
  ThermostatUserInterfaceConfiguration2.Cluster = ThermostatUserInterfaceConfiguration2.ClusterInstance;
  ThermostatUserInterfaceConfiguration2.Complete = ThermostatUserInterfaceConfiguration2.Cluster;
})(ThermostatUserInterfaceConfiguration || (ThermostatUserInterfaceConfiguration = {}));
const ThermostatUserInterfaceConfigurationCluster = ThermostatUserInterfaceConfiguration.Cluster;
ClusterRegistry.register(ThermostatUserInterfaceConfiguration.Complete);
export {
  ThermostatUserInterfaceConfiguration,
  ThermostatUserInterfaceConfigurationCluster
};
//# sourceMappingURL=thermostat-user-interface-configuration.js.map
