/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { ClusterBehavior } from "../../behavior/cluster/ClusterBehavior.js";
import { ClusterType } from "@matter/types";
import { Identity } from "@matter/general";
/**
 * ElectricalEnergyMeasurementBehavior is the base class for objects that support interaction with
 * {@link ElectricalEnergyMeasurement.Cluster}.
 *
 * ElectricalEnergyMeasurement.Cluster requires you to enable one or more optional features. You can do so using
 * {@link ElectricalEnergyMeasurementBehavior.with}.
 */
export declare const ElectricalEnergyMeasurementBehaviorConstructor: ClusterBehavior.Type<ClusterType.Of<{
    readonly id: 145;
    readonly name: "ElectricalEnergyMeasurement";
    readonly revision: 1;
    readonly features: {
        readonly importedEnergy: import("@matter/types").BitFlag;
        readonly exportedEnergy: import("@matter/types").BitFlag;
        readonly cumulativeEnergy: import("@matter/types").BitFlag;
        readonly periodicEnergy: import("@matter/types").BitFlag;
    };
    readonly attributes: {
        readonly accuracy: import("@matter/types").FixedAttribute<import("@matter/types").TypeFromFields<{
            measurementType: import("@matter/types").FieldType<import("@matter/types").MeasurementType>;
            measured: import("@matter/types").FieldType<boolean>;
            minMeasuredValue: import("@matter/types").FieldType<number | bigint>;
            maxMeasuredValue: import("@matter/types").FieldType<number | bigint>;
            accuracyRanges: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                rangeMin: import("@matter/types").FieldType<number | bigint>;
                rangeMax: import("@matter/types").FieldType<number | bigint>;
                percentMax: import("@matter/types").OptionalFieldType<number>;
                percentMin: import("@matter/types").OptionalFieldType<number>;
                percentTypical: import("@matter/types").OptionalFieldType<number>;
                fixedMax: import("@matter/types").OptionalFieldType<number | bigint>;
                fixedMin: import("@matter/types").OptionalFieldType<number | bigint>;
                fixedTypical: import("@matter/types").OptionalFieldType<number | bigint>;
            }>[]>;
        }>, any>;
    };
    readonly extensions: readonly [{
        readonly flags: {
            readonly importedEnergy: true;
            readonly cumulativeEnergy: true;
        };
        readonly component: {
            readonly attributes: {
                readonly cumulativeEnergyImported: import("@matter/types").Attribute<import("@matter/types").TypeFromFields<{
                    energy: import("@matter/types").FieldType<number | bigint>;
                    startTimestamp: import("@matter/types").OptionalFieldType<number>;
                    endTimestamp: import("@matter/types").OptionalFieldType<number>;
                    startSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                    endSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                }> | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly exportedEnergy: true;
            readonly cumulativeEnergy: true;
        };
        readonly component: {
            readonly attributes: {
                readonly cumulativeEnergyExported: import("@matter/types").Attribute<import("@matter/types").TypeFromFields<{
                    energy: import("@matter/types").FieldType<number | bigint>;
                    startTimestamp: import("@matter/types").OptionalFieldType<number>;
                    endTimestamp: import("@matter/types").OptionalFieldType<number>;
                    startSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                    endSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                }> | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly importedEnergy: true;
            readonly periodicEnergy: true;
        };
        readonly component: {
            readonly attributes: {
                readonly periodicEnergyImported: import("@matter/types").Attribute<import("@matter/types").TypeFromFields<{
                    energy: import("@matter/types").FieldType<number | bigint>;
                    startTimestamp: import("@matter/types").OptionalFieldType<number>;
                    endTimestamp: import("@matter/types").OptionalFieldType<number>;
                    startSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                    endSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                }> | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly exportedEnergy: true;
            readonly periodicEnergy: true;
        };
        readonly component: {
            readonly attributes: {
                readonly periodicEnergyExported: import("@matter/types").Attribute<import("@matter/types").TypeFromFields<{
                    energy: import("@matter/types").FieldType<number | bigint>;
                    startTimestamp: import("@matter/types").OptionalFieldType<number>;
                    endTimestamp: import("@matter/types").OptionalFieldType<number>;
                    startSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                    endSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                }> | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly cumulativeEnergy: true;
        };
        readonly component: {
            readonly attributes: {
                readonly cumulativeEnergyReset: import("@matter/types").OptionalAttribute<import("@matter/types").TypeFromFields<{
                    importedResetTimestamp: import("@matter/types").OptionalFieldType<number | null>;
                    exportedResetTimestamp: import("@matter/types").OptionalFieldType<number | null>;
                    importedResetSystime: import("@matter/types").OptionalFieldType<number | bigint | null>;
                    exportedResetSystime: import("@matter/types").OptionalFieldType<number | bigint | null>;
                }> | null, any>;
            };
            readonly events: {
                readonly cumulativeEnergyMeasured: import("@matter/types").Event<import("@matter/types").TypeFromFields<{
                    energyImported: import("@matter/types").OptionalFieldType<import("@matter/types").TypeFromFields<{
                        energy: import("@matter/types").FieldType<number | bigint>;
                        startTimestamp: import("@matter/types").OptionalFieldType<number>;
                        endTimestamp: import("@matter/types").OptionalFieldType<number>;
                        startSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                        endSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                    }>>;
                    energyExported: import("@matter/types").OptionalFieldType<import("@matter/types").TypeFromFields<{
                        energy: import("@matter/types").FieldType<number | bigint>;
                        startTimestamp: import("@matter/types").OptionalFieldType<number>;
                        endTimestamp: import("@matter/types").OptionalFieldType<number>;
                        startSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                        endSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                    }>>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly periodicEnergy: true;
        };
        readonly component: {
            readonly events: {
                readonly periodicEnergyMeasured: import("@matter/types").Event<import("@matter/types").TypeFromFields<{
                    energyImported: import("@matter/types").OptionalFieldType<import("@matter/types").TypeFromFields<{
                        energy: import("@matter/types").FieldType<number | bigint>;
                        startTimestamp: import("@matter/types").OptionalFieldType<number>;
                        endTimestamp: import("@matter/types").OptionalFieldType<number>;
                        startSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                        endSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                    }>>;
                    energyExported: import("@matter/types").OptionalFieldType<import("@matter/types").TypeFromFields<{
                        energy: import("@matter/types").FieldType<number | bigint>;
                        startTimestamp: import("@matter/types").OptionalFieldType<number>;
                        endTimestamp: import("@matter/types").OptionalFieldType<number>;
                        startSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                        endSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                    }>>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly importedEnergy: false;
            readonly exportedEnergy: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly cumulativeEnergy: false;
            readonly periodicEnergy: false;
        };
        readonly component: false;
    }];
}>, typeof ClusterBehavior, {
    components: never[];
}>;
export interface ElectricalEnergyMeasurementBehaviorConstructor extends Identity<typeof ElectricalEnergyMeasurementBehaviorConstructor> {
}
export declare const ElectricalEnergyMeasurementBehavior: ElectricalEnergyMeasurementBehaviorConstructor;
export interface ElectricalEnergyMeasurementBehavior extends InstanceType<ElectricalEnergyMeasurementBehaviorConstructor> {
}
export declare namespace ElectricalEnergyMeasurementBehavior {
    interface State extends InstanceType<typeof ElectricalEnergyMeasurementBehavior.State> {
    }
}
//# sourceMappingURL=ElectricalEnergyMeasurementBehavior.d.ts.map