/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
/*** THIS FILE IS GENERATED, DO NOT EDIT ***/
import { DeviceEnergyManagement } from "@matter/types/clusters/device-energy-management";
import { ClusterBehavior } from "../../behavior/cluster/ClusterBehavior.js";
import { DeviceEnergyManagementInterface } from "./DeviceEnergyManagementInterface.js";
import { ClusterType } from "@matter/types";
import { Identity } from "@matter/general";
/**
 * DeviceEnergyManagementBehavior is the base class for objects that support interaction with
 * {@link DeviceEnergyManagement.Cluster}.
 *
 * DeviceEnergyManagement.Cluster requires you to enable one or more optional features. You can do so using
 * {@link DeviceEnergyManagementBehavior.with}.
 */
export declare const DeviceEnergyManagementBehaviorConstructor: ClusterBehavior.Type<ClusterType.Of<{
    readonly id: 152;
    readonly name: "DeviceEnergyManagement";
    readonly revision: 4;
    readonly features: {
        readonly powerAdjustment: import("@matter/types").BitFlag;
        readonly powerForecastReporting: import("@matter/types").BitFlag;
        readonly stateForecastReporting: import("@matter/types").BitFlag;
        readonly startTimeAdjustment: import("@matter/types").BitFlag;
        readonly pausable: import("@matter/types").BitFlag;
        readonly forecastAdjustment: import("@matter/types").BitFlag;
        readonly constraintBasedAdjustment: import("@matter/types").BitFlag;
    };
    readonly attributes: {
        readonly esaType: import("@matter/types").FixedAttribute<DeviceEnergyManagement.EsaType, any>;
        readonly esaCanGenerate: import("@matter/types").FixedAttribute<boolean, any>;
        readonly esaState: import("@matter/types").Attribute<DeviceEnergyManagement.EsaState, any>;
        readonly absMinPower: import("@matter/types").Attribute<number | bigint, any>;
        readonly absMaxPower: import("@matter/types").Attribute<number | bigint, any>;
    };
    readonly extensions: readonly [{
        readonly flags: {
            readonly powerAdjustment: true;
        };
        readonly component: {
            readonly attributes: {
                readonly powerAdjustmentCapability: import("@matter/types").Attribute<import("@matter/types").TypeFromFields<{
                    powerAdjustCapability: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                        minPower: import("@matter/types").FieldType<number | bigint>;
                        maxPower: import("@matter/types").FieldType<number | bigint>;
                        minDuration: import("@matter/types").FieldType<number>;
                        maxDuration: import("@matter/types").FieldType<number>;
                    }>[] | null>;
                    cause: import("@matter/types").FieldType<DeviceEnergyManagement.PowerAdjustReason>;
                }> | null, any>;
            };
            readonly commands: {
                readonly powerAdjustRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                    power: import("@matter/types").FieldType<number | bigint>;
                    duration: import("@matter/types").FieldType<number>;
                    cause: import("@matter/types").FieldType<DeviceEnergyManagement.AdjustmentCause>;
                }>, void, any>;
                readonly cancelPowerAdjustRequest: import("@matter/types").Command<void, void, any>;
            };
            readonly events: {
                readonly powerAdjustStart: import("@matter/types").Event<void, any>;
                readonly powerAdjustEnd: import("@matter/types").Event<import("@matter/types").TypeFromFields<{
                    cause: import("@matter/types").FieldType<DeviceEnergyManagement.Cause>;
                    duration: import("@matter/types").FieldType<number>;
                    energyUse: import("@matter/types").FieldType<number | bigint>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly powerForecastReporting: true;
        };
        readonly component: {
            readonly attributes: {
                readonly forecast: import("@matter/types").Attribute<import("@matter/types").TypeFromFields<{
                    forecastId: import("@matter/types").FieldType<number>;
                    activeSlotNumber: import("@matter/types").FieldType<number | null>;
                    startTime: import("@matter/types").FieldType<number>;
                    endTime: import("@matter/types").FieldType<number>;
                    earliestStartTime: import("@matter/types").OptionalFieldType<number | null>;
                    latestEndTime: import("@matter/types").OptionalFieldType<number>;
                    isPausable: import("@matter/types").FieldType<boolean>;
                    slots: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                        minDuration: import("@matter/types").FieldType<number>;
                        maxDuration: import("@matter/types").FieldType<number>;
                        defaultDuration: import("@matter/types").FieldType<number>;
                        elapsedSlotTime: import("@matter/types").FieldType<number>;
                        remainingSlotTime: import("@matter/types").FieldType<number>;
                        slotIsPausable: import("@matter/types").OptionalFieldType<boolean>;
                        minPauseDuration: import("@matter/types").OptionalFieldType<number>;
                        maxPauseDuration: import("@matter/types").OptionalFieldType<number>;
                        manufacturerEsaState: import("@matter/types").OptionalFieldType<number>;
                        nominalPower: import("@matter/types").OptionalFieldType<number | bigint>;
                        minPower: import("@matter/types").OptionalFieldType<number | bigint>;
                        maxPower: import("@matter/types").OptionalFieldType<number | bigint>;
                        nominalEnergy: import("@matter/types").OptionalFieldType<number | bigint>;
                        costs: import("@matter/types").OptionalFieldType<import("@matter/types").TypeFromFields<{
                            costType: import("@matter/types").FieldType<DeviceEnergyManagement.CostType>;
                            value: import("@matter/types").FieldType<number>;
                            decimalPoints: import("@matter/types").FieldType<number>;
                            currency: import("@matter/types").OptionalFieldType<number>;
                        }>[]>;
                        minPowerAdjustment: import("@matter/types").OptionalFieldType<number | bigint>;
                        maxPowerAdjustment: import("@matter/types").OptionalFieldType<number | bigint>;
                        minDurationAdjustment: import("@matter/types").OptionalFieldType<number>;
                        maxDurationAdjustment: import("@matter/types").OptionalFieldType<number>;
                    }>[]>;
                    forecastUpdateReason: import("@matter/types").FieldType<DeviceEnergyManagement.ForecastUpdateReason>;
                }> | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly stateForecastReporting: true;
        };
        readonly component: {
            readonly attributes: {
                readonly forecast: import("@matter/types").Attribute<import("@matter/types").TypeFromFields<{
                    forecastId: import("@matter/types").FieldType<number>;
                    activeSlotNumber: import("@matter/types").FieldType<number | null>;
                    startTime: import("@matter/types").FieldType<number>;
                    endTime: import("@matter/types").FieldType<number>;
                    earliestStartTime: import("@matter/types").OptionalFieldType<number | null>;
                    latestEndTime: import("@matter/types").OptionalFieldType<number>;
                    isPausable: import("@matter/types").FieldType<boolean>;
                    slots: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                        minDuration: import("@matter/types").FieldType<number>;
                        maxDuration: import("@matter/types").FieldType<number>;
                        defaultDuration: import("@matter/types").FieldType<number>;
                        elapsedSlotTime: import("@matter/types").FieldType<number>;
                        remainingSlotTime: import("@matter/types").FieldType<number>;
                        slotIsPausable: import("@matter/types").OptionalFieldType<boolean>;
                        minPauseDuration: import("@matter/types").OptionalFieldType<number>;
                        maxPauseDuration: import("@matter/types").OptionalFieldType<number>;
                        manufacturerEsaState: import("@matter/types").OptionalFieldType<number>;
                        nominalPower: import("@matter/types").OptionalFieldType<number | bigint>;
                        minPower: import("@matter/types").OptionalFieldType<number | bigint>;
                        maxPower: import("@matter/types").OptionalFieldType<number | bigint>;
                        nominalEnergy: import("@matter/types").OptionalFieldType<number | bigint>;
                        costs: import("@matter/types").OptionalFieldType<import("@matter/types").TypeFromFields<{
                            costType: import("@matter/types").FieldType<DeviceEnergyManagement.CostType>;
                            value: import("@matter/types").FieldType<number>;
                            decimalPoints: import("@matter/types").FieldType<number>;
                            currency: import("@matter/types").OptionalFieldType<number>;
                        }>[]>;
                        minPowerAdjustment: import("@matter/types").OptionalFieldType<number | bigint>;
                        maxPowerAdjustment: import("@matter/types").OptionalFieldType<number | bigint>;
                        minDurationAdjustment: import("@matter/types").OptionalFieldType<number>;
                        maxDurationAdjustment: import("@matter/types").OptionalFieldType<number>;
                    }>[]>;
                    forecastUpdateReason: import("@matter/types").FieldType<DeviceEnergyManagement.ForecastUpdateReason>;
                }> | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly powerAdjustment: true;
        };
        readonly component: {
            readonly attributes: {
                readonly optOutState: import("@matter/types").Attribute<DeviceEnergyManagement.OptOutState, any>;
            };
        };
    }, {
        readonly flags: {
            readonly startTimeAdjustment: true;
        };
        readonly component: {
            readonly attributes: {
                readonly optOutState: import("@matter/types").Attribute<DeviceEnergyManagement.OptOutState, any>;
            };
        };
    }, {
        readonly flags: {
            readonly pausable: true;
        };
        readonly component: {
            readonly attributes: {
                readonly optOutState: import("@matter/types").Attribute<DeviceEnergyManagement.OptOutState, any>;
            };
        };
    }, {
        readonly flags: {
            readonly forecastAdjustment: true;
        };
        readonly component: {
            readonly attributes: {
                readonly optOutState: import("@matter/types").Attribute<DeviceEnergyManagement.OptOutState, any>;
            };
        };
    }, {
        readonly flags: {
            readonly constraintBasedAdjustment: true;
        };
        readonly component: {
            readonly attributes: {
                readonly optOutState: import("@matter/types").Attribute<DeviceEnergyManagement.OptOutState, any>;
            };
        };
    }, {
        readonly flags: {
            readonly pausable: true;
        };
        readonly component: {
            readonly commands: {
                readonly pauseRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                    duration: import("@matter/types").FieldType<number>;
                    cause: import("@matter/types").FieldType<DeviceEnergyManagement.AdjustmentCause>;
                }>, void, any>;
                readonly resumeRequest: import("@matter/types").Command<void, void, any>;
            };
            readonly events: {
                readonly paused: import("@matter/types").Event<void, any>;
                readonly resumed: import("@matter/types").Event<import("@matter/types").TypeFromFields<{
                    cause: import("@matter/types").FieldType<DeviceEnergyManagement.Cause>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly startTimeAdjustment: true;
        };
        readonly component: {
            readonly commands: {
                readonly startTimeAdjustRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                    requestedStartTime: import("@matter/types").FieldType<number>;
                    cause: import("@matter/types").FieldType<DeviceEnergyManagement.AdjustmentCause>;
                }>, void, any>;
            };
        };
    }, {
        readonly flags: {
            readonly forecastAdjustment: true;
        };
        readonly component: {
            readonly commands: {
                readonly modifyForecastRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                    forecastId: import("@matter/types").FieldType<number>;
                    slotAdjustments: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                        slotIndex: import("@matter/types").FieldType<number>;
                        nominalPower: import("@matter/types").OptionalFieldType<number | bigint>;
                        duration: import("@matter/types").FieldType<number>;
                    }>[]>;
                    cause: import("@matter/types").FieldType<DeviceEnergyManagement.AdjustmentCause>;
                }>, void, any>;
            };
        };
    }, {
        readonly flags: {
            readonly constraintBasedAdjustment: true;
        };
        readonly component: {
            readonly commands: {
                readonly requestConstraintBasedForecast: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
                    constraints: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                        startTime: import("@matter/types").FieldType<number>;
                        duration: import("@matter/types").FieldType<number>;
                        nominalPower: import("@matter/types").OptionalFieldType<number | bigint>;
                        maximumEnergy: import("@matter/types").OptionalFieldType<number | bigint>;
                        loadControl: import("@matter/types").OptionalFieldType<number>;
                    }>[]>;
                    cause: import("@matter/types").FieldType<DeviceEnergyManagement.AdjustmentCause>;
                }>, void, any>;
            };
        };
    }, {
        readonly flags: {
            readonly startTimeAdjustment: true;
        };
        readonly component: {
            readonly commands: {
                readonly cancelRequest: import("@matter/types").Command<void, void, any>;
            };
        };
    }, {
        readonly flags: {
            readonly forecastAdjustment: true;
        };
        readonly component: {
            readonly commands: {
                readonly cancelRequest: import("@matter/types").Command<void, void, any>;
            };
        };
    }, {
        readonly flags: {
            readonly constraintBasedAdjustment: true;
        };
        readonly component: {
            readonly commands: {
                readonly cancelRequest: import("@matter/types").Command<void, void, any>;
            };
        };
    }, {
        readonly flags: {
            readonly staTrue: true;
            readonly pauTrue: false;
            readonly faTrue: false;
            readonly conTrue: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly powerForecastReporting: true;
            readonly stateForecastReporting: true;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly powerForecastReporting: false;
            readonly stateForecastReporting: false;
        };
        readonly component: false;
    }];
}>, ClusterBehavior.Type<ClusterType.Of<{
    readonly id: 0;
    readonly revision: 0;
    readonly name: "Unknown";
    readonly attributes: {};
    readonly commands: {};
    readonly events: {};
}>, typeof ClusterBehavior, DeviceEnergyManagementInterface>, DeviceEnergyManagementInterface>;
export interface DeviceEnergyManagementBehaviorConstructor extends Identity<typeof DeviceEnergyManagementBehaviorConstructor> {
}
export declare const DeviceEnergyManagementBehavior: DeviceEnergyManagementBehaviorConstructor;
export interface DeviceEnergyManagementBehavior extends InstanceType<DeviceEnergyManagementBehaviorConstructor> {
}
export declare namespace DeviceEnergyManagementBehavior {
    interface State extends InstanceType<typeof DeviceEnergyManagementBehavior.State> {
    }
}
//# sourceMappingURL=DeviceEnergyManagementBehavior.d.ts.map