/**
 * @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 { Attribute, FixedAttribute, OptionalFixedAttribute, Command, OptionalCommand } from "../cluster/Cluster.js";
import { BitFlag } from "../schema/BitmapSchema.js";
import { TypeFromSchema } from "../tlv/TlvSchema.js";
import { Identity } from "#general";
export declare namespace MicrowaveOvenControl {
    /**
     * These are optional features supported by MicrowaveOvenControlCluster.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 8.13.4
     */
    enum Feature {
        /**
         * PowerAsNumber (PWRNUM)
         *
         * Power is specified as a unitless number or a percentage
         */
        PowerAsNumber = "PowerAsNumber",
        /**
         * PowerInWatts (WATTS)
         *
         * Power is specified in Watts
         */
        PowerInWatts = "PowerInWatts",
        /**
         * PowerNumberLimits (PWRLMTS)
         *
         * Supports the limit attributes used with the PWRNUM feature
         */
        PowerNumberLimits = "PowerNumberLimits"
    }
    /**
     * Input to the MicrowaveOvenControl setCookingParameters command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2
     */
    const TlvSetCookingParametersRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the value to which the CurrentMode attribute of the Microwave Oven Mode cluster
         * should be set. The value of this field shall be one from the list of SupportedModes from the Microwave Oven
         * Mode cluster.
         *
         * If this field is missing, the CurrentMode attribute shall be set to a mode having the Normal mode tag.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.1
         */
        cookMode: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        /**
         * This field shall indicate the CookTime associated with the operation of the device. The value of this field
         * shall be subject to the constraints of the CookTime attribute of this cluster.
         *
         * If this field is missing, the CookTime attribute shall be set to 30 seconds by the server.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.2
         */
        cookTime: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        /**
         * This field shall indicate the PowerSetting associated with the operation of the device. The value of this
         * field shall be subject to the constraints of the PowerSetting attribute of this cluster. If the PowerSetting
         * field does not conform to the constraints of the PowerSetting attribute, the server shall return a
         * CONSTRAINT_ERROR status.
         *
         * If this field is missing, the PowerSetting attribute shall be set to 100 if MaxPower is not supported by the
         * server, otherwise it shall be set to MaxPower if the MaxPower attribute is supported by the server.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.3
         */
        powerSetting: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        /**
         * This field shall indicate the value to which the SelectedWattIndex attribute is set. If the value of this
         * field is greater than or equal to the length of the SupportedWatts attribute list, the server shall return a
         * CONSTRAINT_ERROR status and the value of the SelectedWattIndex attribute shall be unchanged.
         *
         * If this field is missing, the SelectedWattIndex attribute shall be set by the server to the index associated
         * with the highest Watt setting for the selected CookMode.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.4
         */
        wattSettingIndex: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        /**
         * This field shall indicate whether or not oven operation shall be started when the command is received.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.5
         */
        startAfterSetting: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
    }>;
    /**
     * Input to the MicrowaveOvenControl setCookingParameters command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2
     */
    interface SetCookingParametersRequest extends TypeFromSchema<typeof TlvSetCookingParametersRequest> {
    }
    /**
     * Input to the MicrowaveOvenControl addMoreTime command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.3
     */
    const TlvAddMoreTimeRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the number of seconds to be added to the CookTime attribute.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.3.1
         */
        timeToAdd: import("../tlv/TlvObject.js").FieldType<number>;
    }>;
    /**
     * Input to the MicrowaveOvenControl addMoreTime command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.3
     */
    interface AddMoreTimeRequest extends TypeFromSchema<typeof TlvAddMoreTimeRequest> {
    }
    /**
     * A MicrowaveOvenControlCluster supports these elements if it supports feature PowerAsNumber.
     */
    const PowerAsNumberComponent: {
        readonly attributes: {
            /**
             * Indicates the power level associated with the operation of the device.
             *
             * If the MinPower, MaxPower, and PowerStep attributes are not supported:
             *
             *   - The minimum value of this attribute shall be 10,
             *
             *   - The maximum value of this attribute shall be 100,
             *
             *   - The value shall be in even multiples of 10,
             *
             *   - The default value shall be 100.
             *
             * If the MinPower, MaxPower, and PowerStep attributes are supported:
             *
             *   - The value of this attribute shall be between MinPower and MaxPower inclusive.
             *
             *   - The value of this attribute shall be such that (PowerSetting - MinPower) % PowerStep == 0
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.3
             */
            readonly powerSetting: Attribute<number, any>;
        };
    };
    /**
     * A MicrowaveOvenControlCluster supports these elements if it supports feature PowerNumberLimits.
     */
    const PowerNumberLimitsComponent: {
        readonly attributes: {
            /**
             * Indicates the minimum value to which the PowerSetting attribute that can be set on the server.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.4
             */
            readonly minPower: FixedAttribute<number, any>;
            /**
             * Indicates the maximum value to which the PowerSetting attribute that can be set on the server.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.5
             */
            readonly maxPower: FixedAttribute<number, any>;
            /**
             * Indicates the increment of power that can be set on the server.
             *
             * The value of this attribute shall be between 1 and MaxPower inclusive.
             *
             * The value of this attribute shall be such that (MaxPower - MinPower) % PowerStep == 0
             *
             * For example, if MinPower is 1, MaxPower is 10, and PowerSetting can be set to any integer between
             * MinPower and MaxPower, PowerStep would be set to 1.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.6
             */
            readonly powerStep: FixedAttribute<number, any>;
        };
    };
    /**
     * A MicrowaveOvenControlCluster supports these elements if it supports feature PowerInWatts.
     */
    const PowerInWattsComponent: {
        readonly attributes: {
            /**
             * Indicates the list of power levels (in W) supported by the server.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.7
             */
            readonly supportedWatts: FixedAttribute<number[], any>;
            /**
             * Indicates the index into the list of SupportedWatts of the currently selected power setting.
             *
             * The index shall be a valid index into the SupportedWatts list.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.8
             */
            readonly selectedWattIndex: Attribute<number, any>;
        };
    };
    /**
     * These elements and properties are present in all MicrowaveOvenControl clusters.
     */
    const Base: {
        readonly id: 95;
        readonly name: "MicrowaveOvenControl";
        readonly revision: 1;
        readonly features: {
            /**
             * Power is specified as a unitless number or a percentage
             */
            readonly powerAsNumber: BitFlag;
            /**
             * Power is specified in Watts
             */
            readonly powerInWatts: BitFlag;
            /**
             * Supports the limit attributes used with the PWRNUM feature
             */
            readonly powerNumberLimits: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the total cook time associated with the operation of the device.
             *
             * This attribute shall remain unchanged during the operation of the oven unless the value is changed via a
             * command or out-of-band action.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.1
             */
            readonly cookTime: Attribute<number, any>;
            /**
             * Indicates the maximum value to which the CookTime attribute can be set.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.2
             */
            readonly maxCookTime: FixedAttribute<number, any>;
            /**
             * Indicates the rating, in Watts, of the microwave power of the oven.
             *
             * Supporting this attribute can assist clients in suggesting cooking settings for various foods and
             * beverages.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.9
             */
            readonly wattRating: OptionalFixedAttribute<number, any>;
        };
        readonly commands: {
            /**
             * This command is used to set the cooking parameters associated with the operation of the device. This
             * command supports the following fields:
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2
             */
            readonly setCookingParameters: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the value to which the CurrentMode attribute of the Microwave Oven Mode cluster
                 * should be set. The value of this field shall be one from the list of SupportedModes from the Microwave Oven
                 * Mode cluster.
                 *
                 * If this field is missing, the CurrentMode attribute shall be set to a mode having the Normal mode tag.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.1
                 */
                cookMode: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the CookTime associated with the operation of the device. The value of this field
                 * shall be subject to the constraints of the CookTime attribute of this cluster.
                 *
                 * If this field is missing, the CookTime attribute shall be set to 30 seconds by the server.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.2
                 */
                cookTime: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the PowerSetting associated with the operation of the device. The value of this
                 * field shall be subject to the constraints of the PowerSetting attribute of this cluster. If the PowerSetting
                 * field does not conform to the constraints of the PowerSetting attribute, the server shall return a
                 * CONSTRAINT_ERROR status.
                 *
                 * If this field is missing, the PowerSetting attribute shall be set to 100 if MaxPower is not supported by the
                 * server, otherwise it shall be set to MaxPower if the MaxPower attribute is supported by the server.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.3
                 */
                powerSetting: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the value to which the SelectedWattIndex attribute is set. If the value of this
                 * field is greater than or equal to the length of the SupportedWatts attribute list, the server shall return a
                 * CONSTRAINT_ERROR status and the value of the SelectedWattIndex attribute shall be unchanged.
                 *
                 * If this field is missing, the SelectedWattIndex attribute shall be set by the server to the index associated
                 * with the highest Watt setting for the selected CookMode.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.4
                 */
                wattSettingIndex: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate whether or not oven operation shall be started when the command is received.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.5
                 */
                startAfterSetting: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
            }>, void, any>;
            /**
             * This command is used to add more time to the CookTime attribute of the server.
             *
             * This command supports these fields:
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.3
             */
            readonly addMoreTime: OptionalCommand<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the number of seconds to be added to the CookTime attribute.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.3.1
                 */
                timeToAdd: import("../tlv/TlvObject.js").FieldType<number>;
            }>, void, any>;
        };
        /**
         * This metadata controls which MicrowaveOvenControlCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly powerAsNumber: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the power level associated with the operation of the device.
                     *
                     * If the MinPower, MaxPower, and PowerStep attributes are not supported:
                     *
                     *   - The minimum value of this attribute shall be 10,
                     *
                     *   - The maximum value of this attribute shall be 100,
                     *
                     *   - The value shall be in even multiples of 10,
                     *
                     *   - The default value shall be 100.
                     *
                     * If the MinPower, MaxPower, and PowerStep attributes are supported:
                     *
                     *   - The value of this attribute shall be between MinPower and MaxPower inclusive.
                     *
                     *   - The value of this attribute shall be such that (PowerSetting - MinPower) % PowerStep == 0
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.3
                     */
                    readonly powerSetting: Attribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly powerNumberLimits: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the minimum value to which the PowerSetting attribute that can be set on the server.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.4
                     */
                    readonly minPower: FixedAttribute<number, any>;
                    /**
                     * Indicates the maximum value to which the PowerSetting attribute that can be set on the server.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.5
                     */
                    readonly maxPower: FixedAttribute<number, any>;
                    /**
                     * Indicates the increment of power that can be set on the server.
                     *
                     * The value of this attribute shall be between 1 and MaxPower inclusive.
                     *
                     * The value of this attribute shall be such that (MaxPower - MinPower) % PowerStep == 0
                     *
                     * For example, if MinPower is 1, MaxPower is 10, and PowerSetting can be set to any integer between
                     * MinPower and MaxPower, PowerStep would be set to 1.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.6
                     */
                    readonly powerStep: FixedAttribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly powerInWatts: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the list of power levels (in W) supported by the server.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.7
                     */
                    readonly supportedWatts: FixedAttribute<number[], any>;
                    /**
                     * Indicates the index into the list of SupportedWatts of the currently selected power setting.
                     *
                     * The index shall be a valid index into the SupportedWatts list.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.8
                     */
                    readonly selectedWattIndex: Attribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly powerNumberLimits: true;
                readonly powerAsNumber: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly powerAsNumber: true;
                readonly powerInWatts: true;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly powerAsNumber: false;
                readonly powerInWatts: false;
            };
            readonly component: false;
        }];
    };
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster.ExtensibleOnly<{
        readonly id: 95;
        readonly name: "MicrowaveOvenControl";
        readonly revision: 1;
        readonly features: {
            /**
             * Power is specified as a unitless number or a percentage
             */
            readonly powerAsNumber: BitFlag;
            /**
             * Power is specified in Watts
             */
            readonly powerInWatts: BitFlag;
            /**
             * Supports the limit attributes used with the PWRNUM feature
             */
            readonly powerNumberLimits: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the total cook time associated with the operation of the device.
             *
             * This attribute shall remain unchanged during the operation of the oven unless the value is changed via a
             * command or out-of-band action.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.1
             */
            readonly cookTime: Attribute<number, any>;
            /**
             * Indicates the maximum value to which the CookTime attribute can be set.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.2
             */
            readonly maxCookTime: FixedAttribute<number, any>;
            /**
             * Indicates the rating, in Watts, of the microwave power of the oven.
             *
             * Supporting this attribute can assist clients in suggesting cooking settings for various foods and
             * beverages.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.9
             */
            readonly wattRating: OptionalFixedAttribute<number, any>;
        };
        readonly commands: {
            /**
             * This command is used to set the cooking parameters associated with the operation of the device. This
             * command supports the following fields:
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2
             */
            readonly setCookingParameters: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the value to which the CurrentMode attribute of the Microwave Oven Mode cluster
                 * should be set. The value of this field shall be one from the list of SupportedModes from the Microwave Oven
                 * Mode cluster.
                 *
                 * If this field is missing, the CurrentMode attribute shall be set to a mode having the Normal mode tag.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.1
                 */
                cookMode: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the CookTime associated with the operation of the device. The value of this field
                 * shall be subject to the constraints of the CookTime attribute of this cluster.
                 *
                 * If this field is missing, the CookTime attribute shall be set to 30 seconds by the server.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.2
                 */
                cookTime: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the PowerSetting associated with the operation of the device. The value of this
                 * field shall be subject to the constraints of the PowerSetting attribute of this cluster. If the PowerSetting
                 * field does not conform to the constraints of the PowerSetting attribute, the server shall return a
                 * CONSTRAINT_ERROR status.
                 *
                 * If this field is missing, the PowerSetting attribute shall be set to 100 if MaxPower is not supported by the
                 * server, otherwise it shall be set to MaxPower if the MaxPower attribute is supported by the server.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.3
                 */
                powerSetting: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the value to which the SelectedWattIndex attribute is set. If the value of this
                 * field is greater than or equal to the length of the SupportedWatts attribute list, the server shall return a
                 * CONSTRAINT_ERROR status and the value of the SelectedWattIndex attribute shall be unchanged.
                 *
                 * If this field is missing, the SelectedWattIndex attribute shall be set by the server to the index associated
                 * with the highest Watt setting for the selected CookMode.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.4
                 */
                wattSettingIndex: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate whether or not oven operation shall be started when the command is received.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.5
                 */
                startAfterSetting: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
            }>, void, any>;
            /**
             * This command is used to add more time to the CookTime attribute of the server.
             *
             * This command supports these fields:
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.3
             */
            readonly addMoreTime: OptionalCommand<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the number of seconds to be added to the CookTime attribute.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.3.1
                 */
                timeToAdd: import("../tlv/TlvObject.js").FieldType<number>;
            }>, void, any>;
        };
        /**
         * This metadata controls which MicrowaveOvenControlCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly powerAsNumber: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the power level associated with the operation of the device.
                     *
                     * If the MinPower, MaxPower, and PowerStep attributes are not supported:
                     *
                     *   - The minimum value of this attribute shall be 10,
                     *
                     *   - The maximum value of this attribute shall be 100,
                     *
                     *   - The value shall be in even multiples of 10,
                     *
                     *   - The default value shall be 100.
                     *
                     * If the MinPower, MaxPower, and PowerStep attributes are supported:
                     *
                     *   - The value of this attribute shall be between MinPower and MaxPower inclusive.
                     *
                     *   - The value of this attribute shall be such that (PowerSetting - MinPower) % PowerStep == 0
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.3
                     */
                    readonly powerSetting: Attribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly powerNumberLimits: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the minimum value to which the PowerSetting attribute that can be set on the server.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.4
                     */
                    readonly minPower: FixedAttribute<number, any>;
                    /**
                     * Indicates the maximum value to which the PowerSetting attribute that can be set on the server.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.5
                     */
                    readonly maxPower: FixedAttribute<number, any>;
                    /**
                     * Indicates the increment of power that can be set on the server.
                     *
                     * The value of this attribute shall be between 1 and MaxPower inclusive.
                     *
                     * The value of this attribute shall be such that (MaxPower - MinPower) % PowerStep == 0
                     *
                     * For example, if MinPower is 1, MaxPower is 10, and PowerSetting can be set to any integer between
                     * MinPower and MaxPower, PowerStep would be set to 1.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.6
                     */
                    readonly powerStep: FixedAttribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly powerInWatts: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the list of power levels (in W) supported by the server.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.7
                     */
                    readonly supportedWatts: FixedAttribute<number[], any>;
                    /**
                     * Indicates the index into the list of SupportedWatts of the currently selected power setting.
                     *
                     * The index shall be a valid index into the SupportedWatts list.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.8
                     */
                    readonly selectedWattIndex: Attribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly powerNumberLimits: true;
                readonly powerAsNumber: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly powerAsNumber: true;
                readonly powerInWatts: true;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly powerAsNumber: false;
                readonly powerInWatts: false;
            };
            readonly component: false;
        }];
    }>;
    /**
     * This cluster defines the requirements for the Microwave Oven Control cluster.
     *
     * This cluster has dependencies with the Operational State and Microwave Oven Mode clusters. The Operational State
     * cluster and the Microwave Oven Mode clusters, or derivatives of those clusters shall appear on the same endpoint
     * as this cluster.
     *
     * Per the Matter specification you cannot use {@link MicrowaveOvenControlCluster} without enabling certain feature
     * combinations. You must use the {@link with} factory method to obtain a working cluster.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 8.13
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    /**
     * @see {@link Complete}
     */
    const CompleteInstance: MutableCluster<{
        readonly id: 95;
        readonly name: "MicrowaveOvenControl";
        readonly revision: 1;
        readonly features: {
            /**
             * Power is specified as a unitless number or a percentage
             */
            readonly powerAsNumber: BitFlag;
            /**
             * Power is specified in Watts
             */
            readonly powerInWatts: BitFlag;
            /**
             * Supports the limit attributes used with the PWRNUM feature
             */
            readonly powerNumberLimits: BitFlag;
        };
        readonly attributes: {
            readonly powerSetting: Attribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    powerAsNumber: boolean;
                }];
            };
            readonly minPower: FixedAttribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    powerNumberLimits: boolean;
                }];
            };
            readonly maxPower: FixedAttribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    powerNumberLimits: boolean;
                }];
            };
            readonly powerStep: FixedAttribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    powerNumberLimits: boolean;
                }];
            };
            readonly supportedWatts: FixedAttribute<number[], any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    powerInWatts: boolean;
                }];
            };
            readonly selectedWattIndex: Attribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    powerInWatts: boolean;
                }];
            };
            /**
             * Indicates the total cook time associated with the operation of the device.
             *
             * This attribute shall remain unchanged during the operation of the oven unless the value is changed via a
             * command or out-of-band action.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.1
             */
            readonly cookTime: Attribute<number, any>;
            /**
             * Indicates the maximum value to which the CookTime attribute can be set.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.2
             */
            readonly maxCookTime: FixedAttribute<number, any>;
            /**
             * Indicates the rating, in Watts, of the microwave power of the oven.
             *
             * Supporting this attribute can assist clients in suggesting cooking settings for various foods and
             * beverages.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.5.9
             */
            readonly wattRating: OptionalFixedAttribute<number, any>;
        };
        readonly commands: {
            /**
             * This command is used to set the cooking parameters associated with the operation of the device. This
             * command supports the following fields:
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2
             */
            readonly setCookingParameters: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the value to which the CurrentMode attribute of the Microwave Oven Mode cluster
                 * should be set. The value of this field shall be one from the list of SupportedModes from the Microwave Oven
                 * Mode cluster.
                 *
                 * If this field is missing, the CurrentMode attribute shall be set to a mode having the Normal mode tag.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.1
                 */
                cookMode: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the CookTime associated with the operation of the device. The value of this field
                 * shall be subject to the constraints of the CookTime attribute of this cluster.
                 *
                 * If this field is missing, the CookTime attribute shall be set to 30 seconds by the server.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.2
                 */
                cookTime: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the PowerSetting associated with the operation of the device. The value of this
                 * field shall be subject to the constraints of the PowerSetting attribute of this cluster. If the PowerSetting
                 * field does not conform to the constraints of the PowerSetting attribute, the server shall return a
                 * CONSTRAINT_ERROR status.
                 *
                 * If this field is missing, the PowerSetting attribute shall be set to 100 if MaxPower is not supported by the
                 * server, otherwise it shall be set to MaxPower if the MaxPower attribute is supported by the server.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.3
                 */
                powerSetting: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate the value to which the SelectedWattIndex attribute is set. If the value of this
                 * field is greater than or equal to the length of the SupportedWatts attribute list, the server shall return a
                 * CONSTRAINT_ERROR status and the value of the SelectedWattIndex attribute shall be unchanged.
                 *
                 * If this field is missing, the SelectedWattIndex attribute shall be set by the server to the index associated
                 * with the highest Watt setting for the selected CookMode.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.4
                 */
                wattSettingIndex: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall indicate whether or not oven operation shall be started when the command is received.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.2.5
                 */
                startAfterSetting: import("../tlv/TlvObject.js").OptionalFieldType<boolean>;
            }>, void, any>;
            /**
             * This command is used to add more time to the CookTime attribute of the server.
             *
             * This command supports these fields:
             *
             * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.3
             */
            readonly addMoreTime: OptionalCommand<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the number of seconds to be added to the CookTime attribute.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 8.13.6.3.1
                 */
                timeToAdd: import("../tlv/TlvObject.js").FieldType<number>;
            }>, void, any>;
        };
    }, []>;
    /**
     * This cluster supports all MicrowaveOvenControl 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 MicrowaveOvenControlCluster = MicrowaveOvenControl.Cluster;
export declare const MicrowaveOvenControlCluster: MicrowaveOvenControl.Cluster;
//# sourceMappingURL=microwave-oven-control.d.ts.map