/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { IdentifyServer as BaseIdentifyServer } from "../behaviors/identify/IdentifyServer.js";
import { GroupsServer as BaseGroupsServer } from "../behaviors/groups/GroupsServer.js";
import { FanControlServer as BaseFanControlServer } from "../behaviors/fan-control/FanControlServer.js";
import { OnOffServer as BaseOnOffServer } from "../behaviors/on-off/OnOffServer.js";
import { MutableEndpoint } from "../endpoint/type/MutableEndpoint.js";
import { SupportedBehaviors } from "../endpoint/properties/SupportedBehaviors.js";
var FanRequirements;
((FanRequirements2) => {
  FanRequirements2.IdentifyServer = BaseIdentifyServer;
  FanRequirements2.GroupsServer = BaseGroupsServer;
  FanRequirements2.FanControlServer = BaseFanControlServer;
  FanRequirements2.OnOffServer = BaseOnOffServer;
  FanRequirements2.server = {
    mandatory: { Identify: FanRequirements2.IdentifyServer, Groups: FanRequirements2.GroupsServer, FanControl: FanRequirements2.FanControlServer },
    optional: { OnOff: FanRequirements2.OnOffServer }
  };
})(FanRequirements || (FanRequirements = {}));
const FanDeviceDefinition = MutableEndpoint({
  name: "Fan",
  deviceType: 43,
  deviceRevision: 4,
  requirements: FanRequirements,
  behaviors: SupportedBehaviors(
    FanRequirements.server.mandatory.Identify,
    FanRequirements.server.mandatory.Groups,
    FanRequirements.server.mandatory.FanControl
  )
});
Object.freeze(FanDeviceDefinition);
const FanDevice = FanDeviceDefinition;
export {
  FanDevice,
  FanDeviceDefinition,
  FanRequirements
};
//# sourceMappingURL=fan.js.map
