"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 Locationdesc_exports = {};
__export(Locationdesc_exports, {
  TlvLocationdesc: () => TlvLocationdesc
});
module.exports = __toCommonJS(Locationdesc_exports);
var import_TlvObject = require("../tlv/TlvObject.js");
var import_TlvString = require("../tlv/TlvString.js");
var import_TlvNumber = require("../tlv/TlvNumber.js");
var import_TlvNullable = require("../tlv/TlvNullable.js");
/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
const TlvLocationdesc = (0, import_TlvObject.TlvObject)({
  /**
   * This field shall indicate the name of the location. For example, "blue room".
   *
   * If the location name is not user provided, the logic that generates it (clients, devices etc.) SHOULD utilize
   * synthesized user-friendly, understandable, names for the location, rather than opaque values such as "private" or
   * "2fe7c241-a50a-4863-896e-c5878da5ed68".
   *
   * @see {@link MatterSpecification.v142.Core} § 7.19.2.49.1
   */
  locationName: (0, import_TlvObject.TlvField)(0, import_TlvString.TlvString.bound({ maxLength: 128 })),
  /**
   * This field shall indicate the level number. Negative values correspond to basement levels.
   *
   * Value zero indicates this is the main floor, which typically includes the main entrance to the user’s home. For a
   * building with multiple levels, it is the client’s responsibility to map each level to/from a FloorNumber tag
   * value, using the level numbering convention of the region where the client operates. For example, if the client
   * operates in Europe, building level 1, which is one level up from the street level, SHOULD be mapped to
   * FloorNumber tag value 0x1. If the client operates in North America, building level 1, which is at street level,
   * SHOULD be mapped to FloorNumber tag value 0x0.
   *
   * A NULL value indicates that this information is not available.
   *
   * When the clients present the level information for user selection, they SHOULD use the operating region to
   * determine how to render and map this data. For example, if the client operates in North America it SHOULD present
   * the user a list that includes entries labeled "basement", "first", "second", and internally mapped to floor
   * numbers -1, 0, and 1. If operating in Europe, the client SHOULD present a list that includes entries labeled
   * "basement", "ground", "first", internally mapped to floor numbers -1, 0, and 1.
   *
   * The floor number information is expected to be mostly useful to the clients, rather than the devices, such as for
   * grouping devices that are located on the same level. For example, an automation may be defined for all devices
   * located at the basement level (floor number -1).
   *
   * > [!NOTE]
   *
   * > Handling complex level situations, such as half levels (side split houses), or the levels from an apartment
   *   building, is up to the client and/or user.
   *
   * @see {@link MatterSpecification.v142.Core} § 7.19.2.49.2
   */
  floorNumber: (0, import_TlvObject.TlvField)(1, (0, import_TlvNullable.TlvNullable)(import_TlvNumber.TlvInt16)),
  /**
   * This field shall be the ID of an area semantic tag, located within the Common Area Namespace. For example, this
   * tag may indicate that the location refers to a bedroom.
   *
   * If this field is NULL, that indicates that the area type information is not available.
   *
   * > [!NOTE]
   *
   * > This field only indicates the type of the area. Multiple areas of the same type, such as bedrooms, may exist in
   *   a user’s home.
   *
   * @see {@link MatterSpecification.v142.Core} § 7.19.2.49.3
   */
  areaType: (0, import_TlvObject.TlvField)(2, (0, import_TlvNullable.TlvNullable)(import_TlvNumber.TlvUInt8))
});
//# sourceMappingURL=Locationdesc.js.map
