/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import {
  OperationalStateServer as BaseOperationalStateServer
} from "../behaviors/operational-state/OperationalStateServer.js";
import { IdentifyServer as BaseIdentifyServer } from "../behaviors/identify/IdentifyServer.js";
import {
  LaundryWasherModeServer as BaseLaundryWasherModeServer
} from "../behaviors/laundry-washer-mode/LaundryWasherModeServer.js";
import { OnOffServer as BaseOnOffServer } from "../behaviors/on-off/OnOffServer.js";
import {
  LaundryWasherControlsServer as BaseLaundryWasherControlsServer
} from "../behaviors/laundry-washer-controls/LaundryWasherControlsServer.js";
import {
  TemperatureControlServer as BaseTemperatureControlServer
} from "../behaviors/temperature-control/TemperatureControlServer.js";
import { MutableEndpoint } from "../endpoint/type/MutableEndpoint.js";
import { SupportedBehaviors } from "../endpoint/properties/SupportedBehaviors.js";
var LaundryWasherRequirements;
((LaundryWasherRequirements2) => {
  LaundryWasherRequirements2.OperationalStateServer = BaseOperationalStateServer.alter({ events: { operationCompletion: { optional: false } } });
  LaundryWasherRequirements2.IdentifyServer = BaseIdentifyServer;
  LaundryWasherRequirements2.LaundryWasherModeServer = BaseLaundryWasherModeServer;
  LaundryWasherRequirements2.OnOffServer = BaseOnOffServer.with("DeadFrontBehavior");
  LaundryWasherRequirements2.LaundryWasherControlsServer = BaseLaundryWasherControlsServer;
  LaundryWasherRequirements2.TemperatureControlServer = BaseTemperatureControlServer;
  LaundryWasherRequirements2.server = {
    mandatory: { OperationalState: LaundryWasherRequirements2.OperationalStateServer },
    optional: {
      Identify: LaundryWasherRequirements2.IdentifyServer,
      LaundryWasherMode: LaundryWasherRequirements2.LaundryWasherModeServer,
      OnOff: LaundryWasherRequirements2.OnOffServer,
      LaundryWasherControls: LaundryWasherRequirements2.LaundryWasherControlsServer,
      TemperatureControl: LaundryWasherRequirements2.TemperatureControlServer
    }
  };
})(LaundryWasherRequirements || (LaundryWasherRequirements = {}));
const LaundryWasherDeviceDefinition = MutableEndpoint({
  name: "LaundryWasher",
  deviceType: 115,
  deviceRevision: 2,
  requirements: LaundryWasherRequirements,
  behaviors: SupportedBehaviors(LaundryWasherRequirements.server.mandatory.OperationalState)
});
Object.freeze(LaundryWasherDeviceDefinition);
const LaundryWasherDevice = LaundryWasherDeviceDefinition;
export {
  LaundryWasherDevice,
  LaundryWasherDeviceDefinition,
  LaundryWasherRequirements
};
//# sourceMappingURL=laundry-washer.js.map
