/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { TlvField, TlvOptionalField, TlvObject } from "../tlv/TlvObject.js";
import { TlvInt64, TlvPercent100ths, TlvUInt64 } from "../tlv/TlvNumber.js";
const TlvMeasurementAccuracyRange = TlvObject({
  /**
   * This field shall indicate the minimum measurement value for the specified level of accuracy.
   *
   * The value of this field shall be greater than or equal to the value of the MinMeasuredValue field on the
   * encompassing MeasurementAccuracyStruct.
   *
   * The value of this field shall be less than or equal to the value of the MaxMeasuredValue field on the
   * encompassing MeasurementAccuracyStruct.
   *
   * @see {@link MatterSpecification.v142.Cluster} § 2.1.3.2.1
   */
  rangeMin: TlvField(0, TlvInt64),
  /**
   * This field shall indicate the maximum measurement value for the specified level of accuracy. The value of this
   * field shall be greater than the value of the RangeMin field.
   *
   * The value of this field shall be greater than or equal to the value of the MinMeasuredValue field on the
   * encompassing MeasurementAccuracyStruct.
   *
   * The value of this field shall be less than or equal to the value of the MaxMeasuredValue field on the
   * encompassing MeasurementAccuracyStruct.
   *
   * @see {@link MatterSpecification.v142.Cluster} § 2.1.3.2.2
   */
  rangeMax: TlvField(1, TlvInt64),
  /**
   * This field shall indicate the maximum +/- percentage accuracy for the associated measurement.
   *
   * @see {@link MatterSpecification.v142.Cluster} § 2.1.3.2.3
   */
  percentMax: TlvOptionalField(2, TlvPercent100ths),
  /**
   * This field shall indicate the minimum +/- percentage accuracy for the associated measurement.
   *
   * @see {@link MatterSpecification.v142.Cluster} § 2.1.3.2.4
   */
  percentMin: TlvOptionalField(3, TlvPercent100ths),
  /**
   * This field shall indicate the typical +/- percentage accuracy for the associated measurement.
   *
   * @see {@link MatterSpecification.v142.Cluster} § 2.1.3.2.5
   */
  percentTypical: TlvOptionalField(4, TlvPercent100ths),
  /**
   * This field shall indicate the maximum +/- fixed accuracy for the associated measurement, in the unit indicated by
   * MeasurementType.
   *
   * @see {@link MatterSpecification.v142.Cluster} § 2.1.3.2.6
   */
  fixedMax: TlvOptionalField(5, TlvUInt64),
  /**
   * This field shall indicate the minimum +/- fixed accuracy for the associated measurement, in the unit indicated by
   * MeasurementType.
   *
   * @see {@link MatterSpecification.v142.Cluster} § 2.1.3.2.7
   */
  fixedMin: TlvOptionalField(6, TlvUInt64),
  /**
   * This field shall indicate the typical +/- fixed accuracy for the associated measurement, in the unit indicated by
   * MeasurementType.
   *
   * @see {@link MatterSpecification.v142.Cluster} § 2.1.3.2.8
   */
  fixedTypical: TlvOptionalField(7, TlvUInt64)
});
export {
  TlvMeasurementAccuracyRange
};
//# sourceMappingURL=MeasurementAccuracyRange.js.map
