/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
/*** THIS FILE IS GENERATED, DO NOT EDIT ***/
import { MutableCluster } from "../cluster/mutation/MutableCluster.js";
import { Attribute, OptionalAttribute, Event, FixedAttribute } from "../cluster/Cluster.js";
import { TypeFromSchema } from "../tlv/TlvSchema.js";
import { BitFlag } from "../schema/BitmapSchema.js";
import { Identity } from "#general";
export declare namespace ElectricalEnergyMeasurement {
    /**
     * These are optional features supported by ElectricalEnergyMeasurementCluster.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 2.12.4
     */
    enum Feature {
        /**
         * ImportedEnergy (IMPE)
         *
         * The feature indicates the server is capable of measuring how much energy is imported by the server.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.1
         */
        ImportedEnergy = "ImportedEnergy",
        /**
         * ExportedEnergy (EXPE)
         *
         * The feature indicates the server is capable of measuring how much energy is exported by the server.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.2
         */
        ExportedEnergy = "ExportedEnergy",
        /**
         * CumulativeEnergy (CUME)
         *
         * The feature indicates the server is capable of measuring how much energy has been imported or exported by the
         * server over the device’s lifetime. This measurement may start from when a device’s firmware is updated to
         * include this feature, when a device’s firmware is updated to correct measurement errors, or when a device is
         * factory reset.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.3
         */
        CumulativeEnergy = "CumulativeEnergy",
        /**
         * PeriodicEnergy (PERE)
         *
         * The feature indicates the server is capable of measuring how much energy has been imported or exported by the
         * server during a certain period of time. The start and end times for measurement periods shall be determined
         * by the server, and may represent overlapping periods.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.4
         */
        PeriodicEnergy = "PeriodicEnergy"
    }
    /**
     * This struct shall indicate the amount of energy measured during a given measurement period.
     *
     * A server which does not have the ability to determine the time in UTC, or has not yet done so, shall use the
     * system time fields to specify the measurement period and observation times.
     *
     * A server which has determined the time in UTC shall use the timestamp fields to specify the measurement period.
     * Such a server may also include the systime fields to indicate how many seconds had passed since boot for a given
     * timestamp; this allows for client-side resolution of UTC time for previous reports that only included systime.
     *
     * Elements using this data type shall indicate whether it represents cumulative or periodic energy, e.g. in the
     * name or in the element description.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2
     */
    const TlvEnergyMeasurement: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall be the reported energy.
         *
         * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
         * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
         *
         * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
         * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
         * StartSystime and EndSystime fields, or both.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
         */
        energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
        /**
         * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
         * Energy field was measured.
         *
         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
         *
         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
         * this field shall be indicated.
         *
         * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
         * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
         */
        startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        /**
         * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
         * field was measured.
         *
         * If the server had determined the time in UTC by the end of the measurement period, this field shall be
         * indicated.
         *
         * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
         * not have the capability of determining the time in UTC, this field shall be omitted.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
         */
        endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        /**
         * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
         * of the Energy field was measured.
         *
         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
         *
         * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
         * does not have the capability of determining the time in UTC, this field shall be indicated.
         *
         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
         * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
         * indicated in StartTimestamp.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
         */
        startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
        /**
         * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
         * Energy field was measured.
         *
         * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
         * the capability of determining the time in UTC, this field shall be indicated.
         *
         * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
         * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
         * EndTimestamp.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
         */
        endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
    }>;
    /**
     * This struct shall indicate the amount of energy measured during a given measurement period.
     *
     * A server which does not have the ability to determine the time in UTC, or has not yet done so, shall use the
     * system time fields to specify the measurement period and observation times.
     *
     * A server which has determined the time in UTC shall use the timestamp fields to specify the measurement period.
     * Such a server may also include the systime fields to indicate how many seconds had passed since boot for a given
     * timestamp; this allows for client-side resolution of UTC time for previous reports that only included systime.
     *
     * Elements using this data type shall indicate whether it represents cumulative or periodic energy, e.g. in the
     * name or in the element description.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2
     */
    interface EnergyMeasurement extends TypeFromSchema<typeof TlvEnergyMeasurement> {
    }
    /**
     * This struct shall represent the times at which cumulative measurements were last zero, either due to
     * initialization of the device, or an internal reset of the cumulative value.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3
     */
    const TlvCumulativeEnergyReset: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the timestamp in UTC when the value of the Energy field on the
         * CumulativeEnergyImported attribute was most recently zero.
         *
         * If the server had determined the time in UTC when the value of the Energy field on the
         * CumulativeEnergyImported attribute was most recently zero, this field shall be indicated.
         *
         * Otherwise, if the server had not yet determined the time in UTC when the value of the Energy field on the
         * CumulativeEnergyImported attribute was most recently zero, or does not have the capability of determining the
         * time in UTC, this field shall be omitted.
         *
         * If the timestamp in UTC when the value of the Energy field on the CumulativeEnergyImported attribute was most
         * recently zero cannot currently be determined, a value of null shall be returned.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.1
         */
        importedResetTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
        /**
         * This field shall indicate the timestamp in UTC when the value of the Energy field on the
         * CumulativeEnergyExported attribute was most recently zero.
         *
         * If the server had determined the time in UTC when the value of the Energy field on the
         * CumulativeEnergyExported attribute was most recently zero, this field shall be indicated.
         *
         * Otherwise, if the server had not yet determined the time in UTC when the value of the Energy field on the
         * CumulativeEnergyExported attribute was most recently zero, or does not have the capability of determining the
         * time in UTC, this field shall be omitted.
         *
         * If the timestamp in UTC when the value of the Energy field on the CumulativeEnergyExported attribute was most
         * recently zero cannot currently be determined, a value of null shall be returned.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.2
         */
        exportedResetTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
        /**
         * This field shall indicate the time elapsed since boot when the value of the Energy field on the
         * CumulativeEnergyImported attribute was most recently zero.
         *
         * If the server had not yet determined the time in UTC when the value of the Energy field on the
         * CumulativeEnergyImported attribute was most recently zero, or does not have the capability of determining the
         * time in UTC, this field shall be indicated.
         *
         * Otherwise, if the server had determined the time in UTC when the value of the Energy field on the
         * CumulativeEnergyImported attribute was most recently zero, this field may be omitted; if it is indicated, its
         * value shall be the time elapsed since boot at the UTC time indicated in ImportedResetTimestamp.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.3
         */
        importedResetSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint | null>;
        /**
         * This field shall indicate the time elapsed since boot when the value of the Energy field on the
         * CumulativeEnergyExported attribute was most recently zero.
         *
         * If the server had not yet determined the time in UTC when the value of the Energy field on the
         * CumulativeEnergyExported attribute was most recently zero, or does not have the capability of determining the
         * time in UTC, this field shall be indicated.
         *
         * Otherwise, if the server had determined the time in UTC when the value of the Energy field on the
         * CumulativeEnergyExported attribute was most recently zero, this field may be omitted; if it is indicated, its
         * value shall be the time elapsed since boot at the UTC time indicated in ImportedResetTimestamp.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.4
         */
        exportedResetSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint | null>;
    }>;
    /**
     * This struct shall represent the times at which cumulative measurements were last zero, either due to
     * initialization of the device, or an internal reset of the cumulative value.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3
     */
    interface CumulativeEnergyReset extends TypeFromSchema<typeof TlvCumulativeEnergyReset> {
    }
    /**
     * Body of the ElectricalEnergyMeasurement cumulativeEnergyMeasured event
     *
     * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1
     */
    const TlvCumulativeEnergyMeasuredEvent: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall be the value of CumulativeEnergyImported attribute at the timestamp indicated in its
         * EndTimestamp field, EndSystime field, or both.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1.1
         */
        energyImported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall be the reported energy.
             *
             * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
             * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
             *
             * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
             * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
             * StartSystime and EndSystime fields, or both.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
             */
            energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
            /**
             * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
             * Energy field was measured.
             *
             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
             *
             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
             * this field shall be indicated.
             *
             * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
             * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
             */
            startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            /**
             * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
             * field was measured.
             *
             * If the server had determined the time in UTC by the end of the measurement period, this field shall be
             * indicated.
             *
             * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
             * not have the capability of determining the time in UTC, this field shall be omitted.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
             */
            endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            /**
             * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
             * of the Energy field was measured.
             *
             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
             *
             * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
             * does not have the capability of determining the time in UTC, this field shall be indicated.
             *
             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
             * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
             * indicated in StartTimestamp.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
             */
            startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            /**
             * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
             * Energy field was measured.
             *
             * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
             * the capability of determining the time in UTC, this field shall be indicated.
             *
             * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
             * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
             * EndTimestamp.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
             */
            endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
        }>>;
        /**
         * This field shall be the value of CumulativeEnergyExported attribute at the timestamp indicated in its
         * EndTimestamp field, EndSystime field, or both.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1.2
         */
        energyExported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall be the reported energy.
             *
             * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
             * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
             *
             * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
             * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
             * StartSystime and EndSystime fields, or both.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
             */
            energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
            /**
             * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
             * Energy field was measured.
             *
             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
             *
             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
             * this field shall be indicated.
             *
             * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
             * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
             */
            startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            /**
             * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
             * field was measured.
             *
             * If the server had determined the time in UTC by the end of the measurement period, this field shall be
             * indicated.
             *
             * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
             * not have the capability of determining the time in UTC, this field shall be omitted.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
             */
            endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            /**
             * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
             * of the Energy field was measured.
             *
             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
             *
             * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
             * does not have the capability of determining the time in UTC, this field shall be indicated.
             *
             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
             * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
             * indicated in StartTimestamp.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
             */
            startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            /**
             * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
             * Energy field was measured.
             *
             * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
             * the capability of determining the time in UTC, this field shall be indicated.
             *
             * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
             * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
             * EndTimestamp.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
             */
            endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
        }>>;
    }>;
    /**
     * Body of the ElectricalEnergyMeasurement cumulativeEnergyMeasured event
     *
     * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1
     */
    interface CumulativeEnergyMeasuredEvent extends TypeFromSchema<typeof TlvCumulativeEnergyMeasuredEvent> {
    }
    /**
     * Body of the ElectricalEnergyMeasurement periodicEnergyMeasured event
     *
     * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2
     */
    const TlvPeriodicEnergyMeasuredEvent: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall be the value of PeriodicEnergyImported attribute at the timestamp indicated in its
         * EndTimestamp field, EndSystime field, or both.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2.1
         */
        energyImported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall be the reported energy.
             *
             * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
             * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
             *
             * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
             * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
             * StartSystime and EndSystime fields, or both.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
             */
            energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
            /**
             * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
             * Energy field was measured.
             *
             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
             *
             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
             * this field shall be indicated.
             *
             * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
             * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
             */
            startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            /**
             * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
             * field was measured.
             *
             * If the server had determined the time in UTC by the end of the measurement period, this field shall be
             * indicated.
             *
             * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
             * not have the capability of determining the time in UTC, this field shall be omitted.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
             */
            endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            /**
             * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
             * of the Energy field was measured.
             *
             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
             *
             * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
             * does not have the capability of determining the time in UTC, this field shall be indicated.
             *
             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
             * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
             * indicated in StartTimestamp.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
             */
            startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            /**
             * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
             * Energy field was measured.
             *
             * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
             * the capability of determining the time in UTC, this field shall be indicated.
             *
             * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
             * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
             * EndTimestamp.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
             */
            endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
        }>>;
        /**
         * This field shall be the value of PeriodicEnergyExported attribute at the timestamp indicated in its
         * EndTimestamp field, EndSystime field, or both.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2.2
         */
        energyExported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall be the reported energy.
             *
             * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
             * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
             *
             * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
             * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
             * StartSystime and EndSystime fields, or both.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
             */
            energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
            /**
             * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
             * Energy field was measured.
             *
             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
             *
             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
             * this field shall be indicated.
             *
             * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
             * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
             */
            startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            /**
             * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
             * field was measured.
             *
             * If the server had determined the time in UTC by the end of the measurement period, this field shall be
             * indicated.
             *
             * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
             * not have the capability of determining the time in UTC, this field shall be omitted.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
             */
            endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            /**
             * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
             * of the Energy field was measured.
             *
             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
             *
             * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
             * does not have the capability of determining the time in UTC, this field shall be indicated.
             *
             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
             * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
             * indicated in StartTimestamp.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
             */
            startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            /**
             * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
             * Energy field was measured.
             *
             * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
             * the capability of determining the time in UTC, this field shall be indicated.
             *
             * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
             * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
             * EndTimestamp.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
             */
            endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
        }>>;
    }>;
    /**
     * Body of the ElectricalEnergyMeasurement periodicEnergyMeasured event
     *
     * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2
     */
    interface PeriodicEnergyMeasuredEvent extends TypeFromSchema<typeof TlvPeriodicEnergyMeasuredEvent> {
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.1
     */
    enum MeasurementType {
        Unspecified = 0,
        /**
         * Voltage in millivolts (mV)
         */
        Voltage = 1,
        /**
         * Active current in milliamps (mA)
         */
        ActiveCurrent = 2,
        /**
         * Reactive current in milliamps (mA)
         */
        ReactiveCurrent = 3,
        /**
         * Apparent current in milliamps (mA)
         */
        ApparentCurrent = 4,
        /**
         * Active power in milliwatts (mW)
         */
        ActivePower = 5,
        /**
         * Reactive power in millivolt-amps reactive (mVAR)
         */
        ReactivePower = 6,
        /**
         * Apparent power in millivolt-amps (mVA)
         */
        ApparentPower = 7,
        /**
         * Root mean squared voltage in millivolts (mV)
         */
        RmsVoltage = 8,
        /**
         * Root mean squared current in milliamps (mA)
         */
        RmsCurrent = 9,
        /**
         * Root mean squared power in milliwatts (mW)
         */
        RmsPower = 10,
        /**
         * AC frequency in millihertz (mHz)
         */
        Frequency = 11,
        /**
         * Power Factor ratio in +/- 1/100ths of a percent.
         */
        PowerFactor = 12,
        /**
         * AC neutral current in milliamps (mA)
         */
        NeutralCurrent = 13,
        /**
         * Electrical energy in milliwatt-hours (mWh)
         */
        ElectricalEnergy = 14,
        /**
         * Reactive power in millivolt-amp-hours reactive (mVARh)
         */
        ReactiveEnergy = 15,
        /**
         * Apparent power in millivolt-amp-hours (mVAh)
         */
        ApparentEnergy = 16
    }
    /**
     * A ElectricalEnergyMeasurementCluster supports these elements if it supports features ImportedEnergy and
     * CumulativeEnergy.
     */
    const ImportedEnergyAndCumulativeEnergyComponent: {
        readonly attributes: {
            /**
             * Indicates the most recent measurement of cumulative energy imported by the server over the lifetime of
             * the device, and the timestamp of when the measurement was recorded.
             *
             * The reporting interval of this attribute shall be manufacturer dependent. The server may choose to omit
             * publication of deltas considered not meaningful.
             *
             * The server shall NOT mark this attribute ready for report if the last time this was done was more
             * recently than 1 second ago.
             *
             * The server may delay marking this attribute ready for report for longer periods if needed, however the
             * server shall NOT delay marking this attribute as ready for report for longer than 60 seconds.
             *
             * If the cumulative energy imported cannot currently be determined, a value of null shall be returned.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.2
             */
            readonly cumulativeEnergyImported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be the reported energy.
                 *
                 * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                 * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                 *
                 * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                 * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                 * StartSystime and EndSystime fields, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                 */
                energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                /**
                 * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field shall be indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                 * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                 */
                startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                 * field was measured.
                 *
                 * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                 * indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                 * not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                 */
                endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                 * of the Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                 * does not have the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                 * indicated in StartTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                 */
                startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                /**
                 * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                 * the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                 * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                 * EndTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                 */
                endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            }> | null, any>;
        };
    };
    /**
     * A ElectricalEnergyMeasurementCluster supports these elements if it supports features ExportedEnergy and
     * CumulativeEnergy.
     */
    const ExportedEnergyAndCumulativeEnergyComponent: {
        readonly attributes: {
            /**
             * Indicates the most recent measurement of cumulative energy exported by the server over the lifetime of
             * the device, and the timestamp of when the measurement was recorded.
             *
             * The reporting interval of this attribute shall be manufacturer dependent. The server may choose to omit
             * publication of deltas considered not meaningful.
             *
             * The server shall NOT mark this attribute ready for report if the last time this was done was more
             * recently than 1 second ago.
             *
             * The server may delay marking this attribute ready for report for longer periods if needed, however the
             * server shall NOT delay marking this attribute as ready for report for longer than 60 seconds.
             *
             * If the cumulative energy exported cannot currently be determined, a value of null shall be returned.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.3
             */
            readonly cumulativeEnergyExported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be the reported energy.
                 *
                 * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                 * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                 *
                 * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                 * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                 * StartSystime and EndSystime fields, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                 */
                energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                /**
                 * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field shall be indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                 * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                 */
                startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                 * field was measured.
                 *
                 * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                 * indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                 * not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                 */
                endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                 * of the Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                 * does not have the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                 * indicated in StartTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                 */
                startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                /**
                 * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                 * the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                 * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                 * EndTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                 */
                endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            }> | null, any>;
        };
    };
    /**
     * A ElectricalEnergyMeasurementCluster supports these elements if it supports features ImportedEnergy and
     * PeriodicEnergy.
     */
    const ImportedEnergyAndPeriodicEnergyComponent: {
        readonly attributes: {
            /**
             * Indicates the most recent measurement of energy imported by the server and the period during which it was
             * measured.
             *
             * The reporting interval of this attribute shall be manufacturer dependent. The server may choose to omit
             * publication of deltas considered not meaningful.
             *
             * The server shall NOT mark this attribute ready for report if the last time this was done was more
             * recently than 1 second ago.
             *
             * The server may delay marking this attribute ready for report for longer periods if needed, however the
             * server shall NOT delay marking this attribute as ready for report for longer than 60 seconds.
             *
             * If the periodic energy imported cannot currently be determined, a value of null shall be returned.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.4
             */
            readonly periodicEnergyImported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be the reported energy.
                 *
                 * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                 * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                 *
                 * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                 * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                 * StartSystime and EndSystime fields, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                 */
                energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                /**
                 * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field shall be indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                 * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                 */
                startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                 * field was measured.
                 *
                 * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                 * indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                 * not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                 */
                endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                 * of the Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                 * does not have the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                 * indicated in StartTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                 */
                startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                /**
                 * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                 * the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                 * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                 * EndTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                 */
                endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            }> | null, any>;
        };
    };
    /**
     * A ElectricalEnergyMeasurementCluster supports these elements if it supports features ExportedEnergy and
     * PeriodicEnergy.
     */
    const ExportedEnergyAndPeriodicEnergyComponent: {
        readonly attributes: {
            /**
             * Indicates the most recent measurement of energy exported by the server and the period during which it was
             * measured.
             *
             * The reporting interval of this attribute shall be manufacturer dependent. The server may choose to omit
             * publication of deltas considered not meaningful.
             *
             * The server shall NOT mark this attribute ready for report if the last time this was done was more
             * recently than 1 second ago.
             *
             * The server may delay marking this attribute ready for report for longer periods if needed, however the
             * server shall NOT delay marking this attribute as ready for report for longer than 60 seconds.
             *
             * If the periodic energy exported cannot currently be determined, a value of null shall be returned.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.5
             */
            readonly periodicEnergyExported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be the reported energy.
                 *
                 * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                 * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                 *
                 * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                 * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                 * StartSystime and EndSystime fields, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                 */
                energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                /**
                 * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field shall be indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                 * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                 */
                startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                 * field was measured.
                 *
                 * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                 * indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                 * not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                 */
                endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                 * of the Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                 * does not have the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                 * indicated in StartTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                 */
                startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                /**
                 * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                 * the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                 * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                 * EndTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                 */
                endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            }> | null, any>;
        };
    };
    /**
     * A ElectricalEnergyMeasurementCluster supports these elements if it supports feature CumulativeEnergy.
     */
    const CumulativeEnergyComponent: {
        readonly attributes: {
            /**
             * Indicates when cumulative measurements were most recently zero.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.6
             */
            readonly cumulativeEnergyReset: OptionalAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the timestamp in UTC when the value of the Energy field on the
                 * CumulativeEnergyImported attribute was most recently zero.
                 *
                 * If the server had determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyImported attribute was most recently zero, this field shall be indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyImported attribute was most recently zero, or does not have the capability of determining the
                 * time in UTC, this field shall be omitted.
                 *
                 * If the timestamp in UTC when the value of the Energy field on the CumulativeEnergyImported attribute was most
                 * recently zero cannot currently be determined, a value of null shall be returned.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.1
                 */
                importedResetTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
                /**
                 * This field shall indicate the timestamp in UTC when the value of the Energy field on the
                 * CumulativeEnergyExported attribute was most recently zero.
                 *
                 * If the server had determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyExported attribute was most recently zero, this field shall be indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyExported attribute was most recently zero, or does not have the capability of determining the
                 * time in UTC, this field shall be omitted.
                 *
                 * If the timestamp in UTC when the value of the Energy field on the CumulativeEnergyExported attribute was most
                 * recently zero cannot currently be determined, a value of null shall be returned.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.2
                 */
                exportedResetTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
                /**
                 * This field shall indicate the time elapsed since boot when the value of the Energy field on the
                 * CumulativeEnergyImported attribute was most recently zero.
                 *
                 * If the server had not yet determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyImported attribute was most recently zero, or does not have the capability of determining the
                 * time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyImported attribute was most recently zero, this field may be omitted; if it is indicated, its
                 * value shall be the time elapsed since boot at the UTC time indicated in ImportedResetTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.3
                 */
                importedResetSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint | null>;
                /**
                 * This field shall indicate the time elapsed since boot when the value of the Energy field on the
                 * CumulativeEnergyExported attribute was most recently zero.
                 *
                 * If the server had not yet determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyExported attribute was most recently zero, or does not have the capability of determining the
                 * time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyExported attribute was most recently zero, this field may be omitted; if it is indicated, its
                 * value shall be the time elapsed since boot at the UTC time indicated in ImportedResetTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.4
                 */
                exportedResetSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint | null>;
            }> | null, any>;
        };
        readonly events: {
            /**
             * This event shall be generated when the server takes a snapshot of the cumulative energy imported by the
             * server, exported from the server, or both, but not more frequently than the rate mentioned in the
             * description above of the related attribute.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1
             */
            readonly cumulativeEnergyMeasured: Event<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be the value of CumulativeEnergyImported attribute at the timestamp indicated in its
                 * EndTimestamp field, EndSystime field, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1.1
                 */
                energyImported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall be the reported energy.
                     *
                     * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                     * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                     *
                     * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                     * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                     * StartSystime and EndSystime fields, or both.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                     */
                    energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    /**
                     * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field shall be indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                     * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                     */
                    startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                     * field was measured.
                     *
                     * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                     * indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                     * not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                     */
                    endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                     * of the Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                     * does not have the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                     * indicated in StartTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                     */
                    startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    /**
                     * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                     * the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                     * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                     * EndTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                     */
                    endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                }>>;
                /**
                 * This field shall be the value of CumulativeEnergyExported attribute at the timestamp indicated in its
                 * EndTimestamp field, EndSystime field, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1.2
                 */
                energyExported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall be the reported energy.
                     *
                     * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                     * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                     *
                     * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                     * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                     * StartSystime and EndSystime fields, or both.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                     */
                    energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    /**
                     * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field shall be indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                     * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                     */
                    startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                     * field was measured.
                     *
                     * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                     * indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                     * not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                     */
                    endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                     * of the Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                     * does not have the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                     * indicated in StartTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                     */
                    startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    /**
                     * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                     * the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                     * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                     * EndTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                     */
                    endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                }>>;
            }>, any>;
        };
    };
    /**
     * A ElectricalEnergyMeasurementCluster supports these elements if it supports feature PeriodicEnergy.
     */
    const PeriodicEnergyComponent: {
        readonly events: {
            /**
             * This event shall be generated when the server reaches the end of a reporting period for imported energy,
             * exported energy, or both.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2
             */
            readonly periodicEnergyMeasured: Event<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be the value of PeriodicEnergyImported attribute at the timestamp indicated in its
                 * EndTimestamp field, EndSystime field, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2.1
                 */
                energyImported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall be the reported energy.
                     *
                     * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                     * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                     *
                     * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                     * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                     * StartSystime and EndSystime fields, or both.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                     */
                    energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    /**
                     * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field shall be indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                     * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                     */
                    startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                     * field was measured.
                     *
                     * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                     * indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                     * not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                     */
                    endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                     * of the Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                     * does not have the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                     * indicated in StartTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                     */
                    startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    /**
                     * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                     * the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                     * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                     * EndTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                     */
                    endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                }>>;
                /**
                 * This field shall be the value of PeriodicEnergyExported attribute at the timestamp indicated in its
                 * EndTimestamp field, EndSystime field, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2.2
                 */
                energyExported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall be the reported energy.
                     *
                     * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                     * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                     *
                     * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                     * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                     * StartSystime and EndSystime fields, or both.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                     */
                    energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    /**
                     * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field shall be indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                     * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                     */
                    startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                     * field was measured.
                     *
                     * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                     * indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                     * not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                     */
                    endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                     * of the Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                     * does not have the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                     * indicated in StartTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                     */
                    startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    /**
                     * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                     * the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                     * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                     * EndTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                     */
                    endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                }>>;
            }>, any>;
        };
    };
    /**
     * These elements and properties are present in all ElectricalEnergyMeasurement clusters.
     */
    const Base: {
        readonly id: 145;
        readonly name: "ElectricalEnergyMeasurement";
        readonly revision: 1;
        readonly features: {
            /**
             * The feature indicates the server is capable of measuring how much energy is imported by the server.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.1
             */
            readonly importedEnergy: BitFlag;
            /**
             * The feature indicates the server is capable of measuring how much energy is exported by the server.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.2
             */
            readonly exportedEnergy: BitFlag;
            /**
             * The feature indicates the server is capable of measuring how much energy has been imported or exported by
             * the server over the device’s lifetime. This measurement may start from when a device’s firmware is
             * updated to include this feature, when a device’s firmware is updated to correct measurement errors, or
             * when a device is factory reset.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.3
             */
            readonly cumulativeEnergy: BitFlag;
            /**
             * The feature indicates the server is capable of measuring how much energy has been imported or exported by
             * the server during a certain period of time. The start and end times for measurement periods shall be
             * determined by the server, and may represent overlapping periods.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.4
             */
            readonly periodicEnergy: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the accuracy of energy measurement by this server. The value of the MeasurementType field on
             * this MeasurementAccuracyStruct shall be ElectricalEnergy.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.1
             */
            readonly accuracy: FixedAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                measurementType: import("../tlv/TlvObject.js").FieldType<import("../index.js").MeasurementType>;
                measured: import("../tlv/TlvObject.js").FieldType<boolean>;
                minMeasuredValue: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                maxMeasuredValue: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                accuracyRanges: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    rangeMin: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    rangeMax: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    percentMax: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    percentMin: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    percentTypical: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    fixedMax: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    fixedMin: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    fixedTypical: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                }>[]>;
            }>, any>;
        };
        /**
         * This metadata controls which ElectricalEnergyMeasurementCluster elements matter.js activates for specific
         * feature combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly importedEnergy: true;
                readonly cumulativeEnergy: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the most recent measurement of cumulative energy imported by the server over the lifetime of
                     * the device, and the timestamp of when the measurement was recorded.
                     *
                     * The reporting interval of this attribute shall be manufacturer dependent. The server may choose to omit
                     * publication of deltas considered not meaningful.
                     *
                     * The server shall NOT mark this attribute ready for report if the last time this was done was more
                     * recently than 1 second ago.
                     *
                     * The server may delay marking this attribute ready for report for longer periods if needed, however the
                     * server shall NOT delay marking this attribute as ready for report for longer than 60 seconds.
                     *
                     * If the cumulative energy imported cannot currently be determined, a value of null shall be returned.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.2
                     */
                    readonly cumulativeEnergyImported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be the reported energy.
                         *
                         * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                         * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                         *
                         * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                         * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                         * StartSystime and EndSystime fields, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                         */
                        energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                        /**
                         * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field shall be indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                         * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                         */
                        startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                         * field was measured.
                         *
                         * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                         * indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                         * not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                         */
                        endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                         * of the Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                         * does not have the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                         * indicated in StartTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                         */
                        startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        /**
                         * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                         * the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                         * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                         * EndTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                         */
                        endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    }> | null, any>;
                };
            };
        }, {
            readonly flags: {
                readonly exportedEnergy: true;
                readonly cumulativeEnergy: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the most recent measurement of cumulative energy exported by the server over the lifetime of
                     * the device, and the timestamp of when the measurement was recorded.
                     *
                     * The reporting interval of this attribute shall be manufacturer dependent. The server may choose to omit
                     * publication of deltas considered not meaningful.
                     *
                     * The server shall NOT mark this attribute ready for report if the last time this was done was more
                     * recently than 1 second ago.
                     *
                     * The server may delay marking this attribute ready for report for longer periods if needed, however the
                     * server shall NOT delay marking this attribute as ready for report for longer than 60 seconds.
                     *
                     * If the cumulative energy exported cannot currently be determined, a value of null shall be returned.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.3
                     */
                    readonly cumulativeEnergyExported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be the reported energy.
                         *
                         * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                         * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                         *
                         * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                         * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                         * StartSystime and EndSystime fields, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                         */
                        energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                        /**
                         * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field shall be indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                         * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                         */
                        startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                         * field was measured.
                         *
                         * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                         * indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                         * not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                         */
                        endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                         * of the Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                         * does not have the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                         * indicated in StartTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                         */
                        startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        /**
                         * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                         * the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                         * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                         * EndTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                         */
                        endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    }> | null, any>;
                };
            };
        }, {
            readonly flags: {
                readonly importedEnergy: true;
                readonly periodicEnergy: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the most recent measurement of energy imported by the server and the period during which it was
                     * measured.
                     *
                     * The reporting interval of this attribute shall be manufacturer dependent. The server may choose to omit
                     * publication of deltas considered not meaningful.
                     *
                     * The server shall NOT mark this attribute ready for report if the last time this was done was more
                     * recently than 1 second ago.
                     *
                     * The server may delay marking this attribute ready for report for longer periods if needed, however the
                     * server shall NOT delay marking this attribute as ready for report for longer than 60 seconds.
                     *
                     * If the periodic energy imported cannot currently be determined, a value of null shall be returned.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.4
                     */
                    readonly periodicEnergyImported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be the reported energy.
                         *
                         * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                         * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                         *
                         * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                         * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                         * StartSystime and EndSystime fields, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                         */
                        energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                        /**
                         * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field shall be indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                         * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                         */
                        startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                         * field was measured.
                         *
                         * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                         * indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                         * not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                         */
                        endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                         * of the Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                         * does not have the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                         * indicated in StartTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                         */
                        startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        /**
                         * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                         * the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                         * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                         * EndTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                         */
                        endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    }> | null, any>;
                };
            };
        }, {
            readonly flags: {
                readonly exportedEnergy: true;
                readonly periodicEnergy: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the most recent measurement of energy exported by the server and the period during which it was
                     * measured.
                     *
                     * The reporting interval of this attribute shall be manufacturer dependent. The server may choose to omit
                     * publication of deltas considered not meaningful.
                     *
                     * The server shall NOT mark this attribute ready for report if the last time this was done was more
                     * recently than 1 second ago.
                     *
                     * The server may delay marking this attribute ready for report for longer periods if needed, however the
                     * server shall NOT delay marking this attribute as ready for report for longer than 60 seconds.
                     *
                     * If the periodic energy exported cannot currently be determined, a value of null shall be returned.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.5
                     */
                    readonly periodicEnergyExported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be the reported energy.
                         *
                         * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                         * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                         *
                         * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                         * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                         * StartSystime and EndSystime fields, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                         */
                        energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                        /**
                         * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field shall be indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                         * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                         */
                        startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                         * field was measured.
                         *
                         * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                         * indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                         * not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                         */
                        endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                         * of the Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                         * does not have the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                         * indicated in StartTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                         */
                        startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        /**
                         * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                         * the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                         * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                         * EndTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                         */
                        endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    }> | null, any>;
                };
            };
        }, {
            readonly flags: {
                readonly cumulativeEnergy: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates when cumulative measurements were most recently zero.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.6
                     */
                    readonly cumulativeEnergyReset: OptionalAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall indicate the timestamp in UTC when the value of the Energy field on the
                         * CumulativeEnergyImported attribute was most recently zero.
                         *
                         * If the server had determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyImported attribute was most recently zero, this field shall be indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyImported attribute was most recently zero, or does not have the capability of determining the
                         * time in UTC, this field shall be omitted.
                         *
                         * If the timestamp in UTC when the value of the Energy field on the CumulativeEnergyImported attribute was most
                         * recently zero cannot currently be determined, a value of null shall be returned.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.1
                         */
                        importedResetTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
                        /**
                         * This field shall indicate the timestamp in UTC when the value of the Energy field on the
                         * CumulativeEnergyExported attribute was most recently zero.
                         *
                         * If the server had determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyExported attribute was most recently zero, this field shall be indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyExported attribute was most recently zero, or does not have the capability of determining the
                         * time in UTC, this field shall be omitted.
                         *
                         * If the timestamp in UTC when the value of the Energy field on the CumulativeEnergyExported attribute was most
                         * recently zero cannot currently be determined, a value of null shall be returned.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.2
                         */
                        exportedResetTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
                        /**
                         * This field shall indicate the time elapsed since boot when the value of the Energy field on the
                         * CumulativeEnergyImported attribute was most recently zero.
                         *
                         * If the server had not yet determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyImported attribute was most recently zero, or does not have the capability of determining the
                         * time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyImported attribute was most recently zero, this field may be omitted; if it is indicated, its
                         * value shall be the time elapsed since boot at the UTC time indicated in ImportedResetTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.3
                         */
                        importedResetSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint | null>;
                        /**
                         * This field shall indicate the time elapsed since boot when the value of the Energy field on the
                         * CumulativeEnergyExported attribute was most recently zero.
                         *
                         * If the server had not yet determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyExported attribute was most recently zero, or does not have the capability of determining the
                         * time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyExported attribute was most recently zero, this field may be omitted; if it is indicated, its
                         * value shall be the time elapsed since boot at the UTC time indicated in ImportedResetTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.4
                         */
                        exportedResetSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint | null>;
                    }> | null, any>;
                };
                readonly events: {
                    /**
                     * This event shall be generated when the server takes a snapshot of the cumulative energy imported by the
                     * server, exported from the server, or both, but not more frequently than the rate mentioned in the
                     * description above of the related attribute.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1
                     */
                    readonly cumulativeEnergyMeasured: Event<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be the value of CumulativeEnergyImported attribute at the timestamp indicated in its
                         * EndTimestamp field, EndSystime field, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1.1
                         */
                        energyImported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                            /**
                             * This field shall be the reported energy.
                             *
                             * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                             * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                             *
                             * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                             * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                             * StartSystime and EndSystime fields, or both.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                             */
                            energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                            /**
                             * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field shall be indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                             * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                             */
                            startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                             * field was measured.
                             *
                             * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                             * indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                             * not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                             */
                            endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                             * of the Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                             * does not have the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                             * indicated in StartTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                             */
                            startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                            /**
                             * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                             * the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                             * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                             * EndTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                             */
                            endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        }>>;
                        /**
                         * This field shall be the value of CumulativeEnergyExported attribute at the timestamp indicated in its
                         * EndTimestamp field, EndSystime field, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1.2
                         */
                        energyExported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                            /**
                             * This field shall be the reported energy.
                             *
                             * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                             * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                             *
                             * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                             * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                             * StartSystime and EndSystime fields, or both.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                             */
                            energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                            /**
                             * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field shall be indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                             * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                             */
                            startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                             * field was measured.
                             *
                             * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                             * indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                             * not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                             */
                            endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                             * of the Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                             * does not have the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                             * indicated in StartTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                             */
                            startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                            /**
                             * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                             * the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                             * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                             * EndTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                             */
                            endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        }>>;
                    }>, any>;
                };
            };
        }, {
            readonly flags: {
                readonly periodicEnergy: true;
            };
            readonly component: {
                readonly events: {
                    /**
                     * This event shall be generated when the server reaches the end of a reporting period for imported energy,
                     * exported energy, or both.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2
                     */
                    readonly periodicEnergyMeasured: Event<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be the value of PeriodicEnergyImported attribute at the timestamp indicated in its
                         * EndTimestamp field, EndSystime field, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2.1
                         */
                        energyImported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                            /**
                             * This field shall be the reported energy.
                             *
                             * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                             * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                             *
                             * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                             * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                             * StartSystime and EndSystime fields, or both.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                             */
                            energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                            /**
                             * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field shall be indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                             * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                             */
                            startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                             * field was measured.
                             *
                             * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                             * indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                             * not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                             */
                            endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                             * of the Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                             * does not have the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                             * indicated in StartTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                             */
                            startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                            /**
                             * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                             * the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                             * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                             * EndTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                             */
                            endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        }>>;
                        /**
                         * This field shall be the value of PeriodicEnergyExported attribute at the timestamp indicated in its
                         * EndTimestamp field, EndSystime field, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2.2
                         */
                        energyExported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                            /**
                             * This field shall be the reported energy.
                             *
                             * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                             * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                             *
                             * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                             * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                             * StartSystime and EndSystime fields, or both.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                             */
                            energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                            /**
                             * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field shall be indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                             * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                             */
                            startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                             * field was measured.
                             *
                             * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                             * indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                             * not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                             */
                            endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                             * of the Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                             * does not have the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                             * indicated in StartTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                             */
                            startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                            /**
                             * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                             * the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                             * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                             * EndTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                             */
                            endSystime: import("../tlv/TlvObject.js").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;
        }];
    };
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster.ExtensibleOnly<{
        readonly id: 145;
        readonly name: "ElectricalEnergyMeasurement";
        readonly revision: 1;
        readonly features: {
            /**
             * The feature indicates the server is capable of measuring how much energy is imported by the server.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.1
             */
            readonly importedEnergy: BitFlag;
            /**
             * The feature indicates the server is capable of measuring how much energy is exported by the server.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.2
             */
            readonly exportedEnergy: BitFlag;
            /**
             * The feature indicates the server is capable of measuring how much energy has been imported or exported by
             * the server over the device’s lifetime. This measurement may start from when a device’s firmware is
             * updated to include this feature, when a device’s firmware is updated to correct measurement errors, or
             * when a device is factory reset.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.3
             */
            readonly cumulativeEnergy: BitFlag;
            /**
             * The feature indicates the server is capable of measuring how much energy has been imported or exported by
             * the server during a certain period of time. The start and end times for measurement periods shall be
             * determined by the server, and may represent overlapping periods.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.4
             */
            readonly periodicEnergy: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the accuracy of energy measurement by this server. The value of the MeasurementType field on
             * this MeasurementAccuracyStruct shall be ElectricalEnergy.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.1
             */
            readonly accuracy: FixedAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                measurementType: import("../tlv/TlvObject.js").FieldType<import("../index.js").MeasurementType>;
                measured: import("../tlv/TlvObject.js").FieldType<boolean>;
                minMeasuredValue: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                maxMeasuredValue: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                accuracyRanges: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    rangeMin: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    rangeMax: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    percentMax: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    percentMin: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    percentTypical: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    fixedMax: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    fixedMin: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    fixedTypical: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                }>[]>;
            }>, any>;
        };
        /**
         * This metadata controls which ElectricalEnergyMeasurementCluster elements matter.js activates for specific
         * feature combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly importedEnergy: true;
                readonly cumulativeEnergy: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the most recent measurement of cumulative energy imported by the server over the lifetime of
                     * the device, and the timestamp of when the measurement was recorded.
                     *
                     * The reporting interval of this attribute shall be manufacturer dependent. The server may choose to omit
                     * publication of deltas considered not meaningful.
                     *
                     * The server shall NOT mark this attribute ready for report if the last time this was done was more
                     * recently than 1 second ago.
                     *
                     * The server may delay marking this attribute ready for report for longer periods if needed, however the
                     * server shall NOT delay marking this attribute as ready for report for longer than 60 seconds.
                     *
                     * If the cumulative energy imported cannot currently be determined, a value of null shall be returned.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.2
                     */
                    readonly cumulativeEnergyImported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be the reported energy.
                         *
                         * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                         * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                         *
                         * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                         * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                         * StartSystime and EndSystime fields, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                         */
                        energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                        /**
                         * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field shall be indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                         * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                         */
                        startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                         * field was measured.
                         *
                         * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                         * indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                         * not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                         */
                        endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                         * of the Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                         * does not have the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                         * indicated in StartTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                         */
                        startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        /**
                         * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                         * the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                         * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                         * EndTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                         */
                        endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    }> | null, any>;
                };
            };
        }, {
            readonly flags: {
                readonly exportedEnergy: true;
                readonly cumulativeEnergy: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the most recent measurement of cumulative energy exported by the server over the lifetime of
                     * the device, and the timestamp of when the measurement was recorded.
                     *
                     * The reporting interval of this attribute shall be manufacturer dependent. The server may choose to omit
                     * publication of deltas considered not meaningful.
                     *
                     * The server shall NOT mark this attribute ready for report if the last time this was done was more
                     * recently than 1 second ago.
                     *
                     * The server may delay marking this attribute ready for report for longer periods if needed, however the
                     * server shall NOT delay marking this attribute as ready for report for longer than 60 seconds.
                     *
                     * If the cumulative energy exported cannot currently be determined, a value of null shall be returned.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.3
                     */
                    readonly cumulativeEnergyExported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be the reported energy.
                         *
                         * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                         * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                         *
                         * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                         * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                         * StartSystime and EndSystime fields, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                         */
                        energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                        /**
                         * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field shall be indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                         * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                         */
                        startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                         * field was measured.
                         *
                         * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                         * indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                         * not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                         */
                        endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                         * of the Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                         * does not have the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                         * indicated in StartTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                         */
                        startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        /**
                         * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                         * the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                         * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                         * EndTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                         */
                        endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    }> | null, any>;
                };
            };
        }, {
            readonly flags: {
                readonly importedEnergy: true;
                readonly periodicEnergy: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the most recent measurement of energy imported by the server and the period during which it was
                     * measured.
                     *
                     * The reporting interval of this attribute shall be manufacturer dependent. The server may choose to omit
                     * publication of deltas considered not meaningful.
                     *
                     * The server shall NOT mark this attribute ready for report if the last time this was done was more
                     * recently than 1 second ago.
                     *
                     * The server may delay marking this attribute ready for report for longer periods if needed, however the
                     * server shall NOT delay marking this attribute as ready for report for longer than 60 seconds.
                     *
                     * If the periodic energy imported cannot currently be determined, a value of null shall be returned.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.4
                     */
                    readonly periodicEnergyImported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be the reported energy.
                         *
                         * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                         * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                         *
                         * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                         * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                         * StartSystime and EndSystime fields, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                         */
                        energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                        /**
                         * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field shall be indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                         * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                         */
                        startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                         * field was measured.
                         *
                         * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                         * indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                         * not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                         */
                        endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                         * of the Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                         * does not have the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                         * indicated in StartTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                         */
                        startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        /**
                         * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                         * the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                         * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                         * EndTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                         */
                        endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    }> | null, any>;
                };
            };
        }, {
            readonly flags: {
                readonly exportedEnergy: true;
                readonly periodicEnergy: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the most recent measurement of energy exported by the server and the period during which it was
                     * measured.
                     *
                     * The reporting interval of this attribute shall be manufacturer dependent. The server may choose to omit
                     * publication of deltas considered not meaningful.
                     *
                     * The server shall NOT mark this attribute ready for report if the last time this was done was more
                     * recently than 1 second ago.
                     *
                     * The server may delay marking this attribute ready for report for longer periods if needed, however the
                     * server shall NOT delay marking this attribute as ready for report for longer than 60 seconds.
                     *
                     * If the periodic energy exported cannot currently be determined, a value of null shall be returned.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.5
                     */
                    readonly periodicEnergyExported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be the reported energy.
                         *
                         * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                         * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                         *
                         * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                         * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                         * StartSystime and EndSystime fields, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                         */
                        energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                        /**
                         * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field shall be indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                         * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                         */
                        startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                         * field was measured.
                         *
                         * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                         * indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                         * not have the capability of determining the time in UTC, this field shall be omitted.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                         */
                        endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        /**
                         * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                         * of the Energy field was measured.
                         *
                         * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                         * does not have the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                         * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                         * indicated in StartTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                         */
                        startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        /**
                         * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                         * Energy field was measured.
                         *
                         * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                         * the capability of determining the time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                         * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                         * EndTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                         */
                        endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    }> | null, any>;
                };
            };
        }, {
            readonly flags: {
                readonly cumulativeEnergy: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates when cumulative measurements were most recently zero.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.6
                     */
                    readonly cumulativeEnergyReset: OptionalAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall indicate the timestamp in UTC when the value of the Energy field on the
                         * CumulativeEnergyImported attribute was most recently zero.
                         *
                         * If the server had determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyImported attribute was most recently zero, this field shall be indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyImported attribute was most recently zero, or does not have the capability of determining the
                         * time in UTC, this field shall be omitted.
                         *
                         * If the timestamp in UTC when the value of the Energy field on the CumulativeEnergyImported attribute was most
                         * recently zero cannot currently be determined, a value of null shall be returned.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.1
                         */
                        importedResetTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
                        /**
                         * This field shall indicate the timestamp in UTC when the value of the Energy field on the
                         * CumulativeEnergyExported attribute was most recently zero.
                         *
                         * If the server had determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyExported attribute was most recently zero, this field shall be indicated.
                         *
                         * Otherwise, if the server had not yet determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyExported attribute was most recently zero, or does not have the capability of determining the
                         * time in UTC, this field shall be omitted.
                         *
                         * If the timestamp in UTC when the value of the Energy field on the CumulativeEnergyExported attribute was most
                         * recently zero cannot currently be determined, a value of null shall be returned.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.2
                         */
                        exportedResetTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
                        /**
                         * This field shall indicate the time elapsed since boot when the value of the Energy field on the
                         * CumulativeEnergyImported attribute was most recently zero.
                         *
                         * If the server had not yet determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyImported attribute was most recently zero, or does not have the capability of determining the
                         * time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyImported attribute was most recently zero, this field may be omitted; if it is indicated, its
                         * value shall be the time elapsed since boot at the UTC time indicated in ImportedResetTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.3
                         */
                        importedResetSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint | null>;
                        /**
                         * This field shall indicate the time elapsed since boot when the value of the Energy field on the
                         * CumulativeEnergyExported attribute was most recently zero.
                         *
                         * If the server had not yet determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyExported attribute was most recently zero, or does not have the capability of determining the
                         * time in UTC, this field shall be indicated.
                         *
                         * Otherwise, if the server had determined the time in UTC when the value of the Energy field on the
                         * CumulativeEnergyExported attribute was most recently zero, this field may be omitted; if it is indicated, its
                         * value shall be the time elapsed since boot at the UTC time indicated in ImportedResetTimestamp.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.4
                         */
                        exportedResetSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint | null>;
                    }> | null, any>;
                };
                readonly events: {
                    /**
                     * This event shall be generated when the server takes a snapshot of the cumulative energy imported by the
                     * server, exported from the server, or both, but not more frequently than the rate mentioned in the
                     * description above of the related attribute.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1
                     */
                    readonly cumulativeEnergyMeasured: Event<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be the value of CumulativeEnergyImported attribute at the timestamp indicated in its
                         * EndTimestamp field, EndSystime field, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1.1
                         */
                        energyImported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                            /**
                             * This field shall be the reported energy.
                             *
                             * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                             * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                             *
                             * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                             * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                             * StartSystime and EndSystime fields, or both.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                             */
                            energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                            /**
                             * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field shall be indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                             * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                             */
                            startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                             * field was measured.
                             *
                             * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                             * indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                             * not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                             */
                            endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                             * of the Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                             * does not have the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                             * indicated in StartTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                             */
                            startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                            /**
                             * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                             * the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                             * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                             * EndTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                             */
                            endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        }>>;
                        /**
                         * This field shall be the value of CumulativeEnergyExported attribute at the timestamp indicated in its
                         * EndTimestamp field, EndSystime field, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1.2
                         */
                        energyExported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                            /**
                             * This field shall be the reported energy.
                             *
                             * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                             * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                             *
                             * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                             * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                             * StartSystime and EndSystime fields, or both.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                             */
                            energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                            /**
                             * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field shall be indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                             * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                             */
                            startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                             * field was measured.
                             *
                             * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                             * indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                             * not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                             */
                            endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                             * of the Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                             * does not have the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                             * indicated in StartTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                             */
                            startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                            /**
                             * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                             * the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                             * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                             * EndTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                             */
                            endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        }>>;
                    }>, any>;
                };
            };
        }, {
            readonly flags: {
                readonly periodicEnergy: true;
            };
            readonly component: {
                readonly events: {
                    /**
                     * This event shall be generated when the server reaches the end of a reporting period for imported energy,
                     * exported energy, or both.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2
                     */
                    readonly periodicEnergyMeasured: Event<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be the value of PeriodicEnergyImported attribute at the timestamp indicated in its
                         * EndTimestamp field, EndSystime field, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2.1
                         */
                        energyImported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                            /**
                             * This field shall be the reported energy.
                             *
                             * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                             * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                             *
                             * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                             * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                             * StartSystime and EndSystime fields, or both.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                             */
                            energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                            /**
                             * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field shall be indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                             * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                             */
                            startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                             * field was measured.
                             *
                             * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                             * indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                             * not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                             */
                            endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                             * of the Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                             * does not have the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                             * indicated in StartTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                             */
                            startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                            /**
                             * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                             * the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                             * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                             * EndTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                             */
                            endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        }>>;
                        /**
                         * This field shall be the value of PeriodicEnergyExported attribute at the timestamp indicated in its
                         * EndTimestamp field, EndSystime field, or both.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2.2
                         */
                        energyExported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                            /**
                             * This field shall be the reported energy.
                             *
                             * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                             * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                             *
                             * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                             * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                             * StartSystime and EndSystime fields, or both.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                             */
                            energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                            /**
                             * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field shall be indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                             * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                             */
                            startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                             * field was measured.
                             *
                             * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                             * indicated.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                             * not have the capability of determining the time in UTC, this field shall be omitted.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                             */
                            endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                            /**
                             * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                             * of the Energy field was measured.
                             *
                             * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                             *
                             * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                             * does not have the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                             * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                             * indicated in StartTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                             */
                            startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                            /**
                             * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                             * Energy field was measured.
                             *
                             * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                             * the capability of determining the time in UTC, this field shall be indicated.
                             *
                             * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                             * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                             * EndTimestamp.
                             *
                             * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                             */
                            endSystime: import("../tlv/TlvObject.js").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;
        }];
    }>;
    /**
     * This cluster provides a mechanism for querying data about the electrical energy imported or provided by the
     * server.
     *
     * Per the Matter specification you cannot use {@link ElectricalEnergyMeasurementCluster} without enabling certain
     * feature combinations. You must use the {@link with} factory method to obtain a working cluster.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 2.12
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    /**
     * @see {@link Complete}
     */
    const CompleteInstance: MutableCluster<{
        readonly id: 145;
        readonly name: "ElectricalEnergyMeasurement";
        readonly revision: 1;
        readonly features: {
            /**
             * The feature indicates the server is capable of measuring how much energy is imported by the server.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.1
             */
            readonly importedEnergy: BitFlag;
            /**
             * The feature indicates the server is capable of measuring how much energy is exported by the server.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.2
             */
            readonly exportedEnergy: BitFlag;
            /**
             * The feature indicates the server is capable of measuring how much energy has been imported or exported by
             * the server over the device’s lifetime. This measurement may start from when a device’s firmware is
             * updated to include this feature, when a device’s firmware is updated to correct measurement errors, or
             * when a device is factory reset.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.3
             */
            readonly cumulativeEnergy: BitFlag;
            /**
             * The feature indicates the server is capable of measuring how much energy has been imported or exported by
             * the server during a certain period of time. The start and end times for measurement periods shall be
             * determined by the server, and may represent overlapping periods.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.4.4
             */
            readonly periodicEnergy: BitFlag;
        };
        readonly attributes: {
            readonly cumulativeEnergyImported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be the reported energy.
                 *
                 * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                 * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                 *
                 * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                 * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                 * StartSystime and EndSystime fields, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                 */
                energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                /**
                 * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field shall be indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                 * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                 */
                startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                 * field was measured.
                 *
                 * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                 * indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                 * not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                 */
                endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                 * of the Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                 * does not have the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                 * indicated in StartTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                 */
                startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                /**
                 * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                 * the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                 * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                 * EndTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                 */
                endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            }> | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    importedEnergy: boolean;
                    cumulativeEnergy: boolean;
                }];
            };
            readonly cumulativeEnergyExported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be the reported energy.
                 *
                 * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                 * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                 *
                 * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                 * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                 * StartSystime and EndSystime fields, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                 */
                energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                /**
                 * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field shall be indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                 * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                 */
                startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                 * field was measured.
                 *
                 * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                 * indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                 * not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                 */
                endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                 * of the Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                 * does not have the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                 * indicated in StartTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                 */
                startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                /**
                 * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                 * the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                 * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                 * EndTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                 */
                endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            }> | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    exportedEnergy: boolean;
                    cumulativeEnergy: boolean;
                }];
            };
            readonly periodicEnergyImported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be the reported energy.
                 *
                 * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                 * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                 *
                 * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                 * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                 * StartSystime and EndSystime fields, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                 */
                energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                /**
                 * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field shall be indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                 * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                 */
                startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                 * field was measured.
                 *
                 * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                 * indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                 * not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                 */
                endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                 * of the Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                 * does not have the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                 * indicated in StartTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                 */
                startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                /**
                 * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                 * the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                 * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                 * EndTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                 */
                endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            }> | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    importedEnergy: boolean;
                    periodicEnergy: boolean;
                }];
            };
            readonly periodicEnergyExported: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be the reported energy.
                 *
                 * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                 * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                 *
                 * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                 * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                 * StartSystime and EndSystime fields, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                 */
                energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                /**
                 * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field shall be indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                 * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                 */
                startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                 * field was measured.
                 *
                 * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                 * indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                 * not have the capability of determining the time in UTC, this field shall be omitted.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                 */
                endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                 * of the Energy field was measured.
                 *
                 * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                 * does not have the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                 * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                 * indicated in StartTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                 */
                startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                /**
                 * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                 * Energy field was measured.
                 *
                 * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                 * the capability of determining the time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                 * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                 * EndTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                 */
                endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            }> | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    exportedEnergy: boolean;
                    periodicEnergy: boolean;
                }];
            };
            readonly cumulativeEnergyReset: OptionalAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the timestamp in UTC when the value of the Energy field on the
                 * CumulativeEnergyImported attribute was most recently zero.
                 *
                 * If the server had determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyImported attribute was most recently zero, this field shall be indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyImported attribute was most recently zero, or does not have the capability of determining the
                 * time in UTC, this field shall be omitted.
                 *
                 * If the timestamp in UTC when the value of the Energy field on the CumulativeEnergyImported attribute was most
                 * recently zero cannot currently be determined, a value of null shall be returned.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.1
                 */
                importedResetTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
                /**
                 * This field shall indicate the timestamp in UTC when the value of the Energy field on the
                 * CumulativeEnergyExported attribute was most recently zero.
                 *
                 * If the server had determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyExported attribute was most recently zero, this field shall be indicated.
                 *
                 * Otherwise, if the server had not yet determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyExported attribute was most recently zero, or does not have the capability of determining the
                 * time in UTC, this field shall be omitted.
                 *
                 * If the timestamp in UTC when the value of the Energy field on the CumulativeEnergyExported attribute was most
                 * recently zero cannot currently be determined, a value of null shall be returned.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.2
                 */
                exportedResetTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
                /**
                 * This field shall indicate the time elapsed since boot when the value of the Energy field on the
                 * CumulativeEnergyImported attribute was most recently zero.
                 *
                 * If the server had not yet determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyImported attribute was most recently zero, or does not have the capability of determining the
                 * time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyImported attribute was most recently zero, this field may be omitted; if it is indicated, its
                 * value shall be the time elapsed since boot at the UTC time indicated in ImportedResetTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.3
                 */
                importedResetSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint | null>;
                /**
                 * This field shall indicate the time elapsed since boot when the value of the Energy field on the
                 * CumulativeEnergyExported attribute was most recently zero.
                 *
                 * If the server had not yet determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyExported attribute was most recently zero, or does not have the capability of determining the
                 * time in UTC, this field shall be indicated.
                 *
                 * Otherwise, if the server had determined the time in UTC when the value of the Energy field on the
                 * CumulativeEnergyExported attribute was most recently zero, this field may be omitted; if it is indicated, its
                 * value shall be the time elapsed since boot at the UTC time indicated in ImportedResetTimestamp.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.3.4
                 */
                exportedResetSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint | null>;
            }> | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | [{
                    cumulativeEnergy: boolean;
                }];
                readonly mandatoryIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
            };
            /**
             * Indicates the accuracy of energy measurement by this server. The value of the MeasurementType field on
             * this MeasurementAccuracyStruct shall be ElectricalEnergy.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 2.12.6.1
             */
            readonly accuracy: FixedAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                measurementType: import("../tlv/TlvObject.js").FieldType<import("../index.js").MeasurementType>;
                measured: import("../tlv/TlvObject.js").FieldType<boolean>;
                minMeasuredValue: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                maxMeasuredValue: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                accuracyRanges: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    rangeMin: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    rangeMax: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    percentMax: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    percentMin: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    percentTypical: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    fixedMax: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    fixedMin: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    fixedTypical: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                }>[]>;
            }>, any>;
        };
        readonly events: {
            readonly cumulativeEnergyMeasured: Event<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be the value of CumulativeEnergyImported attribute at the timestamp indicated in its
                 * EndTimestamp field, EndSystime field, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1.1
                 */
                energyImported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall be the reported energy.
                     *
                     * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                     * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                     *
                     * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                     * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                     * StartSystime and EndSystime fields, or both.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                     */
                    energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    /**
                     * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field shall be indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                     * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                     */
                    startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                     * field was measured.
                     *
                     * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                     * indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                     * not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                     */
                    endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                     * of the Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                     * does not have the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                     * indicated in StartTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                     */
                    startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    /**
                     * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                     * the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                     * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                     * EndTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                     */
                    endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                }>>;
                /**
                 * This field shall be the value of CumulativeEnergyExported attribute at the timestamp indicated in its
                 * EndTimestamp field, EndSystime field, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.1.2
                 */
                energyExported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall be the reported energy.
                     *
                     * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                     * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                     *
                     * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                     * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                     * StartSystime and EndSystime fields, or both.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                     */
                    energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    /**
                     * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field shall be indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                     * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                     */
                    startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                     * field was measured.
                     *
                     * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                     * indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                     * not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                     */
                    endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                     * of the Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                     * does not have the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                     * indicated in StartTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                     */
                    startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    /**
                     * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                     * the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                     * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                     * EndTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                     */
                    endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                }>>;
            }>, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    cumulativeEnergy: boolean;
                }];
            };
            readonly periodicEnergyMeasured: Event<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be the value of PeriodicEnergyImported attribute at the timestamp indicated in its
                 * EndTimestamp field, EndSystime field, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2.1
                 */
                energyImported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall be the reported energy.
                     *
                     * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                     * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                     *
                     * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                     * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                     * StartSystime and EndSystime fields, or both.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                     */
                    energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    /**
                     * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field shall be indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                     * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                     */
                    startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                     * field was measured.
                     *
                     * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                     * indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                     * not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                     */
                    endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                     * of the Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                     * does not have the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                     * indicated in StartTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                     */
                    startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    /**
                     * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                     * the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                     * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                     * EndTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                     */
                    endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                }>>;
                /**
                 * This field shall be the value of PeriodicEnergyExported attribute at the timestamp indicated in its
                 * EndTimestamp field, EndSystime field, or both.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 2.12.7.2.2
                 */
                energyExported: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall be the reported energy.
                     *
                     * If the EnergyMeasurementStruct represents cumulative energy, then this shall represent the cumulative energy
                     * recorded at either the value of the EndTimestamp field or the value of the EndSystime field, or both.
                     *
                     * If the EnergyMeasurementStruct represents periodic energy, then this shall represent the energy recorded
                     * during the period specified by either the StartTimestamp and EndTimestamp fields, the period specified by the
                     * StartSystime and EndSystime fields, or both.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.1
                     */
                    energy: import("../tlv/TlvObject.js").FieldType<number | bigint>;
                    /**
                     * This field shall indicate the timestamp in UTC of the beginning of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field shall be indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at or before the beginning of the measurement
                     * period, or does not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.2
                     */
                    startTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the timestamp in UTC of the end of the period during which the value of the Energy
                     * field was measured.
                     *
                     * If the server had determined the time in UTC by the end of the measurement period, this field shall be
                     * indicated.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC by the end of the measurement period, or does
                     * not have the capability of determining the time in UTC, this field shall be omitted.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.3
                     */
                    endTimestamp: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                    /**
                     * This field shall indicate the time elapsed since boot at the beginning of the period during which the value
                     * of the Energy field was measured.
                     *
                     * If this EnergyMeasurementStruct represents cumulative energy, this field shall be omitted.
                     *
                     * Otherwise, if the server had not yet determined the time in UTC at the start of the measurement period, or
                     * does not have the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC at or before the beginning of the measurement period,
                     * this field may be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time
                     * indicated in StartTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.4
                     */
                    startSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    /**
                     * This field shall indicate the time elapsed since boot at the end of the period during which the value of the
                     * Energy field was measured.
                     *
                     * If the server had not yet determined the time in UTC by the end of the measurement period, or does not have
                     * the capability of determining the time in UTC, this field shall be indicated.
                     *
                     * Otherwise, if the server had determined the time in UTC by the end of the measurement period, this field may
                     * be omitted; if it is indicated, its value shall be the time elapsed since boot at the UTC time indicated in
                     * EndTimestamp.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 2.12.5.2.5
                     */
                    endSystime: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                }>>;
            }>, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    periodicEnergy: boolean;
                }];
            };
        };
    }, []>;
    /**
     * This cluster supports all ElectricalEnergyMeasurement features. It may support illegal feature combinations.
     *
     * If you use this cluster you must manually specify which features are active and ensure the set of active features
     * is legal per the Matter specification.
     */
    interface Complete extends Identity<typeof CompleteInstance> {
    }
    const Complete: Complete;
}
export type ElectricalEnergyMeasurementCluster = ElectricalEnergyMeasurement.Cluster;
export declare const ElectricalEnergyMeasurementCluster: ElectricalEnergyMeasurement.Cluster;
//# sourceMappingURL=electrical-energy-measurement.d.ts.map