/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
/*** THIS FILE IS GENERATED, DO NOT EDIT ***/
import { ThermostatServer as BaseThermostatServer } from "../behaviors/thermostat/ThermostatServer.js";
import { WaterHeaterManagementServer as BaseWaterHeaterManagementServer } from "../behaviors/water-heater-management/WaterHeaterManagementServer.js";
import { WaterHeaterModeServer as BaseWaterHeaterModeServer } from "../behaviors/water-heater-mode/WaterHeaterModeServer.js";
import { IdentifyServer as BaseIdentifyServer } from "../behaviors/identify/IdentifyServer.js";
import { MutableEndpoint } from "../endpoint/type/MutableEndpoint.js";
import { Identity } from "#general";
/**
 * A water heater is a device that is generally installed in properties to heat water for showers, baths etc.
 *
 * WaterHeaterDevice requires Thermostat cluster but Thermostat is not added by default because you must select the
 * features your device supports. You can add manually using WaterHeaterDevice.with().
 *
 * @see {@link MatterSpecification.v142.Device} § 14.2
 */
export interface WaterHeaterDevice extends Identity<typeof WaterHeaterDeviceDefinition> {
}
export declare namespace WaterHeaterRequirements {
    /**
     * The Thermostat cluster is required by the Matter specification.
     *
     * This version of {@link ThermostatServer} is specialized per the specification.
     */
    const ThermostatServer: import("../index.js").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
        readonly id: 513;
        readonly name: "Thermostat";
        readonly revision: 9;
        readonly features: {
            readonly heating: import("@matter/types").BitFlag;
            readonly cooling: import("@matter/types").BitFlag;
            readonly occupancy: import("@matter/types").BitFlag;
            readonly scheduleConfiguration: import("@matter/types").BitFlag;
            readonly setback: import("@matter/types").BitFlag;
            readonly autoMode: import("@matter/types").BitFlag;
            readonly localTemperatureNotExposed: import("@matter/types").BitFlag;
            readonly matterScheduleConfiguration: import("@matter/types").BitFlag;
            readonly presets: import("@matter/types").BitFlag;
        };
        readonly attributes: {
            readonly localTemperature: import("@matter/types").Attribute<number | null, any>;
            readonly outdoorTemperature: import("@matter/types").OptionalAttribute<number | null, any>;
            readonly hvacSystemTypeConfiguration: import("@matter/types").OptionalWritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
                coolingStage: import("@matter/types").BitField;
                heatingStage: import("@matter/types").BitField;
                heatingIsHeatPump: import("@matter/types").BitFlag;
                heatingUsesFuel: import("@matter/types").BitFlag;
            }>, any>;
            readonly remoteSensing: import("@matter/types").OptionalWritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
                localTemperature: import("@matter/types").BitFlag;
                outdoorTemperature: import("@matter/types").BitFlag;
                occupancy: import("@matter/types").BitFlag;
            }>, any>;
            readonly controlSequenceOfOperation: import("@matter/types").WritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.ControlSequenceOfOperation, any>;
            readonly systemMode: import("@matter/types").WritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.SystemMode, any>;
            readonly temperatureSetpointHold: import("@matter/types").OptionalWritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.TemperatureSetpointHold, any>;
            readonly temperatureSetpointHoldDuration: import("@matter/types").OptionalWritableAttribute<number | null, any>;
            readonly thermostatProgrammingOperationMode: import("@matter/types").OptionalWritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
                scheduleActive: import("@matter/types").BitFlag;
                autoRecovery: import("@matter/types").BitFlag;
                economy: import("@matter/types").BitFlag;
            }>, any>;
            readonly thermostatRunningState: import("@matter/types").OptionalAttribute<import("@matter/types").TypeFromPartialBitSchema<{
                heat: import("@matter/types").BitFlag;
                cool: import("@matter/types").BitFlag;
                fan: import("@matter/types").BitFlag;
                heatStage2: import("@matter/types").BitFlag;
                coolStage2: import("@matter/types").BitFlag;
                fanStage2: import("@matter/types").BitFlag;
                fanStage3: import("@matter/types").BitFlag;
            }>, any>;
            readonly setpointChangeSource: import("@matter/types").OptionalAttribute<import("@matter/types/clusters/thermostat").Thermostat.SetpointChangeSource, any>;
            readonly setpointChangeAmount: import("@matter/types").OptionalAttribute<number | null, any>;
            readonly setpointChangeSourceTimestamp: import("@matter/types").OptionalAttribute<number, any>;
            readonly emergencyHeatDelta: import("@matter/types").OptionalWritableAttribute<number, any>;
            readonly acType: import("@matter/types").OptionalWritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.AcType, any>;
            readonly acCapacity: import("@matter/types").OptionalWritableAttribute<number, any>;
            readonly acRefrigerantType: import("@matter/types").OptionalWritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.AcRefrigerantType, any>;
            readonly acCompressorType: import("@matter/types").OptionalWritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.AcCompressorType, any>;
            readonly acErrorCode: import("@matter/types").OptionalWritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
                compressorFail: import("@matter/types").BitFlag;
                roomSensorFail: import("@matter/types").BitFlag;
                outdoorSensorFail: import("@matter/types").BitFlag;
                coilSensorFail: import("@matter/types").BitFlag;
                fanFail: import("@matter/types").BitFlag;
            }>, any>;
            readonly acLouverPosition: import("@matter/types").OptionalWritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.AcLouverPosition, any>;
            readonly acCoilTemperature: import("@matter/types").OptionalAttribute<number | null, any>;
            readonly acCapacityFormat: import("@matter/types").OptionalWritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.AcCapacityFormat, any>;
            readonly setpointHoldExpiryTimestamp: import("@matter/types").OptionalAttribute<number | null, any>;
        };
        readonly commands: {
            readonly setpointRaiseLower: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                mode: import("@matter/types").FieldType<import("@matter/types/clusters/thermostat").Thermostat.SetpointRaiseLowerMode>;
                amount: import("@matter/types").FieldType<number>;
            }>, void, any>;
            readonly atomicRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                requestType: import("@matter/types").FieldType<import("@matter/types/clusters/thermostat").Thermostat.RequestType>;
                attributeRequests: import("@matter/types").FieldType<import("@matter/types").AttributeId[]>;
                timeout: import("@matter/types").OptionalFieldType<number>;
            }>, import("@matter/types").TypeFromFields<{
                statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
                attributeStatus: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                    attributeId: import("@matter/types").FieldType<import("@matter/types").AttributeId>;
                    statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
                }>[]>;
                timeout: import("@matter/types").OptionalFieldType<number>;
            }>, any>;
        };
        readonly extensions: readonly [{
            readonly flags: {
                readonly occupancy: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly occupancy: import("@matter/types").Attribute<import("@matter/types").TypeFromPartialBitSchema<{
                        occupied: import("@matter/types").BitFlag;
                    }>, any>;
                };
            };
        }, {
            readonly flags: {
                readonly heating: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly absMinHeatSetpointLimit: import("@matter/types").OptionalFixedAttribute<number, any>;
                    readonly absMaxHeatSetpointLimit: import("@matter/types").OptionalFixedAttribute<number, any>;
                    readonly piHeatingDemand: import("@matter/types").OptionalAttribute<number, any>;
                    readonly occupiedHeatingSetpoint: import("@matter/types").WritableAttribute<number, any>;
                    readonly minHeatSetpointLimit: import("@matter/types").OptionalWritableAttribute<number, any>;
                    readonly maxHeatSetpointLimit: import("@matter/types").OptionalWritableAttribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly cooling: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly absMinCoolSetpointLimit: import("@matter/types").OptionalFixedAttribute<number, any>;
                    readonly absMaxCoolSetpointLimit: import("@matter/types").OptionalFixedAttribute<number, any>;
                    readonly piCoolingDemand: import("@matter/types").OptionalAttribute<number, any>;
                    readonly occupiedCoolingSetpoint: import("@matter/types").WritableAttribute<number, any>;
                    readonly minCoolSetpointLimit: import("@matter/types").OptionalWritableAttribute<number, any>;
                    readonly maxCoolSetpointLimit: import("@matter/types").OptionalWritableAttribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly localTemperatureNotExposed: false;
            };
            readonly component: {
                readonly attributes: {
                    readonly localTemperatureCalibration: import("@matter/types").OptionalWritableAttribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly cooling: true;
                readonly occupancy: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly unoccupiedCoolingSetpoint: import("@matter/types").WritableAttribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly heating: true;
                readonly occupancy: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly unoccupiedHeatingSetpoint: import("@matter/types").WritableAttribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly autoMode: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly minSetpointDeadBand: import("@matter/types").WritableAttribute<number, any>;
                    readonly thermostatRunningMode: import("@matter/types").OptionalAttribute<import("@matter/types/clusters/thermostat").Thermostat.ThermostatRunningMode, any>;
                };
            };
        }, {
            readonly flags: {
                readonly scheduleConfiguration: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly startOfWeek: import("@matter/types").FixedAttribute<import("@matter/types/clusters/thermostat").Thermostat.StartOfWeek, any>;
                    readonly numberOfWeeklyTransitions: import("@matter/types").FixedAttribute<number, any>;
                    readonly numberOfDailyTransitions: import("@matter/types").FixedAttribute<number, any>;
                };
                readonly commands: {
                    readonly setWeeklySchedule: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                        numberOfTransitionsForSequence: import("@matter/types").FieldType<number>;
                        dayOfWeekForSequence: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                            sunday: import("@matter/types").BitFlag;
                            monday: import("@matter/types").BitFlag;
                            tuesday: import("@matter/types").BitFlag;
                            wednesday: import("@matter/types").BitFlag;
                            thursday: import("@matter/types").BitFlag;
                            friday: import("@matter/types").BitFlag;
                            saturday: import("@matter/types").BitFlag;
                            away: import("@matter/types").BitFlag;
                        }>>;
                        modeForSequence: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                            heatSetpointPresent: import("@matter/types").BitFlag;
                            coolSetpointPresent: import("@matter/types").BitFlag;
                        }>>;
                        transitions: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                            transitionTime: import("@matter/types").FieldType<number>;
                            heatSetpoint: import("@matter/types").FieldType<number | null>;
                            coolSetpoint: import("@matter/types").FieldType<number | null>;
                        }>[]>;
                    }>, void, any>;
                    readonly getWeeklySchedule: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                        daysToReturn: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                            sunday: import("@matter/types").BitFlag;
                            monday: import("@matter/types").BitFlag;
                            tuesday: import("@matter/types").BitFlag;
                            wednesday: import("@matter/types").BitFlag;
                            thursday: import("@matter/types").BitFlag;
                            friday: import("@matter/types").BitFlag;
                            saturday: import("@matter/types").BitFlag;
                            away: import("@matter/types").BitFlag;
                        }>>;
                        modeToReturn: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                            heatSetpointPresent: import("@matter/types").BitFlag;
                            coolSetpointPresent: import("@matter/types").BitFlag;
                        }>>;
                    }>, import("@matter/types").TypeFromFields<{
                        numberOfTransitionsForSequence: import("@matter/types").FieldType<number>;
                        dayOfWeekForSequence: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                            sunday: import("@matter/types").BitFlag;
                            monday: import("@matter/types").BitFlag;
                            tuesday: import("@matter/types").BitFlag;
                            wednesday: import("@matter/types").BitFlag;
                            thursday: import("@matter/types").BitFlag;
                            friday: import("@matter/types").BitFlag;
                            saturday: import("@matter/types").BitFlag;
                            away: import("@matter/types").BitFlag;
                        }>>;
                        modeForSequence: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                            heatSetpointPresent: import("@matter/types").BitFlag;
                            coolSetpointPresent: import("@matter/types").BitFlag;
                        }>>;
                        transitions: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                            transitionTime: import("@matter/types").FieldType<number>;
                            heatSetpoint: import("@matter/types").FieldType<number | null>;
                            coolSetpoint: import("@matter/types").FieldType<number | null>;
                        }>[]>;
                    }>, any>;
                    readonly clearWeeklySchedule: import("@matter/types").Command<void, void, any>;
                };
            };
        }, {
            readonly flags: {
                readonly setback: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly occupiedSetback: import("@matter/types").WritableAttribute<number | null, any>;
                    readonly occupiedSetbackMin: import("@matter/types").FixedAttribute<number | null, any>;
                    readonly occupiedSetbackMax: import("@matter/types").FixedAttribute<number | null, any>;
                };
            };
        }, {
            readonly flags: {
                readonly setback: true;
                readonly occupancy: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly unoccupiedSetback: import("@matter/types").WritableAttribute<number | null, any>;
                    readonly unoccupiedSetbackMin: import("@matter/types").FixedAttribute<number | null, any>;
                    readonly unoccupiedSetbackMax: import("@matter/types").FixedAttribute<number | null, any>;
                };
            };
        }, {
            readonly flags: {
                readonly presets: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly presetTypes: import("@matter/types").FixedAttribute<import("@matter/types").TypeFromFields<{
                        presetScenario: import("@matter/types").FieldType<import("@matter/types/clusters/thermostat").Thermostat.PresetScenario>;
                        numberOfPresets: import("@matter/types").FieldType<number>;
                        presetTypeFeatures: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                            automatic: import("@matter/types").BitFlag;
                            supportsNames: import("@matter/types").BitFlag;
                        }>>;
                    }>[], any>;
                    readonly numberOfPresets: import("@matter/types").FixedAttribute<number, any>;
                    readonly activePresetHandle: import("@matter/types").Attribute<AllowSharedBufferSource | null, any>;
                    readonly presets: import("@matter/types").WritableAttribute<import("@matter/types").TypeFromFields<{
                        presetHandle: import("@matter/types").FieldType<AllowSharedBufferSource | null>;
                        presetScenario: import("@matter/types").FieldType<import("@matter/types/clusters/thermostat").Thermostat.PresetScenario>;
                        name: import("@matter/types").OptionalFieldType<string | null>;
                        coolingSetpoint: import("@matter/types").OptionalFieldType<number>;
                        heatingSetpoint: import("@matter/types").OptionalFieldType<number>;
                        builtIn: import("@matter/types").FieldType<boolean | null>;
                    }>[], any>;
                };
                readonly commands: {
                    readonly setActivePresetRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                        presetHandle: import("@matter/types").FieldType<AllowSharedBufferSource | null>;
                    }>, void, any>;
                };
            };
        }, {
            readonly flags: {
                readonly matterScheduleConfiguration: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly scheduleTypes: import("@matter/types").FixedAttribute<import("@matter/types").TypeFromFields<{
                        systemMode: import("@matter/types").FieldType<import("@matter/types/clusters/thermostat").Thermostat.SystemMode>;
                        numberOfSchedules: import("@matter/types").FieldType<number>;
                        scheduleTypeFeatures: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                            supportsPresets: import("@matter/types").BitFlag;
                            supportsSetpoints: import("@matter/types").BitFlag;
                            supportsNames: import("@matter/types").BitFlag;
                            supportsOff: import("@matter/types").BitFlag;
                        }>>;
                    }>[], any>;
                    readonly numberOfSchedules: import("@matter/types").FixedAttribute<number, any>;
                    readonly numberOfScheduleTransitions: import("@matter/types").FixedAttribute<number, any>;
                    readonly numberOfScheduleTransitionPerDay: import("@matter/types").FixedAttribute<number | null, any>;
                    readonly activeScheduleHandle: import("@matter/types").Attribute<AllowSharedBufferSource | null, any>;
                    readonly schedules: import("@matter/types").WritableAttribute<import("@matter/types").TypeFromFields<{
                        scheduleHandle: import("@matter/types").FieldType<AllowSharedBufferSource | null>;
                        systemMode: import("@matter/types").FieldType<import("@matter/types/clusters/thermostat").Thermostat.SystemMode>;
                        name: import("@matter/types").OptionalFieldType<string>;
                        presetHandle: import("@matter/types").OptionalFieldType<AllowSharedBufferSource>;
                        transitions: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                            dayOfWeek: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                                sunday: import("@matter/types").BitFlag;
                                monday: import("@matter/types").BitFlag;
                                tuesday: import("@matter/types").BitFlag;
                                wednesday: import("@matter/types").BitFlag;
                                thursday: import("@matter/types").BitFlag;
                                friday: import("@matter/types").BitFlag;
                                saturday: import("@matter/types").BitFlag;
                                away: import("@matter/types").BitFlag;
                            }>>;
                            transitionTime: import("@matter/types").FieldType<number>;
                            presetHandle: import("@matter/types").OptionalFieldType<AllowSharedBufferSource>;
                            systemMode: import("@matter/types").OptionalFieldType<import("@matter/types/clusters/thermostat").Thermostat.SystemMode>;
                            coolingSetpoint: import("@matter/types").OptionalFieldType<number>;
                            heatingSetpoint: import("@matter/types").OptionalFieldType<number>;
                        }>[]>;
                        builtIn: import("@matter/types").FieldType<boolean | null>;
                    }>[], any>;
                };
                readonly commands: {
                    readonly setActiveScheduleRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                        scheduleHandle: import("@matter/types").FieldType<AllowSharedBufferSource>;
                    }>, void, any>;
                };
            };
        }, {
            readonly flags: {
                readonly autoMode: true;
                readonly heating: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly autoMode: true;
                readonly cooling: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly heating: false;
                readonly cooling: false;
            };
            readonly component: false;
        }];
    }>, readonly ["Heating"]>, typeof BaseThermostatServer, import("../behaviors/index.js").ThermostatInterface>;
    /**
     * The WaterHeaterManagement cluster is required by the Matter specification.
     *
     * We provide this alias to the default implementation {@link WaterHeaterManagementServer} for convenience.
     */
    const WaterHeaterManagementServer: typeof BaseWaterHeaterManagementServer;
    /**
     * The WaterHeaterMode cluster is required by the Matter specification.
     *
     * We provide this alias to the default implementation {@link WaterHeaterModeServer} for convenience.
     */
    const WaterHeaterModeServer: typeof BaseWaterHeaterModeServer;
    /**
     * The Identify cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link IdentifyServer} for convenience.
     */
    const IdentifyServer: typeof BaseIdentifyServer;
    /**
     * An implementation for each server cluster supported by the endpoint per the Matter specification.
     */
    const server: {
        mandatory: {
            Thermostat: import("../index.js").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
                readonly id: 513;
                readonly name: "Thermostat";
                readonly revision: 9;
                readonly features: {
                    readonly heating: import("@matter/types").BitFlag;
                    readonly cooling: import("@matter/types").BitFlag;
                    readonly occupancy: import("@matter/types").BitFlag;
                    readonly scheduleConfiguration: import("@matter/types").BitFlag;
                    readonly setback: import("@matter/types").BitFlag;
                    readonly autoMode: import("@matter/types").BitFlag;
                    readonly localTemperatureNotExposed: import("@matter/types").BitFlag;
                    readonly matterScheduleConfiguration: import("@matter/types").BitFlag;
                    readonly presets: import("@matter/types").BitFlag;
                };
                readonly attributes: {
                    readonly localTemperature: import("@matter/types").Attribute<number | null, any>;
                    readonly outdoorTemperature: import("@matter/types").OptionalAttribute<number | null, any>;
                    readonly hvacSystemTypeConfiguration: import("@matter/types").OptionalWritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
                        coolingStage: import("@matter/types").BitField;
                        heatingStage: import("@matter/types").BitField;
                        heatingIsHeatPump: import("@matter/types").BitFlag;
                        heatingUsesFuel: import("@matter/types").BitFlag;
                    }>, any>;
                    readonly remoteSensing: import("@matter/types").OptionalWritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
                        localTemperature: import("@matter/types").BitFlag;
                        outdoorTemperature: import("@matter/types").BitFlag;
                        occupancy: import("@matter/types").BitFlag;
                    }>, any>;
                    readonly controlSequenceOfOperation: import("@matter/types").WritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.ControlSequenceOfOperation, any>;
                    readonly systemMode: import("@matter/types").WritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.SystemMode, any>;
                    readonly temperatureSetpointHold: import("@matter/types").OptionalWritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.TemperatureSetpointHold, any>;
                    readonly temperatureSetpointHoldDuration: import("@matter/types").OptionalWritableAttribute<number | null, any>;
                    readonly thermostatProgrammingOperationMode: import("@matter/types").OptionalWritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
                        scheduleActive: import("@matter/types").BitFlag;
                        autoRecovery: import("@matter/types").BitFlag;
                        economy: import("@matter/types").BitFlag;
                    }>, any>;
                    readonly thermostatRunningState: import("@matter/types").OptionalAttribute<import("@matter/types").TypeFromPartialBitSchema<{
                        heat: import("@matter/types").BitFlag;
                        cool: import("@matter/types").BitFlag;
                        fan: import("@matter/types").BitFlag;
                        heatStage2: import("@matter/types").BitFlag;
                        coolStage2: import("@matter/types").BitFlag;
                        fanStage2: import("@matter/types").BitFlag;
                        fanStage3: import("@matter/types").BitFlag;
                    }>, any>;
                    readonly setpointChangeSource: import("@matter/types").OptionalAttribute<import("@matter/types/clusters/thermostat").Thermostat.SetpointChangeSource, any>;
                    readonly setpointChangeAmount: import("@matter/types").OptionalAttribute<number | null, any>;
                    readonly setpointChangeSourceTimestamp: import("@matter/types").OptionalAttribute<number, any>;
                    readonly emergencyHeatDelta: import("@matter/types").OptionalWritableAttribute<number, any>;
                    readonly acType: import("@matter/types").OptionalWritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.AcType, any>;
                    readonly acCapacity: import("@matter/types").OptionalWritableAttribute<number, any>;
                    readonly acRefrigerantType: import("@matter/types").OptionalWritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.AcRefrigerantType, any>;
                    readonly acCompressorType: import("@matter/types").OptionalWritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.AcCompressorType, any>;
                    readonly acErrorCode: import("@matter/types").OptionalWritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
                        compressorFail: import("@matter/types").BitFlag;
                        roomSensorFail: import("@matter/types").BitFlag;
                        outdoorSensorFail: import("@matter/types").BitFlag;
                        coilSensorFail: import("@matter/types").BitFlag;
                        fanFail: import("@matter/types").BitFlag;
                    }>, any>;
                    readonly acLouverPosition: import("@matter/types").OptionalWritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.AcLouverPosition, any>;
                    readonly acCoilTemperature: import("@matter/types").OptionalAttribute<number | null, any>;
                    readonly acCapacityFormat: import("@matter/types").OptionalWritableAttribute<import("@matter/types/clusters/thermostat").Thermostat.AcCapacityFormat, any>;
                    readonly setpointHoldExpiryTimestamp: import("@matter/types").OptionalAttribute<number | null, any>;
                };
                readonly commands: {
                    readonly setpointRaiseLower: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                        mode: import("@matter/types").FieldType<import("@matter/types/clusters/thermostat").Thermostat.SetpointRaiseLowerMode>;
                        amount: import("@matter/types").FieldType<number>;
                    }>, void, any>;
                    readonly atomicRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                        requestType: import("@matter/types").FieldType<import("@matter/types/clusters/thermostat").Thermostat.RequestType>;
                        attributeRequests: import("@matter/types").FieldType<import("@matter/types").AttributeId[]>;
                        timeout: import("@matter/types").OptionalFieldType<number>;
                    }>, import("@matter/types").TypeFromFields<{
                        statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
                        attributeStatus: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                            attributeId: import("@matter/types").FieldType<import("@matter/types").AttributeId>;
                            statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
                        }>[]>;
                        timeout: import("@matter/types").OptionalFieldType<number>;
                    }>, any>;
                };
                readonly extensions: readonly [{
                    readonly flags: {
                        readonly occupancy: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly occupancy: import("@matter/types").Attribute<import("@matter/types").TypeFromPartialBitSchema<{
                                occupied: import("@matter/types").BitFlag;
                            }>, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly heating: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly absMinHeatSetpointLimit: import("@matter/types").OptionalFixedAttribute<number, any>;
                            readonly absMaxHeatSetpointLimit: import("@matter/types").OptionalFixedAttribute<number, any>;
                            readonly piHeatingDemand: import("@matter/types").OptionalAttribute<number, any>;
                            readonly occupiedHeatingSetpoint: import("@matter/types").WritableAttribute<number, any>;
                            readonly minHeatSetpointLimit: import("@matter/types").OptionalWritableAttribute<number, any>;
                            readonly maxHeatSetpointLimit: import("@matter/types").OptionalWritableAttribute<number, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly cooling: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly absMinCoolSetpointLimit: import("@matter/types").OptionalFixedAttribute<number, any>;
                            readonly absMaxCoolSetpointLimit: import("@matter/types").OptionalFixedAttribute<number, any>;
                            readonly piCoolingDemand: import("@matter/types").OptionalAttribute<number, any>;
                            readonly occupiedCoolingSetpoint: import("@matter/types").WritableAttribute<number, any>;
                            readonly minCoolSetpointLimit: import("@matter/types").OptionalWritableAttribute<number, any>;
                            readonly maxCoolSetpointLimit: import("@matter/types").OptionalWritableAttribute<number, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly localTemperatureNotExposed: false;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly localTemperatureCalibration: import("@matter/types").OptionalWritableAttribute<number, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly cooling: true;
                        readonly occupancy: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly unoccupiedCoolingSetpoint: import("@matter/types").WritableAttribute<number, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly heating: true;
                        readonly occupancy: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly unoccupiedHeatingSetpoint: import("@matter/types").WritableAttribute<number, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly autoMode: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly minSetpointDeadBand: import("@matter/types").WritableAttribute<number, any>;
                            readonly thermostatRunningMode: import("@matter/types").OptionalAttribute<import("@matter/types/clusters/thermostat").Thermostat.ThermostatRunningMode, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly scheduleConfiguration: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly startOfWeek: import("@matter/types").FixedAttribute<import("@matter/types/clusters/thermostat").Thermostat.StartOfWeek, any>;
                            readonly numberOfWeeklyTransitions: import("@matter/types").FixedAttribute<number, any>;
                            readonly numberOfDailyTransitions: import("@matter/types").FixedAttribute<number, any>;
                        };
                        readonly commands: {
                            readonly setWeeklySchedule: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                                numberOfTransitionsForSequence: import("@matter/types").FieldType<number>;
                                dayOfWeekForSequence: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                                    sunday: import("@matter/types").BitFlag;
                                    monday: import("@matter/types").BitFlag;
                                    tuesday: import("@matter/types").BitFlag;
                                    wednesday: import("@matter/types").BitFlag;
                                    thursday: import("@matter/types").BitFlag;
                                    friday: import("@matter/types").BitFlag;
                                    saturday: import("@matter/types").BitFlag;
                                    away: import("@matter/types").BitFlag;
                                }>>;
                                modeForSequence: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                                    heatSetpointPresent: import("@matter/types").BitFlag;
                                    coolSetpointPresent: import("@matter/types").BitFlag;
                                }>>;
                                transitions: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                                    transitionTime: import("@matter/types").FieldType<number>;
                                    heatSetpoint: import("@matter/types").FieldType<number | null>;
                                    coolSetpoint: import("@matter/types").FieldType<number | null>;
                                }>[]>;
                            }>, void, any>;
                            readonly getWeeklySchedule: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                                daysToReturn: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                                    sunday: import("@matter/types").BitFlag;
                                    monday: import("@matter/types").BitFlag;
                                    tuesday: import("@matter/types").BitFlag;
                                    wednesday: import("@matter/types").BitFlag;
                                    thursday: import("@matter/types").BitFlag;
                                    friday: import("@matter/types").BitFlag;
                                    saturday: import("@matter/types").BitFlag;
                                    away: import("@matter/types").BitFlag;
                                }>>;
                                modeToReturn: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                                    heatSetpointPresent: import("@matter/types").BitFlag;
                                    coolSetpointPresent: import("@matter/types").BitFlag;
                                }>>;
                            }>, import("@matter/types").TypeFromFields<{
                                numberOfTransitionsForSequence: import("@matter/types").FieldType<number>;
                                dayOfWeekForSequence: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                                    sunday: import("@matter/types").BitFlag;
                                    monday: import("@matter/types").BitFlag;
                                    tuesday: import("@matter/types").BitFlag;
                                    wednesday: import("@matter/types").BitFlag;
                                    thursday: import("@matter/types").BitFlag;
                                    friday: import("@matter/types").BitFlag;
                                    saturday: import("@matter/types").BitFlag;
                                    away: import("@matter/types").BitFlag;
                                }>>;
                                modeForSequence: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                                    heatSetpointPresent: import("@matter/types").BitFlag;
                                    coolSetpointPresent: import("@matter/types").BitFlag;
                                }>>;
                                transitions: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                                    transitionTime: import("@matter/types").FieldType<number>;
                                    heatSetpoint: import("@matter/types").FieldType<number | null>;
                                    coolSetpoint: import("@matter/types").FieldType<number | null>;
                                }>[]>;
                            }>, any>;
                            readonly clearWeeklySchedule: import("@matter/types").Command<void, void, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly setback: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly occupiedSetback: import("@matter/types").WritableAttribute<number | null, any>;
                            readonly occupiedSetbackMin: import("@matter/types").FixedAttribute<number | null, any>;
                            readonly occupiedSetbackMax: import("@matter/types").FixedAttribute<number | null, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly setback: true;
                        readonly occupancy: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly unoccupiedSetback: import("@matter/types").WritableAttribute<number | null, any>;
                            readonly unoccupiedSetbackMin: import("@matter/types").FixedAttribute<number | null, any>;
                            readonly unoccupiedSetbackMax: import("@matter/types").FixedAttribute<number | null, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly presets: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly presetTypes: import("@matter/types").FixedAttribute<import("@matter/types").TypeFromFields<{
                                presetScenario: import("@matter/types").FieldType<import("@matter/types/clusters/thermostat").Thermostat.PresetScenario>;
                                numberOfPresets: import("@matter/types").FieldType<number>;
                                presetTypeFeatures: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                                    automatic: import("@matter/types").BitFlag;
                                    supportsNames: import("@matter/types").BitFlag;
                                }>>;
                            }>[], any>;
                            readonly numberOfPresets: import("@matter/types").FixedAttribute<number, any>;
                            readonly activePresetHandle: import("@matter/types").Attribute<AllowSharedBufferSource | null, any>;
                            readonly presets: import("@matter/types").WritableAttribute<import("@matter/types").TypeFromFields<{
                                presetHandle: import("@matter/types").FieldType<AllowSharedBufferSource | null>;
                                presetScenario: import("@matter/types").FieldType<import("@matter/types/clusters/thermostat").Thermostat.PresetScenario>;
                                name: import("@matter/types").OptionalFieldType<string | null>;
                                coolingSetpoint: import("@matter/types").OptionalFieldType<number>;
                                heatingSetpoint: import("@matter/types").OptionalFieldType<number>;
                                builtIn: import("@matter/types").FieldType<boolean | null>;
                            }>[], any>;
                        };
                        readonly commands: {
                            readonly setActivePresetRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                                presetHandle: import("@matter/types").FieldType<AllowSharedBufferSource | null>;
                            }>, void, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly matterScheduleConfiguration: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly scheduleTypes: import("@matter/types").FixedAttribute<import("@matter/types").TypeFromFields<{
                                systemMode: import("@matter/types").FieldType<import("@matter/types/clusters/thermostat").Thermostat.SystemMode>;
                                numberOfSchedules: import("@matter/types").FieldType<number>;
                                scheduleTypeFeatures: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                                    supportsPresets: import("@matter/types").BitFlag;
                                    supportsSetpoints: import("@matter/types").BitFlag;
                                    supportsNames: import("@matter/types").BitFlag;
                                    supportsOff: import("@matter/types").BitFlag;
                                }>>;
                            }>[], any>;
                            readonly numberOfSchedules: import("@matter/types").FixedAttribute<number, any>;
                            readonly numberOfScheduleTransitions: import("@matter/types").FixedAttribute<number, any>;
                            readonly numberOfScheduleTransitionPerDay: import("@matter/types").FixedAttribute<number | null, any>;
                            readonly activeScheduleHandle: import("@matter/types").Attribute<AllowSharedBufferSource | null, any>;
                            readonly schedules: import("@matter/types").WritableAttribute<import("@matter/types").TypeFromFields<{
                                scheduleHandle: import("@matter/types").FieldType<AllowSharedBufferSource | null>;
                                systemMode: import("@matter/types").FieldType<import("@matter/types/clusters/thermostat").Thermostat.SystemMode>;
                                name: import("@matter/types").OptionalFieldType<string>;
                                presetHandle: import("@matter/types").OptionalFieldType<AllowSharedBufferSource>;
                                transitions: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                                    dayOfWeek: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                                        sunday: import("@matter/types").BitFlag;
                                        monday: import("@matter/types").BitFlag;
                                        tuesday: import("@matter/types").BitFlag;
                                        wednesday: import("@matter/types").BitFlag;
                                        thursday: import("@matter/types").BitFlag;
                                        friday: import("@matter/types").BitFlag;
                                        saturday: import("@matter/types").BitFlag;
                                        away: import("@matter/types").BitFlag;
                                    }>>;
                                    transitionTime: import("@matter/types").FieldType<number>;
                                    presetHandle: import("@matter/types").OptionalFieldType<AllowSharedBufferSource>;
                                    systemMode: import("@matter/types").OptionalFieldType<import("@matter/types/clusters/thermostat").Thermostat.SystemMode>;
                                    coolingSetpoint: import("@matter/types").OptionalFieldType<number>;
                                    heatingSetpoint: import("@matter/types").OptionalFieldType<number>;
                                }>[]>;
                                builtIn: import("@matter/types").FieldType<boolean | null>;
                            }>[], any>;
                        };
                        readonly commands: {
                            readonly setActiveScheduleRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                                scheduleHandle: import("@matter/types").FieldType<AllowSharedBufferSource>;
                            }>, void, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly autoMode: true;
                        readonly heating: false;
                    };
                    readonly component: false;
                }, {
                    readonly flags: {
                        readonly autoMode: true;
                        readonly cooling: false;
                    };
                    readonly component: false;
                }, {
                    readonly flags: {
                        readonly heating: false;
                        readonly cooling: false;
                    };
                    readonly component: false;
                }];
            }>, readonly ["Heating"]>, typeof BaseThermostatServer, import("../behaviors/index.js").ThermostatInterface>;
            WaterHeaterManagement: typeof BaseWaterHeaterManagementServer;
            WaterHeaterMode: typeof BaseWaterHeaterModeServer;
        };
        optional: {
            Identify: typeof BaseIdentifyServer;
        };
    };
}
export declare const WaterHeaterDeviceDefinition: MutableEndpoint.With<import("../index.js").EndpointType.For<{
    readonly name: "WaterHeater";
    readonly deviceType: 1295;
    readonly deviceRevision: 1;
    readonly requirements: typeof WaterHeaterRequirements;
    readonly behaviors: {
        readonly waterHeaterManagement: typeof BaseWaterHeaterManagementServer;
    } & {
        readonly waterHeaterMode: typeof BaseWaterHeaterModeServer;
    };
}>, {
    readonly waterHeaterManagement: typeof BaseWaterHeaterManagementServer;
} & {
    readonly waterHeaterMode: typeof BaseWaterHeaterModeServer;
}>;
export declare const WaterHeaterDevice: WaterHeaterDevice;
//# sourceMappingURL=water-heater.d.ts.map