/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { ClusterType } from "@matter/types";
import { ElectricalEnergyMeasurement } from "@matter/types/clusters/electrical-energy-measurement";
declare const ElectricalEnergyMeasurementBase: import("../../index.js").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<ElectricalEnergyMeasurement.Complete, readonly [ElectricalEnergyMeasurement.Feature.CumulativeEnergy, ElectricalEnergyMeasurement.Feature.PeriodicEnergy, ElectricalEnergyMeasurement.Feature.ImportedEnergy, ElectricalEnergyMeasurement.Feature.ExportedEnergy]>, import("../../index.js").ClusterBehavior.Type<ElectricalEnergyMeasurement.Complete, import("./ElectricalEnergyMeasurementBehavior.js").ElectricalEnergyMeasurementBehaviorConstructor, {
    components: never[];
}>, {
    components: never[];
}>;
/**
 * Helper Type for setMeasurement method to be used to set the measurement values together and handle as an atomic set
 * to also trigger single events for imported and exported energy values.
 */
type AtomicElectricalEnergyMeasurement = {
    cumulativeEnergy?: {
        imported?: ElectricalEnergyMeasurement.EnergyMeasurement;
        exported?: ElectricalEnergyMeasurement.EnergyMeasurement;
    };
    periodicEnergy?: {
        imported?: ElectricalEnergyMeasurement.EnergyMeasurement;
        exported?: ElectricalEnergyMeasurement.EnergyMeasurement;
    };
};
/**
 * This is the default server implementation of {@link ElectricalEnergyMeasurementBehavior}.
 *
 * The Matter specification requires the ElectricalEnergyMeasurement cluster to support features we do not enable by
 * default. You should use {@link ElectricalEnergyMeasurementServer.with} to specialize the class for the features your
 * implementation supports.
 */
export declare class ElectricalEnergyMeasurementBaseServer extends ElectricalEnergyMeasurementBase {
    /**
     * Convenience method to set the measurement values for the cluster in an atomic way. This method updates the
     * attributes with the provided data and also sends the events for the imported and exported energy values.
     */
    setMeasurement(measurement: AtomicElectricalEnergyMeasurement): void;
}
export declare namespace ElectricalEnergyMeasurementBaseServer {
    const ExtensionInterface: {
        setMeasurement(measurement: AtomicElectricalEnergyMeasurement): void;
    };
}
declare const ElectricalEnergyMeasurementServer_base: import("../../index.js").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 ElectricalEnergyMeasurementBaseServer, {
    components: never[];
}>;
export declare class ElectricalEnergyMeasurementServer extends ElectricalEnergyMeasurementServer_base {
}
export {};
//# sourceMappingURL=ElectricalEnergyMeasurementServer.d.ts.map