/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { OnOffServer as BaseOnOffServer } from "../behaviors/on-off/OnOffServer.js";
import {
  PumpConfigurationAndControlServer as BasePumpConfigurationAndControlServer
} from "../behaviors/pump-configuration-and-control/PumpConfigurationAndControlServer.js";
import { IdentifyServer as BaseIdentifyServer } from "../behaviors/identify/IdentifyServer.js";
import { LevelControlServer as BaseLevelControlServer } from "../behaviors/level-control/LevelControlServer.js";
import { GroupsServer as BaseGroupsServer } from "../behaviors/groups/GroupsServer.js";
import {
  ScenesManagementServer as BaseScenesManagementServer
} from "../behaviors/scenes-management/ScenesManagementServer.js";
import {
  TemperatureMeasurementServer as BaseTemperatureMeasurementServer
} from "../behaviors/temperature-measurement/TemperatureMeasurementServer.js";
import {
  PressureMeasurementServer as BasePressureMeasurementServer
} from "../behaviors/pressure-measurement/PressureMeasurementServer.js";
import { FlowMeasurementServer as BaseFlowMeasurementServer } from "../behaviors/flow-measurement/FlowMeasurementServer.js";
import {
  TemperatureMeasurementBehavior as BaseTemperatureMeasurementBehavior
} from "../behaviors/temperature-measurement/TemperatureMeasurementBehavior.js";
import {
  PressureMeasurementBehavior as BasePressureMeasurementBehavior
} from "../behaviors/pressure-measurement/PressureMeasurementBehavior.js";
import {
  FlowMeasurementBehavior as BaseFlowMeasurementBehavior
} from "../behaviors/flow-measurement/FlowMeasurementBehavior.js";
import {
  OccupancySensingBehavior as BaseOccupancySensingBehavior
} from "../behaviors/occupancy-sensing/OccupancySensingBehavior.js";
import { MutableEndpoint } from "../endpoint/type/MutableEndpoint.js";
import { SupportedBehaviors } from "../endpoint/properties/SupportedBehaviors.js";
var PumpRequirements;
((PumpRequirements2) => {
  PumpRequirements2.OnOffServer = BaseOnOffServer;
  PumpRequirements2.PumpConfigurationAndControlServer = BasePumpConfigurationAndControlServer;
  PumpRequirements2.IdentifyServer = BaseIdentifyServer;
  PumpRequirements2.LevelControlServer = BaseLevelControlServer;
  PumpRequirements2.GroupsServer = BaseGroupsServer;
  PumpRequirements2.ScenesManagementServer = BaseScenesManagementServer;
  PumpRequirements2.TemperatureMeasurementServer = BaseTemperatureMeasurementServer;
  PumpRequirements2.PressureMeasurementServer = BasePressureMeasurementServer;
  PumpRequirements2.FlowMeasurementServer = BaseFlowMeasurementServer;
  PumpRequirements2.TemperatureMeasurementBehavior = BaseTemperatureMeasurementBehavior;
  PumpRequirements2.PressureMeasurementBehavior = BasePressureMeasurementBehavior;
  PumpRequirements2.FlowMeasurementBehavior = BaseFlowMeasurementBehavior;
  PumpRequirements2.OccupancySensingBehavior = BaseOccupancySensingBehavior;
  PumpRequirements2.server = {
    mandatory: {
      OnOff: PumpRequirements2.OnOffServer,
      PumpConfigurationAndControl: PumpRequirements2.PumpConfigurationAndControlServer,
      Identify: PumpRequirements2.IdentifyServer
    },
    optional: {
      LevelControl: PumpRequirements2.LevelControlServer,
      Groups: PumpRequirements2.GroupsServer,
      ScenesManagement: PumpRequirements2.ScenesManagementServer,
      TemperatureMeasurement: PumpRequirements2.TemperatureMeasurementServer,
      PressureMeasurement: PumpRequirements2.PressureMeasurementServer,
      FlowMeasurement: PumpRequirements2.FlowMeasurementServer
    }
  };
  PumpRequirements2.client = {
    optional: {
      TemperatureMeasurement: PumpRequirements2.TemperatureMeasurementBehavior,
      PressureMeasurement: PumpRequirements2.PressureMeasurementBehavior,
      FlowMeasurement: PumpRequirements2.FlowMeasurementBehavior,
      OccupancySensing: PumpRequirements2.OccupancySensingBehavior
    },
    mandatory: {}
  };
})(PumpRequirements || (PumpRequirements = {}));
const PumpDeviceDefinition = MutableEndpoint({
  name: "Pump",
  deviceType: 771,
  deviceRevision: 3,
  requirements: PumpRequirements,
  behaviors: SupportedBehaviors(PumpRequirements.server.mandatory.OnOff, PumpRequirements.server.mandatory.Identify)
});
Object.freeze(PumpDeviceDefinition);
const PumpDevice = PumpDeviceDefinition;
export {
  PumpDevice,
  PumpDeviceDefinition,
  PumpRequirements
};
//# sourceMappingURL=pump.js.map
