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

callback RemotePlaybackAvailabilityCallback = void(boolean available);

interface RemotePlayback : EventTarget {
    readonly attribute RemotePlaybackState state;
    attribute EventHandler onconnecting;
    attribute EventHandler onconnect;
    attribute EventHandler ondisconnect;

    Promise<long> watchAvailability(RemotePlaybackAvailabilityCallback callback);
    Promise<void> cancelWatchAvailability(optional long id);
    Promise<void> prompt();
};

partial interface HTMLMediaElement {
    readonly attribute RemotePlayback remote;
    attribute boolean disableRemotePlayback;
};
