/**
 * @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 { ConcentrationMeasurement } from "./concentration-measurement.js";
import { Identity } from "#general";
export declare namespace Pm1ConcentrationMeasurement {
    const Base: {
        readonly id: 1068;
        readonly name: "Pm1ConcentrationMeasurement";
        readonly features: {
            readonly numericMeasurement: import("../index.js").BitFlag;
            readonly levelIndication: import("../index.js").BitFlag;
            readonly mediumLevel: import("../index.js").BitFlag;
            readonly criticalLevel: import("../index.js").BitFlag;
            readonly peakMeasurement: import("../index.js").BitFlag;
            readonly averageMeasurement: import("../index.js").BitFlag;
        };
        readonly revision: 3;
        readonly attributes: {
            readonly measurementMedium: import("../index.js").FixedAttribute<ConcentrationMeasurement.MeasurementMedium, any>;
        };
        readonly extensions: readonly [{
            readonly flags: {
                readonly numericMeasurement: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly measuredValue: import("../index.js").Attribute<number | null, any>;
                    readonly minMeasuredValue: import("../index.js").Attribute<number | null, any>;
                    readonly maxMeasuredValue: import("../index.js").Attribute<number | null, any>;
                    readonly uncertainty: import("../index.js").OptionalAttribute<number, any>;
                    readonly measurementUnit: import("../index.js").FixedAttribute<ConcentrationMeasurement.MeasurementUnit, any>;
                };
            };
        }, {
            readonly flags: {
                readonly peakMeasurement: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly peakMeasuredValue: import("../index.js").Attribute<number | null, any>;
                    readonly peakMeasuredValueWindow: import("../index.js").Attribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly averageMeasurement: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly averageMeasuredValue: import("../index.js").Attribute<number | null, any>;
                    readonly averageMeasuredValueWindow: import("../index.js").Attribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly levelIndication: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly levelValue: import("../index.js").Attribute<ConcentrationMeasurement.LevelValue, any>;
                };
            };
        }, {
            readonly flags: {
                readonly mediumLevel: true;
                readonly levelIndication: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly criticalLevel: true;
                readonly levelIndication: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly peakMeasurement: true;
                readonly numericMeasurement: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly averageMeasurement: true;
                readonly numericMeasurement: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly numericMeasurement: false;
                readonly levelIndication: false;
            };
            readonly component: false;
        }];
    };
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster.ExtensibleOnly<{
        readonly id: 1068;
        readonly name: "Pm1ConcentrationMeasurement";
        readonly features: {
            readonly numericMeasurement: import("../index.js").BitFlag;
            readonly levelIndication: import("../index.js").BitFlag;
            readonly mediumLevel: import("../index.js").BitFlag;
            readonly criticalLevel: import("../index.js").BitFlag;
            readonly peakMeasurement: import("../index.js").BitFlag;
            readonly averageMeasurement: import("../index.js").BitFlag;
        };
        readonly revision: 3;
        readonly attributes: {
            readonly measurementMedium: import("../index.js").FixedAttribute<ConcentrationMeasurement.MeasurementMedium, any>;
        };
        readonly extensions: readonly [{
            readonly flags: {
                readonly numericMeasurement: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly measuredValue: import("../index.js").Attribute<number | null, any>;
                    readonly minMeasuredValue: import("../index.js").Attribute<number | null, any>;
                    readonly maxMeasuredValue: import("../index.js").Attribute<number | null, any>;
                    readonly uncertainty: import("../index.js").OptionalAttribute<number, any>;
                    readonly measurementUnit: import("../index.js").FixedAttribute<ConcentrationMeasurement.MeasurementUnit, any>;
                };
            };
        }, {
            readonly flags: {
                readonly peakMeasurement: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly peakMeasuredValue: import("../index.js").Attribute<number | null, any>;
                    readonly peakMeasuredValueWindow: import("../index.js").Attribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly averageMeasurement: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly averageMeasuredValue: import("../index.js").Attribute<number | null, any>;
                    readonly averageMeasuredValueWindow: import("../index.js").Attribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly levelIndication: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly levelValue: import("../index.js").Attribute<ConcentrationMeasurement.LevelValue, any>;
                };
            };
        }, {
            readonly flags: {
                readonly mediumLevel: true;
                readonly levelIndication: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly criticalLevel: true;
                readonly levelIndication: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly peakMeasurement: true;
                readonly numericMeasurement: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly averageMeasurement: true;
                readonly numericMeasurement: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly numericMeasurement: false;
                readonly levelIndication: false;
            };
            readonly component: false;
        }];
    }>;
    /**
     * This alias specializes the semantics of {@link ConcentrationMeasurement.Base}.
     *
     * Per the Matter specification you cannot use {@link Pm1ConcentrationMeasurementCluster} without enabling certain
     * feature combinations. You must use the {@link with} factory method to obtain a working cluster.
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    /**
     * This cluster supports all Pm1ConcentrationMeasurement 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.
     */
    const CompleteInstance: MutableCluster<{
        readonly id: 1068;
        readonly name: "Pm1ConcentrationMeasurement";
        readonly revision: 3;
        readonly features: {
            readonly numericMeasurement: import("../index.js").BitFlag;
            readonly levelIndication: import("../index.js").BitFlag;
            readonly mediumLevel: import("../index.js").BitFlag;
            readonly criticalLevel: import("../index.js").BitFlag;
            readonly peakMeasurement: import("../index.js").BitFlag;
            readonly averageMeasurement: import("../index.js").BitFlag;
        };
        readonly attributes: {
            readonly measuredValue: import("../index.js").Attribute<number | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../index.js").ConditionalFeatureList<import("../index.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    numericMeasurement: boolean;
                }];
            };
            readonly minMeasuredValue: import("../index.js").Attribute<number | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../index.js").ConditionalFeatureList<import("../index.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    numericMeasurement: boolean;
                }];
            };
            readonly maxMeasuredValue: import("../index.js").Attribute<number | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../index.js").ConditionalFeatureList<import("../index.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    numericMeasurement: boolean;
                }];
            };
            readonly peakMeasuredValue: import("../index.js").Attribute<number | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../index.js").ConditionalFeatureList<import("../index.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    peakMeasurement: boolean;
                }];
            };
            readonly peakMeasuredValueWindow: import("../index.js").Attribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../index.js").ConditionalFeatureList<import("../index.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    peakMeasurement: boolean;
                }];
            };
            readonly averageMeasuredValue: import("../index.js").Attribute<number | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../index.js").ConditionalFeatureList<import("../index.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    averageMeasurement: boolean;
                }];
            };
            readonly averageMeasuredValueWindow: import("../index.js").Attribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../index.js").ConditionalFeatureList<import("../index.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    averageMeasurement: boolean;
                }];
            };
            readonly uncertainty: import("../index.js").OptionalAttribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | [{
                    numericMeasurement: boolean;
                }];
                readonly mandatoryIf: [] | import("../index.js").ConditionalFeatureList<import("../index.js").BitSchema>;
            };
            readonly measurementUnit: import("../index.js").FixedAttribute<ConcentrationMeasurement.MeasurementUnit, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../index.js").ConditionalFeatureList<import("../index.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    numericMeasurement: boolean;
                }];
            };
            readonly levelValue: import("../index.js").Attribute<ConcentrationMeasurement.LevelValue, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../index.js").ConditionalFeatureList<import("../index.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    levelIndication: boolean;
                }];
            };
            readonly measurementMedium: import("../index.js").FixedAttribute<ConcentrationMeasurement.MeasurementMedium, any>;
        };
    }, []>;
    interface Complete extends Identity<typeof CompleteInstance> {
    }
    const Complete: Complete;
}
export type Pm1ConcentrationMeasurementCluster = Pm1ConcentrationMeasurement.Cluster;
export declare const Pm1ConcentrationMeasurementCluster: Pm1ConcentrationMeasurement.Cluster;
//# sourceMappingURL=pm1-concentration-measurement.d.ts.map