/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { IdentifyServer as BaseIdentifyServer } from "../behaviors/identify/IdentifyServer.js";
import { RvcRunModeServer as BaseRvcRunModeServer } from "../behaviors/rvc-run-mode/RvcRunModeServer.js";
import {
  RvcOperationalStateServer as BaseRvcOperationalStateServer
} from "../behaviors/rvc-operational-state/RvcOperationalStateServer.js";
import { RvcCleanModeServer as BaseRvcCleanModeServer } from "../behaviors/rvc-clean-mode/RvcCleanModeServer.js";
import { ServiceAreaServer as BaseServiceAreaServer } from "../behaviors/service-area/ServiceAreaServer.js";
import { MutableEndpoint } from "../endpoint/type/MutableEndpoint.js";
import { SupportedBehaviors } from "../endpoint/properties/SupportedBehaviors.js";
var RoboticVacuumCleanerRequirements;
((RoboticVacuumCleanerRequirements2) => {
  RoboticVacuumCleanerRequirements2.IdentifyServer = BaseIdentifyServer;
  RoboticVacuumCleanerRequirements2.RvcRunModeServer = BaseRvcRunModeServer;
  RoboticVacuumCleanerRequirements2.RvcOperationalStateServer = BaseRvcOperationalStateServer.alter({ events: { operationCompletion: { optional: false } } });
  RoboticVacuumCleanerRequirements2.RvcCleanModeServer = BaseRvcCleanModeServer;
  RoboticVacuumCleanerRequirements2.ServiceAreaServer = BaseServiceAreaServer;
  RoboticVacuumCleanerRequirements2.server = {
    mandatory: {
      Identify: RoboticVacuumCleanerRequirements2.IdentifyServer,
      RvcRunMode: RoboticVacuumCleanerRequirements2.RvcRunModeServer,
      RvcOperationalState: RoboticVacuumCleanerRequirements2.RvcOperationalStateServer
    },
    optional: { RvcCleanMode: RoboticVacuumCleanerRequirements2.RvcCleanModeServer, ServiceArea: RoboticVacuumCleanerRequirements2.ServiceAreaServer }
  };
})(RoboticVacuumCleanerRequirements || (RoboticVacuumCleanerRequirements = {}));
const RoboticVacuumCleanerDeviceDefinition = MutableEndpoint({
  name: "RoboticVacuumCleaner",
  deviceType: 116,
  deviceRevision: 4,
  requirements: RoboticVacuumCleanerRequirements,
  behaviors: SupportedBehaviors(
    RoboticVacuumCleanerRequirements.server.mandatory.Identify,
    RoboticVacuumCleanerRequirements.server.mandatory.RvcRunMode,
    RoboticVacuumCleanerRequirements.server.mandatory.RvcOperationalState
  )
});
Object.freeze(RoboticVacuumCleanerDeviceDefinition);
const RoboticVacuumCleanerDevice = RoboticVacuumCleanerDeviceDefinition;
export {
  RoboticVacuumCleanerDevice,
  RoboticVacuumCleanerDeviceDefinition,
  RoboticVacuumCleanerRequirements
};
//# sourceMappingURL=robotic-vacuum-cleaner.js.map
