/**
 * @license
 * Copyright 2022-2024 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { MutableEndpoint } from "../endpoint/type/MutableEndpoint.js";
import { Identity } from "#general";
/**
 * This defines conformance to the Video Remote Control device type.
 *
 * A Video Remote Control is a client that can control a Video Player, for example, a traditional universal remote
 * control.
 *
 * @see {@link MatterSpecification.v13.Device} § 10.7
 */
export interface VideoRemoteControlDevice extends Identity<typeof VideoRemoteControlDeviceDefinition> {
}
export declare namespace VideoRemoteControlRequirements {
    /**
     * The OnOff cluster is required by the Matter specification.
     *
     * We provide this alias to the default implementation {@link OnOffBehavior} for convenience.
     */
    const OnOffBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/on-off").OnOff.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").OnOffInterface>, import("../behaviors/index.js").OnOffInterface>;
    /**
     * The MediaPlayback cluster is required by the Matter specification.
     *
     * We provide this alias to the default implementation {@link MediaPlaybackBehavior} for convenience.
     */
    const MediaPlaybackBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/media-playback").MediaPlayback.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").MediaPlaybackInterface>, import("../behaviors/index.js").MediaPlaybackInterface>;
    /**
     * The KeypadInput cluster is required by the Matter specification.
     *
     * We provide this alias to the default implementation {@link KeypadInputBehavior} for convenience.
     */
    const KeypadInputBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/keypad-input").KeypadInput.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").KeypadInputInterface>, import("../behaviors/index.js").KeypadInputInterface>;
    /**
     * The LevelControl cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link LevelControlBehavior} for convenience.
     */
    const LevelControlBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/level-control").LevelControl.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").LevelControlInterface>, import("../behaviors/index.js").LevelControlInterface>;
    /**
     * The WakeOnLan cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link WakeOnLanBehavior} for convenience.
     */
    const WakeOnLanBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/wake-on-lan").WakeOnLan.Cluster, typeof import("../index.js").ClusterBehavior, {
        components: never[];
    }>;
    /**
     * The Channel cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link ChannelBehavior} for convenience.
     */
    const ChannelBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/channel").Channel.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").ChannelInterface>, import("../behaviors/index.js").ChannelInterface>;
    /**
     * The TargetNavigator cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link TargetNavigatorBehavior} for convenience.
     */
    const TargetNavigatorBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/target-navigator").TargetNavigator.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").TargetNavigatorInterface>, import("../behaviors/index.js").TargetNavigatorInterface>;
    /**
     * The MediaInput cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link MediaInputBehavior} for convenience.
     */
    const MediaInputBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/media-input").MediaInput.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").MediaInputInterface>, import("../behaviors/index.js").MediaInputInterface>;
    /**
     * The LowPower cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link LowPowerBehavior} for convenience.
     */
    const LowPowerBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/low-power").LowPower.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").LowPowerInterface>, import("../behaviors/index.js").LowPowerInterface>;
    /**
     * The ContentLauncher cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link ContentLauncherBehavior} for convenience.
     */
    const ContentLauncherBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/content-launcher").ContentLauncher.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").ContentLauncherInterface>, import("../behaviors/index.js").ContentLauncherInterface>;
    /**
     * The AudioOutput cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link AudioOutputBehavior} for convenience.
     */
    const AudioOutputBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/audio-output").AudioOutput.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").AudioOutputInterface>, import("../behaviors/index.js").AudioOutputInterface>;
    /**
     * The ApplicationLauncher cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link ApplicationLauncherBehavior} for convenience.
     */
    const ApplicationLauncherBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/application-launcher").ApplicationLauncher.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").ApplicationLauncherInterface>, import("../behaviors/index.js").ApplicationLauncherInterface>;
    /**
     * The AccountLogin cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link AccountLoginBehavior} for convenience.
     */
    const AccountLoginBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/account-login").AccountLogin.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").AccountLoginInterface>, import("../behaviors/index.js").AccountLoginInterface>;
    /**
     * The ContentControl cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link ContentControlBehavior} for convenience.
     */
    const ContentControlBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/content-control").ContentControl.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").ContentControlInterface>, import("../behaviors/index.js").ContentControlInterface>;
    /**
     * A definition for each client cluster supported by the endpoint per the Matter specification.
     */
    const client: {
        mandatory: {
            OnOff: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/on-off").OnOff.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").OnOffInterface>, import("../behaviors/index.js").OnOffInterface>;
            MediaPlayback: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/media-playback").MediaPlayback.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").MediaPlaybackInterface>, import("../behaviors/index.js").MediaPlaybackInterface>;
            KeypadInput: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/keypad-input").KeypadInput.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").KeypadInputInterface>, import("../behaviors/index.js").KeypadInputInterface>;
        };
        optional: {
            LevelControl: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/level-control").LevelControl.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").LevelControlInterface>, import("../behaviors/index.js").LevelControlInterface>;
            WakeOnLan: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/wake-on-lan").WakeOnLan.Cluster, typeof import("../index.js").ClusterBehavior, {
                components: never[];
            }>;
            Channel: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/channel").Channel.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").ChannelInterface>, import("../behaviors/index.js").ChannelInterface>;
            TargetNavigator: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/target-navigator").TargetNavigator.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").TargetNavigatorInterface>, import("../behaviors/index.js").TargetNavigatorInterface>;
            MediaInput: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/media-input").MediaInput.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").MediaInputInterface>, import("../behaviors/index.js").MediaInputInterface>;
            LowPower: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/low-power").LowPower.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").LowPowerInterface>, import("../behaviors/index.js").LowPowerInterface>;
            ContentLauncher: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/content-launcher").ContentLauncher.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").ContentLauncherInterface>, import("../behaviors/index.js").ContentLauncherInterface>;
            AudioOutput: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/audio-output").AudioOutput.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").AudioOutputInterface>, import("../behaviors/index.js").AudioOutputInterface>;
            ApplicationLauncher: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/application-launcher").ApplicationLauncher.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").ApplicationLauncherInterface>, import("../behaviors/index.js").ApplicationLauncherInterface>;
            AccountLogin: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/account-login").AccountLogin.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").AccountLoginInterface>, import("../behaviors/index.js").AccountLoginInterface>;
            ContentControl: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/content-control").ContentControl.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").ContentControlInterface>, import("../behaviors/index.js").ContentControlInterface>;
        };
    };
}
export declare const VideoRemoteControlDeviceDefinition: MutableEndpoint.With<import("../index.js").EndpointType.For<{
    readonly name: "VideoRemoteControl";
    readonly deviceType: 42;
    readonly deviceRevision: 2;
    readonly requirements: typeof VideoRemoteControlRequirements;
    readonly behaviors: {};
}>, {}>;
export declare const VideoRemoteControlDevice: VideoRemoteControlDevice;
//# sourceMappingURL=video-remote-control.d.ts.map