/**
 * @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 { WritableAttribute, FixedAttribute } from "../cluster/Cluster.js";
import { BitFlag } from "../schema/BitmapSchema.js";
import { Identity } from "#general";
export declare namespace TimeFormatLocalization {
    /**
     * These are optional features supported by TimeFormatLocalizationCluster.
     *
     * @see {@link MatterSpecification.v142.Core} § 11.4.4
     */
    enum Feature {
        /**
         * CalendarFormat (CALFMT)
         *
         * The Node can be configured to use different calendar formats when conveying values to a user.
         */
        CalendarFormat = "CalendarFormat"
    }
    /**
     * @see {@link MatterSpecification.v142.Core} § 11.4.5.2
     */
    enum CalendarType {
        /**
         * Dates conveyed using the Buddhist calendar
         */
        Buddhist = 0,
        /**
         * Dates conveyed using the Chinese calendar
         */
        Chinese = 1,
        /**
         * Dates conveyed using the Coptic calendar
         */
        Coptic = 2,
        /**
         * Dates conveyed using the Ethiopian calendar
         */
        Ethiopian = 3,
        /**
         * Dates conveyed using the Gregorian calendar
         */
        Gregorian = 4,
        /**
         * Dates conveyed using the Hebrew calendar
         */
        Hebrew = 5,
        /**
         * Dates conveyed using the Indian calendar
         */
        Indian = 6,
        /**
         * Dates conveyed using the Islamic calendar
         */
        Islamic = 7,
        /**
         * Dates conveyed using the Japanese calendar
         */
        Japanese = 8,
        /**
         * Dates conveyed using the Korean calendar
         */
        Korean = 9,
        /**
         * Dates conveyed using the Persian calendar
         */
        Persian = 10,
        /**
         * Dates conveyed using the Taiwanese calendar
         */
        Taiwanese = 11,
        /**
         * calendar implied from active locale
         */
        UseActiveLocale = 255
    }
    /**
     * @see {@link MatterSpecification.v142.Core} § 11.4.5.1
     */
    enum HourFormat {
        /**
         * Time conveyed with a 12-hour clock
         */
        "12Hr" = 0,
        /**
         * Time conveyed with a 24-hour clock
         */
        "24Hr" = 1,
        /**
         * Use active locale clock
         */
        UseActiveLocale = 255
    }
    /**
     * A TimeFormatLocalizationCluster supports these elements if it supports feature CalendarFormat.
     */
    const CalendarFormatComponent: {
        readonly attributes: {
            /**
             * Indicates the calendar format that the Node is currently configured to use when conveying dates.
             *
             * If not UseActiveLocale, this value shall take priority over any unit implied through the ActiveLocale
             * attribute. If UseActiveLocale, any unit implied through the ActiveLocale attribute is used as the
             * calendar type, and if ActiveLocale is not present, the calendar type is unknown.
             *
             * @see {@link MatterSpecification.v142.Core} § 11.4.6.2
             */
            readonly activeCalendarType: WritableAttribute<CalendarType, any>;
            /**
             * Indicates a list of CalendarTypeEnum values that are supported by the Node. The list shall NOT contain
             * any duplicate entries. The ordering of items within the list SHOULD NOT express any meaning. The maximum
             * length of the SupportedCalendarTypes list shall be equivalent to the number of enumerations within
             * CalendarTypeEnum.
             *
             * @see {@link MatterSpecification.v142.Core} § 11.4.6.3
             */
            readonly supportedCalendarTypes: FixedAttribute<CalendarType[], any>;
        };
    };
    /**
     * These elements and properties are present in all TimeFormatLocalization clusters.
     */
    const Base: {
        readonly id: 44;
        readonly name: "TimeFormatLocalization";
        readonly revision: 1;
        readonly features: {
            /**
             * The Node can be configured to use different calendar formats when conveying values to a user.
             */
            readonly calendarFormat: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the format that the Node is currently configured to use when conveying the hour unit of time.
             *
             * If not UseActiveLocale, this value shall take priority over any unit implied through the ActiveLocale
             * attribute. If UseActiveLocale, any unit implied through the ActiveLocale attribute is used as the hour
             * format, and if ActiveLocale is not present, the hour format is unknown.
             *
             * @see {@link MatterSpecification.v142.Core} § 11.4.6.1
             */
            readonly hourFormat: WritableAttribute<HourFormat, any>;
        };
        /**
         * This metadata controls which TimeFormatLocalizationCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly calendarFormat: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the calendar format that the Node is currently configured to use when conveying dates.
                     *
                     * If not UseActiveLocale, this value shall take priority over any unit implied through the ActiveLocale
                     * attribute. If UseActiveLocale, any unit implied through the ActiveLocale attribute is used as the
                     * calendar type, and if ActiveLocale is not present, the calendar type is unknown.
                     *
                     * @see {@link MatterSpecification.v142.Core} § 11.4.6.2
                     */
                    readonly activeCalendarType: WritableAttribute<CalendarType, any>;
                    /**
                     * Indicates a list of CalendarTypeEnum values that are supported by the Node. The list shall NOT contain
                     * any duplicate entries. The ordering of items within the list SHOULD NOT express any meaning. The maximum
                     * length of the SupportedCalendarTypes list shall be equivalent to the number of enumerations within
                     * CalendarTypeEnum.
                     *
                     * @see {@link MatterSpecification.v142.Core} § 11.4.6.3
                     */
                    readonly supportedCalendarTypes: FixedAttribute<CalendarType[], any>;
                };
            };
        }];
    };
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster<{
        readonly id: 44;
        readonly name: "TimeFormatLocalization";
        readonly revision: 1;
        readonly features: {
            /**
             * The Node can be configured to use different calendar formats when conveying values to a user.
             */
            readonly calendarFormat: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the format that the Node is currently configured to use when conveying the hour unit of time.
             *
             * If not UseActiveLocale, this value shall take priority over any unit implied through the ActiveLocale
             * attribute. If UseActiveLocale, any unit implied through the ActiveLocale attribute is used as the hour
             * format, and if ActiveLocale is not present, the hour format is unknown.
             *
             * @see {@link MatterSpecification.v142.Core} § 11.4.6.1
             */
            readonly hourFormat: WritableAttribute<HourFormat, any>;
        };
        /**
         * This metadata controls which TimeFormatLocalizationCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly calendarFormat: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the calendar format that the Node is currently configured to use when conveying dates.
                     *
                     * If not UseActiveLocale, this value shall take priority over any unit implied through the ActiveLocale
                     * attribute. If UseActiveLocale, any unit implied through the ActiveLocale attribute is used as the
                     * calendar type, and if ActiveLocale is not present, the calendar type is unknown.
                     *
                     * @see {@link MatterSpecification.v142.Core} § 11.4.6.2
                     */
                    readonly activeCalendarType: WritableAttribute<CalendarType, any>;
                    /**
                     * Indicates a list of CalendarTypeEnum values that are supported by the Node. The list shall NOT contain
                     * any duplicate entries. The ordering of items within the list SHOULD NOT express any meaning. The maximum
                     * length of the SupportedCalendarTypes list shall be equivalent to the number of enumerations within
                     * CalendarTypeEnum.
                     *
                     * @see {@link MatterSpecification.v142.Core} § 11.4.6.3
                     */
                    readonly supportedCalendarTypes: FixedAttribute<CalendarType[], any>;
                };
            };
        }];
    }, []>;
    /**
     * Nodes should be expected to be deployed to any and all regions of the world. These global regions may have
     * differing preferences for how dates and times are conveyed. As such, Nodes that visually or audibly convey time
     * information need a mechanism by which they can be configured to use a user’s preferred format.
     *
     * This cluster supports an interface to a Node. It provides attributes for determining and configuring time and
     * date formatting information that a Node shall utilize when conveying values to a user.
     *
     * TimeFormatLocalizationCluster supports optional features that you can enable with the
     * TimeFormatLocalizationCluster.with() factory method.
     *
     * @see {@link MatterSpecification.v142.Core} § 11.4
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    /**
     * @see {@link Complete}
     */
    const CompleteInstance: MutableCluster<{
        readonly id: import("#general").Branded<44, "ClusterId">;
        readonly name: "TimeFormatLocalization";
        readonly revision: 1;
        readonly features: {
            /**
             * The Node can be configured to use different calendar formats when conveying values to a user.
             */
            readonly calendarFormat: BitFlag;
        };
        readonly attributes: {
            readonly activeCalendarType: WritableAttribute<CalendarType, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    calendarFormat: boolean;
                }];
            };
            readonly supportedCalendarTypes: FixedAttribute<CalendarType[], any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    calendarFormat: boolean;
                }];
            };
            readonly hourFormat: WritableAttribute<HourFormat, any>;
            readonly clusterRevision: import("../cluster/Cluster.js").Attribute<number, never>;
            readonly featureMap: import("../cluster/Cluster.js").Attribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * The Node can be configured to use different calendar formats when conveying values to a user.
                 */
                readonly calendarFormat: BitFlag;
            }>, never>;
            readonly attributeList: import("../cluster/Cluster.js").Attribute<import("../index.js").AttributeId[], never>;
            readonly acceptedCommandList: import("../cluster/Cluster.js").Attribute<import("../index.js").CommandId[], never>;
            readonly generatedCommandList: import("../cluster/Cluster.js").Attribute<import("../index.js").CommandId[], never>;
        };
    }, []>;
    /**
     * This cluster supports all TimeFormatLocalization 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 TimeFormatLocalizationCluster = TimeFormatLocalization.Cluster;
export declare const TimeFormatLocalizationCluster: TimeFormatLocalization.Cluster;
//# sourceMappingURL=time-format-localization.d.ts.map