/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
/*** THIS FILE IS GENERATED, DO NOT EDIT ***/
import { MutableCluster } from "../cluster/mutation/MutableCluster.js";
import { Attribute, OptionalAttribute, Command } from "../cluster/Cluster.js";
import { BitFlag } from "../schema/BitmapSchema.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 ApplicationLauncher {
    /**
     * These are optional features supported by ApplicationLauncherCluster.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.4
     */
    enum Feature {
        /**
         * ApplicationPlatform (AP)
         *
         * Support for attributes and commands required for endpoint to support launching any application within the
         * supported application catalogs
         */
        ApplicationPlatform = "ApplicationPlatform"
    }
    /**
     * This indicates a global identifier for an Application given a catalog.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2
     */
    const TlvApplication: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
         * registry shall use value 0x0000.
         *
         * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
         * assign an ApplicationID to each Content App.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
         */
        catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
         * X". This field shall be unique within a catalog.
         *
         * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
         */
        applicationId: import("../tlv/TlvObject.js").FieldType<string>;
    }>;
    /**
     * This indicates a global identifier for an Application given a catalog.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2
     */
    interface Application extends TypeFromSchema<typeof TlvApplication> {
    }
    /**
     * This specifies an app along with its corresponding endpoint.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.3
     */
    const TlvApplicationEp: import("../tlv/TlvObject.js").ObjectSchema<{
        application: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
             * registry shall use value 0x0000.
             *
             * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
             * assign an ApplicationID to each Content App.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
             */
            catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
            /**
             * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
             * X". This field shall be unique within a catalog.
             *
             * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
             */
            applicationId: import("../tlv/TlvObject.js").FieldType<string>;
        }>>;
        endpoint: import("../tlv/TlvObject.js").OptionalFieldType<import("../datatype/EndpointNumber.js").EndpointNumber>;
    }>;
    /**
     * This specifies an app along with its corresponding endpoint.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.3
     */
    interface ApplicationEp extends TypeFromSchema<typeof TlvApplicationEp> {
    }
    /**
     * Input to the ApplicationLauncher launchApp command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.1
     */
    const TlvLaunchAppRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall specify the Application to launch.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.1.1
         */
        application: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
             * registry shall use value 0x0000.
             *
             * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
             * assign an ApplicationID to each Content App.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
             */
            catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
            /**
             * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
             * X". This field shall be unique within a catalog.
             *
             * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
             */
            applicationId: import("../tlv/TlvObject.js").FieldType<string>;
        }>>;
        /**
         * This field shall specify optional app-specific data to be sent to the app.
         *
         * > [!NOTE]
         *
         * > This format and meaning of this value is proprietary and outside the specification. It provides a
         *   transition path for device makers that use other protocols (like DIAL) which allow for proprietary data.
         *   Apps that are not yet Matter aware can be launched via Matter, while retaining the existing ability to
         *   launch with proprietary data.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.1.2
         */
        data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
    }>;
    /**
     * Input to the ApplicationLauncher launchApp command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.1
     */
    interface LaunchAppRequest extends TypeFromSchema<typeof TlvLaunchAppRequest> {
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.1
     */
    enum Status {
        /**
         * Command succeeded
         */
        Success = 0,
        /**
         * Requested app is not available
         */
        AppNotAvailable = 1,
        /**
         * Video platform unable to honor command
         */
        SystemBusy = 2,
        /**
         * User approval for app download is pending
         */
        PendingUserApproval = 3,
        /**
         * Downloading the requested app
         */
        Downloading = 4,
        /**
         * Installing the requested app
         */
        Installing = 5
    }
    /**
     * Thrown for cluster status code {@link Status.AppNotAvailable}.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.1
     */
    class AppNotAvailableError extends StatusResponseError {
        constructor(message?: string, code?: GlobalStatus, clusterCode?: Status);
    }
    /**
     * Thrown for cluster status code {@link Status.SystemBusy}.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.1
     */
    class SystemBusyError extends StatusResponseError {
        constructor(message?: string, code?: GlobalStatus, clusterCode?: Status);
    }
    /**
     * Thrown for cluster status code {@link Status.PendingUserApproval}.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.1
     */
    class PendingUserApprovalError extends StatusResponseError {
        constructor(message?: string, code?: GlobalStatus, clusterCode?: Status);
    }
    /**
     * Thrown for cluster status code {@link Status.Downloading}.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.1
     */
    class DownloadingError extends StatusResponseError {
        constructor(message?: string, code?: GlobalStatus, clusterCode?: Status);
    }
    /**
     * Thrown for cluster status code {@link Status.Installing}.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.1
     */
    class InstallingError extends StatusResponseError {
        constructor(message?: string, code?: GlobalStatus, clusterCode?: Status);
    }
    /**
     * This command shall be generated in response to LaunchApp/StopApp/HideApp commands.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4
     */
    const TlvLauncherResponse: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the status of the command which resulted in this response.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.1
         */
        status: import("../tlv/TlvObject.js").FieldType<Status>;
        /**
         * This field shall specify Optional app-specific data.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.2
         */
        data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
    }>;
    /**
     * This command shall be generated in response to LaunchApp/StopApp/HideApp commands.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4
     */
    interface LauncherResponse extends TypeFromSchema<typeof TlvLauncherResponse> {
    }
    /**
     * Input to the ApplicationLauncher stopApp command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.2
     */
    const TlvStopAppRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall specify the Application to stop.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.2.1
         */
        application: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
             * registry shall use value 0x0000.
             *
             * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
             * assign an ApplicationID to each Content App.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
             */
            catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
            /**
             * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
             * X". This field shall be unique within a catalog.
             *
             * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
             */
            applicationId: import("../tlv/TlvObject.js").FieldType<string>;
        }>>;
    }>;
    /**
     * Input to the ApplicationLauncher stopApp command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.2
     */
    interface StopAppRequest extends TypeFromSchema<typeof TlvStopAppRequest> {
    }
    /**
     * Input to the ApplicationLauncher hideApp command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.3
     */
    const TlvHideAppRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall specify the Application to hide.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.3.1
         */
        application: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            /**
             * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
             * registry shall use value 0x0000.
             *
             * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
             * assign an ApplicationID to each Content App.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
             */
            catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
            /**
             * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
             * X". This field shall be unique within a catalog.
             *
             * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
             */
            applicationId: import("../tlv/TlvObject.js").FieldType<string>;
        }>>;
    }>;
    /**
     * Input to the ApplicationLauncher hideApp command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.3
     */
    interface HideAppRequest extends TypeFromSchema<typeof TlvHideAppRequest> {
    }
    /**
     * A ApplicationLauncherCluster supports these elements if it supports feature ApplicationPlatform.
     */
    const ApplicationPlatformComponent: {
        readonly attributes: {
            /**
             * This attribute shall specify the list of supported application catalogs, where each entry in the list is
             * the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL registry (see [DIAL
             * Registry]) shall use value 0x0000.
             *
             * It is expected that Content App Platform providers will have their own catalog vendor ID (set to their
             * own Vendor ID) and will assign an ApplicationID to each Content App.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.6.1
             */
            readonly catalogList: Attribute<number[], any>;
        };
    };
    /**
     * These elements and properties are present in all ApplicationLauncher clusters.
     */
    const Base: {
        readonly id: 1292;
        readonly name: "ApplicationLauncher";
        readonly revision: 2;
        readonly features: {
            /**
             * Support for attributes and commands required for endpoint to support launching any application within the
             * supported application catalogs
             */
            readonly applicationPlatform: BitFlag;
        };
        readonly attributes: {
            /**
             * This attribute shall specify the current in-focus application, identified using an Application ID,
             * catalog vendor ID and the corresponding endpoint number when the application is represented by a Content
             * App endpoint. A null shall be used to indicate there is no current in-focus application.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.6.2
             */
            readonly currentApp: OptionalAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                application: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
                     * registry shall use value 0x0000.
                     *
                     * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
                     * assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
                     */
                    catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
                     * X". This field shall be unique within a catalog.
                     *
                     * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
                     */
                    applicationId: import("../tlv/TlvObject.js").FieldType<string>;
                }>>;
                endpoint: import("../tlv/TlvObject.js").OptionalFieldType<import("../datatype/EndpointNumber.js").EndpointNumber>;
            }> | null, any>;
        };
        readonly commands: {
            /**
             * Upon receipt of this command, the server shall launch the application with optional data. The application
             * shall be either
             *
             *   • the specified application, if the Application Platform feature is supported;
             *
             *   • otherwise the application corresponding to the endpoint.
             *
             * The endpoint shall launch and bring to foreground the requisite application if the application is not
             * already launched and in foreground. The Status attribute shall be updated to ActiveVisibleFocus on the
             * Application Basic cluster of the Endpoint corresponding to the launched application. The Status attribute
             * shall be updated on any other application whose Status may have changed as a result of this command. The
             * CurrentApp attribute, if supported, shall be updated to reflect the new application in the foreground.
             *
             * This command returns a Launcher Response.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.1
             */
            readonly launchApp: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall specify the Application to launch.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.1.1
                 */
                application: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
                     * registry shall use value 0x0000.
                     *
                     * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
                     * assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
                     */
                    catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
                     * X". This field shall be unique within a catalog.
                     *
                     * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
                     */
                    applicationId: import("../tlv/TlvObject.js").FieldType<string>;
                }>>;
                /**
                 * This field shall specify optional app-specific data to be sent to the app.
                 *
                 * > [!NOTE]
                 *
                 * > This format and meaning of this value is proprietary and outside the specification. It provides a
                 *   transition path for device makers that use other protocols (like DIAL) which allow for proprietary data.
                 *   Apps that are not yet Matter aware can be launched via Matter, while retaining the existing ability to
                 *   launch with proprietary data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.1.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the status of the command which resulted in this response.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall specify Optional app-specific data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
            }>, any>;
            /**
             * Upon receipt of this command, the server shall stop the application if it is running. The application
             * shall be either
             *
             *   • the specified application, if the Application Platform feature is supported;
             *
             *   • otherwise the application corresponding to the endpoint.
             *
             * The Status attribute shall be updated to Stopped on the Application Basic cluster of the Endpoint
             * corresponding to the stopped application. The Status attribute shall be updated on any other application
             * whose Status may have changed as a result of this command.
             *
             * This command returns a Launcher Response.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.2
             */
            readonly stopApp: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall specify the Application to stop.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.2.1
                 */
                application: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
                     * registry shall use value 0x0000.
                     *
                     * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
                     * assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
                     */
                    catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
                     * X". This field shall be unique within a catalog.
                     *
                     * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
                     */
                    applicationId: import("../tlv/TlvObject.js").FieldType<string>;
                }>>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the status of the command which resulted in this response.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall specify Optional app-specific data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
            }>, any>;
            /**
             * Upon receipt of this command, the server shall hide the application. The application shall be either
             *
             *   • the specified application, if the Application Platform feature is supported;
             *
             *   • otherwise the application corresponding to the endpoint.
             *
             * The endpoint may decide to stop the application based on manufacturer specific behavior or resource
             * constraints if any. The Status attribute shall be updated to ActiveHidden or Stopped, depending on the
             * action taken, on the Application Basic cluster of the Endpoint corresponding to the application on which
             * the action was taken. The Status attribute shall be updated on any other application whose Status may
             * have changed as a result of this command.
             *
             * This command returns a Launcher Response.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.3
             */
            readonly hideApp: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall specify the Application to hide.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.3.1
                 */
                application: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
                     * registry shall use value 0x0000.
                     *
                     * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
                     * assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
                     */
                    catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
                     * X". This field shall be unique within a catalog.
                     *
                     * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
                     */
                    applicationId: import("../tlv/TlvObject.js").FieldType<string>;
                }>>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the status of the command which resulted in this response.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall specify Optional app-specific data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
            }>, any>;
        };
        /**
         * This metadata controls which ApplicationLauncherCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly applicationPlatform: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * This attribute shall specify the list of supported application catalogs, where each entry in the list is
                     * the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL registry (see [DIAL
                     * Registry]) shall use value 0x0000.
                     *
                     * It is expected that Content App Platform providers will have their own catalog vendor ID (set to their
                     * own Vendor ID) and will assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.6.1
                     */
                    readonly catalogList: Attribute<number[], any>;
                };
            };
        }];
    };
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster<{
        readonly id: 1292;
        readonly name: "ApplicationLauncher";
        readonly revision: 2;
        readonly features: {
            /**
             * Support for attributes and commands required for endpoint to support launching any application within the
             * supported application catalogs
             */
            readonly applicationPlatform: BitFlag;
        };
        readonly attributes: {
            /**
             * This attribute shall specify the current in-focus application, identified using an Application ID,
             * catalog vendor ID and the corresponding endpoint number when the application is represented by a Content
             * App endpoint. A null shall be used to indicate there is no current in-focus application.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.6.2
             */
            readonly currentApp: OptionalAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                application: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
                     * registry shall use value 0x0000.
                     *
                     * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
                     * assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
                     */
                    catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
                     * X". This field shall be unique within a catalog.
                     *
                     * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
                     */
                    applicationId: import("../tlv/TlvObject.js").FieldType<string>;
                }>>;
                endpoint: import("../tlv/TlvObject.js").OptionalFieldType<import("../datatype/EndpointNumber.js").EndpointNumber>;
            }> | null, any>;
        };
        readonly commands: {
            /**
             * Upon receipt of this command, the server shall launch the application with optional data. The application
             * shall be either
             *
             *   • the specified application, if the Application Platform feature is supported;
             *
             *   • otherwise the application corresponding to the endpoint.
             *
             * The endpoint shall launch and bring to foreground the requisite application if the application is not
             * already launched and in foreground. The Status attribute shall be updated to ActiveVisibleFocus on the
             * Application Basic cluster of the Endpoint corresponding to the launched application. The Status attribute
             * shall be updated on any other application whose Status may have changed as a result of this command. The
             * CurrentApp attribute, if supported, shall be updated to reflect the new application in the foreground.
             *
             * This command returns a Launcher Response.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.1
             */
            readonly launchApp: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall specify the Application to launch.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.1.1
                 */
                application: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
                     * registry shall use value 0x0000.
                     *
                     * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
                     * assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
                     */
                    catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
                     * X". This field shall be unique within a catalog.
                     *
                     * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
                     */
                    applicationId: import("../tlv/TlvObject.js").FieldType<string>;
                }>>;
                /**
                 * This field shall specify optional app-specific data to be sent to the app.
                 *
                 * > [!NOTE]
                 *
                 * > This format and meaning of this value is proprietary and outside the specification. It provides a
                 *   transition path for device makers that use other protocols (like DIAL) which allow for proprietary data.
                 *   Apps that are not yet Matter aware can be launched via Matter, while retaining the existing ability to
                 *   launch with proprietary data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.1.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the status of the command which resulted in this response.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall specify Optional app-specific data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
            }>, any>;
            /**
             * Upon receipt of this command, the server shall stop the application if it is running. The application
             * shall be either
             *
             *   • the specified application, if the Application Platform feature is supported;
             *
             *   • otherwise the application corresponding to the endpoint.
             *
             * The Status attribute shall be updated to Stopped on the Application Basic cluster of the Endpoint
             * corresponding to the stopped application. The Status attribute shall be updated on any other application
             * whose Status may have changed as a result of this command.
             *
             * This command returns a Launcher Response.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.2
             */
            readonly stopApp: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall specify the Application to stop.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.2.1
                 */
                application: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
                     * registry shall use value 0x0000.
                     *
                     * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
                     * assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
                     */
                    catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
                     * X". This field shall be unique within a catalog.
                     *
                     * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
                     */
                    applicationId: import("../tlv/TlvObject.js").FieldType<string>;
                }>>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the status of the command which resulted in this response.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall specify Optional app-specific data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
            }>, any>;
            /**
             * Upon receipt of this command, the server shall hide the application. The application shall be either
             *
             *   • the specified application, if the Application Platform feature is supported;
             *
             *   • otherwise the application corresponding to the endpoint.
             *
             * The endpoint may decide to stop the application based on manufacturer specific behavior or resource
             * constraints if any. The Status attribute shall be updated to ActiveHidden or Stopped, depending on the
             * action taken, on the Application Basic cluster of the Endpoint corresponding to the application on which
             * the action was taken. The Status attribute shall be updated on any other application whose Status may
             * have changed as a result of this command.
             *
             * This command returns a Launcher Response.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.3
             */
            readonly hideApp: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall specify the Application to hide.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.3.1
                 */
                application: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
                     * registry shall use value 0x0000.
                     *
                     * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
                     * assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
                     */
                    catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
                     * X". This field shall be unique within a catalog.
                     *
                     * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
                     */
                    applicationId: import("../tlv/TlvObject.js").FieldType<string>;
                }>>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the status of the command which resulted in this response.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall specify Optional app-specific data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
            }>, any>;
        };
        /**
         * This metadata controls which ApplicationLauncherCluster elements matter.js activates for specific feature
         * combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly applicationPlatform: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * This attribute shall specify the list of supported application catalogs, where each entry in the list is
                     * the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL registry (see [DIAL
                     * Registry]) shall use value 0x0000.
                     *
                     * It is expected that Content App Platform providers will have their own catalog vendor ID (set to their
                     * own Vendor ID) and will assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.6.1
                     */
                    readonly catalogList: Attribute<number[], any>;
                };
            };
        }];
    }, []>;
    /**
     * This cluster provides an interface for launching applications on a Video Player device such as a TV.
     *
     * This cluster is supported on endpoints that can launch Applications, such as a Casting Video Player device with a
     * Content App Platform. It supports identifying an Application by global identifier from a given catalog, and
     * launching it. It also supports tracking the currently in-focus Application.
     *
     * Depending on the support for the Application Platform feature, the cluster can either support launching the
     * application corresponding to the endpoint on which the cluster is supported (AP feature not supported) or it can
     * support launching any application (AP feature supported).
     *
     * ApplicationLauncherCluster supports optional features that you can enable with the
     * ApplicationLauncherCluster.with() factory method.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    /**
     * @see {@link Complete}
     */
    const CompleteInstance: MutableCluster<{
        readonly id: import("#general").Branded<1292, "ClusterId">;
        readonly name: "ApplicationLauncher";
        readonly revision: 2;
        readonly features: {
            /**
             * Support for attributes and commands required for endpoint to support launching any application within the
             * supported application catalogs
             */
            readonly applicationPlatform: BitFlag;
        };
        readonly attributes: {
            readonly catalogList: Attribute<number[], any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    applicationPlatform: boolean;
                }];
            };
            readonly currentApp: OptionalAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                application: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
                     * registry shall use value 0x0000.
                     *
                     * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
                     * assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
                     */
                    catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
                     * X". This field shall be unique within a catalog.
                     *
                     * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
                     */
                    applicationId: import("../tlv/TlvObject.js").FieldType<string>;
                }>>;
                endpoint: import("../tlv/TlvObject.js").OptionalFieldType<import("../datatype/EndpointNumber.js").EndpointNumber>;
            }> | null, any>;
            readonly clusterRevision: Attribute<number, never>;
            readonly featureMap: Attribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Support for attributes and commands required for endpoint to support launching any application within the
                 * supported application catalogs
                 */
                readonly applicationPlatform: BitFlag;
            }>, never>;
            readonly attributeList: Attribute<import("../index.js").AttributeId[], never>;
            readonly acceptedCommandList: Attribute<import("../index.js").CommandId[], never>;
            readonly generatedCommandList: Attribute<import("../index.js").CommandId[], never>;
        };
        readonly commands: {
            /**
             * Upon receipt of this command, the server shall launch the application with optional data. The application
             * shall be either
             *
             *   • the specified application, if the Application Platform feature is supported;
             *
             *   • otherwise the application corresponding to the endpoint.
             *
             * The endpoint shall launch and bring to foreground the requisite application if the application is not
             * already launched and in foreground. The Status attribute shall be updated to ActiveVisibleFocus on the
             * Application Basic cluster of the Endpoint corresponding to the launched application. The Status attribute
             * shall be updated on any other application whose Status may have changed as a result of this command. The
             * CurrentApp attribute, if supported, shall be updated to reflect the new application in the foreground.
             *
             * This command returns a Launcher Response.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.1
             */
            readonly launchApp: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall specify the Application to launch.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.1.1
                 */
                application: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
                     * registry shall use value 0x0000.
                     *
                     * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
                     * assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
                     */
                    catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
                     * X". This field shall be unique within a catalog.
                     *
                     * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
                     */
                    applicationId: import("../tlv/TlvObject.js").FieldType<string>;
                }>>;
                /**
                 * This field shall specify optional app-specific data to be sent to the app.
                 *
                 * > [!NOTE]
                 *
                 * > This format and meaning of this value is proprietary and outside the specification. It provides a
                 *   transition path for device makers that use other protocols (like DIAL) which allow for proprietary data.
                 *   Apps that are not yet Matter aware can be launched via Matter, while retaining the existing ability to
                 *   launch with proprietary data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.1.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the status of the command which resulted in this response.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall specify Optional app-specific data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
            }>, any>;
            /**
             * Upon receipt of this command, the server shall stop the application if it is running. The application
             * shall be either
             *
             *   • the specified application, if the Application Platform feature is supported;
             *
             *   • otherwise the application corresponding to the endpoint.
             *
             * The Status attribute shall be updated to Stopped on the Application Basic cluster of the Endpoint
             * corresponding to the stopped application. The Status attribute shall be updated on any other application
             * whose Status may have changed as a result of this command.
             *
             * This command returns a Launcher Response.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.2
             */
            readonly stopApp: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall specify the Application to stop.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.2.1
                 */
                application: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
                     * registry shall use value 0x0000.
                     *
                     * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
                     * assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
                     */
                    catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
                     * X". This field shall be unique within a catalog.
                     *
                     * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
                     */
                    applicationId: import("../tlv/TlvObject.js").FieldType<string>;
                }>>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the status of the command which resulted in this response.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall specify Optional app-specific data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
            }>, any>;
            /**
             * Upon receipt of this command, the server shall hide the application. The application shall be either
             *
             *   • the specified application, if the Application Platform feature is supported;
             *
             *   • otherwise the application corresponding to the endpoint.
             *
             * The endpoint may decide to stop the application based on manufacturer specific behavior or resource
             * constraints if any. The Status attribute shall be updated to ActiveHidden or Stopped, depending on the
             * action taken, on the Application Basic cluster of the Endpoint corresponding to the application on which
             * the action was taken. The Status attribute shall be updated on any other application whose Status may
             * have changed as a result of this command.
             *
             * This command returns a Launcher Response.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.3
             */
            readonly hideApp: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall specify the Application to hide.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.3.1
                 */
                application: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    /**
                     * This field shall indicate the Connectivity Standards Alliance-issued vendor ID for the catalog. The DIAL
                     * registry shall use value 0x0000.
                     *
                     * Content App Platform providers will have their own catalog vendor ID (set to their own Vendor ID) and will
                     * assign an ApplicationID to each Content App.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.1
                     */
                    catalogVendorId: import("../tlv/TlvObject.js").FieldType<number>;
                    /**
                     * This field shall indicate the application identifier, expressed as a string, such as "PruneVideo" or "Company
                     * X". This field shall be unique within a catalog.
                     *
                     * For the DIAL registry catalog, this value shall be the DIAL prefix (see [DIAL Registry]).
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 6.4.5.2.2
                     */
                    applicationId: import("../tlv/TlvObject.js").FieldType<string>;
                }>>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the status of the command which resulted in this response.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.1
                 */
                status: import("../tlv/TlvObject.js").FieldType<Status>;
                /**
                 * This field shall specify Optional app-specific data.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 6.4.7.4.2
                 */
                data: import("../tlv/TlvObject.js").OptionalFieldType<AllowSharedBufferSource>;
            }>, any>;
        };
    }, []>;
    /**
     * This cluster supports all ApplicationLauncher features. It may support illegal feature combinations.
     *
     * If you use this cluster you must manually specify which features are active and ensure the set of active features
     * is legal per the Matter specification.
     */
    interface Complete extends Identity<typeof CompleteInstance> {
    }
    const Complete: Complete;
}
export type ApplicationLauncherCluster = ApplicationLauncher.Cluster;
export declare const ApplicationLauncherCluster: ApplicationLauncher.Cluster;
//# sourceMappingURL=application-launcher.d.ts.map