/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { ClusterBehavior } from "../../behavior/cluster/ClusterBehavior.js";
import { ClusterType } from "#types";
import { Identity } from "#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("#types").BitFlag;
        readonly exportedEnergy: import("#types").BitFlag;
        readonly cumulativeEnergy: import("#types").BitFlag;
        readonly periodicEnergy: import("#types").BitFlag;
    };
    readonly attributes: {
        readonly accuracy: import("#types").FixedAttribute<import("#types").TypeFromFields<{
            measurementType: import("#types").FieldType<import("#types").MeasurementType>;
            measured: import("#types").FieldType<boolean>;
            minMeasuredValue: import("#types").FieldType<number | bigint>;
            maxMeasuredValue: import("#types").FieldType<number | bigint>;
            accuracyRanges: import("#types").FieldType<import("#types").TypeFromFields<{
                rangeMin: import("#types").FieldType<number | bigint>;
                rangeMax: import("#types").FieldType<number | bigint>;
                percentMax: import("#types").OptionalFieldType<number>;
                percentMin: import("#types").OptionalFieldType<number>;
                percentTypical: import("#types").OptionalFieldType<number>;
                fixedMax: import("#types").OptionalFieldType<number | bigint>;
                fixedMin: import("#types").OptionalFieldType<number | bigint>;
                fixedTypical: import("#types").OptionalFieldType<number | bigint>;
            }>[]>;
        }>, any>;
    };
    readonly extensions: readonly [{
        readonly flags: {
            readonly importedEnergy: true;
            readonly cumulativeEnergy: true;
        };
        readonly component: {
            readonly attributes: {
                readonly cumulativeEnergyImported: import("#types").Attribute<import("#types").TypeFromFields<{
                    energy: import("#types").FieldType<number | bigint>;
                    startTimestamp: import("#types").OptionalFieldType<number>;
                    endTimestamp: import("#types").OptionalFieldType<number>;
                    startSystime: import("#types").OptionalFieldType<number | bigint>;
                    endSystime: import("#types").OptionalFieldType<number | bigint>;
                }> | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly exportedEnergy: true;
            readonly cumulativeEnergy: true;
        };
        readonly component: {
            readonly attributes: {
                readonly cumulativeEnergyExported: import("#types").Attribute<import("#types").TypeFromFields<{
                    energy: import("#types").FieldType<number | bigint>;
                    startTimestamp: import("#types").OptionalFieldType<number>;
                    endTimestamp: import("#types").OptionalFieldType<number>;
                    startSystime: import("#types").OptionalFieldType<number | bigint>;
                    endSystime: import("#types").OptionalFieldType<number | bigint>;
                }> | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly importedEnergy: true;
            readonly periodicEnergy: true;
        };
        readonly component: {
            readonly attributes: {
                readonly periodicEnergyImported: import("#types").Attribute<import("#types").TypeFromFields<{
                    energy: import("#types").FieldType<number | bigint>;
                    startTimestamp: import("#types").OptionalFieldType<number>;
                    endTimestamp: import("#types").OptionalFieldType<number>;
                    startSystime: import("#types").OptionalFieldType<number | bigint>;
                    endSystime: import("#types").OptionalFieldType<number | bigint>;
                }> | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly exportedEnergy: true;
            readonly periodicEnergy: true;
        };
        readonly component: {
            readonly attributes: {
                readonly periodicEnergyExported: import("#types").Attribute<import("#types").TypeFromFields<{
                    energy: import("#types").FieldType<number | bigint>;
                    startTimestamp: import("#types").OptionalFieldType<number>;
                    endTimestamp: import("#types").OptionalFieldType<number>;
                    startSystime: import("#types").OptionalFieldType<number | bigint>;
                    endSystime: import("#types").OptionalFieldType<number | bigint>;
                }> | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly cumulativeEnergy: true;
        };
        readonly component: {
            readonly attributes: {
                readonly cumulativeEnergyReset: import("#types").OptionalAttribute<import("#types").TypeFromFields<{
                    importedResetTimestamp: import("#types").OptionalFieldType<number | null>;
                    exportedResetTimestamp: import("#types").OptionalFieldType<number | null>;
                    importedResetSystime: import("#types").OptionalFieldType<number | bigint | null>;
                    exportedResetSystime: import("#types").OptionalFieldType<number | bigint | null>;
                }> | null, any>;
            };
            readonly events: {
                readonly cumulativeEnergyMeasured: import("#types").Event<import("#types").TypeFromFields<{
                    energyImported: import("#types").OptionalFieldType<import("#types").TypeFromFields<{
                        energy: import("#types").FieldType<number | bigint>;
                        startTimestamp: import("#types").OptionalFieldType<number>;
                        endTimestamp: import("#types").OptionalFieldType<number>;
                        startSystime: import("#types").OptionalFieldType<number | bigint>;
                        endSystime: import("#types").OptionalFieldType<number | bigint>;
                    }>>;
                    energyExported: import("#types").OptionalFieldType<import("#types").TypeFromFields<{
                        energy: import("#types").FieldType<number | bigint>;
                        startTimestamp: import("#types").OptionalFieldType<number>;
                        endTimestamp: import("#types").OptionalFieldType<number>;
                        startSystime: import("#types").OptionalFieldType<number | bigint>;
                        endSystime: import("#types").OptionalFieldType<number | bigint>;
                    }>>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly periodicEnergy: true;
        };
        readonly component: {
            readonly events: {
                readonly periodicEnergyMeasured: import("#types").Event<import("#types").TypeFromFields<{
                    energyImported: import("#types").OptionalFieldType<import("#types").TypeFromFields<{
                        energy: import("#types").FieldType<number | bigint>;
                        startTimestamp: import("#types").OptionalFieldType<number>;
                        endTimestamp: import("#types").OptionalFieldType<number>;
                        startSystime: import("#types").OptionalFieldType<number | bigint>;
                        endSystime: import("#types").OptionalFieldType<number | bigint>;
                    }>>;
                    energyExported: import("#types").OptionalFieldType<import("#types").TypeFromFields<{
                        energy: import("#types").FieldType<number | bigint>;
                        startTimestamp: import("#types").OptionalFieldType<number>;
                        endTimestamp: import("#types").OptionalFieldType<number>;
                        startSystime: import("#types").OptionalFieldType<number | bigint>;
                        endSystime: import("#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