blob: 69e428b8b4cec8466a0d326d56303fc2851f29a1 [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:js_interop';
import 'dom.dart';
import 'hr_time.dart';
import 'html.dart';
import 'mediacapture_streams.dart';
import 'mst_content_hint.dart';
import 'webcryptoapi.dart';
import 'webidl.dart';
import 'webrtc_encoded_transform.dart';
import 'webrtc_ice.dart';
import 'webrtc_identity.dart';
import 'webrtc_priority.dart';
import 'webrtc_stats.dart';
import 'websockets.dart';
typedef RTCPeerConnectionErrorCallback = JSFunction;
typedef RTCSessionDescriptionCallback = JSFunction;
typedef RTCIceTransportPolicy = String;
typedef RTCBundlePolicy = String;
typedef RTCRtcpMuxPolicy = String;
typedef RTCSignalingState = String;
typedef RTCIceGatheringState = String;
typedef RTCPeerConnectionState = String;
typedef RTCIceConnectionState = String;
typedef RTCSdpType = String;
typedef RTCIceProtocol = String;
typedef RTCIceTcpCandidateType = String;
typedef RTCIceCandidateType = String;
typedef RTCIceServerTransportProtocol = String;
typedef RTCRtpTransceiverDirection = String;
typedef RTCDtlsTransportState = String;
typedef RTCIceGathererState = String;
typedef RTCIceTransportState = String;
typedef RTCIceRole = String;
typedef RTCIceComponent = String;
typedef RTCSctpTransportState = String;
typedef RTCDataChannelState = String;
typedef RTCErrorDetailType = String;
@JS()
@staticInterop
@anonymous
class RTCConfiguration implements JSObject {
external factory RTCConfiguration({
String peerIdentity,
JSArray iceServers,
RTCIceTransportPolicy iceTransportPolicy,
RTCBundlePolicy bundlePolicy,
RTCRtcpMuxPolicy rtcpMuxPolicy,
JSArray certificates,
int iceCandidatePoolSize,
});
}
extension RTCConfigurationExtension on RTCConfiguration {
external set peerIdentity(String value);
external String get peerIdentity;
external set iceServers(JSArray value);
external JSArray get iceServers;
external set iceTransportPolicy(RTCIceTransportPolicy value);
external RTCIceTransportPolicy get iceTransportPolicy;
external set bundlePolicy(RTCBundlePolicy value);
external RTCBundlePolicy get bundlePolicy;
external set rtcpMuxPolicy(RTCRtcpMuxPolicy value);
external RTCRtcpMuxPolicy get rtcpMuxPolicy;
external set certificates(JSArray value);
external JSArray get certificates;
external set iceCandidatePoolSize(int value);
external int get iceCandidatePoolSize;
}
@JS()
@staticInterop
@anonymous
class RTCIceServer implements JSObject {
external factory RTCIceServer({
required JSAny? urls,
String username,
String credential,
});
}
extension RTCIceServerExtension on RTCIceServer {
external set urls(JSAny? value);
external JSAny? get urls;
external set username(String value);
external String get username;
external set credential(String value);
external String get credential;
}
@JS()
@staticInterop
@anonymous
class RTCOfferAnswerOptions implements JSObject {
external factory RTCOfferAnswerOptions();
}
@JS()
@staticInterop
@anonymous
class RTCOfferOptions implements RTCOfferAnswerOptions {
external factory RTCOfferOptions({
bool iceRestart,
bool offerToReceiveAudio,
bool offerToReceiveVideo,
});
}
extension RTCOfferOptionsExtension on RTCOfferOptions {
external set iceRestart(bool value);
external bool get iceRestart;
external set offerToReceiveAudio(bool value);
external bool get offerToReceiveAudio;
external set offerToReceiveVideo(bool value);
external bool get offerToReceiveVideo;
}
@JS()
@staticInterop
@anonymous
class RTCAnswerOptions implements RTCOfferAnswerOptions {
external factory RTCAnswerOptions();
}
@JS('RTCPeerConnection')
@staticInterop
class RTCPeerConnection implements EventTarget {
external factory RTCPeerConnection([RTCConfiguration configuration]);
external static JSPromise generateCertificate(
AlgorithmIdentifier keygenAlgorithm);
}
extension RTCPeerConnectionExtension on RTCPeerConnection {
external JSVoid setIdentityProvider(
String provider, [
RTCIdentityProviderOptions options,
]);
external JSPromise getIdentityAssertion();
external JSPromise createOffer([
JSAny? optionsOrSuccessCallback,
RTCPeerConnectionErrorCallback failureCallback,
RTCOfferOptions options,
]);
external JSPromise createAnswer([
JSAny? optionsOrSuccessCallback,
RTCPeerConnectionErrorCallback failureCallback,
]);
external JSPromise setLocalDescription([
RTCLocalSessionDescriptionInit description,
VoidFunction successCallback,
RTCPeerConnectionErrorCallback failureCallback,
]);
external JSPromise setRemoteDescription(
RTCSessionDescriptionInit description, [
VoidFunction successCallback,
RTCPeerConnectionErrorCallback failureCallback,
]);
external JSPromise addIceCandidate([
RTCIceCandidateInit candidate,
VoidFunction successCallback,
RTCPeerConnectionErrorCallback failureCallback,
]);
external JSVoid restartIce();
external RTCConfiguration getConfiguration();
external JSVoid setConfiguration([RTCConfiguration configuration]);
external JSVoid close();
external JSArray getSenders();
external JSArray getReceivers();
external JSArray getTransceivers();
external RTCRtpSender addTrack(
MediaStreamTrack track,
MediaStream streams,
);
external JSVoid removeTrack(RTCRtpSender sender);
external RTCRtpTransceiver addTransceiver(
JSAny? trackOrKind, [
RTCRtpTransceiverInit init,
]);
external RTCDataChannel createDataChannel(
String label, [
RTCDataChannelInit dataChannelDict,
]);
external JSPromise getStats([MediaStreamTrack? selector]);
external JSPromise get peerIdentity;
external String? get idpLoginUrl;
external String? get idpErrorInfo;
external RTCSessionDescription? get localDescription;
external RTCSessionDescription? get currentLocalDescription;
external RTCSessionDescription? get pendingLocalDescription;
external RTCSessionDescription? get remoteDescription;
external RTCSessionDescription? get currentRemoteDescription;
external RTCSessionDescription? get pendingRemoteDescription;
external RTCSignalingState get signalingState;
external RTCIceGatheringState get iceGatheringState;
external RTCIceConnectionState get iceConnectionState;
external RTCPeerConnectionState get connectionState;
external bool? get canTrickleIceCandidates;
external set onnegotiationneeded(EventHandler value);
external EventHandler get onnegotiationneeded;
external set onicecandidate(EventHandler value);
external EventHandler get onicecandidate;
external set onicecandidateerror(EventHandler value);
external EventHandler get onicecandidateerror;
external set onsignalingstatechange(EventHandler value);
external EventHandler get onsignalingstatechange;
external set oniceconnectionstatechange(EventHandler value);
external EventHandler get oniceconnectionstatechange;
external set onicegatheringstatechange(EventHandler value);
external EventHandler get onicegatheringstatechange;
external set onconnectionstatechange(EventHandler value);
external EventHandler get onconnectionstatechange;
external set ontrack(EventHandler value);
external EventHandler get ontrack;
external RTCSctpTransport? get sctp;
external set ondatachannel(EventHandler value);
external EventHandler get ondatachannel;
}
@JS('RTCSessionDescription')
@staticInterop
class RTCSessionDescription implements JSObject {
external factory RTCSessionDescription(
RTCSessionDescriptionInit descriptionInitDict);
}
extension RTCSessionDescriptionExtension on RTCSessionDescription {
external JSObject toJSON();
external RTCSdpType get type;
external String get sdp;
}
@JS()
@staticInterop
@anonymous
class RTCSessionDescriptionInit implements JSObject {
external factory RTCSessionDescriptionInit({
required RTCSdpType type,
String sdp,
});
}
extension RTCSessionDescriptionInitExtension on RTCSessionDescriptionInit {
external set type(RTCSdpType value);
external RTCSdpType get type;
external set sdp(String value);
external String get sdp;
}
@JS()
@staticInterop
@anonymous
class RTCLocalSessionDescriptionInit implements JSObject {
external factory RTCLocalSessionDescriptionInit({
RTCSdpType type,
String sdp,
});
}
extension RTCLocalSessionDescriptionInitExtension
on RTCLocalSessionDescriptionInit {
external set type(RTCSdpType value);
external RTCSdpType get type;
external set sdp(String value);
external String get sdp;
}
@JS('RTCIceCandidate')
@staticInterop
class RTCIceCandidate implements JSObject {
external factory RTCIceCandidate([RTCIceCandidateInit candidateInitDict]);
}
extension RTCIceCandidateExtension on RTCIceCandidate {
external RTCIceCandidateInit toJSON();
external String get candidate;
external String? get sdpMid;
external int? get sdpMLineIndex;
external String? get foundation;
external RTCIceComponent? get component;
external int? get priority;
external String? get address;
external RTCIceProtocol? get protocol;
external int? get port;
external RTCIceCandidateType? get type;
external RTCIceTcpCandidateType? get tcpType;
external String? get relatedAddress;
external int? get relatedPort;
external String? get usernameFragment;
external RTCIceServerTransportProtocol? get relayProtocol;
external String? get url;
}
@JS()
@staticInterop
@anonymous
class RTCIceCandidateInit implements JSObject {
external factory RTCIceCandidateInit({
String candidate,
String? sdpMid,
int? sdpMLineIndex,
String? usernameFragment,
});
}
extension RTCIceCandidateInitExtension on RTCIceCandidateInit {
external set candidate(String value);
external String get candidate;
external set sdpMid(String? value);
external String? get sdpMid;
external set sdpMLineIndex(int? value);
external int? get sdpMLineIndex;
external set usernameFragment(String? value);
external String? get usernameFragment;
}
@JS('RTCPeerConnectionIceEvent')
@staticInterop
class RTCPeerConnectionIceEvent implements Event {
external factory RTCPeerConnectionIceEvent(
String type, [
RTCPeerConnectionIceEventInit eventInitDict,
]);
}
extension RTCPeerConnectionIceEventExtension on RTCPeerConnectionIceEvent {
external RTCIceCandidate? get candidate;
external String? get url;
}
@JS()
@staticInterop
@anonymous
class RTCPeerConnectionIceEventInit implements EventInit {
external factory RTCPeerConnectionIceEventInit({
RTCIceCandidate? candidate,
String? url,
});
}
extension RTCPeerConnectionIceEventInitExtension
on RTCPeerConnectionIceEventInit {
external set candidate(RTCIceCandidate? value);
external RTCIceCandidate? get candidate;
external set url(String? value);
external String? get url;
}
@JS('RTCPeerConnectionIceErrorEvent')
@staticInterop
class RTCPeerConnectionIceErrorEvent implements Event {
external factory RTCPeerConnectionIceErrorEvent(
String type,
RTCPeerConnectionIceErrorEventInit eventInitDict,
);
}
extension RTCPeerConnectionIceErrorEventExtension
on RTCPeerConnectionIceErrorEvent {
external String? get address;
external int? get port;
external String get url;
external int get errorCode;
external String get errorText;
}
@JS()
@staticInterop
@anonymous
class RTCPeerConnectionIceErrorEventInit implements EventInit {
external factory RTCPeerConnectionIceErrorEventInit({
String? address,
int? port,
String url,
required int errorCode,
String errorText,
});
}
extension RTCPeerConnectionIceErrorEventInitExtension
on RTCPeerConnectionIceErrorEventInit {
external set address(String? value);
external String? get address;
external set port(int? value);
external int? get port;
external set url(String value);
external String get url;
external set errorCode(int value);
external int get errorCode;
external set errorText(String value);
external String get errorText;
}
@JS()
@staticInterop
@anonymous
class RTCCertificateExpiration implements JSObject {
external factory RTCCertificateExpiration({int expires});
}
extension RTCCertificateExpirationExtension on RTCCertificateExpiration {
external set expires(int value);
external int get expires;
}
@JS('RTCCertificate')
@staticInterop
class RTCCertificate implements JSObject {}
extension RTCCertificateExtension on RTCCertificate {
external JSArray getFingerprints();
external EpochTimeStamp get expires;
}
@JS()
@staticInterop
@anonymous
class RTCRtpTransceiverInit implements JSObject {
external factory RTCRtpTransceiverInit({
RTCRtpTransceiverDirection direction,
JSArray streams,
JSArray sendEncodings,
});
}
extension RTCRtpTransceiverInitExtension on RTCRtpTransceiverInit {
external set direction(RTCRtpTransceiverDirection value);
external RTCRtpTransceiverDirection get direction;
external set streams(JSArray value);
external JSArray get streams;
external set sendEncodings(JSArray value);
external JSArray get sendEncodings;
}
@JS('RTCRtpSender')
@staticInterop
class RTCRtpSender implements JSObject {
external static RTCRtpCapabilities? getCapabilities(String kind);
}
extension RTCRtpSenderExtension on RTCRtpSender {
external JSPromise generateKeyFrame([JSArray rids]);
external JSPromise setParameters(
RTCRtpSendParameters parameters, [
RTCSetParameterOptions setParameterOptions,
]);
external RTCRtpSendParameters getParameters();
external JSPromise replaceTrack(MediaStreamTrack? withTrack);
external JSVoid setStreams(MediaStream streams);
external JSPromise getStats();
external set transform(RTCRtpTransform? value);
external RTCRtpTransform? get transform;
external MediaStreamTrack? get track;
external RTCDtlsTransport? get transport;
external RTCDTMFSender? get dtmf;
}
@JS()
@staticInterop
@anonymous
class RTCRtpParameters implements JSObject {
external factory RTCRtpParameters({
required JSArray headerExtensions,
required RTCRtcpParameters rtcp,
required JSArray codecs,
});
}
extension RTCRtpParametersExtension on RTCRtpParameters {
external set headerExtensions(JSArray value);
external JSArray get headerExtensions;
external set rtcp(RTCRtcpParameters value);
external RTCRtcpParameters get rtcp;
external set codecs(JSArray value);
external JSArray get codecs;
}
@JS()
@staticInterop
@anonymous
class RTCRtpSendParameters implements RTCRtpParameters {
external factory RTCRtpSendParameters({
RTCDegradationPreference degradationPreference,
required String transactionId,
required JSArray encodings,
});
}
extension RTCRtpSendParametersExtension on RTCRtpSendParameters {
external set degradationPreference(RTCDegradationPreference value);
external RTCDegradationPreference get degradationPreference;
external set transactionId(String value);
external String get transactionId;
external set encodings(JSArray value);
external JSArray get encodings;
}
@JS()
@staticInterop
@anonymous
class RTCRtpReceiveParameters implements RTCRtpParameters {
external factory RTCRtpReceiveParameters();
}
@JS()
@staticInterop
@anonymous
class RTCRtpCodingParameters implements JSObject {
external factory RTCRtpCodingParameters({String rid});
}
extension RTCRtpCodingParametersExtension on RTCRtpCodingParameters {
external set rid(String value);
external String get rid;
}
@JS()
@staticInterop
@anonymous
class RTCRtpEncodingParameters implements RTCRtpCodingParameters {
external factory RTCRtpEncodingParameters({
RTCPriorityType priority,
RTCPriorityType networkPriority,
String scalabilityMode,
bool active,
int maxBitrate,
double maxFramerate,
double scaleResolutionDownBy,
});
}
extension RTCRtpEncodingParametersExtension on RTCRtpEncodingParameters {
external set priority(RTCPriorityType value);
external RTCPriorityType get priority;
external set networkPriority(RTCPriorityType value);
external RTCPriorityType get networkPriority;
external set scalabilityMode(String value);
external String get scalabilityMode;
external set active(bool value);
external bool get active;
external set maxBitrate(int value);
external int get maxBitrate;
external set maxFramerate(double value);
external double get maxFramerate;
external set scaleResolutionDownBy(double value);
external double get scaleResolutionDownBy;
}
@JS()
@staticInterop
@anonymous
class RTCRtcpParameters implements JSObject {
external factory RTCRtcpParameters({
String cname,
bool reducedSize,
});
}
extension RTCRtcpParametersExtension on RTCRtcpParameters {
external set cname(String value);
external String get cname;
external set reducedSize(bool value);
external bool get reducedSize;
}
@JS()
@staticInterop
@anonymous
class RTCRtpHeaderExtensionParameters implements JSObject {
external factory RTCRtpHeaderExtensionParameters({
required String uri,
required int id,
bool encrypted,
});
}
extension RTCRtpHeaderExtensionParametersExtension
on RTCRtpHeaderExtensionParameters {
external set uri(String value);
external String get uri;
external set id(int value);
external int get id;
external set encrypted(bool value);
external bool get encrypted;
}
@JS()
@staticInterop
@anonymous
class RTCRtpCodec implements JSObject {
external factory RTCRtpCodec({
required String mimeType,
required int clockRate,
int channels,
String sdpFmtpLine,
});
}
extension RTCRtpCodecExtension on RTCRtpCodec {
external set mimeType(String value);
external String get mimeType;
external set clockRate(int value);
external int get clockRate;
external set channels(int value);
external int get channels;
external set sdpFmtpLine(String value);
external String get sdpFmtpLine;
}
@JS()
@staticInterop
@anonymous
class RTCRtpCodecParameters implements RTCRtpCodec {
external factory RTCRtpCodecParameters({required int payloadType});
}
extension RTCRtpCodecParametersExtension on RTCRtpCodecParameters {
external set payloadType(int value);
external int get payloadType;
}
@JS()
@staticInterop
@anonymous
class RTCRtpCapabilities implements JSObject {
external factory RTCRtpCapabilities({
required JSArray codecs,
required JSArray headerExtensions,
});
}
extension RTCRtpCapabilitiesExtension on RTCRtpCapabilities {
external set codecs(JSArray value);
external JSArray get codecs;
external set headerExtensions(JSArray value);
external JSArray get headerExtensions;
}
@JS()
@staticInterop
@anonymous
class RTCRtpCodecCapability implements RTCRtpCodec {
external factory RTCRtpCodecCapability();
}
@JS()
@staticInterop
@anonymous
class RTCRtpHeaderExtensionCapability implements JSObject {
external factory RTCRtpHeaderExtensionCapability({required String uri});
}
extension RTCRtpHeaderExtensionCapabilityExtension
on RTCRtpHeaderExtensionCapability {
external set uri(String value);
external String get uri;
}
@JS()
@staticInterop
@anonymous
class RTCSetParameterOptions implements JSObject {
external factory RTCSetParameterOptions();
}
@JS('RTCRtpReceiver')
@staticInterop
class RTCRtpReceiver implements JSObject {
external static RTCRtpCapabilities? getCapabilities(String kind);
}
extension RTCRtpReceiverExtension on RTCRtpReceiver {
external RTCRtpReceiveParameters getParameters();
external JSArray getContributingSources();
external JSArray getSynchronizationSources();
external JSPromise getStats();
external set transform(RTCRtpTransform? value);
external RTCRtpTransform? get transform;
external MediaStreamTrack get track;
external RTCDtlsTransport? get transport;
}
@JS()
@staticInterop
@anonymous
class RTCRtpContributingSource implements JSObject {
external factory RTCRtpContributingSource({
required DOMHighResTimeStamp timestamp,
required int source,
double audioLevel,
required int rtpTimestamp,
});
}
extension RTCRtpContributingSourceExtension on RTCRtpContributingSource {
external set timestamp(DOMHighResTimeStamp value);
external DOMHighResTimeStamp get timestamp;
external set source(int value);
external int get source;
external set audioLevel(double value);
external double get audioLevel;
external set rtpTimestamp(int value);
external int get rtpTimestamp;
}
@JS()
@staticInterop
@anonymous
class RTCRtpSynchronizationSource implements RTCRtpContributingSource {
external factory RTCRtpSynchronizationSource();
}
@JS('RTCRtpTransceiver')
@staticInterop
class RTCRtpTransceiver implements JSObject {}
extension RTCRtpTransceiverExtension on RTCRtpTransceiver {
external JSVoid stop();
external JSVoid setCodecPreferences(JSArray codecs);
external String? get mid;
external RTCRtpSender get sender;
external RTCRtpReceiver get receiver;
external set direction(RTCRtpTransceiverDirection value);
external RTCRtpTransceiverDirection get direction;
external RTCRtpTransceiverDirection? get currentDirection;
}
@JS('RTCDtlsTransport')
@staticInterop
class RTCDtlsTransport implements EventTarget {}
extension RTCDtlsTransportExtension on RTCDtlsTransport {
external JSArray getRemoteCertificates();
external RTCIceTransport get iceTransport;
external RTCDtlsTransportState get state;
external set onstatechange(EventHandler value);
external EventHandler get onstatechange;
external set onerror(EventHandler value);
external EventHandler get onerror;
}
@JS()
@staticInterop
@anonymous
class RTCDtlsFingerprint implements JSObject {
external factory RTCDtlsFingerprint({
String algorithm,
String value,
});
}
extension RTCDtlsFingerprintExtension on RTCDtlsFingerprint {
external set algorithm(String value);
external String get algorithm;
external set value(String value);
external String get value;
}
@JS('RTCIceTransport')
@staticInterop
class RTCIceTransport implements EventTarget {
external factory RTCIceTransport();
}
extension RTCIceTransportExtension on RTCIceTransport {
external JSVoid gather([RTCIceGatherOptions options]);
external JSVoid start([
RTCIceParameters remoteParameters,
RTCIceRole role,
]);
external JSVoid stop();
external JSVoid addRemoteCandidate([RTCIceCandidateInit remoteCandidate]);
external JSArray getLocalCandidates();
external JSArray getRemoteCandidates();
external RTCIceCandidatePair? getSelectedCandidatePair();
external RTCIceParameters? getLocalParameters();
external RTCIceParameters? getRemoteParameters();
external set onerror(EventHandler value);
external EventHandler get onerror;
external set onicecandidate(EventHandler value);
external EventHandler get onicecandidate;
external RTCIceRole get role;
external RTCIceComponent get component;
external RTCIceTransportState get state;
external RTCIceGathererState get gatheringState;
external set onstatechange(EventHandler value);
external EventHandler get onstatechange;
external set ongatheringstatechange(EventHandler value);
external EventHandler get ongatheringstatechange;
external set onselectedcandidatepairchange(EventHandler value);
external EventHandler get onselectedcandidatepairchange;
}
@JS()
@staticInterop
@anonymous
class RTCIceParameters implements JSObject {
external factory RTCIceParameters({
bool iceLite,
String usernameFragment,
String password,
});
}
extension RTCIceParametersExtension on RTCIceParameters {
external set iceLite(bool value);
external bool get iceLite;
external set usernameFragment(String value);
external String get usernameFragment;
external set password(String value);
external String get password;
}
@JS()
@staticInterop
@anonymous
class RTCIceCandidatePair implements JSObject {
external factory RTCIceCandidatePair({
RTCIceCandidate local,
RTCIceCandidate remote,
});
}
extension RTCIceCandidatePairExtension on RTCIceCandidatePair {
external set local(RTCIceCandidate value);
external RTCIceCandidate get local;
external set remote(RTCIceCandidate value);
external RTCIceCandidate get remote;
}
@JS('RTCTrackEvent')
@staticInterop
class RTCTrackEvent implements Event {
external factory RTCTrackEvent(
String type,
RTCTrackEventInit eventInitDict,
);
}
extension RTCTrackEventExtension on RTCTrackEvent {
external RTCRtpReceiver get receiver;
external MediaStreamTrack get track;
external JSArray get streams;
external RTCRtpTransceiver get transceiver;
}
@JS()
@staticInterop
@anonymous
class RTCTrackEventInit implements EventInit {
external factory RTCTrackEventInit({
required RTCRtpReceiver receiver,
required MediaStreamTrack track,
JSArray streams,
required RTCRtpTransceiver transceiver,
});
}
extension RTCTrackEventInitExtension on RTCTrackEventInit {
external set receiver(RTCRtpReceiver value);
external RTCRtpReceiver get receiver;
external set track(MediaStreamTrack value);
external MediaStreamTrack get track;
external set streams(JSArray value);
external JSArray get streams;
external set transceiver(RTCRtpTransceiver value);
external RTCRtpTransceiver get transceiver;
}
@JS('RTCSctpTransport')
@staticInterop
class RTCSctpTransport implements EventTarget {}
extension RTCSctpTransportExtension on RTCSctpTransport {
external RTCDtlsTransport get transport;
external RTCSctpTransportState get state;
external double get maxMessageSize;
external int? get maxChannels;
external set onstatechange(EventHandler value);
external EventHandler get onstatechange;
}
@JS('RTCDataChannel')
@staticInterop
class RTCDataChannel implements EventTarget {}
extension RTCDataChannelExtension on RTCDataChannel {
external JSVoid close();
external JSVoid send(JSAny? data);
external RTCPriorityType get priority;
external String get label;
external bool get ordered;
external int? get maxPacketLifeTime;
external int? get maxRetransmits;
external String get protocol;
external bool get negotiated;
external int? get id;
external RTCDataChannelState get readyState;
external int get bufferedAmount;
external set bufferedAmountLowThreshold(int value);
external int get bufferedAmountLowThreshold;
external set onopen(EventHandler value);
external EventHandler get onopen;
external set onbufferedamountlow(EventHandler value);
external EventHandler get onbufferedamountlow;
external set onerror(EventHandler value);
external EventHandler get onerror;
external set onclosing(EventHandler value);
external EventHandler get onclosing;
external set onclose(EventHandler value);
external EventHandler get onclose;
external set onmessage(EventHandler value);
external EventHandler get onmessage;
external set binaryType(BinaryType value);
external BinaryType get binaryType;
}
@JS()
@staticInterop
@anonymous
class RTCDataChannelInit implements JSObject {
external factory RTCDataChannelInit({
RTCPriorityType priority,
bool ordered,
int maxPacketLifeTime,
int maxRetransmits,
String protocol,
bool negotiated,
int id,
});
}
extension RTCDataChannelInitExtension on RTCDataChannelInit {
external set priority(RTCPriorityType value);
external RTCPriorityType get priority;
external set ordered(bool value);
external bool get ordered;
external set maxPacketLifeTime(int value);
external int get maxPacketLifeTime;
external set maxRetransmits(int value);
external int get maxRetransmits;
external set protocol(String value);
external String get protocol;
external set negotiated(bool value);
external bool get negotiated;
external set id(int value);
external int get id;
}
@JS('RTCDataChannelEvent')
@staticInterop
class RTCDataChannelEvent implements Event {
external factory RTCDataChannelEvent(
String type,
RTCDataChannelEventInit eventInitDict,
);
}
extension RTCDataChannelEventExtension on RTCDataChannelEvent {
external RTCDataChannel get channel;
}
@JS()
@staticInterop
@anonymous
class RTCDataChannelEventInit implements EventInit {
external factory RTCDataChannelEventInit({required RTCDataChannel channel});
}
extension RTCDataChannelEventInitExtension on RTCDataChannelEventInit {
external set channel(RTCDataChannel value);
external RTCDataChannel get channel;
}
@JS('RTCDTMFSender')
@staticInterop
class RTCDTMFSender implements EventTarget {}
extension RTCDTMFSenderExtension on RTCDTMFSender {
external JSVoid insertDTMF(
String tones, [
int duration,
int interToneGap,
]);
external set ontonechange(EventHandler value);
external EventHandler get ontonechange;
external bool get canInsertDTMF;
external String get toneBuffer;
}
@JS('RTCDTMFToneChangeEvent')
@staticInterop
class RTCDTMFToneChangeEvent implements Event {
external factory RTCDTMFToneChangeEvent(
String type, [
RTCDTMFToneChangeEventInit eventInitDict,
]);
}
extension RTCDTMFToneChangeEventExtension on RTCDTMFToneChangeEvent {
external String get tone;
}
@JS()
@staticInterop
@anonymous
class RTCDTMFToneChangeEventInit implements EventInit {
external factory RTCDTMFToneChangeEventInit({String tone});
}
extension RTCDTMFToneChangeEventInitExtension on RTCDTMFToneChangeEventInit {
external set tone(String value);
external String get tone;
}
@JS('RTCStatsReport')
@staticInterop
class RTCStatsReport implements JSObject {}
extension RTCStatsReportExtension on RTCStatsReport {}
@JS()
@staticInterop
@anonymous
class RTCStats implements JSObject {
external factory RTCStats({
required DOMHighResTimeStamp timestamp,
required RTCStatsType type,
required String id,
});
}
extension RTCStatsExtension on RTCStats {
external set timestamp(DOMHighResTimeStamp value);
external DOMHighResTimeStamp get timestamp;
external set type(RTCStatsType value);
external RTCStatsType get type;
external set id(String value);
external String get id;
}
@JS('RTCError')
@staticInterop
class RTCError implements DOMException {
external factory RTCError(
RTCErrorInit init, [
String message,
]);
}
extension RTCErrorExtension on RTCError {
external int? get httpRequestStatusCode;
external RTCErrorDetailType get errorDetail;
external int? get sdpLineNumber;
external int? get sctpCauseCode;
external int? get receivedAlert;
external int? get sentAlert;
}
@JS()
@staticInterop
@anonymous
class RTCErrorInit implements JSObject {
external factory RTCErrorInit({
int httpRequestStatusCode,
required RTCErrorDetailType errorDetail,
int sdpLineNumber,
int sctpCauseCode,
int receivedAlert,
int sentAlert,
});
}
extension RTCErrorInitExtension on RTCErrorInit {
external set httpRequestStatusCode(int value);
external int get httpRequestStatusCode;
external set errorDetail(RTCErrorDetailType value);
external RTCErrorDetailType get errorDetail;
external set sdpLineNumber(int value);
external int get sdpLineNumber;
external set sctpCauseCode(int value);
external int get sctpCauseCode;
external set receivedAlert(int value);
external int get receivedAlert;
external set sentAlert(int value);
external int get sentAlert;
}
@JS('RTCErrorEvent')
@staticInterop
class RTCErrorEvent implements Event {
external factory RTCErrorEvent(
String type,
RTCErrorEventInit eventInitDict,
);
}
extension RTCErrorEventExtension on RTCErrorEvent {
external RTCError get error;
}
@JS()
@staticInterop
@anonymous
class RTCErrorEventInit implements EventInit {
external factory RTCErrorEventInit({required RTCError error});
}
extension RTCErrorEventInitExtension on RTCErrorEventInit {
external set error(RTCError value);
external RTCError get error;
}