Here are the possibilites:
Paused: Media is not playing (and not Ended)
Playing: Media is playing
Loading: Media is still loading, does not have enough data to start playing
Buffering: Media is buffering. Media is not playing
Ended: Media completed. Media is not playing
PlaybackError: Media has encountered a problem and is not playing.

Represents an error in loading or playing the file, produced by the HTMLMediaElement,
and a string representing the browsers error message.

The posibilities are:
Aborted: The user aborted loading the video.
Network: A network error stopped the video from loading.
Decode: the browser is unable to decode this file.
Unsupported: the browser does not support playback of this file.

playbackStatus : State -> PlaybackStatus

Getter to get the PlaybackStatus of an element from a State.

currentTime : State -> Float

Getter to get the currentTime of an element from a State.

duration : State -> Float

Getter to get the duration of an element from a State.

NOTE: On a live stream, duration will return Infinity. You need to use
the seekable function instead.

Represents a more precise record of how much of the media file has been
loaded and is ready to play.

HaveNothing: No information about the media
HaveMetadata: Information about the media, but no meaningful stream data
HaveCurrentData: Data is available only for the current frame, not anything beyond that
HaveFutureData: Data for some, but not all, of the remaining stream is available (as little as two frames worth)
HaveEnoughData: Enough data to play media through to end without further buffering, if data bandwidth remains constant

readyState : State -> ReadyState

Getter to get the readyState of an element from a State.

type NetworkState
= Empty
| Idle
| DataLoading
| NoSource

The HTMLMediaElement loads its own resources (most of the time). This
type represents the state of it's network connection.

Empty: No data loaded or loading
Idle: Element has a resource, but is not currently loading it (possibly because it is finished loading in its entirety)
Loading: browser is downloading the media
NoSource: No valid source provided

networkState : State -> NetworkState

Getter to get the NetworkState of an element from a State.

videoSize : State -> Maybe { width : Int, height : Int }

Getter to get the video of an element from the State of a video element.

This type is used to represent attributes about a timeline that have multiple value,
such as the sections of a media that have been played already.

This will always be a list.

NOTE: This cannot be used without adding an asArray property to the TimeRanges.prototype in javascript.
You can do so like this:
if (!(TimeRanges.prototype.asArray)) {
Object.defineProperty(TimeRanges.prototype, "asArray", { get: function () { var arr = []; for (i = 0; i < this.length; i++) { arr.push({ start: this.start(i), end: this.end(i) }); }; return arr; } });
}
or you can use function "modifyTimeRanges() in the file "Port/mediaPort.js."

buffered : State -> TimeRanges

Getter to get the buffered TimeRanges of an element from a State.

Buffered represents the parts of the media that have been loaded and cached
and are ready for playback.

played : State -> TimeRanges

Getter to get the played TimeRanges of an element from a State.

Played ranges are the parts of the video that the user has watched already.

seekable : State -> TimeRanges

Getter to get the seekable TimeRanges of an element from a State.

Seekable represents the part of media that the user can currently navigate to.