"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 application_basic_exports = {};
__export(application_basic_exports, {
  ApplicationBasic: () => ApplicationBasic,
  ApplicationBasicCluster: () => ApplicationBasicCluster
});
module.exports = __toCommonJS(application_basic_exports);
var import_MutableCluster = require("../cluster/mutation/MutableCluster.js");
var import_Cluster = require("../cluster/Cluster.js");
var import_TlvString = require("../tlv/TlvString.js");
var import_VendorId = require("../datatype/VendorId.js");
var import_TlvNumber = require("../tlv/TlvNumber.js");
var import_TlvObject = require("../tlv/TlvObject.js");
var import_TlvArray = require("../tlv/TlvArray.js");
var import_model = require("#model");
var import_ClusterRegistry = require("../cluster/ClusterRegistry.js");
/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
var ApplicationBasic;
((ApplicationBasic2) => {
  ApplicationBasic2.TlvApplication = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate the Connectivity Standards Alliance issued vendor ID for the catalog. The DIAL
     * registry shall use value 0x0000.
     *
     * It is assumed that Content App Platform providers (see Video Player Architecture section in [MatterDevLib])
     * will have their own catalog vendor ID (set to their own Vendor ID) and will assign an ApplicationID to each
     * Content App.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.3.4.2.1
     */
    catalogVendorId: (0, import_TlvObject.TlvField)(0, import_TlvNumber.TlvUInt16),
    /**
     * This field shall indicate the application identifier, expressed as a string, such as "123456-5433",
     * "PruneVideo" or "Company X". This field shall be unique within a catalog.
     *
     * For the DIAL registry catalog, this value shall be the DIAL prefix.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.3.4.2.2
     */
    applicationId: (0, import_TlvObject.TlvField)(1, import_TlvString.TlvString)
  });
  let ApplicationStatus;
  ((ApplicationStatus2) => {
    ApplicationStatus2[ApplicationStatus2["Stopped"] = 0] = "Stopped";
    ApplicationStatus2[ApplicationStatus2["ActiveVisibleFocus"] = 1] = "ActiveVisibleFocus";
    ApplicationStatus2[ApplicationStatus2["ActiveHidden"] = 2] = "ActiveHidden";
    ApplicationStatus2[ApplicationStatus2["ActiveVisibleNotFocus"] = 3] = "ActiveVisibleNotFocus";
  })(ApplicationStatus = ApplicationBasic2.ApplicationStatus || (ApplicationBasic2.ApplicationStatus = {}));
  ApplicationBasic2.ClusterInstance = (0, import_MutableCluster.MutableCluster)({
    id: 1293,
    name: "ApplicationBasic",
    revision: 1,
    attributes: {
      /**
       * This attribute shall specify a human readable (displayable) name of the vendor for the Content App.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 6.3.5.1
       */
      vendorName: (0, import_Cluster.OptionalFixedAttribute)(0, import_TlvString.TlvString.bound({ maxLength: 32 })),
      /**
       * This attribute, if present, shall specify the Connectivity Standards Alliance assigned Vendor ID for the
       * Content App.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 6.3.5.2
       */
      vendorId: (0, import_Cluster.OptionalFixedAttribute)(1, import_VendorId.TlvVendorId),
      /**
       * This attribute shall specify a human readable (displayable) name of the Content App assigned by the
       * vendor. For example, "NPR On Demand". The maximum length of the ApplicationName attribute is 256 bytes of
       * UTF-8 characters.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 6.3.5.3
       */
      applicationName: (0, import_Cluster.FixedAttribute)(2, import_TlvString.TlvString),
      /**
       * This attribute, if present, shall specify a numeric ID assigned by the vendor to identify a specific
       * Content App made by them. If the Content App is certified by the Connectivity Standards Alliance, then
       * this would be the Product ID as specified by the vendor for the certification.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 6.3.5.4
       */
      productId: (0, import_Cluster.OptionalFixedAttribute)(3, import_TlvNumber.TlvUInt16),
      /**
       * This attribute shall specify a Content App which consists of an Application ID using a specified catalog.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 6.3.5.5
       */
      application: (0, import_Cluster.FixedAttribute)(4, ApplicationBasic2.TlvApplication),
      /**
       * This attribute shall specify the current running status of the application.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 6.3.5.6
       */
      status: (0, import_Cluster.Attribute)(5, (0, import_TlvNumber.TlvEnum)()),
      /**
       * This attribute shall specify a human readable (displayable) version of the Content App assigned by the
       * vendor. The maximum length of the ApplicationVersion attribute is 32 bytes of UTF-8 characters.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 6.3.5.7
       */
      applicationVersion: (0, import_Cluster.FixedAttribute)(6, import_TlvString.TlvString.bound({ maxLength: 32 })),
      /**
       * This attribute is a list of vendor IDs. Each entry is a vendor-id.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 6.3.5.8
       */
      allowedVendorList: (0, import_Cluster.FixedAttribute)(
        7,
        (0, import_TlvArray.TlvArray)(import_VendorId.TlvVendorId),
        { default: [], readAcl: import_model.AccessLevel.Administer, writeAcl: import_model.AccessLevel.Administer }
      )
    }
  });
  ApplicationBasic2.Cluster = ApplicationBasic2.ClusterInstance;
  ApplicationBasic2.Complete = ApplicationBasic2.Cluster;
})(ApplicationBasic || (ApplicationBasic = {}));
const ApplicationBasicCluster = ApplicationBasic.Cluster;
import_ClusterRegistry.ClusterRegistry.register(ApplicationBasic.Complete);
//# sourceMappingURL=application-basic.js.map
