/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
/*** THIS FILE IS GENERATED, DO NOT EDIT ***/
import { MutableCluster } from "../cluster/mutation/MutableCluster.js";
import { Attribute, OptionalAttribute, Command, OptionalEvent } from "../cluster/Cluster.js";
import { TypeFromSchema } from "../tlv/TlvSchema.js";
import { StatusResponseError } from "../common/StatusResponseError.js";
import { Status as GlobalStatus } from "../globals/Status.js";
import { Identity } from "#general";
export declare namespace TargetNavigator {
    /**
     * This indicates an object describing the navigable target.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.11.4.2
     */
    const TlvTargetInfo: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall contain an unique id within the TargetList.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.11.4.2.1
         */
        identifier: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * This field shall contain a name string for the TargetInfoStruct.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.11.4.2.2
         */
        name: import("../tlv/TlvObject.js").FieldType<string>;
    }>;
    /**
     * This indicates an object describing the navigable target.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.11.4.2
     */
    interface TargetInfo extends TypeFromSchema<typeof TlvTargetInfo> {
    }
    /**
     * Input to the TargetNavigator navigateTarget command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.11.6.1
     */
    const TlvNavigateTargetRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the Identifier for the target for UX navigation. The Target shall be an Identifier
         * value contained within one of the TargetInfoStruct objects in the TargetList attribute.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.11.6.1.1
         */
        target: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * This field shall indicate Optional app-specific data.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.11.6.1.2
         */
        data: import("../tlv/TlvObject.js").OptionalFieldType<string>;
    }>;
    /**
     * Input to the TargetNavigator navigateTarget command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.11.6.1
     */
    interface NavigateTargetRequest extends TypeFromSchema<typeof TlvNavigateTargetRequest> {
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 6.11.4.1
     */
    enum Status {
        /**
         * Command succeeded
         */
        Success = 0,
        /**
         * Requested target was not found in the TargetList
         */
        TargetNotFound = 1,
        /**
         * Target request is not allowed in current state.
         */
        NotAllowed = 2
    }
    /**
     * Thrown for cluster status code {@link Status.TargetNotFound}.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.11.4.1
     */
    class TargetNotFoundError extends StatusResponseError {
        constructor(message?: string, code?: GlobalStatus, clusterCode?: Status);
    }
    /**
     * Thrown for cluster status code {@link Status.NotAllowed}.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.11.4.1
     */
    class NotAllowedError extends StatusResponseError {
        constructor(message?: string, code?: GlobalStatus, clusterCode?: Status);
    }
    /**
     * This command shall be generated in response to NavigateTarget command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.11.6.2
     */
    const TlvNavigateTargetResponse: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the of the command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.11.6.2.1
         */
        status: import("../tlv/TlvObject.js").FieldType<Status>;
        /**
         * This field shall indicate Optional app-specific data.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.11.6.2.2
         */
        data: import("../tlv/TlvObject.js").OptionalFieldType<string>;
    }>;
    /**
     * This command shall be generated in response to NavigateTarget command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.11.6.2
     */
    interface NavigateTargetResponse extends TypeFromSchema<typeof TlvNavigateTargetResponse> {
    }
    /**
     * Body of the TargetNavigator targetUpdated event
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.11.7.1
     */
    const TlvTargetUpdatedEvent: import("../tlv/TlvObject.js").ObjectSchema<{
        targetList: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall contain an unique id within the TargetList.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.11.4.2.1
             */
            identifier: import("../tlv/TlvObject.js").FieldType<number>;
            /**
             * This field shall contain a name string for the TargetInfoStruct.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.11.4.2.2
             */
            name: import("../tlv/TlvObject.js").FieldType<string>;
        }>[]>;
        currentTarget: import("../tlv/TlvObject.js").OptionalFieldType<number>;
        data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
    }>;
    /**
     * Body of the TargetNavigator targetUpdated event
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.11.7.1
     */
    interface TargetUpdatedEvent extends TypeFromSchema<typeof TlvTargetUpdatedEvent> {
    }
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster<{
        readonly id: 1285;
        readonly name: "TargetNavigator";
        readonly revision: 2;
        readonly attributes: {
            /**
             * Indicates a list of targets that can be navigated to within the experience presented to the user by the
             * Endpoint (Video Player or Content App). The list shall NOT contain any entries with the same Identifier
             * in the TargetInfoStruct object.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.11.5.1
             */
            readonly targetList: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall contain an unique id within the TargetList.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.11.4.2.1
                 */
                identifier: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall contain a name string for the TargetInfoStruct.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.11.4.2.2
                 */
                name: import("../tlv/TlvObject.js").FieldType<string>;
            }>[], any>;
            /**
             * Indicates the Identifier for the target which is currently in foreground on the corresponding Endpoint
             * (Video Player or Content App), or 0xFF to indicate that no target is in the foreground.
             *
             * When not 0xFF, the CurrentTarget shall be an Identifier value contained within one of the
             * TargetInfoStruct objects in the TargetList attribute.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.11.5.2
             */
            readonly currentTarget: OptionalAttribute<number, any>;
        };
        readonly commands: {
            /**
             * Upon receipt, this shall navigation the UX to the target identified.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.11.6.1
             */
            readonly navigateTarget: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the Identifier for the target for UX navigation. The Target shall be an Identifier
                 * value contained within one of the TargetInfoStruct objects in the TargetList attribute.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.11.6.1.1
                 */
                target: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate Optional app-specific data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.11.6.1.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<string>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the of the command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.11.6.2.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall indicate Optional app-specific data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.11.6.2.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<string>;
            }>, any>;
        };
        readonly events: {
            /**
             * This event shall be generated when there is a change in either the active target or the list of available
             * targets or both.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.11.7.1
             */
            readonly targetUpdated: OptionalEvent<import("../tlv/TlvObject.js").TypeFromFields<{
                targetList: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall contain an unique id within the TargetList.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.11.4.2.1
                     */
                    identifier: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall contain a name string for the TargetInfoStruct.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.11.4.2.2
                     */
                    name: import("../tlv/TlvObject.js").FieldType<string>;
                }>[]>;
                currentTarget: import("../tlv/TlvObject.js").OptionalFieldType<number>;
                data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
            }>, any>;
        };
    }, []>;
    /**
     * This cluster provides an interface for UX navigation within a set of targets on a device or endpoint.
     *
     * This cluster would be supported on Video Player devices or devices with navigable user interfaces. This cluster
     * would also be supported on endpoints with navigable user interfaces such as aContentApp. It supports listing a
     * set of navigation targets, tracking and changing the current target.
     *
     * The cluster server for Target Navigator is implemented by endpoints on a device that support UX navigation.
     *
     * When this cluster is implemented for a Content App endpoint, the Video Player device containing the endpoint
     * shall launch the Content App when a client invokes the NavigateTarget command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.11
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    const Complete: Cluster;
}
export type TargetNavigatorCluster = TargetNavigator.Cluster;
export declare const TargetNavigatorCluster: TargetNavigator.Cluster;
//# sourceMappingURL=target-navigator.d.ts.map