• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*! *****************************************************************************
2Copyright (c) Microsoft Corporation. All rights reserved.
3Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4this file except in compliance with the License. You may obtain a copy of the
5License at http://www.apache.org/licenses/LICENSE-2.0
6
7THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
9WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
10MERCHANTABLITY OR NON-INFRINGEMENT.
11
12See the Apache Version 2.0 License for specific language governing permissions
13and limitations under the License.
14***************************************************************************** */
15
16
17
18/// <reference no-default-lib="true"/>
19
20
21/////////////////////////////
22/// Window APIs
23/////////////////////////////
24
25interface AddEventListenerOptions extends EventListenerOptions {
26    once?: boolean;
27    passive?: boolean;
28    signal?: AbortSignal;
29}
30
31interface AesCbcParams extends Algorithm {
32    iv: BufferSource;
33}
34
35interface AesCtrParams extends Algorithm {
36    counter: BufferSource;
37    length: number;
38}
39
40interface AesDerivedKeyParams extends Algorithm {
41    length: number;
42}
43
44interface AesGcmParams extends Algorithm {
45    additionalData?: BufferSource;
46    iv: BufferSource;
47    tagLength?: number;
48}
49
50interface AesKeyAlgorithm extends KeyAlgorithm {
51    length: number;
52}
53
54interface AesKeyGenParams extends Algorithm {
55    length: number;
56}
57
58interface Algorithm {
59    name: string;
60}
61
62interface AnalyserOptions extends AudioNodeOptions {
63    fftSize?: number;
64    maxDecibels?: number;
65    minDecibels?: number;
66    smoothingTimeConstant?: number;
67}
68
69interface AnimationEventInit extends EventInit {
70    animationName?: string;
71    elapsedTime?: number;
72    pseudoElement?: string;
73}
74
75interface AnimationPlaybackEventInit extends EventInit {
76    currentTime?: CSSNumberish | null;
77    timelineTime?: CSSNumberish | null;
78}
79
80interface AssignedNodesOptions {
81    flatten?: boolean;
82}
83
84interface AudioBufferOptions {
85    length: number;
86    numberOfChannels?: number;
87    sampleRate: number;
88}
89
90interface AudioBufferSourceOptions {
91    buffer?: AudioBuffer | null;
92    detune?: number;
93    loop?: boolean;
94    loopEnd?: number;
95    loopStart?: number;
96    playbackRate?: number;
97}
98
99interface AudioConfiguration {
100    bitrate?: number;
101    channels?: string;
102    contentType: string;
103    samplerate?: number;
104    spatialRendering?: boolean;
105}
106
107interface AudioContextOptions {
108    latencyHint?: AudioContextLatencyCategory | number;
109    sampleRate?: number;
110}
111
112interface AudioNodeOptions {
113    channelCount?: number;
114    channelCountMode?: ChannelCountMode;
115    channelInterpretation?: ChannelInterpretation;
116}
117
118interface AudioProcessingEventInit extends EventInit {
119    inputBuffer: AudioBuffer;
120    outputBuffer: AudioBuffer;
121    playbackTime: number;
122}
123
124interface AudioTimestamp {
125    contextTime?: number;
126    performanceTime?: DOMHighResTimeStamp;
127}
128
129interface AudioWorkletNodeOptions extends AudioNodeOptions {
130    numberOfInputs?: number;
131    numberOfOutputs?: number;
132    outputChannelCount?: number[];
133    parameterData?: Record<string, number>;
134    processorOptions?: any;
135}
136
137interface AuthenticationExtensionsClientInputs {
138    appid?: string;
139    credProps?: boolean;
140    hmacCreateSecret?: boolean;
141}
142
143interface AuthenticationExtensionsClientOutputs {
144    appid?: boolean;
145    credProps?: CredentialPropertiesOutput;
146    hmacCreateSecret?: boolean;
147}
148
149interface AuthenticatorSelectionCriteria {
150    authenticatorAttachment?: AuthenticatorAttachment;
151    requireResidentKey?: boolean;
152    residentKey?: ResidentKeyRequirement;
153    userVerification?: UserVerificationRequirement;
154}
155
156interface BiquadFilterOptions extends AudioNodeOptions {
157    Q?: number;
158    detune?: number;
159    frequency?: number;
160    gain?: number;
161    type?: BiquadFilterType;
162}
163
164interface BlobEventInit {
165    data: Blob;
166    timecode?: DOMHighResTimeStamp;
167}
168
169interface BlobPropertyBag {
170    endings?: EndingType;
171    type?: string;
172}
173
174interface CSSStyleSheetInit {
175    baseURL?: string;
176    disabled?: boolean;
177    media?: MediaList | string;
178}
179
180interface CacheQueryOptions {
181    ignoreMethod?: boolean;
182    ignoreSearch?: boolean;
183    ignoreVary?: boolean;
184}
185
186interface CanvasRenderingContext2DSettings {
187    alpha?: boolean;
188    colorSpace?: PredefinedColorSpace;
189    desynchronized?: boolean;
190    willReadFrequently?: boolean;
191}
192
193interface ChannelMergerOptions extends AudioNodeOptions {
194    numberOfInputs?: number;
195}
196
197interface ChannelSplitterOptions extends AudioNodeOptions {
198    numberOfOutputs?: number;
199}
200
201interface ClientQueryOptions {
202    includeUncontrolled?: boolean;
203    type?: ClientTypes;
204}
205
206interface ClipboardEventInit extends EventInit {
207    clipboardData?: DataTransfer | null;
208}
209
210interface ClipboardItemOptions {
211    presentationStyle?: PresentationStyle;
212}
213
214interface CloseEventInit extends EventInit {
215    code?: number;
216    reason?: string;
217    wasClean?: boolean;
218}
219
220interface CompositionEventInit extends UIEventInit {
221    data?: string;
222}
223
224interface ComputedEffectTiming extends EffectTiming {
225    activeDuration?: CSSNumberish;
226    currentIteration?: number | null;
227    endTime?: CSSNumberish;
228    localTime?: CSSNumberish | null;
229    progress?: number | null;
230    startTime?: CSSNumberish;
231}
232
233interface ComputedKeyframe {
234    composite: CompositeOperationOrAuto;
235    computedOffset: number;
236    easing: string;
237    offset: number | null;
238    [property: string]: string | number | null | undefined;
239}
240
241interface ConstantSourceOptions {
242    offset?: number;
243}
244
245interface ConstrainBooleanParameters {
246    exact?: boolean;
247    ideal?: boolean;
248}
249
250interface ConstrainDOMStringParameters {
251    exact?: string | string[];
252    ideal?: string | string[];
253}
254
255interface ConstrainDoubleRange extends DoubleRange {
256    exact?: number;
257    ideal?: number;
258}
259
260interface ConstrainULongRange extends ULongRange {
261    exact?: number;
262    ideal?: number;
263}
264
265interface ConvolverOptions extends AudioNodeOptions {
266    buffer?: AudioBuffer | null;
267    disableNormalization?: boolean;
268}
269
270interface CredentialCreationOptions {
271    publicKey?: PublicKeyCredentialCreationOptions;
272    signal?: AbortSignal;
273}
274
275interface CredentialPropertiesOutput {
276    rk?: boolean;
277}
278
279interface CredentialRequestOptions {
280    mediation?: CredentialMediationRequirement;
281    publicKey?: PublicKeyCredentialRequestOptions;
282    signal?: AbortSignal;
283}
284
285interface CryptoKeyPair {
286    privateKey: CryptoKey;
287    publicKey: CryptoKey;
288}
289
290interface CustomEventInit<T = any> extends EventInit {
291    detail?: T;
292}
293
294interface DOMMatrix2DInit {
295    a?: number;
296    b?: number;
297    c?: number;
298    d?: number;
299    e?: number;
300    f?: number;
301    m11?: number;
302    m12?: number;
303    m21?: number;
304    m22?: number;
305    m41?: number;
306    m42?: number;
307}
308
309interface DOMMatrixInit extends DOMMatrix2DInit {
310    is2D?: boolean;
311    m13?: number;
312    m14?: number;
313    m23?: number;
314    m24?: number;
315    m31?: number;
316    m32?: number;
317    m33?: number;
318    m34?: number;
319    m43?: number;
320    m44?: number;
321}
322
323interface DOMPointInit {
324    w?: number;
325    x?: number;
326    y?: number;
327    z?: number;
328}
329
330interface DOMQuadInit {
331    p1?: DOMPointInit;
332    p2?: DOMPointInit;
333    p3?: DOMPointInit;
334    p4?: DOMPointInit;
335}
336
337interface DOMRectInit {
338    height?: number;
339    width?: number;
340    x?: number;
341    y?: number;
342}
343
344interface DelayOptions extends AudioNodeOptions {
345    delayTime?: number;
346    maxDelayTime?: number;
347}
348
349interface DeviceMotionEventAccelerationInit {
350    x?: number | null;
351    y?: number | null;
352    z?: number | null;
353}
354
355interface DeviceMotionEventInit extends EventInit {
356    acceleration?: DeviceMotionEventAccelerationInit;
357    accelerationIncludingGravity?: DeviceMotionEventAccelerationInit;
358    interval?: number;
359    rotationRate?: DeviceMotionEventRotationRateInit;
360}
361
362interface DeviceMotionEventRotationRateInit {
363    alpha?: number | null;
364    beta?: number | null;
365    gamma?: number | null;
366}
367
368interface DeviceOrientationEventInit extends EventInit {
369    absolute?: boolean;
370    alpha?: number | null;
371    beta?: number | null;
372    gamma?: number | null;
373}
374
375interface DisplayMediaStreamOptions {
376    audio?: boolean | MediaTrackConstraints;
377    video?: boolean | MediaTrackConstraints;
378}
379
380interface DocumentTimelineOptions {
381    originTime?: DOMHighResTimeStamp;
382}
383
384interface DoubleRange {
385    max?: number;
386    min?: number;
387}
388
389interface DragEventInit extends MouseEventInit {
390    dataTransfer?: DataTransfer | null;
391}
392
393interface DynamicsCompressorOptions extends AudioNodeOptions {
394    attack?: number;
395    knee?: number;
396    ratio?: number;
397    release?: number;
398    threshold?: number;
399}
400
401interface EcKeyAlgorithm extends KeyAlgorithm {
402    namedCurve: NamedCurve;
403}
404
405interface EcKeyGenParams extends Algorithm {
406    namedCurve: NamedCurve;
407}
408
409interface EcKeyImportParams extends Algorithm {
410    namedCurve: NamedCurve;
411}
412
413interface EcdhKeyDeriveParams extends Algorithm {
414    public: CryptoKey;
415}
416
417interface EcdsaParams extends Algorithm {
418    hash: HashAlgorithmIdentifier;
419}
420
421interface EffectTiming {
422    delay?: number;
423    direction?: PlaybackDirection;
424    duration?: number | string;
425    easing?: string;
426    endDelay?: number;
427    fill?: FillMode;
428    iterationStart?: number;
429    iterations?: number;
430    playbackRate?: number;
431}
432
433interface ElementCreationOptions {
434    is?: string;
435}
436
437interface ElementDefinitionOptions {
438    extends?: string;
439}
440
441interface ErrorEventInit extends EventInit {
442    colno?: number;
443    error?: any;
444    filename?: string;
445    lineno?: number;
446    message?: string;
447}
448
449interface EventInit {
450    bubbles?: boolean;
451    cancelable?: boolean;
452    composed?: boolean;
453}
454
455interface EventListenerOptions {
456    capture?: boolean;
457}
458
459interface EventModifierInit extends UIEventInit {
460    altKey?: boolean;
461    ctrlKey?: boolean;
462    metaKey?: boolean;
463    modifierAltGraph?: boolean;
464    modifierCapsLock?: boolean;
465    modifierFn?: boolean;
466    modifierFnLock?: boolean;
467    modifierHyper?: boolean;
468    modifierNumLock?: boolean;
469    modifierScrollLock?: boolean;
470    modifierSuper?: boolean;
471    modifierSymbol?: boolean;
472    modifierSymbolLock?: boolean;
473    shiftKey?: boolean;
474}
475
476interface EventSourceInit {
477    withCredentials?: boolean;
478}
479
480interface FilePropertyBag extends BlobPropertyBag {
481    lastModified?: number;
482}
483
484interface FileSystemFlags {
485    create?: boolean;
486    exclusive?: boolean;
487}
488
489interface FileSystemGetDirectoryOptions {
490    create?: boolean;
491}
492
493interface FileSystemGetFileOptions {
494    create?: boolean;
495}
496
497interface FileSystemRemoveOptions {
498    recursive?: boolean;
499}
500
501interface FocusEventInit extends UIEventInit {
502    relatedTarget?: EventTarget | null;
503}
504
505interface FocusOptions {
506    preventScroll?: boolean;
507}
508
509interface FontFaceDescriptors {
510    display?: string;
511    featureSettings?: string;
512    stretch?: string;
513    style?: string;
514    unicodeRange?: string;
515    variant?: string;
516    weight?: string;
517}
518
519interface FontFaceSetLoadEventInit extends EventInit {
520    fontfaces?: FontFace[];
521}
522
523interface FormDataEventInit extends EventInit {
524    formData: FormData;
525}
526
527interface FullscreenOptions {
528    navigationUI?: FullscreenNavigationUI;
529}
530
531interface GainOptions extends AudioNodeOptions {
532    gain?: number;
533}
534
535interface GamepadEventInit extends EventInit {
536    gamepad: Gamepad;
537}
538
539interface GetAnimationsOptions {
540    subtree?: boolean;
541}
542
543interface GetNotificationOptions {
544    tag?: string;
545}
546
547interface GetRootNodeOptions {
548    composed?: boolean;
549}
550
551interface HashChangeEventInit extends EventInit {
552    newURL?: string;
553    oldURL?: string;
554}
555
556interface HkdfParams extends Algorithm {
557    hash: HashAlgorithmIdentifier;
558    info: BufferSource;
559    salt: BufferSource;
560}
561
562interface HmacImportParams extends Algorithm {
563    hash: HashAlgorithmIdentifier;
564    length?: number;
565}
566
567interface HmacKeyAlgorithm extends KeyAlgorithm {
568    hash: KeyAlgorithm;
569    length: number;
570}
571
572interface HmacKeyGenParams extends Algorithm {
573    hash: HashAlgorithmIdentifier;
574    length?: number;
575}
576
577interface IDBDatabaseInfo {
578    name?: string;
579    version?: number;
580}
581
582interface IDBIndexParameters {
583    multiEntry?: boolean;
584    unique?: boolean;
585}
586
587interface IDBObjectStoreParameters {
588    autoIncrement?: boolean;
589    keyPath?: string | string[] | null;
590}
591
592interface IDBTransactionOptions {
593    durability?: IDBTransactionDurability;
594}
595
596interface IDBVersionChangeEventInit extends EventInit {
597    newVersion?: number | null;
598    oldVersion?: number;
599}
600
601interface IIRFilterOptions extends AudioNodeOptions {
602    feedback: number[];
603    feedforward: number[];
604}
605
606interface IdleRequestOptions {
607    timeout?: number;
608}
609
610interface ImageBitmapOptions {
611    colorSpaceConversion?: ColorSpaceConversion;
612    imageOrientation?: ImageOrientation;
613    premultiplyAlpha?: PremultiplyAlpha;
614    resizeHeight?: number;
615    resizeQuality?: ResizeQuality;
616    resizeWidth?: number;
617}
618
619interface ImageBitmapRenderingContextSettings {
620    alpha?: boolean;
621}
622
623interface ImageDataSettings {
624    colorSpace?: PredefinedColorSpace;
625}
626
627interface ImportMeta {
628    url: string;
629}
630
631interface InputEventInit extends UIEventInit {
632    data?: string | null;
633    dataTransfer?: DataTransfer | null;
634    inputType?: string;
635    isComposing?: boolean;
636    targetRanges?: StaticRange[];
637}
638
639interface IntersectionObserverEntryInit {
640    boundingClientRect: DOMRectInit;
641    intersectionRatio: number;
642    intersectionRect: DOMRectInit;
643    isIntersecting: boolean;
644    rootBounds: DOMRectInit | null;
645    target: Element;
646    time: DOMHighResTimeStamp;
647}
648
649interface IntersectionObserverInit {
650    root?: Element | Document | null;
651    rootMargin?: string;
652    threshold?: number | number[];
653}
654
655interface JsonWebKey {
656    alg?: string;
657    crv?: string;
658    d?: string;
659    dp?: string;
660    dq?: string;
661    e?: string;
662    ext?: boolean;
663    k?: string;
664    key_ops?: string[];
665    kty?: string;
666    n?: string;
667    oth?: RsaOtherPrimesInfo[];
668    p?: string;
669    q?: string;
670    qi?: string;
671    use?: string;
672    x?: string;
673    y?: string;
674}
675
676interface KeyAlgorithm {
677    name: string;
678}
679
680interface KeyboardEventInit extends EventModifierInit {
681    /** @deprecated */
682    charCode?: number;
683    code?: string;
684    isComposing?: boolean;
685    key?: string;
686    /** @deprecated */
687    keyCode?: number;
688    location?: number;
689    repeat?: boolean;
690}
691
692interface Keyframe {
693    composite?: CompositeOperationOrAuto;
694    easing?: string;
695    offset?: number | null;
696    [property: string]: string | number | null | undefined;
697}
698
699interface KeyframeAnimationOptions extends KeyframeEffectOptions {
700    id?: string;
701}
702
703interface KeyframeEffectOptions extends EffectTiming {
704    composite?: CompositeOperation;
705    iterationComposite?: IterationCompositeOperation;
706    pseudoElement?: string | null;
707}
708
709interface LockInfo {
710    clientId?: string;
711    mode?: LockMode;
712    name?: string;
713}
714
715interface LockManagerSnapshot {
716    held?: LockInfo[];
717    pending?: LockInfo[];
718}
719
720interface LockOptions {
721    ifAvailable?: boolean;
722    mode?: LockMode;
723    signal?: AbortSignal;
724    steal?: boolean;
725}
726
727interface MediaCapabilitiesDecodingInfo extends MediaCapabilitiesInfo {
728    configuration?: MediaDecodingConfiguration;
729}
730
731interface MediaCapabilitiesEncodingInfo extends MediaCapabilitiesInfo {
732    configuration?: MediaEncodingConfiguration;
733}
734
735interface MediaCapabilitiesInfo {
736    powerEfficient: boolean;
737    smooth: boolean;
738    supported: boolean;
739}
740
741interface MediaConfiguration {
742    audio?: AudioConfiguration;
743    video?: VideoConfiguration;
744}
745
746interface MediaDecodingConfiguration extends MediaConfiguration {
747    type: MediaDecodingType;
748}
749
750interface MediaElementAudioSourceOptions {
751    mediaElement: HTMLMediaElement;
752}
753
754interface MediaEncodingConfiguration extends MediaConfiguration {
755    type: MediaEncodingType;
756}
757
758interface MediaEncryptedEventInit extends EventInit {
759    initData?: ArrayBuffer | null;
760    initDataType?: string;
761}
762
763interface MediaImage {
764    sizes?: string;
765    src: string;
766    type?: string;
767}
768
769interface MediaKeyMessageEventInit extends EventInit {
770    message: ArrayBuffer;
771    messageType: MediaKeyMessageType;
772}
773
774interface MediaKeySystemConfiguration {
775    audioCapabilities?: MediaKeySystemMediaCapability[];
776    distinctiveIdentifier?: MediaKeysRequirement;
777    initDataTypes?: string[];
778    label?: string;
779    persistentState?: MediaKeysRequirement;
780    sessionTypes?: string[];
781    videoCapabilities?: MediaKeySystemMediaCapability[];
782}
783
784interface MediaKeySystemMediaCapability {
785    contentType?: string;
786    encryptionScheme?: string | null;
787    robustness?: string;
788}
789
790interface MediaMetadataInit {
791    album?: string;
792    artist?: string;
793    artwork?: MediaImage[];
794    title?: string;
795}
796
797interface MediaPositionState {
798    duration?: number;
799    playbackRate?: number;
800    position?: number;
801}
802
803interface MediaQueryListEventInit extends EventInit {
804    matches?: boolean;
805    media?: string;
806}
807
808interface MediaRecorderOptions {
809    audioBitsPerSecond?: number;
810    bitsPerSecond?: number;
811    mimeType?: string;
812    videoBitsPerSecond?: number;
813}
814
815interface MediaSessionActionDetails {
816    action: MediaSessionAction;
817    fastSeek?: boolean;
818    seekOffset?: number;
819    seekTime?: number;
820}
821
822interface MediaStreamAudioSourceOptions {
823    mediaStream: MediaStream;
824}
825
826interface MediaStreamConstraints {
827    audio?: boolean | MediaTrackConstraints;
828    peerIdentity?: string;
829    preferCurrentTab?: boolean;
830    video?: boolean | MediaTrackConstraints;
831}
832
833interface MediaStreamTrackEventInit extends EventInit {
834    track: MediaStreamTrack;
835}
836
837interface MediaTrackCapabilities {
838    aspectRatio?: DoubleRange;
839    autoGainControl?: boolean[];
840    channelCount?: ULongRange;
841    cursor?: string[];
842    deviceId?: string;
843    displaySurface?: string;
844    echoCancellation?: boolean[];
845    facingMode?: string[];
846    frameRate?: DoubleRange;
847    groupId?: string;
848    height?: ULongRange;
849    latency?: DoubleRange;
850    logicalSurface?: boolean;
851    noiseSuppression?: boolean[];
852    resizeMode?: string[];
853    sampleRate?: ULongRange;
854    sampleSize?: ULongRange;
855    width?: ULongRange;
856}
857
858interface MediaTrackConstraintSet {
859    aspectRatio?: ConstrainDouble;
860    autoGainControl?: ConstrainBoolean;
861    channelCount?: ConstrainULong;
862    deviceId?: ConstrainDOMString;
863    echoCancellation?: ConstrainBoolean;
864    facingMode?: ConstrainDOMString;
865    frameRate?: ConstrainDouble;
866    groupId?: ConstrainDOMString;
867    height?: ConstrainULong;
868    latency?: ConstrainDouble;
869    noiseSuppression?: ConstrainBoolean;
870    sampleRate?: ConstrainULong;
871    sampleSize?: ConstrainULong;
872    suppressLocalAudioPlayback?: ConstrainBoolean;
873    width?: ConstrainULong;
874}
875
876interface MediaTrackConstraints extends MediaTrackConstraintSet {
877    advanced?: MediaTrackConstraintSet[];
878}
879
880interface MediaTrackSettings {
881    aspectRatio?: number;
882    autoGainControl?: boolean;
883    deviceId?: string;
884    echoCancellation?: boolean;
885    facingMode?: string;
886    frameRate?: number;
887    groupId?: string;
888    height?: number;
889    noiseSuppression?: boolean;
890    restrictOwnAudio?: boolean;
891    sampleRate?: number;
892    sampleSize?: number;
893    width?: number;
894}
895
896interface MediaTrackSupportedConstraints {
897    aspectRatio?: boolean;
898    autoGainControl?: boolean;
899    deviceId?: boolean;
900    echoCancellation?: boolean;
901    facingMode?: boolean;
902    frameRate?: boolean;
903    groupId?: boolean;
904    height?: boolean;
905    noiseSuppression?: boolean;
906    sampleRate?: boolean;
907    sampleSize?: boolean;
908    suppressLocalAudioPlayback?: boolean;
909    width?: boolean;
910}
911
912interface MessageEventInit<T = any> extends EventInit {
913    data?: T;
914    lastEventId?: string;
915    origin?: string;
916    ports?: MessagePort[];
917    source?: MessageEventSource | null;
918}
919
920interface MouseEventInit extends EventModifierInit {
921    button?: number;
922    buttons?: number;
923    clientX?: number;
924    clientY?: number;
925    movementX?: number;
926    movementY?: number;
927    relatedTarget?: EventTarget | null;
928    screenX?: number;
929    screenY?: number;
930}
931
932interface MultiCacheQueryOptions extends CacheQueryOptions {
933    cacheName?: string;
934}
935
936interface MutationObserverInit {
937    /** Set to a list of attribute local names (without namespace) if not all attribute mutations need to be observed and attributes is true or omitted. */
938    attributeFilter?: string[];
939    /** Set to true if attributes is true or omitted and target's attribute value before the mutation needs to be recorded. */
940    attributeOldValue?: boolean;
941    /** Set to true if mutations to target's attributes are to be observed. Can be omitted if attributeOldValue or attributeFilter is specified. */
942    attributes?: boolean;
943    /** Set to true if mutations to target's data are to be observed. Can be omitted if characterDataOldValue is specified. */
944    characterData?: boolean;
945    /** Set to true if characterData is set to true or omitted and target's data before the mutation needs to be recorded. */
946    characterDataOldValue?: boolean;
947    /** Set to true if mutations to target's children are to be observed. */
948    childList?: boolean;
949    /** Set to true if mutations to not just target, but also target's descendants are to be observed. */
950    subtree?: boolean;
951}
952
953interface NavigationPreloadState {
954    enabled?: boolean;
955    headerValue?: string;
956}
957
958interface NotificationAction {
959    action: string;
960    icon?: string;
961    title: string;
962}
963
964interface NotificationOptions {
965    actions?: NotificationAction[];
966    badge?: string;
967    body?: string;
968    data?: any;
969    dir?: NotificationDirection;
970    icon?: string;
971    image?: string;
972    lang?: string;
973    renotify?: boolean;
974    requireInteraction?: boolean;
975    silent?: boolean;
976    tag?: string;
977    timestamp?: EpochTimeStamp;
978    vibrate?: VibratePattern;
979}
980
981interface OfflineAudioCompletionEventInit extends EventInit {
982    renderedBuffer: AudioBuffer;
983}
984
985interface OfflineAudioContextOptions {
986    length: number;
987    numberOfChannels?: number;
988    sampleRate: number;
989}
990
991interface OptionalEffectTiming {
992    delay?: number;
993    direction?: PlaybackDirection;
994    duration?: number | string;
995    easing?: string;
996    endDelay?: number;
997    fill?: FillMode;
998    iterationStart?: number;
999    iterations?: number;
1000    playbackRate?: number;
1001}
1002
1003interface OscillatorOptions extends AudioNodeOptions {
1004    detune?: number;
1005    frequency?: number;
1006    periodicWave?: PeriodicWave;
1007    type?: OscillatorType;
1008}
1009
1010interface PageTransitionEventInit extends EventInit {
1011    persisted?: boolean;
1012}
1013
1014interface PannerOptions extends AudioNodeOptions {
1015    coneInnerAngle?: number;
1016    coneOuterAngle?: number;
1017    coneOuterGain?: number;
1018    distanceModel?: DistanceModelType;
1019    maxDistance?: number;
1020    orientationX?: number;
1021    orientationY?: number;
1022    orientationZ?: number;
1023    panningModel?: PanningModelType;
1024    positionX?: number;
1025    positionY?: number;
1026    positionZ?: number;
1027    refDistance?: number;
1028    rolloffFactor?: number;
1029}
1030
1031interface PaymentCurrencyAmount {
1032    currency: string;
1033    value: string;
1034}
1035
1036interface PaymentDetailsBase {
1037    displayItems?: PaymentItem[];
1038    modifiers?: PaymentDetailsModifier[];
1039}
1040
1041interface PaymentDetailsInit extends PaymentDetailsBase {
1042    id?: string;
1043    total: PaymentItem;
1044}
1045
1046interface PaymentDetailsModifier {
1047    additionalDisplayItems?: PaymentItem[];
1048    data?: any;
1049    supportedMethods: string;
1050    total?: PaymentItem;
1051}
1052
1053interface PaymentDetailsUpdate extends PaymentDetailsBase {
1054    paymentMethodErrors?: any;
1055    total?: PaymentItem;
1056}
1057
1058interface PaymentItem {
1059    amount: PaymentCurrencyAmount;
1060    label: string;
1061    pending?: boolean;
1062}
1063
1064interface PaymentMethodChangeEventInit extends PaymentRequestUpdateEventInit {
1065    methodDetails?: any;
1066    methodName?: string;
1067}
1068
1069interface PaymentMethodData {
1070    data?: any;
1071    supportedMethods: string;
1072}
1073
1074interface PaymentRequestUpdateEventInit extends EventInit {
1075}
1076
1077interface PaymentValidationErrors {
1078    error?: string;
1079    paymentMethod?: any;
1080}
1081
1082interface Pbkdf2Params extends Algorithm {
1083    hash: HashAlgorithmIdentifier;
1084    iterations: number;
1085    salt: BufferSource;
1086}
1087
1088interface PerformanceMarkOptions {
1089    detail?: any;
1090    startTime?: DOMHighResTimeStamp;
1091}
1092
1093interface PerformanceMeasureOptions {
1094    detail?: any;
1095    duration?: DOMHighResTimeStamp;
1096    end?: string | DOMHighResTimeStamp;
1097    start?: string | DOMHighResTimeStamp;
1098}
1099
1100interface PerformanceObserverInit {
1101    buffered?: boolean;
1102    entryTypes?: string[];
1103    type?: string;
1104}
1105
1106interface PeriodicWaveConstraints {
1107    disableNormalization?: boolean;
1108}
1109
1110interface PeriodicWaveOptions extends PeriodicWaveConstraints {
1111    imag?: number[] | Float32Array;
1112    real?: number[] | Float32Array;
1113}
1114
1115interface PermissionDescriptor {
1116    name: PermissionName;
1117}
1118
1119interface PictureInPictureEventInit extends EventInit {
1120    pictureInPictureWindow: PictureInPictureWindow;
1121}
1122
1123interface PointerEventInit extends MouseEventInit {
1124    coalescedEvents?: PointerEvent[];
1125    height?: number;
1126    isPrimary?: boolean;
1127    pointerId?: number;
1128    pointerType?: string;
1129    predictedEvents?: PointerEvent[];
1130    pressure?: number;
1131    tangentialPressure?: number;
1132    tiltX?: number;
1133    tiltY?: number;
1134    twist?: number;
1135    width?: number;
1136}
1137
1138interface PopStateEventInit extends EventInit {
1139    state?: any;
1140}
1141
1142interface PositionOptions {
1143    enableHighAccuracy?: boolean;
1144    maximumAge?: number;
1145    timeout?: number;
1146}
1147
1148interface ProgressEventInit extends EventInit {
1149    lengthComputable?: boolean;
1150    loaded?: number;
1151    total?: number;
1152}
1153
1154interface PromiseRejectionEventInit extends EventInit {
1155    promise: Promise<any>;
1156    reason?: any;
1157}
1158
1159interface PropertyIndexedKeyframes {
1160    composite?: CompositeOperationOrAuto | CompositeOperationOrAuto[];
1161    easing?: string | string[];
1162    offset?: number | (number | null)[];
1163    [property: string]: string | string[] | number | null | (number | null)[] | undefined;
1164}
1165
1166interface PublicKeyCredentialCreationOptions {
1167    attestation?: AttestationConveyancePreference;
1168    authenticatorSelection?: AuthenticatorSelectionCriteria;
1169    challenge: BufferSource;
1170    excludeCredentials?: PublicKeyCredentialDescriptor[];
1171    extensions?: AuthenticationExtensionsClientInputs;
1172    pubKeyCredParams: PublicKeyCredentialParameters[];
1173    rp: PublicKeyCredentialRpEntity;
1174    timeout?: number;
1175    user: PublicKeyCredentialUserEntity;
1176}
1177
1178interface PublicKeyCredentialDescriptor {
1179    id: BufferSource;
1180    transports?: AuthenticatorTransport[];
1181    type: PublicKeyCredentialType;
1182}
1183
1184interface PublicKeyCredentialEntity {
1185    name: string;
1186}
1187
1188interface PublicKeyCredentialParameters {
1189    alg: COSEAlgorithmIdentifier;
1190    type: PublicKeyCredentialType;
1191}
1192
1193interface PublicKeyCredentialRequestOptions {
1194    allowCredentials?: PublicKeyCredentialDescriptor[];
1195    challenge: BufferSource;
1196    extensions?: AuthenticationExtensionsClientInputs;
1197    rpId?: string;
1198    timeout?: number;
1199    userVerification?: UserVerificationRequirement;
1200}
1201
1202interface PublicKeyCredentialRpEntity extends PublicKeyCredentialEntity {
1203    id?: string;
1204}
1205
1206interface PublicKeyCredentialUserEntity extends PublicKeyCredentialEntity {
1207    displayName: string;
1208    id: BufferSource;
1209}
1210
1211interface PushSubscriptionJSON {
1212    endpoint?: string;
1213    expirationTime?: EpochTimeStamp | null;
1214    keys?: Record<string, string>;
1215}
1216
1217interface PushSubscriptionOptionsInit {
1218    applicationServerKey?: BufferSource | string | null;
1219    userVisibleOnly?: boolean;
1220}
1221
1222interface QueuingStrategy<T = any> {
1223    highWaterMark?: number;
1224    size?: QueuingStrategySize<T>;
1225}
1226
1227interface QueuingStrategyInit {
1228    /**
1229     * Creates a new ByteLengthQueuingStrategy with the provided high water mark.
1230     *
1231     * Note that the provided high water mark will not be validated ahead of time. Instead, if it is negative, NaN, or not a number, the resulting ByteLengthQueuingStrategy will cause the corresponding stream constructor to throw.
1232     */
1233    highWaterMark: number;
1234}
1235
1236interface RTCAnswerOptions extends RTCOfferAnswerOptions {
1237}
1238
1239interface RTCCertificateExpiration {
1240    expires?: number;
1241}
1242
1243interface RTCConfiguration {
1244    bundlePolicy?: RTCBundlePolicy;
1245    certificates?: RTCCertificate[];
1246    iceCandidatePoolSize?: number;
1247    iceServers?: RTCIceServer[];
1248    iceTransportPolicy?: RTCIceTransportPolicy;
1249    rtcpMuxPolicy?: RTCRtcpMuxPolicy;
1250}
1251
1252interface RTCDTMFToneChangeEventInit extends EventInit {
1253    tone?: string;
1254}
1255
1256interface RTCDataChannelEventInit extends EventInit {
1257    channel: RTCDataChannel;
1258}
1259
1260interface RTCDataChannelInit {
1261    id?: number;
1262    maxPacketLifeTime?: number;
1263    maxRetransmits?: number;
1264    negotiated?: boolean;
1265    ordered?: boolean;
1266    protocol?: string;
1267}
1268
1269interface RTCDtlsFingerprint {
1270    algorithm?: string;
1271    value?: string;
1272}
1273
1274interface RTCEncodedAudioFrameMetadata {
1275    contributingSources?: number[];
1276    synchronizationSource?: number;
1277}
1278
1279interface RTCEncodedVideoFrameMetadata {
1280    contributingSources?: number[];
1281    dependencies?: number[];
1282    frameId?: number;
1283    height?: number;
1284    spatialIndex?: number;
1285    synchronizationSource?: number;
1286    temporalIndex?: number;
1287    width?: number;
1288}
1289
1290interface RTCErrorEventInit extends EventInit {
1291    error: RTCError;
1292}
1293
1294interface RTCErrorInit {
1295    errorDetail: RTCErrorDetailType;
1296    httpRequestStatusCode?: number;
1297    receivedAlert?: number;
1298    sctpCauseCode?: number;
1299    sdpLineNumber?: number;
1300    sentAlert?: number;
1301}
1302
1303interface RTCIceCandidateInit {
1304    candidate?: string;
1305    sdpMLineIndex?: number | null;
1306    sdpMid?: string | null;
1307    usernameFragment?: string | null;
1308}
1309
1310interface RTCIceCandidatePairStats extends RTCStats {
1311    availableIncomingBitrate?: number;
1312    availableOutgoingBitrate?: number;
1313    bytesReceived?: number;
1314    bytesSent?: number;
1315    currentRoundTripTime?: number;
1316    lastPacketReceivedTimestamp?: DOMHighResTimeStamp;
1317    lastPacketSentTimestamp?: DOMHighResTimeStamp;
1318    localCandidateId: string;
1319    nominated?: boolean;
1320    remoteCandidateId: string;
1321    requestsReceived?: number;
1322    requestsSent?: number;
1323    responsesReceived?: number;
1324    responsesSent?: number;
1325    state: RTCStatsIceCandidatePairState;
1326    totalRoundTripTime?: number;
1327    transportId: string;
1328}
1329
1330interface RTCIceServer {
1331    credential?: string;
1332    urls: string | string[];
1333    username?: string;
1334}
1335
1336interface RTCInboundRtpStreamStats extends RTCReceivedRtpStreamStats {
1337    audioLevel?: number;
1338    bytesReceived?: number;
1339    concealedSamples?: number;
1340    concealmentEvents?: number;
1341    decoderImplementation?: string;
1342    estimatedPlayoutTimestamp?: DOMHighResTimeStamp;
1343    fecPacketsDiscarded?: number;
1344    fecPacketsReceived?: number;
1345    firCount?: number;
1346    frameHeight?: number;
1347    frameWidth?: number;
1348    framesDecoded?: number;
1349    framesDropped?: number;
1350    framesPerSecond?: number;
1351    framesReceived?: number;
1352    headerBytesReceived?: number;
1353    insertedSamplesForDeceleration?: number;
1354    jitterBufferDelay?: number;
1355    jitterBufferEmittedCount?: number;
1356    keyFramesDecoded?: number;
1357    kind: string;
1358    lastPacketReceivedTimestamp?: DOMHighResTimeStamp;
1359    nackCount?: number;
1360    packetsDiscarded?: number;
1361    pliCount?: number;
1362    qpSum?: number;
1363    remoteId?: string;
1364    removedSamplesForAcceleration?: number;
1365    silentConcealedSamples?: number;
1366    totalAudioEnergy?: number;
1367    totalDecodeTime?: number;
1368    totalInterFrameDelay?: number;
1369    totalProcessingDelay?: number;
1370    totalSamplesDuration?: number;
1371    totalSamplesReceived?: number;
1372    totalSquaredInterFrameDelay?: number;
1373}
1374
1375interface RTCLocalSessionDescriptionInit {
1376    sdp?: string;
1377    type?: RTCSdpType;
1378}
1379
1380interface RTCOfferAnswerOptions {
1381}
1382
1383interface RTCOfferOptions extends RTCOfferAnswerOptions {
1384    iceRestart?: boolean;
1385    offerToReceiveAudio?: boolean;
1386    offerToReceiveVideo?: boolean;
1387}
1388
1389interface RTCOutboundRtpStreamStats extends RTCSentRtpStreamStats {
1390    firCount?: number;
1391    frameHeight?: number;
1392    frameWidth?: number;
1393    framesEncoded?: number;
1394    framesPerSecond?: number;
1395    framesSent?: number;
1396    headerBytesSent?: number;
1397    hugeFramesSent?: number;
1398    keyFramesEncoded?: number;
1399    mediaSourceId?: string;
1400    nackCount?: number;
1401    pliCount?: number;
1402    qpSum?: number;
1403    qualityLimitationResolutionChanges?: number;
1404    remoteId?: string;
1405    retransmittedBytesSent?: number;
1406    retransmittedPacketsSent?: number;
1407    rid?: string;
1408    targetBitrate?: number;
1409    totalEncodeTime?: number;
1410    totalEncodedBytesTarget?: number;
1411    totalPacketSendDelay?: number;
1412}
1413
1414interface RTCPeerConnectionIceErrorEventInit extends EventInit {
1415    address?: string | null;
1416    errorCode: number;
1417    errorText?: string;
1418    port?: number | null;
1419    url?: string;
1420}
1421
1422interface RTCPeerConnectionIceEventInit extends EventInit {
1423    candidate?: RTCIceCandidate | null;
1424    url?: string | null;
1425}
1426
1427interface RTCReceivedRtpStreamStats extends RTCRtpStreamStats {
1428    jitter?: number;
1429    packetsLost?: number;
1430    packetsReceived?: number;
1431}
1432
1433interface RTCRtcpParameters {
1434    cname?: string;
1435    reducedSize?: boolean;
1436}
1437
1438interface RTCRtpCapabilities {
1439    codecs: RTCRtpCodecCapability[];
1440    headerExtensions: RTCRtpHeaderExtensionCapability[];
1441}
1442
1443interface RTCRtpCodecCapability {
1444    channels?: number;
1445    clockRate: number;
1446    mimeType: string;
1447    sdpFmtpLine?: string;
1448}
1449
1450interface RTCRtpCodecParameters {
1451    channels?: number;
1452    clockRate: number;
1453    mimeType: string;
1454    payloadType: number;
1455    sdpFmtpLine?: string;
1456}
1457
1458interface RTCRtpCodingParameters {
1459    rid?: string;
1460}
1461
1462interface RTCRtpContributingSource {
1463    audioLevel?: number;
1464    rtpTimestamp: number;
1465    source: number;
1466    timestamp: DOMHighResTimeStamp;
1467}
1468
1469interface RTCRtpEncodingParameters extends RTCRtpCodingParameters {
1470    active?: boolean;
1471    maxBitrate?: number;
1472    maxFramerate?: number;
1473    networkPriority?: RTCPriorityType;
1474    priority?: RTCPriorityType;
1475    scaleResolutionDownBy?: number;
1476}
1477
1478interface RTCRtpHeaderExtensionCapability {
1479    uri?: string;
1480}
1481
1482interface RTCRtpHeaderExtensionParameters {
1483    encrypted?: boolean;
1484    id: number;
1485    uri: string;
1486}
1487
1488interface RTCRtpParameters {
1489    codecs: RTCRtpCodecParameters[];
1490    headerExtensions: RTCRtpHeaderExtensionParameters[];
1491    rtcp: RTCRtcpParameters;
1492}
1493
1494interface RTCRtpReceiveParameters extends RTCRtpParameters {
1495}
1496
1497interface RTCRtpSendParameters extends RTCRtpParameters {
1498    degradationPreference?: RTCDegradationPreference;
1499    encodings: RTCRtpEncodingParameters[];
1500    transactionId: string;
1501}
1502
1503interface RTCRtpStreamStats extends RTCStats {
1504    codecId?: string;
1505    kind: string;
1506    ssrc: number;
1507    transportId?: string;
1508}
1509
1510interface RTCRtpSynchronizationSource extends RTCRtpContributingSource {
1511}
1512
1513interface RTCRtpTransceiverInit {
1514    direction?: RTCRtpTransceiverDirection;
1515    sendEncodings?: RTCRtpEncodingParameters[];
1516    streams?: MediaStream[];
1517}
1518
1519interface RTCSentRtpStreamStats extends RTCRtpStreamStats {
1520    bytesSent?: number;
1521    packetsSent?: number;
1522}
1523
1524interface RTCSessionDescriptionInit {
1525    sdp?: string;
1526    type: RTCSdpType;
1527}
1528
1529interface RTCStats {
1530    id: string;
1531    timestamp: DOMHighResTimeStamp;
1532    type: RTCStatsType;
1533}
1534
1535interface RTCTrackEventInit extends EventInit {
1536    receiver: RTCRtpReceiver;
1537    streams?: MediaStream[];
1538    track: MediaStreamTrack;
1539    transceiver: RTCRtpTransceiver;
1540}
1541
1542interface RTCTransportStats extends RTCStats {
1543    bytesReceived?: number;
1544    bytesSent?: number;
1545    dtlsCipher?: string;
1546    dtlsState: RTCDtlsTransportState;
1547    localCertificateId?: string;
1548    remoteCertificateId?: string;
1549    selectedCandidatePairId?: string;
1550    srtpCipher?: string;
1551    tlsVersion?: string;
1552}
1553
1554interface ReadableStreamGetReaderOptions {
1555    /**
1556     * Creates a ReadableStreamBYOBReader and locks the stream to the new reader.
1557     *
1558     * This call behaves the same way as the no-argument variant, except that it only works on readable byte streams, i.e. streams which were constructed specifically with the ability to handle "bring your own buffer" reading. The returned BYOB reader provides the ability to directly read individual chunks from the stream via its read() method, into developer-supplied buffers, allowing more precise control over allocation.
1559     */
1560    mode?: ReadableStreamReaderMode;
1561}
1562
1563interface ReadableStreamReadDoneResult<T> {
1564    done: true;
1565    value?: T;
1566}
1567
1568interface ReadableStreamReadValueResult<T> {
1569    done: false;
1570    value: T;
1571}
1572
1573interface ReadableWritablePair<R = any, W = any> {
1574    readable: ReadableStream<R>;
1575    /**
1576     * Provides a convenient, chainable way of piping this readable stream through a transform stream (or any other { writable, readable } pair). It simply pipes the stream into the writable side of the supplied pair, and returns the readable side for further use.
1577     *
1578     * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.
1579     */
1580    writable: WritableStream<W>;
1581}
1582
1583interface RegistrationOptions {
1584    scope?: string;
1585    type?: WorkerType;
1586    updateViaCache?: ServiceWorkerUpdateViaCache;
1587}
1588
1589interface RequestInit {
1590    /** A BodyInit object or null to set request's body. */
1591    body?: BodyInit | null;
1592    /** A string indicating how the request will interact with the browser's cache to set request's cache. */
1593    cache?: RequestCache;
1594    /** A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request's credentials. */
1595    credentials?: RequestCredentials;
1596    /** A Headers object, an object literal, or an array of two-item arrays to set request's headers. */
1597    headers?: HeadersInit;
1598    /** A cryptographic hash of the resource to be fetched by request. Sets request's integrity. */
1599    integrity?: string;
1600    /** A boolean to set request's keepalive. */
1601    keepalive?: boolean;
1602    /** A string to set request's method. */
1603    method?: string;
1604    /** A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode. */
1605    mode?: RequestMode;
1606    /** A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect. */
1607    redirect?: RequestRedirect;
1608    /** A string whose value is a same-origin URL, "about:client", or the empty string, to set request's referrer. */
1609    referrer?: string;
1610    /** A referrer policy to set request's referrerPolicy. */
1611    referrerPolicy?: ReferrerPolicy;
1612    /** An AbortSignal to set request's signal. */
1613    signal?: AbortSignal | null;
1614    /** Can only be null. Used to disassociate request from any Window. */
1615    window?: null;
1616}
1617
1618interface ResizeObserverOptions {
1619    box?: ResizeObserverBoxOptions;
1620}
1621
1622interface ResponseInit {
1623    headers?: HeadersInit;
1624    status?: number;
1625    statusText?: string;
1626}
1627
1628interface RsaHashedImportParams extends Algorithm {
1629    hash: HashAlgorithmIdentifier;
1630}
1631
1632interface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm {
1633    hash: KeyAlgorithm;
1634}
1635
1636interface RsaHashedKeyGenParams extends RsaKeyGenParams {
1637    hash: HashAlgorithmIdentifier;
1638}
1639
1640interface RsaKeyAlgorithm extends KeyAlgorithm {
1641    modulusLength: number;
1642    publicExponent: BigInteger;
1643}
1644
1645interface RsaKeyGenParams extends Algorithm {
1646    modulusLength: number;
1647    publicExponent: BigInteger;
1648}
1649
1650interface RsaOaepParams extends Algorithm {
1651    label?: BufferSource;
1652}
1653
1654interface RsaOtherPrimesInfo {
1655    d?: string;
1656    r?: string;
1657    t?: string;
1658}
1659
1660interface RsaPssParams extends Algorithm {
1661    saltLength: number;
1662}
1663
1664interface SVGBoundingBoxOptions {
1665    clipped?: boolean;
1666    fill?: boolean;
1667    markers?: boolean;
1668    stroke?: boolean;
1669}
1670
1671interface ScrollIntoViewOptions extends ScrollOptions {
1672    block?: ScrollLogicalPosition;
1673    inline?: ScrollLogicalPosition;
1674}
1675
1676interface ScrollOptions {
1677    behavior?: ScrollBehavior;
1678}
1679
1680interface ScrollToOptions extends ScrollOptions {
1681    left?: number;
1682    top?: number;
1683}
1684
1685interface SecurityPolicyViolationEventInit extends EventInit {
1686    blockedURI?: string;
1687    columnNumber?: number;
1688    disposition: SecurityPolicyViolationEventDisposition;
1689    documentURI: string;
1690    effectiveDirective: string;
1691    lineNumber?: number;
1692    originalPolicy: string;
1693    referrer?: string;
1694    sample?: string;
1695    sourceFile?: string;
1696    statusCode: number;
1697    violatedDirective: string;
1698}
1699
1700interface ShadowRootInit {
1701    delegatesFocus?: boolean;
1702    mode: ShadowRootMode;
1703    slotAssignment?: SlotAssignmentMode;
1704}
1705
1706interface ShareData {
1707    files?: File[];
1708    text?: string;
1709    title?: string;
1710    url?: string;
1711}
1712
1713interface SpeechSynthesisErrorEventInit extends SpeechSynthesisEventInit {
1714    error: SpeechSynthesisErrorCode;
1715}
1716
1717interface SpeechSynthesisEventInit extends EventInit {
1718    charIndex?: number;
1719    charLength?: number;
1720    elapsedTime?: number;
1721    name?: string;
1722    utterance: SpeechSynthesisUtterance;
1723}
1724
1725interface StaticRangeInit {
1726    endContainer: Node;
1727    endOffset: number;
1728    startContainer: Node;
1729    startOffset: number;
1730}
1731
1732interface StereoPannerOptions extends AudioNodeOptions {
1733    pan?: number;
1734}
1735
1736interface StorageEstimate {
1737    quota?: number;
1738    usage?: number;
1739}
1740
1741interface StorageEventInit extends EventInit {
1742    key?: string | null;
1743    newValue?: string | null;
1744    oldValue?: string | null;
1745    storageArea?: Storage | null;
1746    url?: string;
1747}
1748
1749interface StreamPipeOptions {
1750    preventAbort?: boolean;
1751    preventCancel?: boolean;
1752    /**
1753     * Pipes this readable stream to a given writable stream destination. The way in which the piping process behaves under various error conditions can be customized with a number of passed options. It returns a promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered.
1754     *
1755     * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.
1756     *
1757     * Errors and closures of the source and destination streams propagate as follows:
1758     *
1759     * An error in this source readable stream will abort destination, unless preventAbort is truthy. The returned promise will be rejected with the source's error, or with any error that occurs during aborting the destination.
1760     *
1761     * An error in destination will cancel this source readable stream, unless preventCancel is truthy. The returned promise will be rejected with the destination's error, or with any error that occurs during canceling the source.
1762     *
1763     * When this source readable stream closes, destination will be closed, unless preventClose is truthy. The returned promise will be fulfilled once this process completes, unless an error is encountered while closing the destination, in which case it will be rejected with that error.
1764     *
1765     * If destination starts out closed or closing, this source readable stream will be canceled, unless preventCancel is true. The returned promise will be rejected with an error indicating piping to a closed stream failed, or with any error that occurs during canceling the source.
1766     *
1767     * The signal option can be set to an AbortSignal to allow aborting an ongoing pipe operation via the corresponding AbortController. In this case, this source readable stream will be canceled, and destination aborted, unless the respective options preventCancel or preventAbort are set.
1768     */
1769    preventClose?: boolean;
1770    signal?: AbortSignal;
1771}
1772
1773interface StructuredSerializeOptions {
1774    transfer?: Transferable[];
1775}
1776
1777interface SubmitEventInit extends EventInit {
1778    submitter?: HTMLElement | null;
1779}
1780
1781interface TextDecodeOptions {
1782    stream?: boolean;
1783}
1784
1785interface TextDecoderOptions {
1786    fatal?: boolean;
1787    ignoreBOM?: boolean;
1788}
1789
1790interface TextEncoderEncodeIntoResult {
1791    read?: number;
1792    written?: number;
1793}
1794
1795interface TouchEventInit extends EventModifierInit {
1796    changedTouches?: Touch[];
1797    targetTouches?: Touch[];
1798    touches?: Touch[];
1799}
1800
1801interface TouchInit {
1802    altitudeAngle?: number;
1803    azimuthAngle?: number;
1804    clientX?: number;
1805    clientY?: number;
1806    force?: number;
1807    identifier: number;
1808    pageX?: number;
1809    pageY?: number;
1810    radiusX?: number;
1811    radiusY?: number;
1812    rotationAngle?: number;
1813    screenX?: number;
1814    screenY?: number;
1815    target: EventTarget;
1816    touchType?: TouchType;
1817}
1818
1819interface TrackEventInit extends EventInit {
1820    track?: TextTrack | null;
1821}
1822
1823interface Transformer<I = any, O = any> {
1824    flush?: TransformerFlushCallback<O>;
1825    readableType?: undefined;
1826    start?: TransformerStartCallback<O>;
1827    transform?: TransformerTransformCallback<I, O>;
1828    writableType?: undefined;
1829}
1830
1831interface TransitionEventInit extends EventInit {
1832    elapsedTime?: number;
1833    propertyName?: string;
1834    pseudoElement?: string;
1835}
1836
1837interface UIEventInit extends EventInit {
1838    detail?: number;
1839    view?: Window | null;
1840    /** @deprecated */
1841    which?: number;
1842}
1843
1844interface ULongRange {
1845    max?: number;
1846    min?: number;
1847}
1848
1849interface UnderlyingByteSource {
1850    autoAllocateChunkSize?: number;
1851    cancel?: UnderlyingSourceCancelCallback;
1852    pull?: (controller: ReadableByteStreamController) => void | PromiseLike<void>;
1853    start?: (controller: ReadableByteStreamController) => any;
1854    type: "bytes";
1855}
1856
1857interface UnderlyingDefaultSource<R = any> {
1858    cancel?: UnderlyingSourceCancelCallback;
1859    pull?: (controller: ReadableStreamDefaultController<R>) => void | PromiseLike<void>;
1860    start?: (controller: ReadableStreamDefaultController<R>) => any;
1861    type?: undefined;
1862}
1863
1864interface UnderlyingSink<W = any> {
1865    abort?: UnderlyingSinkAbortCallback;
1866    close?: UnderlyingSinkCloseCallback;
1867    start?: UnderlyingSinkStartCallback;
1868    type?: undefined;
1869    write?: UnderlyingSinkWriteCallback<W>;
1870}
1871
1872interface UnderlyingSource<R = any> {
1873    autoAllocateChunkSize?: number;
1874    cancel?: UnderlyingSourceCancelCallback;
1875    pull?: UnderlyingSourcePullCallback<R>;
1876    start?: UnderlyingSourceStartCallback<R>;
1877    type?: ReadableStreamType;
1878}
1879
1880interface ValidityStateFlags {
1881    badInput?: boolean;
1882    customError?: boolean;
1883    patternMismatch?: boolean;
1884    rangeOverflow?: boolean;
1885    rangeUnderflow?: boolean;
1886    stepMismatch?: boolean;
1887    tooLong?: boolean;
1888    tooShort?: boolean;
1889    typeMismatch?: boolean;
1890    valueMissing?: boolean;
1891}
1892
1893interface VideoColorSpaceInit {
1894    fullRange?: boolean | null;
1895    matrix?: VideoMatrixCoefficients | null;
1896    primaries?: VideoColorPrimaries | null;
1897    transfer?: VideoTransferCharacteristics | null;
1898}
1899
1900interface VideoConfiguration {
1901    bitrate: number;
1902    colorGamut?: ColorGamut;
1903    contentType: string;
1904    framerate: number;
1905    hdrMetadataType?: HdrMetadataType;
1906    height: number;
1907    scalabilityMode?: string;
1908    transferFunction?: TransferFunction;
1909    width: number;
1910}
1911
1912interface VideoFrameCallbackMetadata {
1913    captureTime?: DOMHighResTimeStamp;
1914    expectedDisplayTime: DOMHighResTimeStamp;
1915    height: number;
1916    mediaTime: number;
1917    presentationTime: DOMHighResTimeStamp;
1918    presentedFrames: number;
1919    processingDuration?: number;
1920    receiveTime?: DOMHighResTimeStamp;
1921    rtpTimestamp?: number;
1922    width: number;
1923}
1924
1925interface WaveShaperOptions extends AudioNodeOptions {
1926    curve?: number[] | Float32Array;
1927    oversample?: OverSampleType;
1928}
1929
1930interface WebGLContextAttributes {
1931    alpha?: boolean;
1932    antialias?: boolean;
1933    depth?: boolean;
1934    desynchronized?: boolean;
1935    failIfMajorPerformanceCaveat?: boolean;
1936    powerPreference?: WebGLPowerPreference;
1937    premultipliedAlpha?: boolean;
1938    preserveDrawingBuffer?: boolean;
1939    stencil?: boolean;
1940}
1941
1942interface WebGLContextEventInit extends EventInit {
1943    statusMessage?: string;
1944}
1945
1946interface WheelEventInit extends MouseEventInit {
1947    deltaMode?: number;
1948    deltaX?: number;
1949    deltaY?: number;
1950    deltaZ?: number;
1951}
1952
1953interface WindowPostMessageOptions extends StructuredSerializeOptions {
1954    targetOrigin?: string;
1955}
1956
1957interface WorkerOptions {
1958    credentials?: RequestCredentials;
1959    name?: string;
1960    type?: WorkerType;
1961}
1962
1963interface WorkletOptions {
1964    credentials?: RequestCredentials;
1965}
1966
1967type NodeFilter = ((node: Node) => number) | { acceptNode(node: Node): number; };
1968
1969declare var NodeFilter: {
1970    readonly FILTER_ACCEPT: number;
1971    readonly FILTER_REJECT: number;
1972    readonly FILTER_SKIP: number;
1973    readonly SHOW_ALL: number;
1974    readonly SHOW_ATTRIBUTE: number;
1975    readonly SHOW_CDATA_SECTION: number;
1976    readonly SHOW_COMMENT: number;
1977    readonly SHOW_DOCUMENT: number;
1978    readonly SHOW_DOCUMENT_FRAGMENT: number;
1979    readonly SHOW_DOCUMENT_TYPE: number;
1980    readonly SHOW_ELEMENT: number;
1981    readonly SHOW_ENTITY: number;
1982    readonly SHOW_ENTITY_REFERENCE: number;
1983    readonly SHOW_NOTATION: number;
1984    readonly SHOW_PROCESSING_INSTRUCTION: number;
1985    readonly SHOW_TEXT: number;
1986};
1987
1988type XPathNSResolver = ((prefix: string | null) => string | null) | { lookupNamespaceURI(prefix: string | null): string | null; };
1989
1990/** The ANGLE_instanced_arrays extension is part of the WebGL API and allows to draw the same object, or groups of similar objects multiple times, if they share the same vertex data, primitive count and type. */
1991interface ANGLE_instanced_arrays {
1992    drawArraysInstancedANGLE(mode: GLenum, first: GLint, count: GLsizei, primcount: GLsizei): void;
1993    drawElementsInstancedANGLE(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, primcount: GLsizei): void;
1994    vertexAttribDivisorANGLE(index: GLuint, divisor: GLuint): void;
1995    readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: GLenum;
1996}
1997
1998interface ARIAMixin {
1999    ariaAtomic: string | null;
2000    ariaAutoComplete: string | null;
2001    ariaBusy: string | null;
2002    ariaChecked: string | null;
2003    ariaColCount: string | null;
2004    ariaColIndex: string | null;
2005    ariaColIndexText: string | null;
2006    ariaColSpan: string | null;
2007    ariaCurrent: string | null;
2008    ariaDisabled: string | null;
2009    ariaExpanded: string | null;
2010    ariaHasPopup: string | null;
2011    ariaHidden: string | null;
2012    ariaInvalid: string | null;
2013    ariaKeyShortcuts: string | null;
2014    ariaLabel: string | null;
2015    ariaLevel: string | null;
2016    ariaLive: string | null;
2017    ariaModal: string | null;
2018    ariaMultiLine: string | null;
2019    ariaMultiSelectable: string | null;
2020    ariaOrientation: string | null;
2021    ariaPlaceholder: string | null;
2022    ariaPosInSet: string | null;
2023    ariaPressed: string | null;
2024    ariaReadOnly: string | null;
2025    ariaRequired: string | null;
2026    ariaRoleDescription: string | null;
2027    ariaRowCount: string | null;
2028    ariaRowIndex: string | null;
2029    ariaRowIndexText: string | null;
2030    ariaRowSpan: string | null;
2031    ariaSelected: string | null;
2032    ariaSetSize: string | null;
2033    ariaSort: string | null;
2034    ariaValueMax: string | null;
2035    ariaValueMin: string | null;
2036    ariaValueNow: string | null;
2037    ariaValueText: string | null;
2038    role: string | null;
2039}
2040
2041/** A controller object that allows you to abort one or more DOM requests as and when desired. */
2042interface AbortController {
2043    /** Returns the AbortSignal object associated with this object. */
2044    readonly signal: AbortSignal;
2045    /** Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted. */
2046    abort(reason?: any): void;
2047}
2048
2049declare var AbortController: {
2050    prototype: AbortController;
2051    new(): AbortController;
2052};
2053
2054interface AbortSignalEventMap {
2055    "abort": Event;
2056}
2057
2058/** A signal object that allows you to communicate with a DOM request (such as a Fetch) and abort it if required via an AbortController object. */
2059interface AbortSignal extends EventTarget {
2060    /** Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise. */
2061    readonly aborted: boolean;
2062    onabort: ((this: AbortSignal, ev: Event) => any) | null;
2063    readonly reason: any;
2064    throwIfAborted(): void;
2065    addEventListener<K extends keyof AbortSignalEventMap>(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2066    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2067    removeEventListener<K extends keyof AbortSignalEventMap>(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2068    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2069}
2070
2071declare var AbortSignal: {
2072    prototype: AbortSignal;
2073    new(): AbortSignal;
2074    abort(reason?: any): AbortSignal;
2075    timeout(milliseconds: number): AbortSignal;
2076};
2077
2078interface AbstractRange {
2079    /** Returns true if range is collapsed, and false otherwise. */
2080    readonly collapsed: boolean;
2081    /** Returns range's end node. */
2082    readonly endContainer: Node;
2083    /** Returns range's end offset. */
2084    readonly endOffset: number;
2085    /** Returns range's start node. */
2086    readonly startContainer: Node;
2087    /** Returns range's start offset. */
2088    readonly startOffset: number;
2089}
2090
2091declare var AbstractRange: {
2092    prototype: AbstractRange;
2093    new(): AbstractRange;
2094};
2095
2096interface AbstractWorkerEventMap {
2097    "error": ErrorEvent;
2098}
2099
2100interface AbstractWorker {
2101    onerror: ((this: AbstractWorker, ev: ErrorEvent) => any) | null;
2102    addEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2103    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2104    removeEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2105    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2106}
2107
2108/** A node able to provide real-time frequency and time-domain analysis information. It is an AudioNode that passes the audio stream unchanged from the input to the output, but allows you to take the generated data, process it, and create audio visualizations. */
2109interface AnalyserNode extends AudioNode {
2110    fftSize: number;
2111    readonly frequencyBinCount: number;
2112    maxDecibels: number;
2113    minDecibels: number;
2114    smoothingTimeConstant: number;
2115    getByteFrequencyData(array: Uint8Array): void;
2116    getByteTimeDomainData(array: Uint8Array): void;
2117    getFloatFrequencyData(array: Float32Array): void;
2118    getFloatTimeDomainData(array: Float32Array): void;
2119}
2120
2121declare var AnalyserNode: {
2122    prototype: AnalyserNode;
2123    new(context: BaseAudioContext, options?: AnalyserOptions): AnalyserNode;
2124};
2125
2126interface Animatable {
2127    animate(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions): Animation;
2128    getAnimations(options?: GetAnimationsOptions): Animation[];
2129}
2130
2131interface AnimationEventMap {
2132    "cancel": AnimationPlaybackEvent;
2133    "finish": AnimationPlaybackEvent;
2134    "remove": Event;
2135}
2136
2137interface Animation extends EventTarget {
2138    currentTime: CSSNumberish | null;
2139    effect: AnimationEffect | null;
2140    readonly finished: Promise<Animation>;
2141    id: string;
2142    oncancel: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;
2143    onfinish: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;
2144    onremove: ((this: Animation, ev: Event) => any) | null;
2145    readonly pending: boolean;
2146    readonly playState: AnimationPlayState;
2147    playbackRate: number;
2148    readonly ready: Promise<Animation>;
2149    readonly replaceState: AnimationReplaceState;
2150    startTime: CSSNumberish | null;
2151    timeline: AnimationTimeline | null;
2152    cancel(): void;
2153    commitStyles(): void;
2154    finish(): void;
2155    pause(): void;
2156    persist(): void;
2157    play(): void;
2158    reverse(): void;
2159    updatePlaybackRate(playbackRate: number): void;
2160    addEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2161    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2162    removeEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2163    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2164}
2165
2166declare var Animation: {
2167    prototype: Animation;
2168    new(effect?: AnimationEffect | null, timeline?: AnimationTimeline | null): Animation;
2169};
2170
2171interface AnimationEffect {
2172    getComputedTiming(): ComputedEffectTiming;
2173    getTiming(): EffectTiming;
2174    updateTiming(timing?: OptionalEffectTiming): void;
2175}
2176
2177declare var AnimationEffect: {
2178    prototype: AnimationEffect;
2179    new(): AnimationEffect;
2180};
2181
2182/** Events providing information related to animations. */
2183interface AnimationEvent extends Event {
2184    readonly animationName: string;
2185    readonly elapsedTime: number;
2186    readonly pseudoElement: string;
2187}
2188
2189declare var AnimationEvent: {
2190    prototype: AnimationEvent;
2191    new(type: string, animationEventInitDict?: AnimationEventInit): AnimationEvent;
2192};
2193
2194interface AnimationFrameProvider {
2195    cancelAnimationFrame(handle: number): void;
2196    requestAnimationFrame(callback: FrameRequestCallback): number;
2197}
2198
2199interface AnimationPlaybackEvent extends Event {
2200    readonly currentTime: CSSNumberish | null;
2201    readonly timelineTime: CSSNumberish | null;
2202}
2203
2204declare var AnimationPlaybackEvent: {
2205    prototype: AnimationPlaybackEvent;
2206    new(type: string, eventInitDict?: AnimationPlaybackEventInit): AnimationPlaybackEvent;
2207};
2208
2209interface AnimationTimeline {
2210    readonly currentTime: CSSNumberish | null;
2211}
2212
2213declare var AnimationTimeline: {
2214    prototype: AnimationTimeline;
2215    new(): AnimationTimeline;
2216};
2217
2218/** A DOM element's attribute as an object. In most DOM methods, you will probably directly retrieve the attribute as a string (e.g., Element.getAttribute(), but certain functions (e.g., Element.getAttributeNode()) or means of iterating give Attr types. */
2219interface Attr extends Node {
2220    readonly localName: string;
2221    readonly name: string;
2222    readonly namespaceURI: string | null;
2223    readonly ownerDocument: Document;
2224    readonly ownerElement: Element | null;
2225    readonly prefix: string | null;
2226    /** @deprecated */
2227    readonly specified: boolean;
2228    value: string;
2229}
2230
2231declare var Attr: {
2232    prototype: Attr;
2233    new(): Attr;
2234};
2235
2236/** A short audio asset residing in memory, created from an audio file using the AudioContext.decodeAudioData() method, or from raw data using AudioContext.createBuffer(). Once put into an AudioBuffer, the audio can then be played by being passed into an AudioBufferSourceNode. */
2237interface AudioBuffer {
2238    readonly duration: number;
2239    readonly length: number;
2240    readonly numberOfChannels: number;
2241    readonly sampleRate: number;
2242    copyFromChannel(destination: Float32Array, channelNumber: number, bufferOffset?: number): void;
2243    copyToChannel(source: Float32Array, channelNumber: number, bufferOffset?: number): void;
2244    getChannelData(channel: number): Float32Array;
2245}
2246
2247declare var AudioBuffer: {
2248    prototype: AudioBuffer;
2249    new(options: AudioBufferOptions): AudioBuffer;
2250};
2251
2252/** An AudioScheduledSourceNode which represents an audio source consisting of in-memory audio data, stored in an AudioBuffer. It's especially useful for playing back audio which has particularly stringent timing accuracy requirements, such as for sounds that must match a specific rhythm and can be kept in memory rather than being played from disk or the network. */
2253interface AudioBufferSourceNode extends AudioScheduledSourceNode {
2254    buffer: AudioBuffer | null;
2255    readonly detune: AudioParam;
2256    loop: boolean;
2257    loopEnd: number;
2258    loopStart: number;
2259    readonly playbackRate: AudioParam;
2260    start(when?: number, offset?: number, duration?: number): void;
2261    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2262    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2263    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2264    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2265}
2266
2267declare var AudioBufferSourceNode: {
2268    prototype: AudioBufferSourceNode;
2269    new(context: BaseAudioContext, options?: AudioBufferSourceOptions): AudioBufferSourceNode;
2270};
2271
2272/** An audio-processing graph built from audio modules linked together, each represented by an AudioNode. */
2273interface AudioContext extends BaseAudioContext {
2274    readonly baseLatency: number;
2275    readonly outputLatency: number;
2276    close(): Promise<void>;
2277    createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode;
2278    createMediaStreamDestination(): MediaStreamAudioDestinationNode;
2279    createMediaStreamSource(mediaStream: MediaStream): MediaStreamAudioSourceNode;
2280    getOutputTimestamp(): AudioTimestamp;
2281    resume(): Promise<void>;
2282    suspend(): Promise<void>;
2283    addEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2284    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2285    removeEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2286    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2287}
2288
2289declare var AudioContext: {
2290    prototype: AudioContext;
2291    new(contextOptions?: AudioContextOptions): AudioContext;
2292};
2293
2294/** AudioDestinationNode has no output (as it is the output, no more AudioNode can be linked after it in the audio graph) and one input. The number of channels in the input must be between 0 and the maxChannelCount value or an exception is raised. */
2295interface AudioDestinationNode extends AudioNode {
2296    readonly maxChannelCount: number;
2297}
2298
2299declare var AudioDestinationNode: {
2300    prototype: AudioDestinationNode;
2301    new(): AudioDestinationNode;
2302};
2303
2304/** The position and orientation of the unique person listening to the audio scene, and is used in audio spatialization. All PannerNodes spatialize in relation to the AudioListener stored in the BaseAudioContext.listener attribute. */
2305interface AudioListener {
2306    readonly forwardX: AudioParam;
2307    readonly forwardY: AudioParam;
2308    readonly forwardZ: AudioParam;
2309    readonly positionX: AudioParam;
2310    readonly positionY: AudioParam;
2311    readonly positionZ: AudioParam;
2312    readonly upX: AudioParam;
2313    readonly upY: AudioParam;
2314    readonly upZ: AudioParam;
2315    /** @deprecated */
2316    setOrientation(x: number, y: number, z: number, xUp: number, yUp: number, zUp: number): void;
2317    /** @deprecated */
2318    setPosition(x: number, y: number, z: number): void;
2319}
2320
2321declare var AudioListener: {
2322    prototype: AudioListener;
2323    new(): AudioListener;
2324};
2325
2326/** A generic interface for representing an audio processing module. Examples include: */
2327interface AudioNode extends EventTarget {
2328    channelCount: number;
2329    channelCountMode: ChannelCountMode;
2330    channelInterpretation: ChannelInterpretation;
2331    readonly context: BaseAudioContext;
2332    readonly numberOfInputs: number;
2333    readonly numberOfOutputs: number;
2334    connect(destinationNode: AudioNode, output?: number, input?: number): AudioNode;
2335    connect(destinationParam: AudioParam, output?: number): void;
2336    disconnect(): void;
2337    disconnect(output: number): void;
2338    disconnect(destinationNode: AudioNode): void;
2339    disconnect(destinationNode: AudioNode, output: number): void;
2340    disconnect(destinationNode: AudioNode, output: number, input: number): void;
2341    disconnect(destinationParam: AudioParam): void;
2342    disconnect(destinationParam: AudioParam, output: number): void;
2343}
2344
2345declare var AudioNode: {
2346    prototype: AudioNode;
2347    new(): AudioNode;
2348};
2349
2350/** The Web Audio API's AudioParam interface represents an audio-related parameter, usually a parameter of an AudioNode (such as GainNode.gain). */
2351interface AudioParam {
2352    automationRate: AutomationRate;
2353    readonly defaultValue: number;
2354    readonly maxValue: number;
2355    readonly minValue: number;
2356    value: number;
2357    cancelAndHoldAtTime(cancelTime: number): AudioParam;
2358    cancelScheduledValues(cancelTime: number): AudioParam;
2359    exponentialRampToValueAtTime(value: number, endTime: number): AudioParam;
2360    linearRampToValueAtTime(value: number, endTime: number): AudioParam;
2361    setTargetAtTime(target: number, startTime: number, timeConstant: number): AudioParam;
2362    setValueAtTime(value: number, startTime: number): AudioParam;
2363    setValueCurveAtTime(values: number[] | Float32Array, startTime: number, duration: number): AudioParam;
2364}
2365
2366declare var AudioParam: {
2367    prototype: AudioParam;
2368    new(): AudioParam;
2369};
2370
2371interface AudioParamMap {
2372    forEach(callbackfn: (value: AudioParam, key: string, parent: AudioParamMap) => void, thisArg?: any): void;
2373}
2374
2375declare var AudioParamMap: {
2376    prototype: AudioParamMap;
2377    new(): AudioParamMap;
2378};
2379
2380/**
2381 * The Web Audio API events that occur when a ScriptProcessorNode input buffer is ready to be processed.
2382 * @deprecated As of the August 29 2014 Web Audio API spec publication, this feature has been marked as deprecated, and is soon to be replaced by AudioWorklet.
2383 */
2384interface AudioProcessingEvent extends Event {
2385    /** @deprecated */
2386    readonly inputBuffer: AudioBuffer;
2387    /** @deprecated */
2388    readonly outputBuffer: AudioBuffer;
2389    /** @deprecated */
2390    readonly playbackTime: number;
2391}
2392
2393/** @deprecated */
2394declare var AudioProcessingEvent: {
2395    prototype: AudioProcessingEvent;
2396    new(type: string, eventInitDict: AudioProcessingEventInit): AudioProcessingEvent;
2397};
2398
2399interface AudioScheduledSourceNodeEventMap {
2400    "ended": Event;
2401}
2402
2403interface AudioScheduledSourceNode extends AudioNode {
2404    onended: ((this: AudioScheduledSourceNode, ev: Event) => any) | null;
2405    start(when?: number): void;
2406    stop(when?: number): void;
2407    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2408    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2409    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2410    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2411}
2412
2413declare var AudioScheduledSourceNode: {
2414    prototype: AudioScheduledSourceNode;
2415    new(): AudioScheduledSourceNode;
2416};
2417
2418/** Available only in secure contexts. */
2419interface AudioWorklet extends Worklet {
2420}
2421
2422declare var AudioWorklet: {
2423    prototype: AudioWorklet;
2424    new(): AudioWorklet;
2425};
2426
2427interface AudioWorkletNodeEventMap {
2428    "processorerror": Event;
2429}
2430
2431/** Available only in secure contexts. */
2432interface AudioWorkletNode extends AudioNode {
2433    onprocessorerror: ((this: AudioWorkletNode, ev: Event) => any) | null;
2434    readonly parameters: AudioParamMap;
2435    readonly port: MessagePort;
2436    addEventListener<K extends keyof AudioWorkletNodeEventMap>(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2437    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2438    removeEventListener<K extends keyof AudioWorkletNodeEventMap>(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2439    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2440}
2441
2442declare var AudioWorkletNode: {
2443    prototype: AudioWorkletNode;
2444    new(context: BaseAudioContext, name: string, options?: AudioWorkletNodeOptions): AudioWorkletNode;
2445};
2446
2447/** Available only in secure contexts. */
2448interface AuthenticatorAssertionResponse extends AuthenticatorResponse {
2449    readonly authenticatorData: ArrayBuffer;
2450    readonly signature: ArrayBuffer;
2451    readonly userHandle: ArrayBuffer | null;
2452}
2453
2454declare var AuthenticatorAssertionResponse: {
2455    prototype: AuthenticatorAssertionResponse;
2456    new(): AuthenticatorAssertionResponse;
2457};
2458
2459/** Available only in secure contexts. */
2460interface AuthenticatorAttestationResponse extends AuthenticatorResponse {
2461    readonly attestationObject: ArrayBuffer;
2462    getAuthenticatorData(): ArrayBuffer;
2463    getPublicKey(): ArrayBuffer | null;
2464    getPublicKeyAlgorithm(): COSEAlgorithmIdentifier;
2465    getTransports(): string[];
2466}
2467
2468declare var AuthenticatorAttestationResponse: {
2469    prototype: AuthenticatorAttestationResponse;
2470    new(): AuthenticatorAttestationResponse;
2471};
2472
2473/** Available only in secure contexts. */
2474interface AuthenticatorResponse {
2475    readonly clientDataJSON: ArrayBuffer;
2476}
2477
2478declare var AuthenticatorResponse: {
2479    prototype: AuthenticatorResponse;
2480    new(): AuthenticatorResponse;
2481};
2482
2483interface BarProp {
2484    readonly visible: boolean;
2485}
2486
2487declare var BarProp: {
2488    prototype: BarProp;
2489    new(): BarProp;
2490};
2491
2492interface BaseAudioContextEventMap {
2493    "statechange": Event;
2494}
2495
2496interface BaseAudioContext extends EventTarget {
2497    /** Available only in secure contexts. */
2498    readonly audioWorklet: AudioWorklet;
2499    readonly currentTime: number;
2500    readonly destination: AudioDestinationNode;
2501    readonly listener: AudioListener;
2502    onstatechange: ((this: BaseAudioContext, ev: Event) => any) | null;
2503    readonly sampleRate: number;
2504    readonly state: AudioContextState;
2505    createAnalyser(): AnalyserNode;
2506    createBiquadFilter(): BiquadFilterNode;
2507    createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer;
2508    createBufferSource(): AudioBufferSourceNode;
2509    createChannelMerger(numberOfInputs?: number): ChannelMergerNode;
2510    createChannelSplitter(numberOfOutputs?: number): ChannelSplitterNode;
2511    createConstantSource(): ConstantSourceNode;
2512    createConvolver(): ConvolverNode;
2513    createDelay(maxDelayTime?: number): DelayNode;
2514    createDynamicsCompressor(): DynamicsCompressorNode;
2515    createGain(): GainNode;
2516    createIIRFilter(feedforward: number[], feedback: number[]): IIRFilterNode;
2517    createOscillator(): OscillatorNode;
2518    createPanner(): PannerNode;
2519    createPeriodicWave(real: number[] | Float32Array, imag: number[] | Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave;
2520    /** @deprecated */
2521    createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode;
2522    createStereoPanner(): StereoPannerNode;
2523    createWaveShaper(): WaveShaperNode;
2524    decodeAudioData(audioData: ArrayBuffer, successCallback?: DecodeSuccessCallback | null, errorCallback?: DecodeErrorCallback | null): Promise<AudioBuffer>;
2525    addEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2526    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2527    removeEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2528    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2529}
2530
2531declare var BaseAudioContext: {
2532    prototype: BaseAudioContext;
2533    new(): BaseAudioContext;
2534};
2535
2536/** The beforeunload event is fired when the window, the document and its resources are about to be unloaded. */
2537interface BeforeUnloadEvent extends Event {
2538    returnValue: any;
2539}
2540
2541declare var BeforeUnloadEvent: {
2542    prototype: BeforeUnloadEvent;
2543    new(): BeforeUnloadEvent;
2544};
2545
2546/** A simple low-order filter, and is created using the AudioContext.createBiquadFilter() method. It is an AudioNode that can represent different kinds of filters, tone control devices, and graphic equalizers. */
2547interface BiquadFilterNode extends AudioNode {
2548    readonly Q: AudioParam;
2549    readonly detune: AudioParam;
2550    readonly frequency: AudioParam;
2551    readonly gain: AudioParam;
2552    type: BiquadFilterType;
2553    getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;
2554}
2555
2556declare var BiquadFilterNode: {
2557    prototype: BiquadFilterNode;
2558    new(context: BaseAudioContext, options?: BiquadFilterOptions): BiquadFilterNode;
2559};
2560
2561/** A file-like object of immutable, raw data. Blobs represent data that isn't necessarily in a JavaScript-native format. The File interface is based on Blob, inheriting blob functionality and expanding it to support files on the user's system. */
2562interface Blob {
2563    readonly size: number;
2564    readonly type: string;
2565    arrayBuffer(): Promise<ArrayBuffer>;
2566    slice(start?: number, end?: number, contentType?: string): Blob;
2567    stream(): ReadableStream<Uint8Array>;
2568    text(): Promise<string>;
2569}
2570
2571declare var Blob: {
2572    prototype: Blob;
2573    new(blobParts?: BlobPart[], options?: BlobPropertyBag): Blob;
2574};
2575
2576interface BlobEvent extends Event {
2577    readonly data: Blob;
2578    readonly timecode: DOMHighResTimeStamp;
2579}
2580
2581declare var BlobEvent: {
2582    prototype: BlobEvent;
2583    new(type: string, eventInitDict: BlobEventInit): BlobEvent;
2584};
2585
2586interface Body {
2587    readonly body: ReadableStream<Uint8Array> | null;
2588    readonly bodyUsed: boolean;
2589    arrayBuffer(): Promise<ArrayBuffer>;
2590    blob(): Promise<Blob>;
2591    formData(): Promise<FormData>;
2592    json(): Promise<any>;
2593    text(): Promise<string>;
2594}
2595
2596interface BroadcastChannelEventMap {
2597    "message": MessageEvent;
2598    "messageerror": MessageEvent;
2599}
2600
2601interface BroadcastChannel extends EventTarget {
2602    /** Returns the channel name (as passed to the constructor). */
2603    readonly name: string;
2604    onmessage: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;
2605    onmessageerror: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;
2606    /** Closes the BroadcastChannel object, opening it up to garbage collection. */
2607    close(): void;
2608    /** Sends the given message to other BroadcastChannel objects set up for this channel. Messages can be structured objects, e.g. nested objects and arrays. */
2609    postMessage(message: any): void;
2610    addEventListener<K extends keyof BroadcastChannelEventMap>(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2611    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2612    removeEventListener<K extends keyof BroadcastChannelEventMap>(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2613    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2614}
2615
2616declare var BroadcastChannel: {
2617    prototype: BroadcastChannel;
2618    new(name: string): BroadcastChannel;
2619};
2620
2621/** This Streams API interface provides a built-in byte length queuing strategy that can be used when constructing streams. */
2622interface ByteLengthQueuingStrategy extends QueuingStrategy<ArrayBufferView> {
2623    readonly highWaterMark: number;
2624    readonly size: QueuingStrategySize<ArrayBufferView>;
2625}
2626
2627declare var ByteLengthQueuingStrategy: {
2628    prototype: ByteLengthQueuingStrategy;
2629    new(init: QueuingStrategyInit): ByteLengthQueuingStrategy;
2630};
2631
2632/** A CDATA section that can be used within XML to include extended portions of unescaped text. The symbols < and & don’t need escaping as they normally do when inside a CDATA section. */
2633interface CDATASection extends Text {
2634}
2635
2636declare var CDATASection: {
2637    prototype: CDATASection;
2638    new(): CDATASection;
2639};
2640
2641interface CSSAnimation extends Animation {
2642    readonly animationName: string;
2643    addEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: CSSAnimation, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2644    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2645    removeEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: CSSAnimation, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2646    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2647}
2648
2649declare var CSSAnimation: {
2650    prototype: CSSAnimation;
2651    new(): CSSAnimation;
2652};
2653
2654/** A single condition CSS at-rule, which consists of a condition and a statement block. It is a child of CSSGroupingRule. */
2655interface CSSConditionRule extends CSSGroupingRule {
2656    readonly conditionText: string;
2657}
2658
2659declare var CSSConditionRule: {
2660    prototype: CSSConditionRule;
2661    new(): CSSConditionRule;
2662};
2663
2664interface CSSContainerRule extends CSSConditionRule {
2665}
2666
2667declare var CSSContainerRule: {
2668    prototype: CSSContainerRule;
2669    new(): CSSContainerRule;
2670};
2671
2672interface CSSCounterStyleRule extends CSSRule {
2673    additiveSymbols: string;
2674    fallback: string;
2675    name: string;
2676    negative: string;
2677    pad: string;
2678    prefix: string;
2679    range: string;
2680    speakAs: string;
2681    suffix: string;
2682    symbols: string;
2683    system: string;
2684}
2685
2686declare var CSSCounterStyleRule: {
2687    prototype: CSSCounterStyleRule;
2688    new(): CSSCounterStyleRule;
2689};
2690
2691interface CSSFontFaceRule extends CSSRule {
2692    readonly style: CSSStyleDeclaration;
2693}
2694
2695declare var CSSFontFaceRule: {
2696    prototype: CSSFontFaceRule;
2697    new(): CSSFontFaceRule;
2698};
2699
2700interface CSSFontPaletteValuesRule extends CSSRule {
2701    readonly basePalette: string;
2702    readonly fontFamily: string;
2703    readonly name: string;
2704    readonly overrideColors: string;
2705}
2706
2707declare var CSSFontPaletteValuesRule: {
2708    prototype: CSSFontPaletteValuesRule;
2709    new(): CSSFontPaletteValuesRule;
2710};
2711
2712/** Any CSS at-rule that contains other rules nested within it. */
2713interface CSSGroupingRule extends CSSRule {
2714    readonly cssRules: CSSRuleList;
2715    deleteRule(index: number): void;
2716    insertRule(rule: string, index?: number): number;
2717}
2718
2719declare var CSSGroupingRule: {
2720    prototype: CSSGroupingRule;
2721    new(): CSSGroupingRule;
2722};
2723
2724interface CSSImportRule extends CSSRule {
2725    readonly href: string;
2726    readonly layerName: string | null;
2727    readonly media: MediaList;
2728    readonly styleSheet: CSSStyleSheet;
2729}
2730
2731declare var CSSImportRule: {
2732    prototype: CSSImportRule;
2733    new(): CSSImportRule;
2734};
2735
2736/** An object representing a set of style for a given keyframe. It corresponds to the contains of a single keyframe of a @keyframes at-rule. It implements the CSSRule interface with a type value of 8 (CSSRule.KEYFRAME_RULE). */
2737interface CSSKeyframeRule extends CSSRule {
2738    keyText: string;
2739    readonly style: CSSStyleDeclaration;
2740}
2741
2742declare var CSSKeyframeRule: {
2743    prototype: CSSKeyframeRule;
2744    new(): CSSKeyframeRule;
2745};
2746
2747/** An object representing a complete set of keyframes for a CSS animation. It corresponds to the contains of a whole @keyframes at-rule. It implements the CSSRule interface with a type value of 7 (CSSRule.KEYFRAMES_RULE). */
2748interface CSSKeyframesRule extends CSSRule {
2749    readonly cssRules: CSSRuleList;
2750    name: string;
2751    appendRule(rule: string): void;
2752    deleteRule(select: string): void;
2753    findRule(select: string): CSSKeyframeRule | null;
2754}
2755
2756declare var CSSKeyframesRule: {
2757    prototype: CSSKeyframesRule;
2758    new(): CSSKeyframesRule;
2759};
2760
2761interface CSSLayerBlockRule extends CSSGroupingRule {
2762    readonly name: string;
2763}
2764
2765declare var CSSLayerBlockRule: {
2766    prototype: CSSLayerBlockRule;
2767    new(): CSSLayerBlockRule;
2768};
2769
2770interface CSSLayerStatementRule extends CSSRule {
2771    readonly nameList: ReadonlyArray<string>;
2772}
2773
2774declare var CSSLayerStatementRule: {
2775    prototype: CSSLayerStatementRule;
2776    new(): CSSLayerStatementRule;
2777};
2778
2779/** A single CSS @media rule. It implements the CSSConditionRule interface, and therefore the CSSGroupingRule and the CSSRule interface with a type value of 4 (CSSRule.MEDIA_RULE). */
2780interface CSSMediaRule extends CSSConditionRule {
2781    readonly media: MediaList;
2782}
2783
2784declare var CSSMediaRule: {
2785    prototype: CSSMediaRule;
2786    new(): CSSMediaRule;
2787};
2788
2789/** An object representing a single CSS @namespace at-rule. It implements the CSSRule interface, with a type value of 10 (CSSRule.NAMESPACE_RULE). */
2790interface CSSNamespaceRule extends CSSRule {
2791    readonly namespaceURI: string;
2792    readonly prefix: string;
2793}
2794
2795declare var CSSNamespaceRule: {
2796    prototype: CSSNamespaceRule;
2797    new(): CSSNamespaceRule;
2798};
2799
2800/** CSSPageRule is an interface representing a single CSS @page rule. It implements the CSSRule interface with a type value of 6 (CSSRule.PAGE_RULE). */
2801interface CSSPageRule extends CSSGroupingRule {
2802    selectorText: string;
2803    readonly style: CSSStyleDeclaration;
2804}
2805
2806declare var CSSPageRule: {
2807    prototype: CSSPageRule;
2808    new(): CSSPageRule;
2809};
2810
2811/** A single CSS rule. There are several types of rules, listed in the Type constants section below. */
2812interface CSSRule {
2813    cssText: string;
2814    readonly parentRule: CSSRule | null;
2815    readonly parentStyleSheet: CSSStyleSheet | null;
2816    /** @deprecated */
2817    readonly type: number;
2818    readonly CHARSET_RULE: number;
2819    readonly FONT_FACE_RULE: number;
2820    readonly IMPORT_RULE: number;
2821    readonly KEYFRAMES_RULE: number;
2822    readonly KEYFRAME_RULE: number;
2823    readonly MEDIA_RULE: number;
2824    readonly NAMESPACE_RULE: number;
2825    readonly PAGE_RULE: number;
2826    readonly STYLE_RULE: number;
2827    readonly SUPPORTS_RULE: number;
2828}
2829
2830declare var CSSRule: {
2831    prototype: CSSRule;
2832    new(): CSSRule;
2833    readonly CHARSET_RULE: number;
2834    readonly FONT_FACE_RULE: number;
2835    readonly IMPORT_RULE: number;
2836    readonly KEYFRAMES_RULE: number;
2837    readonly KEYFRAME_RULE: number;
2838    readonly MEDIA_RULE: number;
2839    readonly NAMESPACE_RULE: number;
2840    readonly PAGE_RULE: number;
2841    readonly STYLE_RULE: number;
2842    readonly SUPPORTS_RULE: number;
2843};
2844
2845/** A CSSRuleList is an (indirect-modify only) array-like object containing an ordered collection of CSSRule objects. */
2846interface CSSRuleList {
2847    readonly length: number;
2848    item(index: number): CSSRule | null;
2849    [index: number]: CSSRule;
2850}
2851
2852declare var CSSRuleList: {
2853    prototype: CSSRuleList;
2854    new(): CSSRuleList;
2855};
2856
2857/** An object that is a CSS declaration block, and exposes style information and various style-related methods and properties. */
2858interface CSSStyleDeclaration {
2859    accentColor: string;
2860    alignContent: string;
2861    alignItems: string;
2862    alignSelf: string;
2863    alignmentBaseline: string;
2864    all: string;
2865    animation: string;
2866    animationDelay: string;
2867    animationDirection: string;
2868    animationDuration: string;
2869    animationFillMode: string;
2870    animationIterationCount: string;
2871    animationName: string;
2872    animationPlayState: string;
2873    animationTimingFunction: string;
2874    appearance: string;
2875    aspectRatio: string;
2876    backdropFilter: string;
2877    backfaceVisibility: string;
2878    background: string;
2879    backgroundAttachment: string;
2880    backgroundBlendMode: string;
2881    backgroundClip: string;
2882    backgroundColor: string;
2883    backgroundImage: string;
2884    backgroundOrigin: string;
2885    backgroundPosition: string;
2886    backgroundPositionX: string;
2887    backgroundPositionY: string;
2888    backgroundRepeat: string;
2889    backgroundSize: string;
2890    baselineShift: string;
2891    blockSize: string;
2892    border: string;
2893    borderBlock: string;
2894    borderBlockColor: string;
2895    borderBlockEnd: string;
2896    borderBlockEndColor: string;
2897    borderBlockEndStyle: string;
2898    borderBlockEndWidth: string;
2899    borderBlockStart: string;
2900    borderBlockStartColor: string;
2901    borderBlockStartStyle: string;
2902    borderBlockStartWidth: string;
2903    borderBlockStyle: string;
2904    borderBlockWidth: string;
2905    borderBottom: string;
2906    borderBottomColor: string;
2907    borderBottomLeftRadius: string;
2908    borderBottomRightRadius: string;
2909    borderBottomStyle: string;
2910    borderBottomWidth: string;
2911    borderCollapse: string;
2912    borderColor: string;
2913    borderEndEndRadius: string;
2914    borderEndStartRadius: string;
2915    borderImage: string;
2916    borderImageOutset: string;
2917    borderImageRepeat: string;
2918    borderImageSlice: string;
2919    borderImageSource: string;
2920    borderImageWidth: string;
2921    borderInline: string;
2922    borderInlineColor: string;
2923    borderInlineEnd: string;
2924    borderInlineEndColor: string;
2925    borderInlineEndStyle: string;
2926    borderInlineEndWidth: string;
2927    borderInlineStart: string;
2928    borderInlineStartColor: string;
2929    borderInlineStartStyle: string;
2930    borderInlineStartWidth: string;
2931    borderInlineStyle: string;
2932    borderInlineWidth: string;
2933    borderLeft: string;
2934    borderLeftColor: string;
2935    borderLeftStyle: string;
2936    borderLeftWidth: string;
2937    borderRadius: string;
2938    borderRight: string;
2939    borderRightColor: string;
2940    borderRightStyle: string;
2941    borderRightWidth: string;
2942    borderSpacing: string;
2943    borderStartEndRadius: string;
2944    borderStartStartRadius: string;
2945    borderStyle: string;
2946    borderTop: string;
2947    borderTopColor: string;
2948    borderTopLeftRadius: string;
2949    borderTopRightRadius: string;
2950    borderTopStyle: string;
2951    borderTopWidth: string;
2952    borderWidth: string;
2953    bottom: string;
2954    boxShadow: string;
2955    boxSizing: string;
2956    breakAfter: string;
2957    breakBefore: string;
2958    breakInside: string;
2959    captionSide: string;
2960    caretColor: string;
2961    clear: string;
2962    /** @deprecated */
2963    clip: string;
2964    clipPath: string;
2965    clipRule: string;
2966    color: string;
2967    colorInterpolation: string;
2968    colorInterpolationFilters: string;
2969    colorScheme: string;
2970    columnCount: string;
2971    columnFill: string;
2972    columnGap: string;
2973    columnRule: string;
2974    columnRuleColor: string;
2975    columnRuleStyle: string;
2976    columnRuleWidth: string;
2977    columnSpan: string;
2978    columnWidth: string;
2979    columns: string;
2980    contain: string;
2981    container: string;
2982    containerName: string;
2983    containerType: string;
2984    content: string;
2985    counterIncrement: string;
2986    counterReset: string;
2987    counterSet: string;
2988    cssFloat: string;
2989    cssText: string;
2990    cursor: string;
2991    direction: string;
2992    display: string;
2993    dominantBaseline: string;
2994    emptyCells: string;
2995    fill: string;
2996    fillOpacity: string;
2997    fillRule: string;
2998    filter: string;
2999    flex: string;
3000    flexBasis: string;
3001    flexDirection: string;
3002    flexFlow: string;
3003    flexGrow: string;
3004    flexShrink: string;
3005    flexWrap: string;
3006    float: string;
3007    floodColor: string;
3008    floodOpacity: string;
3009    font: string;
3010    fontFamily: string;
3011    fontFeatureSettings: string;
3012    fontKerning: string;
3013    fontOpticalSizing: string;
3014    fontPalette: string;
3015    fontSize: string;
3016    fontSizeAdjust: string;
3017    fontStretch: string;
3018    fontStyle: string;
3019    fontSynthesis: string;
3020    fontVariant: string;
3021    fontVariantAlternates: string;
3022    fontVariantCaps: string;
3023    fontVariantEastAsian: string;
3024    fontVariantLigatures: string;
3025    fontVariantNumeric: string;
3026    fontVariantPosition: string;
3027    fontVariationSettings: string;
3028    fontWeight: string;
3029    gap: string;
3030    grid: string;
3031    gridArea: string;
3032    gridAutoColumns: string;
3033    gridAutoFlow: string;
3034    gridAutoRows: string;
3035    gridColumn: string;
3036    gridColumnEnd: string;
3037    /** @deprecated This is a legacy alias of `columnGap`. */
3038    gridColumnGap: string;
3039    gridColumnStart: string;
3040    /** @deprecated This is a legacy alias of `gap`. */
3041    gridGap: string;
3042    gridRow: string;
3043    gridRowEnd: string;
3044    /** @deprecated This is a legacy alias of `rowGap`. */
3045    gridRowGap: string;
3046    gridRowStart: string;
3047    gridTemplate: string;
3048    gridTemplateAreas: string;
3049    gridTemplateColumns: string;
3050    gridTemplateRows: string;
3051    height: string;
3052    hyphenateCharacter: string;
3053    hyphens: string;
3054    /** @deprecated */
3055    imageOrientation: string;
3056    imageRendering: string;
3057    inlineSize: string;
3058    inset: string;
3059    insetBlock: string;
3060    insetBlockEnd: string;
3061    insetBlockStart: string;
3062    insetInline: string;
3063    insetInlineEnd: string;
3064    insetInlineStart: string;
3065    isolation: string;
3066    justifyContent: string;
3067    justifyItems: string;
3068    justifySelf: string;
3069    left: string;
3070    readonly length: number;
3071    letterSpacing: string;
3072    lightingColor: string;
3073    lineBreak: string;
3074    lineHeight: string;
3075    listStyle: string;
3076    listStyleImage: string;
3077    listStylePosition: string;
3078    listStyleType: string;
3079    margin: string;
3080    marginBlock: string;
3081    marginBlockEnd: string;
3082    marginBlockStart: string;
3083    marginBottom: string;
3084    marginInline: string;
3085    marginInlineEnd: string;
3086    marginInlineStart: string;
3087    marginLeft: string;
3088    marginRight: string;
3089    marginTop: string;
3090    marker: string;
3091    markerEnd: string;
3092    markerMid: string;
3093    markerStart: string;
3094    mask: string;
3095    maskClip: string;
3096    maskComposite: string;
3097    maskImage: string;
3098    maskMode: string;
3099    maskOrigin: string;
3100    maskPosition: string;
3101    maskRepeat: string;
3102    maskSize: string;
3103    maskType: string;
3104    maxBlockSize: string;
3105    maxHeight: string;
3106    maxInlineSize: string;
3107    maxWidth: string;
3108    minBlockSize: string;
3109    minHeight: string;
3110    minInlineSize: string;
3111    minWidth: string;
3112    mixBlendMode: string;
3113    objectFit: string;
3114    objectPosition: string;
3115    offset: string;
3116    offsetDistance: string;
3117    offsetPath: string;
3118    offsetRotate: string;
3119    opacity: string;
3120    order: string;
3121    orphans: string;
3122    outline: string;
3123    outlineColor: string;
3124    outlineOffset: string;
3125    outlineStyle: string;
3126    outlineWidth: string;
3127    overflow: string;
3128    overflowAnchor: string;
3129    overflowClipMargin: string;
3130    overflowWrap: string;
3131    overflowX: string;
3132    overflowY: string;
3133    overscrollBehavior: string;
3134    overscrollBehaviorBlock: string;
3135    overscrollBehaviorInline: string;
3136    overscrollBehaviorX: string;
3137    overscrollBehaviorY: string;
3138    padding: string;
3139    paddingBlock: string;
3140    paddingBlockEnd: string;
3141    paddingBlockStart: string;
3142    paddingBottom: string;
3143    paddingInline: string;
3144    paddingInlineEnd: string;
3145    paddingInlineStart: string;
3146    paddingLeft: string;
3147    paddingRight: string;
3148    paddingTop: string;
3149    pageBreakAfter: string;
3150    pageBreakBefore: string;
3151    pageBreakInside: string;
3152    paintOrder: string;
3153    readonly parentRule: CSSRule | null;
3154    perspective: string;
3155    perspectiveOrigin: string;
3156    placeContent: string;
3157    placeItems: string;
3158    placeSelf: string;
3159    pointerEvents: string;
3160    position: string;
3161    printColorAdjust: string;
3162    quotes: string;
3163    resize: string;
3164    right: string;
3165    rotate: string;
3166    rowGap: string;
3167    rubyPosition: string;
3168    scale: string;
3169    scrollBehavior: string;
3170    scrollMargin: string;
3171    scrollMarginBlock: string;
3172    scrollMarginBlockEnd: string;
3173    scrollMarginBlockStart: string;
3174    scrollMarginBottom: string;
3175    scrollMarginInline: string;
3176    scrollMarginInlineEnd: string;
3177    scrollMarginInlineStart: string;
3178    scrollMarginLeft: string;
3179    scrollMarginRight: string;
3180    scrollMarginTop: string;
3181    scrollPadding: string;
3182    scrollPaddingBlock: string;
3183    scrollPaddingBlockEnd: string;
3184    scrollPaddingBlockStart: string;
3185    scrollPaddingBottom: string;
3186    scrollPaddingInline: string;
3187    scrollPaddingInlineEnd: string;
3188    scrollPaddingInlineStart: string;
3189    scrollPaddingLeft: string;
3190    scrollPaddingRight: string;
3191    scrollPaddingTop: string;
3192    scrollSnapAlign: string;
3193    scrollSnapStop: string;
3194    scrollSnapType: string;
3195    scrollbarGutter: string;
3196    shapeImageThreshold: string;
3197    shapeMargin: string;
3198    shapeOutside: string;
3199    shapeRendering: string;
3200    stopColor: string;
3201    stopOpacity: string;
3202    stroke: string;
3203    strokeDasharray: string;
3204    strokeDashoffset: string;
3205    strokeLinecap: string;
3206    strokeLinejoin: string;
3207    strokeMiterlimit: string;
3208    strokeOpacity: string;
3209    strokeWidth: string;
3210    tabSize: string;
3211    tableLayout: string;
3212    textAlign: string;
3213    textAlignLast: string;
3214    textAnchor: string;
3215    textCombineUpright: string;
3216    textDecoration: string;
3217    textDecorationColor: string;
3218    textDecorationLine: string;
3219    textDecorationSkipInk: string;
3220    textDecorationStyle: string;
3221    textDecorationThickness: string;
3222    textEmphasis: string;
3223    textEmphasisColor: string;
3224    textEmphasisPosition: string;
3225    textEmphasisStyle: string;
3226    textIndent: string;
3227    textOrientation: string;
3228    textOverflow: string;
3229    textRendering: string;
3230    textShadow: string;
3231    textTransform: string;
3232    textUnderlineOffset: string;
3233    textUnderlinePosition: string;
3234    top: string;
3235    touchAction: string;
3236    transform: string;
3237    transformBox: string;
3238    transformOrigin: string;
3239    transformStyle: string;
3240    transition: string;
3241    transitionDelay: string;
3242    transitionDuration: string;
3243    transitionProperty: string;
3244    transitionTimingFunction: string;
3245    translate: string;
3246    unicodeBidi: string;
3247    userSelect: string;
3248    verticalAlign: string;
3249    visibility: string;
3250    /** @deprecated This is a legacy alias of `alignContent`. */
3251    webkitAlignContent: string;
3252    /** @deprecated This is a legacy alias of `alignItems`. */
3253    webkitAlignItems: string;
3254    /** @deprecated This is a legacy alias of `alignSelf`. */
3255    webkitAlignSelf: string;
3256    /** @deprecated This is a legacy alias of `animation`. */
3257    webkitAnimation: string;
3258    /** @deprecated This is a legacy alias of `animationDelay`. */
3259    webkitAnimationDelay: string;
3260    /** @deprecated This is a legacy alias of `animationDirection`. */
3261    webkitAnimationDirection: string;
3262    /** @deprecated This is a legacy alias of `animationDuration`. */
3263    webkitAnimationDuration: string;
3264    /** @deprecated This is a legacy alias of `animationFillMode`. */
3265    webkitAnimationFillMode: string;
3266    /** @deprecated This is a legacy alias of `animationIterationCount`. */
3267    webkitAnimationIterationCount: string;
3268    /** @deprecated This is a legacy alias of `animationName`. */
3269    webkitAnimationName: string;
3270    /** @deprecated This is a legacy alias of `animationPlayState`. */
3271    webkitAnimationPlayState: string;
3272    /** @deprecated This is a legacy alias of `animationTimingFunction`. */
3273    webkitAnimationTimingFunction: string;
3274    /** @deprecated This is a legacy alias of `appearance`. */
3275    webkitAppearance: string;
3276    /** @deprecated This is a legacy alias of `backfaceVisibility`. */
3277    webkitBackfaceVisibility: string;
3278    /** @deprecated This is a legacy alias of `backgroundClip`. */
3279    webkitBackgroundClip: string;
3280    /** @deprecated This is a legacy alias of `backgroundOrigin`. */
3281    webkitBackgroundOrigin: string;
3282    /** @deprecated This is a legacy alias of `backgroundSize`. */
3283    webkitBackgroundSize: string;
3284    /** @deprecated This is a legacy alias of `borderBottomLeftRadius`. */
3285    webkitBorderBottomLeftRadius: string;
3286    /** @deprecated This is a legacy alias of `borderBottomRightRadius`. */
3287    webkitBorderBottomRightRadius: string;
3288    /** @deprecated This is a legacy alias of `borderRadius`. */
3289    webkitBorderRadius: string;
3290    /** @deprecated This is a legacy alias of `borderTopLeftRadius`. */
3291    webkitBorderTopLeftRadius: string;
3292    /** @deprecated This is a legacy alias of `borderTopRightRadius`. */
3293    webkitBorderTopRightRadius: string;
3294    /** @deprecated This is a legacy alias of `boxAlign`. */
3295    webkitBoxAlign: string;
3296    /** @deprecated This is a legacy alias of `boxFlex`. */
3297    webkitBoxFlex: string;
3298    /** @deprecated This is a legacy alias of `boxOrdinalGroup`. */
3299    webkitBoxOrdinalGroup: string;
3300    /** @deprecated This is a legacy alias of `boxOrient`. */
3301    webkitBoxOrient: string;
3302    /** @deprecated This is a legacy alias of `boxPack`. */
3303    webkitBoxPack: string;
3304    /** @deprecated This is a legacy alias of `boxShadow`. */
3305    webkitBoxShadow: string;
3306    /** @deprecated This is a legacy alias of `boxSizing`. */
3307    webkitBoxSizing: string;
3308    /** @deprecated This is a legacy alias of `filter`. */
3309    webkitFilter: string;
3310    /** @deprecated This is a legacy alias of `flex`. */
3311    webkitFlex: string;
3312    /** @deprecated This is a legacy alias of `flexBasis`. */
3313    webkitFlexBasis: string;
3314    /** @deprecated This is a legacy alias of `flexDirection`. */
3315    webkitFlexDirection: string;
3316    /** @deprecated This is a legacy alias of `flexFlow`. */
3317    webkitFlexFlow: string;
3318    /** @deprecated This is a legacy alias of `flexGrow`. */
3319    webkitFlexGrow: string;
3320    /** @deprecated This is a legacy alias of `flexShrink`. */
3321    webkitFlexShrink: string;
3322    /** @deprecated This is a legacy alias of `flexWrap`. */
3323    webkitFlexWrap: string;
3324    /** @deprecated This is a legacy alias of `justifyContent`. */
3325    webkitJustifyContent: string;
3326    webkitLineClamp: string;
3327    /** @deprecated This is a legacy alias of `mask`. */
3328    webkitMask: string;
3329    /** @deprecated This is a legacy alias of `maskBorder`. */
3330    webkitMaskBoxImage: string;
3331    /** @deprecated This is a legacy alias of `maskBorderOutset`. */
3332    webkitMaskBoxImageOutset: string;
3333    /** @deprecated This is a legacy alias of `maskBorderRepeat`. */
3334    webkitMaskBoxImageRepeat: string;
3335    /** @deprecated This is a legacy alias of `maskBorderSlice`. */
3336    webkitMaskBoxImageSlice: string;
3337    /** @deprecated This is a legacy alias of `maskBorderSource`. */
3338    webkitMaskBoxImageSource: string;
3339    /** @deprecated This is a legacy alias of `maskBorderWidth`. */
3340    webkitMaskBoxImageWidth: string;
3341    /** @deprecated This is a legacy alias of `maskClip`. */
3342    webkitMaskClip: string;
3343    webkitMaskComposite: string;
3344    /** @deprecated This is a legacy alias of `maskImage`. */
3345    webkitMaskImage: string;
3346    /** @deprecated This is a legacy alias of `maskOrigin`. */
3347    webkitMaskOrigin: string;
3348    /** @deprecated This is a legacy alias of `maskPosition`. */
3349    webkitMaskPosition: string;
3350    /** @deprecated This is a legacy alias of `maskRepeat`. */
3351    webkitMaskRepeat: string;
3352    /** @deprecated This is a legacy alias of `maskSize`. */
3353    webkitMaskSize: string;
3354    /** @deprecated This is a legacy alias of `order`. */
3355    webkitOrder: string;
3356    /** @deprecated This is a legacy alias of `perspective`. */
3357    webkitPerspective: string;
3358    /** @deprecated This is a legacy alias of `perspectiveOrigin`. */
3359    webkitPerspectiveOrigin: string;
3360    webkitTextFillColor: string;
3361    /** @deprecated This is a legacy alias of `textSizeAdjust`. */
3362    webkitTextSizeAdjust: string;
3363    webkitTextStroke: string;
3364    webkitTextStrokeColor: string;
3365    webkitTextStrokeWidth: string;
3366    /** @deprecated This is a legacy alias of `transform`. */
3367    webkitTransform: string;
3368    /** @deprecated This is a legacy alias of `transformOrigin`. */
3369    webkitTransformOrigin: string;
3370    /** @deprecated This is a legacy alias of `transformStyle`. */
3371    webkitTransformStyle: string;
3372    /** @deprecated This is a legacy alias of `transition`. */
3373    webkitTransition: string;
3374    /** @deprecated This is a legacy alias of `transitionDelay`. */
3375    webkitTransitionDelay: string;
3376    /** @deprecated This is a legacy alias of `transitionDuration`. */
3377    webkitTransitionDuration: string;
3378    /** @deprecated This is a legacy alias of `transitionProperty`. */
3379    webkitTransitionProperty: string;
3380    /** @deprecated This is a legacy alias of `transitionTimingFunction`. */
3381    webkitTransitionTimingFunction: string;
3382    /** @deprecated This is a legacy alias of `userSelect`. */
3383    webkitUserSelect: string;
3384    whiteSpace: string;
3385    widows: string;
3386    width: string;
3387    willChange: string;
3388    wordBreak: string;
3389    wordSpacing: string;
3390    /** @deprecated */
3391    wordWrap: string;
3392    writingMode: string;
3393    zIndex: string;
3394    getPropertyPriority(property: string): string;
3395    getPropertyValue(property: string): string;
3396    item(index: number): string;
3397    removeProperty(property: string): string;
3398    setProperty(property: string, value: string | null, priority?: string): void;
3399    [index: number]: string;
3400}
3401
3402declare var CSSStyleDeclaration: {
3403    prototype: CSSStyleDeclaration;
3404    new(): CSSStyleDeclaration;
3405};
3406
3407/** CSSStyleRule represents a single CSS style rule. It implements the CSSRule interface with a type value of 1 (CSSRule.STYLE_RULE). */
3408interface CSSStyleRule extends CSSRule {
3409    selectorText: string;
3410    readonly style: CSSStyleDeclaration;
3411}
3412
3413declare var CSSStyleRule: {
3414    prototype: CSSStyleRule;
3415    new(): CSSStyleRule;
3416};
3417
3418/** A single CSS style sheet. It inherits properties and methods from its parent, StyleSheet. */
3419interface CSSStyleSheet extends StyleSheet {
3420    readonly cssRules: CSSRuleList;
3421    readonly ownerRule: CSSRule | null;
3422    /** @deprecated */
3423    readonly rules: CSSRuleList;
3424    /** @deprecated */
3425    addRule(selector?: string, style?: string, index?: number): number;
3426    deleteRule(index: number): void;
3427    insertRule(rule: string, index?: number): number;
3428    /** @deprecated */
3429    removeRule(index?: number): void;
3430    replace(text: string): Promise<CSSStyleSheet>;
3431    replaceSync(text: string): void;
3432}
3433
3434declare var CSSStyleSheet: {
3435    prototype: CSSStyleSheet;
3436    new(options?: CSSStyleSheetInit): CSSStyleSheet;
3437};
3438
3439/** An object representing a single CSS @supports at-rule. It implements the CSSConditionRule interface, and therefore the CSSRule and CSSGroupingRule interfaces with a type value of 12 (CSSRule.SUPPORTS_RULE). */
3440interface CSSSupportsRule extends CSSConditionRule {
3441}
3442
3443declare var CSSSupportsRule: {
3444    prototype: CSSSupportsRule;
3445    new(): CSSSupportsRule;
3446};
3447
3448interface CSSTransition extends Animation {
3449    readonly transitionProperty: string;
3450    addEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: CSSTransition, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3451    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3452    removeEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: CSSTransition, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3453    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3454}
3455
3456declare var CSSTransition: {
3457    prototype: CSSTransition;
3458    new(): CSSTransition;
3459};
3460
3461/**
3462 * Provides a storage mechanism for Request / Response object pairs that are cached, for example as part of the ServiceWorker life cycle. Note that the Cache interface is exposed to windowed scopes as well as workers. You don't have to use it in conjunction with service workers, even though it is defined in the service worker spec.
3463 * Available only in secure contexts.
3464 */
3465interface Cache {
3466    add(request: RequestInfo | URL): Promise<void>;
3467    addAll(requests: RequestInfo[]): Promise<void>;
3468    delete(request: RequestInfo | URL, options?: CacheQueryOptions): Promise<boolean>;
3469    keys(request?: RequestInfo | URL, options?: CacheQueryOptions): Promise<ReadonlyArray<Request>>;
3470    match(request: RequestInfo | URL, options?: CacheQueryOptions): Promise<Response | undefined>;
3471    matchAll(request?: RequestInfo | URL, options?: CacheQueryOptions): Promise<ReadonlyArray<Response>>;
3472    put(request: RequestInfo | URL, response: Response): Promise<void>;
3473}
3474
3475declare var Cache: {
3476    prototype: Cache;
3477    new(): Cache;
3478};
3479
3480/**
3481 * The storage for Cache objects.
3482 * Available only in secure contexts.
3483 */
3484interface CacheStorage {
3485    delete(cacheName: string): Promise<boolean>;
3486    has(cacheName: string): Promise<boolean>;
3487    keys(): Promise<string[]>;
3488    match(request: RequestInfo | URL, options?: MultiCacheQueryOptions): Promise<Response | undefined>;
3489    open(cacheName: string): Promise<Cache>;
3490}
3491
3492declare var CacheStorage: {
3493    prototype: CacheStorage;
3494    new(): CacheStorage;
3495};
3496
3497interface CanvasCaptureMediaStreamTrack extends MediaStreamTrack {
3498    readonly canvas: HTMLCanvasElement;
3499    requestFrame(): void;
3500    addEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: CanvasCaptureMediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3501    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3502    removeEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: CanvasCaptureMediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3503    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3504}
3505
3506declare var CanvasCaptureMediaStreamTrack: {
3507    prototype: CanvasCaptureMediaStreamTrack;
3508    new(): CanvasCaptureMediaStreamTrack;
3509};
3510
3511interface CanvasCompositing {
3512    globalAlpha: number;
3513    globalCompositeOperation: GlobalCompositeOperation;
3514}
3515
3516interface CanvasDrawImage {
3517    drawImage(image: CanvasImageSource, dx: number, dy: number): void;
3518    drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void;
3519    drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;
3520}
3521
3522interface CanvasDrawPath {
3523    beginPath(): void;
3524    clip(fillRule?: CanvasFillRule): void;
3525    clip(path: Path2D, fillRule?: CanvasFillRule): void;
3526    fill(fillRule?: CanvasFillRule): void;
3527    fill(path: Path2D, fillRule?: CanvasFillRule): void;
3528    isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean;
3529    isPointInPath(path: Path2D, x: number, y: number, fillRule?: CanvasFillRule): boolean;
3530    isPointInStroke(x: number, y: number): boolean;
3531    isPointInStroke(path: Path2D, x: number, y: number): boolean;
3532    stroke(): void;
3533    stroke(path: Path2D): void;
3534}
3535
3536interface CanvasFillStrokeStyles {
3537    fillStyle: string | CanvasGradient | CanvasPattern;
3538    strokeStyle: string | CanvasGradient | CanvasPattern;
3539    createConicGradient(startAngle: number, x: number, y: number): CanvasGradient;
3540    createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;
3541    createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null;
3542    createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;
3543}
3544
3545interface CanvasFilters {
3546    filter: string;
3547}
3548
3549/** An opaque object describing a gradient. It is returned by the methods CanvasRenderingContext2D.createLinearGradient() or CanvasRenderingContext2D.createRadialGradient(). */
3550interface CanvasGradient {
3551    /**
3552     * Adds a color stop with the given color to the gradient at the given offset. 0.0 is the offset at one end of the gradient, 1.0 is the offset at the other end.
3553     *
3554     * Throws an "IndexSizeError" DOMException if the offset is out of range. Throws a "SyntaxError" DOMException if the color cannot be parsed.
3555     */
3556    addColorStop(offset: number, color: string): void;
3557}
3558
3559declare var CanvasGradient: {
3560    prototype: CanvasGradient;
3561    new(): CanvasGradient;
3562};
3563
3564interface CanvasImageData {
3565    createImageData(sw: number, sh: number, settings?: ImageDataSettings): ImageData;
3566    createImageData(imagedata: ImageData): ImageData;
3567    getImageData(sx: number, sy: number, sw: number, sh: number, settings?: ImageDataSettings): ImageData;
3568    putImageData(imagedata: ImageData, dx: number, dy: number): void;
3569    putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void;
3570}
3571
3572interface CanvasImageSmoothing {
3573    imageSmoothingEnabled: boolean;
3574    imageSmoothingQuality: ImageSmoothingQuality;
3575}
3576
3577interface CanvasPath {
3578    arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
3579    arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;
3580    bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
3581    closePath(): void;
3582    ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
3583    lineTo(x: number, y: number): void;
3584    moveTo(x: number, y: number): void;
3585    quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
3586    rect(x: number, y: number, w: number, h: number): void;
3587    roundRect(x: number, y: number, w: number, h: number, radii?: number | DOMPointInit | (number | DOMPointInit)[]): void;
3588}
3589
3590interface CanvasPathDrawingStyles {
3591    lineCap: CanvasLineCap;
3592    lineDashOffset: number;
3593    lineJoin: CanvasLineJoin;
3594    lineWidth: number;
3595    miterLimit: number;
3596    getLineDash(): number[];
3597    setLineDash(segments: number[]): void;
3598}
3599
3600/** An opaque object describing a pattern, based on an image, a canvas, or a video, created by the CanvasRenderingContext2D.createPattern() method. */
3601interface CanvasPattern {
3602    /** Sets the transformation matrix that will be used when rendering the pattern during a fill or stroke painting operation. */
3603    setTransform(transform?: DOMMatrix2DInit): void;
3604}
3605
3606declare var CanvasPattern: {
3607    prototype: CanvasPattern;
3608    new(): CanvasPattern;
3609};
3610
3611interface CanvasRect {
3612    clearRect(x: number, y: number, w: number, h: number): void;
3613    fillRect(x: number, y: number, w: number, h: number): void;
3614    strokeRect(x: number, y: number, w: number, h: number): void;
3615}
3616
3617/** The CanvasRenderingContext2D interface, part of the Canvas API, provides the 2D rendering context for the drawing surface of a <canvas> element. It is used for drawing shapes, text, images, and other objects. */
3618interface CanvasRenderingContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform, CanvasUserInterface {
3619    readonly canvas: HTMLCanvasElement;
3620    getContextAttributes(): CanvasRenderingContext2DSettings;
3621}
3622
3623declare var CanvasRenderingContext2D: {
3624    prototype: CanvasRenderingContext2D;
3625    new(): CanvasRenderingContext2D;
3626};
3627
3628interface CanvasShadowStyles {
3629    shadowBlur: number;
3630    shadowColor: string;
3631    shadowOffsetX: number;
3632    shadowOffsetY: number;
3633}
3634
3635interface CanvasState {
3636    restore(): void;
3637    save(): void;
3638}
3639
3640interface CanvasText {
3641    fillText(text: string, x: number, y: number, maxWidth?: number): void;
3642    measureText(text: string): TextMetrics;
3643    strokeText(text: string, x: number, y: number, maxWidth?: number): void;
3644}
3645
3646interface CanvasTextDrawingStyles {
3647    direction: CanvasDirection;
3648    font: string;
3649    fontKerning: CanvasFontKerning;
3650    textAlign: CanvasTextAlign;
3651    textBaseline: CanvasTextBaseline;
3652}
3653
3654interface CanvasTransform {
3655    getTransform(): DOMMatrix;
3656    resetTransform(): void;
3657    rotate(angle: number): void;
3658    scale(x: number, y: number): void;
3659    setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;
3660    setTransform(transform?: DOMMatrix2DInit): void;
3661    transform(a: number, b: number, c: number, d: number, e: number, f: number): void;
3662    translate(x: number, y: number): void;
3663}
3664
3665interface CanvasUserInterface {
3666    drawFocusIfNeeded(element: Element): void;
3667    drawFocusIfNeeded(path: Path2D, element: Element): void;
3668}
3669
3670/** The ChannelMergerNode interface, often used in conjunction with its opposite, ChannelSplitterNode, reunites different mono inputs into a single output. Each input is used to fill a channel of the output. This is useful for accessing each channels separately, e.g. for performing channel mixing where gain must be separately controlled on each channel. */
3671interface ChannelMergerNode extends AudioNode {
3672}
3673
3674declare var ChannelMergerNode: {
3675    prototype: ChannelMergerNode;
3676    new(context: BaseAudioContext, options?: ChannelMergerOptions): ChannelMergerNode;
3677};
3678
3679/** The ChannelSplitterNode interface, often used in conjunction with its opposite, ChannelMergerNode, separates the different channels of an audio source into a set of mono outputs. This is useful for accessing each channel separately, e.g. for performing channel mixing where gain must be separately controlled on each channel. */
3680interface ChannelSplitterNode extends AudioNode {
3681}
3682
3683declare var ChannelSplitterNode: {
3684    prototype: ChannelSplitterNode;
3685    new(context: BaseAudioContext, options?: ChannelSplitterOptions): ChannelSplitterNode;
3686};
3687
3688/** The CharacterData abstract interface represents a Node object that contains characters. This is an abstract interface, meaning there aren't any object of type CharacterData: it is implemented by other interfaces, like Text, Comment, or ProcessingInstruction which aren't abstract. */
3689interface CharacterData extends Node, ChildNode, NonDocumentTypeChildNode {
3690    data: string;
3691    readonly length: number;
3692    readonly ownerDocument: Document;
3693    appendData(data: string): void;
3694    deleteData(offset: number, count: number): void;
3695    insertData(offset: number, data: string): void;
3696    replaceData(offset: number, count: number, data: string): void;
3697    substringData(offset: number, count: number): string;
3698}
3699
3700declare var CharacterData: {
3701    prototype: CharacterData;
3702    new(): CharacterData;
3703};
3704
3705interface ChildNode extends Node {
3706    /**
3707     * Inserts nodes just after node, while replacing strings in nodes with equivalent Text nodes.
3708     *
3709     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
3710     */
3711    after(...nodes: (Node | string)[]): void;
3712    /**
3713     * Inserts nodes just before node, while replacing strings in nodes with equivalent Text nodes.
3714     *
3715     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
3716     */
3717    before(...nodes: (Node | string)[]): void;
3718    /** Removes node. */
3719    remove(): void;
3720    /**
3721     * Replaces node with nodes, while replacing strings in nodes with equivalent Text nodes.
3722     *
3723     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
3724     */
3725    replaceWith(...nodes: (Node | string)[]): void;
3726}
3727
3728/** @deprecated */
3729interface ClientRect extends DOMRect {
3730}
3731
3732/** Available only in secure contexts. */
3733interface Clipboard extends EventTarget {
3734    read(): Promise<ClipboardItems>;
3735    readText(): Promise<string>;
3736    write(data: ClipboardItems): Promise<void>;
3737    writeText(data: string): Promise<void>;
3738}
3739
3740declare var Clipboard: {
3741    prototype: Clipboard;
3742    new(): Clipboard;
3743};
3744
3745/** Events providing information related to modification of the clipboard, that is cut, copy, and paste events. */
3746interface ClipboardEvent extends Event {
3747    readonly clipboardData: DataTransfer | null;
3748}
3749
3750declare var ClipboardEvent: {
3751    prototype: ClipboardEvent;
3752    new(type: string, eventInitDict?: ClipboardEventInit): ClipboardEvent;
3753};
3754
3755/** Available only in secure contexts. */
3756interface ClipboardItem {
3757    readonly types: ReadonlyArray<string>;
3758    getType(type: string): Promise<Blob>;
3759}
3760
3761declare var ClipboardItem: {
3762    prototype: ClipboardItem;
3763    new(items: Record<string, string | Blob | PromiseLike<string | Blob>>, options?: ClipboardItemOptions): ClipboardItem;
3764};
3765
3766/** A CloseEvent is sent to clients using WebSockets when the connection is closed. This is delivered to the listener indicated by the WebSocket object's onclose attribute. */
3767interface CloseEvent extends Event {
3768    /** Returns the WebSocket connection close code provided by the server. */
3769    readonly code: number;
3770    /** Returns the WebSocket connection close reason provided by the server. */
3771    readonly reason: string;
3772    /** Returns true if the connection closed cleanly; false otherwise. */
3773    readonly wasClean: boolean;
3774}
3775
3776declare var CloseEvent: {
3777    prototype: CloseEvent;
3778    new(type: string, eventInitDict?: CloseEventInit): CloseEvent;
3779};
3780
3781/** Textual notations within markup; although it is generally not visually shown, such comments are available to be read in the source view. */
3782interface Comment extends CharacterData {
3783}
3784
3785declare var Comment: {
3786    prototype: Comment;
3787    new(data?: string): Comment;
3788};
3789
3790/** The DOM CompositionEvent represents events that occur due to the user indirectly entering text. */
3791interface CompositionEvent extends UIEvent {
3792    readonly data: string;
3793    /** @deprecated */
3794    initCompositionEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: WindowProxy | null, dataArg?: string): void;
3795}
3796
3797declare var CompositionEvent: {
3798    prototype: CompositionEvent;
3799    new(type: string, eventInitDict?: CompositionEventInit): CompositionEvent;
3800};
3801
3802interface ConstantSourceNode extends AudioScheduledSourceNode {
3803    readonly offset: AudioParam;
3804    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3805    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3806    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3807    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3808}
3809
3810declare var ConstantSourceNode: {
3811    prototype: ConstantSourceNode;
3812    new(context: BaseAudioContext, options?: ConstantSourceOptions): ConstantSourceNode;
3813};
3814
3815/** An AudioNode that performs a Linear Convolution on a given AudioBuffer, often used to achieve a reverb effect. A ConvolverNode always has exactly one input and one output. */
3816interface ConvolverNode extends AudioNode {
3817    buffer: AudioBuffer | null;
3818    normalize: boolean;
3819}
3820
3821declare var ConvolverNode: {
3822    prototype: ConvolverNode;
3823    new(context: BaseAudioContext, options?: ConvolverOptions): ConvolverNode;
3824};
3825
3826/** This Streams API interface provides a built-in byte length queuing strategy that can be used when constructing streams. */
3827interface CountQueuingStrategy extends QueuingStrategy {
3828    readonly highWaterMark: number;
3829    readonly size: QueuingStrategySize;
3830}
3831
3832declare var CountQueuingStrategy: {
3833    prototype: CountQueuingStrategy;
3834    new(init: QueuingStrategyInit): CountQueuingStrategy;
3835};
3836
3837/** Available only in secure contexts. */
3838interface Credential {
3839    readonly id: string;
3840    readonly type: string;
3841}
3842
3843declare var Credential: {
3844    prototype: Credential;
3845    new(): Credential;
3846};
3847
3848/** Available only in secure contexts. */
3849interface CredentialsContainer {
3850    create(options?: CredentialCreationOptions): Promise<Credential | null>;
3851    get(options?: CredentialRequestOptions): Promise<Credential | null>;
3852    preventSilentAccess(): Promise<void>;
3853    store(credential: Credential): Promise<Credential>;
3854}
3855
3856declare var CredentialsContainer: {
3857    prototype: CredentialsContainer;
3858    new(): CredentialsContainer;
3859};
3860
3861/** Basic cryptography features available in the current context. It allows access to a cryptographically strong random number generator and to cryptographic primitives. */
3862interface Crypto {
3863    /** Available only in secure contexts. */
3864    readonly subtle: SubtleCrypto;
3865    getRandomValues<T extends ArrayBufferView | null>(array: T): T;
3866    /** Available only in secure contexts. */
3867    randomUUID(): string;
3868}
3869
3870declare var Crypto: {
3871    prototype: Crypto;
3872    new(): Crypto;
3873};
3874
3875/**
3876 * The CryptoKey dictionary of the Web Crypto API represents a cryptographic key.
3877 * Available only in secure contexts.
3878 */
3879interface CryptoKey {
3880    readonly algorithm: KeyAlgorithm;
3881    readonly extractable: boolean;
3882    readonly type: KeyType;
3883    readonly usages: KeyUsage[];
3884}
3885
3886declare var CryptoKey: {
3887    prototype: CryptoKey;
3888    new(): CryptoKey;
3889};
3890
3891interface CustomElementRegistry {
3892    define(name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions): void;
3893    get(name: string): CustomElementConstructor | undefined;
3894    upgrade(root: Node): void;
3895    whenDefined(name: string): Promise<CustomElementConstructor>;
3896}
3897
3898declare var CustomElementRegistry: {
3899    prototype: CustomElementRegistry;
3900    new(): CustomElementRegistry;
3901};
3902
3903interface CustomEvent<T = any> extends Event {
3904    /** Returns any custom data event was created with. Typically used for synthetic events. */
3905    readonly detail: T;
3906    /** @deprecated */
3907    initCustomEvent(type: string, bubbles?: boolean, cancelable?: boolean, detail?: T): void;
3908}
3909
3910declare var CustomEvent: {
3911    prototype: CustomEvent;
3912    new<T>(type: string, eventInitDict?: CustomEventInit<T>): CustomEvent<T>;
3913};
3914
3915/** An abnormal event (called an exception) which occurs as a result of calling a method or accessing a property of a web API. */
3916interface DOMException extends Error {
3917    /** @deprecated */
3918    readonly code: number;
3919    readonly message: string;
3920    readonly name: string;
3921    readonly ABORT_ERR: number;
3922    readonly DATA_CLONE_ERR: number;
3923    readonly DOMSTRING_SIZE_ERR: number;
3924    readonly HIERARCHY_REQUEST_ERR: number;
3925    readonly INDEX_SIZE_ERR: number;
3926    readonly INUSE_ATTRIBUTE_ERR: number;
3927    readonly INVALID_ACCESS_ERR: number;
3928    readonly INVALID_CHARACTER_ERR: number;
3929    readonly INVALID_MODIFICATION_ERR: number;
3930    readonly INVALID_NODE_TYPE_ERR: number;
3931    readonly INVALID_STATE_ERR: number;
3932    readonly NAMESPACE_ERR: number;
3933    readonly NETWORK_ERR: number;
3934    readonly NOT_FOUND_ERR: number;
3935    readonly NOT_SUPPORTED_ERR: number;
3936    readonly NO_DATA_ALLOWED_ERR: number;
3937    readonly NO_MODIFICATION_ALLOWED_ERR: number;
3938    readonly QUOTA_EXCEEDED_ERR: number;
3939    readonly SECURITY_ERR: number;
3940    readonly SYNTAX_ERR: number;
3941    readonly TIMEOUT_ERR: number;
3942    readonly TYPE_MISMATCH_ERR: number;
3943    readonly URL_MISMATCH_ERR: number;
3944    readonly VALIDATION_ERR: number;
3945    readonly WRONG_DOCUMENT_ERR: number;
3946}
3947
3948declare var DOMException: {
3949    prototype: DOMException;
3950    new(message?: string, name?: string): DOMException;
3951    readonly ABORT_ERR: number;
3952    readonly DATA_CLONE_ERR: number;
3953    readonly DOMSTRING_SIZE_ERR: number;
3954    readonly HIERARCHY_REQUEST_ERR: number;
3955    readonly INDEX_SIZE_ERR: number;
3956    readonly INUSE_ATTRIBUTE_ERR: number;
3957    readonly INVALID_ACCESS_ERR: number;
3958    readonly INVALID_CHARACTER_ERR: number;
3959    readonly INVALID_MODIFICATION_ERR: number;
3960    readonly INVALID_NODE_TYPE_ERR: number;
3961    readonly INVALID_STATE_ERR: number;
3962    readonly NAMESPACE_ERR: number;
3963    readonly NETWORK_ERR: number;
3964    readonly NOT_FOUND_ERR: number;
3965    readonly NOT_SUPPORTED_ERR: number;
3966    readonly NO_DATA_ALLOWED_ERR: number;
3967    readonly NO_MODIFICATION_ALLOWED_ERR: number;
3968    readonly QUOTA_EXCEEDED_ERR: number;
3969    readonly SECURITY_ERR: number;
3970    readonly SYNTAX_ERR: number;
3971    readonly TIMEOUT_ERR: number;
3972    readonly TYPE_MISMATCH_ERR: number;
3973    readonly URL_MISMATCH_ERR: number;
3974    readonly VALIDATION_ERR: number;
3975    readonly WRONG_DOCUMENT_ERR: number;
3976};
3977
3978/** An object providing methods which are not dependent on any particular document. Such an object is returned by the Document.implementation property. */
3979interface DOMImplementation {
3980    createDocument(namespace: string | null, qualifiedName: string | null, doctype?: DocumentType | null): XMLDocument;
3981    createDocumentType(qualifiedName: string, publicId: string, systemId: string): DocumentType;
3982    createHTMLDocument(title?: string): Document;
3983    /** @deprecated */
3984    hasFeature(...args: any[]): true;
3985}
3986
3987declare var DOMImplementation: {
3988    prototype: DOMImplementation;
3989    new(): DOMImplementation;
3990};
3991
3992interface DOMMatrix extends DOMMatrixReadOnly {
3993    a: number;
3994    b: number;
3995    c: number;
3996    d: number;
3997    e: number;
3998    f: number;
3999    m11: number;
4000    m12: number;
4001    m13: number;
4002    m14: number;
4003    m21: number;
4004    m22: number;
4005    m23: number;
4006    m24: number;
4007    m31: number;
4008    m32: number;
4009    m33: number;
4010    m34: number;
4011    m41: number;
4012    m42: number;
4013    m43: number;
4014    m44: number;
4015    invertSelf(): DOMMatrix;
4016    multiplySelf(other?: DOMMatrixInit): DOMMatrix;
4017    preMultiplySelf(other?: DOMMatrixInit): DOMMatrix;
4018    rotateAxisAngleSelf(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;
4019    rotateFromVectorSelf(x?: number, y?: number): DOMMatrix;
4020    rotateSelf(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;
4021    scale3dSelf(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
4022    scaleSelf(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
4023    setMatrixValue(transformList: string): DOMMatrix;
4024    skewXSelf(sx?: number): DOMMatrix;
4025    skewYSelf(sy?: number): DOMMatrix;
4026    translateSelf(tx?: number, ty?: number, tz?: number): DOMMatrix;
4027}
4028
4029declare var DOMMatrix: {
4030    prototype: DOMMatrix;
4031    new(init?: string | number[]): DOMMatrix;
4032    fromFloat32Array(array32: Float32Array): DOMMatrix;
4033    fromFloat64Array(array64: Float64Array): DOMMatrix;
4034    fromMatrix(other?: DOMMatrixInit): DOMMatrix;
4035};
4036
4037type SVGMatrix = DOMMatrix;
4038declare var SVGMatrix: typeof DOMMatrix;
4039
4040type WebKitCSSMatrix = DOMMatrix;
4041declare var WebKitCSSMatrix: typeof DOMMatrix;
4042
4043interface DOMMatrixReadOnly {
4044    readonly a: number;
4045    readonly b: number;
4046    readonly c: number;
4047    readonly d: number;
4048    readonly e: number;
4049    readonly f: number;
4050    readonly is2D: boolean;
4051    readonly isIdentity: boolean;
4052    readonly m11: number;
4053    readonly m12: number;
4054    readonly m13: number;
4055    readonly m14: number;
4056    readonly m21: number;
4057    readonly m22: number;
4058    readonly m23: number;
4059    readonly m24: number;
4060    readonly m31: number;
4061    readonly m32: number;
4062    readonly m33: number;
4063    readonly m34: number;
4064    readonly m41: number;
4065    readonly m42: number;
4066    readonly m43: number;
4067    readonly m44: number;
4068    flipX(): DOMMatrix;
4069    flipY(): DOMMatrix;
4070    inverse(): DOMMatrix;
4071    multiply(other?: DOMMatrixInit): DOMMatrix;
4072    rotate(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;
4073    rotateAxisAngle(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;
4074    rotateFromVector(x?: number, y?: number): DOMMatrix;
4075    scale(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
4076    scale3d(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
4077    /** @deprecated */
4078    scaleNonUniform(scaleX?: number, scaleY?: number): DOMMatrix;
4079    skewX(sx?: number): DOMMatrix;
4080    skewY(sy?: number): DOMMatrix;
4081    toFloat32Array(): Float32Array;
4082    toFloat64Array(): Float64Array;
4083    toJSON(): any;
4084    transformPoint(point?: DOMPointInit): DOMPoint;
4085    translate(tx?: number, ty?: number, tz?: number): DOMMatrix;
4086    toString(): string;
4087}
4088
4089declare var DOMMatrixReadOnly: {
4090    prototype: DOMMatrixReadOnly;
4091    new(init?: string | number[]): DOMMatrixReadOnly;
4092    fromFloat32Array(array32: Float32Array): DOMMatrixReadOnly;
4093    fromFloat64Array(array64: Float64Array): DOMMatrixReadOnly;
4094    fromMatrix(other?: DOMMatrixInit): DOMMatrixReadOnly;
4095    toString(): string;
4096};
4097
4098/** Provides the ability to parse XML or HTML source code from a string into a DOM Document. */
4099interface DOMParser {
4100    /**
4101     * Parses string using either the HTML or XML parser, according to type, and returns the resulting Document. type can be "text/html" (which will invoke the HTML parser), or any of "text/xml", "application/xml", "application/xhtml+xml", or "image/svg+xml" (which will invoke the XML parser).
4102     *
4103     * For the XML parser, if string cannot be parsed, then the returned Document will contain elements describing the resulting error.
4104     *
4105     * Note that script elements are not evaluated during parsing, and the resulting document's encoding will always be UTF-8.
4106     *
4107     * Values other than the above for type will cause a TypeError exception to be thrown.
4108     */
4109    parseFromString(string: string, type: DOMParserSupportedType): Document;
4110}
4111
4112declare var DOMParser: {
4113    prototype: DOMParser;
4114    new(): DOMParser;
4115};
4116
4117interface DOMPoint extends DOMPointReadOnly {
4118    w: number;
4119    x: number;
4120    y: number;
4121    z: number;
4122}
4123
4124declare var DOMPoint: {
4125    prototype: DOMPoint;
4126    new(x?: number, y?: number, z?: number, w?: number): DOMPoint;
4127    fromPoint(other?: DOMPointInit): DOMPoint;
4128};
4129
4130type SVGPoint = DOMPoint;
4131declare var SVGPoint: typeof DOMPoint;
4132
4133interface DOMPointReadOnly {
4134    readonly w: number;
4135    readonly x: number;
4136    readonly y: number;
4137    readonly z: number;
4138    matrixTransform(matrix?: DOMMatrixInit): DOMPoint;
4139    toJSON(): any;
4140}
4141
4142declare var DOMPointReadOnly: {
4143    prototype: DOMPointReadOnly;
4144    new(x?: number, y?: number, z?: number, w?: number): DOMPointReadOnly;
4145    fromPoint(other?: DOMPointInit): DOMPointReadOnly;
4146};
4147
4148interface DOMQuad {
4149    readonly p1: DOMPoint;
4150    readonly p2: DOMPoint;
4151    readonly p3: DOMPoint;
4152    readonly p4: DOMPoint;
4153    getBounds(): DOMRect;
4154    toJSON(): any;
4155}
4156
4157declare var DOMQuad: {
4158    prototype: DOMQuad;
4159    new(p1?: DOMPointInit, p2?: DOMPointInit, p3?: DOMPointInit, p4?: DOMPointInit): DOMQuad;
4160    fromQuad(other?: DOMQuadInit): DOMQuad;
4161    fromRect(other?: DOMRectInit): DOMQuad;
4162};
4163
4164interface DOMRect extends DOMRectReadOnly {
4165    height: number;
4166    width: number;
4167    x: number;
4168    y: number;
4169}
4170
4171declare var DOMRect: {
4172    prototype: DOMRect;
4173    new(x?: number, y?: number, width?: number, height?: number): DOMRect;
4174    fromRect(other?: DOMRectInit): DOMRect;
4175};
4176
4177type SVGRect = DOMRect;
4178declare var SVGRect: typeof DOMRect;
4179
4180interface DOMRectList {
4181    readonly length: number;
4182    item(index: number): DOMRect | null;
4183    [index: number]: DOMRect;
4184}
4185
4186declare var DOMRectList: {
4187    prototype: DOMRectList;
4188    new(): DOMRectList;
4189};
4190
4191interface DOMRectReadOnly {
4192    readonly bottom: number;
4193    readonly height: number;
4194    readonly left: number;
4195    readonly right: number;
4196    readonly top: number;
4197    readonly width: number;
4198    readonly x: number;
4199    readonly y: number;
4200    toJSON(): any;
4201}
4202
4203declare var DOMRectReadOnly: {
4204    prototype: DOMRectReadOnly;
4205    new(x?: number, y?: number, width?: number, height?: number): DOMRectReadOnly;
4206    fromRect(other?: DOMRectInit): DOMRectReadOnly;
4207};
4208
4209/** A type returned by some APIs which contains a list of DOMString (strings). */
4210interface DOMStringList {
4211    /** Returns the number of strings in strings. */
4212    readonly length: number;
4213    /** Returns true if strings contains string, and false otherwise. */
4214    contains(string: string): boolean;
4215    /** Returns the string with index index from strings. */
4216    item(index: number): string | null;
4217    [index: number]: string;
4218}
4219
4220declare var DOMStringList: {
4221    prototype: DOMStringList;
4222    new(): DOMStringList;
4223};
4224
4225/** Used by the dataset HTML attribute to represent data for custom attributes added to elements. */
4226interface DOMStringMap {
4227    [name: string]: string | undefined;
4228}
4229
4230declare var DOMStringMap: {
4231    prototype: DOMStringMap;
4232    new(): DOMStringMap;
4233};
4234
4235/** A set of space-separated tokens. Such a set is returned by Element.classList, HTMLLinkElement.relList, HTMLAnchorElement.relList, HTMLAreaElement.relList, HTMLIframeElement.sandbox, or HTMLOutputElement.htmlFor. It is indexed beginning with 0 as with JavaScript Array objects. DOMTokenList is always case-sensitive. */
4236interface DOMTokenList {
4237    /** Returns the number of tokens. */
4238    readonly length: number;
4239    /**
4240     * Returns the associated set as string.
4241     *
4242     * Can be set, to change the associated attribute.
4243     */
4244    value: string;
4245    toString(): string;
4246    /**
4247     * Adds all arguments passed, except those already present.
4248     *
4249     * Throws a "SyntaxError" DOMException if one of the arguments is the empty string.
4250     *
4251     * Throws an "InvalidCharacterError" DOMException if one of the arguments contains any ASCII whitespace.
4252     */
4253    add(...tokens: string[]): void;
4254    /** Returns true if token is present, and false otherwise. */
4255    contains(token: string): boolean;
4256    /** Returns the token with index index. */
4257    item(index: number): string | null;
4258    /**
4259     * Removes arguments passed, if they are present.
4260     *
4261     * Throws a "SyntaxError" DOMException if one of the arguments is the empty string.
4262     *
4263     * Throws an "InvalidCharacterError" DOMException if one of the arguments contains any ASCII whitespace.
4264     */
4265    remove(...tokens: string[]): void;
4266    /**
4267     * Replaces token with newToken.
4268     *
4269     * Returns true if token was replaced with newToken, and false otherwise.
4270     *
4271     * Throws a "SyntaxError" DOMException if one of the arguments is the empty string.
4272     *
4273     * Throws an "InvalidCharacterError" DOMException if one of the arguments contains any ASCII whitespace.
4274     */
4275    replace(token: string, newToken: string): boolean;
4276    /**
4277     * Returns true if token is in the associated attribute's supported tokens. Returns false otherwise.
4278     *
4279     * Throws a TypeError if the associated attribute has no supported tokens defined.
4280     */
4281    supports(token: string): boolean;
4282    /**
4283     * If force is not given, "toggles" token, removing it if it's present and adding it if it's not present. If force is true, adds token (same as add()). If force is false, removes token (same as remove()).
4284     *
4285     * Returns true if token is now present, and false otherwise.
4286     *
4287     * Throws a "SyntaxError" DOMException if token is empty.
4288     *
4289     * Throws an "InvalidCharacterError" DOMException if token contains any spaces.
4290     */
4291    toggle(token: string, force?: boolean): boolean;
4292    forEach(callbackfn: (value: string, key: number, parent: DOMTokenList) => void, thisArg?: any): void;
4293    [index: number]: string;
4294}
4295
4296declare var DOMTokenList: {
4297    prototype: DOMTokenList;
4298    new(): DOMTokenList;
4299};
4300
4301/** Used to hold the data that is being dragged during a drag and drop operation. It may hold one or more data items, each of one or more data types. For more information about drag and drop, see HTML Drag and Drop API. */
4302interface DataTransfer {
4303    /**
4304     * Returns the kind of operation that is currently selected. If the kind of operation isn't one of those that is allowed by the effectAllowed attribute, then the operation will fail.
4305     *
4306     * Can be set, to change the selected operation.
4307     *
4308     * The possible values are "none", "copy", "link", and "move".
4309     */
4310    dropEffect: "none" | "copy" | "link" | "move";
4311    /**
4312     * Returns the kinds of operations that are to be allowed.
4313     *
4314     * Can be set (during the dragstart event), to change the allowed operations.
4315     *
4316     * The possible values are "none", "copy", "copyLink", "copyMove", "link", "linkMove", "move", "all", and "uninitialized",
4317     */
4318    effectAllowed: "none" | "copy" | "copyLink" | "copyMove" | "link" | "linkMove" | "move" | "all" | "uninitialized";
4319    /** Returns a FileList of the files being dragged, if any. */
4320    readonly files: FileList;
4321    /** Returns a DataTransferItemList object, with the drag data. */
4322    readonly items: DataTransferItemList;
4323    /** Returns a frozen array listing the formats that were set in the dragstart event. In addition, if any files are being dragged, then one of the types will be the string "Files". */
4324    readonly types: ReadonlyArray<string>;
4325    /** Removes the data of the specified formats. Removes all data if the argument is omitted. */
4326    clearData(format?: string): void;
4327    /** Returns the specified data. If there is no such data, returns the empty string. */
4328    getData(format: string): string;
4329    /** Adds the specified data. */
4330    setData(format: string, data: string): void;
4331    /** Uses the given element to update the drag feedback, replacing any previously specified feedback. */
4332    setDragImage(image: Element, x: number, y: number): void;
4333}
4334
4335declare var DataTransfer: {
4336    prototype: DataTransfer;
4337    new(): DataTransfer;
4338};
4339
4340/** One drag data item. During a drag operation, each drag event has a dataTransfer property which contains a list of drag data items. Each item in the list is a DataTransferItem object. */
4341interface DataTransferItem {
4342    /** Returns the drag data item kind, one of: "string", "file". */
4343    readonly kind: string;
4344    /** Returns the drag data item type string. */
4345    readonly type: string;
4346    /** Returns a File object, if the drag data item kind is File. */
4347    getAsFile(): File | null;
4348    /** Invokes the callback with the string data as the argument, if the drag data item kind is text. */
4349    getAsString(callback: FunctionStringCallback | null): void;
4350    webkitGetAsEntry(): FileSystemEntry | null;
4351}
4352
4353declare var DataTransferItem: {
4354    prototype: DataTransferItem;
4355    new(): DataTransferItem;
4356};
4357
4358/** A list of DataTransferItem objects representing items being dragged. During a drag operation, each DragEvent has a dataTransfer property and that property is a DataTransferItemList. */
4359interface DataTransferItemList {
4360    /** Returns the number of items in the drag data store. */
4361    readonly length: number;
4362    /** Adds a new entry for the given data to the drag data store. If the data is plain text then a type string has to be provided also. */
4363    add(data: string, type: string): DataTransferItem | null;
4364    add(data: File): DataTransferItem | null;
4365    /** Removes all the entries in the drag data store. */
4366    clear(): void;
4367    /** Removes the indexth entry in the drag data store. */
4368    remove(index: number): void;
4369    [index: number]: DataTransferItem;
4370}
4371
4372declare var DataTransferItemList: {
4373    prototype: DataTransferItemList;
4374    new(): DataTransferItemList;
4375};
4376
4377/** A delay-line; an AudioNode audio-processing module that causes a delay between the arrival of an input data and its propagation to the output. */
4378interface DelayNode extends AudioNode {
4379    readonly delayTime: AudioParam;
4380}
4381
4382declare var DelayNode: {
4383    prototype: DelayNode;
4384    new(context: BaseAudioContext, options?: DelayOptions): DelayNode;
4385};
4386
4387/**
4388 * The DeviceMotionEvent provides web developers with information about the speed of changes for the device's position and orientation.
4389 * Available only in secure contexts.
4390 */
4391interface DeviceMotionEvent extends Event {
4392    readonly acceleration: DeviceMotionEventAcceleration | null;
4393    readonly accelerationIncludingGravity: DeviceMotionEventAcceleration | null;
4394    readonly interval: number;
4395    readonly rotationRate: DeviceMotionEventRotationRate | null;
4396}
4397
4398declare var DeviceMotionEvent: {
4399    prototype: DeviceMotionEvent;
4400    new(type: string, eventInitDict?: DeviceMotionEventInit): DeviceMotionEvent;
4401};
4402
4403/** Available only in secure contexts. */
4404interface DeviceMotionEventAcceleration {
4405    readonly x: number | null;
4406    readonly y: number | null;
4407    readonly z: number | null;
4408}
4409
4410/** Available only in secure contexts. */
4411interface DeviceMotionEventRotationRate {
4412    readonly alpha: number | null;
4413    readonly beta: number | null;
4414    readonly gamma: number | null;
4415}
4416
4417/**
4418 * The DeviceOrientationEvent provides web developers with information from the physical orientation of the device running the web page.
4419 * Available only in secure contexts.
4420 */
4421interface DeviceOrientationEvent extends Event {
4422    readonly absolute: boolean;
4423    readonly alpha: number | null;
4424    readonly beta: number | null;
4425    readonly gamma: number | null;
4426}
4427
4428declare var DeviceOrientationEvent: {
4429    prototype: DeviceOrientationEvent;
4430    new(type: string, eventInitDict?: DeviceOrientationEventInit): DeviceOrientationEvent;
4431};
4432
4433interface DocumentEventMap extends DocumentAndElementEventHandlersEventMap, GlobalEventHandlersEventMap {
4434    "DOMContentLoaded": Event;
4435    "fullscreenchange": Event;
4436    "fullscreenerror": Event;
4437    "pointerlockchange": Event;
4438    "pointerlockerror": Event;
4439    "readystatechange": Event;
4440    "visibilitychange": Event;
4441}
4442
4443/** Any web page loaded in the browser and serves as an entry point into the web page's content, which is the DOM tree. */
4444interface Document extends Node, DocumentAndElementEventHandlers, DocumentOrShadowRoot, FontFaceSource, GlobalEventHandlers, NonElementParentNode, ParentNode, XPathEvaluatorBase {
4445    /** Sets or gets the URL for the current document. */
4446    readonly URL: string;
4447    /**
4448     * Sets or gets the color of all active links in the document.
4449     * @deprecated
4450     */
4451    alinkColor: string;
4452    /**
4453     * Returns a reference to the collection of elements contained by the object.
4454     * @deprecated
4455     */
4456    readonly all: HTMLAllCollection;
4457    /**
4458     * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order.
4459     * @deprecated
4460     */
4461    readonly anchors: HTMLCollectionOf<HTMLAnchorElement>;
4462    /**
4463     * Retrieves a collection of all applet objects in the document.
4464     * @deprecated
4465     */
4466    readonly applets: HTMLCollection;
4467    /**
4468     * Deprecated. Sets or retrieves a value that indicates the background color behind the object.
4469     * @deprecated
4470     */
4471    bgColor: string;
4472    /** Specifies the beginning and end of the document body. */
4473    body: HTMLElement;
4474    /** Returns document's encoding. */
4475    readonly characterSet: string;
4476    /**
4477     * Gets or sets the character set used to encode the object.
4478     * @deprecated This is a legacy alias of `characterSet`.
4479     */
4480    readonly charset: string;
4481    /** Gets a value that indicates whether standards-compliant mode is switched on for the object. */
4482    readonly compatMode: string;
4483    /** Returns document's content type. */
4484    readonly contentType: string;
4485    /**
4486     * Returns the HTTP cookies that apply to the Document. If there are no cookies or cookies can't be applied to this resource, the empty string will be returned.
4487     *
4488     * Can be set, to add a new cookie to the element's set of HTTP cookies.
4489     *
4490     * If the contents are sandboxed into a unique origin (e.g. in an iframe with the sandbox attribute), a "SecurityError" DOMException will be thrown on getting and setting.
4491     */
4492    cookie: string;
4493    /**
4494     * Returns the script element, or the SVG script element, that is currently executing, as long as the element represents a classic script. In the case of reentrant script execution, returns the one that most recently started executing amongst those that have not yet finished executing.
4495     *
4496     * Returns null if the Document is not currently executing a script or SVG script element (e.g., because the running script is an event handler, or a timeout), or if the currently executing script or SVG script element represents a module script.
4497     */
4498    readonly currentScript: HTMLOrSVGScriptElement | null;
4499    /** Returns the Window object of the active document. */
4500    readonly defaultView: (WindowProxy & typeof globalThis) | null;
4501    /** Sets or gets a value that indicates whether the document can be edited. */
4502    designMode: string;
4503    /** Sets or retrieves a value that indicates the reading order of the object. */
4504    dir: string;
4505    /** Gets an object representing the document type declaration associated with the current document. */
4506    readonly doctype: DocumentType | null;
4507    /** Gets a reference to the root node of the document. */
4508    readonly documentElement: HTMLElement;
4509    /** Returns document's URL. */
4510    readonly documentURI: string;
4511    /**
4512     * Sets or gets the security domain of the document.
4513     * @deprecated
4514     */
4515    domain: string;
4516    /** Retrieves a collection of all embed objects in the document. */
4517    readonly embeds: HTMLCollectionOf<HTMLEmbedElement>;
4518    /**
4519     * Sets or gets the foreground (text) color of the document.
4520     * @deprecated
4521     */
4522    fgColor: string;
4523    /** Retrieves a collection, in source order, of all form objects in the document. */
4524    readonly forms: HTMLCollectionOf<HTMLFormElement>;
4525    /** @deprecated */
4526    readonly fullscreen: boolean;
4527    /** Returns true if document has the ability to display elements fullscreen and fullscreen is supported, or false otherwise. */
4528    readonly fullscreenEnabled: boolean;
4529    /** Returns the head element. */
4530    readonly head: HTMLHeadElement;
4531    readonly hidden: boolean;
4532    /** Retrieves a collection, in source order, of img objects in the document. */
4533    readonly images: HTMLCollectionOf<HTMLImageElement>;
4534    /** Gets the implementation object of the current document. */
4535    readonly implementation: DOMImplementation;
4536    /**
4537     * Returns the character encoding used to create the webpage that is loaded into the document object.
4538     * @deprecated This is a legacy alias of `characterSet`.
4539     */
4540    readonly inputEncoding: string;
4541    /** Gets the date that the page was last modified, if the page supplies one. */
4542    readonly lastModified: string;
4543    /**
4544     * Sets or gets the color of the document links.
4545     * @deprecated
4546     */
4547    linkColor: string;
4548    /** Retrieves a collection of all a objects that specify the href property and all area objects in the document. */
4549    readonly links: HTMLCollectionOf<HTMLAnchorElement | HTMLAreaElement>;
4550    /** Contains information about the current URL. */
4551    get location(): Location;
4552    set location(href: string | Location);
4553    onfullscreenchange: ((this: Document, ev: Event) => any) | null;
4554    onfullscreenerror: ((this: Document, ev: Event) => any) | null;
4555    onpointerlockchange: ((this: Document, ev: Event) => any) | null;
4556    onpointerlockerror: ((this: Document, ev: Event) => any) | null;
4557    /**
4558     * Fires when the state of the object has changed.
4559     * @param ev The event
4560     */
4561    onreadystatechange: ((this: Document, ev: Event) => any) | null;
4562    onvisibilitychange: ((this: Document, ev: Event) => any) | null;
4563    readonly ownerDocument: null;
4564    readonly pictureInPictureEnabled: boolean;
4565    /** Return an HTMLCollection of the embed elements in the Document. */
4566    readonly plugins: HTMLCollectionOf<HTMLEmbedElement>;
4567    /** Retrieves a value that indicates the current state of the object. */
4568    readonly readyState: DocumentReadyState;
4569    /** Gets the URL of the location that referred the user to the current page. */
4570    readonly referrer: string;
4571    /** @deprecated */
4572    readonly rootElement: SVGSVGElement | null;
4573    /** Retrieves a collection of all script objects in the document. */
4574    readonly scripts: HTMLCollectionOf<HTMLScriptElement>;
4575    readonly scrollingElement: Element | null;
4576    readonly timeline: DocumentTimeline;
4577    /** Contains the title of the document. */
4578    title: string;
4579    readonly visibilityState: DocumentVisibilityState;
4580    /**
4581     * Sets or gets the color of the links that the user has visited.
4582     * @deprecated
4583     */
4584    vlinkColor: string;
4585    /**
4586     * Moves node from another document and returns it.
4587     *
4588     * If node is a document, throws a "NotSupportedError" DOMException or, if node is a shadow root, throws a "HierarchyRequestError" DOMException.
4589     */
4590    adoptNode<T extends Node>(node: T): T;
4591    /** @deprecated */
4592    captureEvents(): void;
4593    /** @deprecated */
4594    caretRangeFromPoint(x: number, y: number): Range | null;
4595    /** @deprecated */
4596    clear(): void;
4597    /** Closes an output stream and forces the sent data to display. */
4598    close(): void;
4599    /**
4600     * Creates an attribute object with a specified name.
4601     * @param name String that sets the attribute object's name.
4602     */
4603    createAttribute(localName: string): Attr;
4604    createAttributeNS(namespace: string | null, qualifiedName: string): Attr;
4605    /** Returns a CDATASection node whose data is data. */
4606    createCDATASection(data: string): CDATASection;
4607    /**
4608     * Creates a comment object with the specified data.
4609     * @param data Sets the comment object's data.
4610     */
4611    createComment(data: string): Comment;
4612    /** Creates a new document. */
4613    createDocumentFragment(): DocumentFragment;
4614    /**
4615     * Creates an instance of the element for the specified tag.
4616     * @param tagName The name of an element.
4617     */
4618    createElement<K extends keyof HTMLElementTagNameMap>(tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K];
4619    /** @deprecated */
4620    createElement<K extends keyof HTMLElementDeprecatedTagNameMap>(tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K];
4621    createElement(tagName: string, options?: ElementCreationOptions): HTMLElement;
4622    /**
4623     * Returns an element with namespace namespace. Its namespace prefix will be everything before ":" (U+003E) in qualifiedName or null. Its local name will be everything after ":" (U+003E) in qualifiedName or qualifiedName.
4624     *
4625     * If localName does not match the Name production an "InvalidCharacterError" DOMException will be thrown.
4626     *
4627     * If one of the following conditions is true a "NamespaceError" DOMException will be thrown:
4628     *
4629     * localName does not match the QName production.
4630     * Namespace prefix is not null and namespace is the empty string.
4631     * Namespace prefix is "xml" and namespace is not the XML namespace.
4632     * qualifiedName or namespace prefix is "xmlns" and namespace is not the XMLNS namespace.
4633     * namespace is the XMLNS namespace and neither qualifiedName nor namespace prefix is "xmlns".
4634     *
4635     * When supplied, options's is can be used to create a customized built-in element.
4636     */
4637    createElementNS(namespaceURI: "http://www.w3.org/1999/xhtml", qualifiedName: string): HTMLElement;
4638    createElementNS<K extends keyof SVGElementTagNameMap>(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: K): SVGElementTagNameMap[K];
4639    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: string): SVGElement;
4640    createElementNS(namespaceURI: string | null, qualifiedName: string, options?: ElementCreationOptions): Element;
4641    createElementNS(namespace: string | null, qualifiedName: string, options?: string | ElementCreationOptions): Element;
4642    createEvent(eventInterface: "AnimationEvent"): AnimationEvent;
4643    createEvent(eventInterface: "AnimationPlaybackEvent"): AnimationPlaybackEvent;
4644    createEvent(eventInterface: "AudioProcessingEvent"): AudioProcessingEvent;
4645    createEvent(eventInterface: "BeforeUnloadEvent"): BeforeUnloadEvent;
4646    createEvent(eventInterface: "BlobEvent"): BlobEvent;
4647    createEvent(eventInterface: "ClipboardEvent"): ClipboardEvent;
4648    createEvent(eventInterface: "CloseEvent"): CloseEvent;
4649    createEvent(eventInterface: "CompositionEvent"): CompositionEvent;
4650    createEvent(eventInterface: "CustomEvent"): CustomEvent;
4651    createEvent(eventInterface: "DeviceMotionEvent"): DeviceMotionEvent;
4652    createEvent(eventInterface: "DeviceOrientationEvent"): DeviceOrientationEvent;
4653    createEvent(eventInterface: "DragEvent"): DragEvent;
4654    createEvent(eventInterface: "ErrorEvent"): ErrorEvent;
4655    createEvent(eventInterface: "Event"): Event;
4656    createEvent(eventInterface: "Events"): Event;
4657    createEvent(eventInterface: "FocusEvent"): FocusEvent;
4658    createEvent(eventInterface: "FontFaceSetLoadEvent"): FontFaceSetLoadEvent;
4659    createEvent(eventInterface: "FormDataEvent"): FormDataEvent;
4660    createEvent(eventInterface: "GamepadEvent"): GamepadEvent;
4661    createEvent(eventInterface: "HashChangeEvent"): HashChangeEvent;
4662    createEvent(eventInterface: "IDBVersionChangeEvent"): IDBVersionChangeEvent;
4663    createEvent(eventInterface: "InputEvent"): InputEvent;
4664    createEvent(eventInterface: "KeyboardEvent"): KeyboardEvent;
4665    createEvent(eventInterface: "MediaEncryptedEvent"): MediaEncryptedEvent;
4666    createEvent(eventInterface: "MediaKeyMessageEvent"): MediaKeyMessageEvent;
4667    createEvent(eventInterface: "MediaQueryListEvent"): MediaQueryListEvent;
4668    createEvent(eventInterface: "MediaStreamTrackEvent"): MediaStreamTrackEvent;
4669    createEvent(eventInterface: "MessageEvent"): MessageEvent;
4670    createEvent(eventInterface: "MouseEvent"): MouseEvent;
4671    createEvent(eventInterface: "MouseEvents"): MouseEvent;
4672    createEvent(eventInterface: "MutationEvent"): MutationEvent;
4673    createEvent(eventInterface: "MutationEvents"): MutationEvent;
4674    createEvent(eventInterface: "OfflineAudioCompletionEvent"): OfflineAudioCompletionEvent;
4675    createEvent(eventInterface: "PageTransitionEvent"): PageTransitionEvent;
4676    createEvent(eventInterface: "PaymentMethodChangeEvent"): PaymentMethodChangeEvent;
4677    createEvent(eventInterface: "PaymentRequestUpdateEvent"): PaymentRequestUpdateEvent;
4678    createEvent(eventInterface: "PictureInPictureEvent"): PictureInPictureEvent;
4679    createEvent(eventInterface: "PointerEvent"): PointerEvent;
4680    createEvent(eventInterface: "PopStateEvent"): PopStateEvent;
4681    createEvent(eventInterface: "ProgressEvent"): ProgressEvent;
4682    createEvent(eventInterface: "PromiseRejectionEvent"): PromiseRejectionEvent;
4683    createEvent(eventInterface: "RTCDTMFToneChangeEvent"): RTCDTMFToneChangeEvent;
4684    createEvent(eventInterface: "RTCDataChannelEvent"): RTCDataChannelEvent;
4685    createEvent(eventInterface: "RTCErrorEvent"): RTCErrorEvent;
4686    createEvent(eventInterface: "RTCPeerConnectionIceErrorEvent"): RTCPeerConnectionIceErrorEvent;
4687    createEvent(eventInterface: "RTCPeerConnectionIceEvent"): RTCPeerConnectionIceEvent;
4688    createEvent(eventInterface: "RTCTrackEvent"): RTCTrackEvent;
4689    createEvent(eventInterface: "SecurityPolicyViolationEvent"): SecurityPolicyViolationEvent;
4690    createEvent(eventInterface: "SpeechSynthesisErrorEvent"): SpeechSynthesisErrorEvent;
4691    createEvent(eventInterface: "SpeechSynthesisEvent"): SpeechSynthesisEvent;
4692    createEvent(eventInterface: "StorageEvent"): StorageEvent;
4693    createEvent(eventInterface: "SubmitEvent"): SubmitEvent;
4694    createEvent(eventInterface: "TouchEvent"): TouchEvent;
4695    createEvent(eventInterface: "TrackEvent"): TrackEvent;
4696    createEvent(eventInterface: "TransitionEvent"): TransitionEvent;
4697    createEvent(eventInterface: "UIEvent"): UIEvent;
4698    createEvent(eventInterface: "UIEvents"): UIEvent;
4699    createEvent(eventInterface: "WebGLContextEvent"): WebGLContextEvent;
4700    createEvent(eventInterface: "WheelEvent"): WheelEvent;
4701    createEvent(eventInterface: string): Event;
4702    /**
4703     * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.
4704     * @param root The root element or node to start traversing on.
4705     * @param whatToShow The type of nodes or elements to appear in the node list
4706     * @param filter A custom NodeFilter function to use. For more information, see filter. Use null for no filter.
4707     */
4708    createNodeIterator(root: Node, whatToShow?: number, filter?: NodeFilter | null): NodeIterator;
4709    /** Returns a ProcessingInstruction node whose target is target and data is data. If target does not match the Name production an "InvalidCharacterError" DOMException will be thrown. If data contains "?>" an "InvalidCharacterError" DOMException will be thrown. */
4710    createProcessingInstruction(target: string, data: string): ProcessingInstruction;
4711    /**  Returns an empty range object that has both of its boundary points positioned at the beginning of the document. */
4712    createRange(): Range;
4713    /**
4714     * Creates a text string from the specified value.
4715     * @param data String that specifies the nodeValue property of the text node.
4716     */
4717    createTextNode(data: string): Text;
4718    /**
4719     * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document.
4720     * @param root The root element or node to start traversing on.
4721     * @param whatToShow The type of nodes or elements to appear in the node list. For more information, see whatToShow.
4722     * @param filter A custom NodeFilter function to use.
4723     */
4724    createTreeWalker(root: Node, whatToShow?: number, filter?: NodeFilter | null): TreeWalker;
4725    /**
4726     * Executes a command on the current document, current selection, or the given range.
4727     * @param commandId String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
4728     * @param showUI Display the user interface, defaults to false.
4729     * @param value Value to assign.
4730     * @deprecated
4731     */
4732    execCommand(commandId: string, showUI?: boolean, value?: string): boolean;
4733    /** Stops document's fullscreen element from being displayed fullscreen and resolves promise when done. */
4734    exitFullscreen(): Promise<void>;
4735    exitPictureInPicture(): Promise<void>;
4736    exitPointerLock(): void;
4737    /**
4738     * Returns a reference to the first object with the specified value of the ID attribute.
4739     * @param elementId String that specifies the ID value.
4740     */
4741    getElementById(elementId: string): HTMLElement | null;
4742    /** Returns a HTMLCollection of the elements in the object on which the method was invoked (a document or an element) that have all the classes given by classNames. The classNames argument is interpreted as a space-separated list of classes. */
4743    getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;
4744    /**
4745     * Gets a collection of objects based on the value of the NAME or ID attribute.
4746     * @param elementName Gets a collection of objects based on the value of the NAME or ID attribute.
4747     */
4748    getElementsByName(elementName: string): NodeListOf<HTMLElement>;
4749    /**
4750     * Retrieves a collection of objects based on the specified element name.
4751     * @param name Specifies the name of an element.
4752     */
4753    getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;
4754    getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;
4755    getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;
4756    /**
4757     * If namespace and localName are "*" returns a HTMLCollection of all descendant elements.
4758     *
4759     * If only namespace is "*" returns a HTMLCollection of all descendant elements whose local name is localName.
4760     *
4761     * If only localName is "*" returns a HTMLCollection of all descendant elements whose namespace is namespace.
4762     *
4763     * Otherwise, returns a HTMLCollection of all descendant elements whose namespace is namespace and local name is localName.
4764     */
4765    getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf<HTMLElement>;
4766    getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf<SVGElement>;
4767    getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf<Element>;
4768    /** Returns an object representing the current selection of the document that is loaded into the object displaying a webpage. */
4769    getSelection(): Selection | null;
4770    /** Gets a value indicating whether the object currently has focus. */
4771    hasFocus(): boolean;
4772    hasStorageAccess(): Promise<boolean>;
4773    /**
4774     * Returns a copy of node. If deep is true, the copy also includes the node's descendants.
4775     *
4776     * If node is a document or a shadow root, throws a "NotSupportedError" DOMException.
4777     */
4778    importNode<T extends Node>(node: T, deep?: boolean): T;
4779    /**
4780     * Opens a new window and loads a document specified by a given URL. Also, opens a new window that uses the url parameter and the name parameter to collect the output of the write method and the writeln method.
4781     * @param url Specifies a MIME type for the document.
4782     * @param name Specifies the name of the window. This name is used as the value for the TARGET attribute on a form or an anchor element.
4783     * @param features Contains a list of items separated by commas. Each item consists of an option and a value, separated by an equals sign (for example, "fullscreen=yes, toolbar=yes"). The following values are supported.
4784     * @param replace Specifies whether the existing entry for the document is replaced in the history list.
4785     */
4786    open(unused1?: string, unused2?: string): Document;
4787    open(url: string | URL, name: string, features: string): WindowProxy | null;
4788    /**
4789     * Returns a Boolean value that indicates whether a specified command can be successfully executed using execCommand, given the current state of the document.
4790     * @param commandId Specifies a command identifier.
4791     * @deprecated
4792     */
4793    queryCommandEnabled(commandId: string): boolean;
4794    /**
4795     * Returns a Boolean value that indicates whether the specified command is in the indeterminate state.
4796     * @param commandId String that specifies a command identifier.
4797     * @deprecated
4798     */
4799    queryCommandIndeterm(commandId: string): boolean;
4800    /**
4801     * Returns a Boolean value that indicates the current state of the command.
4802     * @param commandId String that specifies a command identifier.
4803     * @deprecated
4804     */
4805    queryCommandState(commandId: string): boolean;
4806    /**
4807     * Returns a Boolean value that indicates whether the current command is supported on the current range.
4808     * @param commandId Specifies a command identifier.
4809     * @deprecated
4810     */
4811    queryCommandSupported(commandId: string): boolean;
4812    /**
4813     * Returns the current value of the document, range, or current selection for the given command.
4814     * @param commandId String that specifies a command identifier.
4815     * @deprecated
4816     */
4817    queryCommandValue(commandId: string): string;
4818    /** @deprecated */
4819    releaseEvents(): void;
4820    requestStorageAccess(): Promise<void>;
4821    /**
4822     * Writes one or more HTML expressions to a document in the specified window.
4823     * @param content Specifies the text and HTML tags to write.
4824     */
4825    write(...text: string[]): void;
4826    /**
4827     * Writes one or more HTML expressions, followed by a carriage return, to a document in the specified window.
4828     * @param content The text and HTML tags to write.
4829     */
4830    writeln(...text: string[]): void;
4831    addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4832    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4833    removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4834    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
4835}
4836
4837declare var Document: {
4838    prototype: Document;
4839    new(): Document;
4840};
4841
4842interface DocumentAndElementEventHandlersEventMap {
4843    "copy": ClipboardEvent;
4844    "cut": ClipboardEvent;
4845    "paste": ClipboardEvent;
4846}
4847
4848interface DocumentAndElementEventHandlers {
4849    oncopy: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;
4850    oncut: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;
4851    onpaste: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;
4852    addEventListener<K extends keyof DocumentAndElementEventHandlersEventMap>(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4853    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4854    removeEventListener<K extends keyof DocumentAndElementEventHandlersEventMap>(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4855    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
4856}
4857
4858/** A minimal document object that has no parent. It is used as a lightweight version of Document that stores a segment of a document structure comprised of nodes just like a standard document. The key difference is that because the document fragment isn't part of the active document tree structure, changes made to the fragment don't affect the document, cause reflow, or incur any performance impact that can occur when changes are made. */
4859interface DocumentFragment extends Node, NonElementParentNode, ParentNode {
4860    readonly ownerDocument: Document;
4861    getElementById(elementId: string): HTMLElement | null;
4862}
4863
4864declare var DocumentFragment: {
4865    prototype: DocumentFragment;
4866    new(): DocumentFragment;
4867};
4868
4869interface DocumentOrShadowRoot {
4870    /**
4871     * Returns the deepest element in the document through which or to which key events are being routed. This is, roughly speaking, the focused element in the document.
4872     *
4873     * For the purposes of this API, when a child browsing context is focused, its container is focused in the parent browsing context. For example, if the user moves the focus to a text control in an iframe, the iframe is the element returned by the activeElement API in the iframe's node document.
4874     *
4875     * Similarly, when the focused element is in a different node tree than documentOrShadowRoot, the element returned will be the host that's located in the same node tree as documentOrShadowRoot if documentOrShadowRoot is a shadow-including inclusive ancestor of the focused element, and null if not.
4876     */
4877    readonly activeElement: Element | null;
4878    adoptedStyleSheets: CSSStyleSheet[];
4879    /** Returns document's fullscreen element. */
4880    readonly fullscreenElement: Element | null;
4881    readonly pictureInPictureElement: Element | null;
4882    readonly pointerLockElement: Element | null;
4883    /** Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document. */
4884    readonly styleSheets: StyleSheetList;
4885    /**
4886     * Returns the element for the specified x coordinate and the specified y coordinate.
4887     * @param x The x-offset
4888     * @param y The y-offset
4889     */
4890    elementFromPoint(x: number, y: number): Element | null;
4891    elementsFromPoint(x: number, y: number): Element[];
4892    getAnimations(): Animation[];
4893}
4894
4895interface DocumentTimeline extends AnimationTimeline {
4896}
4897
4898declare var DocumentTimeline: {
4899    prototype: DocumentTimeline;
4900    new(options?: DocumentTimelineOptions): DocumentTimeline;
4901};
4902
4903/** A Node containing a doctype. */
4904interface DocumentType extends Node, ChildNode {
4905    readonly name: string;
4906    readonly ownerDocument: Document;
4907    readonly publicId: string;
4908    readonly systemId: string;
4909}
4910
4911declare var DocumentType: {
4912    prototype: DocumentType;
4913    new(): DocumentType;
4914};
4915
4916/** A DOM event that represents a drag and drop interaction. The user initiates a drag by placing a pointer device (such as a mouse) on the touch surface and then dragging the pointer to a new location (such as another DOM element). Applications are free to interpret a drag and drop interaction in an application-specific way. */
4917interface DragEvent extends MouseEvent {
4918    /** Returns the DataTransfer object for the event. */
4919    readonly dataTransfer: DataTransfer | null;
4920}
4921
4922declare var DragEvent: {
4923    prototype: DragEvent;
4924    new(type: string, eventInitDict?: DragEventInit): DragEvent;
4925};
4926
4927/** Inherits properties from its parent, AudioNode. */
4928interface DynamicsCompressorNode extends AudioNode {
4929    readonly attack: AudioParam;
4930    readonly knee: AudioParam;
4931    readonly ratio: AudioParam;
4932    readonly reduction: number;
4933    readonly release: AudioParam;
4934    readonly threshold: AudioParam;
4935}
4936
4937declare var DynamicsCompressorNode: {
4938    prototype: DynamicsCompressorNode;
4939    new(context: BaseAudioContext, options?: DynamicsCompressorOptions): DynamicsCompressorNode;
4940};
4941
4942interface EXT_blend_minmax {
4943    readonly MAX_EXT: GLenum;
4944    readonly MIN_EXT: GLenum;
4945}
4946
4947interface EXT_color_buffer_float {
4948}
4949
4950interface EXT_color_buffer_half_float {
4951    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: GLenum;
4952    readonly RGB16F_EXT: GLenum;
4953    readonly RGBA16F_EXT: GLenum;
4954    readonly UNSIGNED_NORMALIZED_EXT: GLenum;
4955}
4956
4957interface EXT_float_blend {
4958}
4959
4960/** The EXT_frag_depth extension is part of the WebGL API and enables to set a depth value of a fragment from within the fragment shader. */
4961interface EXT_frag_depth {
4962}
4963
4964interface EXT_sRGB {
4965    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: GLenum;
4966    readonly SRGB8_ALPHA8_EXT: GLenum;
4967    readonly SRGB_ALPHA_EXT: GLenum;
4968    readonly SRGB_EXT: GLenum;
4969}
4970
4971interface EXT_shader_texture_lod {
4972}
4973
4974interface EXT_texture_compression_bptc {
4975    readonly COMPRESSED_RGBA_BPTC_UNORM_EXT: GLenum;
4976    readonly COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: GLenum;
4977    readonly COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: GLenum;
4978    readonly COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: GLenum;
4979}
4980
4981interface EXT_texture_compression_rgtc {
4982    readonly COMPRESSED_RED_GREEN_RGTC2_EXT: GLenum;
4983    readonly COMPRESSED_RED_RGTC1_EXT: GLenum;
4984    readonly COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: GLenum;
4985    readonly COMPRESSED_SIGNED_RED_RGTC1_EXT: GLenum;
4986}
4987
4988/** The EXT_texture_filter_anisotropic extension is part of the WebGL API and exposes two constants for anisotropic filtering (AF). */
4989interface EXT_texture_filter_anisotropic {
4990    readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: GLenum;
4991    readonly TEXTURE_MAX_ANISOTROPY_EXT: GLenum;
4992}
4993
4994interface EXT_texture_norm16 {
4995    readonly R16_EXT: GLenum;
4996    readonly R16_SNORM_EXT: GLenum;
4997    readonly RG16_EXT: GLenum;
4998    readonly RG16_SNORM_EXT: GLenum;
4999    readonly RGB16_EXT: GLenum;
5000    readonly RGB16_SNORM_EXT: GLenum;
5001    readonly RGBA16_EXT: GLenum;
5002    readonly RGBA16_SNORM_EXT: GLenum;
5003}
5004
5005interface ElementEventMap {
5006    "fullscreenchange": Event;
5007    "fullscreenerror": Event;
5008}
5009
5010/** Element is the most general base class from which all objects in a Document inherit. It only has methods and properties common to all kinds of elements. More specific classes inherit from Element. */
5011interface Element extends Node, ARIAMixin, Animatable, ChildNode, InnerHTML, NonDocumentTypeChildNode, ParentNode, Slottable {
5012    readonly attributes: NamedNodeMap;
5013    /** Allows for manipulation of element's class content attribute as a set of whitespace-separated tokens through a DOMTokenList object. */
5014    readonly classList: DOMTokenList;
5015    /** Returns the value of element's class content attribute. Can be set to change it. */
5016    className: string;
5017    readonly clientHeight: number;
5018    readonly clientLeft: number;
5019    readonly clientTop: number;
5020    readonly clientWidth: number;
5021    /** Returns the value of element's id content attribute. Can be set to change it. */
5022    id: string;
5023    /** Returns the local name. */
5024    readonly localName: string;
5025    /** Returns the namespace. */
5026    readonly namespaceURI: string | null;
5027    onfullscreenchange: ((this: Element, ev: Event) => any) | null;
5028    onfullscreenerror: ((this: Element, ev: Event) => any) | null;
5029    outerHTML: string;
5030    readonly ownerDocument: Document;
5031    readonly part: DOMTokenList;
5032    /** Returns the namespace prefix. */
5033    readonly prefix: string | null;
5034    readonly scrollHeight: number;
5035    scrollLeft: number;
5036    scrollTop: number;
5037    readonly scrollWidth: number;
5038    /** Returns element's shadow root, if any, and if shadow root's mode is "open", and null otherwise. */
5039    readonly shadowRoot: ShadowRoot | null;
5040    /** Returns the value of element's slot content attribute. Can be set to change it. */
5041    slot: string;
5042    /** Returns the HTML-uppercased qualified name. */
5043    readonly tagName: string;
5044    /** Creates a shadow root for element and returns it. */
5045    attachShadow(init: ShadowRootInit): ShadowRoot;
5046    /** Returns the first (starting at element) inclusive ancestor that matches selectors, and null otherwise. */
5047    closest<K extends keyof HTMLElementTagNameMap>(selector: K): HTMLElementTagNameMap[K] | null;
5048    closest<K extends keyof SVGElementTagNameMap>(selector: K): SVGElementTagNameMap[K] | null;
5049    closest<E extends Element = Element>(selectors: string): E | null;
5050    /** Returns element's first attribute whose qualified name is qualifiedName, and null if there is no such attribute otherwise. */
5051    getAttribute(qualifiedName: string): string | null;
5052    /** Returns element's attribute whose namespace is namespace and local name is localName, and null if there is no such attribute otherwise. */
5053    getAttributeNS(namespace: string | null, localName: string): string | null;
5054    /** Returns the qualified names of all element's attributes. Can contain duplicates. */
5055    getAttributeNames(): string[];
5056    getAttributeNode(qualifiedName: string): Attr | null;
5057    getAttributeNodeNS(namespace: string | null, localName: string): Attr | null;
5058    getBoundingClientRect(): DOMRect;
5059    getClientRects(): DOMRectList;
5060    /** Returns a HTMLCollection of the elements in the object on which the method was invoked (a document or an element) that have all the classes given by classNames. The classNames argument is interpreted as a space-separated list of classes. */
5061    getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;
5062    getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;
5063    getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;
5064    getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;
5065    getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf<HTMLElement>;
5066    getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf<SVGElement>;
5067    getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf<Element>;
5068    /** Returns true if element has an attribute whose qualified name is qualifiedName, and false otherwise. */
5069    hasAttribute(qualifiedName: string): boolean;
5070    /** Returns true if element has an attribute whose namespace is namespace and local name is localName. */
5071    hasAttributeNS(namespace: string | null, localName: string): boolean;
5072    /** Returns true if element has attributes, and false otherwise. */
5073    hasAttributes(): boolean;
5074    hasPointerCapture(pointerId: number): boolean;
5075    insertAdjacentElement(where: InsertPosition, element: Element): Element | null;
5076    insertAdjacentHTML(position: InsertPosition, text: string): void;
5077    insertAdjacentText(where: InsertPosition, data: string): void;
5078    /** Returns true if matching selectors against element's root yields element, and false otherwise. */
5079    matches(selectors: string): boolean;
5080    releasePointerCapture(pointerId: number): void;
5081    /** Removes element's first attribute whose qualified name is qualifiedName. */
5082    removeAttribute(qualifiedName: string): void;
5083    /** Removes element's attribute whose namespace is namespace and local name is localName. */
5084    removeAttributeNS(namespace: string | null, localName: string): void;
5085    removeAttributeNode(attr: Attr): Attr;
5086    /**
5087     * Displays element fullscreen and resolves promise when done.
5088     *
5089     * When supplied, options's navigationUI member indicates whether showing navigation UI while in fullscreen is preferred or not. If set to "show", navigation simplicity is preferred over screen space, and if set to "hide", more screen space is preferred. User agents are always free to honor user preference over the application's. The default value "auto" indicates no application preference.
5090     */
5091    requestFullscreen(options?: FullscreenOptions): Promise<void>;
5092    requestPointerLock(): void;
5093    scroll(options?: ScrollToOptions): void;
5094    scroll(x: number, y: number): void;
5095    scrollBy(options?: ScrollToOptions): void;
5096    scrollBy(x: number, y: number): void;
5097    scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void;
5098    scrollTo(options?: ScrollToOptions): void;
5099    scrollTo(x: number, y: number): void;
5100    /** Sets the value of element's first attribute whose qualified name is qualifiedName to value. */
5101    setAttribute(qualifiedName: string, value: string): void;
5102    /** Sets the value of element's attribute whose namespace is namespace and local name is localName to value. */
5103    setAttributeNS(namespace: string | null, qualifiedName: string, value: string): void;
5104    setAttributeNode(attr: Attr): Attr | null;
5105    setAttributeNodeNS(attr: Attr): Attr | null;
5106    setPointerCapture(pointerId: number): void;
5107    /**
5108     * If force is not given, "toggles" qualifiedName, removing it if it is present and adding it if it is not present. If force is true, adds qualifiedName. If force is false, removes qualifiedName.
5109     *
5110     * Returns true if qualifiedName is now present, and false otherwise.
5111     */
5112    toggleAttribute(qualifiedName: string, force?: boolean): boolean;
5113    /** @deprecated This is a legacy alias of `matches`. */
5114    webkitMatchesSelector(selectors: string): boolean;
5115    addEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5116    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5117    removeEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5118    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5119}
5120
5121declare var Element: {
5122    prototype: Element;
5123    new(): Element;
5124};
5125
5126interface ElementCSSInlineStyle {
5127    readonly style: CSSStyleDeclaration;
5128}
5129
5130interface ElementContentEditable {
5131    contentEditable: string;
5132    enterKeyHint: string;
5133    inputMode: string;
5134    readonly isContentEditable: boolean;
5135}
5136
5137interface ElementInternals extends ARIAMixin {
5138    /** Returns the form owner of internals's target element. */
5139    readonly form: HTMLFormElement | null;
5140    /** Returns a NodeList of all the label elements that internals's target element is associated with. */
5141    readonly labels: NodeList;
5142    /** Returns the ShadowRoot for internals's target element, if the target element is a shadow host, or null otherwise. */
5143    readonly shadowRoot: ShadowRoot | null;
5144    /** Returns the error message that would be shown to the user if internals's target element was to be checked for validity. */
5145    readonly validationMessage: string;
5146    /** Returns the ValidityState object for internals's target element. */
5147    readonly validity: ValidityState;
5148    /** Returns true if internals's target element will be validated when the form is submitted; false otherwise. */
5149    readonly willValidate: boolean;
5150    /** Returns true if internals's target element has no validity problems; false otherwise. Fires an invalid event at the element in the latter case. */
5151    checkValidity(): boolean;
5152    /** Returns true if internals's target element has no validity problems; otherwise, returns false, fires an invalid event at the element, and (if the event isn't canceled) reports the problem to the user. */
5153    reportValidity(): boolean;
5154    /**
5155     * Sets both the state and submission value of internals's target element to value.
5156     *
5157     * If value is null, the element won't participate in form submission.
5158     */
5159    setFormValue(value: File | string | FormData | null, state?: File | string | FormData | null): void;
5160    /** Marks internals's target element as suffering from the constraints indicated by the flags argument, and sets the element's validation message to message. If anchor is specified, the user agent might use it to indicate problems with the constraints of internals's target element when the form owner is validated interactively or reportValidity() is called. */
5161    setValidity(flags?: ValidityStateFlags, message?: string, anchor?: HTMLElement): void;
5162}
5163
5164declare var ElementInternals: {
5165    prototype: ElementInternals;
5166    new(): ElementInternals;
5167};
5168
5169/** Events providing information related to errors in scripts or in files. */
5170interface ErrorEvent extends Event {
5171    readonly colno: number;
5172    readonly error: any;
5173    readonly filename: string;
5174    readonly lineno: number;
5175    readonly message: string;
5176}
5177
5178declare var ErrorEvent: {
5179    prototype: ErrorEvent;
5180    new(type: string, eventInitDict?: ErrorEventInit): ErrorEvent;
5181};
5182
5183/** An event which takes place in the DOM. */
5184interface Event {
5185    /** Returns true or false depending on how event was initialized. True if event goes through its target's ancestors in reverse tree order, and false otherwise. */
5186    readonly bubbles: boolean;
5187    /** @deprecated */
5188    cancelBubble: boolean;
5189    /** Returns true or false depending on how event was initialized. Its return value does not always carry meaning, but true can indicate that part of the operation during which event was dispatched, can be canceled by invoking the preventDefault() method. */
5190    readonly cancelable: boolean;
5191    /** Returns true or false depending on how event was initialized. True if event invokes listeners past a ShadowRoot node that is the root of its target, and false otherwise. */
5192    readonly composed: boolean;
5193    /** Returns the object whose event listener's callback is currently being invoked. */
5194    readonly currentTarget: EventTarget | null;
5195    /** Returns true if preventDefault() was invoked successfully to indicate cancelation, and false otherwise. */
5196    readonly defaultPrevented: boolean;
5197    /** Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET, and BUBBLING_PHASE. */
5198    readonly eventPhase: number;
5199    /** Returns true if event was dispatched by the user agent, and false otherwise. */
5200    readonly isTrusted: boolean;
5201    /** @deprecated */
5202    returnValue: boolean;
5203    /** @deprecated */
5204    readonly srcElement: EventTarget | null;
5205    /** Returns the object to which event is dispatched (its target). */
5206    readonly target: EventTarget | null;
5207    /** Returns the event's timestamp as the number of milliseconds measured relative to the time origin. */
5208    readonly timeStamp: DOMHighResTimeStamp;
5209    /** Returns the type of event, e.g. "click", "hashchange", or "submit". */
5210    readonly type: string;
5211    /** Returns the invocation target objects of event's path (objects on which listeners will be invoked), except for any nodes in shadow trees of which the shadow root's mode is "closed" that are not reachable from event's currentTarget. */
5212    composedPath(): EventTarget[];
5213    /** @deprecated */
5214    initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;
5215    /** If invoked when the cancelable attribute value is true, and while executing a listener for the event with passive set to false, signals to the operation that caused event to be dispatched that it needs to be canceled. */
5216    preventDefault(): void;
5217    /** Invoking this method prevents event from reaching any registered event listeners after the current one finishes running and, when dispatched in a tree, also prevents event from reaching any other objects. */
5218    stopImmediatePropagation(): void;
5219    /** When dispatched in a tree, invoking this method prevents event from reaching any objects other than the current object. */
5220    stopPropagation(): void;
5221    readonly AT_TARGET: number;
5222    readonly BUBBLING_PHASE: number;
5223    readonly CAPTURING_PHASE: number;
5224    readonly NONE: number;
5225}
5226
5227declare var Event: {
5228    prototype: Event;
5229    new(type: string, eventInitDict?: EventInit): Event;
5230    readonly AT_TARGET: number;
5231    readonly BUBBLING_PHASE: number;
5232    readonly CAPTURING_PHASE: number;
5233    readonly NONE: number;
5234};
5235
5236interface EventCounts {
5237    forEach(callbackfn: (value: number, key: string, parent: EventCounts) => void, thisArg?: any): void;
5238}
5239
5240declare var EventCounts: {
5241    prototype: EventCounts;
5242    new(): EventCounts;
5243};
5244
5245interface EventListener {
5246    (evt: Event): void;
5247}
5248
5249interface EventListenerObject {
5250    handleEvent(object: Event): void;
5251}
5252
5253interface EventSourceEventMap {
5254    "error": Event;
5255    "message": MessageEvent;
5256    "open": Event;
5257}
5258
5259interface EventSource extends EventTarget {
5260    onerror: ((this: EventSource, ev: Event) => any) | null;
5261    onmessage: ((this: EventSource, ev: MessageEvent) => any) | null;
5262    onopen: ((this: EventSource, ev: Event) => any) | null;
5263    /** Returns the state of this EventSource object's connection. It can have the values described below. */
5264    readonly readyState: number;
5265    /** Returns the URL providing the event stream. */
5266    readonly url: string;
5267    /** Returns true if the credentials mode for connection requests to the URL providing the event stream is set to "include", and false otherwise. */
5268    readonly withCredentials: boolean;
5269    /** Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED. */
5270    close(): void;
5271    readonly CLOSED: number;
5272    readonly CONNECTING: number;
5273    readonly OPEN: number;
5274    addEventListener<K extends keyof EventSourceEventMap>(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5275    addEventListener(type: string, listener: (this: EventSource, event: MessageEvent) => any, options?: boolean | AddEventListenerOptions): void;
5276    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5277    removeEventListener<K extends keyof EventSourceEventMap>(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5278    removeEventListener(type: string, listener: (this: EventSource, event: MessageEvent) => any, options?: boolean | EventListenerOptions): void;
5279    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5280}
5281
5282declare var EventSource: {
5283    prototype: EventSource;
5284    new(url: string | URL, eventSourceInitDict?: EventSourceInit): EventSource;
5285    readonly CLOSED: number;
5286    readonly CONNECTING: number;
5287    readonly OPEN: number;
5288};
5289
5290/** EventTarget is a DOM interface implemented by objects that can receive events and may have listeners for them. */
5291interface EventTarget {
5292    /**
5293     * Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.
5294     *
5295     * The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.
5296     *
5297     * When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.
5298     *
5299     * When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners.
5300     *
5301     * When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.
5302     *
5303     * If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.
5304     *
5305     * The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
5306     */
5307    addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: AddEventListenerOptions | boolean): void;
5308    /** Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. */
5309    dispatchEvent(event: Event): boolean;
5310    /** Removes the event listener in target's event listener list with the same type, callback, and options. */
5311    removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;
5312}
5313
5314declare var EventTarget: {
5315    prototype: EventTarget;
5316    new(): EventTarget;
5317};
5318
5319/** @deprecated */
5320interface External {
5321    /** @deprecated */
5322    AddSearchProvider(): void;
5323    /** @deprecated */
5324    IsSearchProviderInstalled(): void;
5325}
5326
5327/** @deprecated */
5328declare var External: {
5329    prototype: External;
5330    new(): External;
5331};
5332
5333/** Provides information about files and allows JavaScript in a web page to access their content. */
5334interface File extends Blob {
5335    readonly lastModified: number;
5336    readonly name: string;
5337    readonly webkitRelativePath: string;
5338}
5339
5340declare var File: {
5341    prototype: File;
5342    new(fileBits: BlobPart[], fileName: string, options?: FilePropertyBag): File;
5343};
5344
5345/** An object of this type is returned by the files property of the HTML <input> element; this lets you access the list of files selected with the <input type="file"> element. It's also used for a list of files dropped into web content when using the drag and drop API; see the DataTransfer object for details on this usage. */
5346interface FileList {
5347    readonly length: number;
5348    item(index: number): File | null;
5349    [index: number]: File;
5350}
5351
5352declare var FileList: {
5353    prototype: FileList;
5354    new(): FileList;
5355};
5356
5357interface FileReaderEventMap {
5358    "abort": ProgressEvent<FileReader>;
5359    "error": ProgressEvent<FileReader>;
5360    "load": ProgressEvent<FileReader>;
5361    "loadend": ProgressEvent<FileReader>;
5362    "loadstart": ProgressEvent<FileReader>;
5363    "progress": ProgressEvent<FileReader>;
5364}
5365
5366/** Lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user's computer, using File or Blob objects to specify the file or data to read. */
5367interface FileReader extends EventTarget {
5368    readonly error: DOMException | null;
5369    onabort: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5370    onerror: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5371    onload: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5372    onloadend: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5373    onloadstart: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5374    onprogress: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5375    readonly readyState: number;
5376    readonly result: string | ArrayBuffer | null;
5377    abort(): void;
5378    readAsArrayBuffer(blob: Blob): void;
5379    readAsBinaryString(blob: Blob): void;
5380    readAsDataURL(blob: Blob): void;
5381    readAsText(blob: Blob, encoding?: string): void;
5382    readonly DONE: number;
5383    readonly EMPTY: number;
5384    readonly LOADING: number;
5385    addEventListener<K extends keyof FileReaderEventMap>(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5386    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5387    removeEventListener<K extends keyof FileReaderEventMap>(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5388    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5389}
5390
5391declare var FileReader: {
5392    prototype: FileReader;
5393    new(): FileReader;
5394    readonly DONE: number;
5395    readonly EMPTY: number;
5396    readonly LOADING: number;
5397};
5398
5399interface FileSystem {
5400    readonly name: string;
5401    readonly root: FileSystemDirectoryEntry;
5402}
5403
5404declare var FileSystem: {
5405    prototype: FileSystem;
5406    new(): FileSystem;
5407};
5408
5409interface FileSystemDirectoryEntry extends FileSystemEntry {
5410    createReader(): FileSystemDirectoryReader;
5411    getDirectory(path?: string | null, options?: FileSystemFlags, successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;
5412    getFile(path?: string | null, options?: FileSystemFlags, successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;
5413}
5414
5415declare var FileSystemDirectoryEntry: {
5416    prototype: FileSystemDirectoryEntry;
5417    new(): FileSystemDirectoryEntry;
5418};
5419
5420/** Available only in secure contexts. */
5421interface FileSystemDirectoryHandle extends FileSystemHandle {
5422    readonly kind: "directory";
5423    getDirectoryHandle(name: string, options?: FileSystemGetDirectoryOptions): Promise<FileSystemDirectoryHandle>;
5424    getFileHandle(name: string, options?: FileSystemGetFileOptions): Promise<FileSystemFileHandle>;
5425    removeEntry(name: string, options?: FileSystemRemoveOptions): Promise<void>;
5426    resolve(possibleDescendant: FileSystemHandle): Promise<string[] | null>;
5427}
5428
5429declare var FileSystemDirectoryHandle: {
5430    prototype: FileSystemDirectoryHandle;
5431    new(): FileSystemDirectoryHandle;
5432};
5433
5434interface FileSystemDirectoryReader {
5435    readEntries(successCallback: FileSystemEntriesCallback, errorCallback?: ErrorCallback): void;
5436}
5437
5438declare var FileSystemDirectoryReader: {
5439    prototype: FileSystemDirectoryReader;
5440    new(): FileSystemDirectoryReader;
5441};
5442
5443interface FileSystemEntry {
5444    readonly filesystem: FileSystem;
5445    readonly fullPath: string;
5446    readonly isDirectory: boolean;
5447    readonly isFile: boolean;
5448    readonly name: string;
5449    getParent(successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;
5450}
5451
5452declare var FileSystemEntry: {
5453    prototype: FileSystemEntry;
5454    new(): FileSystemEntry;
5455};
5456
5457interface FileSystemFileEntry extends FileSystemEntry {
5458    file(successCallback: FileCallback, errorCallback?: ErrorCallback): void;
5459}
5460
5461declare var FileSystemFileEntry: {
5462    prototype: FileSystemFileEntry;
5463    new(): FileSystemFileEntry;
5464};
5465
5466/** Available only in secure contexts. */
5467interface FileSystemFileHandle extends FileSystemHandle {
5468    readonly kind: "file";
5469    getFile(): Promise<File>;
5470}
5471
5472declare var FileSystemFileHandle: {
5473    prototype: FileSystemFileHandle;
5474    new(): FileSystemFileHandle;
5475};
5476
5477/** Available only in secure contexts. */
5478interface FileSystemHandle {
5479    readonly kind: FileSystemHandleKind;
5480    readonly name: string;
5481    isSameEntry(other: FileSystemHandle): Promise<boolean>;
5482}
5483
5484declare var FileSystemHandle: {
5485    prototype: FileSystemHandle;
5486    new(): FileSystemHandle;
5487};
5488
5489/** Focus-related events like focus, blur, focusin, or focusout. */
5490interface FocusEvent extends UIEvent {
5491    readonly relatedTarget: EventTarget | null;
5492}
5493
5494declare var FocusEvent: {
5495    prototype: FocusEvent;
5496    new(type: string, eventInitDict?: FocusEventInit): FocusEvent;
5497};
5498
5499interface FontFace {
5500    ascentOverride: string;
5501    descentOverride: string;
5502    display: string;
5503    family: string;
5504    featureSettings: string;
5505    lineGapOverride: string;
5506    readonly loaded: Promise<FontFace>;
5507    readonly status: FontFaceLoadStatus;
5508    stretch: string;
5509    style: string;
5510    unicodeRange: string;
5511    variant: string;
5512    variationSettings: string;
5513    weight: string;
5514    load(): Promise<FontFace>;
5515}
5516
5517declare var FontFace: {
5518    prototype: FontFace;
5519    new(family: string, source: string | BinaryData, descriptors?: FontFaceDescriptors): FontFace;
5520};
5521
5522interface FontFaceSetEventMap {
5523    "loading": Event;
5524    "loadingdone": Event;
5525    "loadingerror": Event;
5526}
5527
5528interface FontFaceSet extends EventTarget {
5529    onloading: ((this: FontFaceSet, ev: Event) => any) | null;
5530    onloadingdone: ((this: FontFaceSet, ev: Event) => any) | null;
5531    onloadingerror: ((this: FontFaceSet, ev: Event) => any) | null;
5532    readonly ready: Promise<FontFaceSet>;
5533    readonly status: FontFaceSetLoadStatus;
5534    check(font: string, text?: string): boolean;
5535    load(font: string, text?: string): Promise<FontFace[]>;
5536    forEach(callbackfn: (value: FontFace, key: FontFace, parent: FontFaceSet) => void, thisArg?: any): void;
5537    addEventListener<K extends keyof FontFaceSetEventMap>(type: K, listener: (this: FontFaceSet, ev: FontFaceSetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5538    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5539    removeEventListener<K extends keyof FontFaceSetEventMap>(type: K, listener: (this: FontFaceSet, ev: FontFaceSetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5540    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5541}
5542
5543declare var FontFaceSet: {
5544    prototype: FontFaceSet;
5545    new(initialFaces: FontFace[]): FontFaceSet;
5546};
5547
5548interface FontFaceSetLoadEvent extends Event {
5549    readonly fontfaces: ReadonlyArray<FontFace>;
5550}
5551
5552declare var FontFaceSetLoadEvent: {
5553    prototype: FontFaceSetLoadEvent;
5554    new(type: string, eventInitDict?: FontFaceSetLoadEventInit): FontFaceSetLoadEvent;
5555};
5556
5557interface FontFaceSource {
5558    readonly fonts: FontFaceSet;
5559}
5560
5561/** Provides a way to easily construct a set of key/value pairs representing form fields and their values, which can then be easily sent using the XMLHttpRequest.send() method. It uses the same format a form would use if the encoding type were set to "multipart/form-data". */
5562interface FormData {
5563    append(name: string, value: string | Blob, fileName?: string): void;
5564    delete(name: string): void;
5565    get(name: string): FormDataEntryValue | null;
5566    getAll(name: string): FormDataEntryValue[];
5567    has(name: string): boolean;
5568    set(name: string, value: string | Blob, fileName?: string): void;
5569    forEach(callbackfn: (value: FormDataEntryValue, key: string, parent: FormData) => void, thisArg?: any): void;
5570}
5571
5572declare var FormData: {
5573    prototype: FormData;
5574    new(form?: HTMLFormElement): FormData;
5575};
5576
5577interface FormDataEvent extends Event {
5578    /** Returns a FormData object representing names and values of elements associated to the target form. Operations on the FormData object will affect form data to be submitted. */
5579    readonly formData: FormData;
5580}
5581
5582declare var FormDataEvent: {
5583    prototype: FormDataEvent;
5584    new(type: string, eventInitDict: FormDataEventInit): FormDataEvent;
5585};
5586
5587/** A change in volume. It is an AudioNode audio-processing module that causes a given gain to be applied to the input data before its propagation to the output. A GainNode always has exactly one input and one output, both with the same number of channels. */
5588interface GainNode extends AudioNode {
5589    readonly gain: AudioParam;
5590}
5591
5592declare var GainNode: {
5593    prototype: GainNode;
5594    new(context: BaseAudioContext, options?: GainOptions): GainNode;
5595};
5596
5597/**
5598 * This Gamepad API interface defines an individual gamepad or other controller, allowing access to information such as button presses, axis positions, and id.
5599 * Available only in secure contexts.
5600 */
5601interface Gamepad {
5602    readonly axes: ReadonlyArray<number>;
5603    readonly buttons: ReadonlyArray<GamepadButton>;
5604    readonly connected: boolean;
5605    readonly hapticActuators: ReadonlyArray<GamepadHapticActuator>;
5606    readonly id: string;
5607    readonly index: number;
5608    readonly mapping: GamepadMappingType;
5609    readonly timestamp: DOMHighResTimeStamp;
5610}
5611
5612declare var Gamepad: {
5613    prototype: Gamepad;
5614    new(): Gamepad;
5615};
5616
5617/**
5618 * An individual button of a gamepad or other controller, allowing access to the current state of different types of buttons available on the control device.
5619 * Available only in secure contexts.
5620 */
5621interface GamepadButton {
5622    readonly pressed: boolean;
5623    readonly touched: boolean;
5624    readonly value: number;
5625}
5626
5627declare var GamepadButton: {
5628    prototype: GamepadButton;
5629    new(): GamepadButton;
5630};
5631
5632/**
5633 * This Gamepad API interface contains references to gamepads connected to the system, which is what the gamepad events Window.gamepadconnected and Window.gamepaddisconnected are fired in response to.
5634 * Available only in secure contexts.
5635 */
5636interface GamepadEvent extends Event {
5637    readonly gamepad: Gamepad;
5638}
5639
5640declare var GamepadEvent: {
5641    prototype: GamepadEvent;
5642    new(type: string, eventInitDict: GamepadEventInit): GamepadEvent;
5643};
5644
5645/** This Gamepad API interface represents hardware in the controller designed to provide haptic feedback to the user (if available), most commonly vibration hardware. */
5646interface GamepadHapticActuator {
5647    readonly type: GamepadHapticActuatorType;
5648}
5649
5650declare var GamepadHapticActuator: {
5651    prototype: GamepadHapticActuator;
5652    new(): GamepadHapticActuator;
5653};
5654
5655interface GenericTransformStream {
5656    readonly readable: ReadableStream;
5657    readonly writable: WritableStream;
5658}
5659
5660/** An object able to programmatically obtain the position of the device. It gives Web content access to the location of the device. This allows a Web site or app to offer customized results based on the user's location. */
5661interface Geolocation {
5662    clearWatch(watchId: number): void;
5663    getCurrentPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback | null, options?: PositionOptions): void;
5664    watchPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback | null, options?: PositionOptions): number;
5665}
5666
5667declare var Geolocation: {
5668    prototype: Geolocation;
5669    new(): Geolocation;
5670};
5671
5672/** Available only in secure contexts. */
5673interface GeolocationCoordinates {
5674    readonly accuracy: number;
5675    readonly altitude: number | null;
5676    readonly altitudeAccuracy: number | null;
5677    readonly heading: number | null;
5678    readonly latitude: number;
5679    readonly longitude: number;
5680    readonly speed: number | null;
5681}
5682
5683declare var GeolocationCoordinates: {
5684    prototype: GeolocationCoordinates;
5685    new(): GeolocationCoordinates;
5686};
5687
5688/** Available only in secure contexts. */
5689interface GeolocationPosition {
5690    readonly coords: GeolocationCoordinates;
5691    readonly timestamp: EpochTimeStamp;
5692}
5693
5694declare var GeolocationPosition: {
5695    prototype: GeolocationPosition;
5696    new(): GeolocationPosition;
5697};
5698
5699interface GeolocationPositionError {
5700    readonly code: number;
5701    readonly message: string;
5702    readonly PERMISSION_DENIED: number;
5703    readonly POSITION_UNAVAILABLE: number;
5704    readonly TIMEOUT: number;
5705}
5706
5707declare var GeolocationPositionError: {
5708    prototype: GeolocationPositionError;
5709    new(): GeolocationPositionError;
5710    readonly PERMISSION_DENIED: number;
5711    readonly POSITION_UNAVAILABLE: number;
5712    readonly TIMEOUT: number;
5713};
5714
5715interface GlobalEventHandlersEventMap {
5716    "abort": UIEvent;
5717    "animationcancel": AnimationEvent;
5718    "animationend": AnimationEvent;
5719    "animationiteration": AnimationEvent;
5720    "animationstart": AnimationEvent;
5721    "auxclick": MouseEvent;
5722    "beforeinput": InputEvent;
5723    "blur": FocusEvent;
5724    "cancel": Event;
5725    "canplay": Event;
5726    "canplaythrough": Event;
5727    "change": Event;
5728    "click": MouseEvent;
5729    "close": Event;
5730    "compositionend": CompositionEvent;
5731    "compositionstart": CompositionEvent;
5732    "compositionupdate": CompositionEvent;
5733    "contextmenu": MouseEvent;
5734    "cuechange": Event;
5735    "dblclick": MouseEvent;
5736    "drag": DragEvent;
5737    "dragend": DragEvent;
5738    "dragenter": DragEvent;
5739    "dragleave": DragEvent;
5740    "dragover": DragEvent;
5741    "dragstart": DragEvent;
5742    "drop": DragEvent;
5743    "durationchange": Event;
5744    "emptied": Event;
5745    "ended": Event;
5746    "error": ErrorEvent;
5747    "focus": FocusEvent;
5748    "focusin": FocusEvent;
5749    "focusout": FocusEvent;
5750    "formdata": FormDataEvent;
5751    "gotpointercapture": PointerEvent;
5752    "input": Event;
5753    "invalid": Event;
5754    "keydown": KeyboardEvent;
5755    "keypress": KeyboardEvent;
5756    "keyup": KeyboardEvent;
5757    "load": Event;
5758    "loadeddata": Event;
5759    "loadedmetadata": Event;
5760    "loadstart": Event;
5761    "lostpointercapture": PointerEvent;
5762    "mousedown": MouseEvent;
5763    "mouseenter": MouseEvent;
5764    "mouseleave": MouseEvent;
5765    "mousemove": MouseEvent;
5766    "mouseout": MouseEvent;
5767    "mouseover": MouseEvent;
5768    "mouseup": MouseEvent;
5769    "pause": Event;
5770    "play": Event;
5771    "playing": Event;
5772    "pointercancel": PointerEvent;
5773    "pointerdown": PointerEvent;
5774    "pointerenter": PointerEvent;
5775    "pointerleave": PointerEvent;
5776    "pointermove": PointerEvent;
5777    "pointerout": PointerEvent;
5778    "pointerover": PointerEvent;
5779    "pointerup": PointerEvent;
5780    "progress": ProgressEvent;
5781    "ratechange": Event;
5782    "reset": Event;
5783    "resize": UIEvent;
5784    "scroll": Event;
5785    "securitypolicyviolation": SecurityPolicyViolationEvent;
5786    "seeked": Event;
5787    "seeking": Event;
5788    "select": Event;
5789    "selectionchange": Event;
5790    "selectstart": Event;
5791    "slotchange": Event;
5792    "stalled": Event;
5793    "submit": SubmitEvent;
5794    "suspend": Event;
5795    "timeupdate": Event;
5796    "toggle": Event;
5797    "touchcancel": TouchEvent;
5798    "touchend": TouchEvent;
5799    "touchmove": TouchEvent;
5800    "touchstart": TouchEvent;
5801    "transitioncancel": TransitionEvent;
5802    "transitionend": TransitionEvent;
5803    "transitionrun": TransitionEvent;
5804    "transitionstart": TransitionEvent;
5805    "volumechange": Event;
5806    "waiting": Event;
5807    "webkitanimationend": Event;
5808    "webkitanimationiteration": Event;
5809    "webkitanimationstart": Event;
5810    "webkittransitionend": Event;
5811    "wheel": WheelEvent;
5812}
5813
5814interface GlobalEventHandlers {
5815    /**
5816     * Fires when the user aborts the download.
5817     * @param ev The event.
5818     */
5819    onabort: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
5820    onanimationcancel: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
5821    onanimationend: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
5822    onanimationiteration: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
5823    onanimationstart: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
5824    onauxclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5825    onbeforeinput: ((this: GlobalEventHandlers, ev: InputEvent) => any) | null;
5826    /**
5827     * Fires when the object loses the input focus.
5828     * @param ev The focus event.
5829     */
5830    onblur: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
5831    oncancel: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5832    /**
5833     * Occurs when playback is possible, but would require further buffering.
5834     * @param ev The event.
5835     */
5836    oncanplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5837    oncanplaythrough: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5838    /**
5839     * Fires when the contents of the object or selection have changed.
5840     * @param ev The event.
5841     */
5842    onchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5843    /**
5844     * Fires when the user clicks the left mouse button on the object
5845     * @param ev The mouse event.
5846     */
5847    onclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5848    onclose: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5849    /**
5850     * Fires when the user clicks the right mouse button in the client area, opening the context menu.
5851     * @param ev The mouse event.
5852     */
5853    oncontextmenu: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5854    oncuechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5855    /**
5856     * Fires when the user double-clicks the object.
5857     * @param ev The mouse event.
5858     */
5859    ondblclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5860    /**
5861     * Fires on the source object continuously during a drag operation.
5862     * @param ev The event.
5863     */
5864    ondrag: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5865    /**
5866     * Fires on the source object when the user releases the mouse at the close of a drag operation.
5867     * @param ev The event.
5868     */
5869    ondragend: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5870    /**
5871     * Fires on the target element when the user drags the object to a valid drop target.
5872     * @param ev The drag event.
5873     */
5874    ondragenter: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5875    /**
5876     * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation.
5877     * @param ev The drag event.
5878     */
5879    ondragleave: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5880    /**
5881     * Fires on the target element continuously while the user drags the object over a valid drop target.
5882     * @param ev The event.
5883     */
5884    ondragover: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5885    /**
5886     * Fires on the source object when the user starts to drag a text selection or selected object.
5887     * @param ev The event.
5888     */
5889    ondragstart: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5890    ondrop: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5891    /**
5892     * Occurs when the duration attribute is updated.
5893     * @param ev The event.
5894     */
5895    ondurationchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5896    /**
5897     * Occurs when the media element is reset to its initial state.
5898     * @param ev The event.
5899     */
5900    onemptied: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5901    /**
5902     * Occurs when the end of playback is reached.
5903     * @param ev The event
5904     */
5905    onended: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5906    /**
5907     * Fires when an error occurs during object loading.
5908     * @param ev The event.
5909     */
5910    onerror: OnErrorEventHandler;
5911    /**
5912     * Fires when the object receives focus.
5913     * @param ev The event.
5914     */
5915    onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
5916    onformdata: ((this: GlobalEventHandlers, ev: FormDataEvent) => any) | null;
5917    ongotpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5918    oninput: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5919    oninvalid: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5920    /**
5921     * Fires when the user presses a key.
5922     * @param ev The keyboard event
5923     */
5924    onkeydown: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
5925    /**
5926     * Fires when the user presses an alphanumeric key.
5927     * @param ev The event.
5928     * @deprecated
5929     */
5930    onkeypress: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
5931    /**
5932     * Fires when the user releases a key.
5933     * @param ev The keyboard event
5934     */
5935    onkeyup: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
5936    /**
5937     * Fires immediately after the browser loads the object.
5938     * @param ev The event.
5939     */
5940    onload: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5941    /**
5942     * Occurs when media data is loaded at the current playback position.
5943     * @param ev The event.
5944     */
5945    onloadeddata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5946    /**
5947     * Occurs when the duration and dimensions of the media have been determined.
5948     * @param ev The event.
5949     */
5950    onloadedmetadata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5951    /**
5952     * Occurs when Internet Explorer begins looking for media data.
5953     * @param ev The event.
5954     */
5955    onloadstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5956    onlostpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5957    /**
5958     * Fires when the user clicks the object with either mouse button.
5959     * @param ev The mouse event.
5960     */
5961    onmousedown: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5962    onmouseenter: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5963    onmouseleave: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5964    /**
5965     * Fires when the user moves the mouse over the object.
5966     * @param ev The mouse event.
5967     */
5968    onmousemove: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5969    /**
5970     * Fires when the user moves the mouse pointer outside the boundaries of the object.
5971     * @param ev The mouse event.
5972     */
5973    onmouseout: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5974    /**
5975     * Fires when the user moves the mouse pointer into the object.
5976     * @param ev The mouse event.
5977     */
5978    onmouseover: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5979    /**
5980     * Fires when the user releases a mouse button while the mouse is over the object.
5981     * @param ev The mouse event.
5982     */
5983    onmouseup: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5984    /**
5985     * Occurs when playback is paused.
5986     * @param ev The event.
5987     */
5988    onpause: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5989    /**
5990     * Occurs when the play method is requested.
5991     * @param ev The event.
5992     */
5993    onplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5994    /**
5995     * Occurs when the audio or video has started playing.
5996     * @param ev The event.
5997     */
5998    onplaying: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5999    onpointercancel: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6000    onpointerdown: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6001    onpointerenter: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6002    onpointerleave: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6003    onpointermove: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6004    onpointerout: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6005    onpointerover: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6006    onpointerup: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6007    /**
6008     * Occurs to indicate progress while downloading media data.
6009     * @param ev The event.
6010     */
6011    onprogress: ((this: GlobalEventHandlers, ev: ProgressEvent) => any) | null;
6012    /**
6013     * Occurs when the playback rate is increased or decreased.
6014     * @param ev The event.
6015     */
6016    onratechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6017    /**
6018     * Fires when the user resets a form.
6019     * @param ev The event.
6020     */
6021    onreset: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6022    onresize: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
6023    /**
6024     * Fires when the user repositions the scroll box in the scroll bar on the object.
6025     * @param ev The event.
6026     */
6027    onscroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6028    onsecuritypolicyviolation: ((this: GlobalEventHandlers, ev: SecurityPolicyViolationEvent) => any) | null;
6029    /**
6030     * Occurs when the seek operation ends.
6031     * @param ev The event.
6032     */
6033    onseeked: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6034    /**
6035     * Occurs when the current playback position is moved.
6036     * @param ev The event.
6037     */
6038    onseeking: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6039    /**
6040     * Fires when the current selection changes.
6041     * @param ev The event.
6042     */
6043    onselect: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6044    onselectionchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6045    onselectstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6046    onslotchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6047    /**
6048     * Occurs when the download has stopped.
6049     * @param ev The event.
6050     */
6051    onstalled: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6052    onsubmit: ((this: GlobalEventHandlers, ev: SubmitEvent) => any) | null;
6053    /**
6054     * Occurs if the load operation has been intentionally halted.
6055     * @param ev The event.
6056     */
6057    onsuspend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6058    /**
6059     * Occurs to indicate the current playback position.
6060     * @param ev The event.
6061     */
6062    ontimeupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6063    ontoggle: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6064    ontouchcancel?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
6065    ontouchend?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
6066    ontouchmove?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
6067    ontouchstart?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
6068    ontransitioncancel: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
6069    ontransitionend: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
6070    ontransitionrun: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
6071    ontransitionstart: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
6072    /**
6073     * Occurs when the volume is changed, or playback is muted or unmuted.
6074     * @param ev The event.
6075     */
6076    onvolumechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6077    /**
6078     * Occurs when playback stops because the next frame of a video resource is not available.
6079     * @param ev The event.
6080     */
6081    onwaiting: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6082    /** @deprecated This is a legacy alias of `onanimationend`. */
6083    onwebkitanimationend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6084    /** @deprecated This is a legacy alias of `onanimationiteration`. */
6085    onwebkitanimationiteration: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6086    /** @deprecated This is a legacy alias of `onanimationstart`. */
6087    onwebkitanimationstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6088    /** @deprecated This is a legacy alias of `ontransitionend`. */
6089    onwebkittransitionend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6090    onwheel: ((this: GlobalEventHandlers, ev: WheelEvent) => any) | null;
6091    addEventListener<K extends keyof GlobalEventHandlersEventMap>(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6092    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6093    removeEventListener<K extends keyof GlobalEventHandlersEventMap>(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6094    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6095}
6096
6097interface HTMLAllCollection {
6098    /** Returns the number of elements in the collection. */
6099    readonly length: number;
6100    /** Returns the item with index index from the collection (determined by tree order). */
6101    item(nameOrIndex?: string): HTMLCollection | Element | null;
6102    /**
6103     * Returns the item with ID or name name from the collection.
6104     *
6105     * If there are multiple matching items, then an HTMLCollection object containing all those elements is returned.
6106     *
6107     * Only button, form, iframe, input, map, meta, object, select, and textarea elements can have a name for the purpose of this method; their name is given by the value of their name attribute.
6108     */
6109    namedItem(name: string): HTMLCollection | Element | null;
6110    [index: number]: Element;
6111}
6112
6113declare var HTMLAllCollection: {
6114    prototype: HTMLAllCollection;
6115    new(): HTMLAllCollection;
6116};
6117
6118/** Hyperlink elements and provides special properties and methods (beyond those of the regular HTMLElement object interface that they inherit from) for manipulating the layout and presentation of such elements. */
6119interface HTMLAnchorElement extends HTMLElement, HTMLHyperlinkElementUtils {
6120    /**
6121     * Sets or retrieves the character set used to encode the object.
6122     * @deprecated
6123     */
6124    charset: string;
6125    /**
6126     * Sets or retrieves the coordinates of the object.
6127     * @deprecated
6128     */
6129    coords: string;
6130    download: string;
6131    /** Sets or retrieves the language code of the object. */
6132    hreflang: string;
6133    /**
6134     * Sets or retrieves the shape of the object.
6135     * @deprecated
6136     */
6137    name: string;
6138    ping: string;
6139    referrerPolicy: string;
6140    /** Sets or retrieves the relationship between the object and the destination of the link. */
6141    rel: string;
6142    readonly relList: DOMTokenList;
6143    /**
6144     * Sets or retrieves the relationship between the object and the destination of the link.
6145     * @deprecated
6146     */
6147    rev: string;
6148    /**
6149     * Sets or retrieves the shape of the object.
6150     * @deprecated
6151     */
6152    shape: string;
6153    /** Sets or retrieves the window or frame at which to target content. */
6154    target: string;
6155    /** Retrieves or sets the text of the object as a string. */
6156    text: string;
6157    type: string;
6158    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6159    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6160    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6161    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6162}
6163
6164declare var HTMLAnchorElement: {
6165    prototype: HTMLAnchorElement;
6166    new(): HTMLAnchorElement;
6167};
6168
6169/** Provides special properties and methods (beyond those of the regular object HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of <area> elements. */
6170interface HTMLAreaElement extends HTMLElement, HTMLHyperlinkElementUtils {
6171    /** Sets or retrieves a text alternative to the graphic. */
6172    alt: string;
6173    /** Sets or retrieves the coordinates of the object. */
6174    coords: string;
6175    download: string;
6176    /**
6177     * Sets or gets whether clicks in this region cause action.
6178     * @deprecated
6179     */
6180    noHref: boolean;
6181    ping: string;
6182    referrerPolicy: string;
6183    rel: string;
6184    readonly relList: DOMTokenList;
6185    /** Sets or retrieves the shape of the object. */
6186    shape: string;
6187    /** Sets or retrieves the window or frame at which to target content. */
6188    target: string;
6189    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6190    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6191    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6192    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6193}
6194
6195declare var HTMLAreaElement: {
6196    prototype: HTMLAreaElement;
6197    new(): HTMLAreaElement;
6198};
6199
6200/** Provides access to the properties of <audio> elements, as well as methods to manipulate them. It derives from the HTMLMediaElement interface. */
6201interface HTMLAudioElement extends HTMLMediaElement {
6202    addEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLAudioElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6203    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6204    removeEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLAudioElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6205    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6206}
6207
6208declare var HTMLAudioElement: {
6209    prototype: HTMLAudioElement;
6210    new(): HTMLAudioElement;
6211};
6212
6213/** A HTML line break element (<br>). It inherits from HTMLElement. */
6214interface HTMLBRElement extends HTMLElement {
6215    /**
6216     * Sets or retrieves the side on which floating objects are not to be positioned when any IHTMLBlockElement is inserted into the document.
6217     * @deprecated
6218     */
6219    clear: string;
6220    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6221    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6222    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6223    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6224}
6225
6226declare var HTMLBRElement: {
6227    prototype: HTMLBRElement;
6228    new(): HTMLBRElement;
6229};
6230
6231/** Contains the base URI for a document. This object inherits all of the properties and methods as described in the HTMLElement interface. */
6232interface HTMLBaseElement extends HTMLElement {
6233    /** Gets or sets the baseline URL on which relative links are based. */
6234    href: string;
6235    /** Sets or retrieves the window or frame at which to target content. */
6236    target: string;
6237    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBaseElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6238    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6239    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBaseElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6240    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6241}
6242
6243declare var HTMLBaseElement: {
6244    prototype: HTMLBaseElement;
6245    new(): HTMLBaseElement;
6246};
6247
6248interface HTMLBodyElementEventMap extends HTMLElementEventMap, WindowEventHandlersEventMap {
6249}
6250
6251/** Provides special properties (beyond those inherited from the regular HTMLElement interface) for manipulating <body> elements. */
6252interface HTMLBodyElement extends HTMLElement, WindowEventHandlers {
6253    /** @deprecated */
6254    aLink: string;
6255    /** @deprecated */
6256    background: string;
6257    /** @deprecated */
6258    bgColor: string;
6259    /** @deprecated */
6260    link: string;
6261    /** @deprecated */
6262    text: string;
6263    /** @deprecated */
6264    vLink: string;
6265    addEventListener<K extends keyof HTMLBodyElementEventMap>(type: K, listener: (this: HTMLBodyElement, ev: HTMLBodyElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6266    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6267    removeEventListener<K extends keyof HTMLBodyElementEventMap>(type: K, listener: (this: HTMLBodyElement, ev: HTMLBodyElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6268    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6269}
6270
6271declare var HTMLBodyElement: {
6272    prototype: HTMLBodyElement;
6273    new(): HTMLBodyElement;
6274};
6275
6276/** Provides properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <button> elements. */
6277interface HTMLButtonElement extends HTMLElement {
6278    disabled: boolean;
6279    /** Retrieves a reference to the form that the object is embedded in. */
6280    readonly form: HTMLFormElement | null;
6281    /** Overrides the action attribute (where the data on a form is sent) on the parent form element. */
6282    formAction: string;
6283    /** Used to override the encoding (formEnctype attribute) specified on the form element. */
6284    formEnctype: string;
6285    /** Overrides the submit method attribute previously specified on a form element. */
6286    formMethod: string;
6287    /** Overrides any validation or required attributes on a form or form elements to allow it to be submitted without validation. This can be used to create a "save draft"-type submit option. */
6288    formNoValidate: boolean;
6289    /** Overrides the target attribute on a form element. */
6290    formTarget: string;
6291    readonly labels: NodeListOf<HTMLLabelElement>;
6292    /** Sets or retrieves the name of the object. */
6293    name: string;
6294    /** Gets the classification and default behavior of the button. */
6295    type: string;
6296    /** Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */
6297    readonly validationMessage: string;
6298    /** Returns a  ValidityState object that represents the validity states of an element. */
6299    readonly validity: ValidityState;
6300    /** Sets or retrieves the default or selected value of the control. */
6301    value: string;
6302    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */
6303    readonly willValidate: boolean;
6304    /** Returns whether a form will validate when it is submitted, without having to submit it. */
6305    checkValidity(): boolean;
6306    reportValidity(): boolean;
6307    /**
6308     * Sets a custom error message that is displayed when a form is submitted.
6309     * @param error Sets a custom error message that is displayed when a form is submitted.
6310     */
6311    setCustomValidity(error: string): void;
6312    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLButtonElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6313    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6314    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLButtonElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6315    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6316}
6317
6318declare var HTMLButtonElement: {
6319    prototype: HTMLButtonElement;
6320    new(): HTMLButtonElement;
6321};
6322
6323/** Provides properties and methods for manipulating the layout and presentation of <canvas> elements. The HTMLCanvasElement interface also inherits the properties and methods of the HTMLElement interface. */
6324interface HTMLCanvasElement extends HTMLElement {
6325    /** Gets or sets the height of a canvas element on a document. */
6326    height: number;
6327    /** Gets or sets the width of a canvas element on a document. */
6328    width: number;
6329    captureStream(frameRequestRate?: number): MediaStream;
6330    /**
6331     * Returns an object that provides methods and properties for drawing and manipulating images and graphics on a canvas element in a document. A context object includes information about colors, line widths, fonts, and other graphic parameters that can be drawn on a canvas.
6332     * @param contextId The identifier (ID) of the type of canvas to create. Internet Explorer 9 and Internet Explorer 10 support only a 2-D context using canvas.getContext("2d"); IE11 Preview also supports 3-D or WebGL context using canvas.getContext("experimental-webgl");
6333     */
6334    getContext(contextId: "2d", options?: CanvasRenderingContext2DSettings): CanvasRenderingContext2D | null;
6335    getContext(contextId: "bitmaprenderer", options?: ImageBitmapRenderingContextSettings): ImageBitmapRenderingContext | null;
6336    getContext(contextId: "webgl", options?: WebGLContextAttributes): WebGLRenderingContext | null;
6337    getContext(contextId: "webgl2", options?: WebGLContextAttributes): WebGL2RenderingContext | null;
6338    getContext(contextId: string, options?: any): RenderingContext | null;
6339    toBlob(callback: BlobCallback, type?: string, quality?: any): void;
6340    /**
6341     * Returns the content of the current canvas as an image that you can use as a source for another canvas or an HTML element.
6342     * @param type The standard MIME type for the image format to return. If you do not specify this parameter, the default value is a PNG format image.
6343     */
6344    toDataURL(type?: string, quality?: any): string;
6345    transferControlToOffscreen(): OffscreenCanvas;
6346    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6347    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6348    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6349    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6350}
6351
6352declare var HTMLCanvasElement: {
6353    prototype: HTMLCanvasElement;
6354    new(): HTMLCanvasElement;
6355};
6356
6357/** A generic collection (array-like object similar to arguments) of elements (in document order) and offers methods and properties for selecting from the list. */
6358interface HTMLCollectionBase {
6359    /** Sets or retrieves the number of objects in a collection. */
6360    readonly length: number;
6361    /** Retrieves an object from various collections. */
6362    item(index: number): Element | null;
6363    [index: number]: Element;
6364}
6365
6366interface HTMLCollection extends HTMLCollectionBase {
6367    /** Retrieves a select object or an object from an options collection. */
6368    namedItem(name: string): Element | null;
6369}
6370
6371declare var HTMLCollection: {
6372    prototype: HTMLCollection;
6373    new(): HTMLCollection;
6374};
6375
6376interface HTMLCollectionOf<T extends Element> extends HTMLCollectionBase {
6377    item(index: number): T | null;
6378    namedItem(name: string): T | null;
6379    [index: number]: T;
6380}
6381
6382/** Provides special properties (beyond those of the regular HTMLElement interface it also has available to it by inheritance) for manipulating definition list (<dl>) elements. */
6383interface HTMLDListElement extends HTMLElement {
6384    /** @deprecated */
6385    compact: boolean;
6386    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6387    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6388    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6389    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6390}
6391
6392declare var HTMLDListElement: {
6393    prototype: HTMLDListElement;
6394    new(): HTMLDListElement;
6395};
6396
6397/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <data> elements. */
6398interface HTMLDataElement extends HTMLElement {
6399    value: string;
6400    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6401    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6402    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6403    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6404}
6405
6406declare var HTMLDataElement: {
6407    prototype: HTMLDataElement;
6408    new(): HTMLDataElement;
6409};
6410
6411/** Provides special properties (beyond the HTMLElement object interface it also has available to it by inheritance) to manipulate <datalist> elements and their content. */
6412interface HTMLDataListElement extends HTMLElement {
6413    /** Returns an HTMLCollection of the option elements of the datalist element. */
6414    readonly options: HTMLCollectionOf<HTMLOptionElement>;
6415    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6416    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6417    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6418    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6419}
6420
6421declare var HTMLDataListElement: {
6422    prototype: HTMLDataListElement;
6423    new(): HTMLDataListElement;
6424};
6425
6426interface HTMLDetailsElement extends HTMLElement {
6427    open: boolean;
6428    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDetailsElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6429    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6430    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDetailsElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6431    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6432}
6433
6434declare var HTMLDetailsElement: {
6435    prototype: HTMLDetailsElement;
6436    new(): HTMLDetailsElement;
6437};
6438
6439interface HTMLDialogElement extends HTMLElement {
6440    open: boolean;
6441    returnValue: string;
6442    /**
6443     * Closes the dialog element.
6444     *
6445     * The argument, if provided, provides a return value.
6446     */
6447    close(returnValue?: string): void;
6448    /** Displays the dialog element. */
6449    show(): void;
6450    showModal(): void;
6451    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDialogElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6452    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6453    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDialogElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6454    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6455}
6456
6457declare var HTMLDialogElement: {
6458    prototype: HTMLDialogElement;
6459    new(): HTMLDialogElement;
6460};
6461
6462/** @deprecated */
6463interface HTMLDirectoryElement extends HTMLElement {
6464    /** @deprecated */
6465    compact: boolean;
6466    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDirectoryElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6467    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6468    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDirectoryElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6469    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6470}
6471
6472/** @deprecated */
6473declare var HTMLDirectoryElement: {
6474    prototype: HTMLDirectoryElement;
6475    new(): HTMLDirectoryElement;
6476};
6477
6478/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <div> elements. */
6479interface HTMLDivElement extends HTMLElement {
6480    /**
6481     * Sets or retrieves how the object is aligned with adjacent text.
6482     * @deprecated
6483     */
6484    align: string;
6485    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6486    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6487    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6488    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6489}
6490
6491declare var HTMLDivElement: {
6492    prototype: HTMLDivElement;
6493    new(): HTMLDivElement;
6494};
6495
6496/** @deprecated use Document */
6497interface HTMLDocument extends Document {
6498    addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: HTMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6499    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6500    removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: HTMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6501    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6502}
6503
6504/** @deprecated */
6505declare var HTMLDocument: {
6506    prototype: HTMLDocument;
6507    new(): HTMLDocument;
6508};
6509
6510interface HTMLElementEventMap extends ElementEventMap, DocumentAndElementEventHandlersEventMap, GlobalEventHandlersEventMap {
6511}
6512
6513/** Any HTML element. Some elements directly implement this interface, while others implement it via an interface that inherits it. */
6514interface HTMLElement extends Element, DocumentAndElementEventHandlers, ElementCSSInlineStyle, ElementContentEditable, GlobalEventHandlers, HTMLOrSVGElement {
6515    accessKey: string;
6516    readonly accessKeyLabel: string;
6517    autocapitalize: string;
6518    dir: string;
6519    draggable: boolean;
6520    hidden: boolean;
6521    inert: boolean;
6522    innerText: string;
6523    lang: string;
6524    readonly offsetHeight: number;
6525    readonly offsetLeft: number;
6526    readonly offsetParent: Element | null;
6527    readonly offsetTop: number;
6528    readonly offsetWidth: number;
6529    outerText: string;
6530    spellcheck: boolean;
6531    title: string;
6532    translate: boolean;
6533    attachInternals(): ElementInternals;
6534    click(): void;
6535    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6536    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6537    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6538    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6539}
6540
6541declare var HTMLElement: {
6542    prototype: HTMLElement;
6543    new(): HTMLElement;
6544};
6545
6546/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <embed> elements. */
6547interface HTMLEmbedElement extends HTMLElement {
6548    /** @deprecated */
6549    align: string;
6550    /** Sets or retrieves the height of the object. */
6551    height: string;
6552    /**
6553     * Sets or retrieves the name of the object.
6554     * @deprecated
6555     */
6556    name: string;
6557    /** Sets or retrieves a URL to be loaded by the object. */
6558    src: string;
6559    type: string;
6560    /** Sets or retrieves the width of the object. */
6561    width: string;
6562    getSVGDocument(): Document | null;
6563    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLEmbedElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6564    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6565    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLEmbedElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6566    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6567}
6568
6569declare var HTMLEmbedElement: {
6570    prototype: HTMLEmbedElement;
6571    new(): HTMLEmbedElement;
6572};
6573
6574/** Provides special properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of <fieldset> elements. */
6575interface HTMLFieldSetElement extends HTMLElement {
6576    disabled: boolean;
6577    /** Returns an HTMLCollection of the form controls in the element. */
6578    readonly elements: HTMLCollection;
6579    /** Retrieves a reference to the form that the object is embedded in. */
6580    readonly form: HTMLFormElement | null;
6581    name: string;
6582    /** Returns the string "fieldset". */
6583    readonly type: string;
6584    /** Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */
6585    readonly validationMessage: string;
6586    /** Returns a  ValidityState object that represents the validity states of an element. */
6587    readonly validity: ValidityState;
6588    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */
6589    readonly willValidate: boolean;
6590    /** Returns whether a form will validate when it is submitted, without having to submit it. */
6591    checkValidity(): boolean;
6592    reportValidity(): boolean;
6593    /**
6594     * Sets a custom error message that is displayed when a form is submitted.
6595     * @param error Sets a custom error message that is displayed when a form is submitted.
6596     */
6597    setCustomValidity(error: string): void;
6598    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFieldSetElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6599    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6600    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFieldSetElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6601    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6602}
6603
6604declare var HTMLFieldSetElement: {
6605    prototype: HTMLFieldSetElement;
6606    new(): HTMLFieldSetElement;
6607};
6608
6609/**
6610 * Implements the document object model (DOM) representation of the font element. The HTML Font Element <font> defines the font size, font face and color of text.
6611 * @deprecated
6612 */
6613interface HTMLFontElement extends HTMLElement {
6614    /** @deprecated */
6615    color: string;
6616    /**
6617     * Sets or retrieves the current typeface family.
6618     * @deprecated
6619     */
6620    face: string;
6621    /** @deprecated */
6622    size: string;
6623    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFontElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6624    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6625    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFontElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6626    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6627}
6628
6629/** @deprecated */
6630declare var HTMLFontElement: {
6631    prototype: HTMLFontElement;
6632    new(): HTMLFontElement;
6633};
6634
6635/** A collection of HTML form control elements.  */
6636interface HTMLFormControlsCollection extends HTMLCollectionBase {
6637    /**
6638     * Returns the item with ID or name name from the collection.
6639     *
6640     * If there are multiple matching items, then a RadioNodeList object containing all those elements is returned.
6641     */
6642    namedItem(name: string): RadioNodeList | Element | null;
6643}
6644
6645declare var HTMLFormControlsCollection: {
6646    prototype: HTMLFormControlsCollection;
6647    new(): HTMLFormControlsCollection;
6648};
6649
6650/** A <form> element in the DOM; it allows access to and in some cases modification of aspects of the form, as well as access to its component elements. */
6651interface HTMLFormElement extends HTMLElement {
6652    /** Sets or retrieves a list of character encodings for input data that must be accepted by the server processing the form. */
6653    acceptCharset: string;
6654    /** Sets or retrieves the URL to which the form content is sent for processing. */
6655    action: string;
6656    /** Specifies whether autocomplete is applied to an editable text field. */
6657    autocomplete: string;
6658    /** Retrieves a collection, in source order, of all controls in a given form. */
6659    readonly elements: HTMLFormControlsCollection;
6660    /** Sets or retrieves the MIME encoding for the form. */
6661    encoding: string;
6662    /** Sets or retrieves the encoding type for the form. */
6663    enctype: string;
6664    /** Sets or retrieves the number of objects in a collection. */
6665    readonly length: number;
6666    /** Sets or retrieves how to send the form data to the server. */
6667    method: string;
6668    /** Sets or retrieves the name of the object. */
6669    name: string;
6670    /** Designates a form that is not validated when submitted. */
6671    noValidate: boolean;
6672    /** Sets or retrieves the window or frame at which to target content. */
6673    target: string;
6674    /** Returns whether a form will validate when it is submitted, without having to submit it. */
6675    checkValidity(): boolean;
6676    reportValidity(): boolean;
6677    requestSubmit(submitter?: HTMLElement | null): void;
6678    /** Fires when the user resets a form. */
6679    reset(): void;
6680    /** Fires when a FORM is about to be submitted. */
6681    submit(): void;
6682    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFormElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6683    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6684    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFormElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6685    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6686    [index: number]: Element;
6687    [name: string]: any;
6688}
6689
6690declare var HTMLFormElement: {
6691    prototype: HTMLFormElement;
6692    new(): HTMLFormElement;
6693};
6694
6695/** @deprecated */
6696interface HTMLFrameElement extends HTMLElement {
6697    /**
6698     * Retrieves the document object of the page or frame.
6699     * @deprecated
6700     */
6701    readonly contentDocument: Document | null;
6702    /**
6703     * Retrieves the object of the specified.
6704     * @deprecated
6705     */
6706    readonly contentWindow: WindowProxy | null;
6707    /**
6708     * Sets or retrieves whether to display a border for the frame.
6709     * @deprecated
6710     */
6711    frameBorder: string;
6712    /**
6713     * Sets or retrieves a URI to a long description of the object.
6714     * @deprecated
6715     */
6716    longDesc: string;
6717    /**
6718     * Sets or retrieves the top and bottom margin heights before displaying the text in a frame.
6719     * @deprecated
6720     */
6721    marginHeight: string;
6722    /**
6723     * Sets or retrieves the left and right margin widths before displaying the text in a frame.
6724     * @deprecated
6725     */
6726    marginWidth: string;
6727    /**
6728     * Sets or retrieves the frame name.
6729     * @deprecated
6730     */
6731    name: string;
6732    /**
6733     * Sets or retrieves whether the user can resize the frame.
6734     * @deprecated
6735     */
6736    noResize: boolean;
6737    /**
6738     * Sets or retrieves whether the frame can be scrolled.
6739     * @deprecated
6740     */
6741    scrolling: string;
6742    /**
6743     * Sets or retrieves a URL to be loaded by the object.
6744     * @deprecated
6745     */
6746    src: string;
6747    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6748    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6749    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6750    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6751}
6752
6753/** @deprecated */
6754declare var HTMLFrameElement: {
6755    prototype: HTMLFrameElement;
6756    new(): HTMLFrameElement;
6757};
6758
6759interface HTMLFrameSetElementEventMap extends HTMLElementEventMap, WindowEventHandlersEventMap {
6760}
6761
6762/**
6763 * Provides special properties (beyond those of the regular HTMLElement interface they also inherit) for manipulating <frameset> elements.
6764 * @deprecated
6765 */
6766interface HTMLFrameSetElement extends HTMLElement, WindowEventHandlers {
6767    /**
6768     * Sets or retrieves the frame widths of the object.
6769     * @deprecated
6770     */
6771    cols: string;
6772    /**
6773     * Sets or retrieves the frame heights of the object.
6774     * @deprecated
6775     */
6776    rows: string;
6777    addEventListener<K extends keyof HTMLFrameSetElementEventMap>(type: K, listener: (this: HTMLFrameSetElement, ev: HTMLFrameSetElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6778    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6779    removeEventListener<K extends keyof HTMLFrameSetElementEventMap>(type: K, listener: (this: HTMLFrameSetElement, ev: HTMLFrameSetElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6780    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6781}
6782
6783/** @deprecated */
6784declare var HTMLFrameSetElement: {
6785    prototype: HTMLFrameSetElement;
6786    new(): HTMLFrameSetElement;
6787};
6788
6789/** Provides special properties (beyond those of the HTMLElement interface it also has available to it by inheritance) for manipulating <hr> elements. */
6790interface HTMLHRElement extends HTMLElement {
6791    /**
6792     * Sets or retrieves how the object is aligned with adjacent text.
6793     * @deprecated
6794     */
6795    align: string;
6796    /** @deprecated */
6797    color: string;
6798    /**
6799     * Sets or retrieves whether the horizontal rule is drawn with 3-D shading.
6800     * @deprecated
6801     */
6802    noShade: boolean;
6803    /** @deprecated */
6804    size: string;
6805    /**
6806     * Sets or retrieves the width of the object.
6807     * @deprecated
6808     */
6809    width: string;
6810    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6811    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6812    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6813    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6814}
6815
6816declare var HTMLHRElement: {
6817    prototype: HTMLHRElement;
6818    new(): HTMLHRElement;
6819};
6820
6821/** Contains the descriptive information, or metadata, for a document. This object inherits all of the properties and methods described in the HTMLElement interface. */
6822interface HTMLHeadElement extends HTMLElement {
6823    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6824    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6825    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6826    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6827}
6828
6829declare var HTMLHeadElement: {
6830    prototype: HTMLHeadElement;
6831    new(): HTMLHeadElement;
6832};
6833
6834/** The different heading elements. It inherits methods and properties from the HTMLElement interface. */
6835interface HTMLHeadingElement extends HTMLElement {
6836    /**
6837     * Sets or retrieves a value that indicates the table alignment.
6838     * @deprecated
6839     */
6840    align: string;
6841    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadingElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6842    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6843    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadingElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6844    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6845}
6846
6847declare var HTMLHeadingElement: {
6848    prototype: HTMLHeadingElement;
6849    new(): HTMLHeadingElement;
6850};
6851
6852/** Serves as the root node for a given HTML document. This object inherits the properties and methods described in the HTMLElement interface. */
6853interface HTMLHtmlElement extends HTMLElement {
6854    /**
6855     * Sets or retrieves the DTD version that governs the current document.
6856     * @deprecated
6857     */
6858    version: string;
6859    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHtmlElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6860    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6861    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHtmlElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6862    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6863}
6864
6865declare var HTMLHtmlElement: {
6866    prototype: HTMLHtmlElement;
6867    new(): HTMLHtmlElement;
6868};
6869
6870interface HTMLHyperlinkElementUtils {
6871    /**
6872     * Returns the hyperlink's URL's fragment (includes leading "#" if non-empty).
6873     *
6874     * Can be set, to change the URL's fragment (ignores leading "#").
6875     */
6876    hash: string;
6877    /**
6878     * Returns the hyperlink's URL's host and port (if different from the default port for the scheme).
6879     *
6880     * Can be set, to change the URL's host and port.
6881     */
6882    host: string;
6883    /**
6884     * Returns the hyperlink's URL's host.
6885     *
6886     * Can be set, to change the URL's host.
6887     */
6888    hostname: string;
6889    /**
6890     * Returns the hyperlink's URL.
6891     *
6892     * Can be set, to change the URL.
6893     */
6894    href: string;
6895    toString(): string;
6896    /** Returns the hyperlink's URL's origin. */
6897    readonly origin: string;
6898    /**
6899     * Returns the hyperlink's URL's password.
6900     *
6901     * Can be set, to change the URL's password.
6902     */
6903    password: string;
6904    /**
6905     * Returns the hyperlink's URL's path.
6906     *
6907     * Can be set, to change the URL's path.
6908     */
6909    pathname: string;
6910    /**
6911     * Returns the hyperlink's URL's port.
6912     *
6913     * Can be set, to change the URL's port.
6914     */
6915    port: string;
6916    /**
6917     * Returns the hyperlink's URL's scheme.
6918     *
6919     * Can be set, to change the URL's scheme.
6920     */
6921    protocol: string;
6922    /**
6923     * Returns the hyperlink's URL's query (includes leading "?" if non-empty).
6924     *
6925     * Can be set, to change the URL's query (ignores leading "?").
6926     */
6927    search: string;
6928    /**
6929     * Returns the hyperlink's URL's username.
6930     *
6931     * Can be set, to change the URL's username.
6932     */
6933    username: string;
6934}
6935
6936/** Provides special properties and methods (beyond those of the HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of inline frame elements. */
6937interface HTMLIFrameElement extends HTMLElement {
6938    /**
6939     * Sets or retrieves how the object is aligned with adjacent text.
6940     * @deprecated
6941     */
6942    align: string;
6943    allow: string;
6944    allowFullscreen: boolean;
6945    /** Retrieves the document object of the page or frame. */
6946    readonly contentDocument: Document | null;
6947    /** Retrieves the object of the specified. */
6948    readonly contentWindow: WindowProxy | null;
6949    /**
6950     * Sets or retrieves whether to display a border for the frame.
6951     * @deprecated
6952     */
6953    frameBorder: string;
6954    /** Sets or retrieves the height of the object. */
6955    height: string;
6956    /**
6957     * Sets or retrieves a URI to a long description of the object.
6958     * @deprecated
6959     */
6960    longDesc: string;
6961    /**
6962     * Sets or retrieves the top and bottom margin heights before displaying the text in a frame.
6963     * @deprecated
6964     */
6965    marginHeight: string;
6966    /**
6967     * Sets or retrieves the left and right margin widths before displaying the text in a frame.
6968     * @deprecated
6969     */
6970    marginWidth: string;
6971    /** Sets or retrieves the frame name. */
6972    name: string;
6973    referrerPolicy: ReferrerPolicy;
6974    readonly sandbox: DOMTokenList;
6975    /**
6976     * Sets or retrieves whether the frame can be scrolled.
6977     * @deprecated
6978     */
6979    scrolling: string;
6980    /** Sets or retrieves a URL to be loaded by the object. */
6981    src: string;
6982    /** Sets or retrives the content of the page that is to contain. */
6983    srcdoc: string;
6984    /** Sets or retrieves the width of the object. */
6985    width: string;
6986    getSVGDocument(): Document | null;
6987    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLIFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6988    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6989    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLIFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6990    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6991}
6992
6993declare var HTMLIFrameElement: {
6994    prototype: HTMLIFrameElement;
6995    new(): HTMLIFrameElement;
6996};
6997
6998/** Provides special properties and methods for manipulating <img> elements. */
6999interface HTMLImageElement extends HTMLElement {
7000    /**
7001     * Sets or retrieves how the object is aligned with adjacent text.
7002     * @deprecated
7003     */
7004    align: string;
7005    /** Sets or retrieves a text alternative to the graphic. */
7006    alt: string;
7007    /**
7008     * Specifies the properties of a border drawn around an object.
7009     * @deprecated
7010     */
7011    border: string;
7012    /** Retrieves whether the object is fully loaded. */
7013    readonly complete: boolean;
7014    crossOrigin: string | null;
7015    readonly currentSrc: string;
7016    decoding: "async" | "sync" | "auto";
7017    /** Sets or retrieves the height of the object. */
7018    height: number;
7019    /**
7020     * Sets or retrieves the width of the border to draw around the object.
7021     * @deprecated
7022     */
7023    hspace: number;
7024    /** Sets or retrieves whether the image is a server-side image map. */
7025    isMap: boolean;
7026    /** Sets or retrieves the policy for loading image elements that are outside the viewport. */
7027    loading: "eager" | "lazy";
7028    /**
7029     * Sets or retrieves a Uniform Resource Identifier (URI) to a long description of the object.
7030     * @deprecated
7031     */
7032    longDesc: string;
7033    /** @deprecated */
7034    lowsrc: string;
7035    /**
7036     * Sets or retrieves the name of the object.
7037     * @deprecated
7038     */
7039    name: string;
7040    /** The original height of the image resource before sizing. */
7041    readonly naturalHeight: number;
7042    /** The original width of the image resource before sizing. */
7043    readonly naturalWidth: number;
7044    referrerPolicy: string;
7045    sizes: string;
7046    /** The address or URL of the a media resource that is to be considered. */
7047    src: string;
7048    srcset: string;
7049    /** Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map. */
7050    useMap: string;
7051    /**
7052     * Sets or retrieves the vertical margin for the object.
7053     * @deprecated
7054     */
7055    vspace: number;
7056    /** Sets or retrieves the width of the object. */
7057    width: number;
7058    readonly x: number;
7059    readonly y: number;
7060    decode(): Promise<void>;
7061    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLImageElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7062    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7063    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLImageElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7064    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7065}
7066
7067declare var HTMLImageElement: {
7068    prototype: HTMLImageElement;
7069    new(): HTMLImageElement;
7070};
7071
7072/** Provides special properties and methods for manipulating the options, layout, and presentation of <input> elements. */
7073interface HTMLInputElement extends HTMLElement {
7074    /** Sets or retrieves a comma-separated list of content types. */
7075    accept: string;
7076    /**
7077     * Sets or retrieves how the object is aligned with adjacent text.
7078     * @deprecated
7079     */
7080    align: string;
7081    /** Sets or retrieves a text alternative to the graphic. */
7082    alt: string;
7083    /** Specifies whether autocomplete is applied to an editable text field. */
7084    autocomplete: string;
7085    capture: string;
7086    /** Sets or retrieves the state of the check box or radio button. */
7087    checked: boolean;
7088    /** Sets or retrieves the state of the check box or radio button. */
7089    defaultChecked: boolean;
7090    /** Sets or retrieves the initial contents of the object. */
7091    defaultValue: string;
7092    dirName: string;
7093    disabled: boolean;
7094    /** Returns a FileList object on a file type input object. */
7095    files: FileList | null;
7096    /** Retrieves a reference to the form that the object is embedded in. */
7097    readonly form: HTMLFormElement | null;
7098    /** Overrides the action attribute (where the data on a form is sent) on the parent form element. */
7099    formAction: string;
7100    /** Used to override the encoding (formEnctype attribute) specified on the form element. */
7101    formEnctype: string;
7102    /** Overrides the submit method attribute previously specified on a form element. */
7103    formMethod: string;
7104    /** Overrides any validation or required attributes on a form or form elements to allow it to be submitted without validation. This can be used to create a "save draft"-type submit option. */
7105    formNoValidate: boolean;
7106    /** Overrides the target attribute on a form element. */
7107    formTarget: string;
7108    /** Sets or retrieves the height of the object. */
7109    height: number;
7110    /** When set, overrides the rendering of checkbox controls so that the current value is not visible. */
7111    indeterminate: boolean;
7112    readonly labels: NodeListOf<HTMLLabelElement> | null;
7113    /** Specifies the ID of a pre-defined datalist of options for an input element. */
7114    readonly list: HTMLElement | null;
7115    /** Defines the maximum acceptable value for an input element with type="number".When used with the min and step attributes, lets you control the range and increment (such as only even numbers) that the user can enter into an input field. */
7116    max: string;
7117    /** Sets or retrieves the maximum number of characters that the user can enter in a text control. */
7118    maxLength: number;
7119    /** Defines the minimum acceptable value for an input element with type="number". When used with the max and step attributes, lets you control the range and increment (such as even numbers only) that the user can enter into an input field. */
7120    min: string;
7121    minLength: number;
7122    /** Sets or retrieves the Boolean value indicating whether multiple items can be selected from a list. */
7123    multiple: boolean;
7124    /** Sets or retrieves the name of the object. */
7125    name: string;
7126    /** Gets or sets a string containing a regular expression that the user's input must match. */
7127    pattern: string;
7128    /** Gets or sets a text string that is displayed in an input field as a hint or prompt to users as the format or type of information they need to enter.The text appears in an input field until the user puts focus on the field. */
7129    placeholder: string;
7130    readOnly: boolean;
7131    /** When present, marks an element that can't be submitted without a value. */
7132    required: boolean;
7133    selectionDirection: "forward" | "backward" | "none" | null;
7134    /** Gets or sets the end position or offset of a text selection. */
7135    selectionEnd: number | null;
7136    /** Gets or sets the starting position or offset of a text selection. */
7137    selectionStart: number | null;
7138    size: number;
7139    /** The address or URL of the a media resource that is to be considered. */
7140    src: string;
7141    /** Defines an increment or jump between values that you want to allow the user to enter. When used with the max and min attributes, lets you control the range and increment (for example, allow only even numbers) that the user can enter into an input field. */
7142    step: string;
7143    /** Returns the content type of the object. */
7144    type: string;
7145    /**
7146     * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map.
7147     * @deprecated
7148     */
7149    useMap: string;
7150    /** Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */
7151    readonly validationMessage: string;
7152    /** Returns a  ValidityState object that represents the validity states of an element. */
7153    readonly validity: ValidityState;
7154    /** Returns the value of the data at the cursor's current position. */
7155    value: string;
7156    /** Returns a Date object representing the form control's value, if applicable; otherwise, returns null. Can be set, to change the value. Throws an "InvalidStateError" DOMException if the control isn't date- or time-based. */
7157    valueAsDate: Date | null;
7158    /** Returns the input field value as a number. */
7159    valueAsNumber: number;
7160    readonly webkitEntries: ReadonlyArray<FileSystemEntry>;
7161    webkitdirectory: boolean;
7162    /** Sets or retrieves the width of the object. */
7163    width: number;
7164    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */
7165    readonly willValidate: boolean;
7166    /** Returns whether a form will validate when it is submitted, without having to submit it. */
7167    checkValidity(): boolean;
7168    reportValidity(): boolean;
7169    /** Makes the selection equal to the current object. */
7170    select(): void;
7171    /**
7172     * Sets a custom error message that is displayed when a form is submitted.
7173     * @param error Sets a custom error message that is displayed when a form is submitted.
7174     */
7175    setCustomValidity(error: string): void;
7176    setRangeText(replacement: string): void;
7177    setRangeText(replacement: string, start: number, end: number, selectionMode?: SelectionMode): void;
7178    /**
7179     * Sets the start and end positions of a selection in a text field.
7180     * @param start The offset into the text field for the start of the selection.
7181     * @param end The offset into the text field for the end of the selection.
7182     * @param direction The direction in which the selection is performed.
7183     */
7184    setSelectionRange(start: number | null, end: number | null, direction?: "forward" | "backward" | "none"): void;
7185    showPicker(): void;
7186    /**
7187     * Decrements a range input control's value by the value given by the Step attribute. If the optional parameter is used, it will decrement the input control's step value multiplied by the parameter's value.
7188     * @param n Value to decrement the value by.
7189     */
7190    stepDown(n?: number): void;
7191    /**
7192     * Increments a range input control's value by the value given by the Step attribute. If the optional parameter is used, will increment the input control's value by that value.
7193     * @param n Value to increment the value by.
7194     */
7195    stepUp(n?: number): void;
7196    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLInputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7197    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7198    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLInputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7199    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7200}
7201
7202declare var HTMLInputElement: {
7203    prototype: HTMLInputElement;
7204    new(): HTMLInputElement;
7205};
7206
7207/** Exposes specific properties and methods (beyond those defined by regular HTMLElement interface it also has available to it by inheritance) for manipulating list elements. */
7208interface HTMLLIElement extends HTMLElement {
7209    /** @deprecated */
7210    type: string;
7211    /** Sets or retrieves the value of a list item. */
7212    value: number;
7213    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLIElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7214    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7215    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLIElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7216    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7217}
7218
7219declare var HTMLLIElement: {
7220    prototype: HTMLLIElement;
7221    new(): HTMLLIElement;
7222};
7223
7224/** Gives access to properties specific to <label> elements. It inherits methods and properties from the base HTMLElement interface. */
7225interface HTMLLabelElement extends HTMLElement {
7226    /** Returns the form control that is associated with this element. */
7227    readonly control: HTMLElement | null;
7228    /** Retrieves a reference to the form that the object is embedded in. */
7229    readonly form: HTMLFormElement | null;
7230    /** Sets or retrieves the object to which the given label object is assigned. */
7231    htmlFor: string;
7232    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLabelElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7233    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7234    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLabelElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7235    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7236}
7237
7238declare var HTMLLabelElement: {
7239    prototype: HTMLLabelElement;
7240    new(): HTMLLabelElement;
7241};
7242
7243/** The HTMLLegendElement is an interface allowing to access properties of the <legend> elements. It inherits properties and methods from the HTMLElement interface. */
7244interface HTMLLegendElement extends HTMLElement {
7245    /** @deprecated */
7246    align: string;
7247    /** Retrieves a reference to the form that the object is embedded in. */
7248    readonly form: HTMLFormElement | null;
7249    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLegendElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7250    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7251    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLegendElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7252    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7253}
7254
7255declare var HTMLLegendElement: {
7256    prototype: HTMLLegendElement;
7257    new(): HTMLLegendElement;
7258};
7259
7260/** Reference information for external resources and the relationship of those resources to a document and vice-versa. This object inherits all of the properties and methods of the HTMLElement interface. */
7261interface HTMLLinkElement extends HTMLElement, LinkStyle {
7262    as: string;
7263    /**
7264     * Sets or retrieves the character set used to encode the object.
7265     * @deprecated
7266     */
7267    charset: string;
7268    crossOrigin: string | null;
7269    disabled: boolean;
7270    /** Sets or retrieves a destination URL or an anchor point. */
7271    href: string;
7272    /** Sets or retrieves the language code of the object. */
7273    hreflang: string;
7274    imageSizes: string;
7275    imageSrcset: string;
7276    integrity: string;
7277    /** Sets or retrieves the media type. */
7278    media: string;
7279    referrerPolicy: string;
7280    /** Sets or retrieves the relationship between the object and the destination of the link. */
7281    rel: string;
7282    readonly relList: DOMTokenList;
7283    /**
7284     * Sets or retrieves the relationship between the object and the destination of the link.
7285     * @deprecated
7286     */
7287    rev: string;
7288    readonly sizes: DOMTokenList;
7289    /**
7290     * Sets or retrieves the window or frame at which to target content.
7291     * @deprecated
7292     */
7293    target: string;
7294    /** Sets or retrieves the MIME type of the object. */
7295    type: string;
7296    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLinkElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7297    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7298    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLinkElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7299    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7300}
7301
7302declare var HTMLLinkElement: {
7303    prototype: HTMLLinkElement;
7304    new(): HTMLLinkElement;
7305};
7306
7307/** Provides special properties and methods (beyond those of the regular object HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of map elements. */
7308interface HTMLMapElement extends HTMLElement {
7309    /** Retrieves a collection of the area objects defined for the given map object. */
7310    readonly areas: HTMLCollection;
7311    /** Sets or retrieves the name of the object. */
7312    name: string;
7313    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMapElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7314    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7315    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMapElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7316    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7317}
7318
7319declare var HTMLMapElement: {
7320    prototype: HTMLMapElement;
7321    new(): HTMLMapElement;
7322};
7323
7324/**
7325 * Provides methods to manipulate <marquee> elements.
7326 * @deprecated
7327 */
7328interface HTMLMarqueeElement extends HTMLElement {
7329    /** @deprecated */
7330    behavior: string;
7331    /** @deprecated */
7332    bgColor: string;
7333    /** @deprecated */
7334    direction: string;
7335    /** @deprecated */
7336    height: string;
7337    /** @deprecated */
7338    hspace: number;
7339    /** @deprecated */
7340    loop: number;
7341    /** @deprecated */
7342    scrollAmount: number;
7343    /** @deprecated */
7344    scrollDelay: number;
7345    /** @deprecated */
7346    trueSpeed: boolean;
7347    /** @deprecated */
7348    vspace: number;
7349    /** @deprecated */
7350    width: string;
7351    /** @deprecated */
7352    start(): void;
7353    /** @deprecated */
7354    stop(): void;
7355    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMarqueeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7356    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7357    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMarqueeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7358    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7359}
7360
7361/** @deprecated */
7362declare var HTMLMarqueeElement: {
7363    prototype: HTMLMarqueeElement;
7364    new(): HTMLMarqueeElement;
7365};
7366
7367interface HTMLMediaElementEventMap extends HTMLElementEventMap {
7368    "encrypted": MediaEncryptedEvent;
7369    "waitingforkey": Event;
7370}
7371
7372/** Adds to HTMLElement the properties and methods needed to support basic media-related capabilities that are common to audio and video. */
7373interface HTMLMediaElement extends HTMLElement {
7374    /** Gets or sets a value that indicates whether to start playing the media automatically. */
7375    autoplay: boolean;
7376    /** Gets a collection of buffered time ranges. */
7377    readonly buffered: TimeRanges;
7378    /** Gets or sets a flag that indicates whether the client provides a set of controls for the media (in case the developer does not include controls for the player). */
7379    controls: boolean;
7380    crossOrigin: string | null;
7381    /** Gets the address or URL of the current media resource that is selected by IHTMLMediaElement. */
7382    readonly currentSrc: string;
7383    /** Gets or sets the current playback position, in seconds. */
7384    currentTime: number;
7385    defaultMuted: boolean;
7386    /** Gets or sets the default playback rate when the user is not using fast forward or reverse for a video or audio resource. */
7387    defaultPlaybackRate: number;
7388    disableRemotePlayback: boolean;
7389    /** Returns the duration in seconds of the current media resource. A NaN value is returned if duration is not available, or Infinity if the media resource is streaming. */
7390    readonly duration: number;
7391    /** Gets information about whether the playback has ended or not. */
7392    readonly ended: boolean;
7393    /** Returns an object representing the current error state of the audio or video element. */
7394    readonly error: MediaError | null;
7395    /** Gets or sets a flag to specify whether playback should restart after it completes. */
7396    loop: boolean;
7397    /** Available only in secure contexts. */
7398    readonly mediaKeys: MediaKeys | null;
7399    /** Gets or sets a flag that indicates whether the audio (either audio or the audio track on video media) is muted. */
7400    muted: boolean;
7401    /** Gets the current network activity for the element. */
7402    readonly networkState: number;
7403    onencrypted: ((this: HTMLMediaElement, ev: MediaEncryptedEvent) => any) | null;
7404    onwaitingforkey: ((this: HTMLMediaElement, ev: Event) => any) | null;
7405    /** Gets a flag that specifies whether playback is paused. */
7406    readonly paused: boolean;
7407    /** Gets or sets the current rate of speed for the media resource to play. This speed is expressed as a multiple of the normal speed of the media resource. */
7408    playbackRate: number;
7409    /** Gets TimeRanges for the current media resource that has been played. */
7410    readonly played: TimeRanges;
7411    /** Gets or sets a value indicating what data should be preloaded, if any. */
7412    preload: "none" | "metadata" | "auto" | "";
7413    preservesPitch: boolean;
7414    readonly readyState: number;
7415    readonly remote: RemotePlayback;
7416    /** Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked. */
7417    readonly seekable: TimeRanges;
7418    /** Gets a flag that indicates whether the client is currently moving to a new playback position in the media resource. */
7419    readonly seeking: boolean;
7420    /** The address or URL of the a media resource that is to be considered. */
7421    src: string;
7422    srcObject: MediaProvider | null;
7423    readonly textTracks: TextTrackList;
7424    /** Gets or sets the volume level for audio portions of the media element. */
7425    volume: number;
7426    addTextTrack(kind: TextTrackKind, label?: string, language?: string): TextTrack;
7427    /** Returns a string that specifies whether the client can play a given media resource type. */
7428    canPlayType(type: string): CanPlayTypeResult;
7429    fastSeek(time: number): void;
7430    /** Resets the audio or video object and loads a new media resource. */
7431    load(): void;
7432    /** Pauses the current playback and sets paused to TRUE. This can be used to test whether the media is playing or paused. You can also use the pause or play events to tell whether the media is playing or not. */
7433    pause(): void;
7434    /** Loads and starts playback of a media resource. */
7435    play(): Promise<void>;
7436    /** Available only in secure contexts. */
7437    setMediaKeys(mediaKeys: MediaKeys | null): Promise<void>;
7438    readonly HAVE_CURRENT_DATA: number;
7439    readonly HAVE_ENOUGH_DATA: number;
7440    readonly HAVE_FUTURE_DATA: number;
7441    readonly HAVE_METADATA: number;
7442    readonly HAVE_NOTHING: number;
7443    readonly NETWORK_EMPTY: number;
7444    readonly NETWORK_IDLE: number;
7445    readonly NETWORK_LOADING: number;
7446    readonly NETWORK_NO_SOURCE: number;
7447    addEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLMediaElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7448    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7449    removeEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLMediaElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7450    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7451}
7452
7453declare var HTMLMediaElement: {
7454    prototype: HTMLMediaElement;
7455    new(): HTMLMediaElement;
7456    readonly HAVE_CURRENT_DATA: number;
7457    readonly HAVE_ENOUGH_DATA: number;
7458    readonly HAVE_FUTURE_DATA: number;
7459    readonly HAVE_METADATA: number;
7460    readonly HAVE_NOTHING: number;
7461    readonly NETWORK_EMPTY: number;
7462    readonly NETWORK_IDLE: number;
7463    readonly NETWORK_LOADING: number;
7464    readonly NETWORK_NO_SOURCE: number;
7465};
7466
7467interface HTMLMenuElement extends HTMLElement {
7468    /** @deprecated */
7469    compact: boolean;
7470    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMenuElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7471    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7472    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMenuElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7473    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7474}
7475
7476declare var HTMLMenuElement: {
7477    prototype: HTMLMenuElement;
7478    new(): HTMLMenuElement;
7479};
7480
7481/** Contains descriptive metadata about a document. It inherits all of the properties and methods described in the HTMLElement interface. */
7482interface HTMLMetaElement extends HTMLElement {
7483    /** Gets or sets meta-information to associate with httpEquiv or name. */
7484    content: string;
7485    /** Gets or sets information used to bind the value of a content attribute of a meta element to an HTTP response header. */
7486    httpEquiv: string;
7487    media: string;
7488    /** Sets or retrieves the value specified in the content attribute of the meta object. */
7489    name: string;
7490    /**
7491     * Sets or retrieves a scheme to be used in interpreting the value of a property specified for the object.
7492     * @deprecated
7493     */
7494    scheme: string;
7495    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMetaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7496    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7497    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMetaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7498    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7499}
7500
7501declare var HTMLMetaElement: {
7502    prototype: HTMLMetaElement;
7503    new(): HTMLMetaElement;
7504};
7505
7506/** The HTML <meter> elements expose the HTMLMeterElement interface, which provides special properties and methods (beyond the HTMLElement object interface they also have available to them by inheritance) for manipulating the layout and presentation of <meter> elements. */
7507interface HTMLMeterElement extends HTMLElement {
7508    high: number;
7509    readonly labels: NodeListOf<HTMLLabelElement>;
7510    low: number;
7511    max: number;
7512    min: number;
7513    optimum: number;
7514    value: number;
7515    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMeterElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7516    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7517    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMeterElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7518    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7519}
7520
7521declare var HTMLMeterElement: {
7522    prototype: HTMLMeterElement;
7523    new(): HTMLMeterElement;
7524};
7525
7526/** Provides special properties (beyond the regular methods and properties available through the HTMLElement interface they also have available to them by inheritance) for manipulating modification elements, that is <del> and <ins>. */
7527interface HTMLModElement extends HTMLElement {
7528    /** Sets or retrieves reference information about the object. */
7529    cite: string;
7530    /** Sets or retrieves the date and time of a modification to the object. */
7531    dateTime: string;
7532    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLModElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7533    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7534    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLModElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7535    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7536}
7537
7538declare var HTMLModElement: {
7539    prototype: HTMLModElement;
7540    new(): HTMLModElement;
7541};
7542
7543/** Provides special properties (beyond those defined on the regular HTMLElement interface it also has available to it by inheritance) for manipulating ordered list elements. */
7544interface HTMLOListElement extends HTMLElement {
7545    /** @deprecated */
7546    compact: boolean;
7547    reversed: boolean;
7548    /** The starting number. */
7549    start: number;
7550    type: string;
7551    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7552    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7553    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7554    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7555}
7556
7557declare var HTMLOListElement: {
7558    prototype: HTMLOListElement;
7559    new(): HTMLOListElement;
7560};
7561
7562/** Provides special properties and methods (beyond those on the HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of <object> element, representing external resources. */
7563interface HTMLObjectElement extends HTMLElement {
7564    /** @deprecated */
7565    align: string;
7566    /**
7567     * Sets or retrieves a character string that can be used to implement your own archive functionality for the object.
7568     * @deprecated
7569     */
7570    archive: string;
7571    /** @deprecated */
7572    border: string;
7573    /**
7574     * Sets or retrieves the URL of the file containing the compiled Java class.
7575     * @deprecated
7576     */
7577    code: string;
7578    /**
7579     * Sets or retrieves the URL of the component.
7580     * @deprecated
7581     */
7582    codeBase: string;
7583    /**
7584     * Sets or retrieves the Internet media type for the code associated with the object.
7585     * @deprecated
7586     */
7587    codeType: string;
7588    /** Retrieves the document object of the page or frame. */
7589    readonly contentDocument: Document | null;
7590    readonly contentWindow: WindowProxy | null;
7591    /** Sets or retrieves the URL that references the data of the object. */
7592    data: string;
7593    /** @deprecated */
7594    declare: boolean;
7595    /** Retrieves a reference to the form that the object is embedded in. */
7596    readonly form: HTMLFormElement | null;
7597    /** Sets or retrieves the height of the object. */
7598    height: string;
7599    /** @deprecated */
7600    hspace: number;
7601    /** Sets or retrieves the name of the object. */
7602    name: string;
7603    /**
7604     * Sets or retrieves a message to be displayed while an object is loading.
7605     * @deprecated
7606     */
7607    standby: string;
7608    /** Sets or retrieves the MIME type of the object. */
7609    type: string;
7610    /** Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map. */
7611    useMap: string;
7612    /** Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */
7613    readonly validationMessage: string;
7614    /** Returns a  ValidityState object that represents the validity states of an element. */
7615    readonly validity: ValidityState;
7616    /** @deprecated */
7617    vspace: number;
7618    /** Sets or retrieves the width of the object. */
7619    width: string;
7620    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */
7621    readonly willValidate: boolean;
7622    /** Returns whether a form will validate when it is submitted, without having to submit it. */
7623    checkValidity(): boolean;
7624    getSVGDocument(): Document | null;
7625    reportValidity(): boolean;
7626    /**
7627     * Sets a custom error message that is displayed when a form is submitted.
7628     * @param error Sets a custom error message that is displayed when a form is submitted.
7629     */
7630    setCustomValidity(error: string): void;
7631    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLObjectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7632    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7633    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLObjectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7634    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7635}
7636
7637declare var HTMLObjectElement: {
7638    prototype: HTMLObjectElement;
7639    new(): HTMLObjectElement;
7640};
7641
7642/** Provides special properties and methods (beyond the regular HTMLElement object interface they also have available to them by inheritance) for manipulating the layout and presentation of <optgroup> elements. */
7643interface HTMLOptGroupElement extends HTMLElement {
7644    disabled: boolean;
7645    /** Sets or retrieves a value that you can use to implement your own label functionality for the object. */
7646    label: string;
7647    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptGroupElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7648    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7649    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptGroupElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7650    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7651}
7652
7653declare var HTMLOptGroupElement: {
7654    prototype: HTMLOptGroupElement;
7655    new(): HTMLOptGroupElement;
7656};
7657
7658/** <option> elements and inherits all classes and methods of the HTMLElement interface. */
7659interface HTMLOptionElement extends HTMLElement {
7660    /** Sets or retrieves the status of an option. */
7661    defaultSelected: boolean;
7662    disabled: boolean;
7663    /** Retrieves a reference to the form that the object is embedded in. */
7664    readonly form: HTMLFormElement | null;
7665    /** Sets or retrieves the ordinal position of an option in a list box. */
7666    readonly index: number;
7667    /** Sets or retrieves a value that you can use to implement your own label functionality for the object. */
7668    label: string;
7669    /** Sets or retrieves whether the option in the list box is the default item. */
7670    selected: boolean;
7671    /** Sets or retrieves the text string specified by the option tag. */
7672    text: string;
7673    /** Sets or retrieves the value which is returned to the server when the form control is submitted. */
7674    value: string;
7675    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7676    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7677    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7678    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7679}
7680
7681declare var HTMLOptionElement: {
7682    prototype: HTMLOptionElement;
7683    new(): HTMLOptionElement;
7684};
7685
7686/** HTMLOptionsCollection is an interface representing a collection of HTML option elements (in document order) and offers methods and properties for traversing the list as well as optionally altering its items. This type is returned solely by the "options" property of select. */
7687interface HTMLOptionsCollection extends HTMLCollectionOf<HTMLOptionElement> {
7688    /**
7689     * Returns the number of elements in the collection.
7690     *
7691     * When set to a smaller number, truncates the number of option elements in the corresponding container.
7692     *
7693     * When set to a greater number, adds new blank option elements to that container.
7694     */
7695    length: number;
7696    /**
7697     * Returns the index of the first selected item, if any, or −1 if there is no selected item.
7698     *
7699     * Can be set, to change the selection.
7700     */
7701    selectedIndex: number;
7702    /**
7703     * Inserts element before the node given by before.
7704     *
7705     * The before argument can be a number, in which case element is inserted before the item with that number, or an element from the collection, in which case element is inserted before that element.
7706     *
7707     * If before is omitted, null, or a number out of range, then element will be added at the end of the list.
7708     *
7709     * This method will throw a "HierarchyRequestError" DOMException if element is an ancestor of the element into which it is to be inserted.
7710     */
7711    add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number | null): void;
7712    /** Removes the item with index index from the collection. */
7713    remove(index: number): void;
7714}
7715
7716declare var HTMLOptionsCollection: {
7717    prototype: HTMLOptionsCollection;
7718    new(): HTMLOptionsCollection;
7719};
7720
7721interface HTMLOrSVGElement {
7722    autofocus: boolean;
7723    readonly dataset: DOMStringMap;
7724    nonce?: string;
7725    tabIndex: number;
7726    blur(): void;
7727    focus(options?: FocusOptions): void;
7728}
7729
7730/** Provides properties and methods (beyond those inherited from HTMLElement) for manipulating the layout and presentation of <output> elements. */
7731interface HTMLOutputElement extends HTMLElement {
7732    defaultValue: string;
7733    readonly form: HTMLFormElement | null;
7734    readonly htmlFor: DOMTokenList;
7735    readonly labels: NodeListOf<HTMLLabelElement>;
7736    name: string;
7737    /** Returns the string "output". */
7738    readonly type: string;
7739    readonly validationMessage: string;
7740    readonly validity: ValidityState;
7741    /**
7742     * Returns the element's current value.
7743     *
7744     * Can be set, to change the value.
7745     */
7746    value: string;
7747    readonly willValidate: boolean;
7748    checkValidity(): boolean;
7749    reportValidity(): boolean;
7750    setCustomValidity(error: string): void;
7751    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOutputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7752    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7753    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOutputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7754    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7755}
7756
7757declare var HTMLOutputElement: {
7758    prototype: HTMLOutputElement;
7759    new(): HTMLOutputElement;
7760};
7761
7762/** Provides special properties (beyond those of the regular HTMLElement object interface it inherits) for manipulating <p> elements. */
7763interface HTMLParagraphElement extends HTMLElement {
7764    /**
7765     * Sets or retrieves how the object is aligned with adjacent text.
7766     * @deprecated
7767     */
7768    align: string;
7769    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParagraphElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7770    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7771    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParagraphElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7772    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7773}
7774
7775declare var HTMLParagraphElement: {
7776    prototype: HTMLParagraphElement;
7777    new(): HTMLParagraphElement;
7778};
7779
7780/**
7781 * Provides special properties (beyond those of the regular HTMLElement object interface it inherits) for manipulating <param> elements, representing a pair of a key and a value that acts as a parameter for an <object> element.
7782 * @deprecated
7783 */
7784interface HTMLParamElement extends HTMLElement {
7785    /**
7786     * Sets or retrieves the name of an input parameter for an element.
7787     * @deprecated
7788     */
7789    name: string;
7790    /**
7791     * Sets or retrieves the content type of the resource designated by the value attribute.
7792     * @deprecated
7793     */
7794    type: string;
7795    /**
7796     * Sets or retrieves the value of an input parameter for an element.
7797     * @deprecated
7798     */
7799    value: string;
7800    /**
7801     * Sets or retrieves the data type of the value attribute.
7802     * @deprecated
7803     */
7804    valueType: string;
7805    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParamElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7806    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7807    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParamElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7808    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7809}
7810
7811/** @deprecated */
7812declare var HTMLParamElement: {
7813    prototype: HTMLParamElement;
7814    new(): HTMLParamElement;
7815};
7816
7817/** A <picture> HTML element. It doesn't implement specific properties or methods. */
7818interface HTMLPictureElement extends HTMLElement {
7819    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPictureElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7820    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7821    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPictureElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7822    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7823}
7824
7825declare var HTMLPictureElement: {
7826    prototype: HTMLPictureElement;
7827    new(): HTMLPictureElement;
7828};
7829
7830/** Exposes specific properties and methods (beyond those of the HTMLElement interface it also has available to it by inheritance) for manipulating a block of preformatted text (<pre>). */
7831interface HTMLPreElement extends HTMLElement {
7832    /**
7833     * Sets or gets a value that you can use to implement your own width functionality for the object.
7834     * @deprecated
7835     */
7836    width: number;
7837    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPreElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7838    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7839    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPreElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7840    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7841}
7842
7843declare var HTMLPreElement: {
7844    prototype: HTMLPreElement;
7845    new(): HTMLPreElement;
7846};
7847
7848/** Provides special properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of <progress> elements. */
7849interface HTMLProgressElement extends HTMLElement {
7850    readonly labels: NodeListOf<HTMLLabelElement>;
7851    /** Defines the maximum, or "done" value for a progress element. */
7852    max: number;
7853    /** Returns the quotient of value/max when the value attribute is set (determinate progress bar), or -1 when the value attribute is missing (indeterminate progress bar). */
7854    readonly position: number;
7855    /** Sets or gets the current value of a progress element. The value must be a non-negative number between 0 and the max value. */
7856    value: number;
7857    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLProgressElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7858    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7859    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLProgressElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7860    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7861}
7862
7863declare var HTMLProgressElement: {
7864    prototype: HTMLProgressElement;
7865    new(): HTMLProgressElement;
7866};
7867
7868/** Provides special properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating quoting elements, like <blockquote> and <q>, but not the <cite> element. */
7869interface HTMLQuoteElement extends HTMLElement {
7870    /** Sets or retrieves reference information about the object. */
7871    cite: string;
7872    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLQuoteElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7873    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7874    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLQuoteElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7875    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7876}
7877
7878declare var HTMLQuoteElement: {
7879    prototype: HTMLQuoteElement;
7880    new(): HTMLQuoteElement;
7881};
7882
7883/** HTML <script> elements expose the HTMLScriptElement interface, which provides special properties and methods for manipulating the behavior and execution of <script> elements (beyond the inherited HTMLElement interface). */
7884interface HTMLScriptElement extends HTMLElement {
7885    async: boolean;
7886    /**
7887     * Sets or retrieves the character set used to encode the object.
7888     * @deprecated
7889     */
7890    charset: string;
7891    crossOrigin: string | null;
7892    /** Sets or retrieves the status of the script. */
7893    defer: boolean;
7894    /**
7895     * Sets or retrieves the event for which the script is written.
7896     * @deprecated
7897     */
7898    event: string;
7899    /**
7900     * Sets or retrieves the object that is bound to the event script.
7901     * @deprecated
7902     */
7903    htmlFor: string;
7904    integrity: string;
7905    noModule: boolean;
7906    referrerPolicy: string;
7907    /** Retrieves the URL to an external file that contains the source code or data. */
7908    src: string;
7909    /** Retrieves or sets the text of the object as a string. */
7910    text: string;
7911    /** Sets or retrieves the MIME type for the associated scripting engine. */
7912    type: string;
7913    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLScriptElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7914    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7915    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLScriptElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7916    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7917}
7918
7919declare var HTMLScriptElement: {
7920    prototype: HTMLScriptElement;
7921    new(): HTMLScriptElement;
7922    supports(type: string): boolean;
7923};
7924
7925/** A <select> HTML Element. These elements also share all of the properties and methods of other HTML elements via the HTMLElement interface. */
7926interface HTMLSelectElement extends HTMLElement {
7927    autocomplete: string;
7928    disabled: boolean;
7929    /** Retrieves a reference to the form that the object is embedded in. */
7930    readonly form: HTMLFormElement | null;
7931    readonly labels: NodeListOf<HTMLLabelElement>;
7932    /** Sets or retrieves the number of objects in a collection. */
7933    length: number;
7934    /** Sets or retrieves the Boolean value indicating whether multiple items can be selected from a list. */
7935    multiple: boolean;
7936    /** Sets or retrieves the name of the object. */
7937    name: string;
7938    /** Returns an HTMLOptionsCollection of the list of options. */
7939    readonly options: HTMLOptionsCollection;
7940    /** When present, marks an element that can't be submitted without a value. */
7941    required: boolean;
7942    /** Sets or retrieves the index of the selected option in a select object. */
7943    selectedIndex: number;
7944    readonly selectedOptions: HTMLCollectionOf<HTMLOptionElement>;
7945    /** Sets or retrieves the number of rows in the list box. */
7946    size: number;
7947    /** Retrieves the type of select control based on the value of the MULTIPLE attribute. */
7948    readonly type: string;
7949    /** Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */
7950    readonly validationMessage: string;
7951    /** Returns a  ValidityState object that represents the validity states of an element. */
7952    readonly validity: ValidityState;
7953    /** Sets or retrieves the value which is returned to the server when the form control is submitted. */
7954    value: string;
7955    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */
7956    readonly willValidate: boolean;
7957    /**
7958     * Adds an element to the areas, controlRange, or options collection.
7959     * @param element Variant of type Number that specifies the index position in the collection where the element is placed. If no value is given, the method places the element at the end of the collection.
7960     * @param before Variant of type Object that specifies an element to insert before, or null to append the object to the collection.
7961     */
7962    add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number | null): void;
7963    /** Returns whether a form will validate when it is submitted, without having to submit it. */
7964    checkValidity(): boolean;
7965    /**
7966     * Retrieves a select object or an object from an options collection.
7967     * @param name Variant of type Number or String that specifies the object or collection to retrieve. If this parameter is an integer, it is the zero-based index of the object. If this parameter is a string, all objects with matching name or id properties are retrieved, and a collection is returned if more than one match is made.
7968     * @param index Variant of type Number that specifies the zero-based index of the object to retrieve when a collection is returned.
7969     */
7970    item(index: number): HTMLOptionElement | null;
7971    /**
7972     * Retrieves a select object or an object from an options collection.
7973     * @param namedItem A String that specifies the name or id property of the object to retrieve. A collection is returned if more than one match is made.
7974     */
7975    namedItem(name: string): HTMLOptionElement | null;
7976    /**
7977     * Removes an element from the collection.
7978     * @param index Number that specifies the zero-based index of the element to remove from the collection.
7979     */
7980    remove(): void;
7981    remove(index: number): void;
7982    reportValidity(): boolean;
7983    /**
7984     * Sets a custom error message that is displayed when a form is submitted.
7985     * @param error Sets a custom error message that is displayed when a form is submitted.
7986     */
7987    setCustomValidity(error: string): void;
7988    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSelectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7989    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7990    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSelectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7991    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7992    [name: number]: HTMLOptionElement | HTMLOptGroupElement;
7993}
7994
7995declare var HTMLSelectElement: {
7996    prototype: HTMLSelectElement;
7997    new(): HTMLSelectElement;
7998};
7999
8000interface HTMLSlotElement extends HTMLElement {
8001    name: string;
8002    assign(...nodes: (Element | Text)[]): void;
8003    assignedElements(options?: AssignedNodesOptions): Element[];
8004    assignedNodes(options?: AssignedNodesOptions): Node[];
8005    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSlotElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8006    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8007    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSlotElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8008    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8009}
8010
8011declare var HTMLSlotElement: {
8012    prototype: HTMLSlotElement;
8013    new(): HTMLSlotElement;
8014};
8015
8016/** Provides special properties (beyond the regular HTMLElement object interface it also has available to it by inheritance) for manipulating <source> elements. */
8017interface HTMLSourceElement extends HTMLElement {
8018    height: number;
8019    /** Gets or sets the intended media type of the media source. */
8020    media: string;
8021    sizes: string;
8022    /** The address or URL of the a media resource that is to be considered. */
8023    src: string;
8024    srcset: string;
8025    /** Gets or sets the MIME type of a media resource. */
8026    type: string;
8027    width: number;
8028    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSourceElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8029    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8030    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSourceElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8031    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8032}
8033
8034declare var HTMLSourceElement: {
8035    prototype: HTMLSourceElement;
8036    new(): HTMLSourceElement;
8037};
8038
8039/** A <span> element and derives from the HTMLElement interface, but without implementing any additional properties or methods. */
8040interface HTMLSpanElement extends HTMLElement {
8041    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSpanElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8042    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8043    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSpanElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8044    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8045}
8046
8047declare var HTMLSpanElement: {
8048    prototype: HTMLSpanElement;
8049    new(): HTMLSpanElement;
8050};
8051
8052/** A <style> element. It inherits properties and methods from its parent, HTMLElement, and from LinkStyle. */
8053interface HTMLStyleElement extends HTMLElement, LinkStyle {
8054    /** Enables or disables the style sheet. */
8055    disabled: boolean;
8056    /** Sets or retrieves the media type. */
8057    media: string;
8058    /**
8059     * Retrieves the CSS language in which the style sheet is written.
8060     * @deprecated
8061     */
8062    type: string;
8063    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLStyleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8064    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8065    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLStyleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8066    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8067}
8068
8069declare var HTMLStyleElement: {
8070    prototype: HTMLStyleElement;
8071    new(): HTMLStyleElement;
8072};
8073
8074/** Special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating table caption elements. */
8075interface HTMLTableCaptionElement extends HTMLElement {
8076    /**
8077     * Sets or retrieves the alignment of the caption or legend.
8078     * @deprecated
8079     */
8080    align: string;
8081    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCaptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8082    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8083    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCaptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8084    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8085}
8086
8087declare var HTMLTableCaptionElement: {
8088    prototype: HTMLTableCaptionElement;
8089    new(): HTMLTableCaptionElement;
8090};
8091
8092/** Provides special properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of table cells, either header or data cells, in an HTML document. */
8093interface HTMLTableCellElement extends HTMLElement {
8094    /** Sets or retrieves abbreviated text for the object. */
8095    abbr: string;
8096    /**
8097     * Sets or retrieves how the object is aligned with adjacent text.
8098     * @deprecated
8099     */
8100    align: string;
8101    /**
8102     * Sets or retrieves a comma-delimited list of conceptual categories associated with the object.
8103     * @deprecated
8104     */
8105    axis: string;
8106    /** @deprecated */
8107    bgColor: string;
8108    /** Retrieves the position of the object in the cells collection of a row. */
8109    readonly cellIndex: number;
8110    /** @deprecated */
8111    ch: string;
8112    /** @deprecated */
8113    chOff: string;
8114    /** Sets or retrieves the number columns in the table that the object should span. */
8115    colSpan: number;
8116    /** Sets or retrieves a list of header cells that provide information for the object. */
8117    headers: string;
8118    /**
8119     * Sets or retrieves the height of the object.
8120     * @deprecated
8121     */
8122    height: string;
8123    /**
8124     * Sets or retrieves whether the browser automatically performs wordwrap.
8125     * @deprecated
8126     */
8127    noWrap: boolean;
8128    /** Sets or retrieves how many rows in a table the cell should span. */
8129    rowSpan: number;
8130    /** Sets or retrieves the group of cells in a table to which the object's information applies. */
8131    scope: string;
8132    /** @deprecated */
8133    vAlign: string;
8134    /**
8135     * Sets or retrieves the width of the object.
8136     * @deprecated
8137     */
8138    width: string;
8139    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8140    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8141    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8142    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8143}
8144
8145declare var HTMLTableCellElement: {
8146    prototype: HTMLTableCellElement;
8147    new(): HTMLTableCellElement;
8148};
8149
8150/** Provides special properties (beyond the HTMLElement interface it also has available to it inheritance) for manipulating single or grouped table column elements. */
8151interface HTMLTableColElement extends HTMLElement {
8152    /**
8153     * Sets or retrieves the alignment of the object relative to the display or table.
8154     * @deprecated
8155     */
8156    align: string;
8157    /** @deprecated */
8158    ch: string;
8159    /** @deprecated */
8160    chOff: string;
8161    /** Sets or retrieves the number of columns in the group. */
8162    span: number;
8163    /** @deprecated */
8164    vAlign: string;
8165    /**
8166     * Sets or retrieves the width of the object.
8167     * @deprecated
8168     */
8169    width: string;
8170    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableColElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8171    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8172    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableColElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8173    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8174}
8175
8176declare var HTMLTableColElement: {
8177    prototype: HTMLTableColElement;
8178    new(): HTMLTableColElement;
8179};
8180
8181/** @deprecated prefer HTMLTableCellElement */
8182interface HTMLTableDataCellElement extends HTMLTableCellElement {
8183    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableDataCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8184    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8185    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableDataCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8186    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8187}
8188
8189/** Provides special properties and methods (beyond the regular HTMLElement object interface it also has available to it by inheritance) for manipulating the layout and presentation of tables in an HTML document. */
8190interface HTMLTableElement extends HTMLElement {
8191    /**
8192     * Sets or retrieves a value that indicates the table alignment.
8193     * @deprecated
8194     */
8195    align: string;
8196    /** @deprecated */
8197    bgColor: string;
8198    /**
8199     * Sets or retrieves the width of the border to draw around the object.
8200     * @deprecated
8201     */
8202    border: string;
8203    /** Retrieves the caption object of a table. */
8204    caption: HTMLTableCaptionElement | null;
8205    /**
8206     * Sets or retrieves the amount of space between the border of the cell and the content of the cell.
8207     * @deprecated
8208     */
8209    cellPadding: string;
8210    /**
8211     * Sets or retrieves the amount of space between cells in a table.
8212     * @deprecated
8213     */
8214    cellSpacing: string;
8215    /**
8216     * Sets or retrieves the way the border frame around the table is displayed.
8217     * @deprecated
8218     */
8219    frame: string;
8220    /** Sets or retrieves the number of horizontal rows contained in the object. */
8221    readonly rows: HTMLCollectionOf<HTMLTableRowElement>;
8222    /**
8223     * Sets or retrieves which dividing lines (inner borders) are displayed.
8224     * @deprecated
8225     */
8226    rules: string;
8227    /**
8228     * Sets or retrieves a description and/or structure of the object.
8229     * @deprecated
8230     */
8231    summary: string;
8232    /** Retrieves a collection of all tBody objects in the table. Objects in this collection are in source order. */
8233    readonly tBodies: HTMLCollectionOf<HTMLTableSectionElement>;
8234    /** Retrieves the tFoot object of the table. */
8235    tFoot: HTMLTableSectionElement | null;
8236    /** Retrieves the tHead object of the table. */
8237    tHead: HTMLTableSectionElement | null;
8238    /**
8239     * Sets or retrieves the width of the object.
8240     * @deprecated
8241     */
8242    width: string;
8243    /** Creates an empty caption element in the table. */
8244    createCaption(): HTMLTableCaptionElement;
8245    /** Creates an empty tBody element in the table. */
8246    createTBody(): HTMLTableSectionElement;
8247    /** Creates an empty tFoot element in the table. */
8248    createTFoot(): HTMLTableSectionElement;
8249    /** Returns the tHead element object if successful, or null otherwise. */
8250    createTHead(): HTMLTableSectionElement;
8251    /** Deletes the caption element and its contents from the table. */
8252    deleteCaption(): void;
8253    /**
8254     * Removes the specified row (tr) from the element and from the rows collection.
8255     * @param index Number that specifies the zero-based position in the rows collection of the row to remove.
8256     */
8257    deleteRow(index: number): void;
8258    /** Deletes the tFoot element and its contents from the table. */
8259    deleteTFoot(): void;
8260    /** Deletes the tHead element and its contents from the table. */
8261    deleteTHead(): void;
8262    /**
8263     * Creates a new row (tr) in the table, and adds the row to the rows collection.
8264     * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection.
8265     */
8266    insertRow(index?: number): HTMLTableRowElement;
8267    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8268    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8269    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8270    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8271}
8272
8273declare var HTMLTableElement: {
8274    prototype: HTMLTableElement;
8275    new(): HTMLTableElement;
8276};
8277
8278/** @deprecated prefer HTMLTableCellElement */
8279interface HTMLTableHeaderCellElement extends HTMLTableCellElement {
8280    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableHeaderCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8281    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8282    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableHeaderCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8283    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8284}
8285
8286/** Provides special properties and methods (beyond the HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of rows in an HTML table. */
8287interface HTMLTableRowElement extends HTMLElement {
8288    /**
8289     * Sets or retrieves how the object is aligned with adjacent text.
8290     * @deprecated
8291     */
8292    align: string;
8293    /** @deprecated */
8294    bgColor: string;
8295    /** Retrieves a collection of all cells in the table row. */
8296    readonly cells: HTMLCollectionOf<HTMLTableCellElement>;
8297    /** @deprecated */
8298    ch: string;
8299    /** @deprecated */
8300    chOff: string;
8301    /** Retrieves the position of the object in the rows collection for the table. */
8302    readonly rowIndex: number;
8303    /** Retrieves the position of the object in the collection. */
8304    readonly sectionRowIndex: number;
8305    /** @deprecated */
8306    vAlign: string;
8307    /**
8308     * Removes the specified cell from the table row, as well as from the cells collection.
8309     * @param index Number that specifies the zero-based position of the cell to remove from the table row. If no value is provided, the last cell in the cells collection is deleted.
8310     */
8311    deleteCell(index: number): void;
8312    /**
8313     * Creates a new cell in the table row, and adds the cell to the cells collection.
8314     * @param index Number that specifies where to insert the cell in the tr. The default value is -1, which appends the new cell to the end of the cells collection.
8315     */
8316    insertCell(index?: number): HTMLTableCellElement;
8317    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableRowElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8318    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8319    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableRowElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8320    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8321}
8322
8323declare var HTMLTableRowElement: {
8324    prototype: HTMLTableRowElement;
8325    new(): HTMLTableRowElement;
8326};
8327
8328/** Provides special properties and methods (beyond the HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of sections, that is headers, footers and bodies, in an HTML table. */
8329interface HTMLTableSectionElement extends HTMLElement {
8330    /**
8331     * Sets or retrieves a value that indicates the table alignment.
8332     * @deprecated
8333     */
8334    align: string;
8335    /** @deprecated */
8336    ch: string;
8337    /** @deprecated */
8338    chOff: string;
8339    /** Sets or retrieves the number of horizontal rows contained in the object. */
8340    readonly rows: HTMLCollectionOf<HTMLTableRowElement>;
8341    /** @deprecated */
8342    vAlign: string;
8343    /**
8344     * Removes the specified row (tr) from the element and from the rows collection.
8345     * @param index Number that specifies the zero-based position in the rows collection of the row to remove.
8346     */
8347    deleteRow(index: number): void;
8348    /**
8349     * Creates a new row (tr) in the table, and adds the row to the rows collection.
8350     * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection.
8351     */
8352    insertRow(index?: number): HTMLTableRowElement;
8353    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableSectionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8354    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8355    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableSectionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8356    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8357}
8358
8359declare var HTMLTableSectionElement: {
8360    prototype: HTMLTableSectionElement;
8361    new(): HTMLTableSectionElement;
8362};
8363
8364/** Enables access to the contents of an HTML <template> element. */
8365interface HTMLTemplateElement extends HTMLElement {
8366    /** Returns the template contents (a DocumentFragment). */
8367    readonly content: DocumentFragment;
8368    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTemplateElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8369    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8370    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTemplateElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8371    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8372}
8373
8374declare var HTMLTemplateElement: {
8375    prototype: HTMLTemplateElement;
8376    new(): HTMLTemplateElement;
8377};
8378
8379/** Provides special properties and methods for manipulating the layout and presentation of <textarea> elements. */
8380interface HTMLTextAreaElement extends HTMLElement {
8381    autocomplete: string;
8382    /** Sets or retrieves the width of the object. */
8383    cols: number;
8384    /** Sets or retrieves the initial contents of the object. */
8385    defaultValue: string;
8386    dirName: string;
8387    disabled: boolean;
8388    /** Retrieves a reference to the form that the object is embedded in. */
8389    readonly form: HTMLFormElement | null;
8390    readonly labels: NodeListOf<HTMLLabelElement>;
8391    /** Sets or retrieves the maximum number of characters that the user can enter in a text control. */
8392    maxLength: number;
8393    minLength: number;
8394    /** Sets or retrieves the name of the object. */
8395    name: string;
8396    /** Gets or sets a text string that is displayed in an input field as a hint or prompt to users as the format or type of information they need to enter.The text appears in an input field until the user puts focus on the field. */
8397    placeholder: string;
8398    /** Sets or retrieves the value indicated whether the content of the object is read-only. */
8399    readOnly: boolean;
8400    /** When present, marks an element that can't be submitted without a value. */
8401    required: boolean;
8402    /** Sets or retrieves the number of horizontal rows contained in the object. */
8403    rows: number;
8404    selectionDirection: "forward" | "backward" | "none";
8405    /** Gets or sets the end position or offset of a text selection. */
8406    selectionEnd: number;
8407    /** Gets or sets the starting position or offset of a text selection. */
8408    selectionStart: number;
8409    readonly textLength: number;
8410    /** Retrieves the type of control. */
8411    readonly type: string;
8412    /** Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */
8413    readonly validationMessage: string;
8414    /** Returns a  ValidityState object that represents the validity states of an element. */
8415    readonly validity: ValidityState;
8416    /** Retrieves or sets the text in the entry field of the textArea element. */
8417    value: string;
8418    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */
8419    readonly willValidate: boolean;
8420    /** Sets or retrieves how to handle wordwrapping in the object. */
8421    wrap: string;
8422    /** Returns whether a form will validate when it is submitted, without having to submit it. */
8423    checkValidity(): boolean;
8424    reportValidity(): boolean;
8425    /** Highlights the input area of a form element. */
8426    select(): void;
8427    /**
8428     * Sets a custom error message that is displayed when a form is submitted.
8429     * @param error Sets a custom error message that is displayed when a form is submitted.
8430     */
8431    setCustomValidity(error: string): void;
8432    setRangeText(replacement: string): void;
8433    setRangeText(replacement: string, start: number, end: number, selectionMode?: SelectionMode): void;
8434    /**
8435     * Sets the start and end positions of a selection in a text field.
8436     * @param start The offset into the text field for the start of the selection.
8437     * @param end The offset into the text field for the end of the selection.
8438     * @param direction The direction in which the selection is performed.
8439     */
8440    setSelectionRange(start: number | null, end: number | null, direction?: "forward" | "backward" | "none"): void;
8441    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTextAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8442    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8443    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTextAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8444    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8445}
8446
8447declare var HTMLTextAreaElement: {
8448    prototype: HTMLTextAreaElement;
8449    new(): HTMLTextAreaElement;
8450};
8451
8452/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <time> elements. */
8453interface HTMLTimeElement extends HTMLElement {
8454    dateTime: string;
8455    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTimeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8456    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8457    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTimeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8458    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8459}
8460
8461declare var HTMLTimeElement: {
8462    prototype: HTMLTimeElement;
8463    new(): HTMLTimeElement;
8464};
8465
8466/** Contains the title for a document. This element inherits all of the properties and methods of the HTMLElement interface. */
8467interface HTMLTitleElement extends HTMLElement {
8468    /** Retrieves or sets the text of the object as a string. */
8469    text: string;
8470    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTitleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8471    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8472    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTitleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8473    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8474}
8475
8476declare var HTMLTitleElement: {
8477    prototype: HTMLTitleElement;
8478    new(): HTMLTitleElement;
8479};
8480
8481/** The HTMLTrackElement */
8482interface HTMLTrackElement extends HTMLElement {
8483    default: boolean;
8484    kind: string;
8485    label: string;
8486    readonly readyState: number;
8487    src: string;
8488    srclang: string;
8489    /** Returns the TextTrack object corresponding to the text track of the track element. */
8490    readonly track: TextTrack;
8491    readonly ERROR: number;
8492    readonly LOADED: number;
8493    readonly LOADING: number;
8494    readonly NONE: number;
8495    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTrackElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8496    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8497    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTrackElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8498    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8499}
8500
8501declare var HTMLTrackElement: {
8502    prototype: HTMLTrackElement;
8503    new(): HTMLTrackElement;
8504    readonly ERROR: number;
8505    readonly LOADED: number;
8506    readonly LOADING: number;
8507    readonly NONE: number;
8508};
8509
8510/** Provides special properties (beyond those defined on the regular HTMLElement interface it also has available to it by inheritance) for manipulating unordered list elements. */
8511interface HTMLUListElement extends HTMLElement {
8512    /** @deprecated */
8513    compact: boolean;
8514    /** @deprecated */
8515    type: string;
8516    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8517    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8518    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8519    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8520}
8521
8522declare var HTMLUListElement: {
8523    prototype: HTMLUListElement;
8524    new(): HTMLUListElement;
8525};
8526
8527/** An invalid HTML element and derives from the HTMLElement interface, but without implementing any additional properties or methods. */
8528interface HTMLUnknownElement extends HTMLElement {
8529    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUnknownElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8530    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8531    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUnknownElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8532    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8533}
8534
8535declare var HTMLUnknownElement: {
8536    prototype: HTMLUnknownElement;
8537    new(): HTMLUnknownElement;
8538};
8539
8540interface HTMLVideoElementEventMap extends HTMLMediaElementEventMap {
8541    "enterpictureinpicture": Event;
8542    "leavepictureinpicture": Event;
8543}
8544
8545/** Provides special properties and methods for manipulating video objects. It also inherits properties and methods of HTMLMediaElement and HTMLElement. */
8546interface HTMLVideoElement extends HTMLMediaElement {
8547    disablePictureInPicture: boolean;
8548    /** Gets or sets the height of the video element. */
8549    height: number;
8550    onenterpictureinpicture: ((this: HTMLVideoElement, ev: Event) => any) | null;
8551    onleavepictureinpicture: ((this: HTMLVideoElement, ev: Event) => any) | null;
8552    /** Gets or sets the playsinline of the video element. for example, On iPhone, video elements will now be allowed to play inline, and will not automatically enter fullscreen mode when playback begins. */
8553    playsInline: boolean;
8554    /** Gets or sets a URL of an image to display, for example, like a movie poster. This can be a still frame from the video, or another image if no video data is available. */
8555    poster: string;
8556    /** Gets the intrinsic height of a video in CSS pixels, or zero if the dimensions are not known. */
8557    readonly videoHeight: number;
8558    /** Gets the intrinsic width of a video in CSS pixels, or zero if the dimensions are not known. */
8559    readonly videoWidth: number;
8560    /** Gets or sets the width of the video element. */
8561    width: number;
8562    cancelVideoFrameCallback(handle: number): void;
8563    getVideoPlaybackQuality(): VideoPlaybackQuality;
8564    requestPictureInPicture(): Promise<PictureInPictureWindow>;
8565    requestVideoFrameCallback(callback: VideoFrameRequestCallback): number;
8566    addEventListener<K extends keyof HTMLVideoElementEventMap>(type: K, listener: (this: HTMLVideoElement, ev: HTMLVideoElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8567    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8568    removeEventListener<K extends keyof HTMLVideoElementEventMap>(type: K, listener: (this: HTMLVideoElement, ev: HTMLVideoElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8569    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8570}
8571
8572declare var HTMLVideoElement: {
8573    prototype: HTMLVideoElement;
8574    new(): HTMLVideoElement;
8575};
8576
8577/** Events that fire when the fragment identifier of the URL has changed. */
8578interface HashChangeEvent extends Event {
8579    /** Returns the URL of the session history entry that is now current. */
8580    readonly newURL: string;
8581    /** Returns the URL of the session history entry that was previously current. */
8582    readonly oldURL: string;
8583}
8584
8585declare var HashChangeEvent: {
8586    prototype: HashChangeEvent;
8587    new(type: string, eventInitDict?: HashChangeEventInit): HashChangeEvent;
8588};
8589
8590/** This Fetch API interface allows you to perform various actions on HTTP request and response headers. These actions include retrieving, setting, adding to, and removing. A Headers object has an associated header list, which is initially empty and consists of zero or more name and value pairs.  You can add to this using methods like append() (see Examples.) In all methods of this interface, header names are matched by case-insensitive byte sequence. */
8591interface Headers {
8592    append(name: string, value: string): void;
8593    delete(name: string): void;
8594    get(name: string): string | null;
8595    has(name: string): boolean;
8596    set(name: string, value: string): void;
8597    forEach(callbackfn: (value: string, key: string, parent: Headers) => void, thisArg?: any): void;
8598}
8599
8600declare var Headers: {
8601    prototype: Headers;
8602    new(init?: HeadersInit): Headers;
8603};
8604
8605/** Allows manipulation of the browser session history, that is the pages visited in the tab or frame that the current page is loaded in. */
8606interface History {
8607    readonly length: number;
8608    scrollRestoration: ScrollRestoration;
8609    readonly state: any;
8610    back(): void;
8611    forward(): void;
8612    go(delta?: number): void;
8613    pushState(data: any, unused: string, url?: string | URL | null): void;
8614    replaceState(data: any, unused: string, url?: string | URL | null): void;
8615}
8616
8617declare var History: {
8618    prototype: History;
8619    new(): History;
8620};
8621
8622/** This IndexedDB API interface represents a cursor for traversing or iterating over multiple records in a database. */
8623interface IDBCursor {
8624    /** Returns the direction ("next", "nextunique", "prev" or "prevunique") of the cursor. */
8625    readonly direction: IDBCursorDirection;
8626    /** Returns the key of the cursor. Throws a "InvalidStateError" DOMException if the cursor is advancing or is finished. */
8627    readonly key: IDBValidKey;
8628    /** Returns the effective key of the cursor. Throws a "InvalidStateError" DOMException if the cursor is advancing or is finished. */
8629    readonly primaryKey: IDBValidKey;
8630    readonly request: IDBRequest;
8631    /** Returns the IDBObjectStore or IDBIndex the cursor was opened from. */
8632    readonly source: IDBObjectStore | IDBIndex;
8633    /** Advances the cursor through the next count records in range. */
8634    advance(count: number): void;
8635    /** Advances the cursor to the next record in range. */
8636    continue(key?: IDBValidKey): void;
8637    /** Advances the cursor to the next record in range matching or after key and primaryKey. Throws an "InvalidAccessError" DOMException if the source is not an index. */
8638    continuePrimaryKey(key: IDBValidKey, primaryKey: IDBValidKey): void;
8639    /**
8640     * Delete the record pointed at by the cursor with a new value.
8641     *
8642     * If successful, request's result will be undefined.
8643     */
8644    delete(): IDBRequest<undefined>;
8645    /**
8646     * Updated the record pointed at by the cursor with a new value.
8647     *
8648     * Throws a "DataError" DOMException if the effective object store uses in-line keys and the key would have changed.
8649     *
8650     * If successful, request's result will be the record's key.
8651     */
8652    update(value: any): IDBRequest<IDBValidKey>;
8653}
8654
8655declare var IDBCursor: {
8656    prototype: IDBCursor;
8657    new(): IDBCursor;
8658};
8659
8660/** This IndexedDB API interface represents a cursor for traversing or iterating over multiple records in a database. It is the same as the IDBCursor, except that it includes the value property. */
8661interface IDBCursorWithValue extends IDBCursor {
8662    /** Returns the cursor's current value. */
8663    readonly value: any;
8664}
8665
8666declare var IDBCursorWithValue: {
8667    prototype: IDBCursorWithValue;
8668    new(): IDBCursorWithValue;
8669};
8670
8671interface IDBDatabaseEventMap {
8672    "abort": Event;
8673    "close": Event;
8674    "error": Event;
8675    "versionchange": IDBVersionChangeEvent;
8676}
8677
8678/** This IndexedDB API interface provides a connection to a database; you can use an IDBDatabase object to open a transaction on your database then create, manipulate, and delete objects (data) in that database. The interface provides the only way to get and manage versions of the database. */
8679interface IDBDatabase extends EventTarget {
8680    /** Returns the name of the database. */
8681    readonly name: string;
8682    /** Returns a list of the names of object stores in the database. */
8683    readonly objectStoreNames: DOMStringList;
8684    onabort: ((this: IDBDatabase, ev: Event) => any) | null;
8685    onclose: ((this: IDBDatabase, ev: Event) => any) | null;
8686    onerror: ((this: IDBDatabase, ev: Event) => any) | null;
8687    onversionchange: ((this: IDBDatabase, ev: IDBVersionChangeEvent) => any) | null;
8688    /** Returns the version of the database. */
8689    readonly version: number;
8690    /** Closes the connection once all running transactions have finished. */
8691    close(): void;
8692    /**
8693     * Creates a new object store with the given name and options and returns a new IDBObjectStore.
8694     *
8695     * Throws a "InvalidStateError" DOMException if not called within an upgrade transaction.
8696     */
8697    createObjectStore(name: string, options?: IDBObjectStoreParameters): IDBObjectStore;
8698    /**
8699     * Deletes the object store with the given name.
8700     *
8701     * Throws a "InvalidStateError" DOMException if not called within an upgrade transaction.
8702     */
8703    deleteObjectStore(name: string): void;
8704    /** Returns a new transaction with the given mode ("readonly" or "readwrite") and scope which can be a single object store name or an array of names. */
8705    transaction(storeNames: string | string[], mode?: IDBTransactionMode, options?: IDBTransactionOptions): IDBTransaction;
8706    addEventListener<K extends keyof IDBDatabaseEventMap>(type: K, listener: (this: IDBDatabase, ev: IDBDatabaseEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8707    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8708    removeEventListener<K extends keyof IDBDatabaseEventMap>(type: K, listener: (this: IDBDatabase, ev: IDBDatabaseEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8709    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8710}
8711
8712declare var IDBDatabase: {
8713    prototype: IDBDatabase;
8714    new(): IDBDatabase;
8715};
8716
8717/** In the following code snippet, we make a request to open a database, and include handlers for the success and error cases. For a full working example, see our To-do Notifications app (view example live.) */
8718interface IDBFactory {
8719    /**
8720     * Compares two values as keys. Returns -1 if key1 precedes key2, 1 if key2 precedes key1, and 0 if the keys are equal.
8721     *
8722     * Throws a "DataError" DOMException if either input is not a valid key.
8723     */
8724    cmp(first: any, second: any): number;
8725    databases(): Promise<IDBDatabaseInfo[]>;
8726    /** Attempts to delete the named database. If the database already exists and there are open connections that don't close in response to a versionchange event, the request will be blocked until all they close. If the request is successful request's result will be null. */
8727    deleteDatabase(name: string): IDBOpenDBRequest;
8728    /** Attempts to open a connection to the named database with the current version, or 1 if it does not already exist. If the request is successful request's result will be the connection. */
8729    open(name: string, version?: number): IDBOpenDBRequest;
8730}
8731
8732declare var IDBFactory: {
8733    prototype: IDBFactory;
8734    new(): IDBFactory;
8735};
8736
8737/** IDBIndex interface of the IndexedDB API provides asynchronous access to an index in a database. An index is a kind of object store for looking up records in another object store, called the referenced object store. You use this interface to retrieve data. */
8738interface IDBIndex {
8739    readonly keyPath: string | string[];
8740    readonly multiEntry: boolean;
8741    /** Returns the name of the index. */
8742    name: string;
8743    /** Returns the IDBObjectStore the index belongs to. */
8744    readonly objectStore: IDBObjectStore;
8745    readonly unique: boolean;
8746    /**
8747     * Retrieves the number of records matching the given key or key range in query.
8748     *
8749     * If successful, request's result will be the count.
8750     */
8751    count(query?: IDBValidKey | IDBKeyRange): IDBRequest<number>;
8752    /**
8753     * Retrieves the value of the first record matching the given key or key range in query.
8754     *
8755     * If successful, request's result will be the value, or undefined if there was no matching record.
8756     */
8757    get(query: IDBValidKey | IDBKeyRange): IDBRequest<any>;
8758    /**
8759     * Retrieves the values of the records matching the given key or key range in query (up to count if given).
8760     *
8761     * If successful, request's result will be an Array of the values.
8762     */
8763    getAll(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<any[]>;
8764    /**
8765     * Retrieves the keys of records matching the given key or key range in query (up to count if given).
8766     *
8767     * If successful, request's result will be an Array of the keys.
8768     */
8769    getAllKeys(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<IDBValidKey[]>;
8770    /**
8771     * Retrieves the key of the first record matching the given key or key range in query.
8772     *
8773     * If successful, request's result will be the key, or undefined if there was no matching record.
8774     */
8775    getKey(query: IDBValidKey | IDBKeyRange): IDBRequest<IDBValidKey | undefined>;
8776    /**
8777     * Opens a cursor over the records matching query, ordered by direction. If query is null, all records in index are matched.
8778     *
8779     * If successful, request's result will be an IDBCursorWithValue, or null if there were no matching records.
8780     */
8781    openCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursorWithValue | null>;
8782    /**
8783     * Opens a cursor with key only flag set over the records matching query, ordered by direction. If query is null, all records in index are matched.
8784     *
8785     * If successful, request's result will be an IDBCursor, or null if there were no matching records.
8786     */
8787    openKeyCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursor | null>;
8788}
8789
8790declare var IDBIndex: {
8791    prototype: IDBIndex;
8792    new(): IDBIndex;
8793};
8794
8795/** A key range can be a single value or a range with upper and lower bounds or endpoints. If the key range has both upper and lower bounds, then it is bounded; if it has no bounds, it is unbounded. A bounded key range can either be open (the endpoints are excluded) or closed (the endpoints are included). To retrieve all keys within a certain range, you can use the following code constructs: */
8796interface IDBKeyRange {
8797    /** Returns lower bound, or undefined if none. */
8798    readonly lower: any;
8799    /** Returns true if the lower open flag is set, and false otherwise. */
8800    readonly lowerOpen: boolean;
8801    /** Returns upper bound, or undefined if none. */
8802    readonly upper: any;
8803    /** Returns true if the upper open flag is set, and false otherwise. */
8804    readonly upperOpen: boolean;
8805    /** Returns true if key is included in the range, and false otherwise. */
8806    includes(key: any): boolean;
8807}
8808
8809declare var IDBKeyRange: {
8810    prototype: IDBKeyRange;
8811    new(): IDBKeyRange;
8812    /** Returns a new IDBKeyRange spanning from lower to upper. If lowerOpen is true, lower is not included in the range. If upperOpen is true, upper is not included in the range. */
8813    bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange;
8814    /** Returns a new IDBKeyRange starting at key with no upper bound. If open is true, key is not included in the range. */
8815    lowerBound(lower: any, open?: boolean): IDBKeyRange;
8816    /** Returns a new IDBKeyRange spanning only key. */
8817    only(value: any): IDBKeyRange;
8818    /** Returns a new IDBKeyRange with no lower bound and ending at key. If open is true, key is not included in the range. */
8819    upperBound(upper: any, open?: boolean): IDBKeyRange;
8820};
8821
8822/** This example shows a variety of different uses of object stores, from updating the data structure with IDBObjectStore.createIndex inside an onupgradeneeded function, to adding a new item to our object store with IDBObjectStore.add. For a full working example, see our To-do Notifications app (view example live.) */
8823interface IDBObjectStore {
8824    /** Returns true if the store has a key generator, and false otherwise. */
8825    readonly autoIncrement: boolean;
8826    /** Returns a list of the names of indexes in the store. */
8827    readonly indexNames: DOMStringList;
8828    /** Returns the key path of the store, or null if none. */
8829    readonly keyPath: string | string[];
8830    /** Returns the name of the store. */
8831    name: string;
8832    /** Returns the associated transaction. */
8833    readonly transaction: IDBTransaction;
8834    /**
8835     * Adds or updates a record in store with the given value and key.
8836     *
8837     * If the store uses in-line keys and key is specified a "DataError" DOMException will be thrown.
8838     *
8839     * If put() is used, any existing record with the key will be replaced. If add() is used, and if a record with the key already exists the request will fail, with request's error set to a "ConstraintError" DOMException.
8840     *
8841     * If successful, request's result will be the record's key.
8842     */
8843    add(value: any, key?: IDBValidKey): IDBRequest<IDBValidKey>;
8844    /**
8845     * Deletes all records in store.
8846     *
8847     * If successful, request's result will be undefined.
8848     */
8849    clear(): IDBRequest<undefined>;
8850    /**
8851     * Retrieves the number of records matching the given key or key range in query.
8852     *
8853     * If successful, request's result will be the count.
8854     */
8855    count(query?: IDBValidKey | IDBKeyRange): IDBRequest<number>;
8856    /**
8857     * Creates a new index in store with the given name, keyPath and options and returns a new IDBIndex. If the keyPath and options define constraints that cannot be satisfied with the data already in store the upgrade transaction will abort with a "ConstraintError" DOMException.
8858     *
8859     * Throws an "InvalidStateError" DOMException if not called within an upgrade transaction.
8860     */
8861    createIndex(name: string, keyPath: string | string[], options?: IDBIndexParameters): IDBIndex;
8862    /**
8863     * Deletes records in store with the given key or in the given key range in query.
8864     *
8865     * If successful, request's result will be undefined.
8866     */
8867    delete(query: IDBValidKey | IDBKeyRange): IDBRequest<undefined>;
8868    /**
8869     * Deletes the index in store with the given name.
8870     *
8871     * Throws an "InvalidStateError" DOMException if not called within an upgrade transaction.
8872     */
8873    deleteIndex(name: string): void;
8874    /**
8875     * Retrieves the value of the first record matching the given key or key range in query.
8876     *
8877     * If successful, request's result will be the value, or undefined if there was no matching record.
8878     */
8879    get(query: IDBValidKey | IDBKeyRange): IDBRequest<any>;
8880    /**
8881     * Retrieves the values of the records matching the given key or key range in query (up to count if given).
8882     *
8883     * If successful, request's result will be an Array of the values.
8884     */
8885    getAll(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<any[]>;
8886    /**
8887     * Retrieves the keys of records matching the given key or key range in query (up to count if given).
8888     *
8889     * If successful, request's result will be an Array of the keys.
8890     */
8891    getAllKeys(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<IDBValidKey[]>;
8892    /**
8893     * Retrieves the key of the first record matching the given key or key range in query.
8894     *
8895     * If successful, request's result will be the key, or undefined if there was no matching record.
8896     */
8897    getKey(query: IDBValidKey | IDBKeyRange): IDBRequest<IDBValidKey | undefined>;
8898    index(name: string): IDBIndex;
8899    /**
8900     * Opens a cursor over the records matching query, ordered by direction. If query is null, all records in store are matched.
8901     *
8902     * If successful, request's result will be an IDBCursorWithValue pointing at the first matching record, or null if there were no matching records.
8903     */
8904    openCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursorWithValue | null>;
8905    /**
8906     * Opens a cursor with key only flag set over the records matching query, ordered by direction. If query is null, all records in store are matched.
8907     *
8908     * If successful, request's result will be an IDBCursor pointing at the first matching record, or null if there were no matching records.
8909     */
8910    openKeyCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursor | null>;
8911    /**
8912     * Adds or updates a record in store with the given value and key.
8913     *
8914     * If the store uses in-line keys and key is specified a "DataError" DOMException will be thrown.
8915     *
8916     * If put() is used, any existing record with the key will be replaced. If add() is used, and if a record with the key already exists the request will fail, with request's error set to a "ConstraintError" DOMException.
8917     *
8918     * If successful, request's result will be the record's key.
8919     */
8920    put(value: any, key?: IDBValidKey): IDBRequest<IDBValidKey>;
8921}
8922
8923declare var IDBObjectStore: {
8924    prototype: IDBObjectStore;
8925    new(): IDBObjectStore;
8926};
8927
8928interface IDBOpenDBRequestEventMap extends IDBRequestEventMap {
8929    "blocked": IDBVersionChangeEvent;
8930    "upgradeneeded": IDBVersionChangeEvent;
8931}
8932
8933/** Also inherits methods from its parents IDBRequest and EventTarget. */
8934interface IDBOpenDBRequest extends IDBRequest<IDBDatabase> {
8935    onblocked: ((this: IDBOpenDBRequest, ev: IDBVersionChangeEvent) => any) | null;
8936    onupgradeneeded: ((this: IDBOpenDBRequest, ev: IDBVersionChangeEvent) => any) | null;
8937    addEventListener<K extends keyof IDBOpenDBRequestEventMap>(type: K, listener: (this: IDBOpenDBRequest, ev: IDBOpenDBRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8938    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8939    removeEventListener<K extends keyof IDBOpenDBRequestEventMap>(type: K, listener: (this: IDBOpenDBRequest, ev: IDBOpenDBRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8940    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8941}
8942
8943declare var IDBOpenDBRequest: {
8944    prototype: IDBOpenDBRequest;
8945    new(): IDBOpenDBRequest;
8946};
8947
8948interface IDBRequestEventMap {
8949    "error": Event;
8950    "success": Event;
8951}
8952
8953/** The request object does not initially contain any information about the result of the operation, but once information becomes available, an event is fired on the request, and the information becomes available through the properties of the IDBRequest instance. */
8954interface IDBRequest<T = any> extends EventTarget {
8955    /** When a request is completed, returns the error (a DOMException), or null if the request succeeded. Throws a "InvalidStateError" DOMException if the request is still pending. */
8956    readonly error: DOMException | null;
8957    onerror: ((this: IDBRequest<T>, ev: Event) => any) | null;
8958    onsuccess: ((this: IDBRequest<T>, ev: Event) => any) | null;
8959    /** Returns "pending" until a request is complete, then returns "done". */
8960    readonly readyState: IDBRequestReadyState;
8961    /** When a request is completed, returns the result, or undefined if the request failed. Throws a "InvalidStateError" DOMException if the request is still pending. */
8962    readonly result: T;
8963    /** Returns the IDBObjectStore, IDBIndex, or IDBCursor the request was made against, or null if is was an open request. */
8964    readonly source: IDBObjectStore | IDBIndex | IDBCursor;
8965    /** Returns the IDBTransaction the request was made within. If this as an open request, then it returns an upgrade transaction while it is running, or null otherwise. */
8966    readonly transaction: IDBTransaction | null;
8967    addEventListener<K extends keyof IDBRequestEventMap>(type: K, listener: (this: IDBRequest<T>, ev: IDBRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8968    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8969    removeEventListener<K extends keyof IDBRequestEventMap>(type: K, listener: (this: IDBRequest<T>, ev: IDBRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8970    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8971}
8972
8973declare var IDBRequest: {
8974    prototype: IDBRequest;
8975    new(): IDBRequest;
8976};
8977
8978interface IDBTransactionEventMap {
8979    "abort": Event;
8980    "complete": Event;
8981    "error": Event;
8982}
8983
8984interface IDBTransaction extends EventTarget {
8985    /** Returns the transaction's connection. */
8986    readonly db: IDBDatabase;
8987    readonly durability: IDBTransactionDurability;
8988    /** If the transaction was aborted, returns the error (a DOMException) providing the reason. */
8989    readonly error: DOMException | null;
8990    /** Returns the mode the transaction was created with ("readonly" or "readwrite"), or "versionchange" for an upgrade transaction. */
8991    readonly mode: IDBTransactionMode;
8992    /** Returns a list of the names of object stores in the transaction's scope. For an upgrade transaction this is all object stores in the database. */
8993    readonly objectStoreNames: DOMStringList;
8994    onabort: ((this: IDBTransaction, ev: Event) => any) | null;
8995    oncomplete: ((this: IDBTransaction, ev: Event) => any) | null;
8996    onerror: ((this: IDBTransaction, ev: Event) => any) | null;
8997    /** Aborts the transaction. All pending requests will fail with a "AbortError" DOMException and all changes made to the database will be reverted. */
8998    abort(): void;
8999    commit(): void;
9000    /** Returns an IDBObjectStore in the transaction's scope. */
9001    objectStore(name: string): IDBObjectStore;
9002    addEventListener<K extends keyof IDBTransactionEventMap>(type: K, listener: (this: IDBTransaction, ev: IDBTransactionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9003    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9004    removeEventListener<K extends keyof IDBTransactionEventMap>(type: K, listener: (this: IDBTransaction, ev: IDBTransactionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9005    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9006}
9007
9008declare var IDBTransaction: {
9009    prototype: IDBTransaction;
9010    new(): IDBTransaction;
9011};
9012
9013/** This IndexedDB API interface indicates that the version of the database has changed, as the result of an IDBOpenDBRequest.onupgradeneeded event handler function. */
9014interface IDBVersionChangeEvent extends Event {
9015    readonly newVersion: number | null;
9016    readonly oldVersion: number;
9017}
9018
9019declare var IDBVersionChangeEvent: {
9020    prototype: IDBVersionChangeEvent;
9021    new(type: string, eventInitDict?: IDBVersionChangeEventInit): IDBVersionChangeEvent;
9022};
9023
9024/** The IIRFilterNode interface of the Web Audio API is a AudioNode processor which implements a general infinite impulse response (IIR)  filter; this type of filter can be used to implement tone control devices and graphic equalizers as well. It lets the parameters of the filter response be specified, so that it can be tuned as needed. */
9025interface IIRFilterNode extends AudioNode {
9026    getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;
9027}
9028
9029declare var IIRFilterNode: {
9030    prototype: IIRFilterNode;
9031    new(context: BaseAudioContext, options: IIRFilterOptions): IIRFilterNode;
9032};
9033
9034interface IdleDeadline {
9035    readonly didTimeout: boolean;
9036    timeRemaining(): DOMHighResTimeStamp;
9037}
9038
9039declare var IdleDeadline: {
9040    prototype: IdleDeadline;
9041    new(): IdleDeadline;
9042};
9043
9044interface ImageBitmap {
9045    /** Returns the intrinsic height of the image, in CSS pixels. */
9046    readonly height: number;
9047    /** Returns the intrinsic width of the image, in CSS pixels. */
9048    readonly width: number;
9049    /** Releases imageBitmap's underlying bitmap data. */
9050    close(): void;
9051}
9052
9053declare var ImageBitmap: {
9054    prototype: ImageBitmap;
9055    new(): ImageBitmap;
9056};
9057
9058interface ImageBitmapRenderingContext {
9059    /** Returns the canvas element that the context is bound to. */
9060    readonly canvas: HTMLCanvasElement | OffscreenCanvas;
9061    /** Transfers the underlying bitmap data from imageBitmap to context, and the bitmap becomes the contents of the canvas element to which context is bound. */
9062    transferFromImageBitmap(bitmap: ImageBitmap | null): void;
9063}
9064
9065declare var ImageBitmapRenderingContext: {
9066    prototype: ImageBitmapRenderingContext;
9067    new(): ImageBitmapRenderingContext;
9068};
9069
9070/** The underlying pixel data of an area of a <canvas> element. It is created using the ImageData() constructor or creator methods on the CanvasRenderingContext2D object associated with a canvas: createImageData() and getImageData(). It can also be used to set a part of the canvas by using putImageData(). */
9071interface ImageData {
9072    readonly colorSpace: PredefinedColorSpace;
9073    /** Returns the one-dimensional array containing the data in RGBA order, as integers in the range 0 to 255. */
9074    readonly data: Uint8ClampedArray;
9075    /** Returns the actual dimensions of the data in the ImageData object, in pixels. */
9076    readonly height: number;
9077    /** Returns the actual dimensions of the data in the ImageData object, in pixels. */
9078    readonly width: number;
9079}
9080
9081declare var ImageData: {
9082    prototype: ImageData;
9083    new(sw: number, sh: number, settings?: ImageDataSettings): ImageData;
9084    new(data: Uint8ClampedArray, sw: number, sh?: number, settings?: ImageDataSettings): ImageData;
9085};
9086
9087interface InnerHTML {
9088    innerHTML: string;
9089}
9090
9091/** Available only in secure contexts. */
9092interface InputDeviceInfo extends MediaDeviceInfo {
9093}
9094
9095declare var InputDeviceInfo: {
9096    prototype: InputDeviceInfo;
9097    new(): InputDeviceInfo;
9098};
9099
9100interface InputEvent extends UIEvent {
9101    readonly data: string | null;
9102    readonly dataTransfer: DataTransfer | null;
9103    readonly inputType: string;
9104    readonly isComposing: boolean;
9105    getTargetRanges(): StaticRange[];
9106}
9107
9108declare var InputEvent: {
9109    prototype: InputEvent;
9110    new(type: string, eventInitDict?: InputEventInit): InputEvent;
9111};
9112
9113/** provides a way to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport. */
9114interface IntersectionObserver {
9115    readonly root: Element | Document | null;
9116    readonly rootMargin: string;
9117    readonly thresholds: ReadonlyArray<number>;
9118    disconnect(): void;
9119    observe(target: Element): void;
9120    takeRecords(): IntersectionObserverEntry[];
9121    unobserve(target: Element): void;
9122}
9123
9124declare var IntersectionObserver: {
9125    prototype: IntersectionObserver;
9126    new(callback: IntersectionObserverCallback, options?: IntersectionObserverInit): IntersectionObserver;
9127};
9128
9129/** This Intersection Observer API interface describes the intersection between the target element and its root container at a specific moment of transition. */
9130interface IntersectionObserverEntry {
9131    readonly boundingClientRect: DOMRectReadOnly;
9132    readonly intersectionRatio: number;
9133    readonly intersectionRect: DOMRectReadOnly;
9134    readonly isIntersecting: boolean;
9135    readonly rootBounds: DOMRectReadOnly | null;
9136    readonly target: Element;
9137    readonly time: DOMHighResTimeStamp;
9138}
9139
9140declare var IntersectionObserverEntry: {
9141    prototype: IntersectionObserverEntry;
9142    new(intersectionObserverEntryInit: IntersectionObserverEntryInit): IntersectionObserverEntry;
9143};
9144
9145interface KHR_parallel_shader_compile {
9146    readonly COMPLETION_STATUS_KHR: GLenum;
9147}
9148
9149/** KeyboardEvent objects describe a user interaction with the keyboard; each event describes a single interaction between the user and a key (or combination of a key with modifier keys) on the keyboard. */
9150interface KeyboardEvent extends UIEvent {
9151    readonly altKey: boolean;
9152    /** @deprecated */
9153    readonly charCode: number;
9154    readonly code: string;
9155    readonly ctrlKey: boolean;
9156    readonly isComposing: boolean;
9157    readonly key: string;
9158    /** @deprecated */
9159    readonly keyCode: number;
9160    readonly location: number;
9161    readonly metaKey: boolean;
9162    readonly repeat: boolean;
9163    readonly shiftKey: boolean;
9164    getModifierState(keyArg: string): boolean;
9165    /** @deprecated */
9166    initKeyboardEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: Window | null, keyArg?: string, locationArg?: number, ctrlKey?: boolean, altKey?: boolean, shiftKey?: boolean, metaKey?: boolean): void;
9167    readonly DOM_KEY_LOCATION_LEFT: number;
9168    readonly DOM_KEY_LOCATION_NUMPAD: number;
9169    readonly DOM_KEY_LOCATION_RIGHT: number;
9170    readonly DOM_KEY_LOCATION_STANDARD: number;
9171}
9172
9173declare var KeyboardEvent: {
9174    prototype: KeyboardEvent;
9175    new(type: string, eventInitDict?: KeyboardEventInit): KeyboardEvent;
9176    readonly DOM_KEY_LOCATION_LEFT: number;
9177    readonly DOM_KEY_LOCATION_NUMPAD: number;
9178    readonly DOM_KEY_LOCATION_RIGHT: number;
9179    readonly DOM_KEY_LOCATION_STANDARD: number;
9180};
9181
9182interface KeyframeEffect extends AnimationEffect {
9183    composite: CompositeOperation;
9184    iterationComposite: IterationCompositeOperation;
9185    pseudoElement: string | null;
9186    target: Element | null;
9187    getKeyframes(): ComputedKeyframe[];
9188    setKeyframes(keyframes: Keyframe[] | PropertyIndexedKeyframes | null): void;
9189}
9190
9191declare var KeyframeEffect: {
9192    prototype: KeyframeEffect;
9193    new(target: Element | null, keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeEffectOptions): KeyframeEffect;
9194    new(source: KeyframeEffect): KeyframeEffect;
9195};
9196
9197interface LinkStyle {
9198    readonly sheet: CSSStyleSheet | null;
9199}
9200
9201/** The location (URL) of the object it is linked to. Changes done on it are reflected on the object it relates to. Both the Document and Window interface have such a linked Location, accessible via Document.location and Window.location respectively. */
9202interface Location {
9203    /** Returns a DOMStringList object listing the origins of the ancestor browsing contexts, from the parent browsing context to the top-level browsing context. */
9204    readonly ancestorOrigins: DOMStringList;
9205    /**
9206     * Returns the Location object's URL's fragment (includes leading "#" if non-empty).
9207     *
9208     * Can be set, to navigate to the same URL with a changed fragment (ignores leading "#").
9209     */
9210    hash: string;
9211    /**
9212     * Returns the Location object's URL's host and port (if different from the default port for the scheme).
9213     *
9214     * Can be set, to navigate to the same URL with a changed host and port.
9215     */
9216    host: string;
9217    /**
9218     * Returns the Location object's URL's host.
9219     *
9220     * Can be set, to navigate to the same URL with a changed host.
9221     */
9222    hostname: string;
9223    /**
9224     * Returns the Location object's URL.
9225     *
9226     * Can be set, to navigate to the given URL.
9227     */
9228    href: string;
9229    toString(): string;
9230    /** Returns the Location object's URL's origin. */
9231    readonly origin: string;
9232    /**
9233     * Returns the Location object's URL's path.
9234     *
9235     * Can be set, to navigate to the same URL with a changed path.
9236     */
9237    pathname: string;
9238    /**
9239     * Returns the Location object's URL's port.
9240     *
9241     * Can be set, to navigate to the same URL with a changed port.
9242     */
9243    port: string;
9244    /**
9245     * Returns the Location object's URL's scheme.
9246     *
9247     * Can be set, to navigate to the same URL with a changed scheme.
9248     */
9249    protocol: string;
9250    /**
9251     * Returns the Location object's URL's query (includes leading "?" if non-empty).
9252     *
9253     * Can be set, to navigate to the same URL with a changed query (ignores leading "?").
9254     */
9255    search: string;
9256    /** Navigates to the given URL. */
9257    assign(url: string | URL): void;
9258    /** Reloads the current page. */
9259    reload(): void;
9260    /** Removes the current page from the session history and navigates to the given URL. */
9261    replace(url: string | URL): void;
9262}
9263
9264declare var Location: {
9265    prototype: Location;
9266    new(): Location;
9267};
9268
9269/** Available only in secure contexts. */
9270interface Lock {
9271    readonly mode: LockMode;
9272    readonly name: string;
9273}
9274
9275declare var Lock: {
9276    prototype: Lock;
9277    new(): Lock;
9278};
9279
9280/** Available only in secure contexts. */
9281interface LockManager {
9282    query(): Promise<LockManagerSnapshot>;
9283    request(name: string, callback: LockGrantedCallback): Promise<any>;
9284    request(name: string, options: LockOptions, callback: LockGrantedCallback): Promise<any>;
9285}
9286
9287declare var LockManager: {
9288    prototype: LockManager;
9289    new(): LockManager;
9290};
9291
9292interface MathMLElementEventMap extends ElementEventMap, DocumentAndElementEventHandlersEventMap, GlobalEventHandlersEventMap {
9293}
9294
9295interface MathMLElement extends Element, DocumentAndElementEventHandlers, ElementCSSInlineStyle, GlobalEventHandlers, HTMLOrSVGElement {
9296    addEventListener<K extends keyof MathMLElementEventMap>(type: K, listener: (this: MathMLElement, ev: MathMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9297    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9298    removeEventListener<K extends keyof MathMLElementEventMap>(type: K, listener: (this: MathMLElement, ev: MathMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9299    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9300}
9301
9302declare var MathMLElement: {
9303    prototype: MathMLElement;
9304    new(): MathMLElement;
9305};
9306
9307interface MediaCapabilities {
9308    decodingInfo(configuration: MediaDecodingConfiguration): Promise<MediaCapabilitiesDecodingInfo>;
9309    encodingInfo(configuration: MediaEncodingConfiguration): Promise<MediaCapabilitiesEncodingInfo>;
9310}
9311
9312declare var MediaCapabilities: {
9313    prototype: MediaCapabilities;
9314    new(): MediaCapabilities;
9315};
9316
9317/**
9318 * The MediaDevicesInfo interface contains information that describes a single media input or output device.
9319 * Available only in secure contexts.
9320 */
9321interface MediaDeviceInfo {
9322    readonly deviceId: string;
9323    readonly groupId: string;
9324    readonly kind: MediaDeviceKind;
9325    readonly label: string;
9326    toJSON(): any;
9327}
9328
9329declare var MediaDeviceInfo: {
9330    prototype: MediaDeviceInfo;
9331    new(): MediaDeviceInfo;
9332};
9333
9334interface MediaDevicesEventMap {
9335    "devicechange": Event;
9336}
9337
9338/**
9339 * Provides access to connected media input devices like cameras and microphones, as well as screen sharing. In essence, it lets you obtain access to any hardware source of media data.
9340 * Available only in secure contexts.
9341 */
9342interface MediaDevices extends EventTarget {
9343    ondevicechange: ((this: MediaDevices, ev: Event) => any) | null;
9344    enumerateDevices(): Promise<MediaDeviceInfo[]>;
9345    getDisplayMedia(options?: DisplayMediaStreamOptions): Promise<MediaStream>;
9346    getSupportedConstraints(): MediaTrackSupportedConstraints;
9347    getUserMedia(constraints?: MediaStreamConstraints): Promise<MediaStream>;
9348    addEventListener<K extends keyof MediaDevicesEventMap>(type: K, listener: (this: MediaDevices, ev: MediaDevicesEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9349    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9350    removeEventListener<K extends keyof MediaDevicesEventMap>(type: K, listener: (this: MediaDevices, ev: MediaDevicesEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9351    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9352}
9353
9354declare var MediaDevices: {
9355    prototype: MediaDevices;
9356    new(): MediaDevices;
9357};
9358
9359/** A MediaElementSourceNode has no inputs and exactly one output, and is created using the AudioContext.createMediaElementSource method. The amount of channels in the output equals the number of channels of the audio referenced by the HTMLMediaElement used in the creation of the node, or is 1 if the HTMLMediaElement has no audio. */
9360interface MediaElementAudioSourceNode extends AudioNode {
9361    readonly mediaElement: HTMLMediaElement;
9362}
9363
9364declare var MediaElementAudioSourceNode: {
9365    prototype: MediaElementAudioSourceNode;
9366    new(context: AudioContext, options: MediaElementAudioSourceOptions): MediaElementAudioSourceNode;
9367};
9368
9369interface MediaEncryptedEvent extends Event {
9370    readonly initData: ArrayBuffer | null;
9371    readonly initDataType: string;
9372}
9373
9374declare var MediaEncryptedEvent: {
9375    prototype: MediaEncryptedEvent;
9376    new(type: string, eventInitDict?: MediaEncryptedEventInit): MediaEncryptedEvent;
9377};
9378
9379/** An error which occurred while handling media in an HTML media element based on HTMLMediaElement, such as <audio> or <video>. */
9380interface MediaError {
9381    readonly code: number;
9382    readonly message: string;
9383    readonly MEDIA_ERR_ABORTED: number;
9384    readonly MEDIA_ERR_DECODE: number;
9385    readonly MEDIA_ERR_NETWORK: number;
9386    readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number;
9387}
9388
9389declare var MediaError: {
9390    prototype: MediaError;
9391    new(): MediaError;
9392    readonly MEDIA_ERR_ABORTED: number;
9393    readonly MEDIA_ERR_DECODE: number;
9394    readonly MEDIA_ERR_NETWORK: number;
9395    readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number;
9396};
9397
9398/**
9399 * This EncryptedMediaExtensions API interface contains the content and related data when the content decryption module generates a message for the session.
9400 * Available only in secure contexts.
9401 */
9402interface MediaKeyMessageEvent extends Event {
9403    readonly message: ArrayBuffer;
9404    readonly messageType: MediaKeyMessageType;
9405}
9406
9407declare var MediaKeyMessageEvent: {
9408    prototype: MediaKeyMessageEvent;
9409    new(type: string, eventInitDict: MediaKeyMessageEventInit): MediaKeyMessageEvent;
9410};
9411
9412interface MediaKeySessionEventMap {
9413    "keystatuseschange": Event;
9414    "message": MediaKeyMessageEvent;
9415}
9416
9417/**
9418 * This EncryptedMediaExtensions API interface represents a context for message exchange with a content decryption module (CDM).
9419 * Available only in secure contexts.
9420 */
9421interface MediaKeySession extends EventTarget {
9422    readonly closed: Promise<MediaKeySessionClosedReason>;
9423    readonly expiration: number;
9424    readonly keyStatuses: MediaKeyStatusMap;
9425    onkeystatuseschange: ((this: MediaKeySession, ev: Event) => any) | null;
9426    onmessage: ((this: MediaKeySession, ev: MediaKeyMessageEvent) => any) | null;
9427    readonly sessionId: string;
9428    close(): Promise<void>;
9429    generateRequest(initDataType: string, initData: BufferSource): Promise<void>;
9430    load(sessionId: string): Promise<boolean>;
9431    remove(): Promise<void>;
9432    update(response: BufferSource): Promise<void>;
9433    addEventListener<K extends keyof MediaKeySessionEventMap>(type: K, listener: (this: MediaKeySession, ev: MediaKeySessionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9434    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9435    removeEventListener<K extends keyof MediaKeySessionEventMap>(type: K, listener: (this: MediaKeySession, ev: MediaKeySessionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9436    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9437}
9438
9439declare var MediaKeySession: {
9440    prototype: MediaKeySession;
9441    new(): MediaKeySession;
9442};
9443
9444/**
9445 * This EncryptedMediaExtensions API interface is a read-only map of media key statuses by key IDs.
9446 * Available only in secure contexts.
9447 */
9448interface MediaKeyStatusMap {
9449    readonly size: number;
9450    get(keyId: BufferSource): MediaKeyStatus | undefined;
9451    has(keyId: BufferSource): boolean;
9452    forEach(callbackfn: (value: MediaKeyStatus, key: BufferSource, parent: MediaKeyStatusMap) => void, thisArg?: any): void;
9453}
9454
9455declare var MediaKeyStatusMap: {
9456    prototype: MediaKeyStatusMap;
9457    new(): MediaKeyStatusMap;
9458};
9459
9460/**
9461 * This EncryptedMediaExtensions API interface provides access to a Key System for decryption and/or a content protection provider. You can request an instance of this object using the Navigator.requestMediaKeySystemAccess method.
9462 * Available only in secure contexts.
9463 */
9464interface MediaKeySystemAccess {
9465    readonly keySystem: string;
9466    createMediaKeys(): Promise<MediaKeys>;
9467    getConfiguration(): MediaKeySystemConfiguration;
9468}
9469
9470declare var MediaKeySystemAccess: {
9471    prototype: MediaKeySystemAccess;
9472    new(): MediaKeySystemAccess;
9473};
9474
9475/**
9476 * This EncryptedMediaExtensions API interface the represents a set of keys that an associated HTMLMediaElement can use for decryption of media data during playback.
9477 * Available only in secure contexts.
9478 */
9479interface MediaKeys {
9480    createSession(sessionType?: MediaKeySessionType): MediaKeySession;
9481    setServerCertificate(serverCertificate: BufferSource): Promise<boolean>;
9482}
9483
9484declare var MediaKeys: {
9485    prototype: MediaKeys;
9486    new(): MediaKeys;
9487};
9488
9489interface MediaList {
9490    readonly length: number;
9491    mediaText: string;
9492    toString(): string;
9493    appendMedium(medium: string): void;
9494    deleteMedium(medium: string): void;
9495    item(index: number): string | null;
9496    [index: number]: string;
9497}
9498
9499declare var MediaList: {
9500    prototype: MediaList;
9501    new(): MediaList;
9502};
9503
9504interface MediaMetadata {
9505    album: string;
9506    artist: string;
9507    artwork: ReadonlyArray<MediaImage>;
9508    title: string;
9509}
9510
9511declare var MediaMetadata: {
9512    prototype: MediaMetadata;
9513    new(init?: MediaMetadataInit): MediaMetadata;
9514};
9515
9516interface MediaQueryListEventMap {
9517    "change": MediaQueryListEvent;
9518}
9519
9520/** Stores information on a media query applied to a document, and handles sending notifications to listeners when the media query state change (i.e. when the media query test starts or stops evaluating to true). */
9521interface MediaQueryList extends EventTarget {
9522    readonly matches: boolean;
9523    readonly media: string;
9524    onchange: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null;
9525    /** @deprecated */
9526    addListener(callback: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null): void;
9527    /** @deprecated */
9528    removeListener(callback: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null): void;
9529    addEventListener<K extends keyof MediaQueryListEventMap>(type: K, listener: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9530    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9531    removeEventListener<K extends keyof MediaQueryListEventMap>(type: K, listener: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9532    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9533}
9534
9535declare var MediaQueryList: {
9536    prototype: MediaQueryList;
9537    new(): MediaQueryList;
9538};
9539
9540interface MediaQueryListEvent extends Event {
9541    readonly matches: boolean;
9542    readonly media: string;
9543}
9544
9545declare var MediaQueryListEvent: {
9546    prototype: MediaQueryListEvent;
9547    new(type: string, eventInitDict?: MediaQueryListEventInit): MediaQueryListEvent;
9548};
9549
9550interface MediaRecorderEventMap {
9551    "dataavailable": BlobEvent;
9552    "error": Event;
9553    "pause": Event;
9554    "resume": Event;
9555    "start": Event;
9556    "stop": Event;
9557}
9558
9559interface MediaRecorder extends EventTarget {
9560    readonly audioBitsPerSecond: number;
9561    readonly mimeType: string;
9562    ondataavailable: ((this: MediaRecorder, ev: BlobEvent) => any) | null;
9563    onerror: ((this: MediaRecorder, ev: Event) => any) | null;
9564    onpause: ((this: MediaRecorder, ev: Event) => any) | null;
9565    onresume: ((this: MediaRecorder, ev: Event) => any) | null;
9566    onstart: ((this: MediaRecorder, ev: Event) => any) | null;
9567    onstop: ((this: MediaRecorder, ev: Event) => any) | null;
9568    readonly state: RecordingState;
9569    readonly stream: MediaStream;
9570    readonly videoBitsPerSecond: number;
9571    pause(): void;
9572    requestData(): void;
9573    resume(): void;
9574    start(timeslice?: number): void;
9575    stop(): void;
9576    addEventListener<K extends keyof MediaRecorderEventMap>(type: K, listener: (this: MediaRecorder, ev: MediaRecorderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9577    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9578    removeEventListener<K extends keyof MediaRecorderEventMap>(type: K, listener: (this: MediaRecorder, ev: MediaRecorderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9579    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9580}
9581
9582declare var MediaRecorder: {
9583    prototype: MediaRecorder;
9584    new(stream: MediaStream, options?: MediaRecorderOptions): MediaRecorder;
9585    isTypeSupported(type: string): boolean;
9586};
9587
9588interface MediaSession {
9589    metadata: MediaMetadata | null;
9590    playbackState: MediaSessionPlaybackState;
9591    setActionHandler(action: MediaSessionAction, handler: MediaSessionActionHandler | null): void;
9592    setPositionState(state?: MediaPositionState): void;
9593}
9594
9595declare var MediaSession: {
9596    prototype: MediaSession;
9597    new(): MediaSession;
9598};
9599
9600interface MediaSourceEventMap {
9601    "sourceclose": Event;
9602    "sourceended": Event;
9603    "sourceopen": Event;
9604}
9605
9606/** This Media Source Extensions API interface represents a source of media data for an HTMLMediaElement object. A MediaSource object can be attached to a HTMLMediaElement to be played in the user agent. */
9607interface MediaSource extends EventTarget {
9608    readonly activeSourceBuffers: SourceBufferList;
9609    duration: number;
9610    onsourceclose: ((this: MediaSource, ev: Event) => any) | null;
9611    onsourceended: ((this: MediaSource, ev: Event) => any) | null;
9612    onsourceopen: ((this: MediaSource, ev: Event) => any) | null;
9613    readonly readyState: ReadyState;
9614    readonly sourceBuffers: SourceBufferList;
9615    addSourceBuffer(type: string): SourceBuffer;
9616    clearLiveSeekableRange(): void;
9617    endOfStream(error?: EndOfStreamError): void;
9618    removeSourceBuffer(sourceBuffer: SourceBuffer): void;
9619    setLiveSeekableRange(start: number, end: number): void;
9620    addEventListener<K extends keyof MediaSourceEventMap>(type: K, listener: (this: MediaSource, ev: MediaSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9621    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9622    removeEventListener<K extends keyof MediaSourceEventMap>(type: K, listener: (this: MediaSource, ev: MediaSourceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9623    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9624}
9625
9626declare var MediaSource: {
9627    prototype: MediaSource;
9628    new(): MediaSource;
9629    isTypeSupported(type: string): boolean;
9630};
9631
9632interface MediaStreamEventMap {
9633    "addtrack": MediaStreamTrackEvent;
9634    "removetrack": MediaStreamTrackEvent;
9635}
9636
9637/** A stream of media content. A stream consists of several tracks such as video or audio tracks. Each track is specified as an instance of MediaStreamTrack. */
9638interface MediaStream extends EventTarget {
9639    readonly active: boolean;
9640    readonly id: string;
9641    onaddtrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
9642    onremovetrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
9643    addTrack(track: MediaStreamTrack): void;
9644    clone(): MediaStream;
9645    getAudioTracks(): MediaStreamTrack[];
9646    getTrackById(trackId: string): MediaStreamTrack | null;
9647    getTracks(): MediaStreamTrack[];
9648    getVideoTracks(): MediaStreamTrack[];
9649    removeTrack(track: MediaStreamTrack): void;
9650    addEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9651    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9652    removeEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9653    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9654}
9655
9656declare var MediaStream: {
9657    prototype: MediaStream;
9658    new(): MediaStream;
9659    new(stream: MediaStream): MediaStream;
9660    new(tracks: MediaStreamTrack[]): MediaStream;
9661};
9662
9663interface MediaStreamAudioDestinationNode extends AudioNode {
9664    readonly stream: MediaStream;
9665}
9666
9667declare var MediaStreamAudioDestinationNode: {
9668    prototype: MediaStreamAudioDestinationNode;
9669    new(context: AudioContext, options?: AudioNodeOptions): MediaStreamAudioDestinationNode;
9670};
9671
9672/** A type of AudioNode which operates as an audio source whose media is received from a MediaStream obtained using the WebRTC or Media Capture and Streams APIs. */
9673interface MediaStreamAudioSourceNode extends AudioNode {
9674    readonly mediaStream: MediaStream;
9675}
9676
9677declare var MediaStreamAudioSourceNode: {
9678    prototype: MediaStreamAudioSourceNode;
9679    new(context: AudioContext, options: MediaStreamAudioSourceOptions): MediaStreamAudioSourceNode;
9680};
9681
9682interface MediaStreamTrackEventMap {
9683    "ended": Event;
9684    "mute": Event;
9685    "unmute": Event;
9686}
9687
9688/** A single media track within a stream; typically, these are audio or video tracks, but other track types may exist as well. */
9689interface MediaStreamTrack extends EventTarget {
9690    contentHint: string;
9691    enabled: boolean;
9692    readonly id: string;
9693    readonly kind: string;
9694    readonly label: string;
9695    readonly muted: boolean;
9696    onended: ((this: MediaStreamTrack, ev: Event) => any) | null;
9697    onmute: ((this: MediaStreamTrack, ev: Event) => any) | null;
9698    onunmute: ((this: MediaStreamTrack, ev: Event) => any) | null;
9699    readonly readyState: MediaStreamTrackState;
9700    applyConstraints(constraints?: MediaTrackConstraints): Promise<void>;
9701    clone(): MediaStreamTrack;
9702    getCapabilities(): MediaTrackCapabilities;
9703    getConstraints(): MediaTrackConstraints;
9704    getSettings(): MediaTrackSettings;
9705    stop(): void;
9706    addEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: MediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9707    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9708    removeEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: MediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9709    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9710}
9711
9712declare var MediaStreamTrack: {
9713    prototype: MediaStreamTrack;
9714    new(): MediaStreamTrack;
9715};
9716
9717/** Events which indicate that a MediaStream has had tracks added to or removed from the stream through calls to Media Stream API methods. These events are sent to the stream when these changes occur. */
9718interface MediaStreamTrackEvent extends Event {
9719    readonly track: MediaStreamTrack;
9720}
9721
9722declare var MediaStreamTrackEvent: {
9723    prototype: MediaStreamTrackEvent;
9724    new(type: string, eventInitDict: MediaStreamTrackEventInit): MediaStreamTrackEvent;
9725};
9726
9727/** This Channel Messaging API interface allows us to create a new message channel and send data through it via its two MessagePort properties. */
9728interface MessageChannel {
9729    /** Returns the first MessagePort object. */
9730    readonly port1: MessagePort;
9731    /** Returns the second MessagePort object. */
9732    readonly port2: MessagePort;
9733}
9734
9735declare var MessageChannel: {
9736    prototype: MessageChannel;
9737    new(): MessageChannel;
9738};
9739
9740/** A message received by a target object. */
9741interface MessageEvent<T = any> extends Event {
9742    /** Returns the data of the message. */
9743    readonly data: T;
9744    /** Returns the last event ID string, for server-sent events. */
9745    readonly lastEventId: string;
9746    /** Returns the origin of the message, for server-sent events and cross-document messaging. */
9747    readonly origin: string;
9748    /** Returns the MessagePort array sent with the message, for cross-document messaging and channel messaging. */
9749    readonly ports: ReadonlyArray<MessagePort>;
9750    /** Returns the WindowProxy of the source window, for cross-document messaging, and the MessagePort being attached, in the connect event fired at SharedWorkerGlobalScope objects. */
9751    readonly source: MessageEventSource | null;
9752    /** @deprecated */
9753    initMessageEvent(type: string, bubbles?: boolean, cancelable?: boolean, data?: any, origin?: string, lastEventId?: string, source?: MessageEventSource | null, ports?: MessagePort[]): void;
9754}
9755
9756declare var MessageEvent: {
9757    prototype: MessageEvent;
9758    new<T>(type: string, eventInitDict?: MessageEventInit<T>): MessageEvent<T>;
9759};
9760
9761interface MessagePortEventMap {
9762    "message": MessageEvent;
9763    "messageerror": MessageEvent;
9764}
9765
9766/** This Channel Messaging API interface represents one of the two ports of a MessageChannel, allowing messages to be sent from one port and listening out for them arriving at the other. */
9767interface MessagePort extends EventTarget {
9768    onmessage: ((this: MessagePort, ev: MessageEvent) => any) | null;
9769    onmessageerror: ((this: MessagePort, ev: MessageEvent) => any) | null;
9770    /** Disconnects the port, so that it is no longer active. */
9771    close(): void;
9772    /**
9773     * Posts a message through the channel. Objects listed in transfer are transferred, not just cloned, meaning that they are no longer usable on the sending side.
9774     *
9775     * Throws a "DataCloneError" DOMException if transfer contains duplicate objects or port, or if message could not be cloned.
9776     */
9777    postMessage(message: any, transfer: Transferable[]): void;
9778    postMessage(message: any, options?: StructuredSerializeOptions): void;
9779    /** Begins dispatching messages received on the port. */
9780    start(): void;
9781    addEventListener<K extends keyof MessagePortEventMap>(type: K, listener: (this: MessagePort, ev: MessagePortEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9782    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9783    removeEventListener<K extends keyof MessagePortEventMap>(type: K, listener: (this: MessagePort, ev: MessagePortEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9784    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9785}
9786
9787declare var MessagePort: {
9788    prototype: MessagePort;
9789    new(): MessagePort;
9790};
9791
9792/**
9793 * Provides contains information about a MIME type associated with a particular plugin. NavigatorPlugins.mimeTypes returns an array of this object.
9794 * @deprecated
9795 */
9796interface MimeType {
9797    /**
9798     * Returns the MIME type's description.
9799     * @deprecated
9800     */
9801    readonly description: string;
9802    /**
9803     * Returns the Plugin object that implements this MIME type.
9804     * @deprecated
9805     */
9806    readonly enabledPlugin: Plugin;
9807    /**
9808     * Returns the MIME type's typical file extensions, in a comma-separated list.
9809     * @deprecated
9810     */
9811    readonly suffixes: string;
9812    /**
9813     * Returns the MIME type.
9814     * @deprecated
9815     */
9816    readonly type: string;
9817}
9818
9819/** @deprecated */
9820declare var MimeType: {
9821    prototype: MimeType;
9822    new(): MimeType;
9823};
9824
9825/**
9826 * Returns an array of MimeType instances, each of which contains information about a supported browser plugins. This object is returned by NavigatorPlugins.mimeTypes.
9827 * @deprecated
9828 */
9829interface MimeTypeArray {
9830    /** @deprecated */
9831    readonly length: number;
9832    /** @deprecated */
9833    item(index: number): MimeType | null;
9834    /** @deprecated */
9835    namedItem(name: string): MimeType | null;
9836    [index: number]: MimeType;
9837}
9838
9839/** @deprecated */
9840declare var MimeTypeArray: {
9841    prototype: MimeTypeArray;
9842    new(): MimeTypeArray;
9843};
9844
9845/** Events that occur due to the user interacting with a pointing device (such as a mouse). Common events using this interface include click, dblclick, mouseup, mousedown. */
9846interface MouseEvent extends UIEvent {
9847    readonly altKey: boolean;
9848    readonly button: number;
9849    readonly buttons: number;
9850    readonly clientX: number;
9851    readonly clientY: number;
9852    readonly ctrlKey: boolean;
9853    readonly metaKey: boolean;
9854    readonly movementX: number;
9855    readonly movementY: number;
9856    readonly offsetX: number;
9857    readonly offsetY: number;
9858    readonly pageX: number;
9859    readonly pageY: number;
9860    readonly relatedTarget: EventTarget | null;
9861    readonly screenX: number;
9862    readonly screenY: number;
9863    readonly shiftKey: boolean;
9864    readonly x: number;
9865    readonly y: number;
9866    getModifierState(keyArg: string): boolean;
9867    /** @deprecated */
9868    initMouseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget | null): void;
9869}
9870
9871declare var MouseEvent: {
9872    prototype: MouseEvent;
9873    new(type: string, eventInitDict?: MouseEventInit): MouseEvent;
9874};
9875
9876/**
9877 * Provides event properties that are specific to modifications to the Document Object Model (DOM) hierarchy and nodes.
9878 * @deprecated DOM4 [DOM] provides a new mechanism using a MutationObserver interface which addresses the use cases that mutation events solve, but in a more performant manner. Thus, this specification describes mutation events for reference and completeness of legacy behavior, but deprecates the use of the MutationEvent interface.
9879 */
9880interface MutationEvent extends Event {
9881    /** @deprecated */
9882    readonly attrChange: number;
9883    /** @deprecated */
9884    readonly attrName: string;
9885    /** @deprecated */
9886    readonly newValue: string;
9887    /** @deprecated */
9888    readonly prevValue: string;
9889    /** @deprecated */
9890    readonly relatedNode: Node | null;
9891    /** @deprecated */
9892    initMutationEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, relatedNodeArg?: Node | null, prevValueArg?: string, newValueArg?: string, attrNameArg?: string, attrChangeArg?: number): void;
9893    readonly ADDITION: number;
9894    readonly MODIFICATION: number;
9895    readonly REMOVAL: number;
9896}
9897
9898/** @deprecated */
9899declare var MutationEvent: {
9900    prototype: MutationEvent;
9901    new(): MutationEvent;
9902    readonly ADDITION: number;
9903    readonly MODIFICATION: number;
9904    readonly REMOVAL: number;
9905};
9906
9907/** Provides the ability to watch for changes being made to the DOM tree. It is designed as a replacement for the older Mutation Events feature which was part of the DOM3 Events specification. */
9908interface MutationObserver {
9909    /** Stops observer from observing any mutations. Until the observe() method is used again, observer's callback will not be invoked. */
9910    disconnect(): void;
9911    /**
9912     * Instructs the user agent to observe a given target (a node) and report any mutations based on the criteria given by options (an object).
9913     *
9914     * The options argument allows for setting mutation observation options via object members.
9915     */
9916    observe(target: Node, options?: MutationObserverInit): void;
9917    /** Empties the record queue and returns what was in there. */
9918    takeRecords(): MutationRecord[];
9919}
9920
9921declare var MutationObserver: {
9922    prototype: MutationObserver;
9923    new(callback: MutationCallback): MutationObserver;
9924};
9925
9926/** A MutationRecord represents an individual DOM mutation. It is the object that is passed to MutationObserver's callback. */
9927interface MutationRecord {
9928    /** Return the nodes added and removed respectively. */
9929    readonly addedNodes: NodeList;
9930    /** Returns the local name of the changed attribute, and null otherwise. */
9931    readonly attributeName: string | null;
9932    /** Returns the namespace of the changed attribute, and null otherwise. */
9933    readonly attributeNamespace: string | null;
9934    /** Return the previous and next sibling respectively of the added or removed nodes, and null otherwise. */
9935    readonly nextSibling: Node | null;
9936    /** The return value depends on type. For "attributes", it is the value of the changed attribute before the change. For "characterData", it is the data of the changed node before the change. For "childList", it is null. */
9937    readonly oldValue: string | null;
9938    /** Return the previous and next sibling respectively of the added or removed nodes, and null otherwise. */
9939    readonly previousSibling: Node | null;
9940    /** Return the nodes added and removed respectively. */
9941    readonly removedNodes: NodeList;
9942    /** Returns the node the mutation affected, depending on the type. For "attributes", it is the element whose attribute changed. For "characterData", it is the CharacterData node. For "childList", it is the node whose children changed. */
9943    readonly target: Node;
9944    /** Returns "attributes" if it was an attribute mutation. "characterData" if it was a mutation to a CharacterData node. And "childList" if it was a mutation to the tree of nodes. */
9945    readonly type: MutationRecordType;
9946}
9947
9948declare var MutationRecord: {
9949    prototype: MutationRecord;
9950    new(): MutationRecord;
9951};
9952
9953/** A collection of Attr objects. Objects inside a NamedNodeMap are not in any particular order, unlike NodeList, although they may be accessed by an index as in an array. */
9954interface NamedNodeMap {
9955    readonly length: number;
9956    getNamedItem(qualifiedName: string): Attr | null;
9957    getNamedItemNS(namespace: string | null, localName: string): Attr | null;
9958    item(index: number): Attr | null;
9959    removeNamedItem(qualifiedName: string): Attr;
9960    removeNamedItemNS(namespace: string | null, localName: string): Attr;
9961    setNamedItem(attr: Attr): Attr | null;
9962    setNamedItemNS(attr: Attr): Attr | null;
9963    [index: number]: Attr;
9964}
9965
9966declare var NamedNodeMap: {
9967    prototype: NamedNodeMap;
9968    new(): NamedNodeMap;
9969};
9970
9971/** Available only in secure contexts. */
9972interface NavigationPreloadManager {
9973    disable(): Promise<void>;
9974    enable(): Promise<void>;
9975    getState(): Promise<NavigationPreloadState>;
9976    setHeaderValue(value: string): Promise<void>;
9977}
9978
9979declare var NavigationPreloadManager: {
9980    prototype: NavigationPreloadManager;
9981    new(): NavigationPreloadManager;
9982};
9983
9984/** The state and the identity of the user agent. It allows scripts to query it and to register themselves to carry on some activities. */
9985interface Navigator extends NavigatorAutomationInformation, NavigatorConcurrentHardware, NavigatorContentUtils, NavigatorCookies, NavigatorID, NavigatorLanguage, NavigatorLocks, NavigatorOnLine, NavigatorPlugins, NavigatorStorage {
9986    /** Available only in secure contexts. */
9987    readonly clipboard: Clipboard;
9988    /** Available only in secure contexts. */
9989    readonly credentials: CredentialsContainer;
9990    readonly doNotTrack: string | null;
9991    readonly geolocation: Geolocation;
9992    readonly maxTouchPoints: number;
9993    readonly mediaCapabilities: MediaCapabilities;
9994    /** Available only in secure contexts. */
9995    readonly mediaDevices: MediaDevices;
9996    readonly mediaSession: MediaSession;
9997    readonly permissions: Permissions;
9998    /** Available only in secure contexts. */
9999    readonly serviceWorker: ServiceWorkerContainer;
10000    /** Available only in secure contexts. */
10001    canShare(data?: ShareData): boolean;
10002    getGamepads(): (Gamepad | null)[];
10003    /** Available only in secure contexts. */
10004    requestMediaKeySystemAccess(keySystem: string, supportedConfigurations: MediaKeySystemConfiguration[]): Promise<MediaKeySystemAccess>;
10005    sendBeacon(url: string | URL, data?: BodyInit | null): boolean;
10006    /** Available only in secure contexts. */
10007    share(data?: ShareData): Promise<void>;
10008    vibrate(pattern: VibratePattern): boolean;
10009}
10010
10011declare var Navigator: {
10012    prototype: Navigator;
10013    new(): Navigator;
10014};
10015
10016interface NavigatorAutomationInformation {
10017    readonly webdriver: boolean;
10018}
10019
10020interface NavigatorConcurrentHardware {
10021    readonly hardwareConcurrency: number;
10022}
10023
10024interface NavigatorContentUtils {
10025    /** Available only in secure contexts. */
10026    registerProtocolHandler(scheme: string, url: string | URL): void;
10027}
10028
10029interface NavigatorCookies {
10030    readonly cookieEnabled: boolean;
10031}
10032
10033interface NavigatorID {
10034    /** @deprecated */
10035    readonly appCodeName: string;
10036    /** @deprecated */
10037    readonly appName: string;
10038    /** @deprecated */
10039    readonly appVersion: string;
10040    /** @deprecated */
10041    readonly platform: string;
10042    /** @deprecated */
10043    readonly product: string;
10044    /** @deprecated */
10045    readonly productSub: string;
10046    readonly userAgent: string;
10047    /** @deprecated */
10048    readonly vendor: string;
10049    /** @deprecated */
10050    readonly vendorSub: string;
10051}
10052
10053interface NavigatorLanguage {
10054    readonly language: string;
10055    readonly languages: ReadonlyArray<string>;
10056}
10057
10058/** Available only in secure contexts. */
10059interface NavigatorLocks {
10060    readonly locks: LockManager;
10061}
10062
10063interface NavigatorOnLine {
10064    readonly onLine: boolean;
10065}
10066
10067interface NavigatorPlugins {
10068    /** @deprecated */
10069    readonly mimeTypes: MimeTypeArray;
10070    readonly pdfViewerEnabled: boolean;
10071    /** @deprecated */
10072    readonly plugins: PluginArray;
10073    /** @deprecated */
10074    javaEnabled(): boolean;
10075}
10076
10077/** Available only in secure contexts. */
10078interface NavigatorStorage {
10079    readonly storage: StorageManager;
10080}
10081
10082/** Node is an interface from which a number of DOM API object types inherit. It allows those types to be treated similarly; for example, inheriting the same set of methods, or being tested in the same way. */
10083interface Node extends EventTarget {
10084    /** Returns node's node document's document base URL. */
10085    readonly baseURI: string;
10086    /** Returns the children. */
10087    readonly childNodes: NodeListOf<ChildNode>;
10088    /** Returns the first child. */
10089    readonly firstChild: ChildNode | null;
10090    /** Returns true if node is connected and false otherwise. */
10091    readonly isConnected: boolean;
10092    /** Returns the last child. */
10093    readonly lastChild: ChildNode | null;
10094    /** Returns the next sibling. */
10095    readonly nextSibling: ChildNode | null;
10096    /** Returns a string appropriate for the type of node. */
10097    readonly nodeName: string;
10098    /** Returns the type of node. */
10099    readonly nodeType: number;
10100    nodeValue: string | null;
10101    /** Returns the node document. Returns null for documents. */
10102    readonly ownerDocument: Document | null;
10103    /** Returns the parent element. */
10104    readonly parentElement: HTMLElement | null;
10105    /** Returns the parent. */
10106    readonly parentNode: ParentNode | null;
10107    /** Returns the previous sibling. */
10108    readonly previousSibling: ChildNode | null;
10109    textContent: string | null;
10110    appendChild<T extends Node>(node: T): T;
10111    /** Returns a copy of node. If deep is true, the copy also includes the node's descendants. */
10112    cloneNode(deep?: boolean): Node;
10113    /** Returns a bitmask indicating the position of other relative to node. */
10114    compareDocumentPosition(other: Node): number;
10115    /** Returns true if other is an inclusive descendant of node, and false otherwise. */
10116    contains(other: Node | null): boolean;
10117    /** Returns node's root. */
10118    getRootNode(options?: GetRootNodeOptions): Node;
10119    /** Returns whether node has children. */
10120    hasChildNodes(): boolean;
10121    insertBefore<T extends Node>(node: T, child: Node | null): T;
10122    isDefaultNamespace(namespace: string | null): boolean;
10123    /** Returns whether node and otherNode have the same properties. */
10124    isEqualNode(otherNode: Node | null): boolean;
10125    isSameNode(otherNode: Node | null): boolean;
10126    lookupNamespaceURI(prefix: string | null): string | null;
10127    lookupPrefix(namespace: string | null): string | null;
10128    /** Removes empty exclusive Text nodes and concatenates the data of remaining contiguous exclusive Text nodes into the first of their nodes. */
10129    normalize(): void;
10130    removeChild<T extends Node>(child: T): T;
10131    replaceChild<T extends Node>(node: Node, child: T): T;
10132    readonly ATTRIBUTE_NODE: number;
10133    /** node is a CDATASection node. */
10134    readonly CDATA_SECTION_NODE: number;
10135    /** node is a Comment node. */
10136    readonly COMMENT_NODE: number;
10137    /** node is a DocumentFragment node. */
10138    readonly DOCUMENT_FRAGMENT_NODE: number;
10139    /** node is a document. */
10140    readonly DOCUMENT_NODE: number;
10141    /** Set when other is a descendant of node. */
10142    readonly DOCUMENT_POSITION_CONTAINED_BY: number;
10143    /** Set when other is an ancestor of node. */
10144    readonly DOCUMENT_POSITION_CONTAINS: number;
10145    /** Set when node and other are not in the same tree. */
10146    readonly DOCUMENT_POSITION_DISCONNECTED: number;
10147    /** Set when other is following node. */
10148    readonly DOCUMENT_POSITION_FOLLOWING: number;
10149    readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number;
10150    /** Set when other is preceding node. */
10151    readonly DOCUMENT_POSITION_PRECEDING: number;
10152    /** node is a doctype. */
10153    readonly DOCUMENT_TYPE_NODE: number;
10154    /** node is an element. */
10155    readonly ELEMENT_NODE: number;
10156    readonly ENTITY_NODE: number;
10157    readonly ENTITY_REFERENCE_NODE: number;
10158    readonly NOTATION_NODE: number;
10159    /** node is a ProcessingInstruction node. */
10160    readonly PROCESSING_INSTRUCTION_NODE: number;
10161    /** node is a Text node. */
10162    readonly TEXT_NODE: number;
10163}
10164
10165declare var Node: {
10166    prototype: Node;
10167    new(): Node;
10168    readonly ATTRIBUTE_NODE: number;
10169    /** node is a CDATASection node. */
10170    readonly CDATA_SECTION_NODE: number;
10171    /** node is a Comment node. */
10172    readonly COMMENT_NODE: number;
10173    /** node is a DocumentFragment node. */
10174    readonly DOCUMENT_FRAGMENT_NODE: number;
10175    /** node is a document. */
10176    readonly DOCUMENT_NODE: number;
10177    /** Set when other is a descendant of node. */
10178    readonly DOCUMENT_POSITION_CONTAINED_BY: number;
10179    /** Set when other is an ancestor of node. */
10180    readonly DOCUMENT_POSITION_CONTAINS: number;
10181    /** Set when node and other are not in the same tree. */
10182    readonly DOCUMENT_POSITION_DISCONNECTED: number;
10183    /** Set when other is following node. */
10184    readonly DOCUMENT_POSITION_FOLLOWING: number;
10185    readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number;
10186    /** Set when other is preceding node. */
10187    readonly DOCUMENT_POSITION_PRECEDING: number;
10188    /** node is a doctype. */
10189    readonly DOCUMENT_TYPE_NODE: number;
10190    /** node is an element. */
10191    readonly ELEMENT_NODE: number;
10192    readonly ENTITY_NODE: number;
10193    readonly ENTITY_REFERENCE_NODE: number;
10194    readonly NOTATION_NODE: number;
10195    /** node is a ProcessingInstruction node. */
10196    readonly PROCESSING_INSTRUCTION_NODE: number;
10197    /** node is a Text node. */
10198    readonly TEXT_NODE: number;
10199};
10200
10201/** An iterator over the members of a list of the nodes in a subtree of the DOM. The nodes will be returned in document order. */
10202interface NodeIterator {
10203    readonly filter: NodeFilter | null;
10204    readonly pointerBeforeReferenceNode: boolean;
10205    readonly referenceNode: Node;
10206    readonly root: Node;
10207    readonly whatToShow: number;
10208    /** @deprecated */
10209    detach(): void;
10210    nextNode(): Node | null;
10211    previousNode(): Node | null;
10212}
10213
10214declare var NodeIterator: {
10215    prototype: NodeIterator;
10216    new(): NodeIterator;
10217};
10218
10219/** NodeList objects are collections of nodes, usually returned by properties such as Node.childNodes and methods such as document.querySelectorAll(). */
10220interface NodeList {
10221    /** Returns the number of nodes in the collection. */
10222    readonly length: number;
10223    /** Returns the node with index index from the collection. The nodes are sorted in tree order. */
10224    item(index: number): Node | null;
10225    /**
10226     * Performs the specified action for each node in an list.
10227     * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the list.
10228     * @param thisArg  An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
10229     */
10230    forEach(callbackfn: (value: Node, key: number, parent: NodeList) => void, thisArg?: any): void;
10231    [index: number]: Node;
10232}
10233
10234declare var NodeList: {
10235    prototype: NodeList;
10236    new(): NodeList;
10237};
10238
10239interface NodeListOf<TNode extends Node> extends NodeList {
10240    item(index: number): TNode;
10241    /**
10242     * Performs the specified action for each node in an list.
10243     * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the list.
10244     * @param thisArg  An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
10245     */
10246    forEach(callbackfn: (value: TNode, key: number, parent: NodeListOf<TNode>) => void, thisArg?: any): void;
10247    [index: number]: TNode;
10248}
10249
10250interface NonDocumentTypeChildNode {
10251    /** Returns the first following sibling that is an element, and null otherwise. */
10252    readonly nextElementSibling: Element | null;
10253    /** Returns the first preceding sibling that is an element, and null otherwise. */
10254    readonly previousElementSibling: Element | null;
10255}
10256
10257interface NonElementParentNode {
10258    /** Returns the first element within node's descendants whose ID is elementId. */
10259    getElementById(elementId: string): Element | null;
10260}
10261
10262interface NotificationEventMap {
10263    "click": Event;
10264    "close": Event;
10265    "error": Event;
10266    "show": Event;
10267}
10268
10269/** This Notifications API interface is used to configure and display desktop notifications to the user. */
10270interface Notification extends EventTarget {
10271    readonly body: string;
10272    readonly data: any;
10273    readonly dir: NotificationDirection;
10274    readonly icon: string;
10275    readonly lang: string;
10276    onclick: ((this: Notification, ev: Event) => any) | null;
10277    onclose: ((this: Notification, ev: Event) => any) | null;
10278    onerror: ((this: Notification, ev: Event) => any) | null;
10279    onshow: ((this: Notification, ev: Event) => any) | null;
10280    readonly tag: string;
10281    readonly title: string;
10282    close(): void;
10283    addEventListener<K extends keyof NotificationEventMap>(type: K, listener: (this: Notification, ev: NotificationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10284    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10285    removeEventListener<K extends keyof NotificationEventMap>(type: K, listener: (this: Notification, ev: NotificationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10286    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10287}
10288
10289declare var Notification: {
10290    prototype: Notification;
10291    new(title: string, options?: NotificationOptions): Notification;
10292    readonly permission: NotificationPermission;
10293    requestPermission(deprecatedCallback?: NotificationPermissionCallback): Promise<NotificationPermission>;
10294};
10295
10296interface OES_draw_buffers_indexed {
10297    blendEquationSeparateiOES(buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum): void;
10298    blendEquationiOES(buf: GLuint, mode: GLenum): void;
10299    blendFuncSeparateiOES(buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum): void;
10300    blendFunciOES(buf: GLuint, src: GLenum, dst: GLenum): void;
10301    colorMaskiOES(buf: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean): void;
10302    disableiOES(target: GLenum, index: GLuint): void;
10303    enableiOES(target: GLenum, index: GLuint): void;
10304}
10305
10306/** The OES_element_index_uint extension is part of the WebGL API and adds support for gl.UNSIGNED_INT types to WebGLRenderingContext.drawElements(). */
10307interface OES_element_index_uint {
10308}
10309
10310interface OES_fbo_render_mipmap {
10311}
10312
10313/** The OES_standard_derivatives extension is part of the WebGL API and adds the GLSL derivative functions dFdx, dFdy, and fwidth. */
10314interface OES_standard_derivatives {
10315    readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: GLenum;
10316}
10317
10318/** The OES_texture_float extension is part of the WebGL API and exposes floating-point pixel types for textures. */
10319interface OES_texture_float {
10320}
10321
10322/** The OES_texture_float_linear extension is part of the WebGL API and allows linear filtering with floating-point pixel types for textures. */
10323interface OES_texture_float_linear {
10324}
10325
10326/** The OES_texture_half_float extension is part of the WebGL API and adds texture formats with 16- (aka half float) and 32-bit floating-point components. */
10327interface OES_texture_half_float {
10328    readonly HALF_FLOAT_OES: GLenum;
10329}
10330
10331/** The OES_texture_half_float_linear extension is part of the WebGL API and allows linear filtering with half floating-point pixel types for textures. */
10332interface OES_texture_half_float_linear {
10333}
10334
10335interface OES_vertex_array_object {
10336    bindVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void;
10337    createVertexArrayOES(): WebGLVertexArrayObjectOES | null;
10338    deleteVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void;
10339    isVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): GLboolean;
10340    readonly VERTEX_ARRAY_BINDING_OES: GLenum;
10341}
10342
10343interface OVR_multiview2 {
10344    framebufferTextureMultiviewOVR(target: GLenum, attachment: GLenum, texture: WebGLTexture | null, level: GLint, baseViewIndex: GLint, numViews: GLsizei): void;
10345    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR: GLenum;
10346    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR: GLenum;
10347    readonly FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: GLenum;
10348    readonly MAX_VIEWS_OVR: GLenum;
10349}
10350
10351/** The Web Audio API OfflineAudioCompletionEvent interface represents events that occur when the processing of an OfflineAudioContext is terminated. The complete event implements this interface. */
10352interface OfflineAudioCompletionEvent extends Event {
10353    readonly renderedBuffer: AudioBuffer;
10354}
10355
10356declare var OfflineAudioCompletionEvent: {
10357    prototype: OfflineAudioCompletionEvent;
10358    new(type: string, eventInitDict: OfflineAudioCompletionEventInit): OfflineAudioCompletionEvent;
10359};
10360
10361interface OfflineAudioContextEventMap extends BaseAudioContextEventMap {
10362    "complete": OfflineAudioCompletionEvent;
10363}
10364
10365/** An AudioContext interface representing an audio-processing graph built from linked together AudioNodes. In contrast with a standard AudioContext, an OfflineAudioContext doesn't render the audio to the device hardware; instead, it generates it, as fast as it can, and outputs the result to an AudioBuffer. */
10366interface OfflineAudioContext extends BaseAudioContext {
10367    readonly length: number;
10368    oncomplete: ((this: OfflineAudioContext, ev: OfflineAudioCompletionEvent) => any) | null;
10369    resume(): Promise<void>;
10370    startRendering(): Promise<AudioBuffer>;
10371    suspend(suspendTime: number): Promise<void>;
10372    addEventListener<K extends keyof OfflineAudioContextEventMap>(type: K, listener: (this: OfflineAudioContext, ev: OfflineAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10373    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10374    removeEventListener<K extends keyof OfflineAudioContextEventMap>(type: K, listener: (this: OfflineAudioContext, ev: OfflineAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10375    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10376}
10377
10378declare var OfflineAudioContext: {
10379    prototype: OfflineAudioContext;
10380    new(contextOptions: OfflineAudioContextOptions): OfflineAudioContext;
10381    new(numberOfChannels: number, length: number, sampleRate: number): OfflineAudioContext;
10382};
10383
10384interface OffscreenCanvasEventMap {
10385    "contextlost": Event;
10386    "contextrestored": Event;
10387}
10388
10389interface OffscreenCanvas extends EventTarget {
10390    /**
10391     * These attributes return the dimensions of the OffscreenCanvas object's bitmap.
10392     *
10393     * They can be set, to replace the bitmap with a new, transparent black bitmap of the specified dimensions (effectively resizing it).
10394     */
10395    height: number;
10396    oncontextlost: ((this: OffscreenCanvas, ev: Event) => any) | null;
10397    oncontextrestored: ((this: OffscreenCanvas, ev: Event) => any) | null;
10398    /**
10399     * These attributes return the dimensions of the OffscreenCanvas object's bitmap.
10400     *
10401     * They can be set, to replace the bitmap with a new, transparent black bitmap of the specified dimensions (effectively resizing it).
10402     */
10403    width: number;
10404    /**
10405     * Returns an object that exposes an API for drawing on the OffscreenCanvas object. contextId specifies the desired API: "2d", "bitmaprenderer", "webgl", or "webgl2". options is handled by that API.
10406     *
10407     * This specification defines the "2d" context below, which is similar but distinct from the "2d" context that is created from a canvas element. The WebGL specifications define the "webgl" and "webgl2" contexts. [WEBGL]
10408     *
10409     * Returns null if the canvas has already been initialized with another context type (e.g., trying to get a "2d" context after getting a "webgl" context).
10410     */
10411    getContext(contextId: OffscreenRenderingContextId, options?: any): OffscreenRenderingContext | null;
10412    /** Returns a newly created ImageBitmap object with the image in the OffscreenCanvas object. The image in the OffscreenCanvas object is replaced with a new blank image. */
10413    transferToImageBitmap(): ImageBitmap;
10414    addEventListener<K extends keyof OffscreenCanvasEventMap>(type: K, listener: (this: OffscreenCanvas, ev: OffscreenCanvasEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10415    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10416    removeEventListener<K extends keyof OffscreenCanvasEventMap>(type: K, listener: (this: OffscreenCanvas, ev: OffscreenCanvasEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10417    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10418}
10419
10420declare var OffscreenCanvas: {
10421    prototype: OffscreenCanvas;
10422    new(width: number, height: number): OffscreenCanvas;
10423};
10424
10425interface OffscreenCanvasRenderingContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform {
10426    readonly canvas: OffscreenCanvas;
10427    commit(): void;
10428}
10429
10430declare var OffscreenCanvasRenderingContext2D: {
10431    prototype: OffscreenCanvasRenderingContext2D;
10432    new(): OffscreenCanvasRenderingContext2D;
10433};
10434
10435/** The OscillatorNode interface represents a periodic waveform, such as a sine wave. It is an AudioScheduledSourceNode audio-processing module that causes a specified frequency of a given wave to be created—in effect, a constant tone. */
10436interface OscillatorNode extends AudioScheduledSourceNode {
10437    readonly detune: AudioParam;
10438    readonly frequency: AudioParam;
10439    type: OscillatorType;
10440    setPeriodicWave(periodicWave: PeriodicWave): void;
10441    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: OscillatorNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10442    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10443    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: OscillatorNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10444    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10445}
10446
10447declare var OscillatorNode: {
10448    prototype: OscillatorNode;
10449    new(context: BaseAudioContext, options?: OscillatorOptions): OscillatorNode;
10450};
10451
10452interface OverconstrainedError extends Error {
10453    readonly constraint: string;
10454}
10455
10456declare var OverconstrainedError: {
10457    prototype: OverconstrainedError;
10458    new(constraint: string, message?: string): OverconstrainedError;
10459};
10460
10461/** The PageTransitionEvent is fired when a document is being loaded or unloaded. */
10462interface PageTransitionEvent extends Event {
10463    /**
10464     * For the pageshow event, returns false if the page is newly being loaded (and the load event will fire). Otherwise, returns true.
10465     *
10466     * For the pagehide event, returns false if the page is going away for the last time. Otherwise, returns true, meaning that (if nothing conspires to make the page unsalvageable) the page might be reused if the user navigates back to this page.
10467     *
10468     * Things that can cause the page to be unsalvageable include:
10469     *
10470     * The user agent decided to not keep the Document alive in a session history entry after unload
10471     * Having iframes that are not salvageable
10472     * Active WebSocket objects
10473     * Aborting a Document
10474     */
10475    readonly persisted: boolean;
10476}
10477
10478declare var PageTransitionEvent: {
10479    prototype: PageTransitionEvent;
10480    new(type: string, eventInitDict?: PageTransitionEventInit): PageTransitionEvent;
10481};
10482
10483/** A PannerNode always has exactly one input and one output: the input can be mono or stereo but the output is always stereo (2 channels); you can't have panning effects without at least two audio channels! */
10484interface PannerNode extends AudioNode {
10485    coneInnerAngle: number;
10486    coneOuterAngle: number;
10487    coneOuterGain: number;
10488    distanceModel: DistanceModelType;
10489    maxDistance: number;
10490    readonly orientationX: AudioParam;
10491    readonly orientationY: AudioParam;
10492    readonly orientationZ: AudioParam;
10493    panningModel: PanningModelType;
10494    readonly positionX: AudioParam;
10495    readonly positionY: AudioParam;
10496    readonly positionZ: AudioParam;
10497    refDistance: number;
10498    rolloffFactor: number;
10499    /** @deprecated */
10500    setOrientation(x: number, y: number, z: number): void;
10501    /** @deprecated */
10502    setPosition(x: number, y: number, z: number): void;
10503}
10504
10505declare var PannerNode: {
10506    prototype: PannerNode;
10507    new(context: BaseAudioContext, options?: PannerOptions): PannerNode;
10508};
10509
10510interface ParentNode extends Node {
10511    readonly childElementCount: number;
10512    /** Returns the child elements. */
10513    readonly children: HTMLCollection;
10514    /** Returns the first child that is an element, and null otherwise. */
10515    readonly firstElementChild: Element | null;
10516    /** Returns the last child that is an element, and null otherwise. */
10517    readonly lastElementChild: Element | null;
10518    /**
10519     * Inserts nodes after the last child of node, while replacing strings in nodes with equivalent Text nodes.
10520     *
10521     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
10522     */
10523    append(...nodes: (Node | string)[]): void;
10524    /**
10525     * Inserts nodes before the first child of node, while replacing strings in nodes with equivalent Text nodes.
10526     *
10527     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
10528     */
10529    prepend(...nodes: (Node | string)[]): void;
10530    /** Returns the first element that is a descendant of node that matches selectors. */
10531    querySelector<K extends keyof HTMLElementTagNameMap>(selectors: K): HTMLElementTagNameMap[K] | null;
10532    querySelector<K extends keyof SVGElementTagNameMap>(selectors: K): SVGElementTagNameMap[K] | null;
10533    querySelector<E extends Element = Element>(selectors: string): E | null;
10534    /** Returns all element descendants of node that match selectors. */
10535    querySelectorAll<K extends keyof HTMLElementTagNameMap>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;
10536    querySelectorAll<K extends keyof SVGElementTagNameMap>(selectors: K): NodeListOf<SVGElementTagNameMap[K]>;
10537    querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;
10538    /**
10539     * Replace all children of node with nodes, while replacing strings in nodes with equivalent Text nodes.
10540     *
10541     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
10542     */
10543    replaceChildren(...nodes: (Node | string)[]): void;
10544}
10545
10546/** This Canvas 2D API interface is used to declare a path that can then be used on a CanvasRenderingContext2D object. The path methods of the CanvasRenderingContext2D interface are also present on this interface, which gives you the convenience of being able to retain and replay your path whenever desired. */
10547interface Path2D extends CanvasPath {
10548    /** Adds to the path the path given by the argument. */
10549    addPath(path: Path2D, transform?: DOMMatrix2DInit): void;
10550}
10551
10552declare var Path2D: {
10553    prototype: Path2D;
10554    new(path?: Path2D | string): Path2D;
10555};
10556
10557/** Available only in secure contexts. */
10558interface PaymentMethodChangeEvent extends PaymentRequestUpdateEvent {
10559    readonly methodDetails: any;
10560    readonly methodName: string;
10561}
10562
10563declare var PaymentMethodChangeEvent: {
10564    prototype: PaymentMethodChangeEvent;
10565    new(type: string, eventInitDict?: PaymentMethodChangeEventInit): PaymentMethodChangeEvent;
10566};
10567
10568interface PaymentRequestEventMap {
10569    "paymentmethodchange": Event;
10570}
10571
10572/**
10573 * This Payment Request API interface is the primary access point into the API, and lets web content and apps accept payments from the end user.
10574 * Available only in secure contexts.
10575 */
10576interface PaymentRequest extends EventTarget {
10577    readonly id: string;
10578    onpaymentmethodchange: ((this: PaymentRequest, ev: Event) => any) | null;
10579    abort(): Promise<void>;
10580    canMakePayment(): Promise<boolean>;
10581    show(detailsPromise?: PaymentDetailsUpdate | PromiseLike<PaymentDetailsUpdate>): Promise<PaymentResponse>;
10582    addEventListener<K extends keyof PaymentRequestEventMap>(type: K, listener: (this: PaymentRequest, ev: PaymentRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10583    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10584    removeEventListener<K extends keyof PaymentRequestEventMap>(type: K, listener: (this: PaymentRequest, ev: PaymentRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10585    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10586}
10587
10588declare var PaymentRequest: {
10589    prototype: PaymentRequest;
10590    new(methodData: PaymentMethodData[], details: PaymentDetailsInit): PaymentRequest;
10591};
10592
10593/**
10594 * This Payment Request API interface enables a web page to update the details of a PaymentRequest in response to a user action.
10595 * Available only in secure contexts.
10596 */
10597interface PaymentRequestUpdateEvent extends Event {
10598    updateWith(detailsPromise: PaymentDetailsUpdate | PromiseLike<PaymentDetailsUpdate>): void;
10599}
10600
10601declare var PaymentRequestUpdateEvent: {
10602    prototype: PaymentRequestUpdateEvent;
10603    new(type: string, eventInitDict?: PaymentRequestUpdateEventInit): PaymentRequestUpdateEvent;
10604};
10605
10606/**
10607 * This Payment Request API interface is returned after a user selects a payment method and approves a payment request.
10608 * Available only in secure contexts.
10609 */
10610interface PaymentResponse extends EventTarget {
10611    readonly details: any;
10612    readonly methodName: string;
10613    readonly requestId: string;
10614    complete(result?: PaymentComplete): Promise<void>;
10615    retry(errorFields?: PaymentValidationErrors): Promise<void>;
10616    toJSON(): any;
10617}
10618
10619declare var PaymentResponse: {
10620    prototype: PaymentResponse;
10621    new(): PaymentResponse;
10622};
10623
10624interface PerformanceEventMap {
10625    "resourcetimingbufferfull": Event;
10626}
10627
10628/** Provides access to performance-related information for the current page. It's part of the High Resolution Time API, but is enhanced by the Performance Timeline API, the Navigation Timing API, the User Timing API, and the Resource Timing API. */
10629interface Performance extends EventTarget {
10630    readonly eventCounts: EventCounts;
10631    /** @deprecated */
10632    readonly navigation: PerformanceNavigation;
10633    onresourcetimingbufferfull: ((this: Performance, ev: Event) => any) | null;
10634    readonly timeOrigin: DOMHighResTimeStamp;
10635    /** @deprecated */
10636    readonly timing: PerformanceTiming;
10637    clearMarks(markName?: string): void;
10638    clearMeasures(measureName?: string): void;
10639    clearResourceTimings(): void;
10640    getEntries(): PerformanceEntryList;
10641    getEntriesByName(name: string, type?: string): PerformanceEntryList;
10642    getEntriesByType(type: string): PerformanceEntryList;
10643    mark(markName: string, markOptions?: PerformanceMarkOptions): PerformanceMark;
10644    measure(measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string): PerformanceMeasure;
10645    now(): DOMHighResTimeStamp;
10646    setResourceTimingBufferSize(maxSize: number): void;
10647    toJSON(): any;
10648    addEventListener<K extends keyof PerformanceEventMap>(type: K, listener: (this: Performance, ev: PerformanceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10649    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10650    removeEventListener<K extends keyof PerformanceEventMap>(type: K, listener: (this: Performance, ev: PerformanceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10651    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10652}
10653
10654declare var Performance: {
10655    prototype: Performance;
10656    new(): Performance;
10657};
10658
10659/** Encapsulates a single performance metric that is part of the performance timeline. A performance entry can be directly created by making a performance mark or measure (for example by calling the mark() method) at an explicit point in an application. Performance entries are also created in indirect ways such as loading a resource (such as an image). */
10660interface PerformanceEntry {
10661    readonly duration: DOMHighResTimeStamp;
10662    readonly entryType: string;
10663    readonly name: string;
10664    readonly startTime: DOMHighResTimeStamp;
10665    toJSON(): any;
10666}
10667
10668declare var PerformanceEntry: {
10669    prototype: PerformanceEntry;
10670    new(): PerformanceEntry;
10671};
10672
10673interface PerformanceEventTiming extends PerformanceEntry {
10674    readonly cancelable: boolean;
10675    readonly processingEnd: DOMHighResTimeStamp;
10676    readonly processingStart: DOMHighResTimeStamp;
10677    readonly target: Node | null;
10678    toJSON(): any;
10679}
10680
10681declare var PerformanceEventTiming: {
10682    prototype: PerformanceEventTiming;
10683    new(): PerformanceEventTiming;
10684};
10685
10686/** PerformanceMark is an abstract interface for PerformanceEntry objects with an entryType of "mark". Entries of this type are created by calling performance.mark() to add a named DOMHighResTimeStamp (the mark) to the browser's performance timeline. */
10687interface PerformanceMark extends PerformanceEntry {
10688    readonly detail: any;
10689}
10690
10691declare var PerformanceMark: {
10692    prototype: PerformanceMark;
10693    new(markName: string, markOptions?: PerformanceMarkOptions): PerformanceMark;
10694};
10695
10696/** PerformanceMeasure is an abstract interface for PerformanceEntry objects with an entryType of "measure". Entries of this type are created by calling performance.measure() to add a named DOMHighResTimeStamp (the measure) between two marks to the browser's performance timeline. */
10697interface PerformanceMeasure extends PerformanceEntry {
10698    readonly detail: any;
10699}
10700
10701declare var PerformanceMeasure: {
10702    prototype: PerformanceMeasure;
10703    new(): PerformanceMeasure;
10704};
10705
10706/**
10707 * The legacy PerformanceNavigation interface represents information about how the navigation to the current document was done.
10708 * @deprecated This interface is deprecated in the Navigation Timing Level 2 specification. Please use the PerformanceNavigationTiming interface instead.
10709 */
10710interface PerformanceNavigation {
10711    /** @deprecated */
10712    readonly redirectCount: number;
10713    /** @deprecated */
10714    readonly type: number;
10715    /** @deprecated */
10716    toJSON(): any;
10717    readonly TYPE_BACK_FORWARD: number;
10718    readonly TYPE_NAVIGATE: number;
10719    readonly TYPE_RELOAD: number;
10720    readonly TYPE_RESERVED: number;
10721}
10722
10723/** @deprecated */
10724declare var PerformanceNavigation: {
10725    prototype: PerformanceNavigation;
10726    new(): PerformanceNavigation;
10727    readonly TYPE_BACK_FORWARD: number;
10728    readonly TYPE_NAVIGATE: number;
10729    readonly TYPE_RELOAD: number;
10730    readonly TYPE_RESERVED: number;
10731};
10732
10733/** Provides methods and properties to store and retrieve metrics regarding the browser's document navigation events. For example, this interface can be used to determine how much time it takes to load or unload a document. */
10734interface PerformanceNavigationTiming extends PerformanceResourceTiming {
10735    readonly domComplete: DOMHighResTimeStamp;
10736    readonly domContentLoadedEventEnd: DOMHighResTimeStamp;
10737    readonly domContentLoadedEventStart: DOMHighResTimeStamp;
10738    readonly domInteractive: DOMHighResTimeStamp;
10739    readonly loadEventEnd: DOMHighResTimeStamp;
10740    readonly loadEventStart: DOMHighResTimeStamp;
10741    readonly redirectCount: number;
10742    readonly type: NavigationTimingType;
10743    readonly unloadEventEnd: DOMHighResTimeStamp;
10744    readonly unloadEventStart: DOMHighResTimeStamp;
10745    toJSON(): any;
10746}
10747
10748declare var PerformanceNavigationTiming: {
10749    prototype: PerformanceNavigationTiming;
10750    new(): PerformanceNavigationTiming;
10751};
10752
10753interface PerformanceObserver {
10754    disconnect(): void;
10755    observe(options?: PerformanceObserverInit): void;
10756    takeRecords(): PerformanceEntryList;
10757}
10758
10759declare var PerformanceObserver: {
10760    prototype: PerformanceObserver;
10761    new(callback: PerformanceObserverCallback): PerformanceObserver;
10762    readonly supportedEntryTypes: ReadonlyArray<string>;
10763};
10764
10765interface PerformanceObserverEntryList {
10766    getEntries(): PerformanceEntryList;
10767    getEntriesByName(name: string, type?: string): PerformanceEntryList;
10768    getEntriesByType(type: string): PerformanceEntryList;
10769}
10770
10771declare var PerformanceObserverEntryList: {
10772    prototype: PerformanceObserverEntryList;
10773    new(): PerformanceObserverEntryList;
10774};
10775
10776interface PerformancePaintTiming extends PerformanceEntry {
10777}
10778
10779declare var PerformancePaintTiming: {
10780    prototype: PerformancePaintTiming;
10781    new(): PerformancePaintTiming;
10782};
10783
10784/** Enables retrieval and analysis of detailed network timing data regarding the loading of an application's resources. An application can use the timing metrics to determine, for example, the length of time it takes to fetch a specific resource, such as an XMLHttpRequest, <SVG>, image, or script. */
10785interface PerformanceResourceTiming extends PerformanceEntry {
10786    readonly connectEnd: DOMHighResTimeStamp;
10787    readonly connectStart: DOMHighResTimeStamp;
10788    readonly decodedBodySize: number;
10789    readonly domainLookupEnd: DOMHighResTimeStamp;
10790    readonly domainLookupStart: DOMHighResTimeStamp;
10791    readonly encodedBodySize: number;
10792    readonly fetchStart: DOMHighResTimeStamp;
10793    readonly initiatorType: string;
10794    readonly nextHopProtocol: string;
10795    readonly redirectEnd: DOMHighResTimeStamp;
10796    readonly redirectStart: DOMHighResTimeStamp;
10797    readonly requestStart: DOMHighResTimeStamp;
10798    readonly responseEnd: DOMHighResTimeStamp;
10799    readonly responseStart: DOMHighResTimeStamp;
10800    readonly secureConnectionStart: DOMHighResTimeStamp;
10801    readonly serverTiming: ReadonlyArray<PerformanceServerTiming>;
10802    readonly transferSize: number;
10803    readonly workerStart: DOMHighResTimeStamp;
10804    toJSON(): any;
10805}
10806
10807declare var PerformanceResourceTiming: {
10808    prototype: PerformanceResourceTiming;
10809    new(): PerformanceResourceTiming;
10810};
10811
10812interface PerformanceServerTiming {
10813    readonly description: string;
10814    readonly duration: DOMHighResTimeStamp;
10815    readonly name: string;
10816    toJSON(): any;
10817}
10818
10819declare var PerformanceServerTiming: {
10820    prototype: PerformanceServerTiming;
10821    new(): PerformanceServerTiming;
10822};
10823
10824/**
10825 * A legacy interface kept for backwards compatibility and contains properties that offer performance timing information for various events which occur during the loading and use of the current page. You get a PerformanceTiming object describing your page using the window.performance.timing property.
10826 * @deprecated This interface is deprecated in the Navigation Timing Level 2 specification. Please use the PerformanceNavigationTiming interface instead.
10827 */
10828interface PerformanceTiming {
10829    /** @deprecated */
10830    readonly connectEnd: number;
10831    /** @deprecated */
10832    readonly connectStart: number;
10833    /** @deprecated */
10834    readonly domComplete: number;
10835    /** @deprecated */
10836    readonly domContentLoadedEventEnd: number;
10837    /** @deprecated */
10838    readonly domContentLoadedEventStart: number;
10839    /** @deprecated */
10840    readonly domInteractive: number;
10841    /** @deprecated */
10842    readonly domLoading: number;
10843    /** @deprecated */
10844    readonly domainLookupEnd: number;
10845    /** @deprecated */
10846    readonly domainLookupStart: number;
10847    /** @deprecated */
10848    readonly fetchStart: number;
10849    /** @deprecated */
10850    readonly loadEventEnd: number;
10851    /** @deprecated */
10852    readonly loadEventStart: number;
10853    /** @deprecated */
10854    readonly navigationStart: number;
10855    /** @deprecated */
10856    readonly redirectEnd: number;
10857    /** @deprecated */
10858    readonly redirectStart: number;
10859    /** @deprecated */
10860    readonly requestStart: number;
10861    /** @deprecated */
10862    readonly responseEnd: number;
10863    /** @deprecated */
10864    readonly responseStart: number;
10865    /** @deprecated */
10866    readonly secureConnectionStart: number;
10867    /** @deprecated */
10868    readonly unloadEventEnd: number;
10869    /** @deprecated */
10870    readonly unloadEventStart: number;
10871    /** @deprecated */
10872    toJSON(): any;
10873}
10874
10875/** @deprecated */
10876declare var PerformanceTiming: {
10877    prototype: PerformanceTiming;
10878    new(): PerformanceTiming;
10879};
10880
10881/** PeriodicWave has no inputs or outputs; it is used to define custom oscillators when calling OscillatorNode.setPeriodicWave(). The PeriodicWave itself is created/returned by AudioContext.createPeriodicWave(). */
10882interface PeriodicWave {
10883}
10884
10885declare var PeriodicWave: {
10886    prototype: PeriodicWave;
10887    new(context: BaseAudioContext, options?: PeriodicWaveOptions): PeriodicWave;
10888};
10889
10890interface PermissionStatusEventMap {
10891    "change": Event;
10892}
10893
10894interface PermissionStatus extends EventTarget {
10895    readonly name: string;
10896    onchange: ((this: PermissionStatus, ev: Event) => any) | null;
10897    readonly state: PermissionState;
10898    addEventListener<K extends keyof PermissionStatusEventMap>(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10899    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10900    removeEventListener<K extends keyof PermissionStatusEventMap>(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10901    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10902}
10903
10904declare var PermissionStatus: {
10905    prototype: PermissionStatus;
10906    new(): PermissionStatus;
10907};
10908
10909interface Permissions {
10910    query(permissionDesc: PermissionDescriptor): Promise<PermissionStatus>;
10911}
10912
10913declare var Permissions: {
10914    prototype: Permissions;
10915    new(): Permissions;
10916};
10917
10918interface PictureInPictureEvent extends Event {
10919    readonly pictureInPictureWindow: PictureInPictureWindow;
10920}
10921
10922declare var PictureInPictureEvent: {
10923    prototype: PictureInPictureEvent;
10924    new(type: string, eventInitDict: PictureInPictureEventInit): PictureInPictureEvent;
10925};
10926
10927interface PictureInPictureWindowEventMap {
10928    "resize": Event;
10929}
10930
10931interface PictureInPictureWindow extends EventTarget {
10932    readonly height: number;
10933    onresize: ((this: PictureInPictureWindow, ev: Event) => any) | null;
10934    readonly width: number;
10935    addEventListener<K extends keyof PictureInPictureWindowEventMap>(type: K, listener: (this: PictureInPictureWindow, ev: PictureInPictureWindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10936    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10937    removeEventListener<K extends keyof PictureInPictureWindowEventMap>(type: K, listener: (this: PictureInPictureWindow, ev: PictureInPictureWindowEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10938    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10939}
10940
10941declare var PictureInPictureWindow: {
10942    prototype: PictureInPictureWindow;
10943    new(): PictureInPictureWindow;
10944};
10945
10946/**
10947 * Provides information about a browser plugin.
10948 * @deprecated
10949 */
10950interface Plugin {
10951    /**
10952     * Returns the plugin's description.
10953     * @deprecated
10954     */
10955    readonly description: string;
10956    /**
10957     * Returns the plugin library's filename, if applicable on the current platform.
10958     * @deprecated
10959     */
10960    readonly filename: string;
10961    /**
10962     * Returns the number of MIME types, represented by MimeType objects, supported by the plugin.
10963     * @deprecated
10964     */
10965    readonly length: number;
10966    /**
10967     * Returns the plugin's name.
10968     * @deprecated
10969     */
10970    readonly name: string;
10971    /**
10972     * Returns the specified MimeType object.
10973     * @deprecated
10974     */
10975    item(index: number): MimeType | null;
10976    /** @deprecated */
10977    namedItem(name: string): MimeType | null;
10978    [index: number]: MimeType;
10979}
10980
10981/** @deprecated */
10982declare var Plugin: {
10983    prototype: Plugin;
10984    new(): Plugin;
10985};
10986
10987/**
10988 * Used to store a list of Plugin objects describing the available plugins; it's returned by the window.navigator.plugins property. The PluginArray is not a JavaScript array, but has the length property and supports accessing individual items using bracket notation (plugins[2]), as well as via item(index) and namedItem("name") methods.
10989 * @deprecated
10990 */
10991interface PluginArray {
10992    /** @deprecated */
10993    readonly length: number;
10994    /** @deprecated */
10995    item(index: number): Plugin | null;
10996    /** @deprecated */
10997    namedItem(name: string): Plugin | null;
10998    /** @deprecated */
10999    refresh(): void;
11000    [index: number]: Plugin;
11001}
11002
11003/** @deprecated */
11004declare var PluginArray: {
11005    prototype: PluginArray;
11006    new(): PluginArray;
11007};
11008
11009/** The state of a DOM event produced by a pointer such as the geometry of the contact point, the device type that generated the event, the amount of pressure that was applied on the contact surface, etc. */
11010interface PointerEvent extends MouseEvent {
11011    readonly height: number;
11012    readonly isPrimary: boolean;
11013    readonly pointerId: number;
11014    readonly pointerType: string;
11015    readonly pressure: number;
11016    readonly tangentialPressure: number;
11017    readonly tiltX: number;
11018    readonly tiltY: number;
11019    readonly twist: number;
11020    readonly width: number;
11021    /** Available only in secure contexts. */
11022    getCoalescedEvents(): PointerEvent[];
11023    getPredictedEvents(): PointerEvent[];
11024}
11025
11026declare var PointerEvent: {
11027    prototype: PointerEvent;
11028    new(type: string, eventInitDict?: PointerEventInit): PointerEvent;
11029};
11030
11031/** PopStateEvent is an event handler for the popstate event on the window. */
11032interface PopStateEvent extends Event {
11033    /** Returns a copy of the information that was provided to pushState() or replaceState(). */
11034    readonly state: any;
11035}
11036
11037declare var PopStateEvent: {
11038    prototype: PopStateEvent;
11039    new(type: string, eventInitDict?: PopStateEventInit): PopStateEvent;
11040};
11041
11042/** A processing instruction embeds application-specific instructions in XML which can be ignored by other applications that don't recognize them. */
11043interface ProcessingInstruction extends CharacterData, LinkStyle {
11044    readonly ownerDocument: Document;
11045    readonly target: string;
11046}
11047
11048declare var ProcessingInstruction: {
11049    prototype: ProcessingInstruction;
11050    new(): ProcessingInstruction;
11051};
11052
11053/** Events measuring progress of an underlying process, like an HTTP request (for an XMLHttpRequest, or the loading of the underlying resource of an <img>, <audio>, <video>, <style> or <link>). */
11054interface ProgressEvent<T extends EventTarget = EventTarget> extends Event {
11055    readonly lengthComputable: boolean;
11056    readonly loaded: number;
11057    readonly target: T | null;
11058    readonly total: number;
11059}
11060
11061declare var ProgressEvent: {
11062    prototype: ProgressEvent;
11063    new(type: string, eventInitDict?: ProgressEventInit): ProgressEvent;
11064};
11065
11066interface PromiseRejectionEvent extends Event {
11067    readonly promise: Promise<any>;
11068    readonly reason: any;
11069}
11070
11071declare var PromiseRejectionEvent: {
11072    prototype: PromiseRejectionEvent;
11073    new(type: string, eventInitDict: PromiseRejectionEventInit): PromiseRejectionEvent;
11074};
11075
11076/** Available only in secure contexts. */
11077interface PublicKeyCredential extends Credential {
11078    readonly authenticatorAttachment: string | null;
11079    readonly rawId: ArrayBuffer;
11080    readonly response: AuthenticatorResponse;
11081    getClientExtensionResults(): AuthenticationExtensionsClientOutputs;
11082}
11083
11084declare var PublicKeyCredential: {
11085    prototype: PublicKeyCredential;
11086    new(): PublicKeyCredential;
11087    isUserVerifyingPlatformAuthenticatorAvailable(): Promise<boolean>;
11088};
11089
11090/**
11091 * This Push API interface provides a way to receive notifications from third-party servers as well as request URLs for push notifications.
11092 * Available only in secure contexts.
11093 */
11094interface PushManager {
11095    getSubscription(): Promise<PushSubscription | null>;
11096    permissionState(options?: PushSubscriptionOptionsInit): Promise<PermissionState>;
11097    subscribe(options?: PushSubscriptionOptionsInit): Promise<PushSubscription>;
11098}
11099
11100declare var PushManager: {
11101    prototype: PushManager;
11102    new(): PushManager;
11103    readonly supportedContentEncodings: ReadonlyArray<string>;
11104};
11105
11106/**
11107 * This Push API interface provides a subcription's URL endpoint and allows unsubscription from a push service.
11108 * Available only in secure contexts.
11109 */
11110interface PushSubscription {
11111    readonly endpoint: string;
11112    readonly expirationTime: EpochTimeStamp | null;
11113    readonly options: PushSubscriptionOptions;
11114    getKey(name: PushEncryptionKeyName): ArrayBuffer | null;
11115    toJSON(): PushSubscriptionJSON;
11116    unsubscribe(): Promise<boolean>;
11117}
11118
11119declare var PushSubscription: {
11120    prototype: PushSubscription;
11121    new(): PushSubscription;
11122};
11123
11124/** Available only in secure contexts. */
11125interface PushSubscriptionOptions {
11126    readonly applicationServerKey: ArrayBuffer | null;
11127    readonly userVisibleOnly: boolean;
11128}
11129
11130declare var PushSubscriptionOptions: {
11131    prototype: PushSubscriptionOptions;
11132    new(): PushSubscriptionOptions;
11133};
11134
11135interface RTCCertificate {
11136    readonly expires: EpochTimeStamp;
11137    getFingerprints(): RTCDtlsFingerprint[];
11138}
11139
11140declare var RTCCertificate: {
11141    prototype: RTCCertificate;
11142    new(): RTCCertificate;
11143};
11144
11145interface RTCDTMFSenderEventMap {
11146    "tonechange": RTCDTMFToneChangeEvent;
11147}
11148
11149interface RTCDTMFSender extends EventTarget {
11150    readonly canInsertDTMF: boolean;
11151    ontonechange: ((this: RTCDTMFSender, ev: RTCDTMFToneChangeEvent) => any) | null;
11152    readonly toneBuffer: string;
11153    insertDTMF(tones: string, duration?: number, interToneGap?: number): void;
11154    addEventListener<K extends keyof RTCDTMFSenderEventMap>(type: K, listener: (this: RTCDTMFSender, ev: RTCDTMFSenderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11155    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11156    removeEventListener<K extends keyof RTCDTMFSenderEventMap>(type: K, listener: (this: RTCDTMFSender, ev: RTCDTMFSenderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11157    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11158}
11159
11160declare var RTCDTMFSender: {
11161    prototype: RTCDTMFSender;
11162    new(): RTCDTMFSender;
11163};
11164
11165/** Events sent to indicate that DTMF tones have started or finished playing. This interface is used by the tonechange event. */
11166interface RTCDTMFToneChangeEvent extends Event {
11167    readonly tone: string;
11168}
11169
11170declare var RTCDTMFToneChangeEvent: {
11171    prototype: RTCDTMFToneChangeEvent;
11172    new(type: string, eventInitDict?: RTCDTMFToneChangeEventInit): RTCDTMFToneChangeEvent;
11173};
11174
11175interface RTCDataChannelEventMap {
11176    "bufferedamountlow": Event;
11177    "close": Event;
11178    "closing": Event;
11179    "error": Event;
11180    "message": MessageEvent;
11181    "open": Event;
11182}
11183
11184interface RTCDataChannel extends EventTarget {
11185    binaryType: BinaryType;
11186    readonly bufferedAmount: number;
11187    bufferedAmountLowThreshold: number;
11188    readonly id: number | null;
11189    readonly label: string;
11190    readonly maxPacketLifeTime: number | null;
11191    readonly maxRetransmits: number | null;
11192    readonly negotiated: boolean;
11193    onbufferedamountlow: ((this: RTCDataChannel, ev: Event) => any) | null;
11194    onclose: ((this: RTCDataChannel, ev: Event) => any) | null;
11195    onclosing: ((this: RTCDataChannel, ev: Event) => any) | null;
11196    onerror: ((this: RTCDataChannel, ev: Event) => any) | null;
11197    onmessage: ((this: RTCDataChannel, ev: MessageEvent) => any) | null;
11198    onopen: ((this: RTCDataChannel, ev: Event) => any) | null;
11199    readonly ordered: boolean;
11200    readonly protocol: string;
11201    readonly readyState: RTCDataChannelState;
11202    close(): void;
11203    send(data: string): void;
11204    send(data: Blob): void;
11205    send(data: ArrayBuffer): void;
11206    send(data: ArrayBufferView): void;
11207    addEventListener<K extends keyof RTCDataChannelEventMap>(type: K, listener: (this: RTCDataChannel, ev: RTCDataChannelEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11208    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11209    removeEventListener<K extends keyof RTCDataChannelEventMap>(type: K, listener: (this: RTCDataChannel, ev: RTCDataChannelEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11210    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11211}
11212
11213declare var RTCDataChannel: {
11214    prototype: RTCDataChannel;
11215    new(): RTCDataChannel;
11216};
11217
11218interface RTCDataChannelEvent extends Event {
11219    readonly channel: RTCDataChannel;
11220}
11221
11222declare var RTCDataChannelEvent: {
11223    prototype: RTCDataChannelEvent;
11224    new(type: string, eventInitDict: RTCDataChannelEventInit): RTCDataChannelEvent;
11225};
11226
11227interface RTCDtlsTransportEventMap {
11228    "error": Event;
11229    "statechange": Event;
11230}
11231
11232interface RTCDtlsTransport extends EventTarget {
11233    readonly iceTransport: RTCIceTransport;
11234    onerror: ((this: RTCDtlsTransport, ev: Event) => any) | null;
11235    onstatechange: ((this: RTCDtlsTransport, ev: Event) => any) | null;
11236    readonly state: RTCDtlsTransportState;
11237    getRemoteCertificates(): ArrayBuffer[];
11238    addEventListener<K extends keyof RTCDtlsTransportEventMap>(type: K, listener: (this: RTCDtlsTransport, ev: RTCDtlsTransportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11239    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11240    removeEventListener<K extends keyof RTCDtlsTransportEventMap>(type: K, listener: (this: RTCDtlsTransport, ev: RTCDtlsTransportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11241    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11242}
11243
11244declare var RTCDtlsTransport: {
11245    prototype: RTCDtlsTransport;
11246    new(): RTCDtlsTransport;
11247};
11248
11249interface RTCEncodedAudioFrame {
11250    data: ArrayBuffer;
11251    readonly timestamp: number;
11252    getMetadata(): RTCEncodedAudioFrameMetadata;
11253}
11254
11255declare var RTCEncodedAudioFrame: {
11256    prototype: RTCEncodedAudioFrame;
11257    new(): RTCEncodedAudioFrame;
11258};
11259
11260interface RTCEncodedVideoFrame {
11261    data: ArrayBuffer;
11262    readonly timestamp: number;
11263    readonly type: RTCEncodedVideoFrameType;
11264    getMetadata(): RTCEncodedVideoFrameMetadata;
11265}
11266
11267declare var RTCEncodedVideoFrame: {
11268    prototype: RTCEncodedVideoFrame;
11269    new(): RTCEncodedVideoFrame;
11270};
11271
11272interface RTCError extends DOMException {
11273    readonly errorDetail: RTCErrorDetailType;
11274    readonly receivedAlert: number | null;
11275    readonly sctpCauseCode: number | null;
11276    readonly sdpLineNumber: number | null;
11277    readonly sentAlert: number | null;
11278}
11279
11280declare var RTCError: {
11281    prototype: RTCError;
11282    new(init: RTCErrorInit, message?: string): RTCError;
11283};
11284
11285interface RTCErrorEvent extends Event {
11286    readonly error: RTCError;
11287}
11288
11289declare var RTCErrorEvent: {
11290    prototype: RTCErrorEvent;
11291    new(type: string, eventInitDict: RTCErrorEventInit): RTCErrorEvent;
11292};
11293
11294/** The RTCIceCandidate interface—part of the WebRTC API—represents a candidate Internet Connectivity Establishment (ICE) configuration which may be used to establish an RTCPeerConnection. */
11295interface RTCIceCandidate {
11296    readonly address: string | null;
11297    readonly candidate: string;
11298    readonly component: RTCIceComponent | null;
11299    readonly foundation: string | null;
11300    readonly port: number | null;
11301    readonly priority: number | null;
11302    readonly protocol: RTCIceProtocol | null;
11303    readonly relatedAddress: string | null;
11304    readonly relatedPort: number | null;
11305    readonly sdpMLineIndex: number | null;
11306    readonly sdpMid: string | null;
11307    readonly tcpType: RTCIceTcpCandidateType | null;
11308    readonly type: RTCIceCandidateType | null;
11309    readonly usernameFragment: string | null;
11310    toJSON(): RTCIceCandidateInit;
11311}
11312
11313declare var RTCIceCandidate: {
11314    prototype: RTCIceCandidate;
11315    new(candidateInitDict?: RTCIceCandidateInit): RTCIceCandidate;
11316};
11317
11318interface RTCIceTransportEventMap {
11319    "gatheringstatechange": Event;
11320    "statechange": Event;
11321}
11322
11323/** Provides access to information about the ICE transport layer over which the data is being sent and received. */
11324interface RTCIceTransport extends EventTarget {
11325    readonly gatheringState: RTCIceGathererState;
11326    ongatheringstatechange: ((this: RTCIceTransport, ev: Event) => any) | null;
11327    onstatechange: ((this: RTCIceTransport, ev: Event) => any) | null;
11328    readonly state: RTCIceTransportState;
11329    addEventListener<K extends keyof RTCIceTransportEventMap>(type: K, listener: (this: RTCIceTransport, ev: RTCIceTransportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11330    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11331    removeEventListener<K extends keyof RTCIceTransportEventMap>(type: K, listener: (this: RTCIceTransport, ev: RTCIceTransportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11332    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11333}
11334
11335declare var RTCIceTransport: {
11336    prototype: RTCIceTransport;
11337    new(): RTCIceTransport;
11338};
11339
11340interface RTCPeerConnectionEventMap {
11341    "connectionstatechange": Event;
11342    "datachannel": RTCDataChannelEvent;
11343    "icecandidate": RTCPeerConnectionIceEvent;
11344    "icecandidateerror": Event;
11345    "iceconnectionstatechange": Event;
11346    "icegatheringstatechange": Event;
11347    "negotiationneeded": Event;
11348    "signalingstatechange": Event;
11349    "track": RTCTrackEvent;
11350}
11351
11352/** A WebRTC connection between the local computer and a remote peer. It provides methods to connect to a remote peer, maintain and monitor the connection, and close the connection once it's no longer needed. */
11353interface RTCPeerConnection extends EventTarget {
11354    readonly canTrickleIceCandidates: boolean | null;
11355    readonly connectionState: RTCPeerConnectionState;
11356    readonly currentLocalDescription: RTCSessionDescription | null;
11357    readonly currentRemoteDescription: RTCSessionDescription | null;
11358    readonly iceConnectionState: RTCIceConnectionState;
11359    readonly iceGatheringState: RTCIceGatheringState;
11360    readonly localDescription: RTCSessionDescription | null;
11361    onconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
11362    ondatachannel: ((this: RTCPeerConnection, ev: RTCDataChannelEvent) => any) | null;
11363    onicecandidate: ((this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => any) | null;
11364    onicecandidateerror: ((this: RTCPeerConnection, ev: Event) => any) | null;
11365    oniceconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
11366    onicegatheringstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
11367    onnegotiationneeded: ((this: RTCPeerConnection, ev: Event) => any) | null;
11368    onsignalingstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
11369    ontrack: ((this: RTCPeerConnection, ev: RTCTrackEvent) => any) | null;
11370    readonly pendingLocalDescription: RTCSessionDescription | null;
11371    readonly pendingRemoteDescription: RTCSessionDescription | null;
11372    readonly remoteDescription: RTCSessionDescription | null;
11373    readonly sctp: RTCSctpTransport | null;
11374    readonly signalingState: RTCSignalingState;
11375    addIceCandidate(candidate?: RTCIceCandidateInit): Promise<void>;
11376    /** @deprecated */
11377    addIceCandidate(candidate: RTCIceCandidateInit, successCallback: VoidFunction, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;
11378    addTrack(track: MediaStreamTrack, ...streams: MediaStream[]): RTCRtpSender;
11379    addTransceiver(trackOrKind: MediaStreamTrack | string, init?: RTCRtpTransceiverInit): RTCRtpTransceiver;
11380    close(): void;
11381    createAnswer(options?: RTCAnswerOptions): Promise<RTCSessionDescriptionInit>;
11382    /** @deprecated */
11383    createAnswer(successCallback: RTCSessionDescriptionCallback, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;
11384    createDataChannel(label: string, dataChannelDict?: RTCDataChannelInit): RTCDataChannel;
11385    createOffer(options?: RTCOfferOptions): Promise<RTCSessionDescriptionInit>;
11386    /** @deprecated */
11387    createOffer(successCallback: RTCSessionDescriptionCallback, failureCallback: RTCPeerConnectionErrorCallback, options?: RTCOfferOptions): Promise<void>;
11388    getConfiguration(): RTCConfiguration;
11389    getReceivers(): RTCRtpReceiver[];
11390    getSenders(): RTCRtpSender[];
11391    getStats(selector?: MediaStreamTrack | null): Promise<RTCStatsReport>;
11392    getTransceivers(): RTCRtpTransceiver[];
11393    removeTrack(sender: RTCRtpSender): void;
11394    restartIce(): void;
11395    setConfiguration(configuration?: RTCConfiguration): void;
11396    setLocalDescription(description?: RTCLocalSessionDescriptionInit): Promise<void>;
11397    /** @deprecated */
11398    setLocalDescription(description: RTCLocalSessionDescriptionInit, successCallback: VoidFunction, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;
11399    setRemoteDescription(description: RTCSessionDescriptionInit): Promise<void>;
11400    /** @deprecated */
11401    setRemoteDescription(description: RTCSessionDescriptionInit, successCallback: VoidFunction, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;
11402    addEventListener<K extends keyof RTCPeerConnectionEventMap>(type: K, listener: (this: RTCPeerConnection, ev: RTCPeerConnectionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11403    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11404    removeEventListener<K extends keyof RTCPeerConnectionEventMap>(type: K, listener: (this: RTCPeerConnection, ev: RTCPeerConnectionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11405    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11406}
11407
11408declare var RTCPeerConnection: {
11409    prototype: RTCPeerConnection;
11410    new(configuration?: RTCConfiguration): RTCPeerConnection;
11411    generateCertificate(keygenAlgorithm: AlgorithmIdentifier): Promise<RTCCertificate>;
11412};
11413
11414interface RTCPeerConnectionIceErrorEvent extends Event {
11415    readonly address: string | null;
11416    readonly errorCode: number;
11417    readonly errorText: string;
11418    readonly port: number | null;
11419    readonly url: string;
11420}
11421
11422declare var RTCPeerConnectionIceErrorEvent: {
11423    prototype: RTCPeerConnectionIceErrorEvent;
11424    new(type: string, eventInitDict: RTCPeerConnectionIceErrorEventInit): RTCPeerConnectionIceErrorEvent;
11425};
11426
11427/** Events that occurs in relation to ICE candidates with the target, usually an RTCPeerConnection. Only one event is of this type: icecandidate. */
11428interface RTCPeerConnectionIceEvent extends Event {
11429    readonly candidate: RTCIceCandidate | null;
11430}
11431
11432declare var RTCPeerConnectionIceEvent: {
11433    prototype: RTCPeerConnectionIceEvent;
11434    new(type: string, eventInitDict?: RTCPeerConnectionIceEventInit): RTCPeerConnectionIceEvent;
11435};
11436
11437/** This WebRTC API interface manages the reception and decoding of data for a MediaStreamTrack on an RTCPeerConnection. */
11438interface RTCRtpReceiver {
11439    readonly track: MediaStreamTrack;
11440    readonly transport: RTCDtlsTransport | null;
11441    getContributingSources(): RTCRtpContributingSource[];
11442    getParameters(): RTCRtpReceiveParameters;
11443    getStats(): Promise<RTCStatsReport>;
11444    getSynchronizationSources(): RTCRtpSynchronizationSource[];
11445}
11446
11447declare var RTCRtpReceiver: {
11448    prototype: RTCRtpReceiver;
11449    new(): RTCRtpReceiver;
11450    getCapabilities(kind: string): RTCRtpCapabilities | null;
11451};
11452
11453/** Provides the ability to control and obtain details about how a particular MediaStreamTrack is encoded and sent to a remote peer. */
11454interface RTCRtpSender {
11455    readonly dtmf: RTCDTMFSender | null;
11456    readonly track: MediaStreamTrack | null;
11457    readonly transport: RTCDtlsTransport | null;
11458    getParameters(): RTCRtpSendParameters;
11459    getStats(): Promise<RTCStatsReport>;
11460    replaceTrack(withTrack: MediaStreamTrack | null): Promise<void>;
11461    setParameters(parameters: RTCRtpSendParameters): Promise<void>;
11462    setStreams(...streams: MediaStream[]): void;
11463}
11464
11465declare var RTCRtpSender: {
11466    prototype: RTCRtpSender;
11467    new(): RTCRtpSender;
11468    getCapabilities(kind: string): RTCRtpCapabilities | null;
11469};
11470
11471interface RTCRtpTransceiver {
11472    readonly currentDirection: RTCRtpTransceiverDirection | null;
11473    direction: RTCRtpTransceiverDirection;
11474    readonly mid: string | null;
11475    readonly receiver: RTCRtpReceiver;
11476    readonly sender: RTCRtpSender;
11477    setCodecPreferences(codecs: RTCRtpCodecCapability[]): void;
11478    stop(): void;
11479}
11480
11481declare var RTCRtpTransceiver: {
11482    prototype: RTCRtpTransceiver;
11483    new(): RTCRtpTransceiver;
11484};
11485
11486interface RTCSctpTransportEventMap {
11487    "statechange": Event;
11488}
11489
11490interface RTCSctpTransport extends EventTarget {
11491    readonly maxChannels: number | null;
11492    readonly maxMessageSize: number;
11493    onstatechange: ((this: RTCSctpTransport, ev: Event) => any) | null;
11494    readonly state: RTCSctpTransportState;
11495    readonly transport: RTCDtlsTransport;
11496    addEventListener<K extends keyof RTCSctpTransportEventMap>(type: K, listener: (this: RTCSctpTransport, ev: RTCSctpTransportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11497    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11498    removeEventListener<K extends keyof RTCSctpTransportEventMap>(type: K, listener: (this: RTCSctpTransport, ev: RTCSctpTransportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11499    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11500}
11501
11502declare var RTCSctpTransport: {
11503    prototype: RTCSctpTransport;
11504    new(): RTCSctpTransport;
11505};
11506
11507/** One end of a connection—or potential connection—and how it's configured. Each RTCSessionDescription consists of a description type indicating which part of the offer/answer negotiation process it describes and of the SDP descriptor of the session. */
11508interface RTCSessionDescription {
11509    readonly sdp: string;
11510    readonly type: RTCSdpType;
11511    toJSON(): any;
11512}
11513
11514declare var RTCSessionDescription: {
11515    prototype: RTCSessionDescription;
11516    new(descriptionInitDict: RTCSessionDescriptionInit): RTCSessionDescription;
11517};
11518
11519interface RTCStatsReport {
11520    forEach(callbackfn: (value: any, key: string, parent: RTCStatsReport) => void, thisArg?: any): void;
11521}
11522
11523declare var RTCStatsReport: {
11524    prototype: RTCStatsReport;
11525    new(): RTCStatsReport;
11526};
11527
11528interface RTCTrackEvent extends Event {
11529    readonly receiver: RTCRtpReceiver;
11530    readonly streams: ReadonlyArray<MediaStream>;
11531    readonly track: MediaStreamTrack;
11532    readonly transceiver: RTCRtpTransceiver;
11533}
11534
11535declare var RTCTrackEvent: {
11536    prototype: RTCTrackEvent;
11537    new(type: string, eventInitDict: RTCTrackEventInit): RTCTrackEvent;
11538};
11539
11540interface RadioNodeList extends NodeList {
11541    value: string;
11542}
11543
11544declare var RadioNodeList: {
11545    prototype: RadioNodeList;
11546    new(): RadioNodeList;
11547};
11548
11549/** A fragment of a document that can contain nodes and parts of text nodes. */
11550interface Range extends AbstractRange {
11551    /** Returns the node, furthest away from the document, that is an ancestor of both range's start node and end node. */
11552    readonly commonAncestorContainer: Node;
11553    cloneContents(): DocumentFragment;
11554    cloneRange(): Range;
11555    collapse(toStart?: boolean): void;
11556    compareBoundaryPoints(how: number, sourceRange: Range): number;
11557    /** Returns −1 if the point is before the range, 0 if the point is in the range, and 1 if the point is after the range. */
11558    comparePoint(node: Node, offset: number): number;
11559    createContextualFragment(fragment: string): DocumentFragment;
11560    deleteContents(): void;
11561    detach(): void;
11562    extractContents(): DocumentFragment;
11563    getBoundingClientRect(): DOMRect;
11564    getClientRects(): DOMRectList;
11565    insertNode(node: Node): void;
11566    /** Returns whether range intersects node. */
11567    intersectsNode(node: Node): boolean;
11568    isPointInRange(node: Node, offset: number): boolean;
11569    selectNode(node: Node): void;
11570    selectNodeContents(node: Node): void;
11571    setEnd(node: Node, offset: number): void;
11572    setEndAfter(node: Node): void;
11573    setEndBefore(node: Node): void;
11574    setStart(node: Node, offset: number): void;
11575    setStartAfter(node: Node): void;
11576    setStartBefore(node: Node): void;
11577    surroundContents(newParent: Node): void;
11578    toString(): string;
11579    readonly END_TO_END: number;
11580    readonly END_TO_START: number;
11581    readonly START_TO_END: number;
11582    readonly START_TO_START: number;
11583}
11584
11585declare var Range: {
11586    prototype: Range;
11587    new(): Range;
11588    readonly END_TO_END: number;
11589    readonly END_TO_START: number;
11590    readonly START_TO_END: number;
11591    readonly START_TO_START: number;
11592    toString(): string;
11593};
11594
11595interface ReadableByteStreamController {
11596    readonly byobRequest: ReadableStreamBYOBRequest | null;
11597    readonly desiredSize: number | null;
11598    close(): void;
11599    enqueue(chunk: ArrayBufferView): void;
11600    error(e?: any): void;
11601}
11602
11603declare var ReadableByteStreamController: {
11604    prototype: ReadableByteStreamController;
11605    new(): ReadableByteStreamController;
11606};
11607
11608/** This Streams API interface represents a readable stream of byte data. The Fetch API offers a concrete instance of a ReadableStream through the body property of a Response object. */
11609interface ReadableStream<R = any> {
11610    readonly locked: boolean;
11611    cancel(reason?: any): Promise<void>;
11612    getReader(options: { mode: "byob" }): ReadableStreamBYOBReader;
11613    getReader(): ReadableStreamDefaultReader<R>;
11614    getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader<R>;
11615    pipeThrough<T>(transform: ReadableWritablePair<T, R>, options?: StreamPipeOptions): ReadableStream<T>;
11616    pipeTo(destination: WritableStream<R>, options?: StreamPipeOptions): Promise<void>;
11617    tee(): [ReadableStream<R>, ReadableStream<R>];
11618}
11619
11620declare var ReadableStream: {
11621    prototype: ReadableStream;
11622    new(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number }): ReadableStream<Uint8Array>;
11623    new<R = any>(underlyingSource: UnderlyingDefaultSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;
11624    new<R = any>(underlyingSource?: UnderlyingSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;
11625};
11626
11627interface ReadableStreamBYOBReader extends ReadableStreamGenericReader {
11628    read<T extends ArrayBufferView>(view: T): Promise<ReadableStreamReadResult<T>>;
11629    releaseLock(): void;
11630}
11631
11632declare var ReadableStreamBYOBReader: {
11633    prototype: ReadableStreamBYOBReader;
11634    new(stream: ReadableStream): ReadableStreamBYOBReader;
11635};
11636
11637interface ReadableStreamBYOBRequest {
11638    readonly view: ArrayBufferView | null;
11639    respond(bytesWritten: number): void;
11640    respondWithNewView(view: ArrayBufferView): void;
11641}
11642
11643declare var ReadableStreamBYOBRequest: {
11644    prototype: ReadableStreamBYOBRequest;
11645    new(): ReadableStreamBYOBRequest;
11646};
11647
11648interface ReadableStreamDefaultController<R = any> {
11649    readonly desiredSize: number | null;
11650    close(): void;
11651    enqueue(chunk?: R): void;
11652    error(e?: any): void;
11653}
11654
11655declare var ReadableStreamDefaultController: {
11656    prototype: ReadableStreamDefaultController;
11657    new(): ReadableStreamDefaultController;
11658};
11659
11660interface ReadableStreamDefaultReader<R = any> extends ReadableStreamGenericReader {
11661    read(): Promise<ReadableStreamReadResult<R>>;
11662    releaseLock(): void;
11663}
11664
11665declare var ReadableStreamDefaultReader: {
11666    prototype: ReadableStreamDefaultReader;
11667    new<R = any>(stream: ReadableStream<R>): ReadableStreamDefaultReader<R>;
11668};
11669
11670interface ReadableStreamGenericReader {
11671    readonly closed: Promise<undefined>;
11672    cancel(reason?: any): Promise<void>;
11673}
11674
11675interface RemotePlaybackEventMap {
11676    "connect": Event;
11677    "connecting": Event;
11678    "disconnect": Event;
11679}
11680
11681interface RemotePlayback extends EventTarget {
11682    onconnect: ((this: RemotePlayback, ev: Event) => any) | null;
11683    onconnecting: ((this: RemotePlayback, ev: Event) => any) | null;
11684    ondisconnect: ((this: RemotePlayback, ev: Event) => any) | null;
11685    readonly state: RemotePlaybackState;
11686    cancelWatchAvailability(id?: number): Promise<void>;
11687    prompt(): Promise<void>;
11688    watchAvailability(callback: RemotePlaybackAvailabilityCallback): Promise<number>;
11689    addEventListener<K extends keyof RemotePlaybackEventMap>(type: K, listener: (this: RemotePlayback, ev: RemotePlaybackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11690    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11691    removeEventListener<K extends keyof RemotePlaybackEventMap>(type: K, listener: (this: RemotePlayback, ev: RemotePlaybackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11692    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11693}
11694
11695declare var RemotePlayback: {
11696    prototype: RemotePlayback;
11697    new(): RemotePlayback;
11698};
11699
11700/** This Fetch API interface represents a resource request. */
11701interface Request extends Body {
11702    /** Returns the cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. */
11703    readonly cache: RequestCache;
11704    /** Returns the credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. */
11705    readonly credentials: RequestCredentials;
11706    /** Returns the kind of resource requested by request, e.g., "document" or "script". */
11707    readonly destination: RequestDestination;
11708    /** Returns a Headers object consisting of the headers associated with request. Note that headers added in the network layer by the user agent will not be accounted for in this object, e.g., the "Host" header. */
11709    readonly headers: Headers;
11710    /** Returns request's subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. [SRI] */
11711    readonly integrity: string;
11712    /** Returns a boolean indicating whether or not request can outlive the global in which it was created. */
11713    readonly keepalive: boolean;
11714    /** Returns request's HTTP method, which is "GET" by default. */
11715    readonly method: string;
11716    /** Returns the mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs. */
11717    readonly mode: RequestMode;
11718    /** Returns the redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. */
11719    readonly redirect: RequestRedirect;
11720    /** Returns the referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and "about:client" when defaulting to the global's default. This is used during fetching to determine the value of the `Referer` header of the request being made. */
11721    readonly referrer: string;
11722    /** Returns the referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. */
11723    readonly referrerPolicy: ReferrerPolicy;
11724    /** Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. */
11725    readonly signal: AbortSignal;
11726    /** Returns the URL of request as a string. */
11727    readonly url: string;
11728    clone(): Request;
11729}
11730
11731declare var Request: {
11732    prototype: Request;
11733    new(input: RequestInfo | URL, init?: RequestInit): Request;
11734};
11735
11736interface ResizeObserver {
11737    disconnect(): void;
11738    observe(target: Element, options?: ResizeObserverOptions): void;
11739    unobserve(target: Element): void;
11740}
11741
11742declare var ResizeObserver: {
11743    prototype: ResizeObserver;
11744    new(callback: ResizeObserverCallback): ResizeObserver;
11745};
11746
11747interface ResizeObserverEntry {
11748    readonly borderBoxSize: ReadonlyArray<ResizeObserverSize>;
11749    readonly contentBoxSize: ReadonlyArray<ResizeObserverSize>;
11750    readonly contentRect: DOMRectReadOnly;
11751    readonly devicePixelContentBoxSize: ReadonlyArray<ResizeObserverSize>;
11752    readonly target: Element;
11753}
11754
11755declare var ResizeObserverEntry: {
11756    prototype: ResizeObserverEntry;
11757    new(): ResizeObserverEntry;
11758};
11759
11760interface ResizeObserverSize {
11761    readonly blockSize: number;
11762    readonly inlineSize: number;
11763}
11764
11765declare var ResizeObserverSize: {
11766    prototype: ResizeObserverSize;
11767    new(): ResizeObserverSize;
11768};
11769
11770/** This Fetch API interface represents the response to a request. */
11771interface Response extends Body {
11772    readonly headers: Headers;
11773    readonly ok: boolean;
11774    readonly redirected: boolean;
11775    readonly status: number;
11776    readonly statusText: string;
11777    readonly type: ResponseType;
11778    readonly url: string;
11779    clone(): Response;
11780}
11781
11782declare var Response: {
11783    prototype: Response;
11784    new(body?: BodyInit | null, init?: ResponseInit): Response;
11785    error(): Response;
11786    redirect(url: string | URL, status?: number): Response;
11787};
11788
11789/** Provides access to the properties of <a> element, as well as methods to manipulate them. */
11790interface SVGAElement extends SVGGraphicsElement, SVGURIReference {
11791    rel: string;
11792    readonly relList: DOMTokenList;
11793    readonly target: SVGAnimatedString;
11794    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11795    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11796    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11797    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11798}
11799
11800declare var SVGAElement: {
11801    prototype: SVGAElement;
11802    new(): SVGAElement;
11803};
11804
11805/** Used to represent a value that can be an <angle> or <number> value. An SVGAngle reflected through the animVal attribute is always read only. */
11806interface SVGAngle {
11807    readonly unitType: number;
11808    value: number;
11809    valueAsString: string;
11810    valueInSpecifiedUnits: number;
11811    convertToSpecifiedUnits(unitType: number): void;
11812    newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void;
11813    readonly SVG_ANGLETYPE_DEG: number;
11814    readonly SVG_ANGLETYPE_GRAD: number;
11815    readonly SVG_ANGLETYPE_RAD: number;
11816    readonly SVG_ANGLETYPE_UNKNOWN: number;
11817    readonly SVG_ANGLETYPE_UNSPECIFIED: number;
11818}
11819
11820declare var SVGAngle: {
11821    prototype: SVGAngle;
11822    new(): SVGAngle;
11823    readonly SVG_ANGLETYPE_DEG: number;
11824    readonly SVG_ANGLETYPE_GRAD: number;
11825    readonly SVG_ANGLETYPE_RAD: number;
11826    readonly SVG_ANGLETYPE_UNKNOWN: number;
11827    readonly SVG_ANGLETYPE_UNSPECIFIED: number;
11828};
11829
11830interface SVGAnimateElement extends SVGAnimationElement {
11831    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11832    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11833    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11834    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11835}
11836
11837declare var SVGAnimateElement: {
11838    prototype: SVGAnimateElement;
11839    new(): SVGAnimateElement;
11840};
11841
11842interface SVGAnimateMotionElement extends SVGAnimationElement {
11843    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateMotionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11844    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11845    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateMotionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11846    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11847}
11848
11849declare var SVGAnimateMotionElement: {
11850    prototype: SVGAnimateMotionElement;
11851    new(): SVGAnimateMotionElement;
11852};
11853
11854interface SVGAnimateTransformElement extends SVGAnimationElement {
11855    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateTransformElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11856    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11857    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateTransformElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11858    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11859}
11860
11861declare var SVGAnimateTransformElement: {
11862    prototype: SVGAnimateTransformElement;
11863    new(): SVGAnimateTransformElement;
11864};
11865
11866/** Used for attributes of basic type <angle> which can be animated. */
11867interface SVGAnimatedAngle {
11868    readonly animVal: SVGAngle;
11869    readonly baseVal: SVGAngle;
11870}
11871
11872declare var SVGAnimatedAngle: {
11873    prototype: SVGAnimatedAngle;
11874    new(): SVGAnimatedAngle;
11875};
11876
11877/** Used for attributes of type boolean which can be animated. */
11878interface SVGAnimatedBoolean {
11879    readonly animVal: boolean;
11880    baseVal: boolean;
11881}
11882
11883declare var SVGAnimatedBoolean: {
11884    prototype: SVGAnimatedBoolean;
11885    new(): SVGAnimatedBoolean;
11886};
11887
11888/** Used for attributes whose value must be a constant from a particular enumeration and which can be animated. */
11889interface SVGAnimatedEnumeration {
11890    readonly animVal: number;
11891    baseVal: number;
11892}
11893
11894declare var SVGAnimatedEnumeration: {
11895    prototype: SVGAnimatedEnumeration;
11896    new(): SVGAnimatedEnumeration;
11897};
11898
11899/** Used for attributes of basic type <integer> which can be animated. */
11900interface SVGAnimatedInteger {
11901    readonly animVal: number;
11902    baseVal: number;
11903}
11904
11905declare var SVGAnimatedInteger: {
11906    prototype: SVGAnimatedInteger;
11907    new(): SVGAnimatedInteger;
11908};
11909
11910/** Used for attributes of basic type <length> which can be animated. */
11911interface SVGAnimatedLength {
11912    readonly animVal: SVGLength;
11913    readonly baseVal: SVGLength;
11914}
11915
11916declare var SVGAnimatedLength: {
11917    prototype: SVGAnimatedLength;
11918    new(): SVGAnimatedLength;
11919};
11920
11921/** Used for attributes of type SVGLengthList which can be animated. */
11922interface SVGAnimatedLengthList {
11923    readonly animVal: SVGLengthList;
11924    readonly baseVal: SVGLengthList;
11925}
11926
11927declare var SVGAnimatedLengthList: {
11928    prototype: SVGAnimatedLengthList;
11929    new(): SVGAnimatedLengthList;
11930};
11931
11932/** Used for attributes of basic type <Number> which can be animated. */
11933interface SVGAnimatedNumber {
11934    readonly animVal: number;
11935    baseVal: number;
11936}
11937
11938declare var SVGAnimatedNumber: {
11939    prototype: SVGAnimatedNumber;
11940    new(): SVGAnimatedNumber;
11941};
11942
11943/** The SVGAnimatedNumber interface is used for attributes which take a list of numbers and which can be animated. */
11944interface SVGAnimatedNumberList {
11945    readonly animVal: SVGNumberList;
11946    readonly baseVal: SVGNumberList;
11947}
11948
11949declare var SVGAnimatedNumberList: {
11950    prototype: SVGAnimatedNumberList;
11951    new(): SVGAnimatedNumberList;
11952};
11953
11954interface SVGAnimatedPoints {
11955    readonly animatedPoints: SVGPointList;
11956    readonly points: SVGPointList;
11957}
11958
11959/** Used for attributes of type SVGPreserveAspectRatio which can be animated. */
11960interface SVGAnimatedPreserveAspectRatio {
11961    readonly animVal: SVGPreserveAspectRatio;
11962    readonly baseVal: SVGPreserveAspectRatio;
11963}
11964
11965declare var SVGAnimatedPreserveAspectRatio: {
11966    prototype: SVGAnimatedPreserveAspectRatio;
11967    new(): SVGAnimatedPreserveAspectRatio;
11968};
11969
11970/** Used for attributes of basic SVGRect which can be animated. */
11971interface SVGAnimatedRect {
11972    readonly animVal: DOMRectReadOnly;
11973    readonly baseVal: DOMRect;
11974}
11975
11976declare var SVGAnimatedRect: {
11977    prototype: SVGAnimatedRect;
11978    new(): SVGAnimatedRect;
11979};
11980
11981/** The SVGAnimatedString interface represents string attributes which can be animated from each SVG declaration. You need to create SVG attribute before doing anything else, everything should be declared inside this. */
11982interface SVGAnimatedString {
11983    readonly animVal: string;
11984    baseVal: string;
11985}
11986
11987declare var SVGAnimatedString: {
11988    prototype: SVGAnimatedString;
11989    new(): SVGAnimatedString;
11990};
11991
11992/** Used for attributes which take a list of numbers and which can be animated. */
11993interface SVGAnimatedTransformList {
11994    readonly animVal: SVGTransformList;
11995    readonly baseVal: SVGTransformList;
11996}
11997
11998declare var SVGAnimatedTransformList: {
11999    prototype: SVGAnimatedTransformList;
12000    new(): SVGAnimatedTransformList;
12001};
12002
12003interface SVGAnimationElement extends SVGElement, SVGTests {
12004    readonly targetElement: SVGElement | null;
12005    beginElement(): void;
12006    beginElementAt(offset: number): void;
12007    endElement(): void;
12008    endElementAt(offset: number): void;
12009    getCurrentTime(): number;
12010    getSimpleDuration(): number;
12011    getStartTime(): number;
12012    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimationElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12013    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12014    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimationElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12015    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12016}
12017
12018declare var SVGAnimationElement: {
12019    prototype: SVGAnimationElement;
12020    new(): SVGAnimationElement;
12021};
12022
12023/** An interface for the <circle> element. The circle element is defined by the cx and cy attributes that denote the coordinates of the centre of the circle. */
12024interface SVGCircleElement extends SVGGeometryElement {
12025    readonly cx: SVGAnimatedLength;
12026    readonly cy: SVGAnimatedLength;
12027    readonly r: SVGAnimatedLength;
12028    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGCircleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12029    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12030    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGCircleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12031    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12032}
12033
12034declare var SVGCircleElement: {
12035    prototype: SVGCircleElement;
12036    new(): SVGCircleElement;
12037};
12038
12039/** Provides access to the properties of <clipPath> elements, as well as methods to manipulate them. */
12040interface SVGClipPathElement extends SVGElement {
12041    readonly clipPathUnits: SVGAnimatedEnumeration;
12042    readonly transform: SVGAnimatedTransformList;
12043    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGClipPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12044    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12045    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGClipPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12046    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12047}
12048
12049declare var SVGClipPathElement: {
12050    prototype: SVGClipPathElement;
12051    new(): SVGClipPathElement;
12052};
12053
12054/** A base interface used by the component transfer function interfaces. */
12055interface SVGComponentTransferFunctionElement extends SVGElement {
12056    readonly amplitude: SVGAnimatedNumber;
12057    readonly exponent: SVGAnimatedNumber;
12058    readonly intercept: SVGAnimatedNumber;
12059    readonly offset: SVGAnimatedNumber;
12060    readonly slope: SVGAnimatedNumber;
12061    readonly tableValues: SVGAnimatedNumberList;
12062    readonly type: SVGAnimatedEnumeration;
12063    readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number;
12064    readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number;
12065    readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number;
12066    readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number;
12067    readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number;
12068    readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number;
12069    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGComponentTransferFunctionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12070    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12071    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGComponentTransferFunctionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12072    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12073}
12074
12075declare var SVGComponentTransferFunctionElement: {
12076    prototype: SVGComponentTransferFunctionElement;
12077    new(): SVGComponentTransferFunctionElement;
12078    readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number;
12079    readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number;
12080    readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number;
12081    readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number;
12082    readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number;
12083    readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number;
12084};
12085
12086/** Corresponds to the <defs> element. */
12087interface SVGDefsElement extends SVGGraphicsElement {
12088    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDefsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12089    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12090    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDefsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12091    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12092}
12093
12094declare var SVGDefsElement: {
12095    prototype: SVGDefsElement;
12096    new(): SVGDefsElement;
12097};
12098
12099/** Corresponds to the <desc> element. */
12100interface SVGDescElement extends SVGElement {
12101    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDescElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12102    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12103    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDescElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12104    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12105}
12106
12107declare var SVGDescElement: {
12108    prototype: SVGDescElement;
12109    new(): SVGDescElement;
12110};
12111
12112interface SVGElementEventMap extends ElementEventMap, DocumentAndElementEventHandlersEventMap, GlobalEventHandlersEventMap {
12113}
12114
12115/** All of the SVG DOM interfaces that correspond directly to elements in the SVG language derive from the SVGElement interface. */
12116interface SVGElement extends Element, DocumentAndElementEventHandlers, ElementCSSInlineStyle, GlobalEventHandlers, HTMLOrSVGElement {
12117    /** @deprecated */
12118    readonly className: any;
12119    readonly ownerSVGElement: SVGSVGElement | null;
12120    readonly viewportElement: SVGElement | null;
12121    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12122    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12123    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12124    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12125}
12126
12127declare var SVGElement: {
12128    prototype: SVGElement;
12129    new(): SVGElement;
12130};
12131
12132/** Provides access to the properties of <ellipse> elements. */
12133interface SVGEllipseElement extends SVGGeometryElement {
12134    readonly cx: SVGAnimatedLength;
12135    readonly cy: SVGAnimatedLength;
12136    readonly rx: SVGAnimatedLength;
12137    readonly ry: SVGAnimatedLength;
12138    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGEllipseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12139    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12140    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGEllipseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12141    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12142}
12143
12144declare var SVGEllipseElement: {
12145    prototype: SVGEllipseElement;
12146    new(): SVGEllipseElement;
12147};
12148
12149/** Corresponds to the <feBlend> element. */
12150interface SVGFEBlendElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12151    readonly in1: SVGAnimatedString;
12152    readonly in2: SVGAnimatedString;
12153    readonly mode: SVGAnimatedEnumeration;
12154    readonly SVG_FEBLEND_MODE_COLOR: number;
12155    readonly SVG_FEBLEND_MODE_COLOR_BURN: number;
12156    readonly SVG_FEBLEND_MODE_COLOR_DODGE: number;
12157    readonly SVG_FEBLEND_MODE_DARKEN: number;
12158    readonly SVG_FEBLEND_MODE_DIFFERENCE: number;
12159    readonly SVG_FEBLEND_MODE_EXCLUSION: number;
12160    readonly SVG_FEBLEND_MODE_HARD_LIGHT: number;
12161    readonly SVG_FEBLEND_MODE_HUE: number;
12162    readonly SVG_FEBLEND_MODE_LIGHTEN: number;
12163    readonly SVG_FEBLEND_MODE_LUMINOSITY: number;
12164    readonly SVG_FEBLEND_MODE_MULTIPLY: number;
12165    readonly SVG_FEBLEND_MODE_NORMAL: number;
12166    readonly SVG_FEBLEND_MODE_OVERLAY: number;
12167    readonly SVG_FEBLEND_MODE_SATURATION: number;
12168    readonly SVG_FEBLEND_MODE_SCREEN: number;
12169    readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number;
12170    readonly SVG_FEBLEND_MODE_UNKNOWN: number;
12171    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEBlendElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12172    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12173    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEBlendElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12174    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12175}
12176
12177declare var SVGFEBlendElement: {
12178    prototype: SVGFEBlendElement;
12179    new(): SVGFEBlendElement;
12180    readonly SVG_FEBLEND_MODE_COLOR: number;
12181    readonly SVG_FEBLEND_MODE_COLOR_BURN: number;
12182    readonly SVG_FEBLEND_MODE_COLOR_DODGE: number;
12183    readonly SVG_FEBLEND_MODE_DARKEN: number;
12184    readonly SVG_FEBLEND_MODE_DIFFERENCE: number;
12185    readonly SVG_FEBLEND_MODE_EXCLUSION: number;
12186    readonly SVG_FEBLEND_MODE_HARD_LIGHT: number;
12187    readonly SVG_FEBLEND_MODE_HUE: number;
12188    readonly SVG_FEBLEND_MODE_LIGHTEN: number;
12189    readonly SVG_FEBLEND_MODE_LUMINOSITY: number;
12190    readonly SVG_FEBLEND_MODE_MULTIPLY: number;
12191    readonly SVG_FEBLEND_MODE_NORMAL: number;
12192    readonly SVG_FEBLEND_MODE_OVERLAY: number;
12193    readonly SVG_FEBLEND_MODE_SATURATION: number;
12194    readonly SVG_FEBLEND_MODE_SCREEN: number;
12195    readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number;
12196    readonly SVG_FEBLEND_MODE_UNKNOWN: number;
12197};
12198
12199/** Corresponds to the <feColorMatrix> element. */
12200interface SVGFEColorMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12201    readonly in1: SVGAnimatedString;
12202    readonly type: SVGAnimatedEnumeration;
12203    readonly values: SVGAnimatedNumberList;
12204    readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number;
12205    readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number;
12206    readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number;
12207    readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number;
12208    readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number;
12209    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEColorMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12210    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12211    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEColorMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12212    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12213}
12214
12215declare var SVGFEColorMatrixElement: {
12216    prototype: SVGFEColorMatrixElement;
12217    new(): SVGFEColorMatrixElement;
12218    readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number;
12219    readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number;
12220    readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number;
12221    readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number;
12222    readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number;
12223};
12224
12225/** Corresponds to the <feComponentTransfer> element. */
12226interface SVGFEComponentTransferElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12227    readonly in1: SVGAnimatedString;
12228    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEComponentTransferElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12229    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12230    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEComponentTransferElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12231    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12232}
12233
12234declare var SVGFEComponentTransferElement: {
12235    prototype: SVGFEComponentTransferElement;
12236    new(): SVGFEComponentTransferElement;
12237};
12238
12239/** Corresponds to the <feComposite> element. */
12240interface SVGFECompositeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12241    readonly in1: SVGAnimatedString;
12242    readonly in2: SVGAnimatedString;
12243    readonly k1: SVGAnimatedNumber;
12244    readonly k2: SVGAnimatedNumber;
12245    readonly k3: SVGAnimatedNumber;
12246    readonly k4: SVGAnimatedNumber;
12247    readonly operator: SVGAnimatedEnumeration;
12248    readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number;
12249    readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number;
12250    readonly SVG_FECOMPOSITE_OPERATOR_IN: number;
12251    readonly SVG_FECOMPOSITE_OPERATOR_OUT: number;
12252    readonly SVG_FECOMPOSITE_OPERATOR_OVER: number;
12253    readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number;
12254    readonly SVG_FECOMPOSITE_OPERATOR_XOR: number;
12255    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFECompositeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12256    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12257    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFECompositeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12258    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12259}
12260
12261declare var SVGFECompositeElement: {
12262    prototype: SVGFECompositeElement;
12263    new(): SVGFECompositeElement;
12264    readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number;
12265    readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number;
12266    readonly SVG_FECOMPOSITE_OPERATOR_IN: number;
12267    readonly SVG_FECOMPOSITE_OPERATOR_OUT: number;
12268    readonly SVG_FECOMPOSITE_OPERATOR_OVER: number;
12269    readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number;
12270    readonly SVG_FECOMPOSITE_OPERATOR_XOR: number;
12271};
12272
12273/** Corresponds to the <feConvolveMatrix> element. */
12274interface SVGFEConvolveMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12275    readonly bias: SVGAnimatedNumber;
12276    readonly divisor: SVGAnimatedNumber;
12277    readonly edgeMode: SVGAnimatedEnumeration;
12278    readonly in1: SVGAnimatedString;
12279    readonly kernelMatrix: SVGAnimatedNumberList;
12280    readonly kernelUnitLengthX: SVGAnimatedNumber;
12281    readonly kernelUnitLengthY: SVGAnimatedNumber;
12282    readonly orderX: SVGAnimatedInteger;
12283    readonly orderY: SVGAnimatedInteger;
12284    readonly preserveAlpha: SVGAnimatedBoolean;
12285    readonly targetX: SVGAnimatedInteger;
12286    readonly targetY: SVGAnimatedInteger;
12287    readonly SVG_EDGEMODE_DUPLICATE: number;
12288    readonly SVG_EDGEMODE_NONE: number;
12289    readonly SVG_EDGEMODE_UNKNOWN: number;
12290    readonly SVG_EDGEMODE_WRAP: number;
12291    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEConvolveMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12292    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12293    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEConvolveMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12294    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12295}
12296
12297declare var SVGFEConvolveMatrixElement: {
12298    prototype: SVGFEConvolveMatrixElement;
12299    new(): SVGFEConvolveMatrixElement;
12300    readonly SVG_EDGEMODE_DUPLICATE: number;
12301    readonly SVG_EDGEMODE_NONE: number;
12302    readonly SVG_EDGEMODE_UNKNOWN: number;
12303    readonly SVG_EDGEMODE_WRAP: number;
12304};
12305
12306/** Corresponds to the <feDiffuseLighting> element. */
12307interface SVGFEDiffuseLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12308    readonly diffuseConstant: SVGAnimatedNumber;
12309    readonly in1: SVGAnimatedString;
12310    readonly kernelUnitLengthX: SVGAnimatedNumber;
12311    readonly kernelUnitLengthY: SVGAnimatedNumber;
12312    readonly surfaceScale: SVGAnimatedNumber;
12313    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDiffuseLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12314    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12315    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDiffuseLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12316    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12317}
12318
12319declare var SVGFEDiffuseLightingElement: {
12320    prototype: SVGFEDiffuseLightingElement;
12321    new(): SVGFEDiffuseLightingElement;
12322};
12323
12324/** Corresponds to the <feDisplacementMap> element. */
12325interface SVGFEDisplacementMapElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12326    readonly in1: SVGAnimatedString;
12327    readonly in2: SVGAnimatedString;
12328    readonly scale: SVGAnimatedNumber;
12329    readonly xChannelSelector: SVGAnimatedEnumeration;
12330    readonly yChannelSelector: SVGAnimatedEnumeration;
12331    readonly SVG_CHANNEL_A: number;
12332    readonly SVG_CHANNEL_B: number;
12333    readonly SVG_CHANNEL_G: number;
12334    readonly SVG_CHANNEL_R: number;
12335    readonly SVG_CHANNEL_UNKNOWN: number;
12336    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDisplacementMapElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12337    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12338    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDisplacementMapElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12339    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12340}
12341
12342declare var SVGFEDisplacementMapElement: {
12343    prototype: SVGFEDisplacementMapElement;
12344    new(): SVGFEDisplacementMapElement;
12345    readonly SVG_CHANNEL_A: number;
12346    readonly SVG_CHANNEL_B: number;
12347    readonly SVG_CHANNEL_G: number;
12348    readonly SVG_CHANNEL_R: number;
12349    readonly SVG_CHANNEL_UNKNOWN: number;
12350};
12351
12352/** Corresponds to the <feDistantLight> element. */
12353interface SVGFEDistantLightElement extends SVGElement {
12354    readonly azimuth: SVGAnimatedNumber;
12355    readonly elevation: SVGAnimatedNumber;
12356    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDistantLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12357    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12358    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDistantLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12359    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12360}
12361
12362declare var SVGFEDistantLightElement: {
12363    prototype: SVGFEDistantLightElement;
12364    new(): SVGFEDistantLightElement;
12365};
12366
12367interface SVGFEDropShadowElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12368    readonly dx: SVGAnimatedNumber;
12369    readonly dy: SVGAnimatedNumber;
12370    readonly in1: SVGAnimatedString;
12371    readonly stdDeviationX: SVGAnimatedNumber;
12372    readonly stdDeviationY: SVGAnimatedNumber;
12373    setStdDeviation(stdDeviationX: number, stdDeviationY: number): void;
12374    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDropShadowElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12375    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12376    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDropShadowElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12377    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12378}
12379
12380declare var SVGFEDropShadowElement: {
12381    prototype: SVGFEDropShadowElement;
12382    new(): SVGFEDropShadowElement;
12383};
12384
12385/** Corresponds to the <feFlood> element. */
12386interface SVGFEFloodElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12387    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFloodElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12388    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12389    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFloodElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12390    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12391}
12392
12393declare var SVGFEFloodElement: {
12394    prototype: SVGFEFloodElement;
12395    new(): SVGFEFloodElement;
12396};
12397
12398/** Corresponds to the <feFuncA> element. */
12399interface SVGFEFuncAElement extends SVGComponentTransferFunctionElement {
12400    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12401    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12402    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12403    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12404}
12405
12406declare var SVGFEFuncAElement: {
12407    prototype: SVGFEFuncAElement;
12408    new(): SVGFEFuncAElement;
12409};
12410
12411/** Corresponds to the <feFuncB> element. */
12412interface SVGFEFuncBElement extends SVGComponentTransferFunctionElement {
12413    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncBElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12414    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12415    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncBElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12416    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12417}
12418
12419declare var SVGFEFuncBElement: {
12420    prototype: SVGFEFuncBElement;
12421    new(): SVGFEFuncBElement;
12422};
12423
12424/** Corresponds to the <feFuncG> element. */
12425interface SVGFEFuncGElement extends SVGComponentTransferFunctionElement {
12426    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12427    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12428    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12429    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12430}
12431
12432declare var SVGFEFuncGElement: {
12433    prototype: SVGFEFuncGElement;
12434    new(): SVGFEFuncGElement;
12435};
12436
12437/** Corresponds to the <feFuncR> element. */
12438interface SVGFEFuncRElement extends SVGComponentTransferFunctionElement {
12439    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncRElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12440    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12441    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncRElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12442    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12443}
12444
12445declare var SVGFEFuncRElement: {
12446    prototype: SVGFEFuncRElement;
12447    new(): SVGFEFuncRElement;
12448};
12449
12450/** Corresponds to the <feGaussianBlur> element. */
12451interface SVGFEGaussianBlurElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12452    readonly in1: SVGAnimatedString;
12453    readonly stdDeviationX: SVGAnimatedNumber;
12454    readonly stdDeviationY: SVGAnimatedNumber;
12455    setStdDeviation(stdDeviationX: number, stdDeviationY: number): void;
12456    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEGaussianBlurElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12457    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12458    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEGaussianBlurElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12459    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12460}
12461
12462declare var SVGFEGaussianBlurElement: {
12463    prototype: SVGFEGaussianBlurElement;
12464    new(): SVGFEGaussianBlurElement;
12465};
12466
12467/** Corresponds to the <feImage> element. */
12468interface SVGFEImageElement extends SVGElement, SVGFilterPrimitiveStandardAttributes, SVGURIReference {
12469    readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio;
12470    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12471    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12472    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12473    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12474}
12475
12476declare var SVGFEImageElement: {
12477    prototype: SVGFEImageElement;
12478    new(): SVGFEImageElement;
12479};
12480
12481/** Corresponds to the <feMerge> element. */
12482interface SVGFEMergeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12483    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12484    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12485    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12486    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12487}
12488
12489declare var SVGFEMergeElement: {
12490    prototype: SVGFEMergeElement;
12491    new(): SVGFEMergeElement;
12492};
12493
12494/** Corresponds to the <feMergeNode> element. */
12495interface SVGFEMergeNodeElement extends SVGElement {
12496    readonly in1: SVGAnimatedString;
12497    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeNodeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12498    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12499    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeNodeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12500    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12501}
12502
12503declare var SVGFEMergeNodeElement: {
12504    prototype: SVGFEMergeNodeElement;
12505    new(): SVGFEMergeNodeElement;
12506};
12507
12508/** Corresponds to the <feMorphology> element. */
12509interface SVGFEMorphologyElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12510    readonly in1: SVGAnimatedString;
12511    readonly operator: SVGAnimatedEnumeration;
12512    readonly radiusX: SVGAnimatedNumber;
12513    readonly radiusY: SVGAnimatedNumber;
12514    readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number;
12515    readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number;
12516    readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number;
12517    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMorphologyElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12518    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12519    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMorphologyElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12520    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12521}
12522
12523declare var SVGFEMorphologyElement: {
12524    prototype: SVGFEMorphologyElement;
12525    new(): SVGFEMorphologyElement;
12526    readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number;
12527    readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number;
12528    readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number;
12529};
12530
12531/** Corresponds to the <feOffset> element. */
12532interface SVGFEOffsetElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12533    readonly dx: SVGAnimatedNumber;
12534    readonly dy: SVGAnimatedNumber;
12535    readonly in1: SVGAnimatedString;
12536    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEOffsetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12537    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12538    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEOffsetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12539    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12540}
12541
12542declare var SVGFEOffsetElement: {
12543    prototype: SVGFEOffsetElement;
12544    new(): SVGFEOffsetElement;
12545};
12546
12547/** Corresponds to the <fePointLight> element. */
12548interface SVGFEPointLightElement extends SVGElement {
12549    readonly x: SVGAnimatedNumber;
12550    readonly y: SVGAnimatedNumber;
12551    readonly z: SVGAnimatedNumber;
12552    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEPointLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12553    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12554    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEPointLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12555    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12556}
12557
12558declare var SVGFEPointLightElement: {
12559    prototype: SVGFEPointLightElement;
12560    new(): SVGFEPointLightElement;
12561};
12562
12563/** Corresponds to the <feSpecularLighting> element. */
12564interface SVGFESpecularLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12565    readonly in1: SVGAnimatedString;
12566    readonly kernelUnitLengthX: SVGAnimatedNumber;
12567    readonly kernelUnitLengthY: SVGAnimatedNumber;
12568    readonly specularConstant: SVGAnimatedNumber;
12569    readonly specularExponent: SVGAnimatedNumber;
12570    readonly surfaceScale: SVGAnimatedNumber;
12571    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpecularLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12572    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12573    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpecularLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12574    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12575}
12576
12577declare var SVGFESpecularLightingElement: {
12578    prototype: SVGFESpecularLightingElement;
12579    new(): SVGFESpecularLightingElement;
12580};
12581
12582/** Corresponds to the <feSpotLight> element. */
12583interface SVGFESpotLightElement extends SVGElement {
12584    readonly limitingConeAngle: SVGAnimatedNumber;
12585    readonly pointsAtX: SVGAnimatedNumber;
12586    readonly pointsAtY: SVGAnimatedNumber;
12587    readonly pointsAtZ: SVGAnimatedNumber;
12588    readonly specularExponent: SVGAnimatedNumber;
12589    readonly x: SVGAnimatedNumber;
12590    readonly y: SVGAnimatedNumber;
12591    readonly z: SVGAnimatedNumber;
12592    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpotLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12593    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12594    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpotLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12595    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12596}
12597
12598declare var SVGFESpotLightElement: {
12599    prototype: SVGFESpotLightElement;
12600    new(): SVGFESpotLightElement;
12601};
12602
12603/** Corresponds to the <feTile> element. */
12604interface SVGFETileElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12605    readonly in1: SVGAnimatedString;
12606    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETileElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12607    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12608    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETileElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12609    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12610}
12611
12612declare var SVGFETileElement: {
12613    prototype: SVGFETileElement;
12614    new(): SVGFETileElement;
12615};
12616
12617/** Corresponds to the <feTurbulence> element. */
12618interface SVGFETurbulenceElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12619    readonly baseFrequencyX: SVGAnimatedNumber;
12620    readonly baseFrequencyY: SVGAnimatedNumber;
12621    readonly numOctaves: SVGAnimatedInteger;
12622    readonly seed: SVGAnimatedNumber;
12623    readonly stitchTiles: SVGAnimatedEnumeration;
12624    readonly type: SVGAnimatedEnumeration;
12625    readonly SVG_STITCHTYPE_NOSTITCH: number;
12626    readonly SVG_STITCHTYPE_STITCH: number;
12627    readonly SVG_STITCHTYPE_UNKNOWN: number;
12628    readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number;
12629    readonly SVG_TURBULENCE_TYPE_TURBULENCE: number;
12630    readonly SVG_TURBULENCE_TYPE_UNKNOWN: number;
12631    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETurbulenceElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12632    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12633    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETurbulenceElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12634    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12635}
12636
12637declare var SVGFETurbulenceElement: {
12638    prototype: SVGFETurbulenceElement;
12639    new(): SVGFETurbulenceElement;
12640    readonly SVG_STITCHTYPE_NOSTITCH: number;
12641    readonly SVG_STITCHTYPE_STITCH: number;
12642    readonly SVG_STITCHTYPE_UNKNOWN: number;
12643    readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number;
12644    readonly SVG_TURBULENCE_TYPE_TURBULENCE: number;
12645    readonly SVG_TURBULENCE_TYPE_UNKNOWN: number;
12646};
12647
12648/** Provides access to the properties of <filter> elements, as well as methods to manipulate them. */
12649interface SVGFilterElement extends SVGElement, SVGURIReference {
12650    readonly filterUnits: SVGAnimatedEnumeration;
12651    readonly height: SVGAnimatedLength;
12652    readonly primitiveUnits: SVGAnimatedEnumeration;
12653    readonly width: SVGAnimatedLength;
12654    readonly x: SVGAnimatedLength;
12655    readonly y: SVGAnimatedLength;
12656    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFilterElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12657    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12658    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFilterElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12659    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12660}
12661
12662declare var SVGFilterElement: {
12663    prototype: SVGFilterElement;
12664    new(): SVGFilterElement;
12665};
12666
12667interface SVGFilterPrimitiveStandardAttributes {
12668    readonly height: SVGAnimatedLength;
12669    readonly result: SVGAnimatedString;
12670    readonly width: SVGAnimatedLength;
12671    readonly x: SVGAnimatedLength;
12672    readonly y: SVGAnimatedLength;
12673}
12674
12675interface SVGFitToViewBox {
12676    readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio;
12677    readonly viewBox: SVGAnimatedRect;
12678}
12679
12680/** Provides access to the properties of <foreignObject> elements, as well as methods to manipulate them. */
12681interface SVGForeignObjectElement extends SVGGraphicsElement {
12682    readonly height: SVGAnimatedLength;
12683    readonly width: SVGAnimatedLength;
12684    readonly x: SVGAnimatedLength;
12685    readonly y: SVGAnimatedLength;
12686    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGForeignObjectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12687    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12688    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGForeignObjectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12689    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12690}
12691
12692declare var SVGForeignObjectElement: {
12693    prototype: SVGForeignObjectElement;
12694    new(): SVGForeignObjectElement;
12695};
12696
12697/** Corresponds to the <g> element. */
12698interface SVGGElement extends SVGGraphicsElement {
12699    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12700    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12701    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12702    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12703}
12704
12705declare var SVGGElement: {
12706    prototype: SVGGElement;
12707    new(): SVGGElement;
12708};
12709
12710interface SVGGeometryElement extends SVGGraphicsElement {
12711    readonly pathLength: SVGAnimatedNumber;
12712    getPointAtLength(distance: number): DOMPoint;
12713    getTotalLength(): number;
12714    isPointInFill(point?: DOMPointInit): boolean;
12715    isPointInStroke(point?: DOMPointInit): boolean;
12716    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGeometryElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12717    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12718    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGeometryElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12719    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12720}
12721
12722declare var SVGGeometryElement: {
12723    prototype: SVGGeometryElement;
12724    new(): SVGGeometryElement;
12725};
12726
12727/** The SVGGradient interface is a base interface used by SVGLinearGradientElement and SVGRadialGradientElement. */
12728interface SVGGradientElement extends SVGElement, SVGURIReference {
12729    readonly gradientTransform: SVGAnimatedTransformList;
12730    readonly gradientUnits: SVGAnimatedEnumeration;
12731    readonly spreadMethod: SVGAnimatedEnumeration;
12732    readonly SVG_SPREADMETHOD_PAD: number;
12733    readonly SVG_SPREADMETHOD_REFLECT: number;
12734    readonly SVG_SPREADMETHOD_REPEAT: number;
12735    readonly SVG_SPREADMETHOD_UNKNOWN: number;
12736    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12737    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12738    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12739    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12740}
12741
12742declare var SVGGradientElement: {
12743    prototype: SVGGradientElement;
12744    new(): SVGGradientElement;
12745    readonly SVG_SPREADMETHOD_PAD: number;
12746    readonly SVG_SPREADMETHOD_REFLECT: number;
12747    readonly SVG_SPREADMETHOD_REPEAT: number;
12748    readonly SVG_SPREADMETHOD_UNKNOWN: number;
12749};
12750
12751/** SVG elements whose primary purpose is to directly render graphics into a group. */
12752interface SVGGraphicsElement extends SVGElement, SVGTests {
12753    readonly transform: SVGAnimatedTransformList;
12754    getBBox(options?: SVGBoundingBoxOptions): DOMRect;
12755    getCTM(): DOMMatrix | null;
12756    getScreenCTM(): DOMMatrix | null;
12757    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGraphicsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12758    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12759    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGraphicsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12760    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12761}
12762
12763declare var SVGGraphicsElement: {
12764    prototype: SVGGraphicsElement;
12765    new(): SVGGraphicsElement;
12766};
12767
12768/** Corresponds to the <image> element. */
12769interface SVGImageElement extends SVGGraphicsElement, SVGURIReference {
12770    readonly height: SVGAnimatedLength;
12771    readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio;
12772    readonly width: SVGAnimatedLength;
12773    readonly x: SVGAnimatedLength;
12774    readonly y: SVGAnimatedLength;
12775    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12776    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12777    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12778    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12779}
12780
12781declare var SVGImageElement: {
12782    prototype: SVGImageElement;
12783    new(): SVGImageElement;
12784};
12785
12786/** Correspond to the <length> basic data type. */
12787interface SVGLength {
12788    readonly unitType: number;
12789    value: number;
12790    valueAsString: string;
12791    valueInSpecifiedUnits: number;
12792    convertToSpecifiedUnits(unitType: number): void;
12793    newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void;
12794    readonly SVG_LENGTHTYPE_CM: number;
12795    readonly SVG_LENGTHTYPE_EMS: number;
12796    readonly SVG_LENGTHTYPE_EXS: number;
12797    readonly SVG_LENGTHTYPE_IN: number;
12798    readonly SVG_LENGTHTYPE_MM: number;
12799    readonly SVG_LENGTHTYPE_NUMBER: number;
12800    readonly SVG_LENGTHTYPE_PC: number;
12801    readonly SVG_LENGTHTYPE_PERCENTAGE: number;
12802    readonly SVG_LENGTHTYPE_PT: number;
12803    readonly SVG_LENGTHTYPE_PX: number;
12804    readonly SVG_LENGTHTYPE_UNKNOWN: number;
12805}
12806
12807declare var SVGLength: {
12808    prototype: SVGLength;
12809    new(): SVGLength;
12810    readonly SVG_LENGTHTYPE_CM: number;
12811    readonly SVG_LENGTHTYPE_EMS: number;
12812    readonly SVG_LENGTHTYPE_EXS: number;
12813    readonly SVG_LENGTHTYPE_IN: number;
12814    readonly SVG_LENGTHTYPE_MM: number;
12815    readonly SVG_LENGTHTYPE_NUMBER: number;
12816    readonly SVG_LENGTHTYPE_PC: number;
12817    readonly SVG_LENGTHTYPE_PERCENTAGE: number;
12818    readonly SVG_LENGTHTYPE_PT: number;
12819    readonly SVG_LENGTHTYPE_PX: number;
12820    readonly SVG_LENGTHTYPE_UNKNOWN: number;
12821};
12822
12823/** The SVGLengthList defines a list of SVGLength objects. */
12824interface SVGLengthList {
12825    readonly length: number;
12826    readonly numberOfItems: number;
12827    appendItem(newItem: SVGLength): SVGLength;
12828    clear(): void;
12829    getItem(index: number): SVGLength;
12830    initialize(newItem: SVGLength): SVGLength;
12831    insertItemBefore(newItem: SVGLength, index: number): SVGLength;
12832    removeItem(index: number): SVGLength;
12833    replaceItem(newItem: SVGLength, index: number): SVGLength;
12834    [index: number]: SVGLength;
12835}
12836
12837declare var SVGLengthList: {
12838    prototype: SVGLengthList;
12839    new(): SVGLengthList;
12840};
12841
12842/** Provides access to the properties of <line> elements, as well as methods to manipulate them. */
12843interface SVGLineElement extends SVGGeometryElement {
12844    readonly x1: SVGAnimatedLength;
12845    readonly x2: SVGAnimatedLength;
12846    readonly y1: SVGAnimatedLength;
12847    readonly y2: SVGAnimatedLength;
12848    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12849    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12850    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12851    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12852}
12853
12854declare var SVGLineElement: {
12855    prototype: SVGLineElement;
12856    new(): SVGLineElement;
12857};
12858
12859/** Corresponds to the <linearGradient> element. */
12860interface SVGLinearGradientElement extends SVGGradientElement {
12861    readonly x1: SVGAnimatedLength;
12862    readonly x2: SVGAnimatedLength;
12863    readonly y1: SVGAnimatedLength;
12864    readonly y2: SVGAnimatedLength;
12865    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLinearGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12866    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12867    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLinearGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12868    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12869}
12870
12871declare var SVGLinearGradientElement: {
12872    prototype: SVGLinearGradientElement;
12873    new(): SVGLinearGradientElement;
12874};
12875
12876interface SVGMPathElement extends SVGElement, SVGURIReference {
12877    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12878    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12879    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12880    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12881}
12882
12883declare var SVGMPathElement: {
12884    prototype: SVGMPathElement;
12885    new(): SVGMPathElement;
12886};
12887
12888interface SVGMarkerElement extends SVGElement, SVGFitToViewBox {
12889    readonly markerHeight: SVGAnimatedLength;
12890    readonly markerUnits: SVGAnimatedEnumeration;
12891    readonly markerWidth: SVGAnimatedLength;
12892    readonly orientAngle: SVGAnimatedAngle;
12893    readonly orientType: SVGAnimatedEnumeration;
12894    readonly refX: SVGAnimatedLength;
12895    readonly refY: SVGAnimatedLength;
12896    setOrientToAngle(angle: SVGAngle): void;
12897    setOrientToAuto(): void;
12898    readonly SVG_MARKERUNITS_STROKEWIDTH: number;
12899    readonly SVG_MARKERUNITS_UNKNOWN: number;
12900    readonly SVG_MARKERUNITS_USERSPACEONUSE: number;
12901    readonly SVG_MARKER_ORIENT_ANGLE: number;
12902    readonly SVG_MARKER_ORIENT_AUTO: number;
12903    readonly SVG_MARKER_ORIENT_UNKNOWN: number;
12904    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMarkerElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12905    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12906    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMarkerElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12907    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12908}
12909
12910declare var SVGMarkerElement: {
12911    prototype: SVGMarkerElement;
12912    new(): SVGMarkerElement;
12913    readonly SVG_MARKERUNITS_STROKEWIDTH: number;
12914    readonly SVG_MARKERUNITS_UNKNOWN: number;
12915    readonly SVG_MARKERUNITS_USERSPACEONUSE: number;
12916    readonly SVG_MARKER_ORIENT_ANGLE: number;
12917    readonly SVG_MARKER_ORIENT_AUTO: number;
12918    readonly SVG_MARKER_ORIENT_UNKNOWN: number;
12919};
12920
12921/** Provides access to the properties of <mask> elements, as well as methods to manipulate them. */
12922interface SVGMaskElement extends SVGElement {
12923    readonly height: SVGAnimatedLength;
12924    readonly maskContentUnits: SVGAnimatedEnumeration;
12925    readonly maskUnits: SVGAnimatedEnumeration;
12926    readonly width: SVGAnimatedLength;
12927    readonly x: SVGAnimatedLength;
12928    readonly y: SVGAnimatedLength;
12929    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMaskElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12930    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12931    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMaskElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12932    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12933}
12934
12935declare var SVGMaskElement: {
12936    prototype: SVGMaskElement;
12937    new(): SVGMaskElement;
12938};
12939
12940/** Corresponds to the <metadata> element. */
12941interface SVGMetadataElement extends SVGElement {
12942    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMetadataElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12943    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12944    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMetadataElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12945    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12946}
12947
12948declare var SVGMetadataElement: {
12949    prototype: SVGMetadataElement;
12950    new(): SVGMetadataElement;
12951};
12952
12953/** Corresponds to the <number> basic data type. */
12954interface SVGNumber {
12955    value: number;
12956}
12957
12958declare var SVGNumber: {
12959    prototype: SVGNumber;
12960    new(): SVGNumber;
12961};
12962
12963/** The SVGNumberList defines a list of SVGNumber objects. */
12964interface SVGNumberList {
12965    readonly length: number;
12966    readonly numberOfItems: number;
12967    appendItem(newItem: SVGNumber): SVGNumber;
12968    clear(): void;
12969    getItem(index: number): SVGNumber;
12970    initialize(newItem: SVGNumber): SVGNumber;
12971    insertItemBefore(newItem: SVGNumber, index: number): SVGNumber;
12972    removeItem(index: number): SVGNumber;
12973    replaceItem(newItem: SVGNumber, index: number): SVGNumber;
12974    [index: number]: SVGNumber;
12975}
12976
12977declare var SVGNumberList: {
12978    prototype: SVGNumberList;
12979    new(): SVGNumberList;
12980};
12981
12982/** Corresponds to the <path> element. */
12983interface SVGPathElement extends SVGGeometryElement {
12984    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12985    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12986    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12987    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12988}
12989
12990declare var SVGPathElement: {
12991    prototype: SVGPathElement;
12992    new(): SVGPathElement;
12993};
12994
12995/** Corresponds to the <pattern> element. */
12996interface SVGPatternElement extends SVGElement, SVGFitToViewBox, SVGURIReference {
12997    readonly height: SVGAnimatedLength;
12998    readonly patternContentUnits: SVGAnimatedEnumeration;
12999    readonly patternTransform: SVGAnimatedTransformList;
13000    readonly patternUnits: SVGAnimatedEnumeration;
13001    readonly width: SVGAnimatedLength;
13002    readonly x: SVGAnimatedLength;
13003    readonly y: SVGAnimatedLength;
13004    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPatternElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13005    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13006    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPatternElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13007    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13008}
13009
13010declare var SVGPatternElement: {
13011    prototype: SVGPatternElement;
13012    new(): SVGPatternElement;
13013};
13014
13015interface SVGPointList {
13016    readonly length: number;
13017    readonly numberOfItems: number;
13018    appendItem(newItem: DOMPoint): DOMPoint;
13019    clear(): void;
13020    getItem(index: number): DOMPoint;
13021    initialize(newItem: DOMPoint): DOMPoint;
13022    insertItemBefore(newItem: DOMPoint, index: number): DOMPoint;
13023    removeItem(index: number): DOMPoint;
13024    replaceItem(newItem: DOMPoint, index: number): DOMPoint;
13025    [index: number]: DOMPoint;
13026}
13027
13028declare var SVGPointList: {
13029    prototype: SVGPointList;
13030    new(): SVGPointList;
13031};
13032
13033/** Provides access to the properties of <polygon> elements, as well as methods to manipulate them. */
13034interface SVGPolygonElement extends SVGGeometryElement, SVGAnimatedPoints {
13035    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolygonElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13036    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13037    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolygonElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13038    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13039}
13040
13041declare var SVGPolygonElement: {
13042    prototype: SVGPolygonElement;
13043    new(): SVGPolygonElement;
13044};
13045
13046/** Provides access to the properties of <polyline> elements, as well as methods to manipulate them. */
13047interface SVGPolylineElement extends SVGGeometryElement, SVGAnimatedPoints {
13048    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolylineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13049    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13050    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolylineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13051    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13052}
13053
13054declare var SVGPolylineElement: {
13055    prototype: SVGPolylineElement;
13056    new(): SVGPolylineElement;
13057};
13058
13059/** Corresponds to the preserveAspectRatio attribute, which is available for some of SVG's elements. */
13060interface SVGPreserveAspectRatio {
13061    align: number;
13062    meetOrSlice: number;
13063    readonly SVG_MEETORSLICE_MEET: number;
13064    readonly SVG_MEETORSLICE_SLICE: number;
13065    readonly SVG_MEETORSLICE_UNKNOWN: number;
13066    readonly SVG_PRESERVEASPECTRATIO_NONE: number;
13067    readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number;
13068    readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number;
13069    readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number;
13070    readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number;
13071    readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number;
13072    readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number;
13073    readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number;
13074    readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number;
13075    readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number;
13076    readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number;
13077}
13078
13079declare var SVGPreserveAspectRatio: {
13080    prototype: SVGPreserveAspectRatio;
13081    new(): SVGPreserveAspectRatio;
13082    readonly SVG_MEETORSLICE_MEET: number;
13083    readonly SVG_MEETORSLICE_SLICE: number;
13084    readonly SVG_MEETORSLICE_UNKNOWN: number;
13085    readonly SVG_PRESERVEASPECTRATIO_NONE: number;
13086    readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number;
13087    readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number;
13088    readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number;
13089    readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number;
13090    readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number;
13091    readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number;
13092    readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number;
13093    readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number;
13094    readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number;
13095    readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number;
13096};
13097
13098/** Corresponds to the <RadialGradient> element. */
13099interface SVGRadialGradientElement extends SVGGradientElement {
13100    readonly cx: SVGAnimatedLength;
13101    readonly cy: SVGAnimatedLength;
13102    readonly fr: SVGAnimatedLength;
13103    readonly fx: SVGAnimatedLength;
13104    readonly fy: SVGAnimatedLength;
13105    readonly r: SVGAnimatedLength;
13106    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRadialGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13107    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13108    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRadialGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13109    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13110}
13111
13112declare var SVGRadialGradientElement: {
13113    prototype: SVGRadialGradientElement;
13114    new(): SVGRadialGradientElement;
13115};
13116
13117/** Provides access to the properties of <rect> elements, as well as methods to manipulate them. */
13118interface SVGRectElement extends SVGGeometryElement {
13119    readonly height: SVGAnimatedLength;
13120    readonly rx: SVGAnimatedLength;
13121    readonly ry: SVGAnimatedLength;
13122    readonly width: SVGAnimatedLength;
13123    readonly x: SVGAnimatedLength;
13124    readonly y: SVGAnimatedLength;
13125    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13126    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13127    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13128    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13129}
13130
13131declare var SVGRectElement: {
13132    prototype: SVGRectElement;
13133    new(): SVGRectElement;
13134};
13135
13136interface SVGSVGElementEventMap extends SVGElementEventMap, WindowEventHandlersEventMap {
13137}
13138
13139/** Provides access to the properties of <svg> elements, as well as methods to manipulate them. This interface contains also various miscellaneous commonly-used utility methods, such as matrix operations and the ability to control the time of redraw on visual rendering devices. */
13140interface SVGSVGElement extends SVGGraphicsElement, SVGFitToViewBox, WindowEventHandlers {
13141    currentScale: number;
13142    readonly currentTranslate: DOMPointReadOnly;
13143    readonly height: SVGAnimatedLength;
13144    readonly width: SVGAnimatedLength;
13145    readonly x: SVGAnimatedLength;
13146    readonly y: SVGAnimatedLength;
13147    animationsPaused(): boolean;
13148    checkEnclosure(element: SVGElement, rect: DOMRectReadOnly): boolean;
13149    checkIntersection(element: SVGElement, rect: DOMRectReadOnly): boolean;
13150    createSVGAngle(): SVGAngle;
13151    createSVGLength(): SVGLength;
13152    createSVGMatrix(): DOMMatrix;
13153    createSVGNumber(): SVGNumber;
13154    createSVGPoint(): DOMPoint;
13155    createSVGRect(): DOMRect;
13156    createSVGTransform(): SVGTransform;
13157    createSVGTransformFromMatrix(matrix?: DOMMatrix2DInit): SVGTransform;
13158    deselectAll(): void;
13159    /** @deprecated */
13160    forceRedraw(): void;
13161    getCurrentTime(): number;
13162    getElementById(elementId: string): Element;
13163    getEnclosureList(rect: DOMRectReadOnly, referenceElement: SVGElement | null): NodeListOf<SVGCircleElement | SVGEllipseElement | SVGImageElement | SVGLineElement | SVGPathElement | SVGPolygonElement | SVGPolylineElement | SVGRectElement | SVGTextElement | SVGUseElement>;
13164    getIntersectionList(rect: DOMRectReadOnly, referenceElement: SVGElement | null): NodeListOf<SVGCircleElement | SVGEllipseElement | SVGImageElement | SVGLineElement | SVGPathElement | SVGPolygonElement | SVGPolylineElement | SVGRectElement | SVGTextElement | SVGUseElement>;
13165    pauseAnimations(): void;
13166    setCurrentTime(seconds: number): void;
13167    /** @deprecated */
13168    suspendRedraw(maxWaitMilliseconds: number): number;
13169    unpauseAnimations(): void;
13170    /** @deprecated */
13171    unsuspendRedraw(suspendHandleID: number): void;
13172    /** @deprecated */
13173    unsuspendRedrawAll(): void;
13174    addEventListener<K extends keyof SVGSVGElementEventMap>(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13175    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13176    removeEventListener<K extends keyof SVGSVGElementEventMap>(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13177    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13178}
13179
13180declare var SVGSVGElement: {
13181    prototype: SVGSVGElement;
13182    new(): SVGSVGElement;
13183};
13184
13185/** Corresponds to the SVG <script> element. */
13186interface SVGScriptElement extends SVGElement, SVGURIReference {
13187    type: string;
13188    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGScriptElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13189    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13190    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGScriptElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13191    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13192}
13193
13194declare var SVGScriptElement: {
13195    prototype: SVGScriptElement;
13196    new(): SVGScriptElement;
13197};
13198
13199interface SVGSetElement extends SVGAnimationElement {
13200    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13201    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13202    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13203    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13204}
13205
13206declare var SVGSetElement: {
13207    prototype: SVGSetElement;
13208    new(): SVGSetElement;
13209};
13210
13211/** Corresponds to the <stop> element. */
13212interface SVGStopElement extends SVGElement {
13213    readonly offset: SVGAnimatedNumber;
13214    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStopElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13215    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13216    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStopElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13217    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13218}
13219
13220declare var SVGStopElement: {
13221    prototype: SVGStopElement;
13222    new(): SVGStopElement;
13223};
13224
13225/** The SVGStringList defines a list of DOMString objects. */
13226interface SVGStringList {
13227    readonly length: number;
13228    readonly numberOfItems: number;
13229    appendItem(newItem: string): string;
13230    clear(): void;
13231    getItem(index: number): string;
13232    initialize(newItem: string): string;
13233    insertItemBefore(newItem: string, index: number): string;
13234    removeItem(index: number): string;
13235    replaceItem(newItem: string, index: number): string;
13236    [index: number]: string;
13237}
13238
13239declare var SVGStringList: {
13240    prototype: SVGStringList;
13241    new(): SVGStringList;
13242};
13243
13244/** Corresponds to the SVG <style> element. */
13245interface SVGStyleElement extends SVGElement, LinkStyle {
13246    disabled: boolean;
13247    media: string;
13248    title: string;
13249    /** @deprecated */
13250    type: string;
13251    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStyleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13252    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13253    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStyleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13254    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13255}
13256
13257declare var SVGStyleElement: {
13258    prototype: SVGStyleElement;
13259    new(): SVGStyleElement;
13260};
13261
13262/** Corresponds to the <switch> element. */
13263interface SVGSwitchElement extends SVGGraphicsElement {
13264    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSwitchElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13265    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13266    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSwitchElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13267    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13268}
13269
13270declare var SVGSwitchElement: {
13271    prototype: SVGSwitchElement;
13272    new(): SVGSwitchElement;
13273};
13274
13275/** Corresponds to the <symbol> element. */
13276interface SVGSymbolElement extends SVGElement, SVGFitToViewBox {
13277    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSymbolElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13278    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13279    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSymbolElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13280    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13281}
13282
13283declare var SVGSymbolElement: {
13284    prototype: SVGSymbolElement;
13285    new(): SVGSymbolElement;
13286};
13287
13288/** A <tspan> element. */
13289interface SVGTSpanElement extends SVGTextPositioningElement {
13290    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTSpanElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13291    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13292    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTSpanElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13293    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13294}
13295
13296declare var SVGTSpanElement: {
13297    prototype: SVGTSpanElement;
13298    new(): SVGTSpanElement;
13299};
13300
13301interface SVGTests {
13302    readonly requiredExtensions: SVGStringList;
13303    readonly systemLanguage: SVGStringList;
13304}
13305
13306/** Implemented by elements that support rendering child text content. It is inherited by various text-related interfaces, such as SVGTextElement, SVGTSpanElement, SVGTRefElement, SVGAltGlyphElement and SVGTextPathElement. */
13307interface SVGTextContentElement extends SVGGraphicsElement {
13308    readonly lengthAdjust: SVGAnimatedEnumeration;
13309    readonly textLength: SVGAnimatedLength;
13310    getCharNumAtPosition(point?: DOMPointInit): number;
13311    getComputedTextLength(): number;
13312    getEndPositionOfChar(charnum: number): DOMPoint;
13313    getExtentOfChar(charnum: number): DOMRect;
13314    getNumberOfChars(): number;
13315    getRotationOfChar(charnum: number): number;
13316    getStartPositionOfChar(charnum: number): DOMPoint;
13317    getSubStringLength(charnum: number, nchars: number): number;
13318    /** @deprecated */
13319    selectSubString(charnum: number, nchars: number): void;
13320    readonly LENGTHADJUST_SPACING: number;
13321    readonly LENGTHADJUST_SPACINGANDGLYPHS: number;
13322    readonly LENGTHADJUST_UNKNOWN: number;
13323    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextContentElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13324    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13325    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextContentElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13326    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13327}
13328
13329declare var SVGTextContentElement: {
13330    prototype: SVGTextContentElement;
13331    new(): SVGTextContentElement;
13332    readonly LENGTHADJUST_SPACING: number;
13333    readonly LENGTHADJUST_SPACINGANDGLYPHS: number;
13334    readonly LENGTHADJUST_UNKNOWN: number;
13335};
13336
13337/** Corresponds to the <text> elements. */
13338interface SVGTextElement extends SVGTextPositioningElement {
13339    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13340    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13341    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13342    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13343}
13344
13345declare var SVGTextElement: {
13346    prototype: SVGTextElement;
13347    new(): SVGTextElement;
13348};
13349
13350/** Corresponds to the <textPath> element. */
13351interface SVGTextPathElement extends SVGTextContentElement, SVGURIReference {
13352    readonly method: SVGAnimatedEnumeration;
13353    readonly spacing: SVGAnimatedEnumeration;
13354    readonly startOffset: SVGAnimatedLength;
13355    readonly TEXTPATH_METHODTYPE_ALIGN: number;
13356    readonly TEXTPATH_METHODTYPE_STRETCH: number;
13357    readonly TEXTPATH_METHODTYPE_UNKNOWN: number;
13358    readonly TEXTPATH_SPACINGTYPE_AUTO: number;
13359    readonly TEXTPATH_SPACINGTYPE_EXACT: number;
13360    readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number;
13361    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13362    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13363    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13364    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13365}
13366
13367declare var SVGTextPathElement: {
13368    prototype: SVGTextPathElement;
13369    new(): SVGTextPathElement;
13370    readonly TEXTPATH_METHODTYPE_ALIGN: number;
13371    readonly TEXTPATH_METHODTYPE_STRETCH: number;
13372    readonly TEXTPATH_METHODTYPE_UNKNOWN: number;
13373    readonly TEXTPATH_SPACINGTYPE_AUTO: number;
13374    readonly TEXTPATH_SPACINGTYPE_EXACT: number;
13375    readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number;
13376};
13377
13378/** Implemented by elements that support attributes that position individual text glyphs. It is inherited by SVGTextElement, SVGTSpanElement, SVGTRefElement and SVGAltGlyphElement. */
13379interface SVGTextPositioningElement extends SVGTextContentElement {
13380    readonly dx: SVGAnimatedLengthList;
13381    readonly dy: SVGAnimatedLengthList;
13382    readonly rotate: SVGAnimatedNumberList;
13383    readonly x: SVGAnimatedLengthList;
13384    readonly y: SVGAnimatedLengthList;
13385    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPositioningElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13386    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13387    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPositioningElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13388    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13389}
13390
13391declare var SVGTextPositioningElement: {
13392    prototype: SVGTextPositioningElement;
13393    new(): SVGTextPositioningElement;
13394};
13395
13396/** Corresponds to the <title> element. */
13397interface SVGTitleElement extends SVGElement {
13398    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTitleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13399    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13400    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTitleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13401    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13402}
13403
13404declare var SVGTitleElement: {
13405    prototype: SVGTitleElement;
13406    new(): SVGTitleElement;
13407};
13408
13409/** SVGTransform is the interface for one of the component transformations within an SVGTransformList; thus, an SVGTransform object corresponds to a single component (e.g., scale(…) or matrix(…)) within a transform attribute. */
13410interface SVGTransform {
13411    readonly angle: number;
13412    readonly matrix: DOMMatrix;
13413    readonly type: number;
13414    setMatrix(matrix?: DOMMatrix2DInit): void;
13415    setRotate(angle: number, cx: number, cy: number): void;
13416    setScale(sx: number, sy: number): void;
13417    setSkewX(angle: number): void;
13418    setSkewY(angle: number): void;
13419    setTranslate(tx: number, ty: number): void;
13420    readonly SVG_TRANSFORM_MATRIX: number;
13421    readonly SVG_TRANSFORM_ROTATE: number;
13422    readonly SVG_TRANSFORM_SCALE: number;
13423    readonly SVG_TRANSFORM_SKEWX: number;
13424    readonly SVG_TRANSFORM_SKEWY: number;
13425    readonly SVG_TRANSFORM_TRANSLATE: number;
13426    readonly SVG_TRANSFORM_UNKNOWN: number;
13427}
13428
13429declare var SVGTransform: {
13430    prototype: SVGTransform;
13431    new(): SVGTransform;
13432    readonly SVG_TRANSFORM_MATRIX: number;
13433    readonly SVG_TRANSFORM_ROTATE: number;
13434    readonly SVG_TRANSFORM_SCALE: number;
13435    readonly SVG_TRANSFORM_SKEWX: number;
13436    readonly SVG_TRANSFORM_SKEWY: number;
13437    readonly SVG_TRANSFORM_TRANSLATE: number;
13438    readonly SVG_TRANSFORM_UNKNOWN: number;
13439};
13440
13441/** The SVGTransformList defines a list of SVGTransform objects. */
13442interface SVGTransformList {
13443    readonly length: number;
13444    readonly numberOfItems: number;
13445    appendItem(newItem: SVGTransform): SVGTransform;
13446    clear(): void;
13447    consolidate(): SVGTransform | null;
13448    createSVGTransformFromMatrix(matrix?: DOMMatrix2DInit): SVGTransform;
13449    getItem(index: number): SVGTransform;
13450    initialize(newItem: SVGTransform): SVGTransform;
13451    insertItemBefore(newItem: SVGTransform, index: number): SVGTransform;
13452    removeItem(index: number): SVGTransform;
13453    replaceItem(newItem: SVGTransform, index: number): SVGTransform;
13454    [index: number]: SVGTransform;
13455}
13456
13457declare var SVGTransformList: {
13458    prototype: SVGTransformList;
13459    new(): SVGTransformList;
13460};
13461
13462interface SVGURIReference {
13463    readonly href: SVGAnimatedString;
13464}
13465
13466/** A commonly used set of constants used for reflecting gradientUnits, patternContentUnits and other similar attributes. */
13467interface SVGUnitTypes {
13468    readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number;
13469    readonly SVG_UNIT_TYPE_UNKNOWN: number;
13470    readonly SVG_UNIT_TYPE_USERSPACEONUSE: number;
13471}
13472
13473declare var SVGUnitTypes: {
13474    prototype: SVGUnitTypes;
13475    new(): SVGUnitTypes;
13476    readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number;
13477    readonly SVG_UNIT_TYPE_UNKNOWN: number;
13478    readonly SVG_UNIT_TYPE_USERSPACEONUSE: number;
13479};
13480
13481/** Corresponds to the <use> element. */
13482interface SVGUseElement extends SVGGraphicsElement, SVGURIReference {
13483    readonly height: SVGAnimatedLength;
13484    readonly width: SVGAnimatedLength;
13485    readonly x: SVGAnimatedLength;
13486    readonly y: SVGAnimatedLength;
13487    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGUseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13488    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13489    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGUseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13490    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13491}
13492
13493declare var SVGUseElement: {
13494    prototype: SVGUseElement;
13495    new(): SVGUseElement;
13496};
13497
13498/** Provides access to the properties of <view> elements, as well as methods to manipulate them. */
13499interface SVGViewElement extends SVGElement, SVGFitToViewBox {
13500    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGViewElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13501    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13502    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGViewElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13503    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13504}
13505
13506declare var SVGViewElement: {
13507    prototype: SVGViewElement;
13508    new(): SVGViewElement;
13509};
13510
13511/** A screen, usually the one on which the current window is being rendered, and is obtained using window.screen. */
13512interface Screen {
13513    readonly availHeight: number;
13514    readonly availWidth: number;
13515    readonly colorDepth: number;
13516    readonly height: number;
13517    readonly orientation: ScreenOrientation;
13518    readonly pixelDepth: number;
13519    readonly width: number;
13520}
13521
13522declare var Screen: {
13523    prototype: Screen;
13524    new(): Screen;
13525};
13526
13527interface ScreenOrientationEventMap {
13528    "change": Event;
13529}
13530
13531interface ScreenOrientation extends EventTarget {
13532    readonly angle: number;
13533    onchange: ((this: ScreenOrientation, ev: Event) => any) | null;
13534    readonly type: OrientationType;
13535    lock(orientation: OrientationLockType): Promise<void>;
13536    unlock(): void;
13537    addEventListener<K extends keyof ScreenOrientationEventMap>(type: K, listener: (this: ScreenOrientation, ev: ScreenOrientationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13538    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13539    removeEventListener<K extends keyof ScreenOrientationEventMap>(type: K, listener: (this: ScreenOrientation, ev: ScreenOrientationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13540    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13541}
13542
13543declare var ScreenOrientation: {
13544    prototype: ScreenOrientation;
13545    new(): ScreenOrientation;
13546};
13547
13548interface ScriptProcessorNodeEventMap {
13549    "audioprocess": AudioProcessingEvent;
13550}
13551
13552/**
13553 * Allows the generation, processing, or analyzing of audio using JavaScript.
13554 * @deprecated As of the August 29 2014 Web Audio API spec publication, this feature has been marked as deprecated, and was replaced by AudioWorklet (see AudioWorkletNode).
13555 */
13556interface ScriptProcessorNode extends AudioNode {
13557    /** @deprecated */
13558    readonly bufferSize: number;
13559    /** @deprecated */
13560    onaudioprocess: ((this: ScriptProcessorNode, ev: AudioProcessingEvent) => any) | null;
13561    addEventListener<K extends keyof ScriptProcessorNodeEventMap>(type: K, listener: (this: ScriptProcessorNode, ev: ScriptProcessorNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13562    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13563    removeEventListener<K extends keyof ScriptProcessorNodeEventMap>(type: K, listener: (this: ScriptProcessorNode, ev: ScriptProcessorNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13564    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13565}
13566
13567/** @deprecated */
13568declare var ScriptProcessorNode: {
13569    prototype: ScriptProcessorNode;
13570    new(): ScriptProcessorNode;
13571};
13572
13573/** Inherits from Event, and represents the event object of an event sent on a document or worker when its content security policy is violated. */
13574interface SecurityPolicyViolationEvent extends Event {
13575    readonly blockedURI: string;
13576    readonly columnNumber: number;
13577    readonly disposition: SecurityPolicyViolationEventDisposition;
13578    readonly documentURI: string;
13579    readonly effectiveDirective: string;
13580    readonly lineNumber: number;
13581    readonly originalPolicy: string;
13582    readonly referrer: string;
13583    readonly sample: string;
13584    readonly sourceFile: string;
13585    readonly statusCode: number;
13586    readonly violatedDirective: string;
13587}
13588
13589declare var SecurityPolicyViolationEvent: {
13590    prototype: SecurityPolicyViolationEvent;
13591    new(type: string, eventInitDict?: SecurityPolicyViolationEventInit): SecurityPolicyViolationEvent;
13592};
13593
13594/** A Selection object represents the range of text selected by the user or the current position of the caret. To obtain a Selection object for examination or modification, call Window.getSelection(). */
13595interface Selection {
13596    readonly anchorNode: Node | null;
13597    readonly anchorOffset: number;
13598    readonly focusNode: Node | null;
13599    readonly focusOffset: number;
13600    readonly isCollapsed: boolean;
13601    readonly rangeCount: number;
13602    readonly type: string;
13603    addRange(range: Range): void;
13604    collapse(node: Node | null, offset?: number): void;
13605    collapseToEnd(): void;
13606    collapseToStart(): void;
13607    containsNode(node: Node, allowPartialContainment?: boolean): boolean;
13608    deleteFromDocument(): void;
13609    empty(): void;
13610    extend(node: Node, offset?: number): void;
13611    getRangeAt(index: number): Range;
13612    modify(alter?: string, direction?: string, granularity?: string): void;
13613    removeAllRanges(): void;
13614    removeRange(range: Range): void;
13615    selectAllChildren(node: Node): void;
13616    setBaseAndExtent(anchorNode: Node, anchorOffset: number, focusNode: Node, focusOffset: number): void;
13617    setPosition(node: Node | null, offset?: number): void;
13618    toString(): string;
13619}
13620
13621declare var Selection: {
13622    prototype: Selection;
13623    new(): Selection;
13624    toString(): string;
13625};
13626
13627interface ServiceWorkerEventMap extends AbstractWorkerEventMap {
13628    "statechange": Event;
13629}
13630
13631/**
13632 * This ServiceWorker API interface provides a reference to a service worker. Multiple browsing contexts (e.g. pages, workers, etc.) can be associated with the same service worker, each through a unique ServiceWorker object.
13633 * Available only in secure contexts.
13634 */
13635interface ServiceWorker extends EventTarget, AbstractWorker {
13636    onstatechange: ((this: ServiceWorker, ev: Event) => any) | null;
13637    readonly scriptURL: string;
13638    readonly state: ServiceWorkerState;
13639    postMessage(message: any, transfer: Transferable[]): void;
13640    postMessage(message: any, options?: StructuredSerializeOptions): void;
13641    addEventListener<K extends keyof ServiceWorkerEventMap>(type: K, listener: (this: ServiceWorker, ev: ServiceWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13642    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13643    removeEventListener<K extends keyof ServiceWorkerEventMap>(type: K, listener: (this: ServiceWorker, ev: ServiceWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13644    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13645}
13646
13647declare var ServiceWorker: {
13648    prototype: ServiceWorker;
13649    new(): ServiceWorker;
13650};
13651
13652interface ServiceWorkerContainerEventMap {
13653    "controllerchange": Event;
13654    "message": MessageEvent;
13655    "messageerror": MessageEvent;
13656}
13657
13658/**
13659 * The ServiceWorkerContainer interface of the ServiceWorker API provides an object representing the service worker as an overall unit in the network ecosystem, including facilities to register, unregister and update service workers, and access the state of service workers and their registrations.
13660 * Available only in secure contexts.
13661 */
13662interface ServiceWorkerContainer extends EventTarget {
13663    readonly controller: ServiceWorker | null;
13664    oncontrollerchange: ((this: ServiceWorkerContainer, ev: Event) => any) | null;
13665    onmessage: ((this: ServiceWorkerContainer, ev: MessageEvent) => any) | null;
13666    onmessageerror: ((this: ServiceWorkerContainer, ev: MessageEvent) => any) | null;
13667    readonly ready: Promise<ServiceWorkerRegistration>;
13668    getRegistration(clientURL?: string | URL): Promise<ServiceWorkerRegistration | undefined>;
13669    getRegistrations(): Promise<ReadonlyArray<ServiceWorkerRegistration>>;
13670    register(scriptURL: string | URL, options?: RegistrationOptions): Promise<ServiceWorkerRegistration>;
13671    startMessages(): void;
13672    addEventListener<K extends keyof ServiceWorkerContainerEventMap>(type: K, listener: (this: ServiceWorkerContainer, ev: ServiceWorkerContainerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13673    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13674    removeEventListener<K extends keyof ServiceWorkerContainerEventMap>(type: K, listener: (this: ServiceWorkerContainer, ev: ServiceWorkerContainerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13675    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13676}
13677
13678declare var ServiceWorkerContainer: {
13679    prototype: ServiceWorkerContainer;
13680    new(): ServiceWorkerContainer;
13681};
13682
13683interface ServiceWorkerRegistrationEventMap {
13684    "updatefound": Event;
13685}
13686
13687/**
13688 * This ServiceWorker API interface represents the service worker registration. You register a service worker to control one or more pages that share the same origin.
13689 * Available only in secure contexts.
13690 */
13691interface ServiceWorkerRegistration extends EventTarget {
13692    readonly active: ServiceWorker | null;
13693    readonly installing: ServiceWorker | null;
13694    readonly navigationPreload: NavigationPreloadManager;
13695    onupdatefound: ((this: ServiceWorkerRegistration, ev: Event) => any) | null;
13696    readonly pushManager: PushManager;
13697    readonly scope: string;
13698    readonly updateViaCache: ServiceWorkerUpdateViaCache;
13699    readonly waiting: ServiceWorker | null;
13700    getNotifications(filter?: GetNotificationOptions): Promise<Notification[]>;
13701    showNotification(title: string, options?: NotificationOptions): Promise<void>;
13702    unregister(): Promise<boolean>;
13703    update(): Promise<void>;
13704    addEventListener<K extends keyof ServiceWorkerRegistrationEventMap>(type: K, listener: (this: ServiceWorkerRegistration, ev: ServiceWorkerRegistrationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13705    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13706    removeEventListener<K extends keyof ServiceWorkerRegistrationEventMap>(type: K, listener: (this: ServiceWorkerRegistration, ev: ServiceWorkerRegistrationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13707    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13708}
13709
13710declare var ServiceWorkerRegistration: {
13711    prototype: ServiceWorkerRegistration;
13712    new(): ServiceWorkerRegistration;
13713};
13714
13715interface ShadowRootEventMap {
13716    "slotchange": Event;
13717}
13718
13719interface ShadowRoot extends DocumentFragment, DocumentOrShadowRoot, InnerHTML {
13720    readonly delegatesFocus: boolean;
13721    readonly host: Element;
13722    readonly mode: ShadowRootMode;
13723    onslotchange: ((this: ShadowRoot, ev: Event) => any) | null;
13724    readonly slotAssignment: SlotAssignmentMode;
13725    /** Throws a "NotSupportedError" DOMException if context object is a shadow root. */
13726    addEventListener<K extends keyof ShadowRootEventMap>(type: K, listener: (this: ShadowRoot, ev: ShadowRootEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13727    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13728    removeEventListener<K extends keyof ShadowRootEventMap>(type: K, listener: (this: ShadowRoot, ev: ShadowRootEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13729    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13730}
13731
13732declare var ShadowRoot: {
13733    prototype: ShadowRoot;
13734    new(): ShadowRoot;
13735};
13736
13737interface SharedWorker extends EventTarget, AbstractWorker {
13738    /** Returns sharedWorker's MessagePort object which can be used to communicate with the global environment. */
13739    readonly port: MessagePort;
13740    addEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: SharedWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13741    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13742    removeEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: SharedWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13743    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13744}
13745
13746declare var SharedWorker: {
13747    prototype: SharedWorker;
13748    new(scriptURL: string | URL, options?: string | WorkerOptions): SharedWorker;
13749};
13750
13751interface Slottable {
13752    readonly assignedSlot: HTMLSlotElement | null;
13753}
13754
13755interface SourceBufferEventMap {
13756    "abort": Event;
13757    "error": Event;
13758    "update": Event;
13759    "updateend": Event;
13760    "updatestart": Event;
13761}
13762
13763/** A chunk of media to be passed into an HTMLMediaElement and played, via a MediaSource object. This can be made up of one or several media segments. */
13764interface SourceBuffer extends EventTarget {
13765    appendWindowEnd: number;
13766    appendWindowStart: number;
13767    readonly buffered: TimeRanges;
13768    mode: AppendMode;
13769    onabort: ((this: SourceBuffer, ev: Event) => any) | null;
13770    onerror: ((this: SourceBuffer, ev: Event) => any) | null;
13771    onupdate: ((this: SourceBuffer, ev: Event) => any) | null;
13772    onupdateend: ((this: SourceBuffer, ev: Event) => any) | null;
13773    onupdatestart: ((this: SourceBuffer, ev: Event) => any) | null;
13774    timestampOffset: number;
13775    readonly updating: boolean;
13776    abort(): void;
13777    appendBuffer(data: BufferSource): void;
13778    changeType(type: string): void;
13779    remove(start: number, end: number): void;
13780    addEventListener<K extends keyof SourceBufferEventMap>(type: K, listener: (this: SourceBuffer, ev: SourceBufferEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13781    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13782    removeEventListener<K extends keyof SourceBufferEventMap>(type: K, listener: (this: SourceBuffer, ev: SourceBufferEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13783    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13784}
13785
13786declare var SourceBuffer: {
13787    prototype: SourceBuffer;
13788    new(): SourceBuffer;
13789};
13790
13791interface SourceBufferListEventMap {
13792    "addsourcebuffer": Event;
13793    "removesourcebuffer": Event;
13794}
13795
13796/** A simple container list for multiple SourceBuffer objects. */
13797interface SourceBufferList extends EventTarget {
13798    readonly length: number;
13799    onaddsourcebuffer: ((this: SourceBufferList, ev: Event) => any) | null;
13800    onremovesourcebuffer: ((this: SourceBufferList, ev: Event) => any) | null;
13801    addEventListener<K extends keyof SourceBufferListEventMap>(type: K, listener: (this: SourceBufferList, ev: SourceBufferListEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13802    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13803    removeEventListener<K extends keyof SourceBufferListEventMap>(type: K, listener: (this: SourceBufferList, ev: SourceBufferListEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13804    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13805    [index: number]: SourceBuffer;
13806}
13807
13808declare var SourceBufferList: {
13809    prototype: SourceBufferList;
13810    new(): SourceBufferList;
13811};
13812
13813interface SpeechRecognitionAlternative {
13814    readonly confidence: number;
13815    readonly transcript: string;
13816}
13817
13818declare var SpeechRecognitionAlternative: {
13819    prototype: SpeechRecognitionAlternative;
13820    new(): SpeechRecognitionAlternative;
13821};
13822
13823interface SpeechRecognitionResult {
13824    readonly isFinal: boolean;
13825    readonly length: number;
13826    item(index: number): SpeechRecognitionAlternative;
13827    [index: number]: SpeechRecognitionAlternative;
13828}
13829
13830declare var SpeechRecognitionResult: {
13831    prototype: SpeechRecognitionResult;
13832    new(): SpeechRecognitionResult;
13833};
13834
13835interface SpeechRecognitionResultList {
13836    readonly length: number;
13837    item(index: number): SpeechRecognitionResult;
13838    [index: number]: SpeechRecognitionResult;
13839}
13840
13841declare var SpeechRecognitionResultList: {
13842    prototype: SpeechRecognitionResultList;
13843    new(): SpeechRecognitionResultList;
13844};
13845
13846interface SpeechSynthesisEventMap {
13847    "voiceschanged": Event;
13848}
13849
13850/** This Web Speech API interface is the controller interface for the speech service; this can be used to retrieve information about the synthesis voices available on the device, start and pause speech, and other commands besides. */
13851interface SpeechSynthesis extends EventTarget {
13852    onvoiceschanged: ((this: SpeechSynthesis, ev: Event) => any) | null;
13853    readonly paused: boolean;
13854    readonly pending: boolean;
13855    readonly speaking: boolean;
13856    cancel(): void;
13857    getVoices(): SpeechSynthesisVoice[];
13858    pause(): void;
13859    resume(): void;
13860    speak(utterance: SpeechSynthesisUtterance): void;
13861    addEventListener<K extends keyof SpeechSynthesisEventMap>(type: K, listener: (this: SpeechSynthesis, ev: SpeechSynthesisEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13862    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13863    removeEventListener<K extends keyof SpeechSynthesisEventMap>(type: K, listener: (this: SpeechSynthesis, ev: SpeechSynthesisEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13864    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13865}
13866
13867declare var SpeechSynthesis: {
13868    prototype: SpeechSynthesis;
13869    new(): SpeechSynthesis;
13870};
13871
13872interface SpeechSynthesisErrorEvent extends SpeechSynthesisEvent {
13873    readonly error: SpeechSynthesisErrorCode;
13874}
13875
13876declare var SpeechSynthesisErrorEvent: {
13877    prototype: SpeechSynthesisErrorEvent;
13878    new(type: string, eventInitDict: SpeechSynthesisErrorEventInit): SpeechSynthesisErrorEvent;
13879};
13880
13881/** This Web Speech API interface contains information about the current state of SpeechSynthesisUtterance objects that have been processed in the speech service. */
13882interface SpeechSynthesisEvent extends Event {
13883    readonly charIndex: number;
13884    readonly charLength: number;
13885    readonly elapsedTime: number;
13886    readonly name: string;
13887    readonly utterance: SpeechSynthesisUtterance;
13888}
13889
13890declare var SpeechSynthesisEvent: {
13891    prototype: SpeechSynthesisEvent;
13892    new(type: string, eventInitDict: SpeechSynthesisEventInit): SpeechSynthesisEvent;
13893};
13894
13895interface SpeechSynthesisUtteranceEventMap {
13896    "boundary": SpeechSynthesisEvent;
13897    "end": SpeechSynthesisEvent;
13898    "error": SpeechSynthesisErrorEvent;
13899    "mark": SpeechSynthesisEvent;
13900    "pause": SpeechSynthesisEvent;
13901    "resume": SpeechSynthesisEvent;
13902    "start": SpeechSynthesisEvent;
13903}
13904
13905/** This Web Speech API interface represents a speech request. It contains the content the speech service should read and information about how to read it (e.g. language, pitch and volume.) */
13906interface SpeechSynthesisUtterance extends EventTarget {
13907    lang: string;
13908    onboundary: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
13909    onend: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
13910    onerror: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisErrorEvent) => any) | null;
13911    onmark: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
13912    onpause: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
13913    onresume: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
13914    onstart: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
13915    pitch: number;
13916    rate: number;
13917    text: string;
13918    voice: SpeechSynthesisVoice | null;
13919    volume: number;
13920    addEventListener<K extends keyof SpeechSynthesisUtteranceEventMap>(type: K, listener: (this: SpeechSynthesisUtterance, ev: SpeechSynthesisUtteranceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13921    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13922    removeEventListener<K extends keyof SpeechSynthesisUtteranceEventMap>(type: K, listener: (this: SpeechSynthesisUtterance, ev: SpeechSynthesisUtteranceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13923    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13924}
13925
13926declare var SpeechSynthesisUtterance: {
13927    prototype: SpeechSynthesisUtterance;
13928    new(text?: string): SpeechSynthesisUtterance;
13929};
13930
13931/** This Web Speech API interface represents a voice that the system supports. Every SpeechSynthesisVoice has its own relative speech service including information about language, name and URI. */
13932interface SpeechSynthesisVoice {
13933    readonly default: boolean;
13934    readonly lang: string;
13935    readonly localService: boolean;
13936    readonly name: string;
13937    readonly voiceURI: string;
13938}
13939
13940declare var SpeechSynthesisVoice: {
13941    prototype: SpeechSynthesisVoice;
13942    new(): SpeechSynthesisVoice;
13943};
13944
13945interface StaticRange extends AbstractRange {
13946}
13947
13948declare var StaticRange: {
13949    prototype: StaticRange;
13950    new(init: StaticRangeInit): StaticRange;
13951};
13952
13953/** The pan property takes a unitless value between -1 (full left pan) and 1 (full right pan). This interface was introduced as a much simpler way to apply a simple panning effect than having to use a full PannerNode. */
13954interface StereoPannerNode extends AudioNode {
13955    readonly pan: AudioParam;
13956}
13957
13958declare var StereoPannerNode: {
13959    prototype: StereoPannerNode;
13960    new(context: BaseAudioContext, options?: StereoPannerOptions): StereoPannerNode;
13961};
13962
13963/** This Web Storage API interface provides access to a particular domain's session or local storage. It allows, for example, the addition, modification, or deletion of stored data items. */
13964interface Storage {
13965    /** Returns the number of key/value pairs. */
13966    readonly length: number;
13967    /**
13968     * Removes all key/value pairs, if there are any.
13969     *
13970     * Dispatches a storage event on Window objects holding an equivalent Storage object.
13971     */
13972    clear(): void;
13973    /** Returns the current value associated with the given key, or null if the given key does not exist. */
13974    getItem(key: string): string | null;
13975    /** Returns the name of the nth key, or null if n is greater than or equal to the number of key/value pairs. */
13976    key(index: number): string | null;
13977    /**
13978     * Removes the key/value pair with the given key, if a key/value pair with the given key exists.
13979     *
13980     * Dispatches a storage event on Window objects holding an equivalent Storage object.
13981     */
13982    removeItem(key: string): void;
13983    /**
13984     * Sets the value of the pair identified by key to value, creating a new key/value pair if none existed for key previously.
13985     *
13986     * Throws a "QuotaExceededError" DOMException exception if the new value couldn't be set. (Setting could fail if, e.g., the user has disabled storage for the site, or if the quota has been exceeded.)
13987     *
13988     * Dispatches a storage event on Window objects holding an equivalent Storage object.
13989     */
13990    setItem(key: string, value: string): void;
13991    [name: string]: any;
13992}
13993
13994declare var Storage: {
13995    prototype: Storage;
13996    new(): Storage;
13997};
13998
13999/** A StorageEvent is sent to a window when a storage area it has access to is changed within the context of another document. */
14000interface StorageEvent extends Event {
14001    /** Returns the key of the storage item being changed. */
14002    readonly key: string | null;
14003    /** Returns the new value of the key of the storage item whose value is being changed. */
14004    readonly newValue: string | null;
14005    /** Returns the old value of the key of the storage item whose value is being changed. */
14006    readonly oldValue: string | null;
14007    /** Returns the Storage object that was affected. */
14008    readonly storageArea: Storage | null;
14009    /** Returns the URL of the document whose storage item changed. */
14010    readonly url: string;
14011    /** @deprecated */
14012    initStorageEvent(type: string, bubbles?: boolean, cancelable?: boolean, key?: string | null, oldValue?: string | null, newValue?: string | null, url?: string | URL, storageArea?: Storage | null): void;
14013}
14014
14015declare var StorageEvent: {
14016    prototype: StorageEvent;
14017    new(type: string, eventInitDict?: StorageEventInit): StorageEvent;
14018};
14019
14020/** Available only in secure contexts. */
14021interface StorageManager {
14022    estimate(): Promise<StorageEstimate>;
14023    getDirectory(): Promise<FileSystemDirectoryHandle>;
14024    persist(): Promise<boolean>;
14025    persisted(): Promise<boolean>;
14026}
14027
14028declare var StorageManager: {
14029    prototype: StorageManager;
14030    new(): StorageManager;
14031};
14032
14033/** @deprecated */
14034interface StyleMedia {
14035    type: string;
14036    matchMedium(mediaquery: string): boolean;
14037}
14038
14039/** A single style sheet. CSS style sheets will further implement the more specialized CSSStyleSheet interface. */
14040interface StyleSheet {
14041    disabled: boolean;
14042    readonly href: string | null;
14043    readonly media: MediaList;
14044    readonly ownerNode: Element | ProcessingInstruction | null;
14045    readonly parentStyleSheet: CSSStyleSheet | null;
14046    readonly title: string | null;
14047    readonly type: string;
14048}
14049
14050declare var StyleSheet: {
14051    prototype: StyleSheet;
14052    new(): StyleSheet;
14053};
14054
14055/** A list of StyleSheet. */
14056interface StyleSheetList {
14057    readonly length: number;
14058    item(index: number): CSSStyleSheet | null;
14059    [index: number]: CSSStyleSheet;
14060}
14061
14062declare var StyleSheetList: {
14063    prototype: StyleSheetList;
14064    new(): StyleSheetList;
14065};
14066
14067interface SubmitEvent extends Event {
14068    /** Returns the element representing the submit button that triggered the form submission, or null if the submission was not triggered by a button. */
14069    readonly submitter: HTMLElement | null;
14070}
14071
14072declare var SubmitEvent: {
14073    prototype: SubmitEvent;
14074    new(type: string, eventInitDict?: SubmitEventInit): SubmitEvent;
14075};
14076
14077/**
14078 * This Web Crypto API interface provides a number of low-level cryptographic functions. It is accessed via the Crypto.subtle properties available in a window context (via Window.crypto).
14079 * Available only in secure contexts.
14080 */
14081interface SubtleCrypto {
14082    decrypt(algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;
14083    deriveBits(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, length: number): Promise<ArrayBuffer>;
14084    deriveKey(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, derivedKeyType: AlgorithmIdentifier | AesDerivedKeyParams | HmacImportParams | HkdfParams | Pbkdf2Params, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
14085    digest(algorithm: AlgorithmIdentifier, data: BufferSource): Promise<ArrayBuffer>;
14086    encrypt(algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;
14087    exportKey(format: "jwk", key: CryptoKey): Promise<JsonWebKey>;
14088    exportKey(format: Exclude<KeyFormat, "jwk">, key: CryptoKey): Promise<ArrayBuffer>;
14089    generateKey(algorithm: RsaHashedKeyGenParams | EcKeyGenParams, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKeyPair>;
14090    generateKey(algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;
14091    generateKey(algorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair | CryptoKey>;
14092    importKey(format: "jwk", keyData: JsonWebKey, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;
14093    importKey(format: Exclude<KeyFormat, "jwk">, keyData: BufferSource, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
14094    sign(algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;
14095    unwrapKey(format: KeyFormat, wrappedKey: BufferSource, unwrappingKey: CryptoKey, unwrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, unwrappedKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
14096    verify(algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, key: CryptoKey, signature: BufferSource, data: BufferSource): Promise<boolean>;
14097    wrapKey(format: KeyFormat, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams): Promise<ArrayBuffer>;
14098}
14099
14100declare var SubtleCrypto: {
14101    prototype: SubtleCrypto;
14102    new(): SubtleCrypto;
14103};
14104
14105/** The textual content of Element or Attr. If an element has no markup within its content, it has a single child implementing Text that contains the element's text. However, if the element contains markup, it is parsed into information items and Text nodes that form its children. */
14106interface Text extends CharacterData, Slottable {
14107    /** Returns the combined data of all direct Text node siblings. */
14108    readonly wholeText: string;
14109    /** Splits data at the given offset and returns the remainder as Text node. */
14110    splitText(offset: number): Text;
14111}
14112
14113declare var Text: {
14114    prototype: Text;
14115    new(data?: string): Text;
14116};
14117
14118/** A decoder for a specific method, that is a specific character encoding, like utf-8, iso-8859-2, koi8, cp1261, gbk, etc. A decoder takes a stream of bytes as input and emits a stream of code points. For a more scalable, non-native library, see StringView – a C-like representation of strings based on typed arrays. */
14119interface TextDecoder extends TextDecoderCommon {
14120    /**
14121     * Returns the result of running encoding's decoder. The method can be invoked zero or more times with options's stream set to true, and then once without options's stream (or set to false), to process a fragmented input. If the invocation without options's stream (or set to false) has no input, it's clearest to omit both arguments.
14122     *
14123     * ```
14124     * var string = "", decoder = new TextDecoder(encoding), buffer;
14125     * while(buffer = next_chunk()) {
14126     *   string += decoder.decode(buffer, {stream:true});
14127     * }
14128     * string += decoder.decode(); // end-of-queue
14129     * ```
14130     *
14131     * If the error mode is "fatal" and encoding's decoder returns error, throws a TypeError.
14132     */
14133    decode(input?: BufferSource, options?: TextDecodeOptions): string;
14134}
14135
14136declare var TextDecoder: {
14137    prototype: TextDecoder;
14138    new(label?: string, options?: TextDecoderOptions): TextDecoder;
14139};
14140
14141interface TextDecoderCommon {
14142    /** Returns encoding's name, lowercased. */
14143    readonly encoding: string;
14144    /** Returns true if error mode is "fatal", otherwise false. */
14145    readonly fatal: boolean;
14146    /** Returns the value of ignore BOM. */
14147    readonly ignoreBOM: boolean;
14148}
14149
14150interface TextDecoderStream extends GenericTransformStream, TextDecoderCommon {
14151    readonly readable: ReadableStream<string>;
14152    readonly writable: WritableStream<BufferSource>;
14153}
14154
14155declare var TextDecoderStream: {
14156    prototype: TextDecoderStream;
14157    new(label?: string, options?: TextDecoderOptions): TextDecoderStream;
14158};
14159
14160/** TextEncoder takes a stream of code points as input and emits a stream of bytes. For a more scalable, non-native library, see StringView – a C-like representation of strings based on typed arrays. */
14161interface TextEncoder extends TextEncoderCommon {
14162    /** Returns the result of running UTF-8's encoder. */
14163    encode(input?: string): Uint8Array;
14164    /** Runs the UTF-8 encoder on source, stores the result of that operation into destination, and returns the progress made as an object wherein read is the number of converted code units of source and written is the number of bytes modified in destination. */
14165    encodeInto(source: string, destination: Uint8Array): TextEncoderEncodeIntoResult;
14166}
14167
14168declare var TextEncoder: {
14169    prototype: TextEncoder;
14170    new(): TextEncoder;
14171};
14172
14173interface TextEncoderCommon {
14174    /** Returns "utf-8". */
14175    readonly encoding: string;
14176}
14177
14178interface TextEncoderStream extends GenericTransformStream, TextEncoderCommon {
14179    readonly readable: ReadableStream<Uint8Array>;
14180    readonly writable: WritableStream<string>;
14181}
14182
14183declare var TextEncoderStream: {
14184    prototype: TextEncoderStream;
14185    new(): TextEncoderStream;
14186};
14187
14188/** The dimensions of a piece of text in the canvas, as created by the CanvasRenderingContext2D.measureText() method. */
14189interface TextMetrics {
14190    /** Returns the measurement described below. */
14191    readonly actualBoundingBoxAscent: number;
14192    /** Returns the measurement described below. */
14193    readonly actualBoundingBoxDescent: number;
14194    /** Returns the measurement described below. */
14195    readonly actualBoundingBoxLeft: number;
14196    /** Returns the measurement described below. */
14197    readonly actualBoundingBoxRight: number;
14198    /** Returns the measurement described below. */
14199    readonly fontBoundingBoxAscent: number;
14200    /** Returns the measurement described below. */
14201    readonly fontBoundingBoxDescent: number;
14202    /** Returns the measurement described below. */
14203    readonly width: number;
14204}
14205
14206declare var TextMetrics: {
14207    prototype: TextMetrics;
14208    new(): TextMetrics;
14209};
14210
14211interface TextTrackEventMap {
14212    "cuechange": Event;
14213}
14214
14215/** This interface also inherits properties from EventTarget. */
14216interface TextTrack extends EventTarget {
14217    /** Returns the text track cues from the text track list of cues that are currently active (i.e. that start before the current playback position and end after it), as a TextTrackCueList object. */
14218    readonly activeCues: TextTrackCueList | null;
14219    /** Returns the text track list of cues, as a TextTrackCueList object. */
14220    readonly cues: TextTrackCueList | null;
14221    /**
14222     * Returns the ID of the given track.
14223     *
14224     * For in-band tracks, this is the ID that can be used with a fragment if the format supports media fragment syntax, and that can be used with the getTrackById() method.
14225     *
14226     * For TextTrack objects corresponding to track elements, this is the ID of the track element.
14227     */
14228    readonly id: string;
14229    /** Returns the text track in-band metadata track dispatch type string. */
14230    readonly inBandMetadataTrackDispatchType: string;
14231    /** Returns the text track kind string. */
14232    readonly kind: TextTrackKind;
14233    /** Returns the text track label, if there is one, or the empty string otherwise (indicating that a custom label probably needs to be generated from the other attributes of the object if the object is exposed to the user). */
14234    readonly label: string;
14235    /** Returns the text track language string. */
14236    readonly language: string;
14237    /**
14238     * Returns the text track mode, represented by a string from the following list:
14239     *
14240     * Can be set, to change the mode.
14241     */
14242    mode: TextTrackMode;
14243    oncuechange: ((this: TextTrack, ev: Event) => any) | null;
14244    /** Adds the given cue to textTrack's text track list of cues. */
14245    addCue(cue: TextTrackCue): void;
14246    /** Removes the given cue from textTrack's text track list of cues. */
14247    removeCue(cue: TextTrackCue): void;
14248    addEventListener<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14249    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14250    removeEventListener<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14251    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14252}
14253
14254declare var TextTrack: {
14255    prototype: TextTrack;
14256    new(): TextTrack;
14257};
14258
14259interface TextTrackCueEventMap {
14260    "enter": Event;
14261    "exit": Event;
14262}
14263
14264/** TextTrackCues represent a string of text that will be displayed for some duration of time on a TextTrack. This includes the start and end times that the cue will be displayed. A TextTrackCue cannot be used directly, instead one of the derived types (e.g. VTTCue) must be used. */
14265interface TextTrackCue extends EventTarget {
14266    /**
14267     * Returns the text track cue end time, in seconds.
14268     *
14269     * Can be set.
14270     */
14271    endTime: number;
14272    /**
14273     * Returns the text track cue identifier.
14274     *
14275     * Can be set.
14276     */
14277    id: string;
14278    onenter: ((this: TextTrackCue, ev: Event) => any) | null;
14279    onexit: ((this: TextTrackCue, ev: Event) => any) | null;
14280    /**
14281     * Returns true if the text track cue pause-on-exit flag is set, false otherwise.
14282     *
14283     * Can be set.
14284     */
14285    pauseOnExit: boolean;
14286    /**
14287     * Returns the text track cue start time, in seconds.
14288     *
14289     * Can be set.
14290     */
14291    startTime: number;
14292    /** Returns the TextTrack object to which this text track cue belongs, if any, or null otherwise. */
14293    readonly track: TextTrack | null;
14294    addEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14295    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14296    removeEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14297    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14298}
14299
14300declare var TextTrackCue: {
14301    prototype: TextTrackCue;
14302    new(): TextTrackCue;
14303};
14304
14305interface TextTrackCueList {
14306    /** Returns the number of cues in the list. */
14307    readonly length: number;
14308    /**
14309     * Returns the first text track cue (in text track cue order) with text track cue identifier id.
14310     *
14311     * Returns null if none of the cues have the given identifier or if the argument is the empty string.
14312     */
14313    getCueById(id: string): TextTrackCue | null;
14314    [index: number]: TextTrackCue;
14315}
14316
14317declare var TextTrackCueList: {
14318    prototype: TextTrackCueList;
14319    new(): TextTrackCueList;
14320};
14321
14322interface TextTrackListEventMap {
14323    "addtrack": TrackEvent;
14324    "change": Event;
14325    "removetrack": TrackEvent;
14326}
14327
14328interface TextTrackList extends EventTarget {
14329    readonly length: number;
14330    onaddtrack: ((this: TextTrackList, ev: TrackEvent) => any) | null;
14331    onchange: ((this: TextTrackList, ev: Event) => any) | null;
14332    onremovetrack: ((this: TextTrackList, ev: TrackEvent) => any) | null;
14333    getTrackById(id: string): TextTrack | null;
14334    addEventListener<K extends keyof TextTrackListEventMap>(type: K, listener: (this: TextTrackList, ev: TextTrackListEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14335    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14336    removeEventListener<K extends keyof TextTrackListEventMap>(type: K, listener: (this: TextTrackList, ev: TextTrackListEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14337    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14338    [index: number]: TextTrack;
14339}
14340
14341declare var TextTrackList: {
14342    prototype: TextTrackList;
14343    new(): TextTrackList;
14344};
14345
14346/** Used to represent a set of time ranges, primarily for the purpose of tracking which portions of media have been buffered when loading it for use by the <audio> and <video> elements. */
14347interface TimeRanges {
14348    /** Returns the number of ranges in the object. */
14349    readonly length: number;
14350    /**
14351     * Returns the time for the end of the range with the given index.
14352     *
14353     * Throws an "IndexSizeError" DOMException if the index is out of range.
14354     */
14355    end(index: number): number;
14356    /**
14357     * Returns the time for the start of the range with the given index.
14358     *
14359     * Throws an "IndexSizeError" DOMException if the index is out of range.
14360     */
14361    start(index: number): number;
14362}
14363
14364declare var TimeRanges: {
14365    prototype: TimeRanges;
14366    new(): TimeRanges;
14367};
14368
14369/** A single contact point on a touch-sensitive device. The contact point is commonly a finger or stylus and the device may be a touchscreen or trackpad. */
14370interface Touch {
14371    readonly clientX: number;
14372    readonly clientY: number;
14373    readonly force: number;
14374    readonly identifier: number;
14375    readonly pageX: number;
14376    readonly pageY: number;
14377    readonly radiusX: number;
14378    readonly radiusY: number;
14379    readonly rotationAngle: number;
14380    readonly screenX: number;
14381    readonly screenY: number;
14382    readonly target: EventTarget;
14383}
14384
14385declare var Touch: {
14386    prototype: Touch;
14387    new(touchInitDict: TouchInit): Touch;
14388};
14389
14390/** An event sent when the state of contacts with a touch-sensitive surface changes. This surface can be a touch screen or trackpad, for example. The event can describe one or more points of contact with the screen and includes support for detecting movement, addition and removal of contact points, and so forth. */
14391interface TouchEvent extends UIEvent {
14392    readonly altKey: boolean;
14393    readonly changedTouches: TouchList;
14394    readonly ctrlKey: boolean;
14395    readonly metaKey: boolean;
14396    readonly shiftKey: boolean;
14397    readonly targetTouches: TouchList;
14398    readonly touches: TouchList;
14399}
14400
14401declare var TouchEvent: {
14402    prototype: TouchEvent;
14403    new(type: string, eventInitDict?: TouchEventInit): TouchEvent;
14404};
14405
14406/** A list of contact points on a touch surface. For example, if the user has three fingers on the touch surface (such as a screen or trackpad), the corresponding TouchList object would have one Touch object for each finger, for a total of three entries. */
14407interface TouchList {
14408    readonly length: number;
14409    item(index: number): Touch | null;
14410    [index: number]: Touch;
14411}
14412
14413declare var TouchList: {
14414    prototype: TouchList;
14415    new(): TouchList;
14416};
14417
14418/** The TrackEvent interface, part of the HTML DOM specification, is used for events which represent changes to the set of available tracks on an HTML media element; these events are addtrack and removetrack. */
14419interface TrackEvent extends Event {
14420    /** Returns the track object (TextTrack, AudioTrack, or VideoTrack) to which the event relates. */
14421    readonly track: TextTrack | null;
14422}
14423
14424declare var TrackEvent: {
14425    prototype: TrackEvent;
14426    new(type: string, eventInitDict?: TrackEventInit): TrackEvent;
14427};
14428
14429interface TransformStream<I = any, O = any> {
14430    readonly readable: ReadableStream<O>;
14431    readonly writable: WritableStream<I>;
14432}
14433
14434declare var TransformStream: {
14435    prototype: TransformStream;
14436    new<I = any, O = any>(transformer?: Transformer<I, O>, writableStrategy?: QueuingStrategy<I>, readableStrategy?: QueuingStrategy<O>): TransformStream<I, O>;
14437};
14438
14439interface TransformStreamDefaultController<O = any> {
14440    readonly desiredSize: number | null;
14441    enqueue(chunk?: O): void;
14442    error(reason?: any): void;
14443    terminate(): void;
14444}
14445
14446declare var TransformStreamDefaultController: {
14447    prototype: TransformStreamDefaultController;
14448    new(): TransformStreamDefaultController;
14449};
14450
14451/** Events providing information related to transitions. */
14452interface TransitionEvent extends Event {
14453    readonly elapsedTime: number;
14454    readonly propertyName: string;
14455    readonly pseudoElement: string;
14456}
14457
14458declare var TransitionEvent: {
14459    prototype: TransitionEvent;
14460    new(type: string, transitionEventInitDict?: TransitionEventInit): TransitionEvent;
14461};
14462
14463/** The nodes of a document subtree and a position within them. */
14464interface TreeWalker {
14465    currentNode: Node;
14466    readonly filter: NodeFilter | null;
14467    readonly root: Node;
14468    readonly whatToShow: number;
14469    firstChild(): Node | null;
14470    lastChild(): Node | null;
14471    nextNode(): Node | null;
14472    nextSibling(): Node | null;
14473    parentNode(): Node | null;
14474    previousNode(): Node | null;
14475    previousSibling(): Node | null;
14476}
14477
14478declare var TreeWalker: {
14479    prototype: TreeWalker;
14480    new(): TreeWalker;
14481};
14482
14483/** Simple user interface events. */
14484interface UIEvent extends Event {
14485    readonly detail: number;
14486    readonly view: Window | null;
14487    /** @deprecated */
14488    readonly which: number;
14489    /** @deprecated */
14490    initUIEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: Window | null, detailArg?: number): void;
14491}
14492
14493declare var UIEvent: {
14494    prototype: UIEvent;
14495    new(type: string, eventInitDict?: UIEventInit): UIEvent;
14496};
14497
14498/** The URL interface represents an object providing static methods used for creating object URLs. */
14499interface URL {
14500    hash: string;
14501    host: string;
14502    hostname: string;
14503    href: string;
14504    toString(): string;
14505    readonly origin: string;
14506    password: string;
14507    pathname: string;
14508    port: string;
14509    protocol: string;
14510    search: string;
14511    readonly searchParams: URLSearchParams;
14512    username: string;
14513    toJSON(): string;
14514}
14515
14516declare var URL: {
14517    prototype: URL;
14518    new(url: string | URL, base?: string | URL): URL;
14519    createObjectURL(obj: Blob | MediaSource): string;
14520    revokeObjectURL(url: string): void;
14521};
14522
14523type webkitURL = URL;
14524declare var webkitURL: typeof URL;
14525
14526interface URLSearchParams {
14527    /** Appends a specified key/value pair as a new search parameter. */
14528    append(name: string, value: string): void;
14529    /** Deletes the given search parameter, and its associated value, from the list of all search parameters. */
14530    delete(name: string): void;
14531    /** Returns the first value associated to the given search parameter. */
14532    get(name: string): string | null;
14533    /** Returns all the values association with a given search parameter. */
14534    getAll(name: string): string[];
14535    /** Returns a Boolean indicating if such a search parameter exists. */
14536    has(name: string): boolean;
14537    /** Sets the value associated to a given search parameter to the given value. If there were several values, delete the others. */
14538    set(name: string, value: string): void;
14539    sort(): void;
14540    /** Returns a string containing a query string suitable for use in a URL. Does not include the question mark. */
14541    toString(): string;
14542    forEach(callbackfn: (value: string, key: string, parent: URLSearchParams) => void, thisArg?: any): void;
14543}
14544
14545declare var URLSearchParams: {
14546    prototype: URLSearchParams;
14547    new(init?: string[][] | Record<string, string> | string | URLSearchParams): URLSearchParams;
14548    toString(): string;
14549};
14550
14551interface VTTCue extends TextTrackCue {
14552    align: AlignSetting;
14553    line: LineAndPositionSetting;
14554    lineAlign: LineAlignSetting;
14555    position: LineAndPositionSetting;
14556    positionAlign: PositionAlignSetting;
14557    region: VTTRegion | null;
14558    size: number;
14559    snapToLines: boolean;
14560    text: string;
14561    vertical: DirectionSetting;
14562    getCueAsHTML(): DocumentFragment;
14563    addEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: VTTCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14564    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14565    removeEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: VTTCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14566    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14567}
14568
14569declare var VTTCue: {
14570    prototype: VTTCue;
14571    new(startTime: number, endTime: number, text: string): VTTCue;
14572};
14573
14574interface VTTRegion {
14575    id: string;
14576    lines: number;
14577    regionAnchorX: number;
14578    regionAnchorY: number;
14579    scroll: ScrollSetting;
14580    viewportAnchorX: number;
14581    viewportAnchorY: number;
14582    width: number;
14583}
14584
14585declare var VTTRegion: {
14586    prototype: VTTRegion;
14587    new(): VTTRegion;
14588};
14589
14590/** The validity states that an element can be in, with respect to constraint validation. Together, they help explain why an element's value fails to validate, if it's not valid. */
14591interface ValidityState {
14592    readonly badInput: boolean;
14593    readonly customError: boolean;
14594    readonly patternMismatch: boolean;
14595    readonly rangeOverflow: boolean;
14596    readonly rangeUnderflow: boolean;
14597    readonly stepMismatch: boolean;
14598    readonly tooLong: boolean;
14599    readonly tooShort: boolean;
14600    readonly typeMismatch: boolean;
14601    readonly valid: boolean;
14602    readonly valueMissing: boolean;
14603}
14604
14605declare var ValidityState: {
14606    prototype: ValidityState;
14607    new(): ValidityState;
14608};
14609
14610interface VideoColorSpace {
14611    readonly fullRange: boolean | null;
14612    readonly matrix: VideoMatrixCoefficients | null;
14613    readonly primaries: VideoColorPrimaries | null;
14614    readonly transfer: VideoTransferCharacteristics | null;
14615    toJSON(): VideoColorSpaceInit;
14616}
14617
14618declare var VideoColorSpace: {
14619    prototype: VideoColorSpace;
14620    new(init?: VideoColorSpaceInit): VideoColorSpace;
14621};
14622
14623/** Returned by the HTMLVideoElement.getVideoPlaybackQuality() method and contains metrics that can be used to determine the playback quality of a video. */
14624interface VideoPlaybackQuality {
14625    /** @deprecated */
14626    readonly corruptedVideoFrames: number;
14627    readonly creationTime: DOMHighResTimeStamp;
14628    readonly droppedVideoFrames: number;
14629    readonly totalVideoFrames: number;
14630}
14631
14632declare var VideoPlaybackQuality: {
14633    prototype: VideoPlaybackQuality;
14634    new(): VideoPlaybackQuality;
14635};
14636
14637interface VisualViewportEventMap {
14638    "resize": Event;
14639    "scroll": Event;
14640}
14641
14642interface VisualViewport extends EventTarget {
14643    readonly height: number;
14644    readonly offsetLeft: number;
14645    readonly offsetTop: number;
14646    onresize: ((this: VisualViewport, ev: Event) => any) | null;
14647    onscroll: ((this: VisualViewport, ev: Event) => any) | null;
14648    readonly pageLeft: number;
14649    readonly pageTop: number;
14650    readonly scale: number;
14651    readonly width: number;
14652    addEventListener<K extends keyof VisualViewportEventMap>(type: K, listener: (this: VisualViewport, ev: VisualViewportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14653    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14654    removeEventListener<K extends keyof VisualViewportEventMap>(type: K, listener: (this: VisualViewport, ev: VisualViewportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14655    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14656}
14657
14658declare var VisualViewport: {
14659    prototype: VisualViewport;
14660    new(): VisualViewport;
14661};
14662
14663interface WEBGL_color_buffer_float {
14664    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: GLenum;
14665    readonly RGBA32F_EXT: GLenum;
14666    readonly UNSIGNED_NORMALIZED_EXT: GLenum;
14667}
14668
14669interface WEBGL_compressed_texture_astc {
14670    getSupportedProfiles(): string[];
14671    readonly COMPRESSED_RGBA_ASTC_10x10_KHR: GLenum;
14672    readonly COMPRESSED_RGBA_ASTC_10x5_KHR: GLenum;
14673    readonly COMPRESSED_RGBA_ASTC_10x6_KHR: GLenum;
14674    readonly COMPRESSED_RGBA_ASTC_10x8_KHR: GLenum;
14675    readonly COMPRESSED_RGBA_ASTC_12x10_KHR: GLenum;
14676    readonly COMPRESSED_RGBA_ASTC_12x12_KHR: GLenum;
14677    readonly COMPRESSED_RGBA_ASTC_4x4_KHR: GLenum;
14678    readonly COMPRESSED_RGBA_ASTC_5x4_KHR: GLenum;
14679    readonly COMPRESSED_RGBA_ASTC_5x5_KHR: GLenum;
14680    readonly COMPRESSED_RGBA_ASTC_6x5_KHR: GLenum;
14681    readonly COMPRESSED_RGBA_ASTC_6x6_KHR: GLenum;
14682    readonly COMPRESSED_RGBA_ASTC_8x5_KHR: GLenum;
14683    readonly COMPRESSED_RGBA_ASTC_8x6_KHR: GLenum;
14684    readonly COMPRESSED_RGBA_ASTC_8x8_KHR: GLenum;
14685    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: GLenum;
14686    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: GLenum;
14687    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: GLenum;
14688    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: GLenum;
14689    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: GLenum;
14690    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: GLenum;
14691    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: GLenum;
14692    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: GLenum;
14693    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: GLenum;
14694    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: GLenum;
14695    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: GLenum;
14696    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: GLenum;
14697    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: GLenum;
14698    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: GLenum;
14699}
14700
14701interface WEBGL_compressed_texture_etc {
14702    readonly COMPRESSED_R11_EAC: GLenum;
14703    readonly COMPRESSED_RG11_EAC: GLenum;
14704    readonly COMPRESSED_RGB8_ETC2: GLenum;
14705    readonly COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum;
14706    readonly COMPRESSED_RGBA8_ETC2_EAC: GLenum;
14707    readonly COMPRESSED_SIGNED_R11_EAC: GLenum;
14708    readonly COMPRESSED_SIGNED_RG11_EAC: GLenum;
14709    readonly COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: GLenum;
14710    readonly COMPRESSED_SRGB8_ETC2: GLenum;
14711    readonly COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum;
14712}
14713
14714interface WEBGL_compressed_texture_etc1 {
14715    readonly COMPRESSED_RGB_ETC1_WEBGL: GLenum;
14716}
14717
14718/** The WEBGL_compressed_texture_s3tc extension is part of the WebGL API and exposes four S3TC compressed texture formats. */
14719interface WEBGL_compressed_texture_s3tc {
14720    readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: GLenum;
14721    readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: GLenum;
14722    readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: GLenum;
14723    readonly COMPRESSED_RGB_S3TC_DXT1_EXT: GLenum;
14724}
14725
14726interface WEBGL_compressed_texture_s3tc_srgb {
14727    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: GLenum;
14728    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: GLenum;
14729    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: GLenum;
14730    readonly COMPRESSED_SRGB_S3TC_DXT1_EXT: GLenum;
14731}
14732
14733/** The WEBGL_debug_renderer_info extension is part of the WebGL API and exposes two constants with information about the graphics driver for debugging purposes. */
14734interface WEBGL_debug_renderer_info {
14735    readonly UNMASKED_RENDERER_WEBGL: GLenum;
14736    readonly UNMASKED_VENDOR_WEBGL: GLenum;
14737}
14738
14739interface WEBGL_debug_shaders {
14740    getTranslatedShaderSource(shader: WebGLShader): string;
14741}
14742
14743/** The WEBGL_depth_texture extension is part of the WebGL API and defines 2D depth and depth-stencil textures. */
14744interface WEBGL_depth_texture {
14745    readonly UNSIGNED_INT_24_8_WEBGL: GLenum;
14746}
14747
14748interface WEBGL_draw_buffers {
14749    drawBuffersWEBGL(buffers: GLenum[]): void;
14750    readonly COLOR_ATTACHMENT0_WEBGL: GLenum;
14751    readonly COLOR_ATTACHMENT10_WEBGL: GLenum;
14752    readonly COLOR_ATTACHMENT11_WEBGL: GLenum;
14753    readonly COLOR_ATTACHMENT12_WEBGL: GLenum;
14754    readonly COLOR_ATTACHMENT13_WEBGL: GLenum;
14755    readonly COLOR_ATTACHMENT14_WEBGL: GLenum;
14756    readonly COLOR_ATTACHMENT15_WEBGL: GLenum;
14757    readonly COLOR_ATTACHMENT1_WEBGL: GLenum;
14758    readonly COLOR_ATTACHMENT2_WEBGL: GLenum;
14759    readonly COLOR_ATTACHMENT3_WEBGL: GLenum;
14760    readonly COLOR_ATTACHMENT4_WEBGL: GLenum;
14761    readonly COLOR_ATTACHMENT5_WEBGL: GLenum;
14762    readonly COLOR_ATTACHMENT6_WEBGL: GLenum;
14763    readonly COLOR_ATTACHMENT7_WEBGL: GLenum;
14764    readonly COLOR_ATTACHMENT8_WEBGL: GLenum;
14765    readonly COLOR_ATTACHMENT9_WEBGL: GLenum;
14766    readonly DRAW_BUFFER0_WEBGL: GLenum;
14767    readonly DRAW_BUFFER10_WEBGL: GLenum;
14768    readonly DRAW_BUFFER11_WEBGL: GLenum;
14769    readonly DRAW_BUFFER12_WEBGL: GLenum;
14770    readonly DRAW_BUFFER13_WEBGL: GLenum;
14771    readonly DRAW_BUFFER14_WEBGL: GLenum;
14772    readonly DRAW_BUFFER15_WEBGL: GLenum;
14773    readonly DRAW_BUFFER1_WEBGL: GLenum;
14774    readonly DRAW_BUFFER2_WEBGL: GLenum;
14775    readonly DRAW_BUFFER3_WEBGL: GLenum;
14776    readonly DRAW_BUFFER4_WEBGL: GLenum;
14777    readonly DRAW_BUFFER5_WEBGL: GLenum;
14778    readonly DRAW_BUFFER6_WEBGL: GLenum;
14779    readonly DRAW_BUFFER7_WEBGL: GLenum;
14780    readonly DRAW_BUFFER8_WEBGL: GLenum;
14781    readonly DRAW_BUFFER9_WEBGL: GLenum;
14782    readonly MAX_COLOR_ATTACHMENTS_WEBGL: GLenum;
14783    readonly MAX_DRAW_BUFFERS_WEBGL: GLenum;
14784}
14785
14786interface WEBGL_lose_context {
14787    loseContext(): void;
14788    restoreContext(): void;
14789}
14790
14791interface WEBGL_multi_draw {
14792    multiDrawArraysInstancedWEBGL(mode: GLenum, firstsList: Int32Array | GLint[], firstsOffset: GLuint, countsList: Int32Array | GLsizei[], countsOffset: GLuint, instanceCountsList: Int32Array | GLsizei[], instanceCountsOffset: GLuint, drawcount: GLsizei): void;
14793    multiDrawArraysWEBGL(mode: GLenum, firstsList: Int32Array | GLint[], firstsOffset: GLuint, countsList: Int32Array | GLsizei[], countsOffset: GLuint, drawcount: GLsizei): void;
14794    multiDrawElementsInstancedWEBGL(mode: GLenum, countsList: Int32Array | GLsizei[], countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | GLsizei[], offsetsOffset: GLuint, instanceCountsList: Int32Array | GLsizei[], instanceCountsOffset: GLuint, drawcount: GLsizei): void;
14795    multiDrawElementsWEBGL(mode: GLenum, countsList: Int32Array | GLsizei[], countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | GLsizei[], offsetsOffset: GLuint, drawcount: GLsizei): void;
14796}
14797
14798/** A WaveShaperNode always has exactly one input and one output. */
14799interface WaveShaperNode extends AudioNode {
14800    curve: Float32Array | null;
14801    oversample: OverSampleType;
14802}
14803
14804declare var WaveShaperNode: {
14805    prototype: WaveShaperNode;
14806    new(context: BaseAudioContext, options?: WaveShaperOptions): WaveShaperNode;
14807};
14808
14809interface WebGL2RenderingContext extends WebGL2RenderingContextBase, WebGL2RenderingContextOverloads, WebGLRenderingContextBase {
14810}
14811
14812declare var WebGL2RenderingContext: {
14813    prototype: WebGL2RenderingContext;
14814    new(): WebGL2RenderingContext;
14815    readonly ACTIVE_UNIFORM_BLOCKS: GLenum;
14816    readonly ALREADY_SIGNALED: GLenum;
14817    readonly ANY_SAMPLES_PASSED: GLenum;
14818    readonly ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum;
14819    readonly COLOR: GLenum;
14820    readonly COLOR_ATTACHMENT1: GLenum;
14821    readonly COLOR_ATTACHMENT10: GLenum;
14822    readonly COLOR_ATTACHMENT11: GLenum;
14823    readonly COLOR_ATTACHMENT12: GLenum;
14824    readonly COLOR_ATTACHMENT13: GLenum;
14825    readonly COLOR_ATTACHMENT14: GLenum;
14826    readonly COLOR_ATTACHMENT15: GLenum;
14827    readonly COLOR_ATTACHMENT2: GLenum;
14828    readonly COLOR_ATTACHMENT3: GLenum;
14829    readonly COLOR_ATTACHMENT4: GLenum;
14830    readonly COLOR_ATTACHMENT5: GLenum;
14831    readonly COLOR_ATTACHMENT6: GLenum;
14832    readonly COLOR_ATTACHMENT7: GLenum;
14833    readonly COLOR_ATTACHMENT8: GLenum;
14834    readonly COLOR_ATTACHMENT9: GLenum;
14835    readonly COMPARE_REF_TO_TEXTURE: GLenum;
14836    readonly CONDITION_SATISFIED: GLenum;
14837    readonly COPY_READ_BUFFER: GLenum;
14838    readonly COPY_READ_BUFFER_BINDING: GLenum;
14839    readonly COPY_WRITE_BUFFER: GLenum;
14840    readonly COPY_WRITE_BUFFER_BINDING: GLenum;
14841    readonly CURRENT_QUERY: GLenum;
14842    readonly DEPTH: GLenum;
14843    readonly DEPTH24_STENCIL8: GLenum;
14844    readonly DEPTH32F_STENCIL8: GLenum;
14845    readonly DEPTH_COMPONENT24: GLenum;
14846    readonly DEPTH_COMPONENT32F: GLenum;
14847    readonly DRAW_BUFFER0: GLenum;
14848    readonly DRAW_BUFFER1: GLenum;
14849    readonly DRAW_BUFFER10: GLenum;
14850    readonly DRAW_BUFFER11: GLenum;
14851    readonly DRAW_BUFFER12: GLenum;
14852    readonly DRAW_BUFFER13: GLenum;
14853    readonly DRAW_BUFFER14: GLenum;
14854    readonly DRAW_BUFFER15: GLenum;
14855    readonly DRAW_BUFFER2: GLenum;
14856    readonly DRAW_BUFFER3: GLenum;
14857    readonly DRAW_BUFFER4: GLenum;
14858    readonly DRAW_BUFFER5: GLenum;
14859    readonly DRAW_BUFFER6: GLenum;
14860    readonly DRAW_BUFFER7: GLenum;
14861    readonly DRAW_BUFFER8: GLenum;
14862    readonly DRAW_BUFFER9: GLenum;
14863    readonly DRAW_FRAMEBUFFER: GLenum;
14864    readonly DRAW_FRAMEBUFFER_BINDING: GLenum;
14865    readonly DYNAMIC_COPY: GLenum;
14866    readonly DYNAMIC_READ: GLenum;
14867    readonly FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum;
14868    readonly FLOAT_MAT2x3: GLenum;
14869    readonly FLOAT_MAT2x4: GLenum;
14870    readonly FLOAT_MAT3x2: GLenum;
14871    readonly FLOAT_MAT3x4: GLenum;
14872    readonly FLOAT_MAT4x2: GLenum;
14873    readonly FLOAT_MAT4x3: GLenum;
14874    readonly FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum;
14875    readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum;
14876    readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum;
14877    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum;
14878    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum;
14879    readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum;
14880    readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum;
14881    readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum;
14882    readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum;
14883    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum;
14884    readonly FRAMEBUFFER_DEFAULT: GLenum;
14885    readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum;
14886    readonly HALF_FLOAT: GLenum;
14887    readonly INTERLEAVED_ATTRIBS: GLenum;
14888    readonly INT_2_10_10_10_REV: GLenum;
14889    readonly INT_SAMPLER_2D: GLenum;
14890    readonly INT_SAMPLER_2D_ARRAY: GLenum;
14891    readonly INT_SAMPLER_3D: GLenum;
14892    readonly INT_SAMPLER_CUBE: GLenum;
14893    readonly INVALID_INDEX: GLenum;
14894    readonly MAX: GLenum;
14895    readonly MAX_3D_TEXTURE_SIZE: GLenum;
14896    readonly MAX_ARRAY_TEXTURE_LAYERS: GLenum;
14897    readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: GLenum;
14898    readonly MAX_COLOR_ATTACHMENTS: GLenum;
14899    readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum;
14900    readonly MAX_COMBINED_UNIFORM_BLOCKS: GLenum;
14901    readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum;
14902    readonly MAX_DRAW_BUFFERS: GLenum;
14903    readonly MAX_ELEMENTS_INDICES: GLenum;
14904    readonly MAX_ELEMENTS_VERTICES: GLenum;
14905    readonly MAX_ELEMENT_INDEX: GLenum;
14906    readonly MAX_FRAGMENT_INPUT_COMPONENTS: GLenum;
14907    readonly MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum;
14908    readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum;
14909    readonly MAX_PROGRAM_TEXEL_OFFSET: GLenum;
14910    readonly MAX_SAMPLES: GLenum;
14911    readonly MAX_SERVER_WAIT_TIMEOUT: GLenum;
14912    readonly MAX_TEXTURE_LOD_BIAS: GLenum;
14913    readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum;
14914    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum;
14915    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum;
14916    readonly MAX_UNIFORM_BLOCK_SIZE: GLenum;
14917    readonly MAX_UNIFORM_BUFFER_BINDINGS: GLenum;
14918    readonly MAX_VARYING_COMPONENTS: GLenum;
14919    readonly MAX_VERTEX_OUTPUT_COMPONENTS: GLenum;
14920    readonly MAX_VERTEX_UNIFORM_BLOCKS: GLenum;
14921    readonly MAX_VERTEX_UNIFORM_COMPONENTS: GLenum;
14922    readonly MIN: GLenum;
14923    readonly MIN_PROGRAM_TEXEL_OFFSET: GLenum;
14924    readonly OBJECT_TYPE: GLenum;
14925    readonly PACK_ROW_LENGTH: GLenum;
14926    readonly PACK_SKIP_PIXELS: GLenum;
14927    readonly PACK_SKIP_ROWS: GLenum;
14928    readonly PIXEL_PACK_BUFFER: GLenum;
14929    readonly PIXEL_PACK_BUFFER_BINDING: GLenum;
14930    readonly PIXEL_UNPACK_BUFFER: GLenum;
14931    readonly PIXEL_UNPACK_BUFFER_BINDING: GLenum;
14932    readonly QUERY_RESULT: GLenum;
14933    readonly QUERY_RESULT_AVAILABLE: GLenum;
14934    readonly R11F_G11F_B10F: GLenum;
14935    readonly R16F: GLenum;
14936    readonly R16I: GLenum;
14937    readonly R16UI: GLenum;
14938    readonly R32F: GLenum;
14939    readonly R32I: GLenum;
14940    readonly R32UI: GLenum;
14941    readonly R8: GLenum;
14942    readonly R8I: GLenum;
14943    readonly R8UI: GLenum;
14944    readonly R8_SNORM: GLenum;
14945    readonly RASTERIZER_DISCARD: GLenum;
14946    readonly READ_BUFFER: GLenum;
14947    readonly READ_FRAMEBUFFER: GLenum;
14948    readonly READ_FRAMEBUFFER_BINDING: GLenum;
14949    readonly RED: GLenum;
14950    readonly RED_INTEGER: GLenum;
14951    readonly RENDERBUFFER_SAMPLES: GLenum;
14952    readonly RG: GLenum;
14953    readonly RG16F: GLenum;
14954    readonly RG16I: GLenum;
14955    readonly RG16UI: GLenum;
14956    readonly RG32F: GLenum;
14957    readonly RG32I: GLenum;
14958    readonly RG32UI: GLenum;
14959    readonly RG8: GLenum;
14960    readonly RG8I: GLenum;
14961    readonly RG8UI: GLenum;
14962    readonly RG8_SNORM: GLenum;
14963    readonly RGB10_A2: GLenum;
14964    readonly RGB10_A2UI: GLenum;
14965    readonly RGB16F: GLenum;
14966    readonly RGB16I: GLenum;
14967    readonly RGB16UI: GLenum;
14968    readonly RGB32F: GLenum;
14969    readonly RGB32I: GLenum;
14970    readonly RGB32UI: GLenum;
14971    readonly RGB8: GLenum;
14972    readonly RGB8I: GLenum;
14973    readonly RGB8UI: GLenum;
14974    readonly RGB8_SNORM: GLenum;
14975    readonly RGB9_E5: GLenum;
14976    readonly RGBA16F: GLenum;
14977    readonly RGBA16I: GLenum;
14978    readonly RGBA16UI: GLenum;
14979    readonly RGBA32F: GLenum;
14980    readonly RGBA32I: GLenum;
14981    readonly RGBA32UI: GLenum;
14982    readonly RGBA8: GLenum;
14983    readonly RGBA8I: GLenum;
14984    readonly RGBA8UI: GLenum;
14985    readonly RGBA8_SNORM: GLenum;
14986    readonly RGBA_INTEGER: GLenum;
14987    readonly RGB_INTEGER: GLenum;
14988    readonly RG_INTEGER: GLenum;
14989    readonly SAMPLER_2D_ARRAY: GLenum;
14990    readonly SAMPLER_2D_ARRAY_SHADOW: GLenum;
14991    readonly SAMPLER_2D_SHADOW: GLenum;
14992    readonly SAMPLER_3D: GLenum;
14993    readonly SAMPLER_BINDING: GLenum;
14994    readonly SAMPLER_CUBE_SHADOW: GLenum;
14995    readonly SEPARATE_ATTRIBS: GLenum;
14996    readonly SIGNALED: GLenum;
14997    readonly SIGNED_NORMALIZED: GLenum;
14998    readonly SRGB: GLenum;
14999    readonly SRGB8: GLenum;
15000    readonly SRGB8_ALPHA8: GLenum;
15001    readonly STATIC_COPY: GLenum;
15002    readonly STATIC_READ: GLenum;
15003    readonly STENCIL: GLenum;
15004    readonly STREAM_COPY: GLenum;
15005    readonly STREAM_READ: GLenum;
15006    readonly SYNC_CONDITION: GLenum;
15007    readonly SYNC_FENCE: GLenum;
15008    readonly SYNC_FLAGS: GLenum;
15009    readonly SYNC_FLUSH_COMMANDS_BIT: GLenum;
15010    readonly SYNC_GPU_COMMANDS_COMPLETE: GLenum;
15011    readonly SYNC_STATUS: GLenum;
15012    readonly TEXTURE_2D_ARRAY: GLenum;
15013    readonly TEXTURE_3D: GLenum;
15014    readonly TEXTURE_BASE_LEVEL: GLenum;
15015    readonly TEXTURE_BINDING_2D_ARRAY: GLenum;
15016    readonly TEXTURE_BINDING_3D: GLenum;
15017    readonly TEXTURE_COMPARE_FUNC: GLenum;
15018    readonly TEXTURE_COMPARE_MODE: GLenum;
15019    readonly TEXTURE_IMMUTABLE_FORMAT: GLenum;
15020    readonly TEXTURE_IMMUTABLE_LEVELS: GLenum;
15021    readonly TEXTURE_MAX_LEVEL: GLenum;
15022    readonly TEXTURE_MAX_LOD: GLenum;
15023    readonly TEXTURE_MIN_LOD: GLenum;
15024    readonly TEXTURE_WRAP_R: GLenum;
15025    readonly TIMEOUT_EXPIRED: GLenum;
15026    readonly TIMEOUT_IGNORED: GLint64;
15027    readonly TRANSFORM_FEEDBACK: GLenum;
15028    readonly TRANSFORM_FEEDBACK_ACTIVE: GLenum;
15029    readonly TRANSFORM_FEEDBACK_BINDING: GLenum;
15030    readonly TRANSFORM_FEEDBACK_BUFFER: GLenum;
15031    readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum;
15032    readonly TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum;
15033    readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum;
15034    readonly TRANSFORM_FEEDBACK_BUFFER_START: GLenum;
15035    readonly TRANSFORM_FEEDBACK_PAUSED: GLenum;
15036    readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum;
15037    readonly TRANSFORM_FEEDBACK_VARYINGS: GLenum;
15038    readonly UNIFORM_ARRAY_STRIDE: GLenum;
15039    readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum;
15040    readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum;
15041    readonly UNIFORM_BLOCK_BINDING: GLenum;
15042    readonly UNIFORM_BLOCK_DATA_SIZE: GLenum;
15043    readonly UNIFORM_BLOCK_INDEX: GLenum;
15044    readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum;
15045    readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum;
15046    readonly UNIFORM_BUFFER: GLenum;
15047    readonly UNIFORM_BUFFER_BINDING: GLenum;
15048    readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum;
15049    readonly UNIFORM_BUFFER_SIZE: GLenum;
15050    readonly UNIFORM_BUFFER_START: GLenum;
15051    readonly UNIFORM_IS_ROW_MAJOR: GLenum;
15052    readonly UNIFORM_MATRIX_STRIDE: GLenum;
15053    readonly UNIFORM_OFFSET: GLenum;
15054    readonly UNIFORM_SIZE: GLenum;
15055    readonly UNIFORM_TYPE: GLenum;
15056    readonly UNPACK_IMAGE_HEIGHT: GLenum;
15057    readonly UNPACK_ROW_LENGTH: GLenum;
15058    readonly UNPACK_SKIP_IMAGES: GLenum;
15059    readonly UNPACK_SKIP_PIXELS: GLenum;
15060    readonly UNPACK_SKIP_ROWS: GLenum;
15061    readonly UNSIGNALED: GLenum;
15062    readonly UNSIGNED_INT_10F_11F_11F_REV: GLenum;
15063    readonly UNSIGNED_INT_24_8: GLenum;
15064    readonly UNSIGNED_INT_2_10_10_10_REV: GLenum;
15065    readonly UNSIGNED_INT_5_9_9_9_REV: GLenum;
15066    readonly UNSIGNED_INT_SAMPLER_2D: GLenum;
15067    readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum;
15068    readonly UNSIGNED_INT_SAMPLER_3D: GLenum;
15069    readonly UNSIGNED_INT_SAMPLER_CUBE: GLenum;
15070    readonly UNSIGNED_INT_VEC2: GLenum;
15071    readonly UNSIGNED_INT_VEC3: GLenum;
15072    readonly UNSIGNED_INT_VEC4: GLenum;
15073    readonly UNSIGNED_NORMALIZED: GLenum;
15074    readonly VERTEX_ARRAY_BINDING: GLenum;
15075    readonly VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum;
15076    readonly VERTEX_ATTRIB_ARRAY_INTEGER: GLenum;
15077    readonly WAIT_FAILED: GLenum;
15078    readonly ACTIVE_ATTRIBUTES: GLenum;
15079    readonly ACTIVE_TEXTURE: GLenum;
15080    readonly ACTIVE_UNIFORMS: GLenum;
15081    readonly ALIASED_LINE_WIDTH_RANGE: GLenum;
15082    readonly ALIASED_POINT_SIZE_RANGE: GLenum;
15083    readonly ALPHA: GLenum;
15084    readonly ALPHA_BITS: GLenum;
15085    readonly ALWAYS: GLenum;
15086    readonly ARRAY_BUFFER: GLenum;
15087    readonly ARRAY_BUFFER_BINDING: GLenum;
15088    readonly ATTACHED_SHADERS: GLenum;
15089    readonly BACK: GLenum;
15090    readonly BLEND: GLenum;
15091    readonly BLEND_COLOR: GLenum;
15092    readonly BLEND_DST_ALPHA: GLenum;
15093    readonly BLEND_DST_RGB: GLenum;
15094    readonly BLEND_EQUATION: GLenum;
15095    readonly BLEND_EQUATION_ALPHA: GLenum;
15096    readonly BLEND_EQUATION_RGB: GLenum;
15097    readonly BLEND_SRC_ALPHA: GLenum;
15098    readonly BLEND_SRC_RGB: GLenum;
15099    readonly BLUE_BITS: GLenum;
15100    readonly BOOL: GLenum;
15101    readonly BOOL_VEC2: GLenum;
15102    readonly BOOL_VEC3: GLenum;
15103    readonly BOOL_VEC4: GLenum;
15104    readonly BROWSER_DEFAULT_WEBGL: GLenum;
15105    readonly BUFFER_SIZE: GLenum;
15106    readonly BUFFER_USAGE: GLenum;
15107    readonly BYTE: GLenum;
15108    readonly CCW: GLenum;
15109    readonly CLAMP_TO_EDGE: GLenum;
15110    readonly COLOR_ATTACHMENT0: GLenum;
15111    readonly COLOR_BUFFER_BIT: GLenum;
15112    readonly COLOR_CLEAR_VALUE: GLenum;
15113    readonly COLOR_WRITEMASK: GLenum;
15114    readonly COMPILE_STATUS: GLenum;
15115    readonly COMPRESSED_TEXTURE_FORMATS: GLenum;
15116    readonly CONSTANT_ALPHA: GLenum;
15117    readonly CONSTANT_COLOR: GLenum;
15118    readonly CONTEXT_LOST_WEBGL: GLenum;
15119    readonly CULL_FACE: GLenum;
15120    readonly CULL_FACE_MODE: GLenum;
15121    readonly CURRENT_PROGRAM: GLenum;
15122    readonly CURRENT_VERTEX_ATTRIB: GLenum;
15123    readonly CW: GLenum;
15124    readonly DECR: GLenum;
15125    readonly DECR_WRAP: GLenum;
15126    readonly DELETE_STATUS: GLenum;
15127    readonly DEPTH_ATTACHMENT: GLenum;
15128    readonly DEPTH_BITS: GLenum;
15129    readonly DEPTH_BUFFER_BIT: GLenum;
15130    readonly DEPTH_CLEAR_VALUE: GLenum;
15131    readonly DEPTH_COMPONENT: GLenum;
15132    readonly DEPTH_COMPONENT16: GLenum;
15133    readonly DEPTH_FUNC: GLenum;
15134    readonly DEPTH_RANGE: GLenum;
15135    readonly DEPTH_STENCIL: GLenum;
15136    readonly DEPTH_STENCIL_ATTACHMENT: GLenum;
15137    readonly DEPTH_TEST: GLenum;
15138    readonly DEPTH_WRITEMASK: GLenum;
15139    readonly DITHER: GLenum;
15140    readonly DONT_CARE: GLenum;
15141    readonly DST_ALPHA: GLenum;
15142    readonly DST_COLOR: GLenum;
15143    readonly DYNAMIC_DRAW: GLenum;
15144    readonly ELEMENT_ARRAY_BUFFER: GLenum;
15145    readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum;
15146    readonly EQUAL: GLenum;
15147    readonly FASTEST: GLenum;
15148    readonly FLOAT: GLenum;
15149    readonly FLOAT_MAT2: GLenum;
15150    readonly FLOAT_MAT3: GLenum;
15151    readonly FLOAT_MAT4: GLenum;
15152    readonly FLOAT_VEC2: GLenum;
15153    readonly FLOAT_VEC3: GLenum;
15154    readonly FLOAT_VEC4: GLenum;
15155    readonly FRAGMENT_SHADER: GLenum;
15156    readonly FRAMEBUFFER: GLenum;
15157    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum;
15158    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum;
15159    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum;
15160    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum;
15161    readonly FRAMEBUFFER_BINDING: GLenum;
15162    readonly FRAMEBUFFER_COMPLETE: GLenum;
15163    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum;
15164    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum;
15165    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum;
15166    readonly FRAMEBUFFER_UNSUPPORTED: GLenum;
15167    readonly FRONT: GLenum;
15168    readonly FRONT_AND_BACK: GLenum;
15169    readonly FRONT_FACE: GLenum;
15170    readonly FUNC_ADD: GLenum;
15171    readonly FUNC_REVERSE_SUBTRACT: GLenum;
15172    readonly FUNC_SUBTRACT: GLenum;
15173    readonly GENERATE_MIPMAP_HINT: GLenum;
15174    readonly GEQUAL: GLenum;
15175    readonly GREATER: GLenum;
15176    readonly GREEN_BITS: GLenum;
15177    readonly HIGH_FLOAT: GLenum;
15178    readonly HIGH_INT: GLenum;
15179    readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum;
15180    readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum;
15181    readonly INCR: GLenum;
15182    readonly INCR_WRAP: GLenum;
15183    readonly INT: GLenum;
15184    readonly INT_VEC2: GLenum;
15185    readonly INT_VEC3: GLenum;
15186    readonly INT_VEC4: GLenum;
15187    readonly INVALID_ENUM: GLenum;
15188    readonly INVALID_FRAMEBUFFER_OPERATION: GLenum;
15189    readonly INVALID_OPERATION: GLenum;
15190    readonly INVALID_VALUE: GLenum;
15191    readonly INVERT: GLenum;
15192    readonly KEEP: GLenum;
15193    readonly LEQUAL: GLenum;
15194    readonly LESS: GLenum;
15195    readonly LINEAR: GLenum;
15196    readonly LINEAR_MIPMAP_LINEAR: GLenum;
15197    readonly LINEAR_MIPMAP_NEAREST: GLenum;
15198    readonly LINES: GLenum;
15199    readonly LINE_LOOP: GLenum;
15200    readonly LINE_STRIP: GLenum;
15201    readonly LINE_WIDTH: GLenum;
15202    readonly LINK_STATUS: GLenum;
15203    readonly LOW_FLOAT: GLenum;
15204    readonly LOW_INT: GLenum;
15205    readonly LUMINANCE: GLenum;
15206    readonly LUMINANCE_ALPHA: GLenum;
15207    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum;
15208    readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum;
15209    readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum;
15210    readonly MAX_RENDERBUFFER_SIZE: GLenum;
15211    readonly MAX_TEXTURE_IMAGE_UNITS: GLenum;
15212    readonly MAX_TEXTURE_SIZE: GLenum;
15213    readonly MAX_VARYING_VECTORS: GLenum;
15214    readonly MAX_VERTEX_ATTRIBS: GLenum;
15215    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum;
15216    readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum;
15217    readonly MAX_VIEWPORT_DIMS: GLenum;
15218    readonly MEDIUM_FLOAT: GLenum;
15219    readonly MEDIUM_INT: GLenum;
15220    readonly MIRRORED_REPEAT: GLenum;
15221    readonly NEAREST: GLenum;
15222    readonly NEAREST_MIPMAP_LINEAR: GLenum;
15223    readonly NEAREST_MIPMAP_NEAREST: GLenum;
15224    readonly NEVER: GLenum;
15225    readonly NICEST: GLenum;
15226    readonly NONE: GLenum;
15227    readonly NOTEQUAL: GLenum;
15228    readonly NO_ERROR: GLenum;
15229    readonly ONE: GLenum;
15230    readonly ONE_MINUS_CONSTANT_ALPHA: GLenum;
15231    readonly ONE_MINUS_CONSTANT_COLOR: GLenum;
15232    readonly ONE_MINUS_DST_ALPHA: GLenum;
15233    readonly ONE_MINUS_DST_COLOR: GLenum;
15234    readonly ONE_MINUS_SRC_ALPHA: GLenum;
15235    readonly ONE_MINUS_SRC_COLOR: GLenum;
15236    readonly OUT_OF_MEMORY: GLenum;
15237    readonly PACK_ALIGNMENT: GLenum;
15238    readonly POINTS: GLenum;
15239    readonly POLYGON_OFFSET_FACTOR: GLenum;
15240    readonly POLYGON_OFFSET_FILL: GLenum;
15241    readonly POLYGON_OFFSET_UNITS: GLenum;
15242    readonly RED_BITS: GLenum;
15243    readonly RENDERBUFFER: GLenum;
15244    readonly RENDERBUFFER_ALPHA_SIZE: GLenum;
15245    readonly RENDERBUFFER_BINDING: GLenum;
15246    readonly RENDERBUFFER_BLUE_SIZE: GLenum;
15247    readonly RENDERBUFFER_DEPTH_SIZE: GLenum;
15248    readonly RENDERBUFFER_GREEN_SIZE: GLenum;
15249    readonly RENDERBUFFER_HEIGHT: GLenum;
15250    readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum;
15251    readonly RENDERBUFFER_RED_SIZE: GLenum;
15252    readonly RENDERBUFFER_STENCIL_SIZE: GLenum;
15253    readonly RENDERBUFFER_WIDTH: GLenum;
15254    readonly RENDERER: GLenum;
15255    readonly REPEAT: GLenum;
15256    readonly REPLACE: GLenum;
15257    readonly RGB: GLenum;
15258    readonly RGB565: GLenum;
15259    readonly RGB5_A1: GLenum;
15260    readonly RGBA: GLenum;
15261    readonly RGBA4: GLenum;
15262    readonly SAMPLER_2D: GLenum;
15263    readonly SAMPLER_CUBE: GLenum;
15264    readonly SAMPLES: GLenum;
15265    readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum;
15266    readonly SAMPLE_BUFFERS: GLenum;
15267    readonly SAMPLE_COVERAGE: GLenum;
15268    readonly SAMPLE_COVERAGE_INVERT: GLenum;
15269    readonly SAMPLE_COVERAGE_VALUE: GLenum;
15270    readonly SCISSOR_BOX: GLenum;
15271    readonly SCISSOR_TEST: GLenum;
15272    readonly SHADER_TYPE: GLenum;
15273    readonly SHADING_LANGUAGE_VERSION: GLenum;
15274    readonly SHORT: GLenum;
15275    readonly SRC_ALPHA: GLenum;
15276    readonly SRC_ALPHA_SATURATE: GLenum;
15277    readonly SRC_COLOR: GLenum;
15278    readonly STATIC_DRAW: GLenum;
15279    readonly STENCIL_ATTACHMENT: GLenum;
15280    readonly STENCIL_BACK_FAIL: GLenum;
15281    readonly STENCIL_BACK_FUNC: GLenum;
15282    readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum;
15283    readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum;
15284    readonly STENCIL_BACK_REF: GLenum;
15285    readonly STENCIL_BACK_VALUE_MASK: GLenum;
15286    readonly STENCIL_BACK_WRITEMASK: GLenum;
15287    readonly STENCIL_BITS: GLenum;
15288    readonly STENCIL_BUFFER_BIT: GLenum;
15289    readonly STENCIL_CLEAR_VALUE: GLenum;
15290    readonly STENCIL_FAIL: GLenum;
15291    readonly STENCIL_FUNC: GLenum;
15292    readonly STENCIL_INDEX8: GLenum;
15293    readonly STENCIL_PASS_DEPTH_FAIL: GLenum;
15294    readonly STENCIL_PASS_DEPTH_PASS: GLenum;
15295    readonly STENCIL_REF: GLenum;
15296    readonly STENCIL_TEST: GLenum;
15297    readonly STENCIL_VALUE_MASK: GLenum;
15298    readonly STENCIL_WRITEMASK: GLenum;
15299    readonly STREAM_DRAW: GLenum;
15300    readonly SUBPIXEL_BITS: GLenum;
15301    readonly TEXTURE: GLenum;
15302    readonly TEXTURE0: GLenum;
15303    readonly TEXTURE1: GLenum;
15304    readonly TEXTURE10: GLenum;
15305    readonly TEXTURE11: GLenum;
15306    readonly TEXTURE12: GLenum;
15307    readonly TEXTURE13: GLenum;
15308    readonly TEXTURE14: GLenum;
15309    readonly TEXTURE15: GLenum;
15310    readonly TEXTURE16: GLenum;
15311    readonly TEXTURE17: GLenum;
15312    readonly TEXTURE18: GLenum;
15313    readonly TEXTURE19: GLenum;
15314    readonly TEXTURE2: GLenum;
15315    readonly TEXTURE20: GLenum;
15316    readonly TEXTURE21: GLenum;
15317    readonly TEXTURE22: GLenum;
15318    readonly TEXTURE23: GLenum;
15319    readonly TEXTURE24: GLenum;
15320    readonly TEXTURE25: GLenum;
15321    readonly TEXTURE26: GLenum;
15322    readonly TEXTURE27: GLenum;
15323    readonly TEXTURE28: GLenum;
15324    readonly TEXTURE29: GLenum;
15325    readonly TEXTURE3: GLenum;
15326    readonly TEXTURE30: GLenum;
15327    readonly TEXTURE31: GLenum;
15328    readonly TEXTURE4: GLenum;
15329    readonly TEXTURE5: GLenum;
15330    readonly TEXTURE6: GLenum;
15331    readonly TEXTURE7: GLenum;
15332    readonly TEXTURE8: GLenum;
15333    readonly TEXTURE9: GLenum;
15334    readonly TEXTURE_2D: GLenum;
15335    readonly TEXTURE_BINDING_2D: GLenum;
15336    readonly TEXTURE_BINDING_CUBE_MAP: GLenum;
15337    readonly TEXTURE_CUBE_MAP: GLenum;
15338    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum;
15339    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum;
15340    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum;
15341    readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum;
15342    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum;
15343    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum;
15344    readonly TEXTURE_MAG_FILTER: GLenum;
15345    readonly TEXTURE_MIN_FILTER: GLenum;
15346    readonly TEXTURE_WRAP_S: GLenum;
15347    readonly TEXTURE_WRAP_T: GLenum;
15348    readonly TRIANGLES: GLenum;
15349    readonly TRIANGLE_FAN: GLenum;
15350    readonly TRIANGLE_STRIP: GLenum;
15351    readonly UNPACK_ALIGNMENT: GLenum;
15352    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum;
15353    readonly UNPACK_FLIP_Y_WEBGL: GLenum;
15354    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum;
15355    readonly UNSIGNED_BYTE: GLenum;
15356    readonly UNSIGNED_INT: GLenum;
15357    readonly UNSIGNED_SHORT: GLenum;
15358    readonly UNSIGNED_SHORT_4_4_4_4: GLenum;
15359    readonly UNSIGNED_SHORT_5_5_5_1: GLenum;
15360    readonly UNSIGNED_SHORT_5_6_5: GLenum;
15361    readonly VALIDATE_STATUS: GLenum;
15362    readonly VENDOR: GLenum;
15363    readonly VERSION: GLenum;
15364    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum;
15365    readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum;
15366    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum;
15367    readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum;
15368    readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum;
15369    readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum;
15370    readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum;
15371    readonly VERTEX_SHADER: GLenum;
15372    readonly VIEWPORT: GLenum;
15373    readonly ZERO: GLenum;
15374};
15375
15376interface WebGL2RenderingContextBase {
15377    beginQuery(target: GLenum, query: WebGLQuery): void;
15378    beginTransformFeedback(primitiveMode: GLenum): void;
15379    bindBufferBase(target: GLenum, index: GLuint, buffer: WebGLBuffer | null): void;
15380    bindBufferRange(target: GLenum, index: GLuint, buffer: WebGLBuffer | null, offset: GLintptr, size: GLsizeiptr): void;
15381    bindSampler(unit: GLuint, sampler: WebGLSampler | null): void;
15382    bindTransformFeedback(target: GLenum, tf: WebGLTransformFeedback | null): void;
15383    bindVertexArray(array: WebGLVertexArrayObject | null): void;
15384    blitFramebuffer(srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum): void;
15385    clearBufferfi(buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint): void;
15386    clearBufferfv(buffer: GLenum, drawbuffer: GLint, values: Float32List, srcOffset?: GLuint): void;
15387    clearBufferiv(buffer: GLenum, drawbuffer: GLint, values: Int32List, srcOffset?: GLuint): void;
15388    clearBufferuiv(buffer: GLenum, drawbuffer: GLint, values: Uint32List, srcOffset?: GLuint): void;
15389    clientWaitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLuint64): GLenum;
15390    compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr): void;
15391    compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;
15392    compressedTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr): void;
15393    compressedTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;
15394    copyBufferSubData(readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr): void;
15395    copyTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
15396    createQuery(): WebGLQuery | null;
15397    createSampler(): WebGLSampler | null;
15398    createTransformFeedback(): WebGLTransformFeedback | null;
15399    createVertexArray(): WebGLVertexArrayObject | null;
15400    deleteQuery(query: WebGLQuery | null): void;
15401    deleteSampler(sampler: WebGLSampler | null): void;
15402    deleteSync(sync: WebGLSync | null): void;
15403    deleteTransformFeedback(tf: WebGLTransformFeedback | null): void;
15404    deleteVertexArray(vertexArray: WebGLVertexArrayObject | null): void;
15405    drawArraysInstanced(mode: GLenum, first: GLint, count: GLsizei, instanceCount: GLsizei): void;
15406    drawBuffers(buffers: GLenum[]): void;
15407    drawElementsInstanced(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, instanceCount: GLsizei): void;
15408    drawRangeElements(mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type: GLenum, offset: GLintptr): void;
15409    endQuery(target: GLenum): void;
15410    endTransformFeedback(): void;
15411    fenceSync(condition: GLenum, flags: GLbitfield): WebGLSync | null;
15412    framebufferTextureLayer(target: GLenum, attachment: GLenum, texture: WebGLTexture | null, level: GLint, layer: GLint): void;
15413    getActiveUniformBlockName(program: WebGLProgram, uniformBlockIndex: GLuint): string | null;
15414    getActiveUniformBlockParameter(program: WebGLProgram, uniformBlockIndex: GLuint, pname: GLenum): any;
15415    getActiveUniforms(program: WebGLProgram, uniformIndices: GLuint[], pname: GLenum): any;
15416    getBufferSubData(target: GLenum, srcByteOffset: GLintptr, dstBuffer: ArrayBufferView, dstOffset?: GLuint, length?: GLuint): void;
15417    getFragDataLocation(program: WebGLProgram, name: string): GLint;
15418    getIndexedParameter(target: GLenum, index: GLuint): any;
15419    getInternalformatParameter(target: GLenum, internalformat: GLenum, pname: GLenum): any;
15420    getQuery(target: GLenum, pname: GLenum): WebGLQuery | null;
15421    getQueryParameter(query: WebGLQuery, pname: GLenum): any;
15422    getSamplerParameter(sampler: WebGLSampler, pname: GLenum): any;
15423    getSyncParameter(sync: WebGLSync, pname: GLenum): any;
15424    getTransformFeedbackVarying(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;
15425    getUniformBlockIndex(program: WebGLProgram, uniformBlockName: string): GLuint;
15426    getUniformIndices(program: WebGLProgram, uniformNames: string[]): GLuint[] | null;
15427    invalidateFramebuffer(target: GLenum, attachments: GLenum[]): void;
15428    invalidateSubFramebuffer(target: GLenum, attachments: GLenum[], x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
15429    isQuery(query: WebGLQuery | null): GLboolean;
15430    isSampler(sampler: WebGLSampler | null): GLboolean;
15431    isSync(sync: WebGLSync | null): GLboolean;
15432    isTransformFeedback(tf: WebGLTransformFeedback | null): GLboolean;
15433    isVertexArray(vertexArray: WebGLVertexArrayObject | null): GLboolean;
15434    pauseTransformFeedback(): void;
15435    readBuffer(src: GLenum): void;
15436    renderbufferStorageMultisample(target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei): void;
15437    resumeTransformFeedback(): void;
15438    samplerParameterf(sampler: WebGLSampler, pname: GLenum, param: GLfloat): void;
15439    samplerParameteri(sampler: WebGLSampler, pname: GLenum, param: GLint): void;
15440    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
15441    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
15442    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView | null): void;
15443    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;
15444    texStorage2D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei): void;
15445    texStorage3D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei): void;
15446    texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
15447    texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, source: TexImageSource): void;
15448    texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView | null, srcOffset?: GLuint): void;
15449    transformFeedbackVaryings(program: WebGLProgram, varyings: string[], bufferMode: GLenum): void;
15450    uniform1ui(location: WebGLUniformLocation | null, v0: GLuint): void;
15451    uniform1uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15452    uniform2ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint): void;
15453    uniform2uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15454    uniform3ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint, v2: GLuint): void;
15455    uniform3uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15456    uniform4ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint): void;
15457    uniform4uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15458    uniformBlockBinding(program: WebGLProgram, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint): void;
15459    uniformMatrix2x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15460    uniformMatrix2x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15461    uniformMatrix3x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15462    uniformMatrix3x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15463    uniformMatrix4x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15464    uniformMatrix4x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15465    vertexAttribDivisor(index: GLuint, divisor: GLuint): void;
15466    vertexAttribI4i(index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint): void;
15467    vertexAttribI4iv(index: GLuint, values: Int32List): void;
15468    vertexAttribI4ui(index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint): void;
15469    vertexAttribI4uiv(index: GLuint, values: Uint32List): void;
15470    vertexAttribIPointer(index: GLuint, size: GLint, type: GLenum, stride: GLsizei, offset: GLintptr): void;
15471    waitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLint64): void;
15472    readonly ACTIVE_UNIFORM_BLOCKS: GLenum;
15473    readonly ALREADY_SIGNALED: GLenum;
15474    readonly ANY_SAMPLES_PASSED: GLenum;
15475    readonly ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum;
15476    readonly COLOR: GLenum;
15477    readonly COLOR_ATTACHMENT1: GLenum;
15478    readonly COLOR_ATTACHMENT10: GLenum;
15479    readonly COLOR_ATTACHMENT11: GLenum;
15480    readonly COLOR_ATTACHMENT12: GLenum;
15481    readonly COLOR_ATTACHMENT13: GLenum;
15482    readonly COLOR_ATTACHMENT14: GLenum;
15483    readonly COLOR_ATTACHMENT15: GLenum;
15484    readonly COLOR_ATTACHMENT2: GLenum;
15485    readonly COLOR_ATTACHMENT3: GLenum;
15486    readonly COLOR_ATTACHMENT4: GLenum;
15487    readonly COLOR_ATTACHMENT5: GLenum;
15488    readonly COLOR_ATTACHMENT6: GLenum;
15489    readonly COLOR_ATTACHMENT7: GLenum;
15490    readonly COLOR_ATTACHMENT8: GLenum;
15491    readonly COLOR_ATTACHMENT9: GLenum;
15492    readonly COMPARE_REF_TO_TEXTURE: GLenum;
15493    readonly CONDITION_SATISFIED: GLenum;
15494    readonly COPY_READ_BUFFER: GLenum;
15495    readonly COPY_READ_BUFFER_BINDING: GLenum;
15496    readonly COPY_WRITE_BUFFER: GLenum;
15497    readonly COPY_WRITE_BUFFER_BINDING: GLenum;
15498    readonly CURRENT_QUERY: GLenum;
15499    readonly DEPTH: GLenum;
15500    readonly DEPTH24_STENCIL8: GLenum;
15501    readonly DEPTH32F_STENCIL8: GLenum;
15502    readonly DEPTH_COMPONENT24: GLenum;
15503    readonly DEPTH_COMPONENT32F: GLenum;
15504    readonly DRAW_BUFFER0: GLenum;
15505    readonly DRAW_BUFFER1: GLenum;
15506    readonly DRAW_BUFFER10: GLenum;
15507    readonly DRAW_BUFFER11: GLenum;
15508    readonly DRAW_BUFFER12: GLenum;
15509    readonly DRAW_BUFFER13: GLenum;
15510    readonly DRAW_BUFFER14: GLenum;
15511    readonly DRAW_BUFFER15: GLenum;
15512    readonly DRAW_BUFFER2: GLenum;
15513    readonly DRAW_BUFFER3: GLenum;
15514    readonly DRAW_BUFFER4: GLenum;
15515    readonly DRAW_BUFFER5: GLenum;
15516    readonly DRAW_BUFFER6: GLenum;
15517    readonly DRAW_BUFFER7: GLenum;
15518    readonly DRAW_BUFFER8: GLenum;
15519    readonly DRAW_BUFFER9: GLenum;
15520    readonly DRAW_FRAMEBUFFER: GLenum;
15521    readonly DRAW_FRAMEBUFFER_BINDING: GLenum;
15522    readonly DYNAMIC_COPY: GLenum;
15523    readonly DYNAMIC_READ: GLenum;
15524    readonly FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum;
15525    readonly FLOAT_MAT2x3: GLenum;
15526    readonly FLOAT_MAT2x4: GLenum;
15527    readonly FLOAT_MAT3x2: GLenum;
15528    readonly FLOAT_MAT3x4: GLenum;
15529    readonly FLOAT_MAT4x2: GLenum;
15530    readonly FLOAT_MAT4x3: GLenum;
15531    readonly FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum;
15532    readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum;
15533    readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum;
15534    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum;
15535    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum;
15536    readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum;
15537    readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum;
15538    readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum;
15539    readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum;
15540    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum;
15541    readonly FRAMEBUFFER_DEFAULT: GLenum;
15542    readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum;
15543    readonly HALF_FLOAT: GLenum;
15544    readonly INTERLEAVED_ATTRIBS: GLenum;
15545    readonly INT_2_10_10_10_REV: GLenum;
15546    readonly INT_SAMPLER_2D: GLenum;
15547    readonly INT_SAMPLER_2D_ARRAY: GLenum;
15548    readonly INT_SAMPLER_3D: GLenum;
15549    readonly INT_SAMPLER_CUBE: GLenum;
15550    readonly INVALID_INDEX: GLenum;
15551    readonly MAX: GLenum;
15552    readonly MAX_3D_TEXTURE_SIZE: GLenum;
15553    readonly MAX_ARRAY_TEXTURE_LAYERS: GLenum;
15554    readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: GLenum;
15555    readonly MAX_COLOR_ATTACHMENTS: GLenum;
15556    readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum;
15557    readonly MAX_COMBINED_UNIFORM_BLOCKS: GLenum;
15558    readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum;
15559    readonly MAX_DRAW_BUFFERS: GLenum;
15560    readonly MAX_ELEMENTS_INDICES: GLenum;
15561    readonly MAX_ELEMENTS_VERTICES: GLenum;
15562    readonly MAX_ELEMENT_INDEX: GLenum;
15563    readonly MAX_FRAGMENT_INPUT_COMPONENTS: GLenum;
15564    readonly MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum;
15565    readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum;
15566    readonly MAX_PROGRAM_TEXEL_OFFSET: GLenum;
15567    readonly MAX_SAMPLES: GLenum;
15568    readonly MAX_SERVER_WAIT_TIMEOUT: GLenum;
15569    readonly MAX_TEXTURE_LOD_BIAS: GLenum;
15570    readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum;
15571    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum;
15572    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum;
15573    readonly MAX_UNIFORM_BLOCK_SIZE: GLenum;
15574    readonly MAX_UNIFORM_BUFFER_BINDINGS: GLenum;
15575    readonly MAX_VARYING_COMPONENTS: GLenum;
15576    readonly MAX_VERTEX_OUTPUT_COMPONENTS: GLenum;
15577    readonly MAX_VERTEX_UNIFORM_BLOCKS: GLenum;
15578    readonly MAX_VERTEX_UNIFORM_COMPONENTS: GLenum;
15579    readonly MIN: GLenum;
15580    readonly MIN_PROGRAM_TEXEL_OFFSET: GLenum;
15581    readonly OBJECT_TYPE: GLenum;
15582    readonly PACK_ROW_LENGTH: GLenum;
15583    readonly PACK_SKIP_PIXELS: GLenum;
15584    readonly PACK_SKIP_ROWS: GLenum;
15585    readonly PIXEL_PACK_BUFFER: GLenum;
15586    readonly PIXEL_PACK_BUFFER_BINDING: GLenum;
15587    readonly PIXEL_UNPACK_BUFFER: GLenum;
15588    readonly PIXEL_UNPACK_BUFFER_BINDING: GLenum;
15589    readonly QUERY_RESULT: GLenum;
15590    readonly QUERY_RESULT_AVAILABLE: GLenum;
15591    readonly R11F_G11F_B10F: GLenum;
15592    readonly R16F: GLenum;
15593    readonly R16I: GLenum;
15594    readonly R16UI: GLenum;
15595    readonly R32F: GLenum;
15596    readonly R32I: GLenum;
15597    readonly R32UI: GLenum;
15598    readonly R8: GLenum;
15599    readonly R8I: GLenum;
15600    readonly R8UI: GLenum;
15601    readonly R8_SNORM: GLenum;
15602    readonly RASTERIZER_DISCARD: GLenum;
15603    readonly READ_BUFFER: GLenum;
15604    readonly READ_FRAMEBUFFER: GLenum;
15605    readonly READ_FRAMEBUFFER_BINDING: GLenum;
15606    readonly RED: GLenum;
15607    readonly RED_INTEGER: GLenum;
15608    readonly RENDERBUFFER_SAMPLES: GLenum;
15609    readonly RG: GLenum;
15610    readonly RG16F: GLenum;
15611    readonly RG16I: GLenum;
15612    readonly RG16UI: GLenum;
15613    readonly RG32F: GLenum;
15614    readonly RG32I: GLenum;
15615    readonly RG32UI: GLenum;
15616    readonly RG8: GLenum;
15617    readonly RG8I: GLenum;
15618    readonly RG8UI: GLenum;
15619    readonly RG8_SNORM: GLenum;
15620    readonly RGB10_A2: GLenum;
15621    readonly RGB10_A2UI: GLenum;
15622    readonly RGB16F: GLenum;
15623    readonly RGB16I: GLenum;
15624    readonly RGB16UI: GLenum;
15625    readonly RGB32F: GLenum;
15626    readonly RGB32I: GLenum;
15627    readonly RGB32UI: GLenum;
15628    readonly RGB8: GLenum;
15629    readonly RGB8I: GLenum;
15630    readonly RGB8UI: GLenum;
15631    readonly RGB8_SNORM: GLenum;
15632    readonly RGB9_E5: GLenum;
15633    readonly RGBA16F: GLenum;
15634    readonly RGBA16I: GLenum;
15635    readonly RGBA16UI: GLenum;
15636    readonly RGBA32F: GLenum;
15637    readonly RGBA32I: GLenum;
15638    readonly RGBA32UI: GLenum;
15639    readonly RGBA8: GLenum;
15640    readonly RGBA8I: GLenum;
15641    readonly RGBA8UI: GLenum;
15642    readonly RGBA8_SNORM: GLenum;
15643    readonly RGBA_INTEGER: GLenum;
15644    readonly RGB_INTEGER: GLenum;
15645    readonly RG_INTEGER: GLenum;
15646    readonly SAMPLER_2D_ARRAY: GLenum;
15647    readonly SAMPLER_2D_ARRAY_SHADOW: GLenum;
15648    readonly SAMPLER_2D_SHADOW: GLenum;
15649    readonly SAMPLER_3D: GLenum;
15650    readonly SAMPLER_BINDING: GLenum;
15651    readonly SAMPLER_CUBE_SHADOW: GLenum;
15652    readonly SEPARATE_ATTRIBS: GLenum;
15653    readonly SIGNALED: GLenum;
15654    readonly SIGNED_NORMALIZED: GLenum;
15655    readonly SRGB: GLenum;
15656    readonly SRGB8: GLenum;
15657    readonly SRGB8_ALPHA8: GLenum;
15658    readonly STATIC_COPY: GLenum;
15659    readonly STATIC_READ: GLenum;
15660    readonly STENCIL: GLenum;
15661    readonly STREAM_COPY: GLenum;
15662    readonly STREAM_READ: GLenum;
15663    readonly SYNC_CONDITION: GLenum;
15664    readonly SYNC_FENCE: GLenum;
15665    readonly SYNC_FLAGS: GLenum;
15666    readonly SYNC_FLUSH_COMMANDS_BIT: GLenum;
15667    readonly SYNC_GPU_COMMANDS_COMPLETE: GLenum;
15668    readonly SYNC_STATUS: GLenum;
15669    readonly TEXTURE_2D_ARRAY: GLenum;
15670    readonly TEXTURE_3D: GLenum;
15671    readonly TEXTURE_BASE_LEVEL: GLenum;
15672    readonly TEXTURE_BINDING_2D_ARRAY: GLenum;
15673    readonly TEXTURE_BINDING_3D: GLenum;
15674    readonly TEXTURE_COMPARE_FUNC: GLenum;
15675    readonly TEXTURE_COMPARE_MODE: GLenum;
15676    readonly TEXTURE_IMMUTABLE_FORMAT: GLenum;
15677    readonly TEXTURE_IMMUTABLE_LEVELS: GLenum;
15678    readonly TEXTURE_MAX_LEVEL: GLenum;
15679    readonly TEXTURE_MAX_LOD: GLenum;
15680    readonly TEXTURE_MIN_LOD: GLenum;
15681    readonly TEXTURE_WRAP_R: GLenum;
15682    readonly TIMEOUT_EXPIRED: GLenum;
15683    readonly TIMEOUT_IGNORED: GLint64;
15684    readonly TRANSFORM_FEEDBACK: GLenum;
15685    readonly TRANSFORM_FEEDBACK_ACTIVE: GLenum;
15686    readonly TRANSFORM_FEEDBACK_BINDING: GLenum;
15687    readonly TRANSFORM_FEEDBACK_BUFFER: GLenum;
15688    readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum;
15689    readonly TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum;
15690    readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum;
15691    readonly TRANSFORM_FEEDBACK_BUFFER_START: GLenum;
15692    readonly TRANSFORM_FEEDBACK_PAUSED: GLenum;
15693    readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum;
15694    readonly TRANSFORM_FEEDBACK_VARYINGS: GLenum;
15695    readonly UNIFORM_ARRAY_STRIDE: GLenum;
15696    readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum;
15697    readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum;
15698    readonly UNIFORM_BLOCK_BINDING: GLenum;
15699    readonly UNIFORM_BLOCK_DATA_SIZE: GLenum;
15700    readonly UNIFORM_BLOCK_INDEX: GLenum;
15701    readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum;
15702    readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum;
15703    readonly UNIFORM_BUFFER: GLenum;
15704    readonly UNIFORM_BUFFER_BINDING: GLenum;
15705    readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum;
15706    readonly UNIFORM_BUFFER_SIZE: GLenum;
15707    readonly UNIFORM_BUFFER_START: GLenum;
15708    readonly UNIFORM_IS_ROW_MAJOR: GLenum;
15709    readonly UNIFORM_MATRIX_STRIDE: GLenum;
15710    readonly UNIFORM_OFFSET: GLenum;
15711    readonly UNIFORM_SIZE: GLenum;
15712    readonly UNIFORM_TYPE: GLenum;
15713    readonly UNPACK_IMAGE_HEIGHT: GLenum;
15714    readonly UNPACK_ROW_LENGTH: GLenum;
15715    readonly UNPACK_SKIP_IMAGES: GLenum;
15716    readonly UNPACK_SKIP_PIXELS: GLenum;
15717    readonly UNPACK_SKIP_ROWS: GLenum;
15718    readonly UNSIGNALED: GLenum;
15719    readonly UNSIGNED_INT_10F_11F_11F_REV: GLenum;
15720    readonly UNSIGNED_INT_24_8: GLenum;
15721    readonly UNSIGNED_INT_2_10_10_10_REV: GLenum;
15722    readonly UNSIGNED_INT_5_9_9_9_REV: GLenum;
15723    readonly UNSIGNED_INT_SAMPLER_2D: GLenum;
15724    readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum;
15725    readonly UNSIGNED_INT_SAMPLER_3D: GLenum;
15726    readonly UNSIGNED_INT_SAMPLER_CUBE: GLenum;
15727    readonly UNSIGNED_INT_VEC2: GLenum;
15728    readonly UNSIGNED_INT_VEC3: GLenum;
15729    readonly UNSIGNED_INT_VEC4: GLenum;
15730    readonly UNSIGNED_NORMALIZED: GLenum;
15731    readonly VERTEX_ARRAY_BINDING: GLenum;
15732    readonly VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum;
15733    readonly VERTEX_ATTRIB_ARRAY_INTEGER: GLenum;
15734    readonly WAIT_FAILED: GLenum;
15735}
15736
15737interface WebGL2RenderingContextOverloads {
15738    bufferData(target: GLenum, size: GLsizeiptr, usage: GLenum): void;
15739    bufferData(target: GLenum, srcData: BufferSource | null, usage: GLenum): void;
15740    bufferData(target: GLenum, srcData: ArrayBufferView, usage: GLenum, srcOffset: GLuint, length?: GLuint): void;
15741    bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: BufferSource): void;
15742    bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: ArrayBufferView, srcOffset: GLuint, length?: GLuint): void;
15743    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr): void;
15744    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;
15745    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr): void;
15746    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;
15747    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView | null): void;
15748    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, offset: GLintptr): void;
15749    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView, dstOffset: GLuint): void;
15750    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
15751    texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
15752    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
15753    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
15754    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;
15755    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
15756    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
15757    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
15758    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, source: TexImageSource): void;
15759    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;
15760    uniform1fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15761    uniform1iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15762    uniform2fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15763    uniform2iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15764    uniform3fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15765    uniform3iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15766    uniform4fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15767    uniform4iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15768    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15769    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15770    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15771}
15772
15773/** Part of the WebGL API and represents the information returned by calling the WebGLRenderingContext.getActiveAttrib() and WebGLRenderingContext.getActiveUniform() methods. */
15774interface WebGLActiveInfo {
15775    readonly name: string;
15776    readonly size: GLint;
15777    readonly type: GLenum;
15778}
15779
15780declare var WebGLActiveInfo: {
15781    prototype: WebGLActiveInfo;
15782    new(): WebGLActiveInfo;
15783};
15784
15785/** Part of the WebGL API and represents an opaque buffer object storing data such as vertices or colors. */
15786interface WebGLBuffer {
15787}
15788
15789declare var WebGLBuffer: {
15790    prototype: WebGLBuffer;
15791    new(): WebGLBuffer;
15792};
15793
15794/** The WebContextEvent interface is part of the WebGL API and is an interface for an event that is generated in response to a status change to the WebGL rendering context. */
15795interface WebGLContextEvent extends Event {
15796    readonly statusMessage: string;
15797}
15798
15799declare var WebGLContextEvent: {
15800    prototype: WebGLContextEvent;
15801    new(type: string, eventInit?: WebGLContextEventInit): WebGLContextEvent;
15802};
15803
15804/** Part of the WebGL API and represents a collection of buffers that serve as a rendering destination. */
15805interface WebGLFramebuffer {
15806}
15807
15808declare var WebGLFramebuffer: {
15809    prototype: WebGLFramebuffer;
15810    new(): WebGLFramebuffer;
15811};
15812
15813/** The WebGLProgram is part of the WebGL API and is a combination of two compiled WebGLShaders consisting of a vertex shader and a fragment shader (both written in GLSL). */
15814interface WebGLProgram {
15815}
15816
15817declare var WebGLProgram: {
15818    prototype: WebGLProgram;
15819    new(): WebGLProgram;
15820};
15821
15822interface WebGLQuery {
15823}
15824
15825declare var WebGLQuery: {
15826    prototype: WebGLQuery;
15827    new(): WebGLQuery;
15828};
15829
15830/** Part of the WebGL API and represents a buffer that can contain an image, or can be source or target of an rendering operation. */
15831interface WebGLRenderbuffer {
15832}
15833
15834declare var WebGLRenderbuffer: {
15835    prototype: WebGLRenderbuffer;
15836    new(): WebGLRenderbuffer;
15837};
15838
15839/** Provides an interface to the OpenGL ES 2.0 graphics rendering context for the drawing surface of an HTML <canvas> element. */
15840interface WebGLRenderingContext extends WebGLRenderingContextBase, WebGLRenderingContextOverloads {
15841}
15842
15843declare var WebGLRenderingContext: {
15844    prototype: WebGLRenderingContext;
15845    new(): WebGLRenderingContext;
15846    readonly ACTIVE_ATTRIBUTES: GLenum;
15847    readonly ACTIVE_TEXTURE: GLenum;
15848    readonly ACTIVE_UNIFORMS: GLenum;
15849    readonly ALIASED_LINE_WIDTH_RANGE: GLenum;
15850    readonly ALIASED_POINT_SIZE_RANGE: GLenum;
15851    readonly ALPHA: GLenum;
15852    readonly ALPHA_BITS: GLenum;
15853    readonly ALWAYS: GLenum;
15854    readonly ARRAY_BUFFER: GLenum;
15855    readonly ARRAY_BUFFER_BINDING: GLenum;
15856    readonly ATTACHED_SHADERS: GLenum;
15857    readonly BACK: GLenum;
15858    readonly BLEND: GLenum;
15859    readonly BLEND_COLOR: GLenum;
15860    readonly BLEND_DST_ALPHA: GLenum;
15861    readonly BLEND_DST_RGB: GLenum;
15862    readonly BLEND_EQUATION: GLenum;
15863    readonly BLEND_EQUATION_ALPHA: GLenum;
15864    readonly BLEND_EQUATION_RGB: GLenum;
15865    readonly BLEND_SRC_ALPHA: GLenum;
15866    readonly BLEND_SRC_RGB: GLenum;
15867    readonly BLUE_BITS: GLenum;
15868    readonly BOOL: GLenum;
15869    readonly BOOL_VEC2: GLenum;
15870    readonly BOOL_VEC3: GLenum;
15871    readonly BOOL_VEC4: GLenum;
15872    readonly BROWSER_DEFAULT_WEBGL: GLenum;
15873    readonly BUFFER_SIZE: GLenum;
15874    readonly BUFFER_USAGE: GLenum;
15875    readonly BYTE: GLenum;
15876    readonly CCW: GLenum;
15877    readonly CLAMP_TO_EDGE: GLenum;
15878    readonly COLOR_ATTACHMENT0: GLenum;
15879    readonly COLOR_BUFFER_BIT: GLenum;
15880    readonly COLOR_CLEAR_VALUE: GLenum;
15881    readonly COLOR_WRITEMASK: GLenum;
15882    readonly COMPILE_STATUS: GLenum;
15883    readonly COMPRESSED_TEXTURE_FORMATS: GLenum;
15884    readonly CONSTANT_ALPHA: GLenum;
15885    readonly CONSTANT_COLOR: GLenum;
15886    readonly CONTEXT_LOST_WEBGL: GLenum;
15887    readonly CULL_FACE: GLenum;
15888    readonly CULL_FACE_MODE: GLenum;
15889    readonly CURRENT_PROGRAM: GLenum;
15890    readonly CURRENT_VERTEX_ATTRIB: GLenum;
15891    readonly CW: GLenum;
15892    readonly DECR: GLenum;
15893    readonly DECR_WRAP: GLenum;
15894    readonly DELETE_STATUS: GLenum;
15895    readonly DEPTH_ATTACHMENT: GLenum;
15896    readonly DEPTH_BITS: GLenum;
15897    readonly DEPTH_BUFFER_BIT: GLenum;
15898    readonly DEPTH_CLEAR_VALUE: GLenum;
15899    readonly DEPTH_COMPONENT: GLenum;
15900    readonly DEPTH_COMPONENT16: GLenum;
15901    readonly DEPTH_FUNC: GLenum;
15902    readonly DEPTH_RANGE: GLenum;
15903    readonly DEPTH_STENCIL: GLenum;
15904    readonly DEPTH_STENCIL_ATTACHMENT: GLenum;
15905    readonly DEPTH_TEST: GLenum;
15906    readonly DEPTH_WRITEMASK: GLenum;
15907    readonly DITHER: GLenum;
15908    readonly DONT_CARE: GLenum;
15909    readonly DST_ALPHA: GLenum;
15910    readonly DST_COLOR: GLenum;
15911    readonly DYNAMIC_DRAW: GLenum;
15912    readonly ELEMENT_ARRAY_BUFFER: GLenum;
15913    readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum;
15914    readonly EQUAL: GLenum;
15915    readonly FASTEST: GLenum;
15916    readonly FLOAT: GLenum;
15917    readonly FLOAT_MAT2: GLenum;
15918    readonly FLOAT_MAT3: GLenum;
15919    readonly FLOAT_MAT4: GLenum;
15920    readonly FLOAT_VEC2: GLenum;
15921    readonly FLOAT_VEC3: GLenum;
15922    readonly FLOAT_VEC4: GLenum;
15923    readonly FRAGMENT_SHADER: GLenum;
15924    readonly FRAMEBUFFER: GLenum;
15925    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum;
15926    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum;
15927    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum;
15928    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum;
15929    readonly FRAMEBUFFER_BINDING: GLenum;
15930    readonly FRAMEBUFFER_COMPLETE: GLenum;
15931    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum;
15932    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum;
15933    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum;
15934    readonly FRAMEBUFFER_UNSUPPORTED: GLenum;
15935    readonly FRONT: GLenum;
15936    readonly FRONT_AND_BACK: GLenum;
15937    readonly FRONT_FACE: GLenum;
15938    readonly FUNC_ADD: GLenum;
15939    readonly FUNC_REVERSE_SUBTRACT: GLenum;
15940    readonly FUNC_SUBTRACT: GLenum;
15941    readonly GENERATE_MIPMAP_HINT: GLenum;
15942    readonly GEQUAL: GLenum;
15943    readonly GREATER: GLenum;
15944    readonly GREEN_BITS: GLenum;
15945    readonly HIGH_FLOAT: GLenum;
15946    readonly HIGH_INT: GLenum;
15947    readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum;
15948    readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum;
15949    readonly INCR: GLenum;
15950    readonly INCR_WRAP: GLenum;
15951    readonly INT: GLenum;
15952    readonly INT_VEC2: GLenum;
15953    readonly INT_VEC3: GLenum;
15954    readonly INT_VEC4: GLenum;
15955    readonly INVALID_ENUM: GLenum;
15956    readonly INVALID_FRAMEBUFFER_OPERATION: GLenum;
15957    readonly INVALID_OPERATION: GLenum;
15958    readonly INVALID_VALUE: GLenum;
15959    readonly INVERT: GLenum;
15960    readonly KEEP: GLenum;
15961    readonly LEQUAL: GLenum;
15962    readonly LESS: GLenum;
15963    readonly LINEAR: GLenum;
15964    readonly LINEAR_MIPMAP_LINEAR: GLenum;
15965    readonly LINEAR_MIPMAP_NEAREST: GLenum;
15966    readonly LINES: GLenum;
15967    readonly LINE_LOOP: GLenum;
15968    readonly LINE_STRIP: GLenum;
15969    readonly LINE_WIDTH: GLenum;
15970    readonly LINK_STATUS: GLenum;
15971    readonly LOW_FLOAT: GLenum;
15972    readonly LOW_INT: GLenum;
15973    readonly LUMINANCE: GLenum;
15974    readonly LUMINANCE_ALPHA: GLenum;
15975    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum;
15976    readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum;
15977    readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum;
15978    readonly MAX_RENDERBUFFER_SIZE: GLenum;
15979    readonly MAX_TEXTURE_IMAGE_UNITS: GLenum;
15980    readonly MAX_TEXTURE_SIZE: GLenum;
15981    readonly MAX_VARYING_VECTORS: GLenum;
15982    readonly MAX_VERTEX_ATTRIBS: GLenum;
15983    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum;
15984    readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum;
15985    readonly MAX_VIEWPORT_DIMS: GLenum;
15986    readonly MEDIUM_FLOAT: GLenum;
15987    readonly MEDIUM_INT: GLenum;
15988    readonly MIRRORED_REPEAT: GLenum;
15989    readonly NEAREST: GLenum;
15990    readonly NEAREST_MIPMAP_LINEAR: GLenum;
15991    readonly NEAREST_MIPMAP_NEAREST: GLenum;
15992    readonly NEVER: GLenum;
15993    readonly NICEST: GLenum;
15994    readonly NONE: GLenum;
15995    readonly NOTEQUAL: GLenum;
15996    readonly NO_ERROR: GLenum;
15997    readonly ONE: GLenum;
15998    readonly ONE_MINUS_CONSTANT_ALPHA: GLenum;
15999    readonly ONE_MINUS_CONSTANT_COLOR: GLenum;
16000    readonly ONE_MINUS_DST_ALPHA: GLenum;
16001    readonly ONE_MINUS_DST_COLOR: GLenum;
16002    readonly ONE_MINUS_SRC_ALPHA: GLenum;
16003    readonly ONE_MINUS_SRC_COLOR: GLenum;
16004    readonly OUT_OF_MEMORY: GLenum;
16005    readonly PACK_ALIGNMENT: GLenum;
16006    readonly POINTS: GLenum;
16007    readonly POLYGON_OFFSET_FACTOR: GLenum;
16008    readonly POLYGON_OFFSET_FILL: GLenum;
16009    readonly POLYGON_OFFSET_UNITS: GLenum;
16010    readonly RED_BITS: GLenum;
16011    readonly RENDERBUFFER: GLenum;
16012    readonly RENDERBUFFER_ALPHA_SIZE: GLenum;
16013    readonly RENDERBUFFER_BINDING: GLenum;
16014    readonly RENDERBUFFER_BLUE_SIZE: GLenum;
16015    readonly RENDERBUFFER_DEPTH_SIZE: GLenum;
16016    readonly RENDERBUFFER_GREEN_SIZE: GLenum;
16017    readonly RENDERBUFFER_HEIGHT: GLenum;
16018    readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum;
16019    readonly RENDERBUFFER_RED_SIZE: GLenum;
16020    readonly RENDERBUFFER_STENCIL_SIZE: GLenum;
16021    readonly RENDERBUFFER_WIDTH: GLenum;
16022    readonly RENDERER: GLenum;
16023    readonly REPEAT: GLenum;
16024    readonly REPLACE: GLenum;
16025    readonly RGB: GLenum;
16026    readonly RGB565: GLenum;
16027    readonly RGB5_A1: GLenum;
16028    readonly RGBA: GLenum;
16029    readonly RGBA4: GLenum;
16030    readonly SAMPLER_2D: GLenum;
16031    readonly SAMPLER_CUBE: GLenum;
16032    readonly SAMPLES: GLenum;
16033    readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum;
16034    readonly SAMPLE_BUFFERS: GLenum;
16035    readonly SAMPLE_COVERAGE: GLenum;
16036    readonly SAMPLE_COVERAGE_INVERT: GLenum;
16037    readonly SAMPLE_COVERAGE_VALUE: GLenum;
16038    readonly SCISSOR_BOX: GLenum;
16039    readonly SCISSOR_TEST: GLenum;
16040    readonly SHADER_TYPE: GLenum;
16041    readonly SHADING_LANGUAGE_VERSION: GLenum;
16042    readonly SHORT: GLenum;
16043    readonly SRC_ALPHA: GLenum;
16044    readonly SRC_ALPHA_SATURATE: GLenum;
16045    readonly SRC_COLOR: GLenum;
16046    readonly STATIC_DRAW: GLenum;
16047    readonly STENCIL_ATTACHMENT: GLenum;
16048    readonly STENCIL_BACK_FAIL: GLenum;
16049    readonly STENCIL_BACK_FUNC: GLenum;
16050    readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum;
16051    readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum;
16052    readonly STENCIL_BACK_REF: GLenum;
16053    readonly STENCIL_BACK_VALUE_MASK: GLenum;
16054    readonly STENCIL_BACK_WRITEMASK: GLenum;
16055    readonly STENCIL_BITS: GLenum;
16056    readonly STENCIL_BUFFER_BIT: GLenum;
16057    readonly STENCIL_CLEAR_VALUE: GLenum;
16058    readonly STENCIL_FAIL: GLenum;
16059    readonly STENCIL_FUNC: GLenum;
16060    readonly STENCIL_INDEX8: GLenum;
16061    readonly STENCIL_PASS_DEPTH_FAIL: GLenum;
16062    readonly STENCIL_PASS_DEPTH_PASS: GLenum;
16063    readonly STENCIL_REF: GLenum;
16064    readonly STENCIL_TEST: GLenum;
16065    readonly STENCIL_VALUE_MASK: GLenum;
16066    readonly STENCIL_WRITEMASK: GLenum;
16067    readonly STREAM_DRAW: GLenum;
16068    readonly SUBPIXEL_BITS: GLenum;
16069    readonly TEXTURE: GLenum;
16070    readonly TEXTURE0: GLenum;
16071    readonly TEXTURE1: GLenum;
16072    readonly TEXTURE10: GLenum;
16073    readonly TEXTURE11: GLenum;
16074    readonly TEXTURE12: GLenum;
16075    readonly TEXTURE13: GLenum;
16076    readonly TEXTURE14: GLenum;
16077    readonly TEXTURE15: GLenum;
16078    readonly TEXTURE16: GLenum;
16079    readonly TEXTURE17: GLenum;
16080    readonly TEXTURE18: GLenum;
16081    readonly TEXTURE19: GLenum;
16082    readonly TEXTURE2: GLenum;
16083    readonly TEXTURE20: GLenum;
16084    readonly TEXTURE21: GLenum;
16085    readonly TEXTURE22: GLenum;
16086    readonly TEXTURE23: GLenum;
16087    readonly TEXTURE24: GLenum;
16088    readonly TEXTURE25: GLenum;
16089    readonly TEXTURE26: GLenum;
16090    readonly TEXTURE27: GLenum;
16091    readonly TEXTURE28: GLenum;
16092    readonly TEXTURE29: GLenum;
16093    readonly TEXTURE3: GLenum;
16094    readonly TEXTURE30: GLenum;
16095    readonly TEXTURE31: GLenum;
16096    readonly TEXTURE4: GLenum;
16097    readonly TEXTURE5: GLenum;
16098    readonly TEXTURE6: GLenum;
16099    readonly TEXTURE7: GLenum;
16100    readonly TEXTURE8: GLenum;
16101    readonly TEXTURE9: GLenum;
16102    readonly TEXTURE_2D: GLenum;
16103    readonly TEXTURE_BINDING_2D: GLenum;
16104    readonly TEXTURE_BINDING_CUBE_MAP: GLenum;
16105    readonly TEXTURE_CUBE_MAP: GLenum;
16106    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum;
16107    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum;
16108    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum;
16109    readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum;
16110    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum;
16111    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum;
16112    readonly TEXTURE_MAG_FILTER: GLenum;
16113    readonly TEXTURE_MIN_FILTER: GLenum;
16114    readonly TEXTURE_WRAP_S: GLenum;
16115    readonly TEXTURE_WRAP_T: GLenum;
16116    readonly TRIANGLES: GLenum;
16117    readonly TRIANGLE_FAN: GLenum;
16118    readonly TRIANGLE_STRIP: GLenum;
16119    readonly UNPACK_ALIGNMENT: GLenum;
16120    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum;
16121    readonly UNPACK_FLIP_Y_WEBGL: GLenum;
16122    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum;
16123    readonly UNSIGNED_BYTE: GLenum;
16124    readonly UNSIGNED_INT: GLenum;
16125    readonly UNSIGNED_SHORT: GLenum;
16126    readonly UNSIGNED_SHORT_4_4_4_4: GLenum;
16127    readonly UNSIGNED_SHORT_5_5_5_1: GLenum;
16128    readonly UNSIGNED_SHORT_5_6_5: GLenum;
16129    readonly VALIDATE_STATUS: GLenum;
16130    readonly VENDOR: GLenum;
16131    readonly VERSION: GLenum;
16132    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum;
16133    readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum;
16134    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum;
16135    readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum;
16136    readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum;
16137    readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum;
16138    readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum;
16139    readonly VERTEX_SHADER: GLenum;
16140    readonly VIEWPORT: GLenum;
16141    readonly ZERO: GLenum;
16142};
16143
16144interface WebGLRenderingContextBase {
16145    readonly canvas: HTMLCanvasElement | OffscreenCanvas;
16146    readonly drawingBufferHeight: GLsizei;
16147    readonly drawingBufferWidth: GLsizei;
16148    activeTexture(texture: GLenum): void;
16149    attachShader(program: WebGLProgram, shader: WebGLShader): void;
16150    bindAttribLocation(program: WebGLProgram, index: GLuint, name: string): void;
16151    bindBuffer(target: GLenum, buffer: WebGLBuffer | null): void;
16152    bindFramebuffer(target: GLenum, framebuffer: WebGLFramebuffer | null): void;
16153    bindRenderbuffer(target: GLenum, renderbuffer: WebGLRenderbuffer | null): void;
16154    bindTexture(target: GLenum, texture: WebGLTexture | null): void;
16155    blendColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;
16156    blendEquation(mode: GLenum): void;
16157    blendEquationSeparate(modeRGB: GLenum, modeAlpha: GLenum): void;
16158    blendFunc(sfactor: GLenum, dfactor: GLenum): void;
16159    blendFuncSeparate(srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum): void;
16160    checkFramebufferStatus(target: GLenum): GLenum;
16161    clear(mask: GLbitfield): void;
16162    clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;
16163    clearDepth(depth: GLclampf): void;
16164    clearStencil(s: GLint): void;
16165    colorMask(red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean): void;
16166    compileShader(shader: WebGLShader): void;
16167    copyTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint): void;
16168    copyTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
16169    createBuffer(): WebGLBuffer | null;
16170    createFramebuffer(): WebGLFramebuffer | null;
16171    createProgram(): WebGLProgram | null;
16172    createRenderbuffer(): WebGLRenderbuffer | null;
16173    createShader(type: GLenum): WebGLShader | null;
16174    createTexture(): WebGLTexture | null;
16175    cullFace(mode: GLenum): void;
16176    deleteBuffer(buffer: WebGLBuffer | null): void;
16177    deleteFramebuffer(framebuffer: WebGLFramebuffer | null): void;
16178    deleteProgram(program: WebGLProgram | null): void;
16179    deleteRenderbuffer(renderbuffer: WebGLRenderbuffer | null): void;
16180    deleteShader(shader: WebGLShader | null): void;
16181    deleteTexture(texture: WebGLTexture | null): void;
16182    depthFunc(func: GLenum): void;
16183    depthMask(flag: GLboolean): void;
16184    depthRange(zNear: GLclampf, zFar: GLclampf): void;
16185    detachShader(program: WebGLProgram, shader: WebGLShader): void;
16186    disable(cap: GLenum): void;
16187    disableVertexAttribArray(index: GLuint): void;
16188    drawArrays(mode: GLenum, first: GLint, count: GLsizei): void;
16189    drawElements(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr): void;
16190    enable(cap: GLenum): void;
16191    enableVertexAttribArray(index: GLuint): void;
16192    finish(): void;
16193    flush(): void;
16194    framebufferRenderbuffer(target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: WebGLRenderbuffer | null): void;
16195    framebufferTexture2D(target: GLenum, attachment: GLenum, textarget: GLenum, texture: WebGLTexture | null, level: GLint): void;
16196    frontFace(mode: GLenum): void;
16197    generateMipmap(target: GLenum): void;
16198    getActiveAttrib(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;
16199    getActiveUniform(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;
16200    getAttachedShaders(program: WebGLProgram): WebGLShader[] | null;
16201    getAttribLocation(program: WebGLProgram, name: string): GLint;
16202    getBufferParameter(target: GLenum, pname: GLenum): any;
16203    getContextAttributes(): WebGLContextAttributes | null;
16204    getError(): GLenum;
16205    getExtension(extensionName: "ANGLE_instanced_arrays"): ANGLE_instanced_arrays | null;
16206    getExtension(extensionName: "EXT_blend_minmax"): EXT_blend_minmax | null;
16207    getExtension(extensionName: "EXT_color_buffer_float"): EXT_color_buffer_float | null;
16208    getExtension(extensionName: "EXT_color_buffer_half_float"): EXT_color_buffer_half_float | null;
16209    getExtension(extensionName: "EXT_float_blend"): EXT_float_blend | null;
16210    getExtension(extensionName: "EXT_frag_depth"): EXT_frag_depth | null;
16211    getExtension(extensionName: "EXT_sRGB"): EXT_sRGB | null;
16212    getExtension(extensionName: "EXT_shader_texture_lod"): EXT_shader_texture_lod | null;
16213    getExtension(extensionName: "EXT_texture_compression_bptc"): EXT_texture_compression_bptc | null;
16214    getExtension(extensionName: "EXT_texture_compression_rgtc"): EXT_texture_compression_rgtc | null;
16215    getExtension(extensionName: "EXT_texture_filter_anisotropic"): EXT_texture_filter_anisotropic | null;
16216    getExtension(extensionName: "KHR_parallel_shader_compile"): KHR_parallel_shader_compile | null;
16217    getExtension(extensionName: "OES_element_index_uint"): OES_element_index_uint | null;
16218    getExtension(extensionName: "OES_fbo_render_mipmap"): OES_fbo_render_mipmap | null;
16219    getExtension(extensionName: "OES_standard_derivatives"): OES_standard_derivatives | null;
16220    getExtension(extensionName: "OES_texture_float"): OES_texture_float | null;
16221    getExtension(extensionName: "OES_texture_float_linear"): OES_texture_float_linear | null;
16222    getExtension(extensionName: "OES_texture_half_float"): OES_texture_half_float | null;
16223    getExtension(extensionName: "OES_texture_half_float_linear"): OES_texture_half_float_linear | null;
16224    getExtension(extensionName: "OES_vertex_array_object"): OES_vertex_array_object | null;
16225    getExtension(extensionName: "OVR_multiview2"): OVR_multiview2 | null;
16226    getExtension(extensionName: "WEBGL_color_buffer_float"): WEBGL_color_buffer_float | null;
16227    getExtension(extensionName: "WEBGL_compressed_texture_astc"): WEBGL_compressed_texture_astc | null;
16228    getExtension(extensionName: "WEBGL_compressed_texture_etc"): WEBGL_compressed_texture_etc | null;
16229    getExtension(extensionName: "WEBGL_compressed_texture_etc1"): WEBGL_compressed_texture_etc1 | null;
16230    getExtension(extensionName: "WEBGL_compressed_texture_s3tc"): WEBGL_compressed_texture_s3tc | null;
16231    getExtension(extensionName: "WEBGL_compressed_texture_s3tc_srgb"): WEBGL_compressed_texture_s3tc_srgb | null;
16232    getExtension(extensionName: "WEBGL_debug_renderer_info"): WEBGL_debug_renderer_info | null;
16233    getExtension(extensionName: "WEBGL_debug_shaders"): WEBGL_debug_shaders | null;
16234    getExtension(extensionName: "WEBGL_depth_texture"): WEBGL_depth_texture | null;
16235    getExtension(extensionName: "WEBGL_draw_buffers"): WEBGL_draw_buffers | null;
16236    getExtension(extensionName: "WEBGL_lose_context"): WEBGL_lose_context | null;
16237    getExtension(extensionName: "WEBGL_multi_draw"): WEBGL_multi_draw | null;
16238    getExtension(name: string): any;
16239    getFramebufferAttachmentParameter(target: GLenum, attachment: GLenum, pname: GLenum): any;
16240    getParameter(pname: GLenum): any;
16241    getProgramInfoLog(program: WebGLProgram): string | null;
16242    getProgramParameter(program: WebGLProgram, pname: GLenum): any;
16243    getRenderbufferParameter(target: GLenum, pname: GLenum): any;
16244    getShaderInfoLog(shader: WebGLShader): string | null;
16245    getShaderParameter(shader: WebGLShader, pname: GLenum): any;
16246    getShaderPrecisionFormat(shadertype: GLenum, precisiontype: GLenum): WebGLShaderPrecisionFormat | null;
16247    getShaderSource(shader: WebGLShader): string | null;
16248    getSupportedExtensions(): string[] | null;
16249    getTexParameter(target: GLenum, pname: GLenum): any;
16250    getUniform(program: WebGLProgram, location: WebGLUniformLocation): any;
16251    getUniformLocation(program: WebGLProgram, name: string): WebGLUniformLocation | null;
16252    getVertexAttrib(index: GLuint, pname: GLenum): any;
16253    getVertexAttribOffset(index: GLuint, pname: GLenum): GLintptr;
16254    hint(target: GLenum, mode: GLenum): void;
16255    isBuffer(buffer: WebGLBuffer | null): GLboolean;
16256    isContextLost(): boolean;
16257    isEnabled(cap: GLenum): GLboolean;
16258    isFramebuffer(framebuffer: WebGLFramebuffer | null): GLboolean;
16259    isProgram(program: WebGLProgram | null): GLboolean;
16260    isRenderbuffer(renderbuffer: WebGLRenderbuffer | null): GLboolean;
16261    isShader(shader: WebGLShader | null): GLboolean;
16262    isTexture(texture: WebGLTexture | null): GLboolean;
16263    lineWidth(width: GLfloat): void;
16264    linkProgram(program: WebGLProgram): void;
16265    pixelStorei(pname: GLenum, param: GLint | GLboolean): void;
16266    polygonOffset(factor: GLfloat, units: GLfloat): void;
16267    renderbufferStorage(target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei): void;
16268    sampleCoverage(value: GLclampf, invert: GLboolean): void;
16269    scissor(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
16270    shaderSource(shader: WebGLShader, source: string): void;
16271    stencilFunc(func: GLenum, ref: GLint, mask: GLuint): void;
16272    stencilFuncSeparate(face: GLenum, func: GLenum, ref: GLint, mask: GLuint): void;
16273    stencilMask(mask: GLuint): void;
16274    stencilMaskSeparate(face: GLenum, mask: GLuint): void;
16275    stencilOp(fail: GLenum, zfail: GLenum, zpass: GLenum): void;
16276    stencilOpSeparate(face: GLenum, fail: GLenum, zfail: GLenum, zpass: GLenum): void;
16277    texParameterf(target: GLenum, pname: GLenum, param: GLfloat): void;
16278    texParameteri(target: GLenum, pname: GLenum, param: GLint): void;
16279    uniform1f(location: WebGLUniformLocation | null, x: GLfloat): void;
16280    uniform1i(location: WebGLUniformLocation | null, x: GLint): void;
16281    uniform2f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat): void;
16282    uniform2i(location: WebGLUniformLocation | null, x: GLint, y: GLint): void;
16283    uniform3f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat, z: GLfloat): void;
16284    uniform3i(location: WebGLUniformLocation | null, x: GLint, y: GLint, z: GLint): void;
16285    uniform4f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void;
16286    uniform4i(location: WebGLUniformLocation | null, x: GLint, y: GLint, z: GLint, w: GLint): void;
16287    useProgram(program: WebGLProgram | null): void;
16288    validateProgram(program: WebGLProgram): void;
16289    vertexAttrib1f(index: GLuint, x: GLfloat): void;
16290    vertexAttrib1fv(index: GLuint, values: Float32List): void;
16291    vertexAttrib2f(index: GLuint, x: GLfloat, y: GLfloat): void;
16292    vertexAttrib2fv(index: GLuint, values: Float32List): void;
16293    vertexAttrib3f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat): void;
16294    vertexAttrib3fv(index: GLuint, values: Float32List): void;
16295    vertexAttrib4f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void;
16296    vertexAttrib4fv(index: GLuint, values: Float32List): void;
16297    vertexAttribPointer(index: GLuint, size: GLint, type: GLenum, normalized: GLboolean, stride: GLsizei, offset: GLintptr): void;
16298    viewport(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
16299    readonly ACTIVE_ATTRIBUTES: GLenum;
16300    readonly ACTIVE_TEXTURE: GLenum;
16301    readonly ACTIVE_UNIFORMS: GLenum;
16302    readonly ALIASED_LINE_WIDTH_RANGE: GLenum;
16303    readonly ALIASED_POINT_SIZE_RANGE: GLenum;
16304    readonly ALPHA: GLenum;
16305    readonly ALPHA_BITS: GLenum;
16306    readonly ALWAYS: GLenum;
16307    readonly ARRAY_BUFFER: GLenum;
16308    readonly ARRAY_BUFFER_BINDING: GLenum;
16309    readonly ATTACHED_SHADERS: GLenum;
16310    readonly BACK: GLenum;
16311    readonly BLEND: GLenum;
16312    readonly BLEND_COLOR: GLenum;
16313    readonly BLEND_DST_ALPHA: GLenum;
16314    readonly BLEND_DST_RGB: GLenum;
16315    readonly BLEND_EQUATION: GLenum;
16316    readonly BLEND_EQUATION_ALPHA: GLenum;
16317    readonly BLEND_EQUATION_RGB: GLenum;
16318    readonly BLEND_SRC_ALPHA: GLenum;
16319    readonly BLEND_SRC_RGB: GLenum;
16320    readonly BLUE_BITS: GLenum;
16321    readonly BOOL: GLenum;
16322    readonly BOOL_VEC2: GLenum;
16323    readonly BOOL_VEC3: GLenum;
16324    readonly BOOL_VEC4: GLenum;
16325    readonly BROWSER_DEFAULT_WEBGL: GLenum;
16326    readonly BUFFER_SIZE: GLenum;
16327    readonly BUFFER_USAGE: GLenum;
16328    readonly BYTE: GLenum;
16329    readonly CCW: GLenum;
16330    readonly CLAMP_TO_EDGE: GLenum;
16331    readonly COLOR_ATTACHMENT0: GLenum;
16332    readonly COLOR_BUFFER_BIT: GLenum;
16333    readonly COLOR_CLEAR_VALUE: GLenum;
16334    readonly COLOR_WRITEMASK: GLenum;
16335    readonly COMPILE_STATUS: GLenum;
16336    readonly COMPRESSED_TEXTURE_FORMATS: GLenum;
16337    readonly CONSTANT_ALPHA: GLenum;
16338    readonly CONSTANT_COLOR: GLenum;
16339    readonly CONTEXT_LOST_WEBGL: GLenum;
16340    readonly CULL_FACE: GLenum;
16341    readonly CULL_FACE_MODE: GLenum;
16342    readonly CURRENT_PROGRAM: GLenum;
16343    readonly CURRENT_VERTEX_ATTRIB: GLenum;
16344    readonly CW: GLenum;
16345    readonly DECR: GLenum;
16346    readonly DECR_WRAP: GLenum;
16347    readonly DELETE_STATUS: GLenum;
16348    readonly DEPTH_ATTACHMENT: GLenum;
16349    readonly DEPTH_BITS: GLenum;
16350    readonly DEPTH_BUFFER_BIT: GLenum;
16351    readonly DEPTH_CLEAR_VALUE: GLenum;
16352    readonly DEPTH_COMPONENT: GLenum;
16353    readonly DEPTH_COMPONENT16: GLenum;
16354    readonly DEPTH_FUNC: GLenum;
16355    readonly DEPTH_RANGE: GLenum;
16356    readonly DEPTH_STENCIL: GLenum;
16357    readonly DEPTH_STENCIL_ATTACHMENT: GLenum;
16358    readonly DEPTH_TEST: GLenum;
16359    readonly DEPTH_WRITEMASK: GLenum;
16360    readonly DITHER: GLenum;
16361    readonly DONT_CARE: GLenum;
16362    readonly DST_ALPHA: GLenum;
16363    readonly DST_COLOR: GLenum;
16364    readonly DYNAMIC_DRAW: GLenum;
16365    readonly ELEMENT_ARRAY_BUFFER: GLenum;
16366    readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum;
16367    readonly EQUAL: GLenum;
16368    readonly FASTEST: GLenum;
16369    readonly FLOAT: GLenum;
16370    readonly FLOAT_MAT2: GLenum;
16371    readonly FLOAT_MAT3: GLenum;
16372    readonly FLOAT_MAT4: GLenum;
16373    readonly FLOAT_VEC2: GLenum;
16374    readonly FLOAT_VEC3: GLenum;
16375    readonly FLOAT_VEC4: GLenum;
16376    readonly FRAGMENT_SHADER: GLenum;
16377    readonly FRAMEBUFFER: GLenum;
16378    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum;
16379    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum;
16380    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum;
16381    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum;
16382    readonly FRAMEBUFFER_BINDING: GLenum;
16383    readonly FRAMEBUFFER_COMPLETE: GLenum;
16384    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum;
16385    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum;
16386    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum;
16387    readonly FRAMEBUFFER_UNSUPPORTED: GLenum;
16388    readonly FRONT: GLenum;
16389    readonly FRONT_AND_BACK: GLenum;
16390    readonly FRONT_FACE: GLenum;
16391    readonly FUNC_ADD: GLenum;
16392    readonly FUNC_REVERSE_SUBTRACT: GLenum;
16393    readonly FUNC_SUBTRACT: GLenum;
16394    readonly GENERATE_MIPMAP_HINT: GLenum;
16395    readonly GEQUAL: GLenum;
16396    readonly GREATER: GLenum;
16397    readonly GREEN_BITS: GLenum;
16398    readonly HIGH_FLOAT: GLenum;
16399    readonly HIGH_INT: GLenum;
16400    readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum;
16401    readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum;
16402    readonly INCR: GLenum;
16403    readonly INCR_WRAP: GLenum;
16404    readonly INT: GLenum;
16405    readonly INT_VEC2: GLenum;
16406    readonly INT_VEC3: GLenum;
16407    readonly INT_VEC4: GLenum;
16408    readonly INVALID_ENUM: GLenum;
16409    readonly INVALID_FRAMEBUFFER_OPERATION: GLenum;
16410    readonly INVALID_OPERATION: GLenum;
16411    readonly INVALID_VALUE: GLenum;
16412    readonly INVERT: GLenum;
16413    readonly KEEP: GLenum;
16414    readonly LEQUAL: GLenum;
16415    readonly LESS: GLenum;
16416    readonly LINEAR: GLenum;
16417    readonly LINEAR_MIPMAP_LINEAR: GLenum;
16418    readonly LINEAR_MIPMAP_NEAREST: GLenum;
16419    readonly LINES: GLenum;
16420    readonly LINE_LOOP: GLenum;
16421    readonly LINE_STRIP: GLenum;
16422    readonly LINE_WIDTH: GLenum;
16423    readonly LINK_STATUS: GLenum;
16424    readonly LOW_FLOAT: GLenum;
16425    readonly LOW_INT: GLenum;
16426    readonly LUMINANCE: GLenum;
16427    readonly LUMINANCE_ALPHA: GLenum;
16428    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum;
16429    readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum;
16430    readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum;
16431    readonly MAX_RENDERBUFFER_SIZE: GLenum;
16432    readonly MAX_TEXTURE_IMAGE_UNITS: GLenum;
16433    readonly MAX_TEXTURE_SIZE: GLenum;
16434    readonly MAX_VARYING_VECTORS: GLenum;
16435    readonly MAX_VERTEX_ATTRIBS: GLenum;
16436    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum;
16437    readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum;
16438    readonly MAX_VIEWPORT_DIMS: GLenum;
16439    readonly MEDIUM_FLOAT: GLenum;
16440    readonly MEDIUM_INT: GLenum;
16441    readonly MIRRORED_REPEAT: GLenum;
16442    readonly NEAREST: GLenum;
16443    readonly NEAREST_MIPMAP_LINEAR: GLenum;
16444    readonly NEAREST_MIPMAP_NEAREST: GLenum;
16445    readonly NEVER: GLenum;
16446    readonly NICEST: GLenum;
16447    readonly NONE: GLenum;
16448    readonly NOTEQUAL: GLenum;
16449    readonly NO_ERROR: GLenum;
16450    readonly ONE: GLenum;
16451    readonly ONE_MINUS_CONSTANT_ALPHA: GLenum;
16452    readonly ONE_MINUS_CONSTANT_COLOR: GLenum;
16453    readonly ONE_MINUS_DST_ALPHA: GLenum;
16454    readonly ONE_MINUS_DST_COLOR: GLenum;
16455    readonly ONE_MINUS_SRC_ALPHA: GLenum;
16456    readonly ONE_MINUS_SRC_COLOR: GLenum;
16457    readonly OUT_OF_MEMORY: GLenum;
16458    readonly PACK_ALIGNMENT: GLenum;
16459    readonly POINTS: GLenum;
16460    readonly POLYGON_OFFSET_FACTOR: GLenum;
16461    readonly POLYGON_OFFSET_FILL: GLenum;
16462    readonly POLYGON_OFFSET_UNITS: GLenum;
16463    readonly RED_BITS: GLenum;
16464    readonly RENDERBUFFER: GLenum;
16465    readonly RENDERBUFFER_ALPHA_SIZE: GLenum;
16466    readonly RENDERBUFFER_BINDING: GLenum;
16467    readonly RENDERBUFFER_BLUE_SIZE: GLenum;
16468    readonly RENDERBUFFER_DEPTH_SIZE: GLenum;
16469    readonly RENDERBUFFER_GREEN_SIZE: GLenum;
16470    readonly RENDERBUFFER_HEIGHT: GLenum;
16471    readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum;
16472    readonly RENDERBUFFER_RED_SIZE: GLenum;
16473    readonly RENDERBUFFER_STENCIL_SIZE: GLenum;
16474    readonly RENDERBUFFER_WIDTH: GLenum;
16475    readonly RENDERER: GLenum;
16476    readonly REPEAT: GLenum;
16477    readonly REPLACE: GLenum;
16478    readonly RGB: GLenum;
16479    readonly RGB565: GLenum;
16480    readonly RGB5_A1: GLenum;
16481    readonly RGBA: GLenum;
16482    readonly RGBA4: GLenum;
16483    readonly SAMPLER_2D: GLenum;
16484    readonly SAMPLER_CUBE: GLenum;
16485    readonly SAMPLES: GLenum;
16486    readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum;
16487    readonly SAMPLE_BUFFERS: GLenum;
16488    readonly SAMPLE_COVERAGE: GLenum;
16489    readonly SAMPLE_COVERAGE_INVERT: GLenum;
16490    readonly SAMPLE_COVERAGE_VALUE: GLenum;
16491    readonly SCISSOR_BOX: GLenum;
16492    readonly SCISSOR_TEST: GLenum;
16493    readonly SHADER_TYPE: GLenum;
16494    readonly SHADING_LANGUAGE_VERSION: GLenum;
16495    readonly SHORT: GLenum;
16496    readonly SRC_ALPHA: GLenum;
16497    readonly SRC_ALPHA_SATURATE: GLenum;
16498    readonly SRC_COLOR: GLenum;
16499    readonly STATIC_DRAW: GLenum;
16500    readonly STENCIL_ATTACHMENT: GLenum;
16501    readonly STENCIL_BACK_FAIL: GLenum;
16502    readonly STENCIL_BACK_FUNC: GLenum;
16503    readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum;
16504    readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum;
16505    readonly STENCIL_BACK_REF: GLenum;
16506    readonly STENCIL_BACK_VALUE_MASK: GLenum;
16507    readonly STENCIL_BACK_WRITEMASK: GLenum;
16508    readonly STENCIL_BITS: GLenum;
16509    readonly STENCIL_BUFFER_BIT: GLenum;
16510    readonly STENCIL_CLEAR_VALUE: GLenum;
16511    readonly STENCIL_FAIL: GLenum;
16512    readonly STENCIL_FUNC: GLenum;
16513    readonly STENCIL_INDEX8: GLenum;
16514    readonly STENCIL_PASS_DEPTH_FAIL: GLenum;
16515    readonly STENCIL_PASS_DEPTH_PASS: GLenum;
16516    readonly STENCIL_REF: GLenum;
16517    readonly STENCIL_TEST: GLenum;
16518    readonly STENCIL_VALUE_MASK: GLenum;
16519    readonly STENCIL_WRITEMASK: GLenum;
16520    readonly STREAM_DRAW: GLenum;
16521    readonly SUBPIXEL_BITS: GLenum;
16522    readonly TEXTURE: GLenum;
16523    readonly TEXTURE0: GLenum;
16524    readonly TEXTURE1: GLenum;
16525    readonly TEXTURE10: GLenum;
16526    readonly TEXTURE11: GLenum;
16527    readonly TEXTURE12: GLenum;
16528    readonly TEXTURE13: GLenum;
16529    readonly TEXTURE14: GLenum;
16530    readonly TEXTURE15: GLenum;
16531    readonly TEXTURE16: GLenum;
16532    readonly TEXTURE17: GLenum;
16533    readonly TEXTURE18: GLenum;
16534    readonly TEXTURE19: GLenum;
16535    readonly TEXTURE2: GLenum;
16536    readonly TEXTURE20: GLenum;
16537    readonly TEXTURE21: GLenum;
16538    readonly TEXTURE22: GLenum;
16539    readonly TEXTURE23: GLenum;
16540    readonly TEXTURE24: GLenum;
16541    readonly TEXTURE25: GLenum;
16542    readonly TEXTURE26: GLenum;
16543    readonly TEXTURE27: GLenum;
16544    readonly TEXTURE28: GLenum;
16545    readonly TEXTURE29: GLenum;
16546    readonly TEXTURE3: GLenum;
16547    readonly TEXTURE30: GLenum;
16548    readonly TEXTURE31: GLenum;
16549    readonly TEXTURE4: GLenum;
16550    readonly TEXTURE5: GLenum;
16551    readonly TEXTURE6: GLenum;
16552    readonly TEXTURE7: GLenum;
16553    readonly TEXTURE8: GLenum;
16554    readonly TEXTURE9: GLenum;
16555    readonly TEXTURE_2D: GLenum;
16556    readonly TEXTURE_BINDING_2D: GLenum;
16557    readonly TEXTURE_BINDING_CUBE_MAP: GLenum;
16558    readonly TEXTURE_CUBE_MAP: GLenum;
16559    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum;
16560    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum;
16561    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum;
16562    readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum;
16563    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum;
16564    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum;
16565    readonly TEXTURE_MAG_FILTER: GLenum;
16566    readonly TEXTURE_MIN_FILTER: GLenum;
16567    readonly TEXTURE_WRAP_S: GLenum;
16568    readonly TEXTURE_WRAP_T: GLenum;
16569    readonly TRIANGLES: GLenum;
16570    readonly TRIANGLE_FAN: GLenum;
16571    readonly TRIANGLE_STRIP: GLenum;
16572    readonly UNPACK_ALIGNMENT: GLenum;
16573    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum;
16574    readonly UNPACK_FLIP_Y_WEBGL: GLenum;
16575    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum;
16576    readonly UNSIGNED_BYTE: GLenum;
16577    readonly UNSIGNED_INT: GLenum;
16578    readonly UNSIGNED_SHORT: GLenum;
16579    readonly UNSIGNED_SHORT_4_4_4_4: GLenum;
16580    readonly UNSIGNED_SHORT_5_5_5_1: GLenum;
16581    readonly UNSIGNED_SHORT_5_6_5: GLenum;
16582    readonly VALIDATE_STATUS: GLenum;
16583    readonly VENDOR: GLenum;
16584    readonly VERSION: GLenum;
16585    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum;
16586    readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum;
16587    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum;
16588    readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum;
16589    readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum;
16590    readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum;
16591    readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum;
16592    readonly VERTEX_SHADER: GLenum;
16593    readonly VIEWPORT: GLenum;
16594    readonly ZERO: GLenum;
16595}
16596
16597interface WebGLRenderingContextOverloads {
16598    bufferData(target: GLenum, size: GLsizeiptr, usage: GLenum): void;
16599    bufferData(target: GLenum, data: BufferSource | null, usage: GLenum): void;
16600    bufferSubData(target: GLenum, offset: GLintptr, data: BufferSource): void;
16601    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, data: ArrayBufferView): void;
16602    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, data: ArrayBufferView): void;
16603    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
16604    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
16605    texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
16606    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
16607    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
16608    uniform1fv(location: WebGLUniformLocation | null, v: Float32List): void;
16609    uniform1iv(location: WebGLUniformLocation | null, v: Int32List): void;
16610    uniform2fv(location: WebGLUniformLocation | null, v: Float32List): void;
16611    uniform2iv(location: WebGLUniformLocation | null, v: Int32List): void;
16612    uniform3fv(location: WebGLUniformLocation | null, v: Float32List): void;
16613    uniform3iv(location: WebGLUniformLocation | null, v: Int32List): void;
16614    uniform4fv(location: WebGLUniformLocation | null, v: Float32List): void;
16615    uniform4iv(location: WebGLUniformLocation | null, v: Int32List): void;
16616    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;
16617    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;
16618    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;
16619}
16620
16621interface WebGLSampler {
16622}
16623
16624declare var WebGLSampler: {
16625    prototype: WebGLSampler;
16626    new(): WebGLSampler;
16627};
16628
16629/** The WebGLShader is part of the WebGL API and can either be a vertex or a fragment shader. A WebGLProgram requires both types of shaders. */
16630interface WebGLShader {
16631}
16632
16633declare var WebGLShader: {
16634    prototype: WebGLShader;
16635    new(): WebGLShader;
16636};
16637
16638/** Part of the WebGL API and represents the information returned by calling the WebGLRenderingContext.getShaderPrecisionFormat() method. */
16639interface WebGLShaderPrecisionFormat {
16640    readonly precision: GLint;
16641    readonly rangeMax: GLint;
16642    readonly rangeMin: GLint;
16643}
16644
16645declare var WebGLShaderPrecisionFormat: {
16646    prototype: WebGLShaderPrecisionFormat;
16647    new(): WebGLShaderPrecisionFormat;
16648};
16649
16650interface WebGLSync {
16651}
16652
16653declare var WebGLSync: {
16654    prototype: WebGLSync;
16655    new(): WebGLSync;
16656};
16657
16658/** Part of the WebGL API and represents an opaque texture object providing storage and state for texturing operations. */
16659interface WebGLTexture {
16660}
16661
16662declare var WebGLTexture: {
16663    prototype: WebGLTexture;
16664    new(): WebGLTexture;
16665};
16666
16667interface WebGLTransformFeedback {
16668}
16669
16670declare var WebGLTransformFeedback: {
16671    prototype: WebGLTransformFeedback;
16672    new(): WebGLTransformFeedback;
16673};
16674
16675/** Part of the WebGL API and represents the location of a uniform variable in a shader program. */
16676interface WebGLUniformLocation {
16677}
16678
16679declare var WebGLUniformLocation: {
16680    prototype: WebGLUniformLocation;
16681    new(): WebGLUniformLocation;
16682};
16683
16684interface WebGLVertexArrayObject {
16685}
16686
16687declare var WebGLVertexArrayObject: {
16688    prototype: WebGLVertexArrayObject;
16689    new(): WebGLVertexArrayObject;
16690};
16691
16692interface WebGLVertexArrayObjectOES {
16693}
16694
16695interface WebSocketEventMap {
16696    "close": CloseEvent;
16697    "error": Event;
16698    "message": MessageEvent;
16699    "open": Event;
16700}
16701
16702/** Provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. */
16703interface WebSocket extends EventTarget {
16704    /**
16705     * Returns a string that indicates how binary data from the WebSocket object is exposed to scripts:
16706     *
16707     * Can be set, to change how binary data is returned. The default is "blob".
16708     */
16709    binaryType: BinaryType;
16710    /**
16711     * Returns the number of bytes of application data (UTF-8 text and binary data) that have been queued using send() but not yet been transmitted to the network.
16712     *
16713     * If the WebSocket connection is closed, this attribute's value will only increase with each call to the send() method. (The number does not reset to zero once the connection closes.)
16714     */
16715    readonly bufferedAmount: number;
16716    /** Returns the extensions selected by the server, if any. */
16717    readonly extensions: string;
16718    onclose: ((this: WebSocket, ev: CloseEvent) => any) | null;
16719    onerror: ((this: WebSocket, ev: Event) => any) | null;
16720    onmessage: ((this: WebSocket, ev: MessageEvent) => any) | null;
16721    onopen: ((this: WebSocket, ev: Event) => any) | null;
16722    /** Returns the subprotocol selected by the server, if any. It can be used in conjunction with the array form of the constructor's second argument to perform subprotocol negotiation. */
16723    readonly protocol: string;
16724    /** Returns the state of the WebSocket object's connection. It can have the values described below. */
16725    readonly readyState: number;
16726    /** Returns the URL that was used to establish the WebSocket connection. */
16727    readonly url: string;
16728    /** Closes the WebSocket connection, optionally using code as the the WebSocket connection close code and reason as the the WebSocket connection close reason. */
16729    close(code?: number, reason?: string): void;
16730    /** Transmits data using the WebSocket connection. data can be a string, a Blob, an ArrayBuffer, or an ArrayBufferView. */
16731    send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
16732    readonly CLOSED: number;
16733    readonly CLOSING: number;
16734    readonly CONNECTING: number;
16735    readonly OPEN: number;
16736    addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
16737    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
16738    removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
16739    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
16740}
16741
16742declare var WebSocket: {
16743    prototype: WebSocket;
16744    new(url: string | URL, protocols?: string | string[]): WebSocket;
16745    readonly CLOSED: number;
16746    readonly CLOSING: number;
16747    readonly CONNECTING: number;
16748    readonly OPEN: number;
16749};
16750
16751/** Events that occur due to the user moving a mouse wheel or similar input device. */
16752interface WheelEvent extends MouseEvent {
16753    readonly deltaMode: number;
16754    readonly deltaX: number;
16755    readonly deltaY: number;
16756    readonly deltaZ: number;
16757    readonly DOM_DELTA_LINE: number;
16758    readonly DOM_DELTA_PAGE: number;
16759    readonly DOM_DELTA_PIXEL: number;
16760}
16761
16762declare var WheelEvent: {
16763    prototype: WheelEvent;
16764    new(type: string, eventInitDict?: WheelEventInit): WheelEvent;
16765    readonly DOM_DELTA_LINE: number;
16766    readonly DOM_DELTA_PAGE: number;
16767    readonly DOM_DELTA_PIXEL: number;
16768};
16769
16770interface WindowEventMap extends GlobalEventHandlersEventMap, WindowEventHandlersEventMap {
16771    "DOMContentLoaded": Event;
16772    "devicemotion": DeviceMotionEvent;
16773    "deviceorientation": DeviceOrientationEvent;
16774    "gamepadconnected": GamepadEvent;
16775    "gamepaddisconnected": GamepadEvent;
16776    "orientationchange": Event;
16777}
16778
16779/** A window containing a DOM document; the document property points to the DOM document loaded in that window. */
16780interface Window extends EventTarget, AnimationFrameProvider, GlobalEventHandlers, WindowEventHandlers, WindowLocalStorage, WindowOrWorkerGlobalScope, WindowSessionStorage {
16781    /** @deprecated This is a legacy alias of `navigator`. */
16782    readonly clientInformation: Navigator;
16783    /** Returns true if the window has been closed, false otherwise. */
16784    readonly closed: boolean;
16785    /** Defines a new custom element, mapping the given name to the given constructor as an autonomous custom element. */
16786    readonly customElements: CustomElementRegistry;
16787    readonly devicePixelRatio: number;
16788    readonly document: Document;
16789    /** @deprecated */
16790    readonly event: Event | undefined;
16791    /** @deprecated */
16792    readonly external: External;
16793    readonly frameElement: Element | null;
16794    readonly frames: WindowProxy;
16795    readonly history: History;
16796    readonly innerHeight: number;
16797    readonly innerWidth: number;
16798    readonly length: number;
16799    get location(): Location;
16800    set location(href: string | Location);
16801    /** Returns true if the location bar is visible; otherwise, returns false. */
16802    readonly locationbar: BarProp;
16803    /** Returns true if the menu bar is visible; otherwise, returns false. */
16804    readonly menubar: BarProp;
16805    name: string;
16806    readonly navigator: Navigator;
16807    /** Available only in secure contexts. */
16808    ondevicemotion: ((this: Window, ev: DeviceMotionEvent) => any) | null;
16809    /** Available only in secure contexts. */
16810    ondeviceorientation: ((this: Window, ev: DeviceOrientationEvent) => any) | null;
16811    /** @deprecated */
16812    onorientationchange: ((this: Window, ev: Event) => any) | null;
16813    opener: any;
16814    /** @deprecated */
16815    readonly orientation: number;
16816    readonly outerHeight: number;
16817    readonly outerWidth: number;
16818    /** @deprecated This is a legacy alias of `scrollX`. */
16819    readonly pageXOffset: number;
16820    /** @deprecated This is a legacy alias of `scrollY`. */
16821    readonly pageYOffset: number;
16822    /**
16823     * Refers to either the parent WindowProxy, or itself.
16824     *
16825     * It can rarely be null e.g. for contentWindow of an iframe that is already removed from the parent.
16826     */
16827    readonly parent: WindowProxy;
16828    /** Returns true if the personal bar is visible; otherwise, returns false. */
16829    readonly personalbar: BarProp;
16830    readonly screen: Screen;
16831    readonly screenLeft: number;
16832    readonly screenTop: number;
16833    readonly screenX: number;
16834    readonly screenY: number;
16835    readonly scrollX: number;
16836    readonly scrollY: number;
16837    /** Returns true if the scrollbars are visible; otherwise, returns false. */
16838    readonly scrollbars: BarProp;
16839    readonly self: Window & typeof globalThis;
16840    readonly speechSynthesis: SpeechSynthesis;
16841    /** @deprecated */
16842    status: string;
16843    /** Returns true if the status bar is visible; otherwise, returns false. */
16844    readonly statusbar: BarProp;
16845    /** Returns true if the toolbar is visible; otherwise, returns false. */
16846    readonly toolbar: BarProp;
16847    readonly top: WindowProxy | null;
16848    readonly visualViewport: VisualViewport | null;
16849    readonly window: Window & typeof globalThis;
16850    alert(message?: any): void;
16851    blur(): void;
16852    cancelIdleCallback(handle: number): void;
16853    /** @deprecated */
16854    captureEvents(): void;
16855    /** Closes the window. */
16856    close(): void;
16857    confirm(message?: string): boolean;
16858    /** Moves the focus to the window's browsing context, if any. */
16859    focus(): void;
16860    getComputedStyle(elt: Element, pseudoElt?: string | null): CSSStyleDeclaration;
16861    getSelection(): Selection | null;
16862    matchMedia(query: string): MediaQueryList;
16863    moveBy(x: number, y: number): void;
16864    moveTo(x: number, y: number): void;
16865    open(url?: string | URL, target?: string, features?: string): WindowProxy | null;
16866    /**
16867     * Posts a message to the given window. Messages can be structured objects, e.g. nested objects and arrays, can contain JavaScript values (strings, numbers, Date objects, etc), and can contain certain data objects such as File Blob, FileList, and ArrayBuffer objects.
16868     *
16869     * Objects listed in the transfer member of options are transferred, not just cloned, meaning that they are no longer usable on the sending side.
16870     *
16871     * A target origin can be specified using the targetOrigin member of options. If not provided, it defaults to "/". This default restricts the message to same-origin targets only.
16872     *
16873     * If the origin of the target window doesn't match the given target origin, the message is discarded, to avoid information leakage. To send the message to the target regardless of origin, set the target origin to "*".
16874     *
16875     * Throws a "DataCloneError" DOMException if transfer array contains duplicate objects or if message could not be cloned.
16876     */
16877    postMessage(message: any, targetOrigin: string, transfer?: Transferable[]): void;
16878    postMessage(message: any, options?: WindowPostMessageOptions): void;
16879    print(): void;
16880    prompt(message?: string, _default?: string): string | null;
16881    /** @deprecated */
16882    releaseEvents(): void;
16883    requestIdleCallback(callback: IdleRequestCallback, options?: IdleRequestOptions): number;
16884    resizeBy(x: number, y: number): void;
16885    resizeTo(width: number, height: number): void;
16886    scroll(options?: ScrollToOptions): void;
16887    scroll(x: number, y: number): void;
16888    scrollBy(options?: ScrollToOptions): void;
16889    scrollBy(x: number, y: number): void;
16890    scrollTo(options?: ScrollToOptions): void;
16891    scrollTo(x: number, y: number): void;
16892    /** Cancels the document load. */
16893    stop(): void;
16894    addEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
16895    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
16896    removeEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
16897    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
16898    [index: number]: Window;
16899}
16900
16901declare var Window: {
16902    prototype: Window;
16903    new(): Window;
16904};
16905
16906interface WindowEventHandlersEventMap {
16907    "afterprint": Event;
16908    "beforeprint": Event;
16909    "beforeunload": BeforeUnloadEvent;
16910    "gamepadconnected": GamepadEvent;
16911    "gamepaddisconnected": GamepadEvent;
16912    "hashchange": HashChangeEvent;
16913    "languagechange": Event;
16914    "message": MessageEvent;
16915    "messageerror": MessageEvent;
16916    "offline": Event;
16917    "online": Event;
16918    "pagehide": PageTransitionEvent;
16919    "pageshow": PageTransitionEvent;
16920    "popstate": PopStateEvent;
16921    "rejectionhandled": PromiseRejectionEvent;
16922    "storage": StorageEvent;
16923    "unhandledrejection": PromiseRejectionEvent;
16924    "unload": Event;
16925}
16926
16927interface WindowEventHandlers {
16928    onafterprint: ((this: WindowEventHandlers, ev: Event) => any) | null;
16929    onbeforeprint: ((this: WindowEventHandlers, ev: Event) => any) | null;
16930    onbeforeunload: ((this: WindowEventHandlers, ev: BeforeUnloadEvent) => any) | null;
16931    ongamepadconnected: ((this: WindowEventHandlers, ev: GamepadEvent) => any) | null;
16932    ongamepaddisconnected: ((this: WindowEventHandlers, ev: GamepadEvent) => any) | null;
16933    onhashchange: ((this: WindowEventHandlers, ev: HashChangeEvent) => any) | null;
16934    onlanguagechange: ((this: WindowEventHandlers, ev: Event) => any) | null;
16935    onmessage: ((this: WindowEventHandlers, ev: MessageEvent) => any) | null;
16936    onmessageerror: ((this: WindowEventHandlers, ev: MessageEvent) => any) | null;
16937    onoffline: ((this: WindowEventHandlers, ev: Event) => any) | null;
16938    ononline: ((this: WindowEventHandlers, ev: Event) => any) | null;
16939    onpagehide: ((this: WindowEventHandlers, ev: PageTransitionEvent) => any) | null;
16940    onpageshow: ((this: WindowEventHandlers, ev: PageTransitionEvent) => any) | null;
16941    onpopstate: ((this: WindowEventHandlers, ev: PopStateEvent) => any) | null;
16942    onrejectionhandled: ((this: WindowEventHandlers, ev: PromiseRejectionEvent) => any) | null;
16943    onstorage: ((this: WindowEventHandlers, ev: StorageEvent) => any) | null;
16944    onunhandledrejection: ((this: WindowEventHandlers, ev: PromiseRejectionEvent) => any) | null;
16945    onunload: ((this: WindowEventHandlers, ev: Event) => any) | null;
16946    addEventListener<K extends keyof WindowEventHandlersEventMap>(type: K, listener: (this: WindowEventHandlers, ev: WindowEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
16947    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
16948    removeEventListener<K extends keyof WindowEventHandlersEventMap>(type: K, listener: (this: WindowEventHandlers, ev: WindowEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
16949    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
16950}
16951
16952interface WindowLocalStorage {
16953    readonly localStorage: Storage;
16954}
16955
16956interface WindowOrWorkerGlobalScope {
16957    /** Available only in secure contexts. */
16958    readonly caches: CacheStorage;
16959    readonly crossOriginIsolated: boolean;
16960    readonly crypto: Crypto;
16961    readonly indexedDB: IDBFactory;
16962    readonly isSecureContext: boolean;
16963    readonly origin: string;
16964    readonly performance: Performance;
16965    atob(data: string): string;
16966    btoa(data: string): string;
16967    clearInterval(id: number | undefined): void;
16968    clearTimeout(id: number | undefined): void;
16969    createImageBitmap(image: ImageBitmapSource, options?: ImageBitmapOptions): Promise<ImageBitmap>;
16970    createImageBitmap(image: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number, options?: ImageBitmapOptions): Promise<ImageBitmap>;
16971    fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
16972    queueMicrotask(callback: VoidFunction): void;
16973    reportError(e: any): void;
16974    setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
16975    setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
16976    structuredClone(value: any, options?: StructuredSerializeOptions): any;
16977}
16978
16979interface WindowSessionStorage {
16980    readonly sessionStorage: Storage;
16981}
16982
16983interface WorkerEventMap extends AbstractWorkerEventMap {
16984    "message": MessageEvent;
16985    "messageerror": MessageEvent;
16986}
16987
16988/** This Web Workers API interface represents a background task that can be easily created and can send messages back to its creator. Creating a worker is as simple as calling the Worker() constructor and specifying a script to be run in the worker thread. */
16989interface Worker extends EventTarget, AbstractWorker {
16990    onmessage: ((this: Worker, ev: MessageEvent) => any) | null;
16991    onmessageerror: ((this: Worker, ev: MessageEvent) => any) | null;
16992    /** Clones message and transmits it to worker's global environment. transfer can be passed as a list of objects that are to be transferred rather than cloned. */
16993    postMessage(message: any, transfer: Transferable[]): void;
16994    postMessage(message: any, options?: StructuredSerializeOptions): void;
16995    /** Aborts worker's associated global environment. */
16996    terminate(): void;
16997    addEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: Worker, ev: WorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
16998    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
16999    removeEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: Worker, ev: WorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
17000    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
17001}
17002
17003declare var Worker: {
17004    prototype: Worker;
17005    new(scriptURL: string | URL, options?: WorkerOptions): Worker;
17006};
17007
17008/** Available only in secure contexts. */
17009interface Worklet {
17010    /**
17011     * Loads and executes the module script given by moduleURL into all of worklet's global scopes. It can also create additional global scopes as part of this process, depending on the worklet type. The returned promise will fulfill once the script has been successfully loaded and run in all global scopes.
17012     *
17013     * The credentials option can be set to a credentials mode to modify the script-fetching process. It defaults to "same-origin".
17014     *
17015     * Any failures in fetching the script or its dependencies will cause the returned promise to be rejected with an "AbortError" DOMException. Any errors in parsing the script or its dependencies will cause the returned promise to be rejected with the exception generated during parsing.
17016     */
17017    addModule(moduleURL: string | URL, options?: WorkletOptions): Promise<void>;
17018}
17019
17020declare var Worklet: {
17021    prototype: Worklet;
17022    new(): Worklet;
17023};
17024
17025/** This Streams API interface provides a standard abstraction for writing streaming data to a destination, known as a sink. This object comes with built-in backpressure and queuing. */
17026interface WritableStream<W = any> {
17027    readonly locked: boolean;
17028    abort(reason?: any): Promise<void>;
17029    close(): Promise<void>;
17030    getWriter(): WritableStreamDefaultWriter<W>;
17031}
17032
17033declare var WritableStream: {
17034    prototype: WritableStream;
17035    new<W = any>(underlyingSink?: UnderlyingSink<W>, strategy?: QueuingStrategy<W>): WritableStream<W>;
17036};
17037
17038/** This Streams API interface represents a controller allowing control of a WritableStream's state. When constructing a WritableStream, the underlying sink is given a corresponding WritableStreamDefaultController instance to manipulate. */
17039interface WritableStreamDefaultController {
17040    readonly signal: AbortSignal;
17041    error(e?: any): void;
17042}
17043
17044declare var WritableStreamDefaultController: {
17045    prototype: WritableStreamDefaultController;
17046    new(): WritableStreamDefaultController;
17047};
17048
17049/** This Streams API interface is the object returned by WritableStream.getWriter() and once created locks the < writer to the WritableStream ensuring that no other streams can write to the underlying sink. */
17050interface WritableStreamDefaultWriter<W = any> {
17051    readonly closed: Promise<undefined>;
17052    readonly desiredSize: number | null;
17053    readonly ready: Promise<undefined>;
17054    abort(reason?: any): Promise<void>;
17055    close(): Promise<void>;
17056    releaseLock(): void;
17057    write(chunk?: W): Promise<void>;
17058}
17059
17060declare var WritableStreamDefaultWriter: {
17061    prototype: WritableStreamDefaultWriter;
17062    new<W = any>(stream: WritableStream<W>): WritableStreamDefaultWriter<W>;
17063};
17064
17065/** An XML document. It inherits from the generic Document and does not add any specific methods or properties to it: nevertheless, several algorithms behave differently with the two types of documents. */
17066interface XMLDocument extends Document {
17067    addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: XMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
17068    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
17069    removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: XMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
17070    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
17071}
17072
17073declare var XMLDocument: {
17074    prototype: XMLDocument;
17075    new(): XMLDocument;
17076};
17077
17078interface XMLHttpRequestEventMap extends XMLHttpRequestEventTargetEventMap {
17079    "readystatechange": Event;
17080}
17081
17082/** Use XMLHttpRequest (XHR) objects to interact with servers. You can retrieve data from a URL without having to do a full page refresh. This enables a Web page to update just part of a page without disrupting what the user is doing. */
17083interface XMLHttpRequest extends XMLHttpRequestEventTarget {
17084    onreadystatechange: ((this: XMLHttpRequest, ev: Event) => any) | null;
17085    /** Returns client's state. */
17086    readonly readyState: number;
17087    /** Returns the response body. */
17088    readonly response: any;
17089    /**
17090     * Returns response as text.
17091     *
17092     * Throws an "InvalidStateError" DOMException if responseType is not the empty string or "text".
17093     */
17094    readonly responseText: string;
17095    /**
17096     * Returns the response type.
17097     *
17098     * Can be set to change the response type. Values are: the empty string (default), "arraybuffer", "blob", "document", "json", and "text".
17099     *
17100     * When set: setting to "document" is ignored if current global object is not a Window object.
17101     *
17102     * When set: throws an "InvalidStateError" DOMException if state is loading or done.
17103     *
17104     * When set: throws an "InvalidAccessError" DOMException if the synchronous flag is set and current global object is a Window object.
17105     */
17106    responseType: XMLHttpRequestResponseType;
17107    readonly responseURL: string;
17108    /**
17109     * Returns the response as document.
17110     *
17111     * Throws an "InvalidStateError" DOMException if responseType is not the empty string or "document".
17112     */
17113    readonly responseXML: Document | null;
17114    readonly status: number;
17115    readonly statusText: string;
17116    /**
17117     * Can be set to a time in milliseconds. When set to a non-zero value will cause fetching to terminate after the given time has passed. When the time has passed, the request has not yet completed, and this's synchronous flag is unset, a timeout event will then be dispatched, or a "TimeoutError" DOMException will be thrown otherwise (for the send() method).
17118     *
17119     * When set: throws an "InvalidAccessError" DOMException if the synchronous flag is set and current global object is a Window object.
17120     */
17121    timeout: number;
17122    /** Returns the associated XMLHttpRequestUpload object. It can be used to gather transmission information when data is transferred to a server. */
17123    readonly upload: XMLHttpRequestUpload;
17124    /**
17125     * True when credentials are to be included in a cross-origin request. False when they are to be excluded in a cross-origin request and when cookies are to be ignored in its response. Initially false.
17126     *
17127     * When set: throws an "InvalidStateError" DOMException if state is not unsent or opened, or if the send() flag is set.
17128     */
17129    withCredentials: boolean;
17130    /** Cancels any network activity. */
17131    abort(): void;
17132    getAllResponseHeaders(): string;
17133    getResponseHeader(name: string): string | null;
17134    /**
17135     * Sets the request method, request URL, and synchronous flag.
17136     *
17137     * Throws a "SyntaxError" DOMException if either method is not a valid method or url cannot be parsed.
17138     *
17139     * Throws a "SecurityError" DOMException if method is a case-insensitive match for `CONNECT`, `TRACE`, or `TRACK`.
17140     *
17141     * Throws an "InvalidAccessError" DOMException if async is false, current global object is a Window object, and the timeout attribute is not zero or the responseType attribute is not the empty string.
17142     */
17143    open(method: string, url: string | URL): void;
17144    open(method: string, url: string | URL, async: boolean, username?: string | null, password?: string | null): void;
17145    /**
17146     * Acts as if the `Content-Type` header value for a response is mime. (It does not change the header.)
17147     *
17148     * Throws an "InvalidStateError" DOMException if state is loading or done.
17149     */
17150    overrideMimeType(mime: string): void;
17151    /**
17152     * Initiates the request. The body argument provides the request body, if any, and is ignored if the request method is GET or HEAD.
17153     *
17154     * Throws an "InvalidStateError" DOMException if either state is not opened or the send() flag is set.
17155     */
17156    send(body?: Document | XMLHttpRequestBodyInit | null): void;
17157    /**
17158     * Combines a header in author request headers.
17159     *
17160     * Throws an "InvalidStateError" DOMException if either state is not opened or the send() flag is set.
17161     *
17162     * Throws a "SyntaxError" DOMException if name is not a header name or if value is not a header value.
17163     */
17164    setRequestHeader(name: string, value: string): void;
17165    readonly DONE: number;
17166    readonly HEADERS_RECEIVED: number;
17167    readonly LOADING: number;
17168    readonly OPENED: number;
17169    readonly UNSENT: number;
17170    addEventListener<K extends keyof XMLHttpRequestEventMap>(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
17171    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
17172    removeEventListener<K extends keyof XMLHttpRequestEventMap>(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
17173    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
17174}
17175
17176declare var XMLHttpRequest: {
17177    prototype: XMLHttpRequest;
17178    new(): XMLHttpRequest;
17179    readonly DONE: number;
17180    readonly HEADERS_RECEIVED: number;
17181    readonly LOADING: number;
17182    readonly OPENED: number;
17183    readonly UNSENT: number;
17184};
17185
17186interface XMLHttpRequestEventTargetEventMap {
17187    "abort": ProgressEvent<XMLHttpRequestEventTarget>;
17188    "error": ProgressEvent<XMLHttpRequestEventTarget>;
17189    "load": ProgressEvent<XMLHttpRequestEventTarget>;
17190    "loadend": ProgressEvent<XMLHttpRequestEventTarget>;
17191    "loadstart": ProgressEvent<XMLHttpRequestEventTarget>;
17192    "progress": ProgressEvent<XMLHttpRequestEventTarget>;
17193    "timeout": ProgressEvent<XMLHttpRequestEventTarget>;
17194}
17195
17196interface XMLHttpRequestEventTarget extends EventTarget {
17197    onabort: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17198    onerror: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17199    onload: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17200    onloadend: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17201    onloadstart: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17202    onprogress: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17203    ontimeout: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17204    addEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestEventTarget, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
17205    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
17206    removeEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestEventTarget, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
17207    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
17208}
17209
17210declare var XMLHttpRequestEventTarget: {
17211    prototype: XMLHttpRequestEventTarget;
17212    new(): XMLHttpRequestEventTarget;
17213};
17214
17215interface XMLHttpRequestUpload extends XMLHttpRequestEventTarget {
17216    addEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestUpload, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
17217    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
17218    removeEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestUpload, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
17219    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
17220}
17221
17222declare var XMLHttpRequestUpload: {
17223    prototype: XMLHttpRequestUpload;
17224    new(): XMLHttpRequestUpload;
17225};
17226
17227/** Provides the serializeToString() method to construct an XML string representing a DOM tree. */
17228interface XMLSerializer {
17229    serializeToString(root: Node): string;
17230}
17231
17232declare var XMLSerializer: {
17233    prototype: XMLSerializer;
17234    new(): XMLSerializer;
17235};
17236
17237/** The XPathEvaluator interface allows to compile and evaluate XPath expressions. */
17238interface XPathEvaluator extends XPathEvaluatorBase {
17239}
17240
17241declare var XPathEvaluator: {
17242    prototype: XPathEvaluator;
17243    new(): XPathEvaluator;
17244};
17245
17246interface XPathEvaluatorBase {
17247    createExpression(expression: string, resolver?: XPathNSResolver | null): XPathExpression;
17248    createNSResolver(nodeResolver: Node): XPathNSResolver;
17249    evaluate(expression: string, contextNode: Node, resolver?: XPathNSResolver | null, type?: number, result?: XPathResult | null): XPathResult;
17250}
17251
17252/** This interface is a compiled XPath expression that can be evaluated on a document or specific node to return information its DOM tree. */
17253interface XPathExpression {
17254    evaluate(contextNode: Node, type?: number, result?: XPathResult | null): XPathResult;
17255}
17256
17257declare var XPathExpression: {
17258    prototype: XPathExpression;
17259    new(): XPathExpression;
17260};
17261
17262/** The results generated by evaluating an XPath expression within the context of a given node. */
17263interface XPathResult {
17264    readonly booleanValue: boolean;
17265    readonly invalidIteratorState: boolean;
17266    readonly numberValue: number;
17267    readonly resultType: number;
17268    readonly singleNodeValue: Node | null;
17269    readonly snapshotLength: number;
17270    readonly stringValue: string;
17271    iterateNext(): Node | null;
17272    snapshotItem(index: number): Node | null;
17273    readonly ANY_TYPE: number;
17274    readonly ANY_UNORDERED_NODE_TYPE: number;
17275    readonly BOOLEAN_TYPE: number;
17276    readonly FIRST_ORDERED_NODE_TYPE: number;
17277    readonly NUMBER_TYPE: number;
17278    readonly ORDERED_NODE_ITERATOR_TYPE: number;
17279    readonly ORDERED_NODE_SNAPSHOT_TYPE: number;
17280    readonly STRING_TYPE: number;
17281    readonly UNORDERED_NODE_ITERATOR_TYPE: number;
17282    readonly UNORDERED_NODE_SNAPSHOT_TYPE: number;
17283}
17284
17285declare var XPathResult: {
17286    prototype: XPathResult;
17287    new(): XPathResult;
17288    readonly ANY_TYPE: number;
17289    readonly ANY_UNORDERED_NODE_TYPE: number;
17290    readonly BOOLEAN_TYPE: number;
17291    readonly FIRST_ORDERED_NODE_TYPE: number;
17292    readonly NUMBER_TYPE: number;
17293    readonly ORDERED_NODE_ITERATOR_TYPE: number;
17294    readonly ORDERED_NODE_SNAPSHOT_TYPE: number;
17295    readonly STRING_TYPE: number;
17296    readonly UNORDERED_NODE_ITERATOR_TYPE: number;
17297    readonly UNORDERED_NODE_SNAPSHOT_TYPE: number;
17298};
17299
17300/** An XSLTProcessor applies an XSLT stylesheet transformation to an XML document to produce a new XML document as output. It has methods to load the XSLT stylesheet, to manipulate <xsl:param> parameter values, and to apply the transformation to documents. */
17301interface XSLTProcessor {
17302    clearParameters(): void;
17303    getParameter(namespaceURI: string | null, localName: string): any;
17304    importStylesheet(style: Node): void;
17305    removeParameter(namespaceURI: string | null, localName: string): void;
17306    reset(): void;
17307    setParameter(namespaceURI: string | null, localName: string, value: any): void;
17308    transformToDocument(source: Node): Document;
17309    transformToFragment(source: Node, output: Document): DocumentFragment;
17310}
17311
17312declare var XSLTProcessor: {
17313    prototype: XSLTProcessor;
17314    new(): XSLTProcessor;
17315};
17316
17317interface Console {
17318    assert(condition?: boolean, ...data: any[]): void;
17319    clear(): void;
17320    count(label?: string): void;
17321    countReset(label?: string): void;
17322    debug(...data: any[]): void;
17323    dir(item?: any, options?: any): void;
17324    dirxml(...data: any[]): void;
17325    error(...data: any[]): void;
17326    group(...data: any[]): void;
17327    groupCollapsed(...data: any[]): void;
17328    groupEnd(): void;
17329    info(...data: any[]): void;
17330    log(...data: any[]): void;
17331    table(tabularData?: any, properties?: string[]): void;
17332    time(label?: string): void;
17333    timeEnd(label?: string): void;
17334    timeLog(label?: string, ...data: any[]): void;
17335    timeStamp(label?: string): void;
17336    trace(...data: any[]): void;
17337    warn(...data: any[]): void;
17338}
17339
17340declare var console: Console;
17341
17342/** Holds useful CSS-related methods. No object with this interface are implemented: it contains only static methods and therefore is a utilitarian interface. */
17343declare namespace CSS {
17344    function escape(ident: string): string;
17345    function supports(property: string, value: string): boolean;
17346    function supports(conditionText: string): boolean;
17347}
17348
17349declare namespace WebAssembly {
17350    interface CompileError extends Error {
17351    }
17352
17353    var CompileError: {
17354        prototype: CompileError;
17355        new(message?: string): CompileError;
17356        (message?: string): CompileError;
17357    };
17358
17359    interface Global {
17360        value: any;
17361        valueOf(): any;
17362    }
17363
17364    var Global: {
17365        prototype: Global;
17366        new(descriptor: GlobalDescriptor, v?: any): Global;
17367    };
17368
17369    interface Instance {
17370        readonly exports: Exports;
17371    }
17372
17373    var Instance: {
17374        prototype: Instance;
17375        new(module: Module, importObject?: Imports): Instance;
17376    };
17377
17378    interface LinkError extends Error {
17379    }
17380
17381    var LinkError: {
17382        prototype: LinkError;
17383        new(message?: string): LinkError;
17384        (message?: string): LinkError;
17385    };
17386
17387    interface Memory {
17388        readonly buffer: ArrayBuffer;
17389        grow(delta: number): number;
17390    }
17391
17392    var Memory: {
17393        prototype: Memory;
17394        new(descriptor: MemoryDescriptor): Memory;
17395    };
17396
17397    interface Module {
17398    }
17399
17400    var Module: {
17401        prototype: Module;
17402        new(bytes: BufferSource): Module;
17403        customSections(moduleObject: Module, sectionName: string): ArrayBuffer[];
17404        exports(moduleObject: Module): ModuleExportDescriptor[];
17405        imports(moduleObject: Module): ModuleImportDescriptor[];
17406    };
17407
17408    interface RuntimeError extends Error {
17409    }
17410
17411    var RuntimeError: {
17412        prototype: RuntimeError;
17413        new(message?: string): RuntimeError;
17414        (message?: string): RuntimeError;
17415    };
17416
17417    interface Table {
17418        readonly length: number;
17419        get(index: number): any;
17420        grow(delta: number, value?: any): number;
17421        set(index: number, value?: any): void;
17422    }
17423
17424    var Table: {
17425        prototype: Table;
17426        new(descriptor: TableDescriptor, value?: any): Table;
17427    };
17428
17429    interface GlobalDescriptor {
17430        mutable?: boolean;
17431        value: ValueType;
17432    }
17433
17434    interface MemoryDescriptor {
17435        initial: number;
17436        maximum?: number;
17437        shared?: boolean;
17438    }
17439
17440    interface ModuleExportDescriptor {
17441        kind: ImportExportKind;
17442        name: string;
17443    }
17444
17445    interface ModuleImportDescriptor {
17446        kind: ImportExportKind;
17447        module: string;
17448        name: string;
17449    }
17450
17451    interface TableDescriptor {
17452        element: TableKind;
17453        initial: number;
17454        maximum?: number;
17455    }
17456
17457    interface WebAssemblyInstantiatedSource {
17458        instance: Instance;
17459        module: Module;
17460    }
17461
17462    type ImportExportKind = "function" | "global" | "memory" | "table";
17463    type TableKind = "anyfunc" | "externref";
17464    type ValueType = "anyfunc" | "externref" | "f32" | "f64" | "i32" | "i64" | "v128";
17465    type ExportValue = Function | Global | Memory | Table;
17466    type Exports = Record<string, ExportValue>;
17467    type ImportValue = ExportValue | number;
17468    type Imports = Record<string, ModuleImports>;
17469    type ModuleImports = Record<string, ImportValue>;
17470    function compile(bytes: BufferSource): Promise<Module>;
17471    function compileStreaming(source: Response | PromiseLike<Response>): Promise<Module>;
17472    function instantiate(bytes: BufferSource, importObject?: Imports): Promise<WebAssemblyInstantiatedSource>;
17473    function instantiate(moduleObject: Module, importObject?: Imports): Promise<Instance>;
17474    function instantiateStreaming(source: Response | PromiseLike<Response>, importObject?: Imports): Promise<WebAssemblyInstantiatedSource>;
17475    function validate(bytes: BufferSource): boolean;
17476}
17477
17478interface BlobCallback {
17479    (blob: Blob | null): void;
17480}
17481
17482interface CustomElementConstructor {
17483    new (...params: any[]): HTMLElement;
17484}
17485
17486interface DecodeErrorCallback {
17487    (error: DOMException): void;
17488}
17489
17490interface DecodeSuccessCallback {
17491    (decodedData: AudioBuffer): void;
17492}
17493
17494interface ErrorCallback {
17495    (err: DOMException): void;
17496}
17497
17498interface FileCallback {
17499    (file: File): void;
17500}
17501
17502interface FileSystemEntriesCallback {
17503    (entries: FileSystemEntry[]): void;
17504}
17505
17506interface FileSystemEntryCallback {
17507    (entry: FileSystemEntry): void;
17508}
17509
17510interface FrameRequestCallback {
17511    (time: DOMHighResTimeStamp): void;
17512}
17513
17514interface FunctionStringCallback {
17515    (data: string): void;
17516}
17517
17518interface IdleRequestCallback {
17519    (deadline: IdleDeadline): void;
17520}
17521
17522interface IntersectionObserverCallback {
17523    (entries: IntersectionObserverEntry[], observer: IntersectionObserver): void;
17524}
17525
17526interface LockGrantedCallback {
17527    (lock: Lock | null): any;
17528}
17529
17530interface MediaSessionActionHandler {
17531    (details: MediaSessionActionDetails): void;
17532}
17533
17534interface MutationCallback {
17535    (mutations: MutationRecord[], observer: MutationObserver): void;
17536}
17537
17538interface NotificationPermissionCallback {
17539    (permission: NotificationPermission): void;
17540}
17541
17542interface OnBeforeUnloadEventHandlerNonNull {
17543    (event: Event): string | null;
17544}
17545
17546interface OnErrorEventHandlerNonNull {
17547    (event: Event | string, source?: string, lineno?: number, colno?: number, error?: Error): any;
17548}
17549
17550interface PerformanceObserverCallback {
17551    (entries: PerformanceObserverEntryList, observer: PerformanceObserver): void;
17552}
17553
17554interface PositionCallback {
17555    (position: GeolocationPosition): void;
17556}
17557
17558interface PositionErrorCallback {
17559    (positionError: GeolocationPositionError): void;
17560}
17561
17562interface QueuingStrategySize<T = any> {
17563    (chunk: T): number;
17564}
17565
17566interface RTCPeerConnectionErrorCallback {
17567    (error: DOMException): void;
17568}
17569
17570interface RTCSessionDescriptionCallback {
17571    (description: RTCSessionDescriptionInit): void;
17572}
17573
17574interface RemotePlaybackAvailabilityCallback {
17575    (available: boolean): void;
17576}
17577
17578interface ResizeObserverCallback {
17579    (entries: ResizeObserverEntry[], observer: ResizeObserver): void;
17580}
17581
17582interface TransformerFlushCallback<O> {
17583    (controller: TransformStreamDefaultController<O>): void | PromiseLike<void>;
17584}
17585
17586interface TransformerStartCallback<O> {
17587    (controller: TransformStreamDefaultController<O>): any;
17588}
17589
17590interface TransformerTransformCallback<I, O> {
17591    (chunk: I, controller: TransformStreamDefaultController<O>): void | PromiseLike<void>;
17592}
17593
17594interface UnderlyingSinkAbortCallback {
17595    (reason?: any): void | PromiseLike<void>;
17596}
17597
17598interface UnderlyingSinkCloseCallback {
17599    (): void | PromiseLike<void>;
17600}
17601
17602interface UnderlyingSinkStartCallback {
17603    (controller: WritableStreamDefaultController): any;
17604}
17605
17606interface UnderlyingSinkWriteCallback<W> {
17607    (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike<void>;
17608}
17609
17610interface UnderlyingSourceCancelCallback {
17611    (reason?: any): void | PromiseLike<void>;
17612}
17613
17614interface UnderlyingSourcePullCallback<R> {
17615    (controller: ReadableStreamController<R>): void | PromiseLike<void>;
17616}
17617
17618interface UnderlyingSourceStartCallback<R> {
17619    (controller: ReadableStreamController<R>): any;
17620}
17621
17622interface VideoFrameRequestCallback {
17623    (now: DOMHighResTimeStamp, metadata: VideoFrameCallbackMetadata): void;
17624}
17625
17626interface VoidFunction {
17627    (): void;
17628}
17629
17630interface HTMLElementTagNameMap {
17631    "a": HTMLAnchorElement;
17632    "abbr": HTMLElement;
17633    "address": HTMLElement;
17634    "area": HTMLAreaElement;
17635    "article": HTMLElement;
17636    "aside": HTMLElement;
17637    "audio": HTMLAudioElement;
17638    "b": HTMLElement;
17639    "base": HTMLBaseElement;
17640    "bdi": HTMLElement;
17641    "bdo": HTMLElement;
17642    "blockquote": HTMLQuoteElement;
17643    "body": HTMLBodyElement;
17644    "br": HTMLBRElement;
17645    "button": HTMLButtonElement;
17646    "canvas": HTMLCanvasElement;
17647    "caption": HTMLTableCaptionElement;
17648    "cite": HTMLElement;
17649    "code": HTMLElement;
17650    "col": HTMLTableColElement;
17651    "colgroup": HTMLTableColElement;
17652    "data": HTMLDataElement;
17653    "datalist": HTMLDataListElement;
17654    "dd": HTMLElement;
17655    "del": HTMLModElement;
17656    "details": HTMLDetailsElement;
17657    "dfn": HTMLElement;
17658    "dialog": HTMLDialogElement;
17659    "div": HTMLDivElement;
17660    "dl": HTMLDListElement;
17661    "dt": HTMLElement;
17662    "em": HTMLElement;
17663    "embed": HTMLEmbedElement;
17664    "fieldset": HTMLFieldSetElement;
17665    "figcaption": HTMLElement;
17666    "figure": HTMLElement;
17667    "footer": HTMLElement;
17668    "form": HTMLFormElement;
17669    "h1": HTMLHeadingElement;
17670    "h2": HTMLHeadingElement;
17671    "h3": HTMLHeadingElement;
17672    "h4": HTMLHeadingElement;
17673    "h5": HTMLHeadingElement;
17674    "h6": HTMLHeadingElement;
17675    "head": HTMLHeadElement;
17676    "header": HTMLElement;
17677    "hgroup": HTMLElement;
17678    "hr": HTMLHRElement;
17679    "html": HTMLHtmlElement;
17680    "i": HTMLElement;
17681    "iframe": HTMLIFrameElement;
17682    "img": HTMLImageElement;
17683    "input": HTMLInputElement;
17684    "ins": HTMLModElement;
17685    "kbd": HTMLElement;
17686    "label": HTMLLabelElement;
17687    "legend": HTMLLegendElement;
17688    "li": HTMLLIElement;
17689    "link": HTMLLinkElement;
17690    "main": HTMLElement;
17691    "map": HTMLMapElement;
17692    "mark": HTMLElement;
17693    "menu": HTMLMenuElement;
17694    "meta": HTMLMetaElement;
17695    "meter": HTMLMeterElement;
17696    "nav": HTMLElement;
17697    "noscript": HTMLElement;
17698    "object": HTMLObjectElement;
17699    "ol": HTMLOListElement;
17700    "optgroup": HTMLOptGroupElement;
17701    "option": HTMLOptionElement;
17702    "output": HTMLOutputElement;
17703    "p": HTMLParagraphElement;
17704    "picture": HTMLPictureElement;
17705    "pre": HTMLPreElement;
17706    "progress": HTMLProgressElement;
17707    "q": HTMLQuoteElement;
17708    "rp": HTMLElement;
17709    "rt": HTMLElement;
17710    "ruby": HTMLElement;
17711    "s": HTMLElement;
17712    "samp": HTMLElement;
17713    "script": HTMLScriptElement;
17714    "section": HTMLElement;
17715    "select": HTMLSelectElement;
17716    "slot": HTMLSlotElement;
17717    "small": HTMLElement;
17718    "source": HTMLSourceElement;
17719    "span": HTMLSpanElement;
17720    "strong": HTMLElement;
17721    "style": HTMLStyleElement;
17722    "sub": HTMLElement;
17723    "summary": HTMLElement;
17724    "sup": HTMLElement;
17725    "table": HTMLTableElement;
17726    "tbody": HTMLTableSectionElement;
17727    "td": HTMLTableCellElement;
17728    "template": HTMLTemplateElement;
17729    "textarea": HTMLTextAreaElement;
17730    "tfoot": HTMLTableSectionElement;
17731    "th": HTMLTableCellElement;
17732    "thead": HTMLTableSectionElement;
17733    "time": HTMLTimeElement;
17734    "title": HTMLTitleElement;
17735    "tr": HTMLTableRowElement;
17736    "track": HTMLTrackElement;
17737    "u": HTMLElement;
17738    "ul": HTMLUListElement;
17739    "var": HTMLElement;
17740    "video": HTMLVideoElement;
17741    "wbr": HTMLElement;
17742}
17743
17744interface HTMLElementDeprecatedTagNameMap {
17745    "acronym": HTMLElement;
17746    "applet": HTMLUnknownElement;
17747    "basefont": HTMLElement;
17748    "bgsound": HTMLUnknownElement;
17749    "big": HTMLElement;
17750    "blink": HTMLUnknownElement;
17751    "center": HTMLElement;
17752    "dir": HTMLDirectoryElement;
17753    "font": HTMLFontElement;
17754    "frame": HTMLFrameElement;
17755    "frameset": HTMLFrameSetElement;
17756    "isindex": HTMLUnknownElement;
17757    "keygen": HTMLUnknownElement;
17758    "listing": HTMLPreElement;
17759    "marquee": HTMLMarqueeElement;
17760    "menuitem": HTMLElement;
17761    "multicol": HTMLUnknownElement;
17762    "nextid": HTMLUnknownElement;
17763    "nobr": HTMLElement;
17764    "noembed": HTMLElement;
17765    "noframes": HTMLElement;
17766    "param": HTMLParamElement;
17767    "plaintext": HTMLElement;
17768    "rb": HTMLElement;
17769    "rtc": HTMLElement;
17770    "spacer": HTMLUnknownElement;
17771    "strike": HTMLElement;
17772    "tt": HTMLElement;
17773    "xmp": HTMLPreElement;
17774}
17775
17776interface SVGElementTagNameMap {
17777    "a": SVGAElement;
17778    "animate": SVGAnimateElement;
17779    "animateMotion": SVGAnimateMotionElement;
17780    "animateTransform": SVGAnimateTransformElement;
17781    "circle": SVGCircleElement;
17782    "clipPath": SVGClipPathElement;
17783    "defs": SVGDefsElement;
17784    "desc": SVGDescElement;
17785    "ellipse": SVGEllipseElement;
17786    "feBlend": SVGFEBlendElement;
17787    "feColorMatrix": SVGFEColorMatrixElement;
17788    "feComponentTransfer": SVGFEComponentTransferElement;
17789    "feComposite": SVGFECompositeElement;
17790    "feConvolveMatrix": SVGFEConvolveMatrixElement;
17791    "feDiffuseLighting": SVGFEDiffuseLightingElement;
17792    "feDisplacementMap": SVGFEDisplacementMapElement;
17793    "feDistantLight": SVGFEDistantLightElement;
17794    "feDropShadow": SVGFEDropShadowElement;
17795    "feFlood": SVGFEFloodElement;
17796    "feFuncA": SVGFEFuncAElement;
17797    "feFuncB": SVGFEFuncBElement;
17798    "feFuncG": SVGFEFuncGElement;
17799    "feFuncR": SVGFEFuncRElement;
17800    "feGaussianBlur": SVGFEGaussianBlurElement;
17801    "feImage": SVGFEImageElement;
17802    "feMerge": SVGFEMergeElement;
17803    "feMergeNode": SVGFEMergeNodeElement;
17804    "feMorphology": SVGFEMorphologyElement;
17805    "feOffset": SVGFEOffsetElement;
17806    "fePointLight": SVGFEPointLightElement;
17807    "feSpecularLighting": SVGFESpecularLightingElement;
17808    "feSpotLight": SVGFESpotLightElement;
17809    "feTile": SVGFETileElement;
17810    "feTurbulence": SVGFETurbulenceElement;
17811    "filter": SVGFilterElement;
17812    "foreignObject": SVGForeignObjectElement;
17813    "g": SVGGElement;
17814    "image": SVGImageElement;
17815    "line": SVGLineElement;
17816    "linearGradient": SVGLinearGradientElement;
17817    "marker": SVGMarkerElement;
17818    "mask": SVGMaskElement;
17819    "metadata": SVGMetadataElement;
17820    "mpath": SVGMPathElement;
17821    "path": SVGPathElement;
17822    "pattern": SVGPatternElement;
17823    "polygon": SVGPolygonElement;
17824    "polyline": SVGPolylineElement;
17825    "radialGradient": SVGRadialGradientElement;
17826    "rect": SVGRectElement;
17827    "script": SVGScriptElement;
17828    "set": SVGSetElement;
17829    "stop": SVGStopElement;
17830    "style": SVGStyleElement;
17831    "svg": SVGSVGElement;
17832    "switch": SVGSwitchElement;
17833    "symbol": SVGSymbolElement;
17834    "text": SVGTextElement;
17835    "textPath": SVGTextPathElement;
17836    "title": SVGTitleElement;
17837    "tspan": SVGTSpanElement;
17838    "use": SVGUseElement;
17839    "view": SVGViewElement;
17840}
17841
17842/** @deprecated Directly use HTMLElementTagNameMap or SVGElementTagNameMap as appropriate, instead. */
17843type ElementTagNameMap = HTMLElementTagNameMap & Pick<SVGElementTagNameMap, Exclude<keyof SVGElementTagNameMap, keyof HTMLElementTagNameMap>>;
17844
17845declare var Audio: {
17846    new(src?: string): HTMLAudioElement;
17847};
17848declare var Image: {
17849    new(width?: number, height?: number): HTMLImageElement;
17850};
17851declare var Option: {
17852    new(text?: string, value?: string, defaultSelected?: boolean, selected?: boolean): HTMLOptionElement;
17853};
17854/** @deprecated This is a legacy alias of `navigator`. */
17855declare var clientInformation: Navigator;
17856/** Returns true if the window has been closed, false otherwise. */
17857declare var closed: boolean;
17858/** Defines a new custom element, mapping the given name to the given constructor as an autonomous custom element. */
17859declare var customElements: CustomElementRegistry;
17860declare var devicePixelRatio: number;
17861declare var document: Document;
17862/** @deprecated */
17863declare var event: Event | undefined;
17864/** @deprecated */
17865declare var external: External;
17866declare var frameElement: Element | null;
17867declare var frames: WindowProxy;
17868declare var history: History;
17869declare var innerHeight: number;
17870declare var innerWidth: number;
17871declare var length: number;
17872declare var location: Location;
17873/** Returns true if the location bar is visible; otherwise, returns false. */
17874declare var locationbar: BarProp;
17875/** Returns true if the menu bar is visible; otherwise, returns false. */
17876declare var menubar: BarProp;
17877/** @deprecated */
17878declare const name: void;
17879declare var navigator: Navigator;
17880/** Available only in secure contexts. */
17881declare var ondevicemotion: ((this: Window, ev: DeviceMotionEvent) => any) | null;
17882/** Available only in secure contexts. */
17883declare var ondeviceorientation: ((this: Window, ev: DeviceOrientationEvent) => any) | null;
17884/** @deprecated */
17885declare var onorientationchange: ((this: Window, ev: Event) => any) | null;
17886declare var opener: any;
17887/** @deprecated */
17888declare var orientation: number;
17889declare var outerHeight: number;
17890declare var outerWidth: number;
17891/** @deprecated This is a legacy alias of `scrollX`. */
17892declare var pageXOffset: number;
17893/** @deprecated This is a legacy alias of `scrollY`. */
17894declare var pageYOffset: number;
17895/**
17896 * Refers to either the parent WindowProxy, or itself.
17897 *
17898 * It can rarely be null e.g. for contentWindow of an iframe that is already removed from the parent.
17899 */
17900declare var parent: WindowProxy;
17901/** Returns true if the personal bar is visible; otherwise, returns false. */
17902declare var personalbar: BarProp;
17903declare var screen: Screen;
17904declare var screenLeft: number;
17905declare var screenTop: number;
17906declare var screenX: number;
17907declare var screenY: number;
17908declare var scrollX: number;
17909declare var scrollY: number;
17910/** Returns true if the scrollbars are visible; otherwise, returns false. */
17911declare var scrollbars: BarProp;
17912declare var self: Window & typeof globalThis;
17913declare var speechSynthesis: SpeechSynthesis;
17914/** @deprecated */
17915declare var status: string;
17916/** Returns true if the status bar is visible; otherwise, returns false. */
17917declare var statusbar: BarProp;
17918/** Returns true if the toolbar is visible; otherwise, returns false. */
17919declare var toolbar: BarProp;
17920declare var top: WindowProxy | null;
17921declare var visualViewport: VisualViewport | null;
17922declare var window: Window & typeof globalThis;
17923declare function alert(message?: any): void;
17924declare function blur(): void;
17925declare function cancelIdleCallback(handle: number): void;
17926/** @deprecated */
17927declare function captureEvents(): void;
17928/** Closes the window. */
17929declare function close(): void;
17930declare function confirm(message?: string): boolean;
17931/** Moves the focus to the window's browsing context, if any. */
17932declare function focus(): void;
17933declare function getComputedStyle(elt: Element, pseudoElt?: string | null): CSSStyleDeclaration;
17934declare function getSelection(): Selection | null;
17935declare function matchMedia(query: string): MediaQueryList;
17936declare function moveBy(x: number, y: number): void;
17937declare function moveTo(x: number, y: number): void;
17938declare function open(url?: string | URL, target?: string, features?: string): WindowProxy | null;
17939/**
17940 * Posts a message to the given window. Messages can be structured objects, e.g. nested objects and arrays, can contain JavaScript values (strings, numbers, Date objects, etc), and can contain certain data objects such as File Blob, FileList, and ArrayBuffer objects.
17941 *
17942 * Objects listed in the transfer member of options are transferred, not just cloned, meaning that they are no longer usable on the sending side.
17943 *
17944 * A target origin can be specified using the targetOrigin member of options. If not provided, it defaults to "/". This default restricts the message to same-origin targets only.
17945 *
17946 * If the origin of the target window doesn't match the given target origin, the message is discarded, to avoid information leakage. To send the message to the target regardless of origin, set the target origin to "*".
17947 *
17948 * Throws a "DataCloneError" DOMException if transfer array contains duplicate objects or if message could not be cloned.
17949 */
17950declare function postMessage(message: any, targetOrigin: string, transfer?: Transferable[]): void;
17951declare function postMessage(message: any, options?: WindowPostMessageOptions): void;
17952declare function print(): void;
17953declare function prompt(message?: string, _default?: string): string | null;
17954/** @deprecated */
17955declare function releaseEvents(): void;
17956declare function requestIdleCallback(callback: IdleRequestCallback, options?: IdleRequestOptions): number;
17957declare function resizeBy(x: number, y: number): void;
17958declare function resizeTo(width: number, height: number): void;
17959declare function scroll(options?: ScrollToOptions): void;
17960declare function scroll(x: number, y: number): void;
17961declare function scrollBy(options?: ScrollToOptions): void;
17962declare function scrollBy(x: number, y: number): void;
17963declare function scrollTo(options?: ScrollToOptions): void;
17964declare function scrollTo(x: number, y: number): void;
17965/** Cancels the document load. */
17966declare function stop(): void;
17967declare function toString(): string;
17968/** Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. */
17969declare function dispatchEvent(event: Event): boolean;
17970declare function cancelAnimationFrame(handle: number): void;
17971declare function requestAnimationFrame(callback: FrameRequestCallback): number;
17972/**
17973 * Fires when the user aborts the download.
17974 * @param ev The event.
17975 */
17976declare var onabort: ((this: Window, ev: UIEvent) => any) | null;
17977declare var onanimationcancel: ((this: Window, ev: AnimationEvent) => any) | null;
17978declare var onanimationend: ((this: Window, ev: AnimationEvent) => any) | null;
17979declare var onanimationiteration: ((this: Window, ev: AnimationEvent) => any) | null;
17980declare var onanimationstart: ((this: Window, ev: AnimationEvent) => any) | null;
17981declare var onauxclick: ((this: Window, ev: MouseEvent) => any) | null;
17982declare var onbeforeinput: ((this: Window, ev: InputEvent) => any) | null;
17983/**
17984 * Fires when the object loses the input focus.
17985 * @param ev The focus event.
17986 */
17987declare var onblur: ((this: Window, ev: FocusEvent) => any) | null;
17988declare var oncancel: ((this: Window, ev: Event) => any) | null;
17989/**
17990 * Occurs when playback is possible, but would require further buffering.
17991 * @param ev The event.
17992 */
17993declare var oncanplay: ((this: Window, ev: Event) => any) | null;
17994declare var oncanplaythrough: ((this: Window, ev: Event) => any) | null;
17995/**
17996 * Fires when the contents of the object or selection have changed.
17997 * @param ev The event.
17998 */
17999declare var onchange: ((this: Window, ev: Event) => any) | null;
18000/**
18001 * Fires when the user clicks the left mouse button on the object
18002 * @param ev The mouse event.
18003 */
18004declare var onclick: ((this: Window, ev: MouseEvent) => any) | null;
18005declare var onclose: ((this: Window, ev: Event) => any) | null;
18006/**
18007 * Fires when the user clicks the right mouse button in the client area, opening the context menu.
18008 * @param ev The mouse event.
18009 */
18010declare var oncontextmenu: ((this: Window, ev: MouseEvent) => any) | null;
18011declare var oncuechange: ((this: Window, ev: Event) => any) | null;
18012/**
18013 * Fires when the user double-clicks the object.
18014 * @param ev The mouse event.
18015 */
18016declare var ondblclick: ((this: Window, ev: MouseEvent) => any) | null;
18017/**
18018 * Fires on the source object continuously during a drag operation.
18019 * @param ev The event.
18020 */
18021declare var ondrag: ((this: Window, ev: DragEvent) => any) | null;
18022/**
18023 * Fires on the source object when the user releases the mouse at the close of a drag operation.
18024 * @param ev The event.
18025 */
18026declare var ondragend: ((this: Window, ev: DragEvent) => any) | null;
18027/**
18028 * Fires on the target element when the user drags the object to a valid drop target.
18029 * @param ev The drag event.
18030 */
18031declare var ondragenter: ((this: Window, ev: DragEvent) => any) | null;
18032/**
18033 * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation.
18034 * @param ev The drag event.
18035 */
18036declare var ondragleave: ((this: Window, ev: DragEvent) => any) | null;
18037/**
18038 * Fires on the target element continuously while the user drags the object over a valid drop target.
18039 * @param ev The event.
18040 */
18041declare var ondragover: ((this: Window, ev: DragEvent) => any) | null;
18042/**
18043 * Fires on the source object when the user starts to drag a text selection or selected object.
18044 * @param ev The event.
18045 */
18046declare var ondragstart: ((this: Window, ev: DragEvent) => any) | null;
18047declare var ondrop: ((this: Window, ev: DragEvent) => any) | null;
18048/**
18049 * Occurs when the duration attribute is updated.
18050 * @param ev The event.
18051 */
18052declare var ondurationchange: ((this: Window, ev: Event) => any) | null;
18053/**
18054 * Occurs when the media element is reset to its initial state.
18055 * @param ev The event.
18056 */
18057declare var onemptied: ((this: Window, ev: Event) => any) | null;
18058/**
18059 * Occurs when the end of playback is reached.
18060 * @param ev The event
18061 */
18062declare var onended: ((this: Window, ev: Event) => any) | null;
18063/**
18064 * Fires when an error occurs during object loading.
18065 * @param ev The event.
18066 */
18067declare var onerror: OnErrorEventHandler;
18068/**
18069 * Fires when the object receives focus.
18070 * @param ev The event.
18071 */
18072declare var onfocus: ((this: Window, ev: FocusEvent) => any) | null;
18073declare var onformdata: ((this: Window, ev: FormDataEvent) => any) | null;
18074declare var ongotpointercapture: ((this: Window, ev: PointerEvent) => any) | null;
18075declare var oninput: ((this: Window, ev: Event) => any) | null;
18076declare var oninvalid: ((this: Window, ev: Event) => any) | null;
18077/**
18078 * Fires when the user presses a key.
18079 * @param ev The keyboard event
18080 */
18081declare var onkeydown: ((this: Window, ev: KeyboardEvent) => any) | null;
18082/**
18083 * Fires when the user presses an alphanumeric key.
18084 * @param ev The event.
18085 * @deprecated
18086 */
18087declare var onkeypress: ((this: Window, ev: KeyboardEvent) => any) | null;
18088/**
18089 * Fires when the user releases a key.
18090 * @param ev The keyboard event
18091 */
18092declare var onkeyup: ((this: Window, ev: KeyboardEvent) => any) | null;
18093/**
18094 * Fires immediately after the browser loads the object.
18095 * @param ev The event.
18096 */
18097declare var onload: ((this: Window, ev: Event) => any) | null;
18098/**
18099 * Occurs when media data is loaded at the current playback position.
18100 * @param ev The event.
18101 */
18102declare var onloadeddata: ((this: Window, ev: Event) => any) | null;
18103/**
18104 * Occurs when the duration and dimensions of the media have been determined.
18105 * @param ev The event.
18106 */
18107declare var onloadedmetadata: ((this: Window, ev: Event) => any) | null;
18108/**
18109 * Occurs when Internet Explorer begins looking for media data.
18110 * @param ev The event.
18111 */
18112declare var onloadstart: ((this: Window, ev: Event) => any) | null;
18113declare var onlostpointercapture: ((this: Window, ev: PointerEvent) => any) | null;
18114/**
18115 * Fires when the user clicks the object with either mouse button.
18116 * @param ev The mouse event.
18117 */
18118declare var onmousedown: ((this: Window, ev: MouseEvent) => any) | null;
18119declare var onmouseenter: ((this: Window, ev: MouseEvent) => any) | null;
18120declare var onmouseleave: ((this: Window, ev: MouseEvent) => any) | null;
18121/**
18122 * Fires when the user moves the mouse over the object.
18123 * @param ev The mouse event.
18124 */
18125declare var onmousemove: ((this: Window, ev: MouseEvent) => any) | null;
18126/**
18127 * Fires when the user moves the mouse pointer outside the boundaries of the object.
18128 * @param ev The mouse event.
18129 */
18130declare var onmouseout: ((this: Window, ev: MouseEvent) => any) | null;
18131/**
18132 * Fires when the user moves the mouse pointer into the object.
18133 * @param ev The mouse event.
18134 */
18135declare var onmouseover: ((this: Window, ev: MouseEvent) => any) | null;
18136/**
18137 * Fires when the user releases a mouse button while the mouse is over the object.
18138 * @param ev The mouse event.
18139 */
18140declare var onmouseup: ((this: Window, ev: MouseEvent) => any) | null;
18141/**
18142 * Occurs when playback is paused.
18143 * @param ev The event.
18144 */
18145declare var onpause: ((this: Window, ev: Event) => any) | null;
18146/**
18147 * Occurs when the play method is requested.
18148 * @param ev The event.
18149 */
18150declare var onplay: ((this: Window, ev: Event) => any) | null;
18151/**
18152 * Occurs when the audio or video has started playing.
18153 * @param ev The event.
18154 */
18155declare var onplaying: ((this: Window, ev: Event) => any) | null;
18156declare var onpointercancel: ((this: Window, ev: PointerEvent) => any) | null;
18157declare var onpointerdown: ((this: Window, ev: PointerEvent) => any) | null;
18158declare var onpointerenter: ((this: Window, ev: PointerEvent) => any) | null;
18159declare var onpointerleave: ((this: Window, ev: PointerEvent) => any) | null;
18160declare var onpointermove: ((this: Window, ev: PointerEvent) => any) | null;
18161declare var onpointerout: ((this: Window, ev: PointerEvent) => any) | null;
18162declare var onpointerover: ((this: Window, ev: PointerEvent) => any) | null;
18163declare var onpointerup: ((this: Window, ev: PointerEvent) => any) | null;
18164/**
18165 * Occurs to indicate progress while downloading media data.
18166 * @param ev The event.
18167 */
18168declare var onprogress: ((this: Window, ev: ProgressEvent) => any) | null;
18169/**
18170 * Occurs when the playback rate is increased or decreased.
18171 * @param ev The event.
18172 */
18173declare var onratechange: ((this: Window, ev: Event) => any) | null;
18174/**
18175 * Fires when the user resets a form.
18176 * @param ev The event.
18177 */
18178declare var onreset: ((this: Window, ev: Event) => any) | null;
18179declare var onresize: ((this: Window, ev: UIEvent) => any) | null;
18180/**
18181 * Fires when the user repositions the scroll box in the scroll bar on the object.
18182 * @param ev The event.
18183 */
18184declare var onscroll: ((this: Window, ev: Event) => any) | null;
18185declare var onsecuritypolicyviolation: ((this: Window, ev: SecurityPolicyViolationEvent) => any) | null;
18186/**
18187 * Occurs when the seek operation ends.
18188 * @param ev The event.
18189 */
18190declare var onseeked: ((this: Window, ev: Event) => any) | null;
18191/**
18192 * Occurs when the current playback position is moved.
18193 * @param ev The event.
18194 */
18195declare var onseeking: ((this: Window, ev: Event) => any) | null;
18196/**
18197 * Fires when the current selection changes.
18198 * @param ev The event.
18199 */
18200declare var onselect: ((this: Window, ev: Event) => any) | null;
18201declare var onselectionchange: ((this: Window, ev: Event) => any) | null;
18202declare var onselectstart: ((this: Window, ev: Event) => any) | null;
18203declare var onslotchange: ((this: Window, ev: Event) => any) | null;
18204/**
18205 * Occurs when the download has stopped.
18206 * @param ev The event.
18207 */
18208declare var onstalled: ((this: Window, ev: Event) => any) | null;
18209declare var onsubmit: ((this: Window, ev: SubmitEvent) => any) | null;
18210/**
18211 * Occurs if the load operation has been intentionally halted.
18212 * @param ev The event.
18213 */
18214declare var onsuspend: ((this: Window, ev: Event) => any) | null;
18215/**
18216 * Occurs to indicate the current playback position.
18217 * @param ev The event.
18218 */
18219declare var ontimeupdate: ((this: Window, ev: Event) => any) | null;
18220declare var ontoggle: ((this: Window, ev: Event) => any) | null;
18221declare var ontouchcancel: ((this: Window, ev: TouchEvent) => any) | null | undefined;
18222declare var ontouchend: ((this: Window, ev: TouchEvent) => any) | null | undefined;
18223declare var ontouchmove: ((this: Window, ev: TouchEvent) => any) | null | undefined;
18224declare var ontouchstart: ((this: Window, ev: TouchEvent) => any) | null | undefined;
18225declare var ontransitioncancel: ((this: Window, ev: TransitionEvent) => any) | null;
18226declare var ontransitionend: ((this: Window, ev: TransitionEvent) => any) | null;
18227declare var ontransitionrun: ((this: Window, ev: TransitionEvent) => any) | null;
18228declare var ontransitionstart: ((this: Window, ev: TransitionEvent) => any) | null;
18229/**
18230 * Occurs when the volume is changed, or playback is muted or unmuted.
18231 * @param ev The event.
18232 */
18233declare var onvolumechange: ((this: Window, ev: Event) => any) | null;
18234/**
18235 * Occurs when playback stops because the next frame of a video resource is not available.
18236 * @param ev The event.
18237 */
18238declare var onwaiting: ((this: Window, ev: Event) => any) | null;
18239/** @deprecated This is a legacy alias of `onanimationend`. */
18240declare var onwebkitanimationend: ((this: Window, ev: Event) => any) | null;
18241/** @deprecated This is a legacy alias of `onanimationiteration`. */
18242declare var onwebkitanimationiteration: ((this: Window, ev: Event) => any) | null;
18243/** @deprecated This is a legacy alias of `onanimationstart`. */
18244declare var onwebkitanimationstart: ((this: Window, ev: Event) => any) | null;
18245/** @deprecated This is a legacy alias of `ontransitionend`. */
18246declare var onwebkittransitionend: ((this: Window, ev: Event) => any) | null;
18247declare var onwheel: ((this: Window, ev: WheelEvent) => any) | null;
18248declare var onafterprint: ((this: Window, ev: Event) => any) | null;
18249declare var onbeforeprint: ((this: Window, ev: Event) => any) | null;
18250declare var onbeforeunload: ((this: Window, ev: BeforeUnloadEvent) => any) | null;
18251declare var ongamepadconnected: ((this: Window, ev: GamepadEvent) => any) | null;
18252declare var ongamepaddisconnected: ((this: Window, ev: GamepadEvent) => any) | null;
18253declare var onhashchange: ((this: Window, ev: HashChangeEvent) => any) | null;
18254declare var onlanguagechange: ((this: Window, ev: Event) => any) | null;
18255declare var onmessage: ((this: Window, ev: MessageEvent) => any) | null;
18256declare var onmessageerror: ((this: Window, ev: MessageEvent) => any) | null;
18257declare var onoffline: ((this: Window, ev: Event) => any) | null;
18258declare var ononline: ((this: Window, ev: Event) => any) | null;
18259declare var onpagehide: ((this: Window, ev: PageTransitionEvent) => any) | null;
18260declare var onpageshow: ((this: Window, ev: PageTransitionEvent) => any) | null;
18261declare var onpopstate: ((this: Window, ev: PopStateEvent) => any) | null;
18262declare var onrejectionhandled: ((this: Window, ev: PromiseRejectionEvent) => any) | null;
18263declare var onstorage: ((this: Window, ev: StorageEvent) => any) | null;
18264declare var onunhandledrejection: ((this: Window, ev: PromiseRejectionEvent) => any) | null;
18265declare var onunload: ((this: Window, ev: Event) => any) | null;
18266declare var localStorage: Storage;
18267/** Available only in secure contexts. */
18268declare var caches: CacheStorage;
18269declare var crossOriginIsolated: boolean;
18270declare var crypto: Crypto;
18271declare var indexedDB: IDBFactory;
18272declare var isSecureContext: boolean;
18273declare var origin: string;
18274declare var performance: Performance;
18275declare function atob(data: string): string;
18276declare function btoa(data: string): string;
18277declare function clearInterval(id: number | undefined): void;
18278declare function clearTimeout(id: number | undefined): void;
18279declare function createImageBitmap(image: ImageBitmapSource, options?: ImageBitmapOptions): Promise<ImageBitmap>;
18280declare function createImageBitmap(image: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number, options?: ImageBitmapOptions): Promise<ImageBitmap>;
18281declare function fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
18282declare function queueMicrotask(callback: VoidFunction): void;
18283declare function reportError(e: any): void;
18284declare function setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
18285declare function setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
18286declare function structuredClone(value: any, options?: StructuredSerializeOptions): any;
18287declare var sessionStorage: Storage;
18288declare function addEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
18289declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
18290declare function removeEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
18291declare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
18292type AlgorithmIdentifier = Algorithm | string;
18293type BigInteger = Uint8Array;
18294type BinaryData = ArrayBuffer | ArrayBufferView;
18295type BlobPart = BufferSource | Blob | string;
18296type BodyInit = ReadableStream | XMLHttpRequestBodyInit;
18297type BufferSource = ArrayBufferView | ArrayBuffer;
18298type COSEAlgorithmIdentifier = number;
18299type CSSNumberish = number;
18300type CanvasImageSource = HTMLOrSVGImageElement | HTMLVideoElement | HTMLCanvasElement | ImageBitmap | OffscreenCanvas;
18301type ClipboardItemData = Promise<string | Blob>;
18302type ClipboardItems = ClipboardItem[];
18303type ConstrainBoolean = boolean | ConstrainBooleanParameters;
18304type ConstrainDOMString = string | string[] | ConstrainDOMStringParameters;
18305type ConstrainDouble = number | ConstrainDoubleRange;
18306type ConstrainULong = number | ConstrainULongRange;
18307type DOMHighResTimeStamp = number;
18308type EpochTimeStamp = number;
18309type EventListenerOrEventListenerObject = EventListener | EventListenerObject;
18310type Float32List = Float32Array | GLfloat[];
18311type FormDataEntryValue = File | string;
18312type GLbitfield = number;
18313type GLboolean = boolean;
18314type GLclampf = number;
18315type GLenum = number;
18316type GLfloat = number;
18317type GLint = number;
18318type GLint64 = number;
18319type GLintptr = number;
18320type GLsizei = number;
18321type GLsizeiptr = number;
18322type GLuint = number;
18323type GLuint64 = number;
18324type HTMLOrSVGImageElement = HTMLImageElement | SVGImageElement;
18325type HTMLOrSVGScriptElement = HTMLScriptElement | SVGScriptElement;
18326type HashAlgorithmIdentifier = AlgorithmIdentifier;
18327type HeadersInit = [string, string][] | Record<string, string> | Headers;
18328type IDBValidKey = number | string | Date | BufferSource | IDBValidKey[];
18329type ImageBitmapSource = CanvasImageSource | Blob | ImageData;
18330type InsertPosition = "beforebegin" | "afterbegin" | "beforeend" | "afterend";
18331type Int32List = Int32Array | GLint[];
18332type LineAndPositionSetting = number | AutoKeyword;
18333type MediaProvider = MediaStream | MediaSource | Blob;
18334type MessageEventSource = WindowProxy | MessagePort | ServiceWorker;
18335type MutationRecordType = "attributes" | "characterData" | "childList";
18336type NamedCurve = string;
18337type OffscreenRenderingContext = OffscreenCanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext;
18338type OnBeforeUnloadEventHandler = OnBeforeUnloadEventHandlerNonNull | null;
18339type OnErrorEventHandler = OnErrorEventHandlerNonNull | null;
18340type PerformanceEntryList = PerformanceEntry[];
18341type ReadableStreamController<T> = ReadableStreamDefaultController<T> | ReadableByteStreamController;
18342type ReadableStreamReadResult<T> = ReadableStreamReadValueResult<T> | ReadableStreamReadDoneResult<T>;
18343type ReadableStreamReader<T> = ReadableStreamDefaultReader<T> | ReadableStreamBYOBReader;
18344type RenderingContext = CanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext;
18345type RequestInfo = Request | string;
18346type TexImageSource = ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas;
18347type TimerHandler = string | Function;
18348type Transferable = OffscreenCanvas | ImageBitmap | MessagePort | ReadableStream | WritableStream | TransformStream | ArrayBuffer;
18349type Uint32List = Uint32Array | GLuint[];
18350type VibratePattern = number | number[];
18351type WindowProxy = Window;
18352type XMLHttpRequestBodyInit = Blob | BufferSource | FormData | URLSearchParams | string;
18353type AlignSetting = "center" | "end" | "left" | "right" | "start";
18354type AnimationPlayState = "finished" | "idle" | "paused" | "running";
18355type AnimationReplaceState = "active" | "persisted" | "removed";
18356type AppendMode = "segments" | "sequence";
18357type AttestationConveyancePreference = "direct" | "enterprise" | "indirect" | "none";
18358type AudioContextLatencyCategory = "balanced" | "interactive" | "playback";
18359type AudioContextState = "closed" | "running" | "suspended";
18360type AuthenticatorAttachment = "cross-platform" | "platform";
18361type AuthenticatorTransport = "ble" | "hybrid" | "internal" | "nfc" | "usb";
18362type AutoKeyword = "auto";
18363type AutomationRate = "a-rate" | "k-rate";
18364type BinaryType = "arraybuffer" | "blob";
18365type BiquadFilterType = "allpass" | "bandpass" | "highpass" | "highshelf" | "lowpass" | "lowshelf" | "notch" | "peaking";
18366type CanPlayTypeResult = "" | "maybe" | "probably";
18367type CanvasDirection = "inherit" | "ltr" | "rtl";
18368type CanvasFillRule = "evenodd" | "nonzero";
18369type CanvasFontKerning = "auto" | "none" | "normal";
18370type CanvasFontStretch = "condensed" | "expanded" | "extra-condensed" | "extra-expanded" | "normal" | "semi-condensed" | "semi-expanded" | "ultra-condensed" | "ultra-expanded";
18371type CanvasFontVariantCaps = "all-petite-caps" | "all-small-caps" | "normal" | "petite-caps" | "small-caps" | "titling-caps" | "unicase";
18372type CanvasLineCap = "butt" | "round" | "square";
18373type CanvasLineJoin = "bevel" | "miter" | "round";
18374type CanvasTextAlign = "center" | "end" | "left" | "right" | "start";
18375type CanvasTextBaseline = "alphabetic" | "bottom" | "hanging" | "ideographic" | "middle" | "top";
18376type CanvasTextRendering = "auto" | "geometricPrecision" | "optimizeLegibility" | "optimizeSpeed";
18377type ChannelCountMode = "clamped-max" | "explicit" | "max";
18378type ChannelInterpretation = "discrete" | "speakers";
18379type ClientTypes = "all" | "sharedworker" | "window" | "worker";
18380type ColorGamut = "p3" | "rec2020" | "srgb";
18381type ColorSpaceConversion = "default" | "none";
18382type CompositeOperation = "accumulate" | "add" | "replace";
18383type CompositeOperationOrAuto = "accumulate" | "add" | "auto" | "replace";
18384type CredentialMediationRequirement = "optional" | "required" | "silent";
18385type DOMParserSupportedType = "application/xhtml+xml" | "application/xml" | "image/svg+xml" | "text/html" | "text/xml";
18386type DirectionSetting = "" | "lr" | "rl";
18387type DisplayCaptureSurfaceType = "browser" | "monitor" | "window";
18388type DistanceModelType = "exponential" | "inverse" | "linear";
18389type DocumentReadyState = "complete" | "interactive" | "loading";
18390type DocumentVisibilityState = "hidden" | "visible";
18391type EndOfStreamError = "decode" | "network";
18392type EndingType = "native" | "transparent";
18393type FileSystemHandleKind = "directory" | "file";
18394type FillMode = "auto" | "backwards" | "both" | "forwards" | "none";
18395type FontFaceLoadStatus = "error" | "loaded" | "loading" | "unloaded";
18396type FontFaceSetLoadStatus = "loaded" | "loading";
18397type FullscreenNavigationUI = "auto" | "hide" | "show";
18398type GamepadHapticActuatorType = "vibration";
18399type GamepadMappingType = "" | "standard" | "xr-standard";
18400type GlobalCompositeOperation = "color" | "color-burn" | "color-dodge" | "copy" | "darken" | "destination-atop" | "destination-in" | "destination-out" | "destination-over" | "difference" | "exclusion" | "hard-light" | "hue" | "lighten" | "lighter" | "luminosity" | "multiply" | "overlay" | "saturation" | "screen" | "soft-light" | "source-atop" | "source-in" | "source-out" | "source-over" | "xor";
18401type HdrMetadataType = "smpteSt2086" | "smpteSt2094-10" | "smpteSt2094-40";
18402type IDBCursorDirection = "next" | "nextunique" | "prev" | "prevunique";
18403type IDBRequestReadyState = "done" | "pending";
18404type IDBTransactionDurability = "default" | "relaxed" | "strict";
18405type IDBTransactionMode = "readonly" | "readwrite" | "versionchange";
18406type ImageOrientation = "flipY" | "none";
18407type ImageSmoothingQuality = "high" | "low" | "medium";
18408type IterationCompositeOperation = "accumulate" | "replace";
18409type KeyFormat = "jwk" | "pkcs8" | "raw" | "spki";
18410type KeyType = "private" | "public" | "secret";
18411type KeyUsage = "decrypt" | "deriveBits" | "deriveKey" | "encrypt" | "sign" | "unwrapKey" | "verify" | "wrapKey";
18412type LineAlignSetting = "center" | "end" | "start";
18413type LockMode = "exclusive" | "shared";
18414type MediaDecodingType = "file" | "media-source" | "webrtc";
18415type MediaDeviceKind = "audioinput" | "audiooutput" | "videoinput";
18416type MediaEncodingType = "record" | "webrtc";
18417type MediaKeyMessageType = "individualization-request" | "license-release" | "license-renewal" | "license-request";
18418type MediaKeySessionClosedReason = "closed-by-application" | "hardware-context-reset" | "internal-error" | "release-acknowledged" | "resource-evicted";
18419type MediaKeySessionType = "persistent-license" | "temporary";
18420type MediaKeyStatus = "expired" | "internal-error" | "output-downscaled" | "output-restricted" | "released" | "status-pending" | "usable" | "usable-in-future";
18421type MediaKeysRequirement = "not-allowed" | "optional" | "required";
18422type MediaSessionAction = "nexttrack" | "pause" | "play" | "previoustrack" | "seekbackward" | "seekforward" | "seekto" | "skipad" | "stop";
18423type MediaSessionPlaybackState = "none" | "paused" | "playing";
18424type MediaStreamTrackState = "ended" | "live";
18425type NavigationTimingType = "back_forward" | "navigate" | "prerender" | "reload";
18426type NotificationDirection = "auto" | "ltr" | "rtl";
18427type NotificationPermission = "default" | "denied" | "granted";
18428type OffscreenRenderingContextId = "2d" | "bitmaprenderer" | "webgl" | "webgl2" | "webgpu";
18429type OrientationLockType = "any" | "landscape" | "landscape-primary" | "landscape-secondary" | "natural" | "portrait" | "portrait-primary" | "portrait-secondary";
18430type OrientationType = "landscape-primary" | "landscape-secondary" | "portrait-primary" | "portrait-secondary";
18431type OscillatorType = "custom" | "sawtooth" | "sine" | "square" | "triangle";
18432type OverSampleType = "2x" | "4x" | "none";
18433type PanningModelType = "HRTF" | "equalpower";
18434type PaymentComplete = "fail" | "success" | "unknown";
18435type PermissionName = "geolocation" | "notifications" | "persistent-storage" | "push" | "screen-wake-lock" | "xr-spatial-tracking";
18436type PermissionState = "denied" | "granted" | "prompt";
18437type PlaybackDirection = "alternate" | "alternate-reverse" | "normal" | "reverse";
18438type PositionAlignSetting = "auto" | "center" | "line-left" | "line-right";
18439type PredefinedColorSpace = "display-p3" | "srgb";
18440type PremultiplyAlpha = "default" | "none" | "premultiply";
18441type PresentationStyle = "attachment" | "inline" | "unspecified";
18442type PublicKeyCredentialType = "public-key";
18443type PushEncryptionKeyName = "auth" | "p256dh";
18444type RTCBundlePolicy = "balanced" | "max-bundle" | "max-compat";
18445type RTCDataChannelState = "closed" | "closing" | "connecting" | "open";
18446type RTCDegradationPreference = "balanced" | "maintain-framerate" | "maintain-resolution";
18447type RTCDtlsTransportState = "closed" | "connected" | "connecting" | "failed" | "new";
18448type RTCEncodedVideoFrameType = "delta" | "empty" | "key";
18449type RTCErrorDetailType = "data-channel-failure" | "dtls-failure" | "fingerprint-failure" | "hardware-encoder-error" | "hardware-encoder-not-available" | "sctp-failure" | "sdp-syntax-error";
18450type RTCIceCandidateType = "host" | "prflx" | "relay" | "srflx";
18451type RTCIceComponent = "rtcp" | "rtp";
18452type RTCIceConnectionState = "checking" | "closed" | "completed" | "connected" | "disconnected" | "failed" | "new";
18453type RTCIceGathererState = "complete" | "gathering" | "new";
18454type RTCIceGatheringState = "complete" | "gathering" | "new";
18455type RTCIceProtocol = "tcp" | "udp";
18456type RTCIceTcpCandidateType = "active" | "passive" | "so";
18457type RTCIceTransportPolicy = "all" | "relay";
18458type RTCIceTransportState = "checking" | "closed" | "completed" | "connected" | "disconnected" | "failed" | "new";
18459type RTCPeerConnectionState = "closed" | "connected" | "connecting" | "disconnected" | "failed" | "new";
18460type RTCPriorityType = "high" | "low" | "medium" | "very-low";
18461type RTCRtcpMuxPolicy = "require";
18462type RTCRtpTransceiverDirection = "inactive" | "recvonly" | "sendonly" | "sendrecv" | "stopped";
18463type RTCSctpTransportState = "closed" | "connected" | "connecting";
18464type RTCSdpType = "answer" | "offer" | "pranswer" | "rollback";
18465type RTCSignalingState = "closed" | "have-local-offer" | "have-local-pranswer" | "have-remote-offer" | "have-remote-pranswer" | "stable";
18466type RTCStatsIceCandidatePairState = "failed" | "frozen" | "in-progress" | "inprogress" | "succeeded" | "waiting";
18467type RTCStatsType = "candidate-pair" | "certificate" | "codec" | "data-channel" | "inbound-rtp" | "local-candidate" | "media-source" | "outbound-rtp" | "peer-connection" | "remote-candidate" | "remote-inbound-rtp" | "remote-outbound-rtp" | "track" | "transport";
18468type ReadableStreamReaderMode = "byob";
18469type ReadableStreamType = "bytes";
18470type ReadyState = "closed" | "ended" | "open";
18471type RecordingState = "inactive" | "paused" | "recording";
18472type ReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
18473type RemotePlaybackState = "connected" | "connecting" | "disconnected";
18474type RequestCache = "default" | "force-cache" | "no-cache" | "no-store" | "only-if-cached" | "reload";
18475type RequestCredentials = "include" | "omit" | "same-origin";
18476type RequestDestination = "" | "audio" | "audioworklet" | "document" | "embed" | "font" | "frame" | "iframe" | "image" | "manifest" | "object" | "paintworklet" | "report" | "script" | "sharedworker" | "style" | "track" | "video" | "worker" | "xslt";
18477type RequestMode = "cors" | "navigate" | "no-cors" | "same-origin";
18478type RequestRedirect = "error" | "follow" | "manual";
18479type ResidentKeyRequirement = "discouraged" | "preferred" | "required";
18480type ResizeObserverBoxOptions = "border-box" | "content-box" | "device-pixel-content-box";
18481type ResizeQuality = "high" | "low" | "medium" | "pixelated";
18482type ResponseType = "basic" | "cors" | "default" | "error" | "opaque" | "opaqueredirect";
18483type ScrollBehavior = "auto" | "smooth";
18484type ScrollLogicalPosition = "center" | "end" | "nearest" | "start";
18485type ScrollRestoration = "auto" | "manual";
18486type ScrollSetting = "" | "up";
18487type SecurityPolicyViolationEventDisposition = "enforce" | "report";
18488type SelectionMode = "end" | "preserve" | "select" | "start";
18489type ServiceWorkerState = "activated" | "activating" | "installed" | "installing" | "parsed" | "redundant";
18490type ServiceWorkerUpdateViaCache = "all" | "imports" | "none";
18491type ShadowRootMode = "closed" | "open";
18492type SlotAssignmentMode = "manual" | "named";
18493type SpeechSynthesisErrorCode = "audio-busy" | "audio-hardware" | "canceled" | "interrupted" | "invalid-argument" | "language-unavailable" | "network" | "not-allowed" | "synthesis-failed" | "synthesis-unavailable" | "text-too-long" | "voice-unavailable";
18494type TextTrackKind = "captions" | "chapters" | "descriptions" | "metadata" | "subtitles";
18495type TextTrackMode = "disabled" | "hidden" | "showing";
18496type TouchType = "direct" | "stylus";
18497type TransferFunction = "hlg" | "pq" | "srgb";
18498type UserVerificationRequirement = "discouraged" | "preferred" | "required";
18499type VideoColorPrimaries = "bt470bg" | "bt709" | "smpte170m";
18500type VideoFacingModeEnum = "environment" | "left" | "right" | "user";
18501type VideoMatrixCoefficients = "bt470bg" | "bt709" | "rgb" | "smpte170m";
18502type VideoTransferCharacteristics = "bt709" | "iec61966-2-1" | "smpte170m";
18503type WebGLPowerPreference = "default" | "high-performance" | "low-power";
18504type WorkerType = "classic" | "module";
18505type XMLHttpRequestResponseType = "" | "arraybuffer" | "blob" | "document" | "json" | "text";
18506