/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
/*** THIS FILE IS GENERATED, DO NOT EDIT ***/
import { MutableCluster } from "../cluster/mutation/MutableCluster.js";
import { Attribute, FixedAttribute, Command, Event } from "../cluster/Cluster.js";
import { BitFlag } from "../schema/BitmapSchema.js";
import { TypeFromSchema } from "../tlv/TlvSchema.js";
import { Identity } from "#general";
export declare namespace WaterHeaterManagement {
    /**
     * These are optional features supported by WaterHeaterManagementCluster.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 9.5.4
     */
    enum Feature {
        /**
         * EnergyManagement (EM)
         *
         * Allows energy management control of the tank
         */
        EnergyManagement = "EnergyManagement",
        /**
         * TankPercent (TP)
         *
         * Supports monitoring the percentage of hot water in the tank
         */
        TankPercent = "TankPercent"
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.1
     */
    const WaterHeaterHeatSource: {
        /**
         * Immersion Heating Element 1
         */
        immersionElement1: BitFlag;
        /**
         * Immersion Heating Element 2
         */
        immersionElement2: BitFlag;
        /**
         * Heat pump Heating
         */
        heatPump: BitFlag;
        /**
         * Boiler Heating (e.g. Gas or Oil)
         */
        boiler: BitFlag;
        /**
         * Other Heating
         */
        other: BitFlag;
    };
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.2
     */
    enum BoostState {
        /**
         * Boost is not currently active
         */
        Inactive = 0,
        /**
         * Boost is currently active
         */
        Active = 1
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3
     */
    const TlvWaterHeaterBoostInfo: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the time period, in seconds, for which the boost state is activated.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.1
         */
        duration: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * This field shall indicate whether the boost state shall be automatically canceled once the hot water has
         * reached either:
         *
         *   - the set point temperature (from the thermostat cluster)
         *
         *   - the TemporarySetpoint temperature (if specified)
         *
         *   - the TargetPercentage (if specified).
         *
         * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.2
         */
        oneShot: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
        /**
         * This field shall indicate that the consumer wants the water to be heated quickly. This may cause multiple
         * heat sources to be activated (e.g. a heat pump and direct electric immersion heating element).
         *
         * The choice of which heat sources are activated is manufacturer specific.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.3
         */
        emergencyBoost: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
        /**
         * This field shall indicate the target temperature to which the water will be heated.
         *
         * If included, it shall be used instead of the thermostat cluster set point temperature whilst the boost state
         * is activated.
         *
         * The value of this field shall be within the constraints of the MinHeatSetpointLimit and MaxHeatSetpointLimit
         * attributes (inclusive), of the thermostat cluster.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.4
         */
        temporarySetpoint: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        /**
         * This field shall indicate the target percentage of hot water in the tank that the TankPercentage attribute
         * must reach before the heating is switched off.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.5
         */
        targetPercentage: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        /**
         * This field shall indicate the percentage to which the hot water in the tank shall be allowed to fall before
         * again beginning to reheat it.
         *
         * For example if the TargetPercentage was 80%, and the TargetReheat was 40%, then after initial heating to 80%
         * hot water, the tank may have hot water drawn off until only 40% hot water remains. At this point the heater
         * will begin to heat back up to 80% of hot water. If this field and the OneShot field were both omitted,
         * heating would begin again after any water draw which reduced the TankPercentage below 80%.
         *
         * This field shall be less than or equal to the TargetPercentage field.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.6
         */
        targetReheat: import("../tlv/TlvObject.js").OptionalFieldType<number>;
    }>;
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3
     */
    interface WaterHeaterBoostInfo extends TypeFromSchema<typeof TlvWaterHeaterBoostInfo> {
    }
    /**
     * Input to the WaterHeaterManagement boost command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 9.5.8.1
     */
    const TlvBoostRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        boostInfo: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall indicate the time period, in seconds, for which the boost state is activated.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.1
             */
            duration: import("../tlv/TlvObject.js").FieldType<number>;
            /**
             * This field shall indicate whether the boost state shall be automatically canceled once the hot water has
             * reached either:
             *
             *   - the set point temperature (from the thermostat cluster)
             *
             *   - the TemporarySetpoint temperature (if specified)
             *
             *   - the TargetPercentage (if specified).
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.2
             */
            oneShot: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
            /**
             * This field shall indicate that the consumer wants the water to be heated quickly. This may cause multiple
             * heat sources to be activated (e.g. a heat pump and direct electric immersion heating element).
             *
             * The choice of which heat sources are activated is manufacturer specific.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.3
             */
            emergencyBoost: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
            /**
             * This field shall indicate the target temperature to which the water will be heated.
             *
             * If included, it shall be used instead of the thermostat cluster set point temperature whilst the boost state
             * is activated.
             *
             * The value of this field shall be within the constraints of the MinHeatSetpointLimit and MaxHeatSetpointLimit
             * attributes (inclusive), of the thermostat cluster.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.4
             */
            temporarySetpoint: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            /**
             * This field shall indicate the target percentage of hot water in the tank that the TankPercentage attribute
             * must reach before the heating is switched off.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.5
             */
            targetPercentage: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            /**
             * This field shall indicate the percentage to which the hot water in the tank shall be allowed to fall before
             * again beginning to reheat it.
             *
             * For example if the TargetPercentage was 80%, and the TargetReheat was 40%, then after initial heating to 80%
             * hot water, the tank may have hot water drawn off until only 40% hot water remains. At this point the heater
             * will begin to heat back up to 80% of hot water. If this field and the OneShot field were both omitted,
             * heating would begin again after any water draw which reduced the TankPercentage below 80%.
             *
             * This field shall be less than or equal to the TargetPercentage field.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.6
             */
            targetReheat: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        }>>;
    }>;
    /**
     * Input to the WaterHeaterManagement boost command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 9.5.8.1
     */
    interface BoostRequest extends TypeFromSchema<typeof TlvBoostRequest> {
    }
    /**
     * Body of the WaterHeaterManagement boostStarted event
     *
     * @see {@link MatterSpecification.v142.Cluster} § 9.5.9.1
     */
    const TlvBoostStartedEvent: import("../tlv/TlvObject.js").ObjectSchema<{
        boostInfo: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall indicate the time period, in seconds, for which the boost state is activated.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.1
             */
            duration: import("../tlv/TlvObject.js").FieldType<number>;
            /**
             * This field shall indicate whether the boost state shall be automatically canceled once the hot water has
             * reached either:
             *
             *   - the set point temperature (from the thermostat cluster)
             *
             *   - the TemporarySetpoint temperature (if specified)
             *
             *   - the TargetPercentage (if specified).
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.2
             */
            oneShot: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
            /**
             * This field shall indicate that the consumer wants the water to be heated quickly. This may cause multiple
             * heat sources to be activated (e.g. a heat pump and direct electric immersion heating element).
             *
             * The choice of which heat sources are activated is manufacturer specific.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.3
             */
            emergencyBoost: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
            /**
             * This field shall indicate the target temperature to which the water will be heated.
             *
             * If included, it shall be used instead of the thermostat cluster set point temperature whilst the boost state
             * is activated.
             *
             * The value of this field shall be within the constraints of the MinHeatSetpointLimit and MaxHeatSetpointLimit
             * attributes (inclusive), of the thermostat cluster.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.4
             */
            temporarySetpoint: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            /**
             * This field shall indicate the target percentage of hot water in the tank that the TankPercentage attribute
             * must reach before the heating is switched off.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.5
             */
            targetPercentage: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            /**
             * This field shall indicate the percentage to which the hot water in the tank shall be allowed to fall before
             * again beginning to reheat it.
             *
             * For example if the TargetPercentage was 80%, and the TargetReheat was 40%, then after initial heating to 80%
             * hot water, the tank may have hot water drawn off until only 40% hot water remains. At this point the heater
             * will begin to heat back up to 80% of hot water. If this field and the OneShot field were both omitted,
             * heating would begin again after any water draw which reduced the TankPercentage below 80%.
             *
             * This field shall be less than or equal to the TargetPercentage field.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.6
             */
            targetReheat: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        }>>;
    }>;
    /**
     * Body of the WaterHeaterManagement boostStarted event
     *
     * @see {@link MatterSpecification.v142.Cluster} § 9.5.9.1
     */
    interface BoostStartedEvent extends TypeFromSchema<typeof TlvBoostStartedEvent> {
    }
    /**
     * A WaterHeaterManagementCluster supports these elements if it supports feature EnergyManagement.
     */
    const EnergyManagementComponent: {
        readonly attributes: {
            /**
             * Indicates the volume of water that the hot water tank can hold (in units of Litres). This allows an
             * energy management system to estimate the required heating energy needed to reach the target temperature.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.3
             */
            readonly tankVolume: Attribute<number, any>;
            /**
             * Indicates the estimated heat energy needed to raise the water temperature to the target setpoint. This
             * can be computed by taking the specific heat capacity of water (4182 J/kg °C) and by knowing the current
             * temperature of the water, the tank volume and target temperature.
             *
             * For example, if the target temperature was 60°C, the current temperature was 20°C and the tank volume was
             * 100L:
             *
             * Mass of water = 1kg per Litre Total Mass = 100 x 1kg = 100kg Δ Temperature = (target temperature -
             * current temperature) = (60°C - 20°C) = 40°C
             *
             * Energy required to heat the water to 60°C = 4182 x 40 x 100 = 16,728,000 J
             *
             * Converting Joules in to Wh of heat (divide by 3600): = 16,728,000 J / 3600 = 4647 Wh (4.65kWh)
             *
             * If the TankPercent feature is supported, then this estimate shall also take into account the percentage
             * of the water in the tank which is already hot.
             *
             * > [!NOTE]
             *
             * > The electrical energy required to heat the water depends on the heating system used to heat the water.
             *   For example, a direct electric immersion heating element can be close to 100% efficient, so the
             *   electrical energy needed to heat the hot water is nearly the same as the EstimatedHeatEnergyRequired.
             *   However some forms of heating, such as an air-source heat pump which extracts heat from ambient air,
             *   requires much less electrical energy to heat hot water. Heat pumps can be produce 3kWh of heat output
             *   for 1kWh of electrical energy input. The conversion between heat energy and electrical energy is
             *   outside the scope of this cluster.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.4
             */
            readonly estimatedHeatRequired: Attribute<number | bigint, any>;
        };
    };
    /**
     * A WaterHeaterManagementCluster supports these elements if it supports feature TankPercent.
     */
    const TankPercentComponent: {
        readonly attributes: {
            /**
             * Indicates an approximate level of hot water stored in the tank, which might help consumers understand the
             * amount of hot water remaining in the tank. The accuracy of this attribute is manufacturer specific.
             *
             * In most hot water tanks, there is a stratification effect where the hot water layer rests above a cooler
             * layer of water below. For this reason cold water is fed in at the bottom of the tank and the hot water is
             * drawn from the top.
             *
             * Some water tanks might use multiple temperature probes to estimate the level of the hot water layer. A
             * water heater with multiple temperature probes is likely to implement an algorithm to estimate the hot
             * water tank percentage by taking into account the temperature values of each probe to determine the height
             * of the hot water.
             *
             * However it might be possible with a single temperature probe to estimate how much hot water is left using
             * a simpler algorithm:
             *
             * For example, if the target temperature was 60°C, the CurrentTemperature was 40°C from a single
             * temperature probe measuring the average water temperature and the temperature of incoming cold water
             * (COLD_WATER_TEMP) was assumed to be 20°C:
             *
             * TankPercentage = int(((current temperature - COLD_WATER_TEMP) / (target temperature - COLD_WATER_TEMP)) *
             * 100) TankPercentage = min( max(TankPercentage,0), 100)
             *
             * TankPercentage = 50%
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.5
             */
            readonly tankPercentage: Attribute<number, any>;
        };
    };
    /**
     * These elements and properties are present in all WaterHeaterManagement clusters.
     */
    const Base: {
        readonly id: 148;
        readonly name: "WaterHeaterManagement";
        readonly revision: 2;
        readonly features: {
            /**
             * Allows energy management control of the tank
             */
            readonly energyManagement: BitFlag;
            /**
             * Supports monitoring the percentage of hot water in the tank
             */
            readonly tankPercent: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the heat sources that the water heater can call on for heating. If a bit is set then the water
             * heater supports the corresponding heat source.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.1
             */
            readonly heaterTypes: FixedAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Immersion Heating Element 1
                 */
                immersionElement1: BitFlag;
                /**
                 * Immersion Heating Element 2
                 */
                immersionElement2: BitFlag;
                /**
                 * Heat pump Heating
                 */
                heatPump: BitFlag;
                /**
                 * Boiler Heating (e.g. Gas or Oil)
                 */
                boiler: BitFlag;
                /**
                 * Other Heating
                 */
                other: BitFlag;
            }>, any>;
            /**
             * Indicates if the water heater is heating water. If a bit is set then the corresponding heat source is
             * active.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.2
             */
            readonly heatDemand: Attribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Immersion Heating Element 1
                 */
                immersionElement1: BitFlag;
                /**
                 * Immersion Heating Element 2
                 */
                immersionElement2: BitFlag;
                /**
                 * Heat pump Heating
                 */
                heatPump: BitFlag;
                /**
                 * Boiler Heating (e.g. Gas or Oil)
                 */
                boiler: BitFlag;
                /**
                 * Other Heating
                 */
                other: BitFlag;
            }>, any>;
            /**
             * Indicates whether the Boost, as triggered by a Boost command, is currently Active or Inactive.
             *
             * See Section 9.5.8.1, “Boost Command” and Section 9.5.8.2, “CancelBoost Command” for more details.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.6
             */
            readonly boostState: Attribute<BoostState, any>;
        };
        readonly commands: {
            /**
             * Allows a client to request that the water heater is put into a Boost state.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.8.1
             */
            readonly boost: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                boostInfo: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the time period, in seconds, for which the boost state is activated.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.1
                     */
                    duration: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate whether the boost state shall be automatically canceled once the hot water has
                     * reached either:
                     *
                     *   - the set point temperature (from the thermostat cluster)
                     *
                     *   - the TemporarySetpoint temperature (if specified)
                     *
                     *   - the TargetPercentage (if specified).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.2
                     */
                    oneShot: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    /**
                     * This field shall indicate that the consumer wants the water to be heated quickly. This may cause multiple
                     * heat sources to be activated (e.g. a heat pump and direct electric immersion heating element).
                     *
                     * The choice of which heat sources are activated is manufacturer specific.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.3
                     */
                    emergencyBoost: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    /**
                     * This field shall indicate the target temperature to which the water will be heated.
                     *
                     * If included, it shall be used instead of the thermostat cluster set point temperature whilst the boost state
                     * is activated.
                     *
                     * The value of this field shall be within the constraints of the MinHeatSetpointLimit and MaxHeatSetpointLimit
                     * attributes (inclusive), of the thermostat cluster.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.4
                     */
                    temporarySetpoint: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the target percentage of hot water in the tank that the TankPercentage attribute
                     * must reach before the heating is switched off.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.5
                     */
                    targetPercentage: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the percentage to which the hot water in the tank shall be allowed to fall before
                     * again beginning to reheat it.
                     *
                     * For example if the TargetPercentage was 80%, and the TargetReheat was 40%, then after initial heating to 80%
                     * hot water, the tank may have hot water drawn off until only 40% hot water remains. At this point the heater
                     * will begin to heat back up to 80% of hot water. If this field and the OneShot field were both omitted,
                     * heating would begin again after any water draw which reduced the TankPercentage below 80%.
                     *
                     * This field shall be less than or equal to the TargetPercentage field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.6
                     */
                    targetReheat: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                }>>;
            }>, void, any>;
            /**
             * Allows a client to cancel an ongoing Boost operation.
             *
             * This command has no payload.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.8.2
             */
            readonly cancelBoost: Command<void, void, any>;
        };
        readonly events: {
            /**
             * This event shall be generated whenever a Boost command is accepted.
             *
             * The corresponding structure fields within the WaterHeaterBoostInfoStruct are copied from the Boost
             * command.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.9.1
             */
            readonly boostStarted: Event<import("../tlv/TlvObject.js").TypeFromFields<{
                boostInfo: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the time period, in seconds, for which the boost state is activated.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.1
                     */
                    duration: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate whether the boost state shall be automatically canceled once the hot water has
                     * reached either:
                     *
                     *   - the set point temperature (from the thermostat cluster)
                     *
                     *   - the TemporarySetpoint temperature (if specified)
                     *
                     *   - the TargetPercentage (if specified).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.2
                     */
                    oneShot: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    /**
                     * This field shall indicate that the consumer wants the water to be heated quickly. This may cause multiple
                     * heat sources to be activated (e.g. a heat pump and direct electric immersion heating element).
                     *
                     * The choice of which heat sources are activated is manufacturer specific.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.3
                     */
                    emergencyBoost: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    /**
                     * This field shall indicate the target temperature to which the water will be heated.
                     *
                     * If included, it shall be used instead of the thermostat cluster set point temperature whilst the boost state
                     * is activated.
                     *
                     * The value of this field shall be within the constraints of the MinHeatSetpointLimit and MaxHeatSetpointLimit
                     * attributes (inclusive), of the thermostat cluster.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.4
                     */
                    temporarySetpoint: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the target percentage of hot water in the tank that the TankPercentage attribute
                     * must reach before the heating is switched off.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.5
                     */
                    targetPercentage: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the percentage to which the hot water in the tank shall be allowed to fall before
                     * again beginning to reheat it.
                     *
                     * For example if the TargetPercentage was 80%, and the TargetReheat was 40%, then after initial heating to 80%
                     * hot water, the tank may have hot water drawn off until only 40% hot water remains. At this point the heater
                     * will begin to heat back up to 80% of hot water. If this field and the OneShot field were both omitted,
                     * heating would begin again after any water draw which reduced the TankPercentage below 80%.
                     *
                     * This field shall be less than or equal to the TargetPercentage field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.6
                     */
                    targetReheat: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                }>>;
            }>, any>;
            /**
             * This event shall be generated whenever the BoostState transitions from Active to Inactive.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.9.2
             */
            readonly boostEnded: Event<void, any>;
        };
        /**
         * This metadata controls which WaterHeaterManagementCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly energyManagement: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the volume of water that the hot water tank can hold (in units of Litres). This allows an
                     * energy management system to estimate the required heating energy needed to reach the target temperature.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.3
                     */
                    readonly tankVolume: Attribute<number, any>;
                    /**
                     * Indicates the estimated heat energy needed to raise the water temperature to the target setpoint. This
                     * can be computed by taking the specific heat capacity of water (4182 J/kg °C) and by knowing the current
                     * temperature of the water, the tank volume and target temperature.
                     *
                     * For example, if the target temperature was 60°C, the current temperature was 20°C and the tank volume was
                     * 100L:
                     *
                     * Mass of water = 1kg per Litre Total Mass = 100 x 1kg = 100kg Δ Temperature = (target temperature -
                     * current temperature) = (60°C - 20°C) = 40°C
                     *
                     * Energy required to heat the water to 60°C = 4182 x 40 x 100 = 16,728,000 J
                     *
                     * Converting Joules in to Wh of heat (divide by 3600): = 16,728,000 J / 3600 = 4647 Wh (4.65kWh)
                     *
                     * If the TankPercent feature is supported, then this estimate shall also take into account the percentage
                     * of the water in the tank which is already hot.
                     *
                     * > [!NOTE]
                     *
                     * > The electrical energy required to heat the water depends on the heating system used to heat the water.
                     *   For example, a direct electric immersion heating element can be close to 100% efficient, so the
                     *   electrical energy needed to heat the hot water is nearly the same as the EstimatedHeatEnergyRequired.
                     *   However some forms of heating, such as an air-source heat pump which extracts heat from ambient air,
                     *   requires much less electrical energy to heat hot water. Heat pumps can be produce 3kWh of heat output
                     *   for 1kWh of electrical energy input. The conversion between heat energy and electrical energy is
                     *   outside the scope of this cluster.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.4
                     */
                    readonly estimatedHeatRequired: Attribute<number | bigint, any>;
                };
            };
        }, {
            readonly flags: {
                readonly tankPercent: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates an approximate level of hot water stored in the tank, which might help consumers understand the
                     * amount of hot water remaining in the tank. The accuracy of this attribute is manufacturer specific.
                     *
                     * In most hot water tanks, there is a stratification effect where the hot water layer rests above a cooler
                     * layer of water below. For this reason cold water is fed in at the bottom of the tank and the hot water is
                     * drawn from the top.
                     *
                     * Some water tanks might use multiple temperature probes to estimate the level of the hot water layer. A
                     * water heater with multiple temperature probes is likely to implement an algorithm to estimate the hot
                     * water tank percentage by taking into account the temperature values of each probe to determine the height
                     * of the hot water.
                     *
                     * However it might be possible with a single temperature probe to estimate how much hot water is left using
                     * a simpler algorithm:
                     *
                     * For example, if the target temperature was 60°C, the CurrentTemperature was 40°C from a single
                     * temperature probe measuring the average water temperature and the temperature of incoming cold water
                     * (COLD_WATER_TEMP) was assumed to be 20°C:
                     *
                     * TankPercentage = int(((current temperature - COLD_WATER_TEMP) / (target temperature - COLD_WATER_TEMP)) *
                     * 100) TankPercentage = min( max(TankPercentage,0), 100)
                     *
                     * TankPercentage = 50%
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.5
                     */
                    readonly tankPercentage: Attribute<number, any>;
                };
            };
        }];
    };
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster<{
        readonly id: 148;
        readonly name: "WaterHeaterManagement";
        readonly revision: 2;
        readonly features: {
            /**
             * Allows energy management control of the tank
             */
            readonly energyManagement: BitFlag;
            /**
             * Supports monitoring the percentage of hot water in the tank
             */
            readonly tankPercent: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the heat sources that the water heater can call on for heating. If a bit is set then the water
             * heater supports the corresponding heat source.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.1
             */
            readonly heaterTypes: FixedAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Immersion Heating Element 1
                 */
                immersionElement1: BitFlag;
                /**
                 * Immersion Heating Element 2
                 */
                immersionElement2: BitFlag;
                /**
                 * Heat pump Heating
                 */
                heatPump: BitFlag;
                /**
                 * Boiler Heating (e.g. Gas or Oil)
                 */
                boiler: BitFlag;
                /**
                 * Other Heating
                 */
                other: BitFlag;
            }>, any>;
            /**
             * Indicates if the water heater is heating water. If a bit is set then the corresponding heat source is
             * active.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.2
             */
            readonly heatDemand: Attribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Immersion Heating Element 1
                 */
                immersionElement1: BitFlag;
                /**
                 * Immersion Heating Element 2
                 */
                immersionElement2: BitFlag;
                /**
                 * Heat pump Heating
                 */
                heatPump: BitFlag;
                /**
                 * Boiler Heating (e.g. Gas or Oil)
                 */
                boiler: BitFlag;
                /**
                 * Other Heating
                 */
                other: BitFlag;
            }>, any>;
            /**
             * Indicates whether the Boost, as triggered by a Boost command, is currently Active or Inactive.
             *
             * See Section 9.5.8.1, “Boost Command” and Section 9.5.8.2, “CancelBoost Command” for more details.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.6
             */
            readonly boostState: Attribute<BoostState, any>;
        };
        readonly commands: {
            /**
             * Allows a client to request that the water heater is put into a Boost state.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.8.1
             */
            readonly boost: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                boostInfo: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the time period, in seconds, for which the boost state is activated.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.1
                     */
                    duration: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate whether the boost state shall be automatically canceled once the hot water has
                     * reached either:
                     *
                     *   - the set point temperature (from the thermostat cluster)
                     *
                     *   - the TemporarySetpoint temperature (if specified)
                     *
                     *   - the TargetPercentage (if specified).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.2
                     */
                    oneShot: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    /**
                     * This field shall indicate that the consumer wants the water to be heated quickly. This may cause multiple
                     * heat sources to be activated (e.g. a heat pump and direct electric immersion heating element).
                     *
                     * The choice of which heat sources are activated is manufacturer specific.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.3
                     */
                    emergencyBoost: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    /**
                     * This field shall indicate the target temperature to which the water will be heated.
                     *
                     * If included, it shall be used instead of the thermostat cluster set point temperature whilst the boost state
                     * is activated.
                     *
                     * The value of this field shall be within the constraints of the MinHeatSetpointLimit and MaxHeatSetpointLimit
                     * attributes (inclusive), of the thermostat cluster.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.4
                     */
                    temporarySetpoint: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the target percentage of hot water in the tank that the TankPercentage attribute
                     * must reach before the heating is switched off.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.5
                     */
                    targetPercentage: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the percentage to which the hot water in the tank shall be allowed to fall before
                     * again beginning to reheat it.
                     *
                     * For example if the TargetPercentage was 80%, and the TargetReheat was 40%, then after initial heating to 80%
                     * hot water, the tank may have hot water drawn off until only 40% hot water remains. At this point the heater
                     * will begin to heat back up to 80% of hot water. If this field and the OneShot field were both omitted,
                     * heating would begin again after any water draw which reduced the TankPercentage below 80%.
                     *
                     * This field shall be less than or equal to the TargetPercentage field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.6
                     */
                    targetReheat: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                }>>;
            }>, void, any>;
            /**
             * Allows a client to cancel an ongoing Boost operation.
             *
             * This command has no payload.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.8.2
             */
            readonly cancelBoost: Command<void, void, any>;
        };
        readonly events: {
            /**
             * This event shall be generated whenever a Boost command is accepted.
             *
             * The corresponding structure fields within the WaterHeaterBoostInfoStruct are copied from the Boost
             * command.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.9.1
             */
            readonly boostStarted: Event<import("../tlv/TlvObject.js").TypeFromFields<{
                boostInfo: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the time period, in seconds, for which the boost state is activated.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.1
                     */
                    duration: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate whether the boost state shall be automatically canceled once the hot water has
                     * reached either:
                     *
                     *   - the set point temperature (from the thermostat cluster)
                     *
                     *   - the TemporarySetpoint temperature (if specified)
                     *
                     *   - the TargetPercentage (if specified).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.2
                     */
                    oneShot: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    /**
                     * This field shall indicate that the consumer wants the water to be heated quickly. This may cause multiple
                     * heat sources to be activated (e.g. a heat pump and direct electric immersion heating element).
                     *
                     * The choice of which heat sources are activated is manufacturer specific.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.3
                     */
                    emergencyBoost: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    /**
                     * This field shall indicate the target temperature to which the water will be heated.
                     *
                     * If included, it shall be used instead of the thermostat cluster set point temperature whilst the boost state
                     * is activated.
                     *
                     * The value of this field shall be within the constraints of the MinHeatSetpointLimit and MaxHeatSetpointLimit
                     * attributes (inclusive), of the thermostat cluster.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.4
                     */
                    temporarySetpoint: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the target percentage of hot water in the tank that the TankPercentage attribute
                     * must reach before the heating is switched off.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.5
                     */
                    targetPercentage: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the percentage to which the hot water in the tank shall be allowed to fall before
                     * again beginning to reheat it.
                     *
                     * For example if the TargetPercentage was 80%, and the TargetReheat was 40%, then after initial heating to 80%
                     * hot water, the tank may have hot water drawn off until only 40% hot water remains. At this point the heater
                     * will begin to heat back up to 80% of hot water. If this field and the OneShot field were both omitted,
                     * heating would begin again after any water draw which reduced the TankPercentage below 80%.
                     *
                     * This field shall be less than or equal to the TargetPercentage field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.6
                     */
                    targetReheat: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                }>>;
            }>, any>;
            /**
             * This event shall be generated whenever the BoostState transitions from Active to Inactive.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.9.2
             */
            readonly boostEnded: Event<void, any>;
        };
        /**
         * This metadata controls which WaterHeaterManagementCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly energyManagement: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the volume of water that the hot water tank can hold (in units of Litres). This allows an
                     * energy management system to estimate the required heating energy needed to reach the target temperature.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.3
                     */
                    readonly tankVolume: Attribute<number, any>;
                    /**
                     * Indicates the estimated heat energy needed to raise the water temperature to the target setpoint. This
                     * can be computed by taking the specific heat capacity of water (4182 J/kg °C) and by knowing the current
                     * temperature of the water, the tank volume and target temperature.
                     *
                     * For example, if the target temperature was 60°C, the current temperature was 20°C and the tank volume was
                     * 100L:
                     *
                     * Mass of water = 1kg per Litre Total Mass = 100 x 1kg = 100kg Δ Temperature = (target temperature -
                     * current temperature) = (60°C - 20°C) = 40°C
                     *
                     * Energy required to heat the water to 60°C = 4182 x 40 x 100 = 16,728,000 J
                     *
                     * Converting Joules in to Wh of heat (divide by 3600): = 16,728,000 J / 3600 = 4647 Wh (4.65kWh)
                     *
                     * If the TankPercent feature is supported, then this estimate shall also take into account the percentage
                     * of the water in the tank which is already hot.
                     *
                     * > [!NOTE]
                     *
                     * > The electrical energy required to heat the water depends on the heating system used to heat the water.
                     *   For example, a direct electric immersion heating element can be close to 100% efficient, so the
                     *   electrical energy needed to heat the hot water is nearly the same as the EstimatedHeatEnergyRequired.
                     *   However some forms of heating, such as an air-source heat pump which extracts heat from ambient air,
                     *   requires much less electrical energy to heat hot water. Heat pumps can be produce 3kWh of heat output
                     *   for 1kWh of electrical energy input. The conversion between heat energy and electrical energy is
                     *   outside the scope of this cluster.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.4
                     */
                    readonly estimatedHeatRequired: Attribute<number | bigint, any>;
                };
            };
        }, {
            readonly flags: {
                readonly tankPercent: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates an approximate level of hot water stored in the tank, which might help consumers understand the
                     * amount of hot water remaining in the tank. The accuracy of this attribute is manufacturer specific.
                     *
                     * In most hot water tanks, there is a stratification effect where the hot water layer rests above a cooler
                     * layer of water below. For this reason cold water is fed in at the bottom of the tank and the hot water is
                     * drawn from the top.
                     *
                     * Some water tanks might use multiple temperature probes to estimate the level of the hot water layer. A
                     * water heater with multiple temperature probes is likely to implement an algorithm to estimate the hot
                     * water tank percentage by taking into account the temperature values of each probe to determine the height
                     * of the hot water.
                     *
                     * However it might be possible with a single temperature probe to estimate how much hot water is left using
                     * a simpler algorithm:
                     *
                     * For example, if the target temperature was 60°C, the CurrentTemperature was 40°C from a single
                     * temperature probe measuring the average water temperature and the temperature of incoming cold water
                     * (COLD_WATER_TEMP) was assumed to be 20°C:
                     *
                     * TankPercentage = int(((current temperature - COLD_WATER_TEMP) / (target temperature - COLD_WATER_TEMP)) *
                     * 100) TankPercentage = min( max(TankPercentage,0), 100)
                     *
                     * TankPercentage = 50%
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.7.5
                     */
                    readonly tankPercentage: Attribute<number, any>;
                };
            };
        }];
    }, []>;
    /**
     * This cluster is used to allow clients to control the operation of a hot water heating appliance so that it can be
     * used with energy management.
     *
     * Heating of hot water is one of the main energy uses in homes, and when coupled with the Energy Management
     * cluster, it can help consumers save cost (e.g. using power at cheaper times or from local solar PV generation).
     *
     * WaterHeaterManagementCluster supports optional features that you can enable with the
     * WaterHeaterManagementCluster.with() factory method.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 9.5
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    /**
     * @see {@link Complete}
     */
    const CompleteInstance: MutableCluster<{
        readonly id: import("#general").Branded<148, "ClusterId">;
        readonly name: "WaterHeaterManagement";
        readonly revision: 2;
        readonly features: {
            /**
             * Allows energy management control of the tank
             */
            readonly energyManagement: BitFlag;
            /**
             * Supports monitoring the percentage of hot water in the tank
             */
            readonly tankPercent: BitFlag;
        };
        readonly attributes: {
            readonly tankVolume: Attribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    energyManagement: boolean;
                }];
            };
            readonly estimatedHeatRequired: Attribute<number | bigint, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    energyManagement: boolean;
                }];
            };
            readonly tankPercentage: Attribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    tankPercent: boolean;
                }];
            };
            readonly heaterTypes: FixedAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Immersion Heating Element 1
                 */
                immersionElement1: BitFlag;
                /**
                 * Immersion Heating Element 2
                 */
                immersionElement2: BitFlag;
                /**
                 * Heat pump Heating
                 */
                heatPump: BitFlag;
                /**
                 * Boiler Heating (e.g. Gas or Oil)
                 */
                boiler: BitFlag;
                /**
                 * Other Heating
                 */
                other: BitFlag;
            }>, any>;
            readonly heatDemand: Attribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Immersion Heating Element 1
                 */
                immersionElement1: BitFlag;
                /**
                 * Immersion Heating Element 2
                 */
                immersionElement2: BitFlag;
                /**
                 * Heat pump Heating
                 */
                heatPump: BitFlag;
                /**
                 * Boiler Heating (e.g. Gas or Oil)
                 */
                boiler: BitFlag;
                /**
                 * Other Heating
                 */
                other: BitFlag;
            }>, any>;
            readonly boostState: Attribute<BoostState, any>;
            readonly clusterRevision: Attribute<number, never>;
            readonly featureMap: Attribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Allows energy management control of the tank
                 */
                readonly energyManagement: BitFlag;
                /**
                 * Supports monitoring the percentage of hot water in the tank
                 */
                readonly tankPercent: BitFlag;
            }>, never>;
            readonly attributeList: Attribute<import("../index.js").AttributeId[], never>;
            readonly acceptedCommandList: Attribute<import("../index.js").CommandId[], never>;
            readonly generatedCommandList: Attribute<import("../index.js").CommandId[], never>;
        };
        readonly commands: {
            /**
             * Allows a client to request that the water heater is put into a Boost state.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.8.1
             */
            readonly boost: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                boostInfo: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the time period, in seconds, for which the boost state is activated.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.1
                     */
                    duration: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate whether the boost state shall be automatically canceled once the hot water has
                     * reached either:
                     *
                     *   - the set point temperature (from the thermostat cluster)
                     *
                     *   - the TemporarySetpoint temperature (if specified)
                     *
                     *   - the TargetPercentage (if specified).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.2
                     */
                    oneShot: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    /**
                     * This field shall indicate that the consumer wants the water to be heated quickly. This may cause multiple
                     * heat sources to be activated (e.g. a heat pump and direct electric immersion heating element).
                     *
                     * The choice of which heat sources are activated is manufacturer specific.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.3
                     */
                    emergencyBoost: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    /**
                     * This field shall indicate the target temperature to which the water will be heated.
                     *
                     * If included, it shall be used instead of the thermostat cluster set point temperature whilst the boost state
                     * is activated.
                     *
                     * The value of this field shall be within the constraints of the MinHeatSetpointLimit and MaxHeatSetpointLimit
                     * attributes (inclusive), of the thermostat cluster.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.4
                     */
                    temporarySetpoint: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the target percentage of hot water in the tank that the TankPercentage attribute
                     * must reach before the heating is switched off.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.5
                     */
                    targetPercentage: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the percentage to which the hot water in the tank shall be allowed to fall before
                     * again beginning to reheat it.
                     *
                     * For example if the TargetPercentage was 80%, and the TargetReheat was 40%, then after initial heating to 80%
                     * hot water, the tank may have hot water drawn off until only 40% hot water remains. At this point the heater
                     * will begin to heat back up to 80% of hot water. If this field and the OneShot field were both omitted,
                     * heating would begin again after any water draw which reduced the TankPercentage below 80%.
                     *
                     * This field shall be less than or equal to the TargetPercentage field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.6
                     */
                    targetReheat: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                }>>;
            }>, void, any>;
            /**
             * Allows a client to cancel an ongoing Boost operation.
             *
             * This command has no payload.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.8.2
             */
            readonly cancelBoost: Command<void, void, any>;
        };
        readonly events: {
            /**
             * This event shall be generated whenever a Boost command is accepted.
             *
             * The corresponding structure fields within the WaterHeaterBoostInfoStruct are copied from the Boost
             * command.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.9.1
             */
            readonly boostStarted: Event<import("../tlv/TlvObject.js").TypeFromFields<{
                boostInfo: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the time period, in seconds, for which the boost state is activated.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.1
                     */
                    duration: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate whether the boost state shall be automatically canceled once the hot water has
                     * reached either:
                     *
                     *   - the set point temperature (from the thermostat cluster)
                     *
                     *   - the TemporarySetpoint temperature (if specified)
                     *
                     *   - the TargetPercentage (if specified).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.2
                     */
                    oneShot: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    /**
                     * This field shall indicate that the consumer wants the water to be heated quickly. This may cause multiple
                     * heat sources to be activated (e.g. a heat pump and direct electric immersion heating element).
                     *
                     * The choice of which heat sources are activated is manufacturer specific.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.3
                     */
                    emergencyBoost: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    /**
                     * This field shall indicate the target temperature to which the water will be heated.
                     *
                     * If included, it shall be used instead of the thermostat cluster set point temperature whilst the boost state
                     * is activated.
                     *
                     * The value of this field shall be within the constraints of the MinHeatSetpointLimit and MaxHeatSetpointLimit
                     * attributes (inclusive), of the thermostat cluster.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.4
                     */
                    temporarySetpoint: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the target percentage of hot water in the tank that the TankPercentage attribute
                     * must reach before the heating is switched off.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.5
                     */
                    targetPercentage: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the percentage to which the hot water in the tank shall be allowed to fall before
                     * again beginning to reheat it.
                     *
                     * For example if the TargetPercentage was 80%, and the TargetReheat was 40%, then after initial heating to 80%
                     * hot water, the tank may have hot water drawn off until only 40% hot water remains. At this point the heater
                     * will begin to heat back up to 80% of hot water. If this field and the OneShot field were both omitted,
                     * heating would begin again after any water draw which reduced the TankPercentage below 80%.
                     *
                     * This field shall be less than or equal to the TargetPercentage field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 9.5.6.3.6
                     */
                    targetReheat: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                }>>;
            }>, any>;
            /**
             * This event shall be generated whenever the BoostState transitions from Active to Inactive.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 9.5.9.2
             */
            readonly boostEnded: Event<void, any>;
        };
    }, []>;
    /**
     * This cluster supports all WaterHeaterManagement features. It may support illegal feature combinations.
     *
     * If you use this cluster you must manually specify which features are active and ensure the set of active features
     * is legal per the Matter specification.
     */
    interface Complete extends Identity<typeof CompleteInstance> {
    }
    const Complete: Complete;
}
export type WaterHeaterManagementCluster = WaterHeaterManagement.Cluster;
export declare const WaterHeaterManagementCluster: WaterHeaterManagement.Cluster;
//# sourceMappingURL=water-heater-management.d.ts.map