"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 RvcRunMode_exports = {};
__export(RvcRunMode_exports, {
  RvcRunMode: () => RvcRunMode
});
module.exports = __toCommonJS(RvcRunMode_exports);
var import_MatterDefinition = require("../MatterDefinition.js");
var import_elements = require("../../elements/index.js");
/**
 * @license
 * Copyright 2022-2024 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
const RvcRunMode = (0, import_elements.ClusterElement)({
  name: "RvcRunMode",
  id: 84,
  type: "ModeBase",
  classification: "application",
  pics: "RVCRUNM",
  details: "This cluster is derived from the Mode Base cluster to define specifics for Robotic Vacuum Cleaner devices. It also defines a namespace for the running modes of these devices.",
  xref: { document: "cluster", section: "7.2" },
  children: [
    (0, import_elements.AttributeElement)({ name: "ClusterRevision", id: 65533, type: "ClusterRevision", default: 2 }),
    (0, import_elements.AttributeElement)({ name: "SupportedModes", id: 0, xref: { document: "cluster", section: "7.2.6" } }),
    (0, import_elements.AttributeElement)({ name: "CurrentMode", id: 1, xref: { document: "cluster", section: "7.2.6" } }),
    (0, import_elements.AttributeElement)({ name: "StartUpMode", id: 2, conformance: "X", xref: { document: "cluster", section: "7.2.6" } }),
    (0, import_elements.AttributeElement)({ name: "OnMode", id: 3, conformance: "D", xref: { document: "cluster", section: "7.2.6" } }),
    (0, import_elements.DatatypeElement)({
      name: "ModeOptionStruct",
      type: "ModeOptionStruct",
      details: "The table below lists the changes relative to the Mode Base cluster for the fields of the ModeOptionStruct type. A blank field indicates no change.\nAt least one entry in the SupportedModes attribute shall include the Idle mode tag in the ModeTags field.\nAt least one entry in the SupportedModes attribute (different from the one above) shall include the Cleaning mode tag in the ModeTags field.\nThe Mapping, Cleaning, and Idle mode tags are mutually exclusive and shall NOT be used together in a mode\u2019s ModeTags.",
      xref: { document: "cluster", section: "7.2.5.1" }
    }),
    (0, import_elements.DatatypeElement)({
      name: "ModeChangeStatus",
      type: "enum8",
      children: [
        (0, import_elements.FieldElement)({ name: "Stuck", id: 65, xref: { document: "cluster", section: "7.2.7.1" } }),
        (0, import_elements.FieldElement)({ name: "DustBinMissing", id: 66, xref: { document: "cluster", section: "7.2.7.1" } }),
        (0, import_elements.FieldElement)({ name: "DustBinFull", id: 67, xref: { document: "cluster", section: "7.2.7.1" } }),
        (0, import_elements.FieldElement)({ name: "WaterTankEmpty", id: 68, xref: { document: "cluster", section: "7.2.7.1" } }),
        (0, import_elements.FieldElement)({ name: "WaterTankMissing", id: 69, xref: { document: "cluster", section: "7.2.7.1" } }),
        (0, import_elements.FieldElement)({ name: "WaterTankLidOpen", id: 70, xref: { document: "cluster", section: "7.2.7.1" } }),
        (0, import_elements.FieldElement)({ name: "MopCleaningPadMissing", id: 71, xref: { document: "cluster", section: "7.2.7.1" } }),
        (0, import_elements.FieldElement)({ name: "BatteryLow", id: 72, xref: { document: "cluster", section: "7.2.7.1" } })
      ]
    }),
    (0, import_elements.DatatypeElement)({
      name: "ModeTag",
      type: "enum16",
      children: [
        (0, import_elements.FieldElement)({
          name: "Idle",
          id: 16384,
          details: "The device is not performing any of the main operations of the other modes. However, auxiliary actions, such as seeking the charger or charging, may occur.\nFor example, the device has completed cleaning, successfully or not, on its own or due to a command, or has not been asked to clean after a restart.",
          xref: { document: "cluster", section: "7.2.7.2.1" }
        }),
        (0, import_elements.FieldElement)({
          name: "Cleaning",
          id: 16385,
          details: "The device was asked to clean so it may be actively running, or paused due to an error, due to a pause command, or for recharging etc. If currently paused and the device can resume it will continue to clean.",
          xref: { document: "cluster", section: "7.2.7.2.2" }
        }),
        (0, import_elements.FieldElement)({
          name: "Mapping",
          id: 16386,
          details: "The device was asked to create a map of the space it is located in, so it may be actively running, or paused due to an error, due to a pause command, or for recharging etc. If currently paused and the device can resume, it will continue to map.\nNOTE\nthis mode is intended to be used so the current space can be mapped by the device if the robot has not previously done that, or if the layout has substantially changed, for an optimal subsequent cleaning experience.",
          xref: { document: "cluster", section: "7.2.7.2.3" }
        })
      ]
    })
  ]
});
import_MatterDefinition.MatterDefinition.children.push(RvcRunMode);
//# sourceMappingURL=RvcRunMode.js.map
