/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
/*** THIS FILE IS GENERATED, DO NOT EDIT ***/
import { MutableCluster } from "../cluster/mutation/MutableCluster.js";
import { WritableAttribute, FixedAttribute } from "../cluster/Cluster.js";
import { BitFlag } from "../schema/BitmapSchema.js";
import { Identity } from "#general";
export declare namespace UnitLocalization {
    /**
     * These are optional features supported by UnitLocalizationCluster.
     *
     * @see {@link MatterSpecification.v142.Core} § 11.5.4
     */
    enum Feature {
        /**
         * TemperatureUnit (TEMP)
         *
         * The Node can be configured to use different units of temperature when conveying values to a user.
         */
        TemperatureUnit = "TemperatureUnit"
    }
    /**
     * @see {@link MatterSpecification.v142.Core} § 11.5.5.1
     */
    enum TempUnit {
        /**
         * Temperature conveyed in Fahrenheit
         */
        Fahrenheit = 0,
        /**
         * Temperature conveyed in Celsius
         */
        Celsius = 1,
        /**
         * Temperature conveyed in Kelvin
         */
        Kelvin = 2
    }
    /**
     * A UnitLocalizationCluster supports these elements if it supports feature TemperatureUnit.
     */
    const TemperatureUnitComponent: {
        readonly attributes: {
            /**
             * Indicates the unit for the Node to use only when conveying temperature in communication to the user, for
             * example such as via a user interface on the device. If provided, this value shall take priority over any
             * unit implied through the ActiveLocale Attribute.
             *
             * An attempt to write to this attribute with a value not included in the SupportedTemperatureUnits
             * attribute list shall result in a CONSTRAINT_ERROR.
             *
             * @see {@link MatterSpecification.v142.Core} § 11.5.6.1
             */
            readonly temperatureUnit: WritableAttribute<TempUnit, any>;
            /**
             * Indicates a list of units supported by the Node to be used when writing the TemperatureUnit attribute of
             * this cluster. Each entry in the list shall be unique.
             *
             * @see {@link MatterSpecification.v142.Core} § 11.5.6.2
             */
            readonly supportedTemperatureUnits: FixedAttribute<TempUnit[], any>;
        };
    };
    /**
     * These elements and properties are present in all UnitLocalization clusters.
     */
    const Base: {
        readonly id: 45;
        readonly name: "UnitLocalization";
        readonly revision: 2;
        readonly features: {
            /**
             * The Node can be configured to use different units of temperature when conveying values to a user.
             */
            readonly temperatureUnit: BitFlag;
        };
        /**
         * This metadata controls which UnitLocalizationCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly temperatureUnit: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the unit for the Node to use only when conveying temperature in communication to the user, for
                     * example such as via a user interface on the device. If provided, this value shall take priority over any
                     * unit implied through the ActiveLocale Attribute.
                     *
                     * An attempt to write to this attribute with a value not included in the SupportedTemperatureUnits
                     * attribute list shall result in a CONSTRAINT_ERROR.
                     *
                     * @see {@link MatterSpecification.v142.Core} § 11.5.6.1
                     */
                    readonly temperatureUnit: WritableAttribute<TempUnit, any>;
                    /**
                     * Indicates a list of units supported by the Node to be used when writing the TemperatureUnit attribute of
                     * this cluster. Each entry in the list shall be unique.
                     *
                     * @see {@link MatterSpecification.v142.Core} § 11.5.6.2
                     */
                    readonly supportedTemperatureUnits: FixedAttribute<TempUnit[], any>;
                };
            };
        }];
    };
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster<{
        readonly id: 45;
        readonly name: "UnitLocalization";
        readonly revision: 2;
        readonly features: {
            /**
             * The Node can be configured to use different units of temperature when conveying values to a user.
             */
            readonly temperatureUnit: BitFlag;
        };
        /**
         * This metadata controls which UnitLocalizationCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly temperatureUnit: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the unit for the Node to use only when conveying temperature in communication to the user, for
                     * example such as via a user interface on the device. If provided, this value shall take priority over any
                     * unit implied through the ActiveLocale Attribute.
                     *
                     * An attempt to write to this attribute with a value not included in the SupportedTemperatureUnits
                     * attribute list shall result in a CONSTRAINT_ERROR.
                     *
                     * @see {@link MatterSpecification.v142.Core} § 11.5.6.1
                     */
                    readonly temperatureUnit: WritableAttribute<TempUnit, any>;
                    /**
                     * Indicates a list of units supported by the Node to be used when writing the TemperatureUnit attribute of
                     * this cluster. Each entry in the list shall be unique.
                     *
                     * @see {@link MatterSpecification.v142.Core} § 11.5.6.2
                     */
                    readonly supportedTemperatureUnits: FixedAttribute<TempUnit[], any>;
                };
            };
        }];
    }, []>;
    /**
     * Nodes should be expected to be deployed to any and all regions of the world. These global regions may have
     * differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that
     * visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use
     * a user’s preferred unit.
     *
     * This cluster supports an interface to a Node. It provides attributes for determining and configuring the units
     * that a Node shall utilize when conveying values in communication to a user.
     *
     * UnitLocalizationCluster supports optional features that you can enable with the UnitLocalizationCluster.with()
     * factory method.
     *
     * @see {@link MatterSpecification.v142.Core} § 11.5
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    /**
     * @see {@link Complete}
     */
    const CompleteInstance: MutableCluster<{
        readonly id: import("#general").Branded<45, "ClusterId">;
        readonly name: "UnitLocalization";
        readonly revision: 2;
        readonly features: {
            /**
             * The Node can be configured to use different units of temperature when conveying values to a user.
             */
            readonly temperatureUnit: BitFlag;
        };
        readonly attributes: {
            readonly temperatureUnit: WritableAttribute<TempUnit, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    temperatureUnit: boolean;
                }];
            };
            readonly supportedTemperatureUnits: FixedAttribute<TempUnit[], any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    temperatureUnit: boolean;
                }];
            };
        };
    }, []>;
    /**
     * This cluster supports all UnitLocalization 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 UnitLocalizationCluster = UnitLocalization.Cluster;
export declare const UnitLocalizationCluster: UnitLocalization.Cluster;
//# sourceMappingURL=unit-localization.d.ts.map