/**
 * @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, FabricScopedAttribute, Command, OptionalCommand } from "../cluster/Cluster.js";
import { TypeFromSchema } from "../tlv/TlvSchema.js";
import { Status } from "../globals/Status.js";
import { Identity } from "#general";
export declare namespace ScenesManagement {
    /**
     * These are optional features supported by ScenesManagementCluster.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.4
     */
    enum Feature {
        /**
         * SceneNames (SN)
         *
         * This feature indicates the ability to store a name for a scene when a scene is added.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.4.1
         */
        SceneNames = "SceneNames"
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2
     */
    const TlvSceneInfo: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the number of scenes currently used in the server’s Scene Table on the endpoint
         * where the Scenes Management cluster appears.
         *
         * This only includes the count for the associated fabric.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.1
         */
        sceneCount: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * This field shall indicate the scene identifier of the scene last invoked on the associated fabric. If no
         * scene has been invoked, the value of this field shall be 0xFF, the undefined scene identifier.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.2
         */
        currentScene: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * This field shall indicate the group identifier of the scene last invoked on the associated fabric, or 0 if
         * the scene last invoked is not associated with a group.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.3
         */
        currentGroup: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * This field shall indicate whether the state of the server corresponds to that associated with the
         * CurrentScene and CurrentGroup fields of the SceneInfoStruct they belong to. TRUE indicates that these fields
         * are valid, FALSE indicates that they are not valid.
         *
         * This field shall be set to False for all other fabrics when an attribute with the Scenes ("S") designation in
         * the Quality column of another cluster present on the same endpoint is modified or when the current scene is
         * modified by a fabric through the RecallScene or StoreScene commands, regardless of the fabric-scoped access
         * quality of the command.
         *
         * In the event where the SceneValid field is set to False for a fabric, the CurrentScene and CurrentGroup
         * fields shall be the last invoked scene and group for that fabric. In the event where no scene was previously
         * invoked for that fabric, the CurrentScene and CurrentGroup fields shall be their default values.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.4
         */
        sceneValid: import("../tlv/TlvObject.js").FieldType<boolean>;
        /**
         * This field shall indicate the remaining capacity of the Scene Table on this endpoint for the accessing
         * fabric. Note that this value may change between reads, even if no entries are added or deleted on the
         * accessing fabric, due to other clients associated with other fabrics adding or deleting entries that impact
         * the resource usage on the device.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.5
         */
        remainingCapacity: import("../tlv/TlvObject.js").FieldType<number>;
        fabricIndex: import("../tlv/TlvObject.js").FieldType<import("../datatype/FabricIndex.js").FabricIndex>;
    }>;
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2
     */
    interface SceneInfo extends TypeFromSchema<typeof TlvSceneInfo> {
    }
    /**
     * This data type indicates a combination of an identifier and the value of an attribute.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.3
     */
    const TlvAttributeValuePair: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall be present for all instances in a given ExtensionFieldSetStruct.
         *
         * Which Value* field is used shall be determined based on the data type of the attribute indicated by
         * AttributeID, as described in the Value* Fields subsection.
         *
         * The AttributeID field shall NOT refer to an attribute without the Scenes ("S") designation in the Quality
         * column of the cluster specification.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.3.1
         */
        attributeId: import("../tlv/TlvObject.js").FieldType<import("../datatype/AttributeId.js").AttributeId>;
        valueUnsigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        valueSigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        valueUnsigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        valueSigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        valueUnsigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        valueSigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        valueUnsigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
        valueSigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
    }>;
    /**
     * This data type indicates a combination of an identifier and the value of an attribute.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.3
     */
    interface AttributeValuePair extends TypeFromSchema<typeof TlvAttributeValuePair> {
    }
    /**
     * This data type indicates for a given cluster a set of attributes and their values.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4
     */
    const TlvExtensionFieldSet: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the cluster-id of the cluster whose attributes are in the AttributeValueList field.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.1
         */
        clusterId: import("../tlv/TlvObject.js").FieldType<import("../datatype/ClusterId.js").ClusterId>;
        /**
         * This field shall indicate a set of attributes and their values which are stored as part of a scene.
         *
         * Attributes which do not have the Scenes ("S") designation in the Quality column of their cluster
         * specification shall NOT be used in the AttributeValueList field.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.2
         */
        attributeValueList: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall be present for all instances in a given ExtensionFieldSetStruct.
             *
             * Which Value* field is used shall be determined based on the data type of the attribute indicated by
             * AttributeID, as described in the Value* Fields subsection.
             *
             * The AttributeID field shall NOT refer to an attribute without the Scenes ("S") designation in the Quality
             * column of the cluster specification.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.3.1
             */
            attributeId: import("../tlv/TlvObject.js").FieldType<import("../datatype/AttributeId.js").AttributeId>;
            valueUnsigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            valueSigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            valueUnsigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            valueSigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            valueUnsigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            valueSigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            valueUnsigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            valueSigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
        }>[]>;
    }>;
    /**
     * This data type indicates for a given cluster a set of attributes and their values.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4
     */
    interface ExtensionFieldSet extends TypeFromSchema<typeof TlvExtensionFieldSet> {
    }
    /**
     * Input to the ScenesManagement addScene command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2
     */
    const TlvAddSceneRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the group identifier in the Group Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.1
         */
        groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * This field shall indicate the scene identifier in the Scene Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.2
         */
        sceneId: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * This field shall indicate the transition time of the scene, measured in milliseconds.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.3
         */
        transitionTime: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * This field shall indicate the name of the scene.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.4
         */
        sceneName: import("../tlv/TlvObject.js").FieldType<string>;
        /**
         * This field shall contains the list of extension fields.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.5
         */
        extensionFieldSetStructs: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall indicate the cluster-id of the cluster whose attributes are in the AttributeValueList field.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.1
             */
            clusterId: import("../tlv/TlvObject.js").FieldType<import("../datatype/ClusterId.js").ClusterId>;
            /**
             * This field shall indicate a set of attributes and their values which are stored as part of a scene.
             *
             * Attributes which do not have the Scenes ("S") designation in the Quality column of their cluster
             * specification shall NOT be used in the AttributeValueList field.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.2
             */
            attributeValueList: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be present for all instances in a given ExtensionFieldSetStruct.
                 *
                 * Which Value* field is used shall be determined based on the data type of the attribute indicated by
                 * AttributeID, as described in the Value* Fields subsection.
                 *
                 * The AttributeID field shall NOT refer to an attribute without the Scenes ("S") designation in the Quality
                 * column of the cluster specification.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.3.1
                 */
                attributeId: import("../tlv/TlvObject.js").FieldType<import("../datatype/AttributeId.js").AttributeId>;
                valueUnsigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueSigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueUnsigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueSigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueUnsigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueSigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueUnsigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                valueSigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            }>[]>;
        }>[]>;
    }>;
    /**
     * Input to the ScenesManagement addScene command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2
     */
    interface AddSceneRequest extends TypeFromSchema<typeof TlvAddSceneRequest> {
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.3
     */
    const TlvAddSceneResponse: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall be set according to the Effect on Receipt section for AddScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.3.1
         */
        status: import("../tlv/TlvObject.js").FieldType<Status>;
        /**
         * The GroupID field shall be set to the corresponding field of the received AddScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.3.2
         */
        groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * The SceneID field shall be set to the corresponding field of the received AddScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.3.3
         */
        sceneId: import("../tlv/TlvObject.js").FieldType<number>;
    }>;
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.3
     */
    interface AddSceneResponse extends TypeFromSchema<typeof TlvAddSceneResponse> {
    }
    /**
     * Input to the ScenesManagement viewScene command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.4
     */
    const TlvViewSceneRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the group identifier in the Group Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.4.1
         */
        groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * This field shall indicate the scene identifier in the Scene Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.4.2
         */
        sceneId: import("../tlv/TlvObject.js").FieldType<number>;
    }>;
    /**
     * Input to the ScenesManagement viewScene command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.4
     */
    interface ViewSceneRequest extends TypeFromSchema<typeof TlvViewSceneRequest> {
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5
     */
    const TlvViewSceneResponse: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall be set according to the Effect on Receipt section for ViewScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.1
         */
        status: import("../tlv/TlvObject.js").FieldType<Status>;
        /**
         * The GroupID field shall be set to the corresponding field of the received ViewScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.2
         */
        groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * The SceneID field shall be set to the corresponding field of the received ViewScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.3
         */
        sceneId: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * This field shall be set to the corresponding field in the Scene Table entry.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.4
         */
        transitionTime: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        /**
         * This field shall be set to the corresponding field in the Scene Table entry.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.5
         */
        sceneName: import("../tlv/TlvObject.js").OptionalFieldType<string>;
        /**
         * This field shall be set to the corresponding field in the Scene Table entry.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.6
         */
        extensionFieldSetStructs: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall indicate the cluster-id of the cluster whose attributes are in the AttributeValueList field.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.1
             */
            clusterId: import("../tlv/TlvObject.js").FieldType<import("../datatype/ClusterId.js").ClusterId>;
            /**
             * This field shall indicate a set of attributes and their values which are stored as part of a scene.
             *
             * Attributes which do not have the Scenes ("S") designation in the Quality column of their cluster
             * specification shall NOT be used in the AttributeValueList field.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.2
             */
            attributeValueList: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be present for all instances in a given ExtensionFieldSetStruct.
                 *
                 * Which Value* field is used shall be determined based on the data type of the attribute indicated by
                 * AttributeID, as described in the Value* Fields subsection.
                 *
                 * The AttributeID field shall NOT refer to an attribute without the Scenes ("S") designation in the Quality
                 * column of the cluster specification.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.3.1
                 */
                attributeId: import("../tlv/TlvObject.js").FieldType<import("../datatype/AttributeId.js").AttributeId>;
                valueUnsigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueSigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueUnsigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueSigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueUnsigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueSigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueUnsigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                valueSigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            }>[]>;
        }>[]>;
    }>;
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5
     */
    interface ViewSceneResponse extends TypeFromSchema<typeof TlvViewSceneResponse> {
    }
    /**
     * Input to the ScenesManagement removeScene command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.6
     */
    const TlvRemoveSceneRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the group identifier in the Group Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.6.1
         */
        groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * This field shall indicate the scene identifier in the Scene Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.6.2
         */
        sceneId: import("../tlv/TlvObject.js").FieldType<number>;
    }>;
    /**
     * Input to the ScenesManagement removeScene command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.6
     */
    interface RemoveSceneRequest extends TypeFromSchema<typeof TlvRemoveSceneRequest> {
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.7
     */
    const TlvRemoveSceneResponse: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall be set according to the Effect on Receipt section for RemoveScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.7.1
         */
        status: import("../tlv/TlvObject.js").FieldType<Status>;
        /**
         * The GroupID field shall be set to the corresponding field of the received RemoveScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.7.2
         */
        groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * The SceneID field shall be set to the corresponding field of the received RemoveScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.7.3
         */
        sceneId: import("../tlv/TlvObject.js").FieldType<number>;
    }>;
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.7
     */
    interface RemoveSceneResponse extends TypeFromSchema<typeof TlvRemoveSceneResponse> {
    }
    /**
     * Input to the ScenesManagement removeAllScenes command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.8
     */
    const TlvRemoveAllScenesRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the group identifier in the Group Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.8.1
         */
        groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
    }>;
    /**
     * Input to the ScenesManagement removeAllScenes command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.8
     */
    interface RemoveAllScenesRequest extends TypeFromSchema<typeof TlvRemoveAllScenesRequest> {
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.9
     */
    const TlvRemoveAllScenesResponse: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall be set according to the Effect on Receipt section for RemoveAllScenes command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.9.1
         */
        status: import("../tlv/TlvObject.js").FieldType<Status>;
        /**
         * The GroupID field shall be set to the corresponding field of the received RemoveAllScenes command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.9.2
         */
        groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
    }>;
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.9
     */
    interface RemoveAllScenesResponse extends TypeFromSchema<typeof TlvRemoveAllScenesResponse> {
    }
    /**
     * Input to the ScenesManagement storeScene command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.10
     */
    const TlvStoreSceneRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the group identifier in the Group Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.10.1
         */
        groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * This field shall indicate the scene identifier in the Scene Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.10.2
         */
        sceneId: import("../tlv/TlvObject.js").FieldType<number>;
    }>;
    /**
     * Input to the ScenesManagement storeScene command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.10
     */
    interface StoreSceneRequest extends TypeFromSchema<typeof TlvStoreSceneRequest> {
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.11
     */
    const TlvStoreSceneResponse: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall be set according to the Effect on Receipt section for StoreScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.11.1
         */
        status: import("../tlv/TlvObject.js").FieldType<Status>;
        /**
         * The GroupID field shall be set to the corresponding field of the received StoreScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.11.2
         */
        groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * The SceneID field shall be set to the corresponding field of the received StoreScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.11.3
         */
        sceneId: import("../tlv/TlvObject.js").FieldType<number>;
    }>;
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.11
     */
    interface StoreSceneResponse extends TypeFromSchema<typeof TlvStoreSceneResponse> {
    }
    /**
     * Input to the ScenesManagement recallScene command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.12
     */
    const TlvRecallSceneRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the group identifier in the Group Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.12.1
         */
        groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * This field shall indicate the scene identifier in the Scene Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.12.2
         */
        sceneId: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * This field shall indicate the transition time of the scene, measured in milliseconds.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.12.3
         */
        transitionTime: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
    }>;
    /**
     * Input to the ScenesManagement recallScene command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.12
     */
    interface RecallSceneRequest extends TypeFromSchema<typeof TlvRecallSceneRequest> {
    }
    /**
     * Input to the ScenesManagement getSceneMembership command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.13
     */
    const TlvGetSceneMembershipRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the group identifier in the Group Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.13.1
         */
        groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
    }>;
    /**
     * Input to the ScenesManagement getSceneMembership command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.13
     */
    interface GetSceneMembershipRequest extends TypeFromSchema<typeof TlvGetSceneMembershipRequest> {
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14
     */
    const TlvGetSceneMembershipResponse: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall be set according to the Effect on Receipt section for GetSceneMembership command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14.1
         */
        status: import("../tlv/TlvObject.js").FieldType<Status>;
        /**
         * This field shall contain the remaining capacity of the Scene Table of the server (for all groups for the
         * accessing fabric). The following values apply:
         *
         *   - 0 - No further scenes may be added.
         *
         *   - 0 < Capacity < 0xFE - Capacity holds the number of scenes that may be added.
         *
         *   - 0xFE - At least 1 further scene may be added (exact number is unknown).
         *
         *   - null - It is unknown if any further scenes may be added.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14.2
         */
        capacity: import("../tlv/TlvObject.js").FieldType<number | null>;
        /**
         * This field shall be set to the corresponding field of the received GetSceneMembership command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14.3
         */
        groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * If the status is not SUCCESS then this field shall be omitted, else this field shall contain the identifiers
         * of all the scenes in the Scene Table with the corresponding Group ID.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14.4
         */
        sceneList: import("../tlv/TlvObject.js").OptionalFieldType<number[]>;
    }>;
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14
     */
    interface GetSceneMembershipResponse extends TypeFromSchema<typeof TlvGetSceneMembershipResponse> {
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.1
     */
    const CopyMode: {
        /**
         * Copy all scenes in the scene table
         */
        copyAllScenes: BitFlag;
    };
    /**
     * Input to the ScenesManagement copyScene command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15
     */
    const TlvCopySceneRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall contain the information of how the scene copy is to proceed.
         *
         * The CopyAllScenes bit of the Mode indicates whether all scenes are to be copied. If this value is set to 1,
         * all scenes are to be copied and the SceneIdentifierFrom and SceneIdentifierTo fields shall be ignored.
         * Otherwise this bit is set to 0.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.1
         */
        mode: import("../tlv/TlvObject.js").FieldType<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
            /**
             * Copy all scenes in the scene table
             */
            copyAllScenes: BitFlag;
        }>>;
        /**
         * This field shall indicate the identifier of the group from which the scene is to be copied. Together with the
         * SceneIdentifierFrom field, this field uniquely identifies the scene to copy from the Scene Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.2
         */
        groupIdentifierFrom: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * This field shall indicate the identifier of the scene from which the scene is to be copied. Together with the
         * GroupIdentifierFrom field, this field uniquely identifies the scene to copy from the Scene Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.3
         */
        sceneIdentifierFrom: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * This field shall indicate the identifier of the group to which the scene is to be copied. Together with the
         * SceneIdentifierTo field, this field uniquely identifies the scene to copy to the Scene Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.4
         */
        groupIdentifierTo: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * This field shall indicate the identifier of the scene to which the scene is to be copied. Together with the
         * GroupIdentifierTo field, this field uniquely identifies the scene to copy to the Scene Table.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.5
         */
        sceneIdentifierTo: import("../tlv/TlvObject.js").FieldType<number>;
    }>;
    /**
     * Input to the ScenesManagement copyScene command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15
     */
    interface CopySceneRequest extends TypeFromSchema<typeof TlvCopySceneRequest> {
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.16
     */
    const TlvCopySceneResponse: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall be set according to the Effect on Receipt section for the CopyScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.16.1
         */
        status: import("../tlv/TlvObject.js").FieldType<Status>;
        /**
         * This field shall be set to the same values as in the corresponding fields of the received CopyScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.16.2
         */
        groupIdentifierFrom: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * This field shall be set to the same values as in the corresponding fields of the received CopyScene command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.16.3
         */
        sceneIdentifierFrom: import("../tlv/TlvObject.js").FieldType<number>;
    }>;
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.16
     */
    interface CopySceneResponse extends TypeFromSchema<typeof TlvCopySceneResponse> {
    }
    /**
     * The Scene Table is used to store information for each scene capable of being invoked on the server. Each scene is
     * defined for a particular group. The Scene Table is defined here as a conceptual illustration to assist in
     * understanding the underlying data to be stored when scenes are defined. Though the Scene Table is defined here
     * using the data model architecture rules and format, the design is not normative.
     *
     * The Scene table is logically a list of fabric-scoped structs. The logical fields of each Scene Table entry struct
     * are illustrated below. An ExtensionFieldSetStruct may be present for each Scenes-supporting cluster implemented
     * on the same endpoint.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.5
     */
    const TlvLogicalSceneTable: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field is the group identifier for which this scene applies, or 0 if the scene is not associated with a
         * group.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.5.1
         */
        sceneGroupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
        /**
         * This field is unique within this group, which is used to identify this scene.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.5.2
         */
        sceneId: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * The field is the name of the scene.
         *
         * If scene names are not supported, any commands that write a scene name shall simply discard the name, and any
         * command that returns a scene name shall return an empty string.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.5.3
         */
        sceneName: import("../tlv/TlvObject.js").OptionalFieldType<string>;
        /**
         * This field is the amount of time, in milliseconds, it will take for a cluster to change from its current
         * state to the requested state.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.5.4
         */
        sceneTransitionTime: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * See the Scene Table Extensions subsections of individual clusters. A Scene Table Extension shall only use
         * attributes with the Scene quality. Each ExtensionFieldSetStruct holds a set of values of these attributes for
         * a cluster implemented on the same endpoint where the Scene ("S") designation appears in the quality column. A
         * scene is the aggregate of all such fields across all clusters on the endpoint.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.5.5
         */
        extensionFields: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall indicate the cluster-id of the cluster whose attributes are in the AttributeValueList field.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.1
             */
            clusterId: import("../tlv/TlvObject.js").FieldType<import("../datatype/ClusterId.js").ClusterId>;
            /**
             * This field shall indicate a set of attributes and their values which are stored as part of a scene.
             *
             * Attributes which do not have the Scenes ("S") designation in the Quality column of their cluster
             * specification shall NOT be used in the AttributeValueList field.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.2
             */
            attributeValueList: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be present for all instances in a given ExtensionFieldSetStruct.
                 *
                 * Which Value* field is used shall be determined based on the data type of the attribute indicated by
                 * AttributeID, as described in the Value* Fields subsection.
                 *
                 * The AttributeID field shall NOT refer to an attribute without the Scenes ("S") designation in the Quality
                 * column of the cluster specification.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.3.1
                 */
                attributeId: import("../tlv/TlvObject.js").FieldType<import("../datatype/AttributeId.js").AttributeId>;
                valueUnsigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueSigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueUnsigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueSigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueUnsigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueSigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                valueUnsigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                valueSigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
            }>[]>;
        }>[]>;
    }>;
    /**
     * The Scene Table is used to store information for each scene capable of being invoked on the server. Each scene is
     * defined for a particular group. The Scene Table is defined here as a conceptual illustration to assist in
     * understanding the underlying data to be stored when scenes are defined. Though the Scene Table is defined here
     * using the data model architecture rules and format, the design is not normative.
     *
     * The Scene table is logically a list of fabric-scoped structs. The logical fields of each Scene Table entry struct
     * are illustrated below. An ExtensionFieldSetStruct may be present for each Scenes-supporting cluster implemented
     * on the same endpoint.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.5
     */
    interface LogicalSceneTable extends TypeFromSchema<typeof TlvLogicalSceneTable> {
    }
    /**
     * These elements and properties are present in all ScenesManagement clusters.
     */
    const Base: {
        readonly id: 98;
        readonly name: "ScenesManagement";
        readonly revision: 1;
        readonly features: {
            /**
             * This feature indicates the ability to store a name for a scene when a scene is added.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.4.1
             */
            readonly sceneNames: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the number of entries in the Scene Table on this endpoint. This is the total across all
             * fabrics; note that a single fabric cannot use all those entries (see Handling of fabric-scoping). The
             * minimum size of this table, (i.e., the minimum number of scenes to support across all fabrics per
             * endpoint) shall be 16, unless a device type in which this cluster is used, defines a larger value in the
             * device type definition.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.8.1
             */
            readonly sceneTableSize: FixedAttribute<number, any>;
            /**
             * Indicates a list of fabric scoped information about scenes on this endpoint.
             *
             * The number of list entries for this attribute shall NOT exceed the number of supported fabrics by the
             * device.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.8.2
             */
            readonly fabricSceneInfo: FabricScopedAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the number of scenes currently used in the server’s Scene Table on the endpoint
                 * where the Scenes Management cluster appears.
                 *
                 * This only includes the count for the associated fabric.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.1
                 */
                sceneCount: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate the scene identifier of the scene last invoked on the associated fabric. If no
                 * scene has been invoked, the value of this field shall be 0xFF, the undefined scene identifier.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.2
                 */
                currentScene: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate the group identifier of the scene last invoked on the associated fabric, or 0 if
                 * the scene last invoked is not associated with a group.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.3
                 */
                currentGroup: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate whether the state of the server corresponds to that associated with the
                 * CurrentScene and CurrentGroup fields of the SceneInfoStruct they belong to. TRUE indicates that these fields
                 * are valid, FALSE indicates that they are not valid.
                 *
                 * This field shall be set to False for all other fabrics when an attribute with the Scenes ("S") designation in
                 * the Quality column of another cluster present on the same endpoint is modified or when the current scene is
                 * modified by a fabric through the RecallScene or StoreScene commands, regardless of the fabric-scoped access
                 * quality of the command.
                 *
                 * In the event where the SceneValid field is set to False for a fabric, the CurrentScene and CurrentGroup
                 * fields shall be the last invoked scene and group for that fabric. In the event where no scene was previously
                 * invoked for that fabric, the CurrentScene and CurrentGroup fields shall be their default values.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.4
                 */
                sceneValid: import("../tlv/TlvObject.js").FieldType<boolean>;
                /**
                 * This field shall indicate the remaining capacity of the Scene Table on this endpoint for the accessing
                 * fabric. Note that this value may change between reads, even if no entries are added or deleted on the
                 * accessing fabric, due to other clients associated with other fabrics adding or deleting entries that impact
                 * the resource usage on the device.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.5
                 */
                remainingCapacity: import("../tlv/TlvObject.js").FieldType<number>;
                fabricIndex: import("../tlv/TlvObject.js").FieldType<import("../datatype/FabricIndex.js").FabricIndex>;
            }>[], any>;
        };
        readonly commands: {
            /**
             * It is not mandatory for an extension field set to be included in the command for every cluster on that
             * endpoint that has a defined extension field set. Extension field sets may be omitted, including the case
             * of no extension field sets at all.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2
             */
            readonly addScene: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the scene identifier in the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.2
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate the transition time of the scene, measured in milliseconds.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.3
                 */
                transitionTime: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate the name of the scene.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.4
                 */
                sceneName: import("../tlv/TlvObject.js").FieldType<string>;
                /**
                 * This field shall contains the list of extension fields.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.5
                 */
                extensionFieldSetStructs: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the cluster-id of the cluster whose attributes are in the AttributeValueList field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.1
                     */
                    clusterId: import("../tlv/TlvObject.js").FieldType<import("../datatype/ClusterId.js").ClusterId>;
                    /**
                     * This field shall indicate a set of attributes and their values which are stored as part of a scene.
                     *
                     * Attributes which do not have the Scenes ("S") designation in the Quality column of their cluster
                     * specification shall NOT be used in the AttributeValueList field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.2
                     */
                    attributeValueList: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be present for all instances in a given ExtensionFieldSetStruct.
                         *
                         * Which Value* field is used shall be determined based on the data type of the attribute indicated by
                         * AttributeID, as described in the Value* Fields subsection.
                         *
                         * The AttributeID field shall NOT refer to an attribute without the Scenes ("S") designation in the Quality
                         * column of the cluster specification.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.3.1
                         */
                        attributeId: import("../tlv/TlvObject.js").FieldType<import("../datatype/AttributeId.js").AttributeId>;
                        valueUnsigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueSigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueUnsigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueSigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueUnsigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueSigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueUnsigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        valueSigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    }>[]>;
                }>[]>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for AddScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.3.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * The GroupID field shall be set to the corresponding field of the received AddScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.3.2
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * The SceneID field shall be set to the corresponding field of the received AddScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.3.3
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
            }>, any>;
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.4
             */
            readonly viewScene: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.4.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the scene identifier in the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.4.2
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for ViewScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * The GroupID field shall be set to the corresponding field of the received ViewScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.2
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * The SceneID field shall be set to the corresponding field of the received ViewScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.3
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall be set to the corresponding field in the Scene Table entry.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.4
                 */
                transitionTime: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall be set to the corresponding field in the Scene Table entry.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.5
                 */
                sceneName: import("../tlv/TlvObject.js").OptionalFieldType<string>;
                /**
                 * This field shall be set to the corresponding field in the Scene Table entry.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.6
                 */
                extensionFieldSetStructs: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the cluster-id of the cluster whose attributes are in the AttributeValueList field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.1
                     */
                    clusterId: import("../tlv/TlvObject.js").FieldType<import("../datatype/ClusterId.js").ClusterId>;
                    /**
                     * This field shall indicate a set of attributes and their values which are stored as part of a scene.
                     *
                     * Attributes which do not have the Scenes ("S") designation in the Quality column of their cluster
                     * specification shall NOT be used in the AttributeValueList field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.2
                     */
                    attributeValueList: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be present for all instances in a given ExtensionFieldSetStruct.
                         *
                         * Which Value* field is used shall be determined based on the data type of the attribute indicated by
                         * AttributeID, as described in the Value* Fields subsection.
                         *
                         * The AttributeID field shall NOT refer to an attribute without the Scenes ("S") designation in the Quality
                         * column of the cluster specification.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.3.1
                         */
                        attributeId: import("../tlv/TlvObject.js").FieldType<import("../datatype/AttributeId.js").AttributeId>;
                        valueUnsigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueSigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueUnsigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueSigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueUnsigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueSigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueUnsigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        valueSigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    }>[]>;
                }>[]>;
            }>, any>;
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.6
             */
            readonly removeScene: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.6.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the scene identifier in the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.6.2
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for RemoveScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.7.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * The GroupID field shall be set to the corresponding field of the received RemoveScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.7.2
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * The SceneID field shall be set to the corresponding field of the received RemoveScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.7.3
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
            }>, any>;
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.8
             */
            readonly removeAllScenes: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.8.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for RemoveAllScenes command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.9.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * The GroupID field shall be set to the corresponding field of the received RemoveAllScenes command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.9.2
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
            }>, any>;
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.10
             */
            readonly storeScene: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.10.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the scene identifier in the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.10.2
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for StoreScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.11.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * The GroupID field shall be set to the corresponding field of the received StoreScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.11.2
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * The SceneID field shall be set to the corresponding field of the received StoreScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.11.3
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
            }>, any>;
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.12
             */
            readonly recallScene: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.12.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the scene identifier in the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.12.2
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate the transition time of the scene, measured in milliseconds.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.12.3
                 */
                transitionTime: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
            }>, void, any>;
            /**
             * This command can be used to get the used scene identifiers within a certain group, for the endpoint that
             * implements this cluster.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.13
             */
            readonly getSceneMembership: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.13.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for GetSceneMembership command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall contain the remaining capacity of the Scene Table of the server (for all groups for the
                 * accessing fabric). The following values apply:
                 *
                 *   - 0 - No further scenes may be added.
                 *
                 *   - 0 < Capacity < 0xFE - Capacity holds the number of scenes that may be added.
                 *
                 *   - 0xFE - At least 1 further scene may be added (exact number is unknown).
                 *
                 *   - null - It is unknown if any further scenes may be added.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14.2
                 */
                capacity: import("../tlv/TlvObject.js").FieldType<number | null>;
                /**
                 * This field shall be set to the corresponding field of the received GetSceneMembership command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14.3
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * If the status is not SUCCESS then this field shall be omitted, else this field shall contain the identifiers
                 * of all the scenes in the Scene Table with the corresponding Group ID.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14.4
                 */
                sceneList: import("../tlv/TlvObject.js").OptionalFieldType<number[]>;
            }>, any>;
            /**
             * This command allows a client to efficiently copy scenes from one group/scene identifier pair to another
             * group/scene identifier pair.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15
             */
            readonly copyScene: OptionalCommand<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall contain the information of how the scene copy is to proceed.
                 *
                 * The CopyAllScenes bit of the Mode indicates whether all scenes are to be copied. If this value is set to 1,
                 * all scenes are to be copied and the SceneIdentifierFrom and SceneIdentifierTo fields shall be ignored.
                 * Otherwise this bit is set to 0.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.1
                 */
                mode: import("../tlv/TlvObject.js").FieldType<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                    /**
                     * Copy all scenes in the scene table
                     */
                    copyAllScenes: BitFlag;
                }>>;
                /**
                 * This field shall indicate the identifier of the group from which the scene is to be copied. Together with the
                 * SceneIdentifierFrom field, this field uniquely identifies the scene to copy from the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.2
                 */
                groupIdentifierFrom: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the identifier of the scene from which the scene is to be copied. Together with the
                 * GroupIdentifierFrom field, this field uniquely identifies the scene to copy from the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.3
                 */
                sceneIdentifierFrom: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate the identifier of the group to which the scene is to be copied. Together with the
                 * SceneIdentifierTo field, this field uniquely identifies the scene to copy to the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.4
                 */
                groupIdentifierTo: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the identifier of the scene to which the scene is to be copied. Together with the
                 * GroupIdentifierTo field, this field uniquely identifies the scene to copy to the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.5
                 */
                sceneIdentifierTo: import("../tlv/TlvObject.js").FieldType<number>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for the CopyScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.16.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall be set to the same values as in the corresponding fields of the received CopyScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.16.2
                 */
                groupIdentifierFrom: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall be set to the same values as in the corresponding fields of the received CopyScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.16.3
                 */
                sceneIdentifierFrom: import("../tlv/TlvObject.js").FieldType<number>;
            }>, any>;
        };
        /**
         * This metadata controls which ScenesManagementCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [];
    };
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster<{
        readonly id: 98;
        readonly name: "ScenesManagement";
        readonly revision: 1;
        readonly features: {
            /**
             * This feature indicates the ability to store a name for a scene when a scene is added.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.4.1
             */
            readonly sceneNames: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the number of entries in the Scene Table on this endpoint. This is the total across all
             * fabrics; note that a single fabric cannot use all those entries (see Handling of fabric-scoping). The
             * minimum size of this table, (i.e., the minimum number of scenes to support across all fabrics per
             * endpoint) shall be 16, unless a device type in which this cluster is used, defines a larger value in the
             * device type definition.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.8.1
             */
            readonly sceneTableSize: FixedAttribute<number, any>;
            /**
             * Indicates a list of fabric scoped information about scenes on this endpoint.
             *
             * The number of list entries for this attribute shall NOT exceed the number of supported fabrics by the
             * device.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.8.2
             */
            readonly fabricSceneInfo: FabricScopedAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the number of scenes currently used in the server’s Scene Table on the endpoint
                 * where the Scenes Management cluster appears.
                 *
                 * This only includes the count for the associated fabric.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.1
                 */
                sceneCount: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate the scene identifier of the scene last invoked on the associated fabric. If no
                 * scene has been invoked, the value of this field shall be 0xFF, the undefined scene identifier.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.2
                 */
                currentScene: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate the group identifier of the scene last invoked on the associated fabric, or 0 if
                 * the scene last invoked is not associated with a group.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.3
                 */
                currentGroup: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate whether the state of the server corresponds to that associated with the
                 * CurrentScene and CurrentGroup fields of the SceneInfoStruct they belong to. TRUE indicates that these fields
                 * are valid, FALSE indicates that they are not valid.
                 *
                 * This field shall be set to False for all other fabrics when an attribute with the Scenes ("S") designation in
                 * the Quality column of another cluster present on the same endpoint is modified or when the current scene is
                 * modified by a fabric through the RecallScene or StoreScene commands, regardless of the fabric-scoped access
                 * quality of the command.
                 *
                 * In the event where the SceneValid field is set to False for a fabric, the CurrentScene and CurrentGroup
                 * fields shall be the last invoked scene and group for that fabric. In the event where no scene was previously
                 * invoked for that fabric, the CurrentScene and CurrentGroup fields shall be their default values.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.4
                 */
                sceneValid: import("../tlv/TlvObject.js").FieldType<boolean>;
                /**
                 * This field shall indicate the remaining capacity of the Scene Table on this endpoint for the accessing
                 * fabric. Note that this value may change between reads, even if no entries are added or deleted on the
                 * accessing fabric, due to other clients associated with other fabrics adding or deleting entries that impact
                 * the resource usage on the device.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.2.5
                 */
                remainingCapacity: import("../tlv/TlvObject.js").FieldType<number>;
                fabricIndex: import("../tlv/TlvObject.js").FieldType<import("../datatype/FabricIndex.js").FabricIndex>;
            }>[], any>;
        };
        readonly commands: {
            /**
             * It is not mandatory for an extension field set to be included in the command for every cluster on that
             * endpoint that has a defined extension field set. Extension field sets may be omitted, including the case
             * of no extension field sets at all.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2
             */
            readonly addScene: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the scene identifier in the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.2
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate the transition time of the scene, measured in milliseconds.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.3
                 */
                transitionTime: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate the name of the scene.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.4
                 */
                sceneName: import("../tlv/TlvObject.js").FieldType<string>;
                /**
                 * This field shall contains the list of extension fields.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.2.5
                 */
                extensionFieldSetStructs: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the cluster-id of the cluster whose attributes are in the AttributeValueList field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.1
                     */
                    clusterId: import("../tlv/TlvObject.js").FieldType<import("../datatype/ClusterId.js").ClusterId>;
                    /**
                     * This field shall indicate a set of attributes and their values which are stored as part of a scene.
                     *
                     * Attributes which do not have the Scenes ("S") designation in the Quality column of their cluster
                     * specification shall NOT be used in the AttributeValueList field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.2
                     */
                    attributeValueList: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be present for all instances in a given ExtensionFieldSetStruct.
                         *
                         * Which Value* field is used shall be determined based on the data type of the attribute indicated by
                         * AttributeID, as described in the Value* Fields subsection.
                         *
                         * The AttributeID field shall NOT refer to an attribute without the Scenes ("S") designation in the Quality
                         * column of the cluster specification.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.3.1
                         */
                        attributeId: import("../tlv/TlvObject.js").FieldType<import("../datatype/AttributeId.js").AttributeId>;
                        valueUnsigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueSigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueUnsigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueSigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueUnsigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueSigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueUnsigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        valueSigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    }>[]>;
                }>[]>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for AddScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.3.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * The GroupID field shall be set to the corresponding field of the received AddScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.3.2
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * The SceneID field shall be set to the corresponding field of the received AddScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.3.3
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
            }>, any>;
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.4
             */
            readonly viewScene: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.4.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the scene identifier in the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.4.2
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for ViewScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * The GroupID field shall be set to the corresponding field of the received ViewScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.2
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * The SceneID field shall be set to the corresponding field of the received ViewScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.3
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall be set to the corresponding field in the Scene Table entry.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.4
                 */
                transitionTime: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                /**
                 * This field shall be set to the corresponding field in the Scene Table entry.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.5
                 */
                sceneName: import("../tlv/TlvObject.js").OptionalFieldType<string>;
                /**
                 * This field shall be set to the corresponding field in the Scene Table entry.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.5.6
                 */
                extensionFieldSetStructs: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the cluster-id of the cluster whose attributes are in the AttributeValueList field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.1
                     */
                    clusterId: import("../tlv/TlvObject.js").FieldType<import("../datatype/ClusterId.js").ClusterId>;
                    /**
                     * This field shall indicate a set of attributes and their values which are stored as part of a scene.
                     *
                     * Attributes which do not have the Scenes ("S") designation in the Quality column of their cluster
                     * specification shall NOT be used in the AttributeValueList field.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.4.2
                     */
                    attributeValueList: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                        /**
                         * This field shall be present for all instances in a given ExtensionFieldSetStruct.
                         *
                         * Which Value* field is used shall be determined based on the data type of the attribute indicated by
                         * AttributeID, as described in the Value* Fields subsection.
                         *
                         * The AttributeID field shall NOT refer to an attribute without the Scenes ("S") designation in the Quality
                         * column of the cluster specification.
                         *
                         * @see {@link MatterSpecification.v142.Cluster} § 1.4.7.3.1
                         */
                        attributeId: import("../tlv/TlvObject.js").FieldType<import("../datatype/AttributeId.js").AttributeId>;
                        valueUnsigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueSigned8: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueUnsigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueSigned16: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueUnsigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueSigned32: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                        valueUnsigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                        valueSigned64: import("../tlv/TlvObject.js").OptionalFieldType<number | bigint>;
                    }>[]>;
                }>[]>;
            }>, any>;
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.6
             */
            readonly removeScene: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.6.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the scene identifier in the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.6.2
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for RemoveScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.7.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * The GroupID field shall be set to the corresponding field of the received RemoveScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.7.2
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * The SceneID field shall be set to the corresponding field of the received RemoveScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.7.3
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
            }>, any>;
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.8
             */
            readonly removeAllScenes: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.8.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for RemoveAllScenes command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.9.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * The GroupID field shall be set to the corresponding field of the received RemoveAllScenes command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.9.2
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
            }>, any>;
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.10
             */
            readonly storeScene: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.10.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the scene identifier in the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.10.2
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for StoreScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.11.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * The GroupID field shall be set to the corresponding field of the received StoreScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.11.2
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * The SceneID field shall be set to the corresponding field of the received StoreScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.11.3
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
            }>, any>;
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.12
             */
            readonly recallScene: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.12.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the scene identifier in the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.12.2
                 */
                sceneId: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate the transition time of the scene, measured in milliseconds.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.12.3
                 */
                transitionTime: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
            }>, void, any>;
            /**
             * This command can be used to get the used scene identifiers within a certain group, for the endpoint that
             * implements this cluster.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.13
             */
            readonly getSceneMembership: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the group identifier in the Group Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.13.1
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for GetSceneMembership command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall contain the remaining capacity of the Scene Table of the server (for all groups for the
                 * accessing fabric). The following values apply:
                 *
                 *   - 0 - No further scenes may be added.
                 *
                 *   - 0 < Capacity < 0xFE - Capacity holds the number of scenes that may be added.
                 *
                 *   - 0xFE - At least 1 further scene may be added (exact number is unknown).
                 *
                 *   - null - It is unknown if any further scenes may be added.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14.2
                 */
                capacity: import("../tlv/TlvObject.js").FieldType<number | null>;
                /**
                 * This field shall be set to the corresponding field of the received GetSceneMembership command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14.3
                 */
                groupId: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * If the status is not SUCCESS then this field shall be omitted, else this field shall contain the identifiers
                 * of all the scenes in the Scene Table with the corresponding Group ID.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.14.4
                 */
                sceneList: import("../tlv/TlvObject.js").OptionalFieldType<number[]>;
            }>, any>;
            /**
             * This command allows a client to efficiently copy scenes from one group/scene identifier pair to another
             * group/scene identifier pair.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15
             */
            readonly copyScene: OptionalCommand<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall contain the information of how the scene copy is to proceed.
                 *
                 * The CopyAllScenes bit of the Mode indicates whether all scenes are to be copied. If this value is set to 1,
                 * all scenes are to be copied and the SceneIdentifierFrom and SceneIdentifierTo fields shall be ignored.
                 * Otherwise this bit is set to 0.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.1
                 */
                mode: import("../tlv/TlvObject.js").FieldType<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                    /**
                     * Copy all scenes in the scene table
                     */
                    copyAllScenes: BitFlag;
                }>>;
                /**
                 * This field shall indicate the identifier of the group from which the scene is to be copied. Together with the
                 * SceneIdentifierFrom field, this field uniquely identifies the scene to copy from the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.2
                 */
                groupIdentifierFrom: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the identifier of the scene from which the scene is to be copied. Together with the
                 * GroupIdentifierFrom field, this field uniquely identifies the scene to copy from the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.3
                 */
                sceneIdentifierFrom: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate the identifier of the group to which the scene is to be copied. Together with the
                 * SceneIdentifierTo field, this field uniquely identifies the scene to copy to the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.4
                 */
                groupIdentifierTo: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall indicate the identifier of the scene to which the scene is to be copied. Together with the
                 * GroupIdentifierTo field, this field uniquely identifies the scene to copy to the Scene Table.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.15.5
                 */
                sceneIdentifierTo: import("../tlv/TlvObject.js").FieldType<number>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set according to the Effect on Receipt section for the CopyScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.16.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall be set to the same values as in the corresponding fields of the received CopyScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.16.2
                 */
                groupIdentifierFrom: import("../tlv/TlvObject.js").FieldType<import("../datatype/GroupId.js").GroupId>;
                /**
                 * This field shall be set to the same values as in the corresponding fields of the received CopyScene command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.4.9.16.3
                 */
                sceneIdentifierFrom: import("../tlv/TlvObject.js").FieldType<number>;
            }>, any>;
        };
        /**
         * This metadata controls which ScenesManagementCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [];
    }, []>;
    /**
     * The Scenes Management cluster provides attributes and commands for setting up and recalling scenes. Each scene
     * corresponds to a set of stored values of specified attributes for one or more clusters on the same end point as
     * the Scenes Management cluster.
     *
     * In most cases scenes are associated with a particular group identifier. Scenes may also exist without a group, in
     * which case the value 0 replaces the group identifier. Note that extra care is required in these cases to avoid a
     * scene identifier collision, and that commands related to scenes without a group may only be unicast, i.e., they
     * shall NOT be multicast or broadcast.
     *
     * ScenesManagementCluster supports optional features that you can enable with the ScenesManagementCluster.with()
     * factory method.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 1.4
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    const Complete: Cluster;
}
export type ScenesManagementCluster = ScenesManagement.Cluster;
export declare const ScenesManagementCluster: ScenesManagement.Cluster;
//# sourceMappingURL=scenes-management.d.ts.map