/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
/*** THIS FILE IS GENERATED, DO NOT EDIT ***/
import { ElectricalPowerMeasurement } from "@matter/types/clusters/electrical-power-measurement";
import { ClusterBehavior } from "../../behavior/cluster/ClusterBehavior.js";
import { ClusterType } from "@matter/types";
import { Identity } from "@matter/general";
/**
 * ElectricalPowerMeasurementBehavior is the base class for objects that support interaction with
 * {@link ElectricalPowerMeasurement.Cluster}.
 *
 * ElectricalPowerMeasurement.Cluster requires you to enable one or more optional features. You can do so using
 * {@link ElectricalPowerMeasurementBehavior.with}.
 */
export declare const ElectricalPowerMeasurementBehaviorConstructor: ClusterBehavior.Type<ClusterType.Of<{
    readonly id: 144;
    readonly name: "ElectricalPowerMeasurement";
    readonly revision: 3;
    readonly features: {
        readonly directCurrent: import("@matter/types").BitFlag;
        readonly alternatingCurrent: import("@matter/types").BitFlag;
        readonly polyphasePower: import("@matter/types").BitFlag;
        readonly harmonics: import("@matter/types").BitFlag;
        readonly powerQuality: import("@matter/types").BitFlag;
    };
    readonly attributes: {
        readonly powerMode: import("@matter/types").Attribute<ElectricalPowerMeasurement.PowerMode, any>;
        readonly numberOfMeasurementTypes: import("@matter/types").FixedAttribute<number, any>;
        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 ranges: import("@matter/types").OptionalAttribute<import("@matter/types").TypeFromFields<{
            measurementType: import("@matter/types").FieldType<ElectricalPowerMeasurement.MeasurementType>;
            min: import("@matter/types").FieldType<number | bigint>;
            max: import("@matter/types").FieldType<number | bigint>;
            startTimestamp: import("@matter/types").OptionalFieldType<number>;
            endTimestamp: import("@matter/types").OptionalFieldType<number>;
            minTimestamp: import("@matter/types").OptionalFieldType<number>;
            maxTimestamp: import("@matter/types").OptionalFieldType<number>;
            startSystime: import("@matter/types").OptionalFieldType<number | bigint>;
            endSystime: import("@matter/types").OptionalFieldType<number | bigint>;
            minSystime: import("@matter/types").OptionalFieldType<number | bigint>;
            maxSystime: import("@matter/types").OptionalFieldType<number | bigint>;
        }>[], any>;
        readonly voltage: import("@matter/types").OptionalAttribute<number | bigint | null, any>;
        readonly activeCurrent: import("@matter/types").OptionalAttribute<number | bigint | null, any>;
        readonly activePower: import("@matter/types").Attribute<number | bigint | null, any>;
    };
    readonly events: {
        readonly measurementPeriodRanges: import("@matter/types").OptionalEvent<import("@matter/types").TypeFromFields<{
            ranges: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                measurementType: import("@matter/types").FieldType<ElectricalPowerMeasurement.MeasurementType>;
                min: import("@matter/types").FieldType<number | bigint>;
                max: import("@matter/types").FieldType<number | bigint>;
                startTimestamp: import("@matter/types").OptionalFieldType<number>;
                endTimestamp: import("@matter/types").OptionalFieldType<number>;
                minTimestamp: import("@matter/types").OptionalFieldType<number>;
                maxTimestamp: import("@matter/types").OptionalFieldType<number>;
                startSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                endSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                minSystime: import("@matter/types").OptionalFieldType<number | bigint>;
                maxSystime: import("@matter/types").OptionalFieldType<number | bigint>;
            }>[]>;
        }>, any>;
    };
    readonly extensions: readonly [{
        readonly flags: {
            readonly alternatingCurrent: true;
        };
        readonly component: {
            readonly attributes: {
                readonly reactiveCurrent: import("@matter/types").OptionalAttribute<number | bigint | null, any>;
                readonly apparentCurrent: import("@matter/types").OptionalAttribute<number | bigint | null, any>;
                readonly reactivePower: import("@matter/types").OptionalAttribute<number | bigint | null, any>;
                readonly apparentPower: import("@matter/types").OptionalAttribute<number | bigint | null, any>;
                readonly rmsVoltage: import("@matter/types").OptionalAttribute<number | bigint | null, any>;
                readonly rmsCurrent: import("@matter/types").OptionalAttribute<number | bigint | null, any>;
                readonly rmsPower: import("@matter/types").OptionalAttribute<number | bigint | null, any>;
                readonly frequency: import("@matter/types").OptionalAttribute<number | bigint | null, any>;
                readonly powerFactor: import("@matter/types").OptionalAttribute<number | bigint | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly harmonics: true;
        };
        readonly component: {
            readonly attributes: {
                readonly harmonicCurrents: import("@matter/types").Attribute<import("@matter/types").TypeFromFields<{
                    order: import("@matter/types").FieldType<number>;
                    measurement: import("@matter/types").FieldType<number | bigint | null>;
                }>[] | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly powerQuality: true;
        };
        readonly component: {
            readonly attributes: {
                readonly harmonicPhases: import("@matter/types").Attribute<import("@matter/types").TypeFromFields<{
                    order: import("@matter/types").FieldType<number>;
                    measurement: import("@matter/types").FieldType<number | bigint | null>;
                }>[] | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly polyphasePower: true;
        };
        readonly component: {
            readonly attributes: {
                readonly neutralCurrent: import("@matter/types").OptionalAttribute<number | bigint | null, any>;
            };
        };
    }, {
        readonly flags: {
            readonly polyphasePower: true;
            readonly alternatingCurrent: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly harmonics: true;
            readonly alternatingCurrent: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly powerQuality: true;
            readonly alternatingCurrent: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly directCurrent: false;
            readonly alternatingCurrent: false;
        };
        readonly component: false;
    }];
}>, typeof ClusterBehavior, {
    components: never[];
}>;
export interface ElectricalPowerMeasurementBehaviorConstructor extends Identity<typeof ElectricalPowerMeasurementBehaviorConstructor> {
}
export declare const ElectricalPowerMeasurementBehavior: ElectricalPowerMeasurementBehaviorConstructor;
export interface ElectricalPowerMeasurementBehavior extends InstanceType<ElectricalPowerMeasurementBehaviorConstructor> {
}
export declare namespace ElectricalPowerMeasurementBehavior {
    interface State extends InstanceType<typeof ElectricalPowerMeasurementBehavior.State> {
    }
}
//# sourceMappingURL=ElectricalPowerMeasurementBehavior.d.ts.map