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