/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { ElectricalEnergyMeasurement } from "@matter/types/clusters/electrical-energy-measurement";
declare const ElectricalEnergyMeasurementBase: import("../../index.js").ClusterBehavior.Type<import("./ElectricalEnergyMeasurementBehavior.js").ElectricalEnergyMeasurementBehaviorConstructor, import("@matter/types").ClusterType.WithSupportedFeatures<ElectricalEnergyMeasurement, {
    apparentEnergy: false;
    cumulativeEnergy: true;
    exportedEnergy: true;
    importedEnergy: true;
    periodicEnergy: true;
    reactiveEnergy: false;
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "electricalEnergyMeasurement">;
/**
 * 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<typeof ElectricalEnergyMeasurementBaseServer, ElectricalEnergyMeasurement, typeof ElectricalEnergyMeasurement, new () => {}, "electricalEnergyMeasurement"> & {
    readonly id: "electricalEnergyMeasurement";
};
export declare class ElectricalEnergyMeasurementServer extends ElectricalEnergyMeasurementServer_base {
}
export {};
//# sourceMappingURL=ElectricalEnergyMeasurementServer.d.ts.map