[Exposed=Window]
interface RemotePlayback : EventTarget {
    Promise<long> watchAvailability(RemotePlaybackAvailabilityCallback callback);
    Promise<void> cancelWatchAvailability(optional long id);

    readonly attribute RemotePlaybackState state;

             attribute EventHandler        onconnecting;
             attribute EventHandler        onconnect;
             attribute EventHandler        ondisconnect;

    Promise<void> prompt();
};

enum RemotePlaybackState {
    "connecting",
    "connected",
    "disconnected"
};

callback RemotePlaybackAvailabilityCallback = void (boolean available);

partial interface HTMLMediaElement {
    [SameObject]
    readonly attribute RemotePlayback remote;

    [CEReactions]
             attribute boolean        disableRemotePlayback;
};
