/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import {
  OperationalStateServer as BaseOperationalStateServer
} from "../behaviors/operational-state/OperationalStateServer.js";
import {
  MicrowaveOvenModeServer as BaseMicrowaveOvenModeServer
} from "../behaviors/microwave-oven-mode/MicrowaveOvenModeServer.js";
import {
  MicrowaveOvenControlServer as BaseMicrowaveOvenControlServer
} from "../behaviors/microwave-oven-control/MicrowaveOvenControlServer.js";
import { IdentifyServer as BaseIdentifyServer } from "../behaviors/identify/IdentifyServer.js";
import { FanControlServer as BaseFanControlServer } from "../behaviors/fan-control/FanControlServer.js";
import { MutableEndpoint } from "../endpoint/type/MutableEndpoint.js";
import { SupportedBehaviors } from "../endpoint/properties/SupportedBehaviors.js";
var MicrowaveOvenRequirements;
((MicrowaveOvenRequirements2) => {
  MicrowaveOvenRequirements2.OperationalStateServer = BaseOperationalStateServer.alter({ attributes: { countdownTime: { optional: false } }, events: { operationCompletion: { optional: false } } });
  MicrowaveOvenRequirements2.MicrowaveOvenModeServer = BaseMicrowaveOvenModeServer;
  MicrowaveOvenRequirements2.MicrowaveOvenControlServer = BaseMicrowaveOvenControlServer;
  MicrowaveOvenRequirements2.IdentifyServer = BaseIdentifyServer;
  MicrowaveOvenRequirements2.FanControlServer = BaseFanControlServer;
  MicrowaveOvenRequirements2.server = {
    mandatory: {
      OperationalState: MicrowaveOvenRequirements2.OperationalStateServer,
      MicrowaveOvenMode: MicrowaveOvenRequirements2.MicrowaveOvenModeServer,
      MicrowaveOvenControl: MicrowaveOvenRequirements2.MicrowaveOvenControlServer
    },
    optional: { Identify: MicrowaveOvenRequirements2.IdentifyServer, FanControl: MicrowaveOvenRequirements2.FanControlServer }
  };
})(MicrowaveOvenRequirements || (MicrowaveOvenRequirements = {}));
const MicrowaveOvenDeviceDefinition = MutableEndpoint({
  name: "MicrowaveOven",
  deviceType: 121,
  deviceRevision: 2,
  requirements: MicrowaveOvenRequirements,
  behaviors: SupportedBehaviors(
    MicrowaveOvenRequirements.server.mandatory.OperationalState,
    MicrowaveOvenRequirements.server.mandatory.MicrowaveOvenMode
  )
});
Object.freeze(MicrowaveOvenDeviceDefinition);
const MicrowaveOvenDevice = MicrowaveOvenDeviceDefinition;
export {
  MicrowaveOvenDevice,
  MicrowaveOvenDeviceDefinition,
  MicrowaveOvenRequirements
};
//# sourceMappingURL=microwave-oven.js.map
