/**
 * @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 { BitFlag } from "../schema/BitmapSchema.js";
import { FixedAttribute, Attribute, Command } from "../cluster/Cluster.js";
import { ModeBase } from "./mode-base.js";
import { TypeFromSchema } from "../tlv/TlvSchema.js";
import { Identity } from "@matter/general";
export declare namespace RvcRunMode {
    /**
     * These are optional features supported by RvcRunModeCluster.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 7.2.4
     */
    enum Feature {
        /**
         * OnOff (DEPONOFF)
         *
         * Dependency with the OnOff cluster
         */
        OnOff = "OnOff"
    }
    enum ModeTag {
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.2
         */
        Auto = 0,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.2
         */
        Quick = 1,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.2
         */
        Quiet = 2,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.2
         */
        LowNoise = 3,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.2
         */
        LowEnergy = 4,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.2
         */
        Vacation = 5,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.2
         */
        Min = 6,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.2
         */
        Max = 7,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.2
         */
        Night = 8,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.2
         */
        Day = 9,
        /**
         * The device is not performing any of the main operations of the other modes. However, auxiliary actions, such
         * as seeking the charger or charging, may occur.
         *
         * For example, the device has completed cleaning, successfully or not, on its own or due to a command, or has
         * not been asked to clean after a restart.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.2.1
         */
        Idle = 16384,
        /**
         * The device was asked to clean so it may be actively running, or paused due to an error, due to a pause
         * command, or for recharging etc. If currently paused and the device can resume it will continue to clean.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.2.2
         */
        Cleaning = 16385,
        /**
         * The device was asked to create a map of the space it is located in, so it may be actively running, or paused
         * due to an error, due to a pause command, or for recharging etc. If currently paused and the device can
         * resume, it will continue to map.
         *
         * > [!NOTE]
         *
         * > this mode is intended to be used so the current space can be mapped by the device if the robot has not
         *   previously done that, or if the layout has substantially changed, for an optimal subsequent cleaning
         *   experience.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.2.3
         */
        Mapping = 16386
    }
    /**
     * A Mode Tag is meant to be interpreted by the client for the purpose the cluster serves.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.1
     */
    const TlvModeTagStruct: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * If the MfgCode field exists, the Value field shall be in the manufacturer-specific value range (see Section
         * 1.10.8, “Mode Namespace”).
         *
         * This field shall indicate the manufacturer’s VendorID and it shall determine the meaning of the Value field.
         *
         * The same manufacturer code and mode tag value in separate cluster instances are part of the same namespace
         * and have the same meaning. For example: a manufacturer tag meaning "pinch" can be used both in a cluster
         * whose purpose is to choose the amount of sugar, or in a cluster whose purpose is to choose the amount of
         * salt.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.1.1
         */
        mfgCode: import("../tlv/TlvObject.js").OptionalFieldType<import("../datatype/VendorId.js").VendorId>;
        /**
         * This field shall indicate the mode tag within a mode tag namespace which is either manufacturer specific or
         * standard.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.1.2
         */
        value: import("../tlv/TlvObject.js").FieldType<ModeBase.ModeTag | ModeTag>;
    }>;
    /**
     * A Mode Tag is meant to be interpreted by the client for the purpose the cluster serves.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.1
     */
    interface ModeTagStruct extends TypeFromSchema<typeof TlvModeTagStruct> {
    }
    /**
     * The table below lists the changes relative to the Mode Base cluster for the fields of the ModeOptionStruct type.
     * A blank field indicates no change.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 7.2.5.1
     */
    const TlvModeOption: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate readable text that describes the mode option, so that a client can provide it to
         * the user to indicate what this option means. This field is meant to be readable and understandable by the
         * user.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.2.1
         */
        label: import("../tlv/TlvObject.js").FieldType<string>;
        /**
         * This field is used to identify the mode option.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.2.2
         */
        mode: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * This field shall contain a list of tags that are associated with the mode option. This may be used by clients
         * to determine the full or the partial semantics of a certain mode, depending on which tags they understand,
         * using standard definitions and/or manufacturer specific namespace definitions.
         *
         * The standard mode tags are defined in this cluster specification. For the derived cluster instances, if the
         * specification of the derived cluster defines a namespace, the set of standard mode tags also includes the
         * mode tag values from that namespace.
         *
         * Mode tags can help clients look for options that meet certain criteria, render the user interface, use the
         * mode in an automation, or to craft help text their voice-driven interfaces. A mode tag shall be either a
         * standard tag or a manufacturer specific tag, as defined in each ModeTagStruct list entry.
         *
         * A mode option may have more than one mode tag. A mode option may be associated with a mixture of standard and
         * manufacturer specific mode tags. A mode option shall be associated with at least one standard mode tag.
         *
         * Each mode tag in this field shall be distinct from other mode tags in this field. For example, a simplified
         * list containing [Auto, Auto] would not be allowed.
         *
         * A few examples are provided below.
         *
         *   - A mode named "100%" can have both the High (manufacturer specific) and Max (standard) mode tag. Clients
         *     seeking the mode for either High or Max will find the same mode in this case.
         *
         *   - A mode that includes a LowEnergy tag can be displayed by the client using a widget icon that shows a
         *     green leaf.
         *
         *   - A mode that includes a LowNoise tag may be used by the client when the user wishes for a lower level of
         *     audible sound, less likely to disturb the household’s activities.
         *
         *   - A mode that includes a LowEnergy tag (standard, defined in this cluster specification) and also a
         *     Delicate tag (standard, defined in the namespace of a Laundry Mode derived cluster).
         *
         *   - A mode that includes both a generic Quick tag (defined here), and Vacuum and Mop tags, (defined in the
         *     RVC Clean cluster that is a derivation of this cluster).
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.2.3
         */
        modeTags: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * If the MfgCode field exists, the Value field shall be in the manufacturer-specific value range (see Section
             * 1.10.8, “Mode Namespace”).
             *
             * This field shall indicate the manufacturer’s VendorID and it shall determine the meaning of the Value field.
             *
             * The same manufacturer code and mode tag value in separate cluster instances are part of the same namespace
             * and have the same meaning. For example: a manufacturer tag meaning "pinch" can be used both in a cluster
             * whose purpose is to choose the amount of sugar, or in a cluster whose purpose is to choose the amount of
             * salt.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.1.1
             */
            mfgCode: import("../tlv/TlvObject.js").OptionalFieldType<import("../datatype/VendorId.js").VendorId>;
            /**
             * This field shall indicate the mode tag within a mode tag namespace which is either manufacturer specific or
             * standard.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.1.2
             */
            value: import("../tlv/TlvObject.js").FieldType<ModeBase.ModeTag | ModeTag>;
        }>[]>;
    }>;
    /**
     * The table below lists the changes relative to the Mode Base cluster for the fields of the ModeOptionStruct type.
     * A blank field indicates no change.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 7.2.5.1
     */
    interface ModeOption extends TypeFromSchema<typeof TlvModeOption> {
    }
    enum ModeChangeStatus {
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.1
         */
        Stuck = 65,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.1
         */
        DustBinMissing = 66,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.1
         */
        DustBinFull = 67,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.1
         */
        WaterTankEmpty = 68,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.1
         */
        WaterTankMissing = 69,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.1
         */
        WaterTankLidOpen = 70,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.1
         */
        MopCleaningPadMissing = 71,
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 7.2.7.1
         */
        BatteryLow = 72
    }
    /**
     * This command is sent by the device on receipt of the ChangeToMode command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.10.7.2
     */
    const TlvChangeToModeResponse: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * @see {@link MatterSpecification.v142.Cluster} § 1.10.7.2.1
         */
        status: import("../tlv/TlvObject.js").FieldType<ModeBase.ModeChangeStatus | ModeChangeStatus>;
        statusText: import("../tlv/TlvObject.js").FieldType<string>;
    }>;
    /**
     * This command is sent by the device on receipt of the ChangeToMode command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.10.7.2
     */
    interface ChangeToModeResponse extends TypeFromSchema<typeof TlvChangeToModeResponse> {
    }
    /**
     * These elements and properties are present in all RvcRunMode clusters.
     */
    const Base: {
        readonly id: 84;
        readonly name: "RvcRunMode";
        readonly revision: 3;
        readonly features: {
            /**
             * Dependency with the OnOff cluster
             */
            readonly onOff: BitFlag;
        };
        readonly attributes: {
            /**
             * At least one entry in the SupportedModes attribute shall include the Idle mode tag in the ModeTags field.
             *
             * At least one entry in the SupportedModes attribute (different from the one above) shall include the
             * Cleaning mode tag in the ModeTags field.
             *
             * The Mapping, Cleaning, and Idle mode tags are mutually exclusive and shall NOT be used together in a
             * mode’s ModeTags.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 7.2.6.1
             */
            readonly supportedModes: FixedAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate readable text that describes the mode option, so that a client can provide it to
                 * the user to indicate what this option means. This field is meant to be readable and understandable by the
                 * user.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.2.1
                 */
                label: import("../tlv/TlvObject.js").FieldType<string>;
                /**
                 * This field is used to identify the mode option.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.2.2
                 */
                mode: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall contain a list of tags that are associated with the mode option. This may be used by clients
                 * to determine the full or the partial semantics of a certain mode, depending on which tags they understand,
                 * using standard definitions and/or manufacturer specific namespace definitions.
                 *
                 * The standard mode tags are defined in this cluster specification. For the derived cluster instances, if the
                 * specification of the derived cluster defines a namespace, the set of standard mode tags also includes the
                 * mode tag values from that namespace.
                 *
                 * Mode tags can help clients look for options that meet certain criteria, render the user interface, use the
                 * mode in an automation, or to craft help text their voice-driven interfaces. A mode tag shall be either a
                 * standard tag or a manufacturer specific tag, as defined in each ModeTagStruct list entry.
                 *
                 * A mode option may have more than one mode tag. A mode option may be associated with a mixture of standard and
                 * manufacturer specific mode tags. A mode option shall be associated with at least one standard mode tag.
                 *
                 * Each mode tag in this field shall be distinct from other mode tags in this field. For example, a simplified
                 * list containing [Auto, Auto] would not be allowed.
                 *
                 * A few examples are provided below.
                 *
                 *   - A mode named "100%" can have both the High (manufacturer specific) and Max (standard) mode tag. Clients
                 *     seeking the mode for either High or Max will find the same mode in this case.
                 *
                 *   - A mode that includes a LowEnergy tag can be displayed by the client using a widget icon that shows a
                 *     green leaf.
                 *
                 *   - A mode that includes a LowNoise tag may be used by the client when the user wishes for a lower level of
                 *     audible sound, less likely to disturb the household’s activities.
                 *
                 *   - A mode that includes a LowEnergy tag (standard, defined in this cluster specification) and also a
                 *     Delicate tag (standard, defined in the namespace of a Laundry Mode derived cluster).
                 *
                 *   - A mode that includes both a generic Quick tag (defined here), and Vacuum and Mop tags, (defined in the
                 *     RVC Clean cluster that is a derivation of this cluster).
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.2.3
                 */
                modeTags: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * If the MfgCode field exists, the Value field shall be in the manufacturer-specific value range (see Section
                     * 1.10.8, “Mode Namespace”).
                     *
                     * This field shall indicate the manufacturer’s VendorID and it shall determine the meaning of the Value field.
                     *
                     * The same manufacturer code and mode tag value in separate cluster instances are part of the same namespace
                     * and have the same meaning. For example: a manufacturer tag meaning "pinch" can be used both in a cluster
                     * whose purpose is to choose the amount of sugar, or in a cluster whose purpose is to choose the amount of
                     * salt.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.1.1
                     */
                    mfgCode: import("../tlv/TlvObject.js").OptionalFieldType<import("../datatype/VendorId.js").VendorId>;
                    /**
                     * This field shall indicate the mode tag within a mode tag namespace which is either manufacturer specific or
                     * standard.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.1.2
                     */
                    value: import("../tlv/TlvObject.js").FieldType<ModeBase.ModeTag | ModeTag>;
                }>[]>;
            }>[], any>;
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 7.2.6
             */
            readonly currentMode: Attribute<number, any>;
        };
        readonly commands: {
            /**
             * This command is used to change device modes.
             *
             * On receipt of this command the device shall respond with a ChangeToModeResponse command.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.10.7.1
             */
            readonly changeToMode: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                newMode: import("../tlv/TlvObject.js").FieldType<number>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * @see {@link MatterSpecification.v142.Cluster} § 1.10.7.2.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<ModeBase.ModeChangeStatus | ModeChangeStatus>;
                statusText: import("../tlv/TlvObject.js").FieldType<string>;
            }>, any>;
        };
        /**
         * This metadata controls which RvcRunModeCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly onOff: true;
            };
            readonly component: false;
        }];
    };
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster<{
        readonly id: 84;
        readonly name: "RvcRunMode";
        readonly revision: 3;
        readonly features: {
            /**
             * Dependency with the OnOff cluster
             */
            readonly onOff: BitFlag;
        };
        readonly attributes: {
            /**
             * At least one entry in the SupportedModes attribute shall include the Idle mode tag in the ModeTags field.
             *
             * At least one entry in the SupportedModes attribute (different from the one above) shall include the
             * Cleaning mode tag in the ModeTags field.
             *
             * The Mapping, Cleaning, and Idle mode tags are mutually exclusive and shall NOT be used together in a
             * mode’s ModeTags.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 7.2.6.1
             */
            readonly supportedModes: FixedAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate readable text that describes the mode option, so that a client can provide it to
                 * the user to indicate what this option means. This field is meant to be readable and understandable by the
                 * user.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.2.1
                 */
                label: import("../tlv/TlvObject.js").FieldType<string>;
                /**
                 * This field is used to identify the mode option.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.2.2
                 */
                mode: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall contain a list of tags that are associated with the mode option. This may be used by clients
                 * to determine the full or the partial semantics of a certain mode, depending on which tags they understand,
                 * using standard definitions and/or manufacturer specific namespace definitions.
                 *
                 * The standard mode tags are defined in this cluster specification. For the derived cluster instances, if the
                 * specification of the derived cluster defines a namespace, the set of standard mode tags also includes the
                 * mode tag values from that namespace.
                 *
                 * Mode tags can help clients look for options that meet certain criteria, render the user interface, use the
                 * mode in an automation, or to craft help text their voice-driven interfaces. A mode tag shall be either a
                 * standard tag or a manufacturer specific tag, as defined in each ModeTagStruct list entry.
                 *
                 * A mode option may have more than one mode tag. A mode option may be associated with a mixture of standard and
                 * manufacturer specific mode tags. A mode option shall be associated with at least one standard mode tag.
                 *
                 * Each mode tag in this field shall be distinct from other mode tags in this field. For example, a simplified
                 * list containing [Auto, Auto] would not be allowed.
                 *
                 * A few examples are provided below.
                 *
                 *   - A mode named "100%" can have both the High (manufacturer specific) and Max (standard) mode tag. Clients
                 *     seeking the mode for either High or Max will find the same mode in this case.
                 *
                 *   - A mode that includes a LowEnergy tag can be displayed by the client using a widget icon that shows a
                 *     green leaf.
                 *
                 *   - A mode that includes a LowNoise tag may be used by the client when the user wishes for a lower level of
                 *     audible sound, less likely to disturb the household’s activities.
                 *
                 *   - A mode that includes a LowEnergy tag (standard, defined in this cluster specification) and also a
                 *     Delicate tag (standard, defined in the namespace of a Laundry Mode derived cluster).
                 *
                 *   - A mode that includes both a generic Quick tag (defined here), and Vacuum and Mop tags, (defined in the
                 *     RVC Clean cluster that is a derivation of this cluster).
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.2.3
                 */
                modeTags: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * If the MfgCode field exists, the Value field shall be in the manufacturer-specific value range (see Section
                     * 1.10.8, “Mode Namespace”).
                     *
                     * This field shall indicate the manufacturer’s VendorID and it shall determine the meaning of the Value field.
                     *
                     * The same manufacturer code and mode tag value in separate cluster instances are part of the same namespace
                     * and have the same meaning. For example: a manufacturer tag meaning "pinch" can be used both in a cluster
                     * whose purpose is to choose the amount of sugar, or in a cluster whose purpose is to choose the amount of
                     * salt.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.1.1
                     */
                    mfgCode: import("../tlv/TlvObject.js").OptionalFieldType<import("../datatype/VendorId.js").VendorId>;
                    /**
                     * This field shall indicate the mode tag within a mode tag namespace which is either manufacturer specific or
                     * standard.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 1.10.5.1.2
                     */
                    value: import("../tlv/TlvObject.js").FieldType<ModeBase.ModeTag | ModeTag>;
                }>[]>;
            }>[], any>;
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 7.2.6
             */
            readonly currentMode: Attribute<number, any>;
        };
        readonly commands: {
            /**
             * This command is used to change device modes.
             *
             * On receipt of this command the device shall respond with a ChangeToModeResponse command.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.10.7.1
             */
            readonly changeToMode: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                newMode: import("../tlv/TlvObject.js").FieldType<number>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * @see {@link MatterSpecification.v142.Cluster} § 1.10.7.2.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<ModeBase.ModeChangeStatus | ModeChangeStatus>;
                statusText: import("../tlv/TlvObject.js").FieldType<string>;
            }>, any>;
        };
        /**
         * This metadata controls which RvcRunModeCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly onOff: true;
            };
            readonly component: false;
        }];
    }, []>;
    /**
     * This cluster is derived from the Mode Base cluster and defines additional mode tags and namespaced enumerated
     * values for the running modes of robotic vacuum cleaner devices.
     *
     * RvcRunModeCluster supports optional features that you can enable with the RvcRunModeCluster.with() factory
     * method.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 7.2
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    const Complete: Cluster;
}
export type RvcRunModeCluster = RvcRunMode.Cluster;
export declare const RvcRunModeCluster: RvcRunMode.Cluster;
//# sourceMappingURL=rvc-run-mode.d.ts.map