/**
 * @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 { FixedAttribute, WritableAttribute, Attribute, Command } from "../cluster/Cluster.js";
import { BitFlag } from "../schema/BitmapSchema.js";
import { TypeFromSchema } from "../tlv/TlvSchema.js";
import { Identity } from "#general";
export declare namespace FanControl {
    /**
     * These are optional features supported by FanControlCluster.
     *
     * @see {@link MatterSpecification.v13.Cluster} § 4.4.4
     */
    enum Feature {
        /**
         * MultiSpeed (SPD)
         *
         * Legacy Fan Control cluster revision 0-1 defined 3 speeds (low, medium and high) plus automatic speed control
         * but left it up to the implementer to decide what was supported. Therefore, it is assumed that legacy client
         * implementations are capable of determining, from the server, the number of speeds supported between 1, 2, or
         * 3, and whether automatic speed control is supported.
         *
         * The MultiSpeed feature includes new attributes that support a running fan speed value from 0 to SpeedMax,
         * which has a maximum of 100.
         *
         * See Speed Rules for more details.
         *
         * @see {@link MatterSpecification.v13.Cluster} § 4.4.4.1
         */
        MultiSpeed = "MultiSpeed",
        /**
         * Auto (AUT)
         *
         * Automatic mode supported for fan speed
         */
        Auto = "Auto",
        /**
         * Rocking (RCK)
         *
         * Rocking movement supported
         */
        Rocking = "Rocking",
        /**
         * Wind (WND)
         *
         * Wind emulation supported
         */
        Wind = "Wind",
        /**
         * Step (STEP)
         *
         * Step command supported
         */
        Step = "Step",
        /**
         * AirflowDirection (DIR)
         *
         * Airflow Direction attribute is supported
         */
        AirflowDirection = "AirflowDirection"
    }
    /**
     * @see {@link MatterSpecification.v13.Cluster} § 4.4.5.1
     */
    const Rock: {
        /**
         * Indicate rock left to right
         */
        rockLeftRight: BitFlag;
        /**
         * Indicate rock up and down
         */
        rockUpDown: BitFlag;
        /**
         * Indicate rock around
         */
        rockRound: BitFlag;
    };
    /**
     * @see {@link MatterSpecification.v13.Cluster} § 4.4.5.2
     */
    const Wind: {
        /**
         * Indicate sleep wind
         */
        sleepWind: BitFlag;
        /**
         * Indicate natural wind
         */
        naturalWind: BitFlag;
    };
    /**
     * @see {@link MatterSpecification.v13.Cluster} § 4.4.5.4
     */
    enum AirflowDirection {
        /**
         * Airflow is in the forward direction
         */
        Forward = 0,
        /**
         * Airflow is in the reverse direction
         */
        Reverse = 1
    }
    /**
     * @see {@link MatterSpecification.v13.Cluster} § 4.4.5.3
     */
    enum StepDirection {
        /**
         * Step moves in increasing direction
         */
        Increase = 0,
        /**
         * Step moves in decreasing direction
         */
        Decrease = 1
    }
    /**
     * Input to the FanControl step command
     *
     * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1
     */
    const TlvStepRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate whether the fan speed increases or decreases to the next step value.
         *
         * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.1
         */
        direction: import("../tlv/TlvObject.js").FieldType<StepDirection>;
        /**
         * This field shall indicate if the fan speed wraps between highest and lowest step value.
         *
         * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.2
         */
        wrap: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
        /**
         * This field shall indicate that the fan being off (speed value 0) is included as a step value.
         *
         * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.3
         */
        lowestOff: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
    }>;
    /**
     * Input to the FanControl step command
     *
     * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1
     */
    interface StepRequest extends TypeFromSchema<typeof TlvStepRequest> {
    }
    /**
     * @see {@link MatterSpecification.v13.Cluster} § 4.4.5.5
     */
    enum FanMode {
        /**
         * Fan is off
         */
        Off = 0,
        /**
         * Fan using low speed
         *
         * If the fan supports 2 or more speeds, the Low value shall be supported.
         *
         * The Low value shall be supported if and only if the FanModeSequence attribute value is less than 4.
         *
         * @see {@link MatterSpecification.v13.Cluster} § 4.4.5.5.1
         */
        Low = 1,
        /**
         * Fan using medium speed
         *
         * If the fan supports 3 or more speeds, the Medium value shall be supported.
         *
         * The Medium value shall be supported if and only if the FanModeSequence attribute value is 0 or 2.
         *
         * @see {@link MatterSpecification.v13.Cluster} § 4.4.5.5.2
         */
        Medium = 2,
        /**
         * Fan using high speed
         */
        High = 3,
        /**
         * @deprecated
         */
        On = 4,
        /**
         * Fan is using auto mode
         */
        Auto = 5,
        /**
         * Fan is using smart mode
         *
         * @deprecated
         */
        Smart = 6
    }
    /**
     * @see {@link MatterSpecification.v13.Cluster} § 4.4.5.6
     */
    enum FanModeSequence {
        /**
         * Fan is capable of off, low, medium and high modes
         */
        OffLowMedHigh = 0,
        /**
         * Fan is capable of off, low and high modes
         */
        OffLowHigh = 1,
        /**
         * Fan is capable of off, low, medium, high and auto modes
         */
        OffLowMedHighAuto = 2,
        /**
         * Fan is capable of off, low, high and auto modes
         */
        OffLowHighAuto = 3,
        /**
         * Fan is capable of off, high and auto modes
         */
        OffHighAuto = 4,
        /**
         * Fan is capable of off and high modes
         */
        OffHigh = 5
    }
    /**
     * A FanControlCluster supports these elements if it supports feature MultiSpeed.
     */
    const MultiSpeedComponent: {
        readonly attributes: {
            /**
             * Indicates that the fan has one speed (value of 1) or the maximum speed, if the fan is capable of
             * multiple speeds.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.5
             */
            readonly speedMax: FixedAttribute<number, any>;
            /**
             * Indicates the speed setting for the fan. This attribute may be written by the client to indicate a new
             * fan speed. If the client writes null to this attribute, the attribute value shall NOT change. A server
             * shall return INVALID_IN_STATE to indicate that the fan is not in a state where the SpeedSetting can be
             * changed to the requested value.
             *
             * If this is successfully written to 0, the server shall set the FanMode attribute value to Off. Please
             * see the Speed Rules for details on other values.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.6
             */
            readonly speedSetting: WritableAttribute<number | null, any>;
            /**
             * Indicates the actual currently operating fan speed, or zero to indicate that the fan is off. There may
             * be a temporary mismatch between the value of this attribute and the value of the SpeedSetting attribute
             * due to other system requirements that would not allow the fan to operate at the requested setting.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.7
             */
            readonly speedCurrent: Attribute<number, any>;
        };
    };
    /**
     * A FanControlCluster supports these elements if it supports feature Rocking.
     */
    const RockingComponent: {
        readonly attributes: {
            /**
             * This attribute is a bitmap that indicates what rocking motions the server supports.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.8
             */
            readonly rockSupport: FixedAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Indicate rock left to right
                 */
                rockLeftRight: BitFlag;
                /**
                 * Indicate rock up and down
                 */
                rockUpDown: BitFlag;
                /**
                 * Indicate rock around
                 */
                rockRound: BitFlag;
            }>, any>;
            /**
             * This attribute is a bitmap that indicates the current active fan rocking motion settings. Each bit shall
             * only be set to 1, if the corresponding bit in the RockSupport attribute is set to 1, otherwise a status
             * code of CONSTRAINT_ERROR shall be returned.
             *
             * If a combination of supported bits is set by the client, and the server does not support the
             * combination, the lowest supported single bit in the combination shall be set and active, and all other
             * bits shall indicate zero.
             *
             * For example: If RockUpDown and RockRound are both set, but this combination is not possible, then only
             * RockUpDown becomes active.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.9
             */
            readonly rockSetting: WritableAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Indicate rock left to right
                 */
                rockLeftRight: BitFlag;
                /**
                 * Indicate rock up and down
                 */
                rockUpDown: BitFlag;
                /**
                 * Indicate rock around
                 */
                rockRound: BitFlag;
            }>, any>;
        };
    };
    /**
     * A FanControlCluster supports these elements if it supports feature Wind.
     */
    const WindComponent: {
        readonly attributes: {
            /**
             * This attribute is a bitmap that indicates what wind modes the server supports. At least one wind mode
             * bit shall be set.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.10
             */
            readonly windSupport: FixedAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Indicate sleep wind
                 */
                sleepWind: BitFlag;
                /**
                 * Indicate natural wind
                 */
                naturalWind: BitFlag;
            }>, any>;
            /**
             * This attribute is a bitmap that indicates the current active fan wind feature settings. Each bit shall
             * only be set to 1, if the corresponding bit in the WindSupport attribute is set to 1, otherwise a status
             * code of CONSTRAINT_ERROR shall be returned.
             *
             * If a combination of supported bits is set by the client, and the server does not support the
             * combination, the lowest supported single bit in the combination shall be set and active, and all other
             * bits shall indicate zero.
             *
             * For example: If Sleep Wind and Natural Wind are set, but this combination is not possible, then only
             * Sleep Wind becomes active.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.11
             */
            readonly windSetting: WritableAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Indicate sleep wind
                 */
                sleepWind: BitFlag;
                /**
                 * Indicate natural wind
                 */
                naturalWind: BitFlag;
            }>, any>;
        };
    };
    /**
     * A FanControlCluster supports these elements if it supports feature AirflowDirection.
     */
    const AirflowDirectionComponent: {
        readonly attributes: {
            /**
             * Indicates the current airflow direction of the fan. This attribute may be written by the client to
             * indicate a new airflow direction for the fan. This attribute shall be set to one of the values in the
             * AirflowDirectionEnum table.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.12
             */
            readonly airflowDirection: WritableAttribute<AirflowDirection, any>;
        };
    };
    /**
     * A FanControlCluster supports these elements if it supports feature Step.
     */
    const StepComponent: {
        readonly commands: {
            /**
             * This command speeds up or slows down the fan, in steps, without the client having to know the fan speed.
             * This command supports, for example, a user operated wall switch, where the user provides the feedback or
             * control to stop sending this command when the proper speed is reached. The step speed values are
             * implementation specific. How many step speeds are implemented is implementation specific.
             *
             * This command supports these fields:
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1
             */
            readonly step: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate whether the fan speed increases or decreases to the next step value.
                 *
                 * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.1
                 */
                direction: import("../tlv/TlvObject.js").FieldType<StepDirection>;
                /**
                 * This field shall indicate if the fan speed wraps between highest and lowest step value.
                 *
                 * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.2
                 */
                wrap: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                /**
                 * This field shall indicate that the fan being off (speed value 0) is included as a step value.
                 *
                 * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.3
                 */
                lowestOff: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
            }>, void, any>;
        };
    };
    /**
     * These elements and properties are present in all FanControl clusters.
     */
    const Base: {
        readonly id: 514;
        readonly name: "FanControl";
        readonly revision: 4;
        readonly features: {
            /**
             * MultiSpeed
             *
             * Legacy Fan Control cluster revision 0-1 defined 3 speeds (low, medium and high) plus automatic speed
             * control but left it up to the implementer to decide what was supported. Therefore, it is assumed that
             * legacy client implementations are capable of determining, from the server, the number of speeds
             * supported between 1, 2, or 3, and whether automatic speed control is supported.
             *
             * The MultiSpeed feature includes new attributes that support a running fan speed value from 0 to
             * SpeedMax, which has a maximum of 100.
             *
             * See Speed Rules for more details.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.4.1
             */
            readonly multiSpeed: BitFlag;
            /**
             * Auto
             *
             * Automatic mode supported for fan speed
             */
            readonly auto: BitFlag;
            /**
             * Rocking
             *
             * Rocking movement supported
             */
            readonly rocking: BitFlag;
            /**
             * Wind
             *
             * Wind emulation supported
             */
            readonly wind: BitFlag;
            /**
             * Step
             *
             * Step command supported
             */
            readonly step: BitFlag;
            /**
             * AirflowDirection
             *
             * Airflow Direction attribute is supported
             */
            readonly airflowDirection: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the current speed mode of the fan. This attribute may be written by the client to request a
             * different fan mode. A server shall return INVALID_IN_STATE to indicate that the fan is not in a state
             * where the FanMode can be changed to the requested value. A server may have FanMode values that it can
             * never be set to. For example, where this cluster appears on the same or another endpoint as other
             * clusters with a system dependency, for example the Thermostat cluster, attempting to set the FanMode
             * attribute of this cluster to Off may not be allowed by the system.
             *
             * This attribute shall be set to one of the values in FanModeEnum.
             *
             * When the FanMode attribute is successfully written to, the PercentSetting and SpeedSetting (if present)
             * attributes shall be set to appropriate values, as defined by the Percent Rules and Speed Rules
             * respectively, unless otherwise specified below.
             *
             * When the FanMode attribute is set to any given mode, the PercentCurrent and SpeedCurrent (if present)
             * shall indicate the actual currently operating fan speed, unless otherwise specified below.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.1
             */
            readonly fanMode: WritableAttribute<FanMode, any>;
            /**
             * This attribute indicates the fan speed ranges that shall be supported.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.2
             */
            readonly fanModeSequence: FixedAttribute<FanModeSequence, any>;
            /**
             * Indicates the speed setting for the fan. This attribute may be written by the client to indicate a new
             * fan speed. If the client writes null to this attribute, the attribute value shall NOT change. A server
             * shall return INVALID_IN_STATE to indicate that the fan is not in a state where the PercentSetting can be
             * changed to the requested value.
             *
             * If this is successfully written to 0, the server shall set the FanMode attribute value to Off.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.3
             */
            readonly percentSetting: WritableAttribute<number | null, any>;
            /**
             * Indicates the actual currently operating fan speed, or zero to indicate that the fan is off. There may
             * be a temporary mismatch between the value of this attribute and the value of the PercentSetting
             * attribute due to other system requirements that would not allow the fan to operate at the requested
             * setting. See Percent Rules for more details.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.4
             */
            readonly percentCurrent: Attribute<number, any>;
        };
        /**
         * This metadata controls which FanControlCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly multiSpeed: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates that the fan has one speed (value of 1) or the maximum speed, if the fan is capable of
                     * multiple speeds.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.5
                     */
                    readonly speedMax: FixedAttribute<number, any>;
                    /**
                     * Indicates the speed setting for the fan. This attribute may be written by the client to indicate a new
                     * fan speed. If the client writes null to this attribute, the attribute value shall NOT change. A server
                     * shall return INVALID_IN_STATE to indicate that the fan is not in a state where the SpeedSetting can be
                     * changed to the requested value.
                     *
                     * If this is successfully written to 0, the server shall set the FanMode attribute value to Off. Please
                     * see the Speed Rules for details on other values.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.6
                     */
                    readonly speedSetting: WritableAttribute<number | null, any>;
                    /**
                     * Indicates the actual currently operating fan speed, or zero to indicate that the fan is off. There may
                     * be a temporary mismatch between the value of this attribute and the value of the SpeedSetting attribute
                     * due to other system requirements that would not allow the fan to operate at the requested setting.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.7
                     */
                    readonly speedCurrent: Attribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly rocking: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * This attribute is a bitmap that indicates what rocking motions the server supports.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.8
                     */
                    readonly rockSupport: FixedAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                        /**
                         * Indicate rock left to right
                         */
                        rockLeftRight: BitFlag;
                        /**
                         * Indicate rock up and down
                         */
                        rockUpDown: BitFlag;
                        /**
                         * Indicate rock around
                         */
                        rockRound: BitFlag;
                    }>, any>;
                    /**
                     * This attribute is a bitmap that indicates the current active fan rocking motion settings. Each bit shall
                     * only be set to 1, if the corresponding bit in the RockSupport attribute is set to 1, otherwise a status
                     * code of CONSTRAINT_ERROR shall be returned.
                     *
                     * If a combination of supported bits is set by the client, and the server does not support the
                     * combination, the lowest supported single bit in the combination shall be set and active, and all other
                     * bits shall indicate zero.
                     *
                     * For example: If RockUpDown and RockRound are both set, but this combination is not possible, then only
                     * RockUpDown becomes active.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.9
                     */
                    readonly rockSetting: WritableAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                        /**
                         * Indicate rock left to right
                         */
                        rockLeftRight: BitFlag;
                        /**
                         * Indicate rock up and down
                         */
                        rockUpDown: BitFlag;
                        /**
                         * Indicate rock around
                         */
                        rockRound: BitFlag;
                    }>, any>;
                };
            };
        }, {
            readonly flags: {
                readonly wind: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * This attribute is a bitmap that indicates what wind modes the server supports. At least one wind mode
                     * bit shall be set.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.10
                     */
                    readonly windSupport: FixedAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                        /**
                         * Indicate sleep wind
                         */
                        sleepWind: BitFlag;
                        /**
                         * Indicate natural wind
                         */
                        naturalWind: BitFlag;
                    }>, any>;
                    /**
                     * This attribute is a bitmap that indicates the current active fan wind feature settings. Each bit shall
                     * only be set to 1, if the corresponding bit in the WindSupport attribute is set to 1, otherwise a status
                     * code of CONSTRAINT_ERROR shall be returned.
                     *
                     * If a combination of supported bits is set by the client, and the server does not support the
                     * combination, the lowest supported single bit in the combination shall be set and active, and all other
                     * bits shall indicate zero.
                     *
                     * For example: If Sleep Wind and Natural Wind are set, but this combination is not possible, then only
                     * Sleep Wind becomes active.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.11
                     */
                    readonly windSetting: WritableAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                        /**
                         * Indicate sleep wind
                         */
                        sleepWind: BitFlag;
                        /**
                         * Indicate natural wind
                         */
                        naturalWind: BitFlag;
                    }>, any>;
                };
            };
        }, {
            readonly flags: {
                readonly airflowDirection: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the current airflow direction of the fan. This attribute may be written by the client to
                     * indicate a new airflow direction for the fan. This attribute shall be set to one of the values in the
                     * AirflowDirectionEnum table.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.12
                     */
                    readonly airflowDirection: WritableAttribute<AirflowDirection, any>;
                };
            };
        }, {
            readonly flags: {
                readonly step: true;
            };
            readonly component: {
                readonly commands: {
                    /**
                     * This command speeds up or slows down the fan, in steps, without the client having to know the fan speed.
                     * This command supports, for example, a user operated wall switch, where the user provides the feedback or
                     * control to stop sending this command when the proper speed is reached. The step speed values are
                     * implementation specific. How many step speeds are implemented is implementation specific.
                     *
                     * This command supports these fields:
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1
                     */
                    readonly step: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall indicate whether the fan speed increases or decreases to the next step value.
                         *
                         * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.1
                         */
                        direction: import("../tlv/TlvObject.js").FieldType<StepDirection>;
                        /**
                         * This field shall indicate if the fan speed wraps between highest and lowest step value.
                         *
                         * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.2
                         */
                        wrap: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                        /**
                         * This field shall indicate that the fan being off (speed value 0) is included as a step value.
                         *
                         * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.3
                         */
                        lowestOff: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    }>, void, any>;
                };
            };
        }];
    };
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster<{
        readonly id: 514;
        readonly name: "FanControl";
        readonly revision: 4;
        readonly features: {
            /**
             * MultiSpeed
             *
             * Legacy Fan Control cluster revision 0-1 defined 3 speeds (low, medium and high) plus automatic speed
             * control but left it up to the implementer to decide what was supported. Therefore, it is assumed that
             * legacy client implementations are capable of determining, from the server, the number of speeds
             * supported between 1, 2, or 3, and whether automatic speed control is supported.
             *
             * The MultiSpeed feature includes new attributes that support a running fan speed value from 0 to
             * SpeedMax, which has a maximum of 100.
             *
             * See Speed Rules for more details.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.4.1
             */
            readonly multiSpeed: BitFlag;
            /**
             * Auto
             *
             * Automatic mode supported for fan speed
             */
            readonly auto: BitFlag;
            /**
             * Rocking
             *
             * Rocking movement supported
             */
            readonly rocking: BitFlag;
            /**
             * Wind
             *
             * Wind emulation supported
             */
            readonly wind: BitFlag;
            /**
             * Step
             *
             * Step command supported
             */
            readonly step: BitFlag;
            /**
             * AirflowDirection
             *
             * Airflow Direction attribute is supported
             */
            readonly airflowDirection: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the current speed mode of the fan. This attribute may be written by the client to request a
             * different fan mode. A server shall return INVALID_IN_STATE to indicate that the fan is not in a state
             * where the FanMode can be changed to the requested value. A server may have FanMode values that it can
             * never be set to. For example, where this cluster appears on the same or another endpoint as other
             * clusters with a system dependency, for example the Thermostat cluster, attempting to set the FanMode
             * attribute of this cluster to Off may not be allowed by the system.
             *
             * This attribute shall be set to one of the values in FanModeEnum.
             *
             * When the FanMode attribute is successfully written to, the PercentSetting and SpeedSetting (if present)
             * attributes shall be set to appropriate values, as defined by the Percent Rules and Speed Rules
             * respectively, unless otherwise specified below.
             *
             * When the FanMode attribute is set to any given mode, the PercentCurrent and SpeedCurrent (if present)
             * shall indicate the actual currently operating fan speed, unless otherwise specified below.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.1
             */
            readonly fanMode: WritableAttribute<FanMode, any>;
            /**
             * This attribute indicates the fan speed ranges that shall be supported.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.2
             */
            readonly fanModeSequence: FixedAttribute<FanModeSequence, any>;
            /**
             * Indicates the speed setting for the fan. This attribute may be written by the client to indicate a new
             * fan speed. If the client writes null to this attribute, the attribute value shall NOT change. A server
             * shall return INVALID_IN_STATE to indicate that the fan is not in a state where the PercentSetting can be
             * changed to the requested value.
             *
             * If this is successfully written to 0, the server shall set the FanMode attribute value to Off.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.3
             */
            readonly percentSetting: WritableAttribute<number | null, any>;
            /**
             * Indicates the actual currently operating fan speed, or zero to indicate that the fan is off. There may
             * be a temporary mismatch between the value of this attribute and the value of the PercentSetting
             * attribute due to other system requirements that would not allow the fan to operate at the requested
             * setting. See Percent Rules for more details.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.4
             */
            readonly percentCurrent: Attribute<number, any>;
        };
        /**
         * This metadata controls which FanControlCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly multiSpeed: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates that the fan has one speed (value of 1) or the maximum speed, if the fan is capable of
                     * multiple speeds.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.5
                     */
                    readonly speedMax: FixedAttribute<number, any>;
                    /**
                     * Indicates the speed setting for the fan. This attribute may be written by the client to indicate a new
                     * fan speed. If the client writes null to this attribute, the attribute value shall NOT change. A server
                     * shall return INVALID_IN_STATE to indicate that the fan is not in a state where the SpeedSetting can be
                     * changed to the requested value.
                     *
                     * If this is successfully written to 0, the server shall set the FanMode attribute value to Off. Please
                     * see the Speed Rules for details on other values.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.6
                     */
                    readonly speedSetting: WritableAttribute<number | null, any>;
                    /**
                     * Indicates the actual currently operating fan speed, or zero to indicate that the fan is off. There may
                     * be a temporary mismatch between the value of this attribute and the value of the SpeedSetting attribute
                     * due to other system requirements that would not allow the fan to operate at the requested setting.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.7
                     */
                    readonly speedCurrent: Attribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly rocking: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * This attribute is a bitmap that indicates what rocking motions the server supports.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.8
                     */
                    readonly rockSupport: FixedAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                        /**
                         * Indicate rock left to right
                         */
                        rockLeftRight: BitFlag;
                        /**
                         * Indicate rock up and down
                         */
                        rockUpDown: BitFlag;
                        /**
                         * Indicate rock around
                         */
                        rockRound: BitFlag;
                    }>, any>;
                    /**
                     * This attribute is a bitmap that indicates the current active fan rocking motion settings. Each bit shall
                     * only be set to 1, if the corresponding bit in the RockSupport attribute is set to 1, otherwise a status
                     * code of CONSTRAINT_ERROR shall be returned.
                     *
                     * If a combination of supported bits is set by the client, and the server does not support the
                     * combination, the lowest supported single bit in the combination shall be set and active, and all other
                     * bits shall indicate zero.
                     *
                     * For example: If RockUpDown and RockRound are both set, but this combination is not possible, then only
                     * RockUpDown becomes active.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.9
                     */
                    readonly rockSetting: WritableAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                        /**
                         * Indicate rock left to right
                         */
                        rockLeftRight: BitFlag;
                        /**
                         * Indicate rock up and down
                         */
                        rockUpDown: BitFlag;
                        /**
                         * Indicate rock around
                         */
                        rockRound: BitFlag;
                    }>, any>;
                };
            };
        }, {
            readonly flags: {
                readonly wind: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * This attribute is a bitmap that indicates what wind modes the server supports. At least one wind mode
                     * bit shall be set.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.10
                     */
                    readonly windSupport: FixedAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                        /**
                         * Indicate sleep wind
                         */
                        sleepWind: BitFlag;
                        /**
                         * Indicate natural wind
                         */
                        naturalWind: BitFlag;
                    }>, any>;
                    /**
                     * This attribute is a bitmap that indicates the current active fan wind feature settings. Each bit shall
                     * only be set to 1, if the corresponding bit in the WindSupport attribute is set to 1, otherwise a status
                     * code of CONSTRAINT_ERROR shall be returned.
                     *
                     * If a combination of supported bits is set by the client, and the server does not support the
                     * combination, the lowest supported single bit in the combination shall be set and active, and all other
                     * bits shall indicate zero.
                     *
                     * For example: If Sleep Wind and Natural Wind are set, but this combination is not possible, then only
                     * Sleep Wind becomes active.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.11
                     */
                    readonly windSetting: WritableAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                        /**
                         * Indicate sleep wind
                         */
                        sleepWind: BitFlag;
                        /**
                         * Indicate natural wind
                         */
                        naturalWind: BitFlag;
                    }>, any>;
                };
            };
        }, {
            readonly flags: {
                readonly airflowDirection: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the current airflow direction of the fan. This attribute may be written by the client to
                     * indicate a new airflow direction for the fan. This attribute shall be set to one of the values in the
                     * AirflowDirectionEnum table.
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.6.12
                     */
                    readonly airflowDirection: WritableAttribute<AirflowDirection, any>;
                };
            };
        }, {
            readonly flags: {
                readonly step: true;
            };
            readonly component: {
                readonly commands: {
                    /**
                     * This command speeds up or slows down the fan, in steps, without the client having to know the fan speed.
                     * This command supports, for example, a user operated wall switch, where the user provides the feedback or
                     * control to stop sending this command when the proper speed is reached. The step speed values are
                     * implementation specific. How many step speeds are implemented is implementation specific.
                     *
                     * This command supports these fields:
                     *
                     * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1
                     */
                    readonly step: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall indicate whether the fan speed increases or decreases to the next step value.
                         *
                         * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.1
                         */
                        direction: import("../tlv/TlvObject.js").FieldType<StepDirection>;
                        /**
                         * This field shall indicate if the fan speed wraps between highest and lowest step value.
                         *
                         * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.2
                         */
                        wrap: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                        /**
                         * This field shall indicate that the fan being off (speed value 0) is included as a step value.
                         *
                         * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.3
                         */
                        lowestOff: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                    }>, void, any>;
                };
            };
        }];
    }, []>;
    /**
     * This cluster specifies an interface to control the speed of a fan.
     *
     * FanControlCluster supports optional features that you can enable with the FanControlCluster.with() factory
     * method.
     *
     * @see {@link MatterSpecification.v13.Cluster} § 4.4
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    /**
     * @see {@link Complete}
     */
    const CompleteInstance: MutableCluster<{
        readonly id: import("#general").Branded<514, "ClusterId">;
        readonly name: "FanControl";
        readonly revision: 4;
        readonly features: {
            /**
             * MultiSpeed
             *
             * Legacy Fan Control cluster revision 0-1 defined 3 speeds (low, medium and high) plus automatic speed
             * control but left it up to the implementer to decide what was supported. Therefore, it is assumed that
             * legacy client implementations are capable of determining, from the server, the number of speeds
             * supported between 1, 2, or 3, and whether automatic speed control is supported.
             *
             * The MultiSpeed feature includes new attributes that support a running fan speed value from 0 to
             * SpeedMax, which has a maximum of 100.
             *
             * See Speed Rules for more details.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 4.4.4.1
             */
            readonly multiSpeed: BitFlag;
            /**
             * Auto
             *
             * Automatic mode supported for fan speed
             */
            readonly auto: BitFlag;
            /**
             * Rocking
             *
             * Rocking movement supported
             */
            readonly rocking: BitFlag;
            /**
             * Wind
             *
             * Wind emulation supported
             */
            readonly wind: BitFlag;
            /**
             * Step
             *
             * Step command supported
             */
            readonly step: BitFlag;
            /**
             * AirflowDirection
             *
             * Airflow Direction attribute is supported
             */
            readonly airflowDirection: BitFlag;
        };
        readonly attributes: {
            readonly speedMax: FixedAttribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    multiSpeed: boolean;
                }];
            };
            readonly speedSetting: WritableAttribute<number | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    multiSpeed: boolean;
                }];
            };
            readonly speedCurrent: Attribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    multiSpeed: boolean;
                }];
            };
            readonly rockSupport: FixedAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Indicate rock left to right
                 */
                rockLeftRight: BitFlag;
                /**
                 * Indicate rock up and down
                 */
                rockUpDown: BitFlag;
                /**
                 * Indicate rock around
                 */
                rockRound: BitFlag;
            }>, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    rocking: boolean;
                }];
            };
            readonly rockSetting: WritableAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Indicate rock left to right
                 */
                rockLeftRight: BitFlag;
                /**
                 * Indicate rock up and down
                 */
                rockUpDown: BitFlag;
                /**
                 * Indicate rock around
                 */
                rockRound: BitFlag;
            }>, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    rocking: boolean;
                }];
            };
            readonly windSupport: FixedAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Indicate sleep wind
                 */
                sleepWind: BitFlag;
                /**
                 * Indicate natural wind
                 */
                naturalWind: BitFlag;
            }>, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    wind: boolean;
                }];
            };
            readonly windSetting: WritableAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Indicate sleep wind
                 */
                sleepWind: BitFlag;
                /**
                 * Indicate natural wind
                 */
                naturalWind: BitFlag;
            }>, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    wind: boolean;
                }];
            };
            readonly airflowDirection: WritableAttribute<AirflowDirection, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    airflowDirection: boolean;
                }];
            };
            readonly fanMode: WritableAttribute<FanMode, any>;
            readonly fanModeSequence: FixedAttribute<FanModeSequence, any>;
            readonly percentSetting: WritableAttribute<number | null, any>;
            readonly percentCurrent: Attribute<number, any>;
            readonly clusterRevision: Attribute<number, never>;
            readonly featureMap: Attribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * MultiSpeed
                 *
                 * Legacy Fan Control cluster revision 0-1 defined 3 speeds (low, medium and high) plus automatic speed
                 * control but left it up to the implementer to decide what was supported. Therefore, it is assumed that
                 * legacy client implementations are capable of determining, from the server, the number of speeds
                 * supported between 1, 2, or 3, and whether automatic speed control is supported.
                 *
                 * The MultiSpeed feature includes new attributes that support a running fan speed value from 0 to
                 * SpeedMax, which has a maximum of 100.
                 *
                 * See Speed Rules for more details.
                 *
                 * @see {@link MatterSpecification.v13.Cluster} § 4.4.4.1
                 */
                readonly multiSpeed: BitFlag;
                /**
                 * Auto
                 *
                 * Automatic mode supported for fan speed
                 */
                readonly auto: BitFlag;
                /**
                 * Rocking
                 *
                 * Rocking movement supported
                 */
                readonly rocking: BitFlag;
                /**
                 * Wind
                 *
                 * Wind emulation supported
                 */
                readonly wind: BitFlag;
                /**
                 * Step
                 *
                 * Step command supported
                 */
                readonly step: BitFlag;
                /**
                 * AirflowDirection
                 *
                 * Airflow Direction attribute is supported
                 */
                readonly airflowDirection: BitFlag;
            }>, never>;
            readonly attributeList: Attribute<import("../index.js").AttributeId[], never>;
            readonly acceptedCommandList: Attribute<import("../index.js").CommandId[], never>;
            readonly generatedCommandList: Attribute<import("../index.js").CommandId[], never>;
        };
        readonly commands: {
            readonly step: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate whether the fan speed increases or decreases to the next step value.
                 *
                 * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.1
                 */
                direction: import("../tlv/TlvObject.js").FieldType<StepDirection>;
                /**
                 * This field shall indicate if the fan speed wraps between highest and lowest step value.
                 *
                 * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.2
                 */
                wrap: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
                /**
                 * This field shall indicate that the fan being off (speed value 0) is included as a step value.
                 *
                 * @see {@link MatterSpecification.v13.Cluster} § 4.4.7.1.3
                 */
                lowestOff: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
            }>, void, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    step: boolean;
                }];
            };
        };
    }, []>;
    /**
     * This cluster supports all FanControl 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 FanControlCluster = FanControl.Cluster;
export declare const FanControlCluster: FanControl.Cluster;
//# sourceMappingURL=fan-control.d.ts.map