• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/////////////////////////////
2/// DOM APIs
3/////////////////////////////
4
5interface Account {
6    displayName: string;
7    id: string;
8    imageURL?: string;
9    name?: string;
10    rpDisplayName: string;
11}
12
13interface AddEventListenerOptions extends EventListenerOptions {
14    once?: boolean;
15    passive?: boolean;
16}
17
18interface AesCbcParams extends Algorithm {
19    iv: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;
20}
21
22interface AesCtrParams extends Algorithm {
23    counter: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;
24    length: number;
25}
26
27interface AesDerivedKeyParams extends Algorithm {
28    length: number;
29}
30
31interface AesGcmParams extends Algorithm {
32    additionalData?: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;
33    iv: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;
34    tagLength?: number;
35}
36
37interface AesKeyAlgorithm extends KeyAlgorithm {
38    length: number;
39}
40
41interface AesKeyGenParams extends Algorithm {
42    length: number;
43}
44
45interface Algorithm {
46    name: string;
47}
48
49interface AnalyserOptions extends AudioNodeOptions {
50    fftSize?: number;
51    maxDecibels?: number;
52    minDecibels?: number;
53    smoothingTimeConstant?: number;
54}
55
56interface AnimationEventInit extends EventInit {
57    animationName?: string;
58    elapsedTime?: number;
59    pseudoElement?: string;
60}
61
62interface AnimationPlaybackEventInit extends EventInit {
63    currentTime?: number | null;
64    timelineTime?: number | null;
65}
66
67interface AssertionOptions {
68    allowList?: ScopedCredentialDescriptor[];
69    extensions?: WebAuthnExtensions;
70    rpId?: string;
71    timeoutSeconds?: number;
72}
73
74interface AssignedNodesOptions {
75    flatten?: boolean;
76}
77
78interface AudioBufferOptions {
79    length: number;
80    numberOfChannels?: number;
81    sampleRate: number;
82}
83
84interface AudioBufferSourceOptions {
85    buffer?: AudioBuffer | null;
86    detune?: number;
87    loop?: boolean;
88    loopEnd?: number;
89    loopStart?: number;
90    playbackRate?: number;
91}
92
93interface AudioContextInfo {
94    currentTime?: number;
95    sampleRate?: number;
96}
97
98interface AudioContextOptions {
99    latencyHint?: AudioContextLatencyCategory | number;
100    sampleRate?: number;
101}
102
103interface AudioNodeOptions {
104    channelCount?: number;
105    channelCountMode?: ChannelCountMode;
106    channelInterpretation?: ChannelInterpretation;
107}
108
109interface AudioParamDescriptor {
110    automationRate?: AutomationRate;
111    defaultValue?: number;
112    maxValue?: number;
113    minValue?: number;
114    name: string;
115}
116
117interface AudioProcessingEventInit extends EventInit {
118    inputBuffer: AudioBuffer;
119    outputBuffer: AudioBuffer;
120    playbackTime: number;
121}
122
123interface AudioTimestamp {
124    contextTime?: number;
125    performanceTime?: number;
126}
127
128interface AudioWorkletNodeOptions extends AudioNodeOptions {
129    numberOfInputs?: number;
130    numberOfOutputs?: number;
131    outputChannelCount?: number[];
132    parameterData?: Record<string, number>;
133    processorOptions?: any;
134}
135
136interface AuthenticationExtensionsClientInputs {
137    appid?: string;
138    appidExclude?: string;
139    credProps?: boolean;
140    uvm?: boolean;
141}
142
143interface AuthenticationExtensionsClientOutputs {
144    appid?: boolean;
145    credProps?: CredentialPropertiesOutput;
146    uvm?: UvmEntries;
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 BlobPropertyBag {
165    endings?: EndingType;
166    type?: string;
167}
168
169interface ByteLengthChunk {
170    byteLength?: number;
171}
172
173interface CacheQueryOptions {
174    ignoreMethod?: boolean;
175    ignoreSearch?: boolean;
176    ignoreVary?: boolean;
177}
178
179interface CanvasRenderingContext2DSettings {
180    alpha?: boolean;
181    desynchronized?: boolean;
182}
183
184interface ChannelMergerOptions extends AudioNodeOptions {
185    numberOfInputs?: number;
186}
187
188interface ChannelSplitterOptions extends AudioNodeOptions {
189    numberOfOutputs?: number;
190}
191
192interface ClientData {
193    challenge: string;
194    extensions?: WebAuthnExtensions;
195    hashAlg: string | Algorithm;
196    origin: string;
197    rpId: string;
198    tokenBinding?: string;
199}
200
201interface ClientQueryOptions {
202    includeUncontrolled?: boolean;
203    type?: ClientTypes;
204}
205
206interface ClipboardEventInit extends EventInit {
207    clipboardData?: DataTransfer | null;
208}
209
210interface CloseEventInit extends EventInit {
211    code?: number;
212    reason?: string;
213    wasClean?: boolean;
214}
215
216interface CompositionEventInit extends UIEventInit {
217    data?: string;
218}
219
220interface ComputedEffectTiming extends EffectTiming {
221    activeDuration?: number;
222    currentIteration?: number | null;
223    endTime?: number;
224    localTime?: number | null;
225    progress?: number | null;
226}
227
228interface ComputedKeyframe {
229    composite: CompositeOperationOrAuto;
230    computedOffset: number;
231    easing: string;
232    offset: number | null;
233    [property: string]: string | number | null | undefined;
234}
235
236interface ConfirmSiteSpecificExceptionsInformation extends ExceptionInformation {
237    arrayOfDomainStrings?: string[];
238}
239
240interface ConstantSourceOptions {
241    offset?: number;
242}
243
244interface ConstrainBooleanParameters {
245    exact?: boolean;
246    ideal?: boolean;
247}
248
249interface ConstrainDOMStringParameters {
250    exact?: string | string[];
251    ideal?: string | string[];
252}
253
254interface ConstrainDoubleRange extends DoubleRange {
255    exact?: number;
256    ideal?: number;
257}
258
259interface ConstrainULongRange extends ULongRange {
260    exact?: number;
261    ideal?: number;
262}
263
264interface ConstrainVideoFacingModeParameters {
265    exact?: VideoFacingModeEnum | VideoFacingModeEnum[];
266    ideal?: VideoFacingModeEnum | VideoFacingModeEnum[];
267}
268
269interface ConvolverOptions extends AudioNodeOptions {
270    buffer?: AudioBuffer | null;
271    disableNormalization?: boolean;
272}
273
274interface CredentialCreationOptions {
275    publicKey?: PublicKeyCredentialCreationOptions;
276    signal?: AbortSignal;
277}
278
279interface CredentialPropertiesOutput {
280    rk?: boolean;
281}
282
283interface CredentialRequestOptions {
284    mediation?: CredentialMediationRequirement;
285    publicKey?: PublicKeyCredentialRequestOptions;
286    signal?: AbortSignal;
287}
288
289interface CustomEventInit<T = any> extends EventInit {
290    detail?: T;
291}
292
293interface DOMMatrix2DInit {
294    a?: number;
295    b?: number;
296    c?: number;
297    d?: number;
298    e?: number;
299    f?: number;
300    m11?: number;
301    m12?: number;
302    m21?: number;
303    m22?: number;
304    m41?: number;
305    m42?: number;
306}
307
308interface DOMMatrixInit extends DOMMatrix2DInit {
309    is2D?: boolean;
310    m13?: number;
311    m14?: number;
312    m23?: number;
313    m24?: number;
314    m31?: number;
315    m32?: number;
316    m33?: number;
317    m34?: number;
318    m43?: number;
319    m44?: number;
320}
321
322interface DOMPointInit {
323    w?: number;
324    x?: number;
325    y?: number;
326    z?: number;
327}
328
329interface DOMQuadInit {
330    p1?: DOMPointInit;
331    p2?: DOMPointInit;
332    p3?: DOMPointInit;
333    p4?: DOMPointInit;
334}
335
336interface DOMRectInit {
337    height?: number;
338    width?: number;
339    x?: number;
340    y?: number;
341}
342
343interface DelayOptions extends AudioNodeOptions {
344    delayTime?: number;
345    maxDelayTime?: number;
346}
347
348interface DeviceLightEventInit extends EventInit {
349    value?: number;
350}
351
352interface DeviceMotionEventAccelerationInit {
353    x?: number | null;
354    y?: number | null;
355    z?: number | null;
356}
357
358interface DeviceMotionEventInit extends EventInit {
359    acceleration?: DeviceMotionEventAccelerationInit;
360    accelerationIncludingGravity?: DeviceMotionEventAccelerationInit;
361    interval?: number;
362    rotationRate?: DeviceMotionEventRotationRateInit;
363}
364
365interface DeviceMotionEventRotationRateInit {
366    alpha?: number | null;
367    beta?: number | null;
368    gamma?: number | null;
369}
370
371interface DeviceOrientationEventInit extends EventInit {
372    absolute?: boolean;
373    alpha?: number | null;
374    beta?: number | null;
375    gamma?: number | null;
376}
377
378interface DevicePermissionDescriptor extends PermissionDescriptor {
379    deviceId?: string;
380    name: "camera" | "microphone" | "speaker";
381}
382
383interface DocumentTimelineOptions {
384    originTime?: number;
385}
386
387interface DoubleRange {
388    max?: number;
389    min?: number;
390}
391
392interface DragEventInit extends MouseEventInit {
393    dataTransfer?: DataTransfer | null;
394}
395
396interface DynamicsCompressorOptions extends AudioNodeOptions {
397    attack?: number;
398    knee?: number;
399    ratio?: number;
400    release?: number;
401    threshold?: number;
402}
403
404interface EcKeyAlgorithm extends KeyAlgorithm {
405    namedCurve: NamedCurve;
406}
407
408interface EcKeyGenParams extends Algorithm {
409    namedCurve: NamedCurve;
410}
411
412interface EcKeyImportParams extends Algorithm {
413    namedCurve: NamedCurve;
414}
415
416interface EcdhKeyDeriveParams extends Algorithm {
417    public: CryptoKey;
418}
419
420interface EcdsaParams extends Algorithm {
421    hash: HashAlgorithmIdentifier;
422}
423
424interface EffectTiming {
425    delay?: number;
426    direction?: PlaybackDirection;
427    duration?: number | string;
428    easing?: string;
429    endDelay?: number;
430    fill?: FillMode;
431    iterationStart?: number;
432    iterations?: number;
433}
434
435interface ElementCreationOptions {
436    is?: string;
437}
438
439interface ElementDefinitionOptions {
440    extends?: string;
441}
442
443interface ErrorEventInit extends EventInit {
444    colno?: number;
445    error?: any;
446    filename?: string;
447    lineno?: number;
448    message?: string;
449}
450
451interface EventInit {
452    bubbles?: boolean;
453    cancelable?: boolean;
454    composed?: boolean;
455}
456
457interface EventListenerOptions {
458    capture?: boolean;
459}
460
461interface EventModifierInit extends UIEventInit {
462    altKey?: boolean;
463    ctrlKey?: boolean;
464    metaKey?: boolean;
465    modifierAltGraph?: boolean;
466    modifierCapsLock?: boolean;
467    modifierFn?: boolean;
468    modifierFnLock?: boolean;
469    modifierHyper?: boolean;
470    modifierNumLock?: boolean;
471    modifierScrollLock?: boolean;
472    modifierSuper?: boolean;
473    modifierSymbol?: boolean;
474    modifierSymbolLock?: boolean;
475    shiftKey?: boolean;
476}
477
478interface EventSourceInit {
479    withCredentials?: boolean;
480}
481
482interface ExceptionInformation {
483    domain?: string | null;
484}
485
486interface FilePropertyBag extends BlobPropertyBag {
487    lastModified?: number;
488}
489
490interface FocusEventInit extends UIEventInit {
491    relatedTarget?: EventTarget | null;
492}
493
494interface FocusNavigationEventInit extends EventInit {
495    navigationReason?: string | null;
496    originHeight?: number;
497    originLeft?: number;
498    originTop?: number;
499    originWidth?: number;
500}
501
502interface FocusNavigationOrigin {
503    originHeight?: number;
504    originLeft?: number;
505    originTop?: number;
506    originWidth?: number;
507}
508
509interface FocusOptions {
510    preventScroll?: boolean;
511}
512
513interface FullscreenOptions {
514    navigationUI?: FullscreenNavigationUI;
515}
516
517interface GainOptions extends AudioNodeOptions {
518    gain?: number;
519}
520
521interface GamepadEventInit extends EventInit {
522    gamepad: Gamepad;
523}
524
525interface GetNotificationOptions {
526    tag?: string;
527}
528
529interface GetRootNodeOptions {
530    composed?: boolean;
531}
532
533interface HashChangeEventInit extends EventInit {
534    newURL?: string;
535    oldURL?: string;
536}
537
538interface HkdfParams extends Algorithm {
539    hash: HashAlgorithmIdentifier;
540    info: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;
541    salt: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;
542}
543
544interface HmacImportParams extends Algorithm {
545    hash: HashAlgorithmIdentifier;
546    length?: number;
547}
548
549interface HmacKeyAlgorithm extends KeyAlgorithm {
550    hash: KeyAlgorithm;
551    length: number;
552}
553
554interface HmacKeyGenParams extends Algorithm {
555    hash: HashAlgorithmIdentifier;
556    length?: number;
557}
558
559interface IDBIndexParameters {
560    multiEntry?: boolean;
561    unique?: boolean;
562}
563
564interface IDBObjectStoreParameters {
565    autoIncrement?: boolean;
566    keyPath?: string | string[] | null;
567}
568
569interface IDBVersionChangeEventInit extends EventInit {
570    newVersion?: number | null;
571    oldVersion?: number;
572}
573
574interface IIRFilterOptions extends AudioNodeOptions {
575    feedback: number[];
576    feedforward: number[];
577}
578
579interface ImageBitmapOptions {
580    colorSpaceConversion?: ColorSpaceConversion;
581    imageOrientation?: ImageOrientation;
582    premultiplyAlpha?: PremultiplyAlpha;
583    resizeHeight?: number;
584    resizeQuality?: ResizeQuality;
585    resizeWidth?: number;
586}
587
588interface ImageBitmapRenderingContextSettings {
589    alpha?: boolean;
590}
591
592interface ImageEncodeOptions {
593    quality?: number;
594    type?: string;
595}
596
597interface ImportMeta {
598    url: string;
599}
600
601interface InputEventInit extends UIEventInit {
602    data?: string | null;
603    inputType?: string;
604    isComposing?: boolean;
605}
606
607interface IntersectionObserverEntryInit {
608    boundingClientRect: DOMRectInit;
609    intersectionRatio: number;
610    intersectionRect: DOMRectInit;
611    isIntersecting: boolean;
612    rootBounds: DOMRectInit | null;
613    target: Element;
614    time: number;
615}
616
617interface IntersectionObserverInit {
618    root?: Element | Document | null;
619    rootMargin?: string;
620    threshold?: number | number[];
621}
622
623interface JsonWebKey {
624    alg?: string;
625    crv?: string;
626    d?: string;
627    dp?: string;
628    dq?: string;
629    e?: string;
630    ext?: boolean;
631    k?: string;
632    key_ops?: string[];
633    kty?: string;
634    n?: string;
635    oth?: RsaOtherPrimesInfo[];
636    p?: string;
637    q?: string;
638    qi?: string;
639    use?: string;
640    x?: string;
641    y?: string;
642}
643
644interface KeyAlgorithm {
645    name: string;
646}
647
648interface KeyboardEventInit extends EventModifierInit {
649    /** @deprecated */
650    charCode?: number;
651    code?: string;
652    isComposing?: boolean;
653    key?: string;
654    /** @deprecated */
655    keyCode?: number;
656    location?: number;
657    repeat?: boolean;
658}
659
660interface Keyframe {
661    composite?: CompositeOperationOrAuto;
662    easing?: string;
663    offset?: number | null;
664    [property: string]: string | number | null | undefined;
665}
666
667interface KeyframeAnimationOptions extends KeyframeEffectOptions {
668    id?: string;
669}
670
671interface KeyframeEffectOptions extends EffectTiming {
672    composite?: CompositeOperation;
673    iterationComposite?: IterationCompositeOperation;
674}
675
676interface MediaElementAudioSourceOptions {
677    mediaElement: HTMLMediaElement;
678}
679
680interface MediaEncryptedEventInit extends EventInit {
681    initData?: ArrayBuffer | null;
682    initDataType?: string;
683}
684
685interface MediaKeyMessageEventInit extends EventInit {
686    message: ArrayBuffer;
687    messageType: MediaKeyMessageType;
688}
689
690interface MediaKeySystemConfiguration {
691    audioCapabilities?: MediaKeySystemMediaCapability[];
692    distinctiveIdentifier?: MediaKeysRequirement;
693    initDataTypes?: string[];
694    label?: string;
695    persistentState?: MediaKeysRequirement;
696    sessionTypes?: string[];
697    videoCapabilities?: MediaKeySystemMediaCapability[];
698}
699
700interface MediaKeySystemMediaCapability {
701    contentType?: string;
702    robustness?: string;
703}
704
705interface MediaQueryListEventInit extends EventInit {
706    matches?: boolean;
707    media?: string;
708}
709
710interface MediaStreamAudioSourceOptions {
711    mediaStream: MediaStream;
712}
713
714interface MediaStreamConstraints {
715    audio?: boolean | MediaTrackConstraints;
716    peerIdentity?: string;
717    video?: boolean | MediaTrackConstraints;
718}
719
720interface MediaStreamErrorEventInit extends EventInit {
721    error?: MediaStreamError | null;
722}
723
724interface MediaStreamEventInit extends EventInit {
725    stream?: MediaStream;
726}
727
728interface MediaStreamTrackAudioSourceOptions {
729    mediaStreamTrack: MediaStreamTrack;
730}
731
732interface MediaStreamTrackEventInit extends EventInit {
733    track: MediaStreamTrack;
734}
735
736interface MediaTrackCapabilities {
737    aspectRatio?: DoubleRange;
738    autoGainControl?: boolean[];
739    channelCount?: ULongRange;
740    deviceId?: string;
741    echoCancellation?: boolean[];
742    facingMode?: string[];
743    frameRate?: DoubleRange;
744    groupId?: string;
745    height?: ULongRange;
746    latency?: DoubleRange;
747    noiseSuppression?: boolean[];
748    resizeMode?: string[];
749    sampleRate?: ULongRange;
750    sampleSize?: ULongRange;
751    width?: ULongRange;
752}
753
754interface MediaTrackConstraintSet {
755    aspectRatio?: ConstrainDouble;
756    autoGainControl?: ConstrainBoolean;
757    channelCount?: ConstrainULong;
758    deviceId?: ConstrainDOMString;
759    echoCancellation?: ConstrainBoolean;
760    facingMode?: ConstrainDOMString;
761    frameRate?: ConstrainDouble;
762    groupId?: ConstrainDOMString;
763    height?: ConstrainULong;
764    latency?: ConstrainDouble;
765    noiseSuppression?: ConstrainBoolean;
766    resizeMode?: ConstrainDOMString;
767    sampleRate?: ConstrainULong;
768    sampleSize?: ConstrainULong;
769    width?: ConstrainULong;
770}
771
772interface MediaTrackConstraints extends MediaTrackConstraintSet {
773    advanced?: MediaTrackConstraintSet[];
774}
775
776interface MediaTrackSettings {
777    aspectRatio?: number;
778    autoGainControl?: boolean;
779    channelCount?: number;
780    deviceId?: string;
781    echoCancellation?: boolean;
782    facingMode?: string;
783    frameRate?: number;
784    groupId?: string;
785    height?: number;
786    latency?: number;
787    noiseSuppression?: boolean;
788    resizeMode?: string;
789    sampleRate?: number;
790    sampleSize?: number;
791    width?: number;
792}
793
794interface MediaTrackSupportedConstraints {
795    aspectRatio?: boolean;
796    autoGainControl?: boolean;
797    channelCount?: boolean;
798    deviceId?: boolean;
799    echoCancellation?: boolean;
800    facingMode?: boolean;
801    frameRate?: boolean;
802    groupId?: boolean;
803    height?: boolean;
804    latency?: boolean;
805    noiseSuppression?: boolean;
806    resizeMode?: boolean;
807    sampleRate?: boolean;
808    sampleSize?: boolean;
809    width?: boolean;
810}
811
812interface MessageEventInit<T = any> extends EventInit {
813    data?: T;
814    lastEventId?: string;
815    origin?: string;
816    ports?: MessagePort[];
817    source?: MessageEventSource | null;
818}
819
820interface MidiPermissionDescriptor extends PermissionDescriptor {
821    name: "midi";
822    sysex?: boolean;
823}
824
825interface MouseEventInit extends EventModifierInit {
826    button?: number;
827    buttons?: number;
828    clientX?: number;
829    clientY?: number;
830    movementX?: number;
831    movementY?: number;
832    relatedTarget?: EventTarget | null;
833    screenX?: number;
834    screenY?: number;
835}
836
837interface MultiCacheQueryOptions extends CacheQueryOptions {
838    cacheName?: string;
839}
840
841interface MutationObserverInit {
842    /**
843     * 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.
844     */
845    attributeFilter?: string[];
846    /**
847     * Set to true if attributes is true or omitted and target's attribute value before the mutation needs to be recorded.
848     */
849    attributeOldValue?: boolean;
850    /**
851     * Set to true if mutations to target's attributes are to be observed. Can be omitted if attributeOldValue or attributeFilter is specified.
852     */
853    attributes?: boolean;
854    /**
855     * Set to true if mutations to target's data are to be observed. Can be omitted if characterDataOldValue is specified.
856     */
857    characterData?: boolean;
858    /**
859     * Set to true if characterData is set to true or omitted and target's data before the mutation needs to be recorded.
860     */
861    characterDataOldValue?: boolean;
862    /**
863     * Set to true if mutations to target's children are to be observed.
864     */
865    childList?: boolean;
866    /**
867     * Set to true if mutations to not just target, but also target's descendants are to be observed.
868     */
869    subtree?: boolean;
870}
871
872interface NavigationPreloadState {
873    enabled?: boolean;
874    headerValue?: string;
875}
876
877interface NotificationAction {
878    action: string;
879    icon?: string;
880    title: string;
881}
882
883interface NotificationOptions {
884    actions?: NotificationAction[];
885    badge?: string;
886    body?: string;
887    data?: any;
888    dir?: NotificationDirection;
889    icon?: string;
890    image?: string;
891    lang?: string;
892    renotify?: boolean;
893    requireInteraction?: boolean;
894    silent?: boolean;
895    tag?: string;
896    timestamp?: number;
897    vibrate?: VibratePattern;
898}
899
900interface OfflineAudioCompletionEventInit extends EventInit {
901    renderedBuffer: AudioBuffer;
902}
903
904interface OfflineAudioContextOptions {
905    length: number;
906    numberOfChannels?: number;
907    sampleRate: number;
908}
909
910interface OptionalEffectTiming {
911    delay?: number;
912    direction?: PlaybackDirection;
913    duration?: number | string;
914    easing?: string;
915    endDelay?: number;
916    fill?: FillMode;
917    iterationStart?: number;
918    iterations?: number;
919}
920
921interface OscillatorOptions extends AudioNodeOptions {
922    detune?: number;
923    frequency?: number;
924    periodicWave?: PeriodicWave;
925    type?: OscillatorType;
926}
927
928interface PageTransitionEventInit extends EventInit {
929    persisted?: boolean;
930}
931
932interface PannerOptions extends AudioNodeOptions {
933    coneInnerAngle?: number;
934    coneOuterAngle?: number;
935    coneOuterGain?: number;
936    distanceModel?: DistanceModelType;
937    maxDistance?: number;
938    orientationX?: number;
939    orientationY?: number;
940    orientationZ?: number;
941    panningModel?: PanningModelType;
942    positionX?: number;
943    positionY?: number;
944    positionZ?: number;
945    refDistance?: number;
946    rolloffFactor?: number;
947}
948
949interface PaymentCurrencyAmount {
950    currency: string;
951    currencySystem?: string;
952    value: string;
953}
954
955interface PaymentDetailsBase {
956    displayItems?: PaymentItem[];
957    modifiers?: PaymentDetailsModifier[];
958    shippingOptions?: PaymentShippingOption[];
959}
960
961interface PaymentDetailsInit extends PaymentDetailsBase {
962    id?: string;
963    total: PaymentItem;
964}
965
966interface PaymentDetailsModifier {
967    additionalDisplayItems?: PaymentItem[];
968    data?: any;
969    supportedMethods: string | string[];
970    total?: PaymentItem;
971}
972
973interface PaymentDetailsUpdate extends PaymentDetailsBase {
974    error?: string;
975    total?: PaymentItem;
976}
977
978interface PaymentItem {
979    amount: PaymentCurrencyAmount;
980    label: string;
981    pending?: boolean;
982}
983
984interface PaymentMethodData {
985    data?: any;
986    supportedMethods: string | string[];
987}
988
989interface PaymentOptions {
990    requestPayerEmail?: boolean;
991    requestPayerName?: boolean;
992    requestPayerPhone?: boolean;
993    requestShipping?: boolean;
994    shippingType?: string;
995}
996
997interface PaymentRequestUpdateEventInit extends EventInit {
998}
999
1000interface PaymentShippingOption {
1001    amount: PaymentCurrencyAmount;
1002    id: string;
1003    label: string;
1004    selected?: boolean;
1005}
1006
1007interface Pbkdf2Params extends Algorithm {
1008    hash: HashAlgorithmIdentifier;
1009    iterations: number;
1010    salt: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;
1011}
1012
1013interface PerformanceObserverInit {
1014    buffered?: boolean;
1015    entryTypes?: string[];
1016    type?: string;
1017}
1018
1019interface PeriodicWaveConstraints {
1020    disableNormalization?: boolean;
1021}
1022
1023interface PeriodicWaveOptions extends PeriodicWaveConstraints {
1024    imag?: number[] | Float32Array;
1025    real?: number[] | Float32Array;
1026}
1027
1028interface PermissionDescriptor {
1029    name: PermissionName;
1030}
1031
1032interface PointerEventInit extends MouseEventInit {
1033    coalescedEvents?: PointerEvent[];
1034    height?: number;
1035    isPrimary?: boolean;
1036    pointerId?: number;
1037    pointerType?: string;
1038    predictedEvents?: PointerEvent[];
1039    pressure?: number;
1040    tangentialPressure?: number;
1041    tiltX?: number;
1042    tiltY?: number;
1043    twist?: number;
1044    width?: number;
1045}
1046
1047interface PopStateEventInit extends EventInit {
1048    state?: any;
1049}
1050
1051interface PositionOptions {
1052    enableHighAccuracy?: boolean;
1053    maximumAge?: number;
1054    timeout?: number;
1055}
1056
1057interface PostMessageOptions {
1058    transfer?: any[];
1059}
1060
1061interface ProgressEventInit extends EventInit {
1062    lengthComputable?: boolean;
1063    loaded?: number;
1064    total?: number;
1065}
1066
1067interface PromiseRejectionEventInit extends EventInit {
1068    promise: Promise<any>;
1069    reason?: any;
1070}
1071
1072interface PropertyIndexedKeyframes {
1073    composite?: CompositeOperationOrAuto | CompositeOperationOrAuto[];
1074    easing?: string | string[];
1075    offset?: number | (number | null)[];
1076    [property: string]: string | string[] | number | null | (number | null)[] | undefined;
1077}
1078
1079interface PublicKeyCredentialCreationOptions {
1080    attestation?: AttestationConveyancePreference;
1081    authenticatorSelection?: AuthenticatorSelectionCriteria;
1082    challenge: BufferSource;
1083    excludeCredentials?: PublicKeyCredentialDescriptor[];
1084    extensions?: AuthenticationExtensionsClientInputs;
1085    pubKeyCredParams: PublicKeyCredentialParameters[];
1086    rp: PublicKeyCredentialRpEntity;
1087    timeout?: number;
1088    user: PublicKeyCredentialUserEntity;
1089}
1090
1091interface PublicKeyCredentialDescriptor {
1092    id: BufferSource;
1093    transports?: AuthenticatorTransport[];
1094    type: PublicKeyCredentialType;
1095}
1096
1097interface PublicKeyCredentialEntity {
1098    name: string;
1099}
1100
1101interface PublicKeyCredentialParameters {
1102    alg: COSEAlgorithmIdentifier;
1103    type: PublicKeyCredentialType;
1104}
1105
1106interface PublicKeyCredentialRequestOptions {
1107    allowCredentials?: PublicKeyCredentialDescriptor[];
1108    challenge: BufferSource;
1109    extensions?: AuthenticationExtensionsClientInputs;
1110    rpId?: string;
1111    timeout?: number;
1112    userVerification?: UserVerificationRequirement;
1113}
1114
1115interface PublicKeyCredentialRpEntity extends PublicKeyCredentialEntity {
1116    id?: string;
1117}
1118
1119interface PublicKeyCredentialUserEntity extends PublicKeyCredentialEntity {
1120    displayName: string;
1121    id: BufferSource;
1122}
1123
1124interface PushPermissionDescriptor extends PermissionDescriptor {
1125    name: "push";
1126    userVisibleOnly?: boolean;
1127}
1128
1129interface PushSubscriptionJSON {
1130    endpoint?: string;
1131    expirationTime?: number | null;
1132    keys?: Record<string, string>;
1133}
1134
1135interface PushSubscriptionOptionsInit {
1136    applicationServerKey?: BufferSource | string | null;
1137    userVisibleOnly?: boolean;
1138}
1139
1140interface QueuingStrategy<T = any> {
1141    highWaterMark?: number;
1142    size?: QueuingStrategySize<T>;
1143}
1144
1145interface QueuingStrategyInit {
1146    /**
1147     * Creates a new ByteLengthQueuingStrategy with the provided high water mark.
1148     *
1149     * 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.
1150     */
1151    highWaterMark: number;
1152}
1153
1154interface RTCAnswerOptions extends RTCOfferAnswerOptions {
1155}
1156
1157interface RTCCertificateExpiration {
1158    expires?: number;
1159}
1160
1161interface RTCConfiguration {
1162    bundlePolicy?: RTCBundlePolicy;
1163    certificates?: RTCCertificate[];
1164    iceCandidatePoolSize?: number;
1165    iceServers?: RTCIceServer[];
1166    iceTransportPolicy?: RTCIceTransportPolicy;
1167    peerIdentity?: string;
1168    rtcpMuxPolicy?: RTCRtcpMuxPolicy;
1169}
1170
1171interface RTCDTMFToneChangeEventInit extends EventInit {
1172    tone: string;
1173}
1174
1175interface RTCDataChannelEventInit extends EventInit {
1176    channel: RTCDataChannel;
1177}
1178
1179interface RTCDataChannelInit {
1180    id?: number;
1181    maxPacketLifeTime?: number;
1182    maxRetransmits?: number;
1183    negotiated?: boolean;
1184    ordered?: boolean;
1185    priority?: RTCPriorityType;
1186    protocol?: string;
1187}
1188
1189interface RTCDtlsFingerprint {
1190    algorithm?: string;
1191    value?: string;
1192}
1193
1194interface RTCDtlsParameters {
1195    fingerprints?: RTCDtlsFingerprint[];
1196    role?: RTCDtlsRole;
1197}
1198
1199interface RTCErrorEventInit extends EventInit {
1200    error: RTCError;
1201}
1202
1203interface RTCErrorInit {
1204    errorDetail: RTCErrorDetailType;
1205    httpRequestStatusCode?: number;
1206    receivedAlert?: number;
1207    sctpCauseCode?: number;
1208    sdpLineNumber?: number;
1209    sentAlert?: number;
1210}
1211
1212interface RTCIceCandidateAttributes extends RTCStats {
1213    addressSourceUrl?: string;
1214    candidateType?: RTCStatsIceCandidateType;
1215    ipAddress?: string;
1216    portNumber?: number;
1217    priority?: number;
1218    transport?: string;
1219}
1220
1221interface RTCIceCandidateComplete {
1222}
1223
1224interface RTCIceCandidateDictionary {
1225    foundation?: string;
1226    ip?: string;
1227    msMTurnSessionId?: string;
1228    port?: number;
1229    priority?: number;
1230    protocol?: RTCIceProtocol;
1231    relatedAddress?: string;
1232    relatedPort?: number;
1233    tcpType?: RTCIceTcpCandidateType;
1234    type?: RTCIceCandidateType;
1235}
1236
1237interface RTCIceCandidateInit {
1238    candidate?: string;
1239    sdpMLineIndex?: number | null;
1240    sdpMid?: string | null;
1241    usernameFragment?: string | null;
1242}
1243
1244interface RTCIceCandidatePair {
1245    local?: RTCIceCandidate;
1246    remote?: RTCIceCandidate;
1247}
1248
1249interface RTCIceCandidatePairStats extends RTCStats {
1250    availableIncomingBitrate?: number;
1251    availableOutgoingBitrate?: number;
1252    bytesDiscardedOnSend?: number;
1253    bytesReceived?: number;
1254    bytesSent?: number;
1255    circuitBreakerTriggerCount?: number;
1256    consentExpiredTimestamp?: number;
1257    consentRequestsSent?: number;
1258    currentRoundTripTime?: number;
1259    currentRtt?: number;
1260    firstRequestTimestamp?: number;
1261    lastPacketReceivedTimestamp?: number;
1262    lastPacketSentTimestamp?: number;
1263    lastRequestTimestamp?: number;
1264    lastResponseTimestamp?: number;
1265    localCandidateId?: string;
1266    nominated?: boolean;
1267    packetsDiscardedOnSend?: number;
1268    packetsReceived?: number;
1269    packetsSent?: number;
1270    priority?: number;
1271    remoteCandidateId?: string;
1272    requestsReceived?: number;
1273    requestsSent?: number;
1274    responsesReceived?: number;
1275    responsesSent?: number;
1276    retransmissionsReceived?: number;
1277    retransmissionsSent?: number;
1278    state?: RTCStatsIceCandidatePairState;
1279    totalRoundTripTime?: number;
1280    totalRtt?: number;
1281    transportId?: string;
1282}
1283
1284interface RTCIceGatherOptions {
1285    gatherPolicy?: RTCIceGatherPolicy;
1286    iceservers?: RTCIceServer[];
1287}
1288
1289interface RTCIceParameters {
1290    password?: string;
1291    usernameFragment?: string;
1292}
1293
1294interface RTCIceServer {
1295    credential?: string | RTCOAuthCredential;
1296    credentialType?: RTCIceCredentialType;
1297    urls: string | string[];
1298    username?: string;
1299}
1300
1301interface RTCIdentityProviderOptions {
1302    peerIdentity?: string;
1303    protocol?: string;
1304    usernameHint?: string;
1305}
1306
1307interface RTCInboundRTPStreamStats extends RTCRTPStreamStats {
1308    bytesReceived?: number;
1309    fractionLost?: number;
1310    jitter?: number;
1311    packetsLost?: number;
1312    packetsReceived?: number;
1313}
1314
1315interface RTCMediaStreamTrackStats extends RTCStats {
1316    audioLevel?: number;
1317    echoReturnLoss?: number;
1318    echoReturnLossEnhancement?: number;
1319    frameHeight?: number;
1320    frameWidth?: number;
1321    framesCorrupted?: number;
1322    framesDecoded?: number;
1323    framesDropped?: number;
1324    framesPerSecond?: number;
1325    framesReceived?: number;
1326    framesSent?: number;
1327    remoteSource?: boolean;
1328    ssrcIds?: string[];
1329    trackIdentifier?: string;
1330}
1331
1332interface RTCOAuthCredential {
1333    accessToken: string;
1334    macKey: string;
1335}
1336
1337interface RTCOfferAnswerOptions {
1338    voiceActivityDetection?: boolean;
1339}
1340
1341interface RTCOfferOptions extends RTCOfferAnswerOptions {
1342    iceRestart?: boolean;
1343    offerToReceiveAudio?: boolean;
1344    offerToReceiveVideo?: boolean;
1345}
1346
1347interface RTCOutboundRTPStreamStats extends RTCRTPStreamStats {
1348    bytesSent?: number;
1349    packetsSent?: number;
1350    roundTripTime?: number;
1351    targetBitrate?: number;
1352}
1353
1354interface RTCPeerConnectionIceErrorEventInit extends EventInit {
1355    errorCode: number;
1356    hostCandidate?: string;
1357    statusText?: string;
1358    url?: string;
1359}
1360
1361interface RTCPeerConnectionIceEventInit extends EventInit {
1362    candidate?: RTCIceCandidate | null;
1363    url?: string | null;
1364}
1365
1366interface RTCRTPStreamStats extends RTCStats {
1367    associateStatsId?: string;
1368    codecId?: string;
1369    firCount?: number;
1370    isRemote?: boolean;
1371    mediaTrackId?: string;
1372    mediaType?: string;
1373    nackCount?: number;
1374    pliCount?: number;
1375    sliCount?: number;
1376    ssrc?: string;
1377    transportId?: string;
1378}
1379
1380interface RTCRtcpFeedback {
1381    parameter?: string;
1382    type?: string;
1383}
1384
1385interface RTCRtcpParameters {
1386    cname?: string;
1387    reducedSize?: boolean;
1388}
1389
1390interface RTCRtpCapabilities {
1391    codecs: RTCRtpCodecCapability[];
1392    headerExtensions: RTCRtpHeaderExtensionCapability[];
1393}
1394
1395interface RTCRtpCodecCapability {
1396    channels?: number;
1397    clockRate: number;
1398    mimeType: string;
1399    sdpFmtpLine?: string;
1400}
1401
1402interface RTCRtpCodecParameters {
1403    channels?: number;
1404    clockRate: number;
1405    mimeType: string;
1406    payloadType: number;
1407    sdpFmtpLine?: string;
1408}
1409
1410interface RTCRtpCodingParameters {
1411    rid?: string;
1412}
1413
1414interface RTCRtpContributingSource {
1415    audioLevel?: number;
1416    rtpTimestamp: number;
1417    source: number;
1418    timestamp: number;
1419}
1420
1421interface RTCRtpDecodingParameters extends RTCRtpCodingParameters {
1422}
1423
1424interface RTCRtpEncodingParameters extends RTCRtpCodingParameters {
1425    active?: boolean;
1426    codecPayloadType?: number;
1427    dtx?: RTCDtxStatus;
1428    maxBitrate?: number;
1429    maxFramerate?: number;
1430    ptime?: number;
1431    scaleResolutionDownBy?: number;
1432}
1433
1434interface RTCRtpFecParameters {
1435    mechanism?: string;
1436    ssrc?: number;
1437}
1438
1439interface RTCRtpHeaderExtension {
1440    kind?: string;
1441    preferredEncrypt?: boolean;
1442    preferredId?: number;
1443    uri?: string;
1444}
1445
1446interface RTCRtpHeaderExtensionCapability {
1447    uri?: string;
1448}
1449
1450interface RTCRtpHeaderExtensionParameters {
1451    encrypted?: boolean;
1452    id: number;
1453    uri: string;
1454}
1455
1456interface RTCRtpParameters {
1457    codecs: RTCRtpCodecParameters[];
1458    headerExtensions: RTCRtpHeaderExtensionParameters[];
1459    rtcp: RTCRtcpParameters;
1460}
1461
1462interface RTCRtpReceiveParameters extends RTCRtpParameters {
1463    encodings: RTCRtpDecodingParameters[];
1464}
1465
1466interface RTCRtpRtxParameters {
1467    ssrc?: number;
1468}
1469
1470interface RTCRtpSendParameters extends RTCRtpParameters {
1471    degradationPreference?: RTCDegradationPreference;
1472    encodings: RTCRtpEncodingParameters[];
1473    priority?: RTCPriorityType;
1474    transactionId: string;
1475}
1476
1477interface RTCRtpSynchronizationSource extends RTCRtpContributingSource {
1478    voiceActivityFlag?: boolean;
1479}
1480
1481interface RTCRtpTransceiverInit {
1482    direction?: RTCRtpTransceiverDirection;
1483    sendEncodings?: RTCRtpEncodingParameters[];
1484    streams?: MediaStream[];
1485}
1486
1487interface RTCRtpUnhandled {
1488    muxId?: string;
1489    payloadType?: number;
1490    ssrc?: number;
1491}
1492
1493interface RTCSessionDescriptionInit {
1494    sdp?: string;
1495    type?: RTCSdpType;
1496}
1497
1498interface RTCSrtpKeyParam {
1499    keyMethod?: string;
1500    keySalt?: string;
1501    lifetime?: string;
1502    mkiLength?: number;
1503    mkiValue?: number;
1504}
1505
1506interface RTCSrtpSdesParameters {
1507    cryptoSuite?: string;
1508    keyParams?: RTCSrtpKeyParam[];
1509    sessionParams?: string[];
1510    tag?: number;
1511}
1512
1513interface RTCSsrcRange {
1514    max?: number;
1515    min?: number;
1516}
1517
1518interface RTCStats {
1519    id?: string;
1520    timestamp?: number;
1521    type?: RTCStatsType;
1522}
1523
1524interface RTCStatsEventInit extends EventInit {
1525    report: RTCStatsReport;
1526}
1527
1528interface RTCStatsReport {
1529}
1530
1531interface RTCTrackEventInit extends EventInit {
1532    receiver: RTCRtpReceiver;
1533    streams?: MediaStream[];
1534    track: MediaStreamTrack;
1535    transceiver: RTCRtpTransceiver;
1536}
1537
1538interface RTCTransportStats extends RTCStats {
1539    bytesReceived?: number;
1540    bytesSent?: number;
1541    dtlsCipher?: string;
1542    dtlsState?: RTCDtlsTransportState;
1543    iceRole?: RTCIceRole;
1544    localCertificateId?: string;
1545    packetsReceived?: number;
1546    packetsSent?: number;
1547    remoteCertificateId?: string;
1548    rtcpTransportStatsId?: string;
1549    selectedCandidatePairChanges?: number;
1550    selectedCandidatePairId?: string;
1551    srtpCipher?: string;
1552    tlsGroup?: string;
1553    tlsVersion?: string;
1554}
1555
1556interface ReadableStreamDefaultReadDoneResult {
1557    done: true;
1558    value?: undefined;
1559}
1560
1561interface ReadableStreamDefaultReadValueResult<T> {
1562    done: false;
1563    value: T;
1564}
1565
1566interface ReadableWritablePair<R = any, W = any> {
1567    readable: ReadableStream<R>;
1568    /**
1569     * 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.
1570     *
1571     * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.
1572     */
1573    writable: WritableStream<W>;
1574}
1575
1576interface RegistrationOptions {
1577    scope?: string;
1578    type?: WorkerType;
1579    updateViaCache?: ServiceWorkerUpdateViaCache;
1580}
1581
1582interface RequestInit {
1583    /**
1584     * A BodyInit object or null to set request's body.
1585     */
1586    body?: BodyInit | null;
1587    /**
1588     * A string indicating how the request will interact with the browser's cache to set request's cache.
1589     */
1590    cache?: RequestCache;
1591    /**
1592     * 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.
1593     */
1594    credentials?: RequestCredentials;
1595    /**
1596     * A Headers object, an object literal, or an array of two-item arrays to set request's headers.
1597     */
1598    headers?: HeadersInit;
1599    /**
1600     * A cryptographic hash of the resource to be fetched by request. Sets request's integrity.
1601     */
1602    integrity?: string;
1603    /**
1604     * A boolean to set request's keepalive.
1605     */
1606    keepalive?: boolean;
1607    /**
1608     * A string to set request's method.
1609     */
1610    method?: string;
1611    /**
1612     * A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode.
1613     */
1614    mode?: RequestMode;
1615    /**
1616     * 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.
1617     */
1618    redirect?: RequestRedirect;
1619    /**
1620     * A string whose value is a same-origin URL, "about:client", or the empty string, to set request's referrer.
1621     */
1622    referrer?: string;
1623    /**
1624     * A referrer policy to set request's referrerPolicy.
1625     */
1626    referrerPolicy?: ReferrerPolicy;
1627    /**
1628     * An AbortSignal to set request's signal.
1629     */
1630    signal?: AbortSignal | null;
1631    /**
1632     * Can only be null. Used to disassociate request from any Window.
1633     */
1634    window?: any;
1635}
1636
1637interface ResizeObserverOptions {
1638    box?: ResizeObserverBoxOptions;
1639}
1640
1641interface ResponseInit {
1642    headers?: HeadersInit;
1643    status?: number;
1644    statusText?: string;
1645}
1646
1647interface RsaHashedImportParams extends Algorithm {
1648    hash: HashAlgorithmIdentifier;
1649}
1650
1651interface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm {
1652    hash: KeyAlgorithm;
1653}
1654
1655interface RsaHashedKeyGenParams extends RsaKeyGenParams {
1656    hash: HashAlgorithmIdentifier;
1657}
1658
1659interface RsaKeyAlgorithm extends KeyAlgorithm {
1660    modulusLength: number;
1661    publicExponent: BigInteger;
1662}
1663
1664interface RsaKeyGenParams extends Algorithm {
1665    modulusLength: number;
1666    publicExponent: BigInteger;
1667}
1668
1669interface RsaOaepParams extends Algorithm {
1670    label?: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;
1671}
1672
1673interface RsaOtherPrimesInfo {
1674    d?: string;
1675    r?: string;
1676    t?: string;
1677}
1678
1679interface RsaPssParams extends Algorithm {
1680    saltLength: number;
1681}
1682
1683interface SVGBoundingBoxOptions {
1684    clipped?: boolean;
1685    fill?: boolean;
1686    markers?: boolean;
1687    stroke?: boolean;
1688}
1689
1690interface ScopedCredentialDescriptor {
1691    id: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer | null;
1692    transports?: Transport[];
1693    type: ScopedCredentialType;
1694}
1695
1696interface ScopedCredentialOptions {
1697    excludeList?: ScopedCredentialDescriptor[];
1698    extensions?: WebAuthnExtensions;
1699    rpId?: string;
1700    timeoutSeconds?: number;
1701}
1702
1703interface ScopedCredentialParameters {
1704    algorithm: string | Algorithm;
1705    type: ScopedCredentialType;
1706}
1707
1708interface ScrollIntoViewOptions extends ScrollOptions {
1709    block?: ScrollLogicalPosition;
1710    inline?: ScrollLogicalPosition;
1711}
1712
1713interface ScrollOptions {
1714    behavior?: ScrollBehavior;
1715}
1716
1717interface ScrollToOptions extends ScrollOptions {
1718    left?: number;
1719    top?: number;
1720}
1721
1722interface SecurityPolicyViolationEventInit extends EventInit {
1723    blockedURI?: string;
1724    columnNumber?: number;
1725    documentURI?: string;
1726    effectiveDirective?: string;
1727    lineNumber?: number;
1728    originalPolicy?: string;
1729    referrer?: string;
1730    sourceFile?: string;
1731    statusCode?: number;
1732    violatedDirective?: string;
1733}
1734
1735interface ServiceWorkerMessageEventInit extends EventInit {
1736    data?: any;
1737    lastEventId?: string;
1738    origin?: string;
1739    ports?: MessagePort[] | null;
1740    source?: ServiceWorker | MessagePort | null;
1741}
1742
1743interface ShadowRootInit {
1744    delegatesFocus?: boolean;
1745    mode: ShadowRootMode;
1746}
1747
1748interface ShareData {
1749    text?: string;
1750    title?: string;
1751    url?: string;
1752}
1753
1754interface SpeechRecognitionErrorEventInit extends EventInit {
1755    error: SpeechRecognitionErrorCode;
1756    message?: string;
1757}
1758
1759interface SpeechRecognitionEventInit extends EventInit {
1760    resultIndex?: number;
1761    results: SpeechRecognitionResultList;
1762}
1763
1764interface SpeechSynthesisErrorEventInit extends SpeechSynthesisEventInit {
1765    error: SpeechSynthesisErrorCode;
1766}
1767
1768interface SpeechSynthesisEventInit extends EventInit {
1769    charIndex?: number;
1770    charLength?: number;
1771    elapsedTime?: number;
1772    name?: string;
1773    utterance: SpeechSynthesisUtterance;
1774}
1775
1776interface StaticRangeInit {
1777    endContainer: Node;
1778    endOffset: number;
1779    startContainer: Node;
1780    startOffset: number;
1781}
1782
1783interface StereoPannerOptions extends AudioNodeOptions {
1784    pan?: number;
1785}
1786
1787interface StorageEstimate {
1788    quota?: number;
1789    usage?: number;
1790}
1791
1792interface StorageEventInit extends EventInit {
1793    key?: string | null;
1794    newValue?: string | null;
1795    oldValue?: string | null;
1796    storageArea?: Storage | null;
1797    url?: string;
1798}
1799
1800interface StoreExceptionsInformation extends ExceptionInformation {
1801    detailURI?: string | null;
1802    explanationString?: string | null;
1803    siteName?: string | null;
1804}
1805
1806interface StoreSiteSpecificExceptionsInformation extends StoreExceptionsInformation {
1807    arrayOfDomainStrings?: string[];
1808}
1809
1810interface StreamPipeOptions {
1811    preventAbort?: boolean;
1812    preventCancel?: boolean;
1813    /**
1814     * 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.
1815     *
1816     * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.
1817     *
1818     * Errors and closures of the source and destination streams propagate as follows:
1819     *
1820     * 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.
1821     *
1822     * 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.
1823     *
1824     * 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.
1825     *
1826     * 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.
1827     *
1828     * 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.
1829     */
1830    preventClose?: boolean;
1831    signal?: AbortSignal;
1832}
1833
1834interface TextDecodeOptions {
1835    stream?: boolean;
1836}
1837
1838interface TextDecoderOptions {
1839    fatal?: boolean;
1840    ignoreBOM?: boolean;
1841}
1842
1843interface TextEncoderEncodeIntoResult {
1844    read?: number;
1845    written?: number;
1846}
1847
1848interface TouchEventInit extends EventModifierInit {
1849    changedTouches?: Touch[];
1850    targetTouches?: Touch[];
1851    touches?: Touch[];
1852}
1853
1854interface TouchInit {
1855    altitudeAngle?: number;
1856    azimuthAngle?: number;
1857    clientX?: number;
1858    clientY?: number;
1859    force?: number;
1860    identifier: number;
1861    pageX?: number;
1862    pageY?: number;
1863    radiusX?: number;
1864    radiusY?: number;
1865    rotationAngle?: number;
1866    screenX?: number;
1867    screenY?: number;
1868    target: EventTarget;
1869    touchType?: TouchType;
1870}
1871
1872interface TrackEventInit extends EventInit {
1873    track?: TextTrack | null;
1874}
1875
1876interface Transformer<I = any, O = any> {
1877    flush?: TransformerFlushCallback<O>;
1878    readableType?: undefined;
1879    start?: TransformerStartCallback<O>;
1880    transform?: TransformerTransformCallback<I, O>;
1881    writableType?: undefined;
1882}
1883
1884interface TransitionEventInit extends EventInit {
1885    elapsedTime?: number;
1886    propertyName?: string;
1887    pseudoElement?: string;
1888}
1889
1890interface UIEventInit extends EventInit {
1891    detail?: number;
1892    view?: Window | null;
1893}
1894
1895interface ULongRange {
1896    max?: number;
1897    min?: number;
1898}
1899
1900interface UnderlyingSink<W = any> {
1901    abort?: UnderlyingSinkAbortCallback;
1902    close?: UnderlyingSinkCloseCallback;
1903    start?: UnderlyingSinkStartCallback;
1904    type?: undefined;
1905    write?: UnderlyingSinkWriteCallback<W>;
1906}
1907
1908interface UnderlyingSource<R = any> {
1909    cancel?: UnderlyingSourceCancelCallback;
1910    pull?: UnderlyingSourcePullCallback<R>;
1911    start?: UnderlyingSourceStartCallback<R>;
1912    type?: undefined;
1913}
1914
1915interface VRDisplayEventInit extends EventInit {
1916    display: VRDisplay;
1917    reason?: VRDisplayEventReason;
1918}
1919
1920interface VRLayer {
1921    leftBounds?: number[] | Float32Array | null;
1922    rightBounds?: number[] | Float32Array | null;
1923    source?: HTMLCanvasElement | null;
1924}
1925
1926interface VRStageParameters {
1927    sittingToStandingTransform?: Float32Array;
1928    sizeX?: number;
1929    sizeY?: number;
1930}
1931
1932interface WaveShaperOptions extends AudioNodeOptions {
1933    curve?: number[] | Float32Array;
1934    oversample?: OverSampleType;
1935}
1936
1937interface WebAuthnExtensions {
1938}
1939
1940interface WebGLContextAttributes {
1941    alpha?: boolean;
1942    antialias?: boolean;
1943    depth?: boolean;
1944    desynchronized?: boolean;
1945    failIfMajorPerformanceCaveat?: boolean;
1946    powerPreference?: WebGLPowerPreference;
1947    premultipliedAlpha?: boolean;
1948    preserveDrawingBuffer?: boolean;
1949    stencil?: boolean;
1950}
1951
1952interface WebGLContextEventInit extends EventInit {
1953    statusMessage?: string;
1954}
1955
1956interface WheelEventInit extends MouseEventInit {
1957    deltaMode?: number;
1958    deltaX?: number;
1959    deltaY?: number;
1960    deltaZ?: number;
1961}
1962
1963interface WorkerOptions {
1964    credentials?: RequestCredentials;
1965    name?: string;
1966    type?: WorkerType;
1967}
1968
1969interface WorkletOptions {
1970    credentials?: RequestCredentials;
1971}
1972
1973interface EventListener {
1974    (evt: Event): void;
1975}
1976
1977type XPathNSResolver = ((prefix: string | null) => string | null) | { lookupNamespaceURI(prefix: string | null): string | null; };
1978
1979/** 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. */
1980interface ANGLE_instanced_arrays {
1981    drawArraysInstancedANGLE(mode: GLenum, first: GLint, count: GLsizei, primcount: GLsizei): void;
1982    drawElementsInstancedANGLE(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, primcount: GLsizei): void;
1983    vertexAttribDivisorANGLE(index: GLuint, divisor: GLuint): void;
1984    readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: GLenum;
1985}
1986
1987/** A controller object that allows you to abort one or more DOM requests as and when desired. */
1988interface AbortController {
1989    /**
1990     * Returns the AbortSignal object associated with this object.
1991     */
1992    readonly signal: AbortSignal;
1993    /**
1994     * 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.
1995     */
1996    abort(): void;
1997}
1998
1999declare var AbortController: {
2000    prototype: AbortController;
2001    new(): AbortController;
2002};
2003
2004interface AbortSignalEventMap {
2005    "abort": Event;
2006}
2007
2008/** 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. */
2009interface AbortSignal extends EventTarget {
2010    /**
2011     * Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise.
2012     */
2013    readonly aborted: boolean;
2014    onabort: ((this: AbortSignal, ev: Event) => any) | null;
2015    addEventListener<K extends keyof AbortSignalEventMap>(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2016    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2017    removeEventListener<K extends keyof AbortSignalEventMap>(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2018    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2019}
2020
2021declare var AbortSignal: {
2022    prototype: AbortSignal;
2023    new(): AbortSignal;
2024};
2025
2026interface AbstractRange {
2027    /**
2028     * Returns true if range is collapsed, and false otherwise.
2029     */
2030    readonly collapsed: boolean;
2031    /**
2032     * Returns range's end node.
2033     */
2034    readonly endContainer: Node;
2035    /**
2036     * Returns range's end offset.
2037     */
2038    readonly endOffset: number;
2039    /**
2040     * Returns range's start node.
2041     */
2042    readonly startContainer: Node;
2043    /**
2044     * Returns range's start offset.
2045     */
2046    readonly startOffset: number;
2047}
2048
2049declare var AbstractRange: {
2050    prototype: AbstractRange;
2051    new(): AbstractRange;
2052};
2053
2054interface AbstractWorkerEventMap {
2055    "error": ErrorEvent;
2056}
2057
2058interface AbstractWorker {
2059    onerror: ((this: AbstractWorker, ev: ErrorEvent) => any) | null;
2060    addEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2061    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2062    removeEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2063    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2064}
2065
2066interface AesCfbParams extends Algorithm {
2067    iv: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;
2068}
2069
2070interface AesCmacParams extends Algorithm {
2071    length: number;
2072}
2073
2074/** 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. */
2075interface AnalyserNode extends AudioNode {
2076    fftSize: number;
2077    readonly frequencyBinCount: number;
2078    maxDecibels: number;
2079    minDecibels: number;
2080    smoothingTimeConstant: number;
2081    getByteFrequencyData(array: Uint8Array): void;
2082    getByteTimeDomainData(array: Uint8Array): void;
2083    getFloatFrequencyData(array: Float32Array): void;
2084    getFloatTimeDomainData(array: Float32Array): void;
2085}
2086
2087declare var AnalyserNode: {
2088    prototype: AnalyserNode;
2089    new(context: BaseAudioContext, options?: AnalyserOptions): AnalyserNode;
2090};
2091
2092interface Animatable {
2093    animate(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions): Animation;
2094    getAnimations(): Animation[];
2095}
2096
2097interface AnimationEventMap {
2098    "cancel": AnimationPlaybackEvent;
2099    "finish": AnimationPlaybackEvent;
2100}
2101
2102interface Animation extends EventTarget {
2103    currentTime: number | null;
2104    effect: AnimationEffect | null;
2105    readonly finished: Promise<Animation>;
2106    id: string;
2107    oncancel: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;
2108    onfinish: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;
2109    readonly pending: boolean;
2110    readonly playState: AnimationPlayState;
2111    playbackRate: number;
2112    readonly ready: Promise<Animation>;
2113    startTime: number | null;
2114    timeline: AnimationTimeline | null;
2115    cancel(): void;
2116    finish(): void;
2117    pause(): void;
2118    play(): void;
2119    reverse(): void;
2120    updatePlaybackRate(playbackRate: number): void;
2121    addEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2122    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2123    removeEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2124    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2125}
2126
2127declare var Animation: {
2128    prototype: Animation;
2129    new(effect?: AnimationEffect | null, timeline?: AnimationTimeline | null): Animation;
2130};
2131
2132interface AnimationEffect {
2133    getComputedTiming(): ComputedEffectTiming;
2134    getTiming(): EffectTiming;
2135    updateTiming(timing?: OptionalEffectTiming): void;
2136}
2137
2138declare var AnimationEffect: {
2139    prototype: AnimationEffect;
2140    new(): AnimationEffect;
2141};
2142
2143/** Events providing information related to animations. */
2144interface AnimationEvent extends Event {
2145    readonly animationName: string;
2146    readonly elapsedTime: number;
2147    readonly pseudoElement: string;
2148}
2149
2150declare var AnimationEvent: {
2151    prototype: AnimationEvent;
2152    new(type: string, animationEventInitDict?: AnimationEventInit): AnimationEvent;
2153};
2154
2155interface AnimationFrameProvider {
2156    cancelAnimationFrame(handle: number): void;
2157    requestAnimationFrame(callback: FrameRequestCallback): number;
2158}
2159
2160interface AnimationPlaybackEvent extends Event {
2161    readonly currentTime: number | null;
2162    readonly timelineTime: number | null;
2163}
2164
2165declare var AnimationPlaybackEvent: {
2166    prototype: AnimationPlaybackEvent;
2167    new(type: string, eventInitDict?: AnimationPlaybackEventInit): AnimationPlaybackEvent;
2168};
2169
2170interface AnimationTimeline {
2171    readonly currentTime: number | null;
2172}
2173
2174declare var AnimationTimeline: {
2175    prototype: AnimationTimeline;
2176    new(): AnimationTimeline;
2177};
2178
2179interface ApplicationCacheEventMap {
2180    "cached": Event;
2181    "checking": Event;
2182    "downloading": Event;
2183    "error": Event;
2184    "noupdate": Event;
2185    "obsolete": Event;
2186    "progress": ProgressEvent<ApplicationCache>;
2187    "updateready": Event;
2188}
2189
2190interface ApplicationCache extends EventTarget {
2191    /** @deprecated */
2192    oncached: ((this: ApplicationCache, ev: Event) => any) | null;
2193    /** @deprecated */
2194    onchecking: ((this: ApplicationCache, ev: Event) => any) | null;
2195    /** @deprecated */
2196    ondownloading: ((this: ApplicationCache, ev: Event) => any) | null;
2197    /** @deprecated */
2198    onerror: ((this: ApplicationCache, ev: Event) => any) | null;
2199    /** @deprecated */
2200    onnoupdate: ((this: ApplicationCache, ev: Event) => any) | null;
2201    /** @deprecated */
2202    onobsolete: ((this: ApplicationCache, ev: Event) => any) | null;
2203    /** @deprecated */
2204    onprogress: ((this: ApplicationCache, ev: ProgressEvent<ApplicationCache>) => any) | null;
2205    /** @deprecated */
2206    onupdateready: ((this: ApplicationCache, ev: Event) => any) | null;
2207    /** @deprecated */
2208    readonly status: number;
2209    /** @deprecated */
2210    abort(): void;
2211    /** @deprecated */
2212    swapCache(): void;
2213    /** @deprecated */
2214    update(): void;
2215    readonly CHECKING: number;
2216    readonly DOWNLOADING: number;
2217    readonly IDLE: number;
2218    readonly OBSOLETE: number;
2219    readonly UNCACHED: number;
2220    readonly UPDATEREADY: number;
2221    addEventListener<K extends keyof ApplicationCacheEventMap>(type: K, listener: (this: ApplicationCache, ev: ApplicationCacheEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2222    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2223    removeEventListener<K extends keyof ApplicationCacheEventMap>(type: K, listener: (this: ApplicationCache, ev: ApplicationCacheEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2224    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2225}
2226
2227declare var ApplicationCache: {
2228    prototype: ApplicationCache;
2229    new(): ApplicationCache;
2230    readonly CHECKING: number;
2231    readonly DOWNLOADING: number;
2232    readonly IDLE: number;
2233    readonly OBSOLETE: number;
2234    readonly UNCACHED: number;
2235    readonly UPDATEREADY: number;
2236};
2237
2238/** 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. */
2239interface Attr extends Node {
2240    readonly localName: string;
2241    readonly name: string;
2242    readonly namespaceURI: string | null;
2243    readonly ownerDocument: Document;
2244    readonly ownerElement: Element | null;
2245    readonly prefix: string | null;
2246    readonly specified: boolean;
2247    value: string;
2248}
2249
2250declare var Attr: {
2251    prototype: Attr;
2252    new(): Attr;
2253};
2254
2255/** 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. */
2256interface AudioBuffer {
2257    readonly duration: number;
2258    readonly length: number;
2259    readonly numberOfChannels: number;
2260    readonly sampleRate: number;
2261    copyFromChannel(destination: Float32Array, channelNumber: number, bufferOffset?: number): void;
2262    copyToChannel(source: Float32Array, channelNumber: number, bufferOffset?: number): void;
2263    getChannelData(channel: number): Float32Array;
2264}
2265
2266declare var AudioBuffer: {
2267    prototype: AudioBuffer;
2268    new(options: AudioBufferOptions): AudioBuffer;
2269};
2270
2271/** 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. */
2272interface AudioBufferSourceNode extends AudioScheduledSourceNode {
2273    buffer: AudioBuffer | null;
2274    readonly detune: AudioParam;
2275    loop: boolean;
2276    loopEnd: number;
2277    loopStart: number;
2278    readonly playbackRate: AudioParam;
2279    start(when?: number, offset?: number, duration?: number): void;
2280    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2281    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2282    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2283    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2284}
2285
2286declare var AudioBufferSourceNode: {
2287    prototype: AudioBufferSourceNode;
2288    new(context: BaseAudioContext, options?: AudioBufferSourceOptions): AudioBufferSourceNode;
2289};
2290
2291/** An audio-processing graph built from audio modules linked together, each represented by an AudioNode. */
2292interface AudioContext extends BaseAudioContext {
2293    readonly baseLatency: number;
2294    readonly outputLatency: number;
2295    close(): Promise<void>;
2296    createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode;
2297    createMediaStreamDestination(): MediaStreamAudioDestinationNode;
2298    createMediaStreamSource(mediaStream: MediaStream): MediaStreamAudioSourceNode;
2299    createMediaStreamTrackSource(mediaStreamTrack: MediaStreamTrack): MediaStreamTrackAudioSourceNode;
2300    getOutputTimestamp(): AudioTimestamp;
2301    resume(): Promise<void>;
2302    suspend(): Promise<void>;
2303    addEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2304    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2305    removeEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2306    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2307}
2308
2309declare var AudioContext: {
2310    prototype: AudioContext;
2311    new(contextOptions?: AudioContextOptions): AudioContext;
2312};
2313
2314/** 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. */
2315interface AudioDestinationNode extends AudioNode {
2316    readonly maxChannelCount: number;
2317}
2318
2319declare var AudioDestinationNode: {
2320    prototype: AudioDestinationNode;
2321    new(): AudioDestinationNode;
2322};
2323
2324/** 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. */
2325interface AudioListener {
2326    readonly forwardX: AudioParam;
2327    readonly forwardY: AudioParam;
2328    readonly forwardZ: AudioParam;
2329    readonly positionX: AudioParam;
2330    readonly positionY: AudioParam;
2331    readonly positionZ: AudioParam;
2332    readonly upX: AudioParam;
2333    readonly upY: AudioParam;
2334    readonly upZ: AudioParam;
2335    /** @deprecated */
2336    setOrientation(x: number, y: number, z: number, xUp: number, yUp: number, zUp: number): void;
2337    /** @deprecated */
2338    setPosition(x: number, y: number, z: number): void;
2339}
2340
2341declare var AudioListener: {
2342    prototype: AudioListener;
2343    new(): AudioListener;
2344};
2345
2346/** A generic interface for representing an audio processing module. Examples include: */
2347interface AudioNode extends EventTarget {
2348    channelCount: number;
2349    channelCountMode: ChannelCountMode;
2350    channelInterpretation: ChannelInterpretation;
2351    readonly context: BaseAudioContext;
2352    readonly numberOfInputs: number;
2353    readonly numberOfOutputs: number;
2354    connect(destinationNode: AudioNode, output?: number, input?: number): AudioNode;
2355    connect(destinationParam: AudioParam, output?: number): void;
2356    disconnect(): void;
2357    disconnect(output: number): void;
2358    disconnect(destinationNode: AudioNode): void;
2359    disconnect(destinationNode: AudioNode, output: number): void;
2360    disconnect(destinationNode: AudioNode, output: number, input: number): void;
2361    disconnect(destinationParam: AudioParam): void;
2362    disconnect(destinationParam: AudioParam, output: number): void;
2363}
2364
2365declare var AudioNode: {
2366    prototype: AudioNode;
2367    new(): AudioNode;
2368};
2369
2370/** The Web Audio API's AudioParam interface represents an audio-related parameter, usually a parameter of an AudioNode (such as GainNode.gain). */
2371interface AudioParam {
2372    automationRate: AutomationRate;
2373    readonly defaultValue: number;
2374    readonly maxValue: number;
2375    readonly minValue: number;
2376    value: number;
2377    cancelAndHoldAtTime(cancelTime: number): AudioParam;
2378    cancelScheduledValues(cancelTime: number): AudioParam;
2379    exponentialRampToValueAtTime(value: number, endTime: number): AudioParam;
2380    linearRampToValueAtTime(value: number, endTime: number): AudioParam;
2381    setTargetAtTime(target: number, startTime: number, timeConstant: number): AudioParam;
2382    setValueAtTime(value: number, startTime: number): AudioParam;
2383    setValueCurveAtTime(values: number[] | Float32Array, startTime: number, duration: number): AudioParam;
2384}
2385
2386declare var AudioParam: {
2387    prototype: AudioParam;
2388    new(): AudioParam;
2389};
2390
2391interface AudioParamMap {
2392    forEach(callbackfn: (value: AudioParam, key: string, parent: AudioParamMap) => void, thisArg?: any): void;
2393}
2394
2395declare var AudioParamMap: {
2396    prototype: AudioParamMap;
2397    new(): AudioParamMap;
2398};
2399
2400/** The Web Audio API events that occur when a ScriptProcessorNode input buffer is ready to be processed.
2401 * @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.
2402 */
2403interface AudioProcessingEvent extends Event {
2404    readonly inputBuffer: AudioBuffer;
2405    readonly outputBuffer: AudioBuffer;
2406    readonly playbackTime: number;
2407}
2408
2409declare var AudioProcessingEvent: {
2410    prototype: AudioProcessingEvent;
2411    new(type: string, eventInitDict: AudioProcessingEventInit): AudioProcessingEvent;
2412};
2413
2414interface AudioScheduledSourceNodeEventMap {
2415    "ended": Event;
2416}
2417
2418interface AudioScheduledSourceNode extends AudioNode {
2419    onended: ((this: AudioScheduledSourceNode, ev: Event) => any) | null;
2420    start(when?: number): void;
2421    stop(when?: number): void;
2422    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2423    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2424    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2425    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2426}
2427
2428declare var AudioScheduledSourceNode: {
2429    prototype: AudioScheduledSourceNode;
2430    new(): AudioScheduledSourceNode;
2431};
2432
2433interface AudioWorklet extends Worklet {
2434}
2435
2436declare var AudioWorklet: {
2437    prototype: AudioWorklet;
2438    new(): AudioWorklet;
2439};
2440
2441interface AudioWorkletNodeEventMap {
2442    "processorerror": Event;
2443}
2444
2445interface AudioWorkletNode extends AudioNode {
2446    onprocessorerror: ((this: AudioWorkletNode, ev: Event) => any) | null;
2447    readonly parameters: AudioParamMap;
2448    readonly port: MessagePort;
2449    addEventListener<K extends keyof AudioWorkletNodeEventMap>(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2450    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2451    removeEventListener<K extends keyof AudioWorkletNodeEventMap>(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2452    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2453}
2454
2455declare var AudioWorkletNode: {
2456    prototype: AudioWorkletNode;
2457    new(context: BaseAudioContext, name: string, options?: AudioWorkletNodeOptions): AudioWorkletNode;
2458};
2459
2460interface AuthenticatorAssertionResponse extends AuthenticatorResponse {
2461    readonly authenticatorData: ArrayBuffer;
2462    readonly signature: ArrayBuffer;
2463    readonly userHandle: ArrayBuffer | null;
2464}
2465
2466declare var AuthenticatorAssertionResponse: {
2467    prototype: AuthenticatorAssertionResponse;
2468    new(): AuthenticatorAssertionResponse;
2469};
2470
2471interface AuthenticatorAttestationResponse extends AuthenticatorResponse {
2472    readonly attestationObject: ArrayBuffer;
2473}
2474
2475declare var AuthenticatorAttestationResponse: {
2476    prototype: AuthenticatorAttestationResponse;
2477    new(): AuthenticatorAttestationResponse;
2478};
2479
2480interface AuthenticatorResponse {
2481    readonly clientDataJSON: ArrayBuffer;
2482}
2483
2484declare var AuthenticatorResponse: {
2485    prototype: AuthenticatorResponse;
2486    new(): AuthenticatorResponse;
2487};
2488
2489interface BarProp {
2490    readonly visible: boolean;
2491}
2492
2493declare var BarProp: {
2494    prototype: BarProp;
2495    new(): BarProp;
2496};
2497
2498interface BaseAudioContextEventMap {
2499    "statechange": Event;
2500}
2501
2502interface BaseAudioContext extends EventTarget {
2503    readonly audioWorklet: AudioWorklet;
2504    readonly currentTime: number;
2505    readonly destination: AudioDestinationNode;
2506    readonly listener: AudioListener;
2507    onstatechange: ((this: BaseAudioContext, ev: Event) => any) | null;
2508    readonly sampleRate: number;
2509    readonly state: AudioContextState;
2510    createAnalyser(): AnalyserNode;
2511    createBiquadFilter(): BiquadFilterNode;
2512    createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer;
2513    createBufferSource(): AudioBufferSourceNode;
2514    createChannelMerger(numberOfInputs?: number): ChannelMergerNode;
2515    createChannelSplitter(numberOfOutputs?: number): ChannelSplitterNode;
2516    createConstantSource(): ConstantSourceNode;
2517    createConvolver(): ConvolverNode;
2518    createDelay(maxDelayTime?: number): DelayNode;
2519    createDynamicsCompressor(): DynamicsCompressorNode;
2520    createGain(): GainNode;
2521    createIIRFilter(feedforward: number[], feedback: number[]): IIRFilterNode;
2522    createOscillator(): OscillatorNode;
2523    createPanner(): PannerNode;
2524    createPeriodicWave(real: number[] | Float32Array, imag: number[] | Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave;
2525    createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode;
2526    createStereoPanner(): StereoPannerNode;
2527    createWaveShaper(): WaveShaperNode;
2528    decodeAudioData(audioData: ArrayBuffer, successCallback?: DecodeSuccessCallback | null, errorCallback?: DecodeErrorCallback | null): Promise<AudioBuffer>;
2529    addEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2530    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2531    removeEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2532    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2533}
2534
2535declare var BaseAudioContext: {
2536    prototype: BaseAudioContext;
2537    new(): BaseAudioContext;
2538};
2539
2540/** The beforeunload event is fired when the window, the document and its resources are about to be unloaded. */
2541interface BeforeUnloadEvent extends Event {
2542    returnValue: any;
2543}
2544
2545declare var BeforeUnloadEvent: {
2546    prototype: BeforeUnloadEvent;
2547    new(): BeforeUnloadEvent;
2548};
2549
2550interface BhxBrowser {
2551    readonly lastError: DOMException;
2552    checkMatchesGlobExpression(pattern: string, value: string): boolean;
2553    checkMatchesUriExpression(pattern: string, value: string): boolean;
2554    clearLastError(): void;
2555    currentWindowId(): number;
2556    fireExtensionApiTelemetry(functionName: string, isSucceeded: boolean, isSupported: boolean, errorString: string): void;
2557    genericFunction(functionId: number, destination: any, parameters?: string, callbackId?: number): void;
2558    genericSynchronousFunction(functionId: number, parameters?: string): string;
2559    getExtensionId(): string;
2560    getThisAddress(): any;
2561    registerGenericFunctionCallbackHandler(callbackHandler: Function): void;
2562    registerGenericListenerHandler(eventHandler: Function): void;
2563    setLastError(parameters: string): void;
2564    webPlatformGenericFunction(destination: any, parameters?: string, callbackId?: number): void;
2565}
2566
2567declare var BhxBrowser: {
2568    prototype: BhxBrowser;
2569    new(): BhxBrowser;
2570};
2571
2572/** 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. */
2573interface BiquadFilterNode extends AudioNode {
2574    readonly Q: AudioParam;
2575    readonly detune: AudioParam;
2576    readonly frequency: AudioParam;
2577    readonly gain: AudioParam;
2578    type: BiquadFilterType;
2579    getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;
2580}
2581
2582declare var BiquadFilterNode: {
2583    prototype: BiquadFilterNode;
2584    new(context: BaseAudioContext, options?: BiquadFilterOptions): BiquadFilterNode;
2585};
2586
2587/** 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. */
2588interface Blob {
2589    readonly size: number;
2590    readonly type: string;
2591    arrayBuffer(): Promise<ArrayBuffer>;
2592    slice(start?: number, end?: number, contentType?: string): Blob;
2593    stream(): ReadableStream;
2594    text(): Promise<string>;
2595}
2596
2597declare var Blob: {
2598    prototype: Blob;
2599    new(blobParts?: BlobPart[], options?: BlobPropertyBag): Blob;
2600};
2601
2602interface Body {
2603    readonly body: ReadableStream<Uint8Array> | null;
2604    readonly bodyUsed: boolean;
2605    arrayBuffer(): Promise<ArrayBuffer>;
2606    blob(): Promise<Blob>;
2607    formData(): Promise<FormData>;
2608    json(): Promise<any>;
2609    text(): Promise<string>;
2610}
2611
2612interface BroadcastChannelEventMap {
2613    "message": MessageEvent;
2614    "messageerror": MessageEvent;
2615}
2616
2617interface BroadcastChannel extends EventTarget {
2618    /**
2619     * Returns the channel name (as passed to the constructor).
2620     */
2621    readonly name: string;
2622    onmessage: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;
2623    onmessageerror: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;
2624    /**
2625     * Closes the BroadcastChannel object, opening it up to garbage collection.
2626     */
2627    close(): void;
2628    /**
2629     * Sends the given message to other BroadcastChannel objects set up for this channel. Messages can be structured objects, e.g. nested objects and arrays.
2630     */
2631    postMessage(message: any): void;
2632    addEventListener<K extends keyof BroadcastChannelEventMap>(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2633    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2634    removeEventListener<K extends keyof BroadcastChannelEventMap>(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2635    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2636}
2637
2638declare var BroadcastChannel: {
2639    prototype: BroadcastChannel;
2640    new(name: string): BroadcastChannel;
2641};
2642
2643/** This Streams API interface provides a built-in byte length queuing strategy that can be used when constructing streams. */
2644interface ByteLengthQueuingStrategy extends QueuingStrategy<ArrayBufferView> {
2645    readonly highWaterMark: number;
2646    readonly size: QueuingStrategySize<ArrayBufferView>;
2647}
2648
2649declare var ByteLengthQueuingStrategy: {
2650    prototype: ByteLengthQueuingStrategy;
2651    new(init: QueuingStrategyInit): ByteLengthQueuingStrategy;
2652};
2653
2654/** 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. */
2655interface CDATASection extends Text {
2656}
2657
2658declare var CDATASection: {
2659    prototype: CDATASection;
2660    new(): CDATASection;
2661};
2662
2663/** A single condition CSS at-rule, which consists of a condition and a statement block. It is a child of CSSGroupingRule. */
2664interface CSSConditionRule extends CSSGroupingRule {
2665    conditionText: string;
2666}
2667
2668declare var CSSConditionRule: {
2669    prototype: CSSConditionRule;
2670    new(): CSSConditionRule;
2671};
2672
2673interface CSSFontFaceRule extends CSSRule {
2674    readonly style: CSSStyleDeclaration;
2675}
2676
2677declare var CSSFontFaceRule: {
2678    prototype: CSSFontFaceRule;
2679    new(): CSSFontFaceRule;
2680};
2681
2682/** Any CSS at-rule that contains other rules nested within it. */
2683interface CSSGroupingRule extends CSSRule {
2684    readonly cssRules: CSSRuleList;
2685    deleteRule(index: number): void;
2686    insertRule(rule: string, index?: number): number;
2687}
2688
2689declare var CSSGroupingRule: {
2690    prototype: CSSGroupingRule;
2691    new(): CSSGroupingRule;
2692};
2693
2694interface CSSImportRule extends CSSRule {
2695    readonly href: string;
2696    readonly media: MediaList;
2697    readonly styleSheet: CSSStyleSheet;
2698}
2699
2700declare var CSSImportRule: {
2701    prototype: CSSImportRule;
2702    new(): CSSImportRule;
2703};
2704
2705/** 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). */
2706interface CSSKeyframeRule extends CSSRule {
2707    keyText: string;
2708    readonly style: CSSStyleDeclaration;
2709}
2710
2711declare var CSSKeyframeRule: {
2712    prototype: CSSKeyframeRule;
2713    new(): CSSKeyframeRule;
2714};
2715
2716/** 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). */
2717interface CSSKeyframesRule extends CSSRule {
2718    readonly cssRules: CSSRuleList;
2719    name: string;
2720    appendRule(rule: string): void;
2721    deleteRule(select: string): void;
2722    findRule(select: string): CSSKeyframeRule | null;
2723}
2724
2725declare var CSSKeyframesRule: {
2726    prototype: CSSKeyframesRule;
2727    new(): CSSKeyframesRule;
2728};
2729
2730/** 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). */
2731interface CSSMediaRule extends CSSConditionRule {
2732    readonly media: MediaList;
2733}
2734
2735declare var CSSMediaRule: {
2736    prototype: CSSMediaRule;
2737    new(): CSSMediaRule;
2738};
2739
2740/** An object representing a single CSS @namespace at-rule. It implements the CSSRule interface, with a type value of 10 (CSSRule.NAMESPACE_RULE). */
2741interface CSSNamespaceRule extends CSSRule {
2742    readonly namespaceURI: string;
2743    readonly prefix: string;
2744}
2745
2746declare var CSSNamespaceRule: {
2747    prototype: CSSNamespaceRule;
2748    new(): CSSNamespaceRule;
2749};
2750
2751/** CSSPageRule is an interface representing a single CSS @page rule. It implements the CSSRule interface with a type value of 6 (CSSRule.PAGE_RULE). */
2752interface CSSPageRule extends CSSGroupingRule {
2753    selectorText: string;
2754    readonly style: CSSStyleDeclaration;
2755}
2756
2757declare var CSSPageRule: {
2758    prototype: CSSPageRule;
2759    new(): CSSPageRule;
2760};
2761
2762/** A single CSS rule. There are several types of rules, listed in the Type constants section below. */
2763interface CSSRule {
2764    cssText: string;
2765    readonly parentRule: CSSRule | null;
2766    readonly parentStyleSheet: CSSStyleSheet | null;
2767    readonly type: number;
2768    readonly CHARSET_RULE: number;
2769    readonly FONT_FACE_RULE: number;
2770    readonly IMPORT_RULE: number;
2771    readonly KEYFRAMES_RULE: number;
2772    readonly KEYFRAME_RULE: number;
2773    readonly MEDIA_RULE: number;
2774    readonly NAMESPACE_RULE: number;
2775    readonly PAGE_RULE: number;
2776    readonly STYLE_RULE: number;
2777    readonly SUPPORTS_RULE: number;
2778}
2779
2780declare var CSSRule: {
2781    prototype: CSSRule;
2782    new(): CSSRule;
2783    readonly CHARSET_RULE: number;
2784    readonly FONT_FACE_RULE: number;
2785    readonly IMPORT_RULE: number;
2786    readonly KEYFRAMES_RULE: number;
2787    readonly KEYFRAME_RULE: number;
2788    readonly MEDIA_RULE: number;
2789    readonly NAMESPACE_RULE: number;
2790    readonly PAGE_RULE: number;
2791    readonly STYLE_RULE: number;
2792    readonly SUPPORTS_RULE: number;
2793};
2794
2795/** A CSSRuleList is an (indirect-modify only) array-like object containing an ordered collection of CSSRule objects. */
2796interface CSSRuleList {
2797    readonly length: number;
2798    item(index: number): CSSRule | null;
2799    [index: number]: CSSRule;
2800}
2801
2802declare var CSSRuleList: {
2803    prototype: CSSRuleList;
2804    new(): CSSRuleList;
2805};
2806
2807/** An object that is a CSS declaration block, and exposes style information and various style-related methods and properties. */
2808interface CSSStyleDeclaration {
2809    alignContent: string;
2810    alignItems: string;
2811    alignSelf: string;
2812    alignmentBaseline: string;
2813    all: string;
2814    animation: string;
2815    animationDelay: string;
2816    animationDirection: string;
2817    animationDuration: string;
2818    animationFillMode: string;
2819    animationIterationCount: string;
2820    animationName: string;
2821    animationPlayState: string;
2822    animationTimingFunction: string;
2823    backfaceVisibility: string;
2824    background: string;
2825    backgroundAttachment: string;
2826    backgroundClip: string;
2827    backgroundColor: string;
2828    backgroundImage: string;
2829    backgroundOrigin: string;
2830    backgroundPosition: string;
2831    backgroundPositionX: string;
2832    backgroundPositionY: string;
2833    backgroundRepeat: string;
2834    backgroundSize: string;
2835    baselineShift: string;
2836    blockSize: string;
2837    border: string;
2838    borderBlockEnd: string;
2839    borderBlockEndColor: string;
2840    borderBlockEndStyle: string;
2841    borderBlockEndWidth: string;
2842    borderBlockStart: string;
2843    borderBlockStartColor: string;
2844    borderBlockStartStyle: string;
2845    borderBlockStartWidth: string;
2846    borderBottom: string;
2847    borderBottomColor: string;
2848    borderBottomLeftRadius: string;
2849    borderBottomRightRadius: string;
2850    borderBottomStyle: string;
2851    borderBottomWidth: string;
2852    borderCollapse: string;
2853    borderColor: string;
2854    borderImage: string;
2855    borderImageOutset: string;
2856    borderImageRepeat: string;
2857    borderImageSlice: string;
2858    borderImageSource: string;
2859    borderImageWidth: string;
2860    borderInlineEnd: string;
2861    borderInlineEndColor: string;
2862    borderInlineEndStyle: string;
2863    borderInlineEndWidth: string;
2864    borderInlineStart: string;
2865    borderInlineStartColor: string;
2866    borderInlineStartStyle: string;
2867    borderInlineStartWidth: string;
2868    borderLeft: string;
2869    borderLeftColor: string;
2870    borderLeftStyle: string;
2871    borderLeftWidth: string;
2872    borderRadius: string;
2873    borderRight: string;
2874    borderRightColor: string;
2875    borderRightStyle: string;
2876    borderRightWidth: string;
2877    borderSpacing: string;
2878    borderStyle: string;
2879    borderTop: string;
2880    borderTopColor: string;
2881    borderTopLeftRadius: string;
2882    borderTopRightRadius: string;
2883    borderTopStyle: string;
2884    borderTopWidth: string;
2885    borderWidth: string;
2886    bottom: string;
2887    boxShadow: string;
2888    boxSizing: string;
2889    breakAfter: string;
2890    breakBefore: string;
2891    breakInside: string;
2892    captionSide: string;
2893    caretColor: string;
2894    clear: string;
2895    clip: string;
2896    clipPath: string;
2897    clipRule: string;
2898    color: string;
2899    colorInterpolation: string;
2900    colorInterpolationFilters: string;
2901    columnCount: string;
2902    columnFill: string;
2903    columnGap: string;
2904    columnRule: string;
2905    columnRuleColor: string;
2906    columnRuleStyle: string;
2907    columnRuleWidth: string;
2908    columnSpan: string;
2909    columnWidth: string;
2910    columns: string;
2911    content: string;
2912    counterIncrement: string;
2913    counterReset: string;
2914    cssFloat: string;
2915    cssText: string;
2916    cursor: string;
2917    direction: string;
2918    display: string;
2919    dominantBaseline: string;
2920    emptyCells: string;
2921    fill: string;
2922    fillOpacity: string;
2923    fillRule: string;
2924    filter: string;
2925    flex: string;
2926    flexBasis: string;
2927    flexDirection: string;
2928    flexFlow: string;
2929    flexGrow: string;
2930    flexShrink: string;
2931    flexWrap: string;
2932    float: string;
2933    floodColor: string;
2934    floodOpacity: string;
2935    font: string;
2936    fontFamily: string;
2937    fontFeatureSettings: string;
2938    fontKerning: string;
2939    fontSize: string;
2940    fontSizeAdjust: string;
2941    fontStretch: string;
2942    fontStyle: string;
2943    fontSynthesis: string;
2944    fontVariant: string;
2945    fontVariantCaps: string;
2946    fontVariantEastAsian: string;
2947    fontVariantLigatures: string;
2948    fontVariantNumeric: string;
2949    fontVariantPosition: string;
2950    fontWeight: string;
2951    gap: string;
2952    glyphOrientationVertical: string;
2953    grid: string;
2954    gridArea: string;
2955    gridAutoColumns: string;
2956    gridAutoFlow: string;
2957    gridAutoRows: string;
2958    gridColumn: string;
2959    gridColumnEnd: string;
2960    gridColumnGap: string;
2961    gridColumnStart: string;
2962    gridGap: string;
2963    gridRow: string;
2964    gridRowEnd: string;
2965    gridRowGap: string;
2966    gridRowStart: string;
2967    gridTemplate: string;
2968    gridTemplateAreas: string;
2969    gridTemplateColumns: string;
2970    gridTemplateRows: string;
2971    height: string;
2972    hyphens: string;
2973    imageOrientation: string;
2974    imageRendering: string;
2975    inlineSize: string;
2976    justifyContent: string;
2977    justifyItems: string;
2978    justifySelf: string;
2979    left: string;
2980    readonly length: number;
2981    letterSpacing: string;
2982    lightingColor: string;
2983    lineBreak: string;
2984    lineHeight: string;
2985    listStyle: string;
2986    listStyleImage: string;
2987    listStylePosition: string;
2988    listStyleType: string;
2989    margin: string;
2990    marginBlockEnd: string;
2991    marginBlockStart: string;
2992    marginBottom: string;
2993    marginInlineEnd: string;
2994    marginInlineStart: string;
2995    marginLeft: string;
2996    marginRight: string;
2997    marginTop: string;
2998    marker: string;
2999    markerEnd: string;
3000    markerMid: string;
3001    markerStart: string;
3002    mask: string;
3003    maskComposite: string;
3004    maskImage: string;
3005    maskPosition: string;
3006    maskRepeat: string;
3007    maskSize: string;
3008    maskType: string;
3009    maxBlockSize: string;
3010    maxHeight: string;
3011    maxInlineSize: string;
3012    maxWidth: string;
3013    minBlockSize: string;
3014    minHeight: string;
3015    minInlineSize: string;
3016    minWidth: string;
3017    objectFit: string;
3018    objectPosition: string;
3019    opacity: string;
3020    order: string;
3021    orphans: string;
3022    outline: string;
3023    outlineColor: string;
3024    outlineOffset: string;
3025    outlineStyle: string;
3026    outlineWidth: string;
3027    overflow: string;
3028    overflowAnchor: string;
3029    overflowWrap: string;
3030    overflowX: string;
3031    overflowY: string;
3032    overscrollBehavior: string;
3033    overscrollBehaviorBlock: string;
3034    overscrollBehaviorInline: string;
3035    overscrollBehaviorX: string;
3036    overscrollBehaviorY: string;
3037    padding: string;
3038    paddingBlockEnd: string;
3039    paddingBlockStart: string;
3040    paddingBottom: string;
3041    paddingInlineEnd: string;
3042    paddingInlineStart: string;
3043    paddingLeft: string;
3044    paddingRight: string;
3045    paddingTop: string;
3046    pageBreakAfter: string;
3047    pageBreakBefore: string;
3048    pageBreakInside: string;
3049    paintOrder: string;
3050    readonly parentRule: CSSRule | null;
3051    perspective: string;
3052    perspectiveOrigin: string;
3053    placeContent: string;
3054    placeItems: string;
3055    placeSelf: string;
3056    pointerEvents: string;
3057    position: string;
3058    quotes: string;
3059    resize: string;
3060    right: string;
3061    rotate: string;
3062    rowGap: string;
3063    rubyAlign: string;
3064    rubyPosition: string;
3065    scale: string;
3066    scrollBehavior: string;
3067    shapeRendering: string;
3068    stopColor: string;
3069    stopOpacity: string;
3070    stroke: string;
3071    strokeDasharray: string;
3072    strokeDashoffset: string;
3073    strokeLinecap: string;
3074    strokeLinejoin: string;
3075    strokeMiterlimit: string;
3076    strokeOpacity: string;
3077    strokeWidth: string;
3078    tabSize: string;
3079    tableLayout: string;
3080    textAlign: string;
3081    textAlignLast: string;
3082    textAnchor: string;
3083    textCombineUpright: string;
3084    textDecoration: string;
3085    textDecorationColor: string;
3086    textDecorationLine: string;
3087    textDecorationStyle: string;
3088    textEmphasis: string;
3089    textEmphasisColor: string;
3090    textEmphasisPosition: string;
3091    textEmphasisStyle: string;
3092    textIndent: string;
3093    textJustify: string;
3094    textOrientation: string;
3095    textOverflow: string;
3096    textRendering: string;
3097    textShadow: string;
3098    textTransform: string;
3099    textUnderlinePosition: string;
3100    top: string;
3101    touchAction: string;
3102    transform: string;
3103    transformBox: string;
3104    transformOrigin: string;
3105    transformStyle: string;
3106    transition: string;
3107    transitionDelay: string;
3108    transitionDuration: string;
3109    transitionProperty: string;
3110    transitionTimingFunction: string;
3111    translate: string;
3112    unicodeBidi: string;
3113    userSelect: string;
3114    verticalAlign: string;
3115    visibility: string;
3116    /** @deprecated */
3117    webkitAlignContent: string;
3118    /** @deprecated */
3119    webkitAlignItems: string;
3120    /** @deprecated */
3121    webkitAlignSelf: string;
3122    /** @deprecated */
3123    webkitAnimation: string;
3124    /** @deprecated */
3125    webkitAnimationDelay: string;
3126    /** @deprecated */
3127    webkitAnimationDirection: string;
3128    /** @deprecated */
3129    webkitAnimationDuration: string;
3130    /** @deprecated */
3131    webkitAnimationFillMode: string;
3132    /** @deprecated */
3133    webkitAnimationIterationCount: string;
3134    /** @deprecated */
3135    webkitAnimationName: string;
3136    /** @deprecated */
3137    webkitAnimationPlayState: string;
3138    /** @deprecated */
3139    webkitAnimationTimingFunction: string;
3140    /** @deprecated */
3141    webkitAppearance: string;
3142    /** @deprecated */
3143    webkitBackfaceVisibility: string;
3144    /** @deprecated */
3145    webkitBackgroundClip: string;
3146    /** @deprecated */
3147    webkitBackgroundOrigin: string;
3148    /** @deprecated */
3149    webkitBackgroundSize: string;
3150    /** @deprecated */
3151    webkitBorderBottomLeftRadius: string;
3152    /** @deprecated */
3153    webkitBorderBottomRightRadius: string;
3154    /** @deprecated */
3155    webkitBorderRadius: string;
3156    /** @deprecated */
3157    webkitBorderTopLeftRadius: string;
3158    /** @deprecated */
3159    webkitBorderTopRightRadius: string;
3160    /** @deprecated */
3161    webkitBoxAlign: string;
3162    /** @deprecated */
3163    webkitBoxFlex: string;
3164    /** @deprecated */
3165    webkitBoxOrdinalGroup: string;
3166    /** @deprecated */
3167    webkitBoxOrient: string;
3168    /** @deprecated */
3169    webkitBoxPack: string;
3170    /** @deprecated */
3171    webkitBoxShadow: string;
3172    /** @deprecated */
3173    webkitBoxSizing: string;
3174    /** @deprecated */
3175    webkitFilter: string;
3176    /** @deprecated */
3177    webkitFlex: string;
3178    /** @deprecated */
3179    webkitFlexBasis: string;
3180    /** @deprecated */
3181    webkitFlexDirection: string;
3182    /** @deprecated */
3183    webkitFlexFlow: string;
3184    /** @deprecated */
3185    webkitFlexGrow: string;
3186    /** @deprecated */
3187    webkitFlexShrink: string;
3188    /** @deprecated */
3189    webkitFlexWrap: string;
3190    /** @deprecated */
3191    webkitJustifyContent: string;
3192    webkitLineClamp: string;
3193    /** @deprecated */
3194    webkitMask: string;
3195    /** @deprecated */
3196    webkitMaskBoxImage: string;
3197    /** @deprecated */
3198    webkitMaskBoxImageOutset: string;
3199    /** @deprecated */
3200    webkitMaskBoxImageRepeat: string;
3201    /** @deprecated */
3202    webkitMaskBoxImageSlice: string;
3203    /** @deprecated */
3204    webkitMaskBoxImageSource: string;
3205    /** @deprecated */
3206    webkitMaskBoxImageWidth: string;
3207    /** @deprecated */
3208    webkitMaskClip: string;
3209    /** @deprecated */
3210    webkitMaskComposite: string;
3211    /** @deprecated */
3212    webkitMaskImage: string;
3213    /** @deprecated */
3214    webkitMaskOrigin: string;
3215    /** @deprecated */
3216    webkitMaskPosition: string;
3217    /** @deprecated */
3218    webkitMaskRepeat: string;
3219    /** @deprecated */
3220    webkitMaskSize: string;
3221    /** @deprecated */
3222    webkitOrder: string;
3223    /** @deprecated */
3224    webkitPerspective: string;
3225    /** @deprecated */
3226    webkitPerspectiveOrigin: string;
3227    webkitTapHighlightColor: string;
3228    /** @deprecated */
3229    webkitTextFillColor: string;
3230    /** @deprecated */
3231    webkitTextSizeAdjust: string;
3232    /** @deprecated */
3233    webkitTextStroke: string;
3234    /** @deprecated */
3235    webkitTextStrokeColor: string;
3236    /** @deprecated */
3237    webkitTextStrokeWidth: string;
3238    /** @deprecated */
3239    webkitTransform: string;
3240    /** @deprecated */
3241    webkitTransformOrigin: string;
3242    /** @deprecated */
3243    webkitTransformStyle: string;
3244    /** @deprecated */
3245    webkitTransition: string;
3246    /** @deprecated */
3247    webkitTransitionDelay: string;
3248    /** @deprecated */
3249    webkitTransitionDuration: string;
3250    /** @deprecated */
3251    webkitTransitionProperty: string;
3252    /** @deprecated */
3253    webkitTransitionTimingFunction: string;
3254    /** @deprecated */
3255    webkitUserSelect: string;
3256    whiteSpace: string;
3257    widows: string;
3258    width: string;
3259    willChange: string;
3260    wordBreak: string;
3261    wordSpacing: string;
3262    wordWrap: string;
3263    writingMode: string;
3264    zIndex: string;
3265    /** @deprecated */
3266    zoom: string;
3267    getPropertyPriority(property: string): string;
3268    getPropertyValue(property: string): string;
3269    item(index: number): string;
3270    removeProperty(property: string): string;
3271    setProperty(property: string, value: string | null, priority?: string): void;
3272    [index: number]: string;
3273}
3274
3275declare var CSSStyleDeclaration: {
3276    prototype: CSSStyleDeclaration;
3277    new(): CSSStyleDeclaration;
3278};
3279
3280/** CSSStyleRule represents a single CSS style rule. It implements the CSSRule interface with a type value of 1 (CSSRule.STYLE_RULE). */
3281interface CSSStyleRule extends CSSRule {
3282    selectorText: string;
3283    readonly style: CSSStyleDeclaration;
3284}
3285
3286declare var CSSStyleRule: {
3287    prototype: CSSStyleRule;
3288    new(): CSSStyleRule;
3289};
3290
3291/** A single CSS style sheet. It inherits properties and methods from its parent, StyleSheet. */
3292interface CSSStyleSheet extends StyleSheet {
3293    readonly cssRules: CSSRuleList;
3294    readonly ownerRule: CSSRule | null;
3295    readonly rules: CSSRuleList;
3296    addRule(selector?: string, style?: string, index?: number): number;
3297    deleteRule(index: number): void;
3298    insertRule(rule: string, index?: number): number;
3299    removeRule(index?: number): void;
3300}
3301
3302declare var CSSStyleSheet: {
3303    prototype: CSSStyleSheet;
3304    new(): CSSStyleSheet;
3305};
3306
3307/** 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). */
3308interface CSSSupportsRule extends CSSConditionRule {
3309}
3310
3311declare var CSSSupportsRule: {
3312    prototype: CSSSupportsRule;
3313    new(): CSSSupportsRule;
3314};
3315
3316/** 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. */
3317interface Cache {
3318    add(request: RequestInfo): Promise<void>;
3319    addAll(requests: RequestInfo[]): Promise<void>;
3320    delete(request: RequestInfo, options?: CacheQueryOptions): Promise<boolean>;
3321    keys(request?: RequestInfo, options?: CacheQueryOptions): Promise<ReadonlyArray<Request>>;
3322    match(request: RequestInfo, options?: CacheQueryOptions): Promise<Response | undefined>;
3323    matchAll(request?: RequestInfo, options?: CacheQueryOptions): Promise<ReadonlyArray<Response>>;
3324    put(request: RequestInfo, response: Response): Promise<void>;
3325}
3326
3327declare var Cache: {
3328    prototype: Cache;
3329    new(): Cache;
3330};
3331
3332/** The storage for Cache objects. */
3333interface CacheStorage {
3334    delete(cacheName: string): Promise<boolean>;
3335    has(cacheName: string): Promise<boolean>;
3336    keys(): Promise<string[]>;
3337    match(request: RequestInfo, options?: MultiCacheQueryOptions): Promise<Response | undefined>;
3338    open(cacheName: string): Promise<Cache>;
3339}
3340
3341declare var CacheStorage: {
3342    prototype: CacheStorage;
3343    new(): CacheStorage;
3344};
3345
3346interface CanvasCompositing {
3347    globalAlpha: number;
3348    globalCompositeOperation: string;
3349}
3350
3351interface CanvasDrawImage {
3352    drawImage(image: CanvasImageSource, dx: number, dy: number): void;
3353    drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void;
3354    drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;
3355}
3356
3357interface CanvasDrawPath {
3358    beginPath(): void;
3359    clip(fillRule?: CanvasFillRule): void;
3360    clip(path: Path2D, fillRule?: CanvasFillRule): void;
3361    fill(fillRule?: CanvasFillRule): void;
3362    fill(path: Path2D, fillRule?: CanvasFillRule): void;
3363    isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean;
3364    isPointInPath(path: Path2D, x: number, y: number, fillRule?: CanvasFillRule): boolean;
3365    isPointInStroke(x: number, y: number): boolean;
3366    isPointInStroke(path: Path2D, x: number, y: number): boolean;
3367    stroke(): void;
3368    stroke(path: Path2D): void;
3369}
3370
3371interface CanvasFillStrokeStyles {
3372    fillStyle: string | CanvasGradient | CanvasPattern;
3373    strokeStyle: string | CanvasGradient | CanvasPattern;
3374    createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;
3375    createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null;
3376    createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;
3377}
3378
3379interface CanvasFilters {
3380    filter: string;
3381}
3382
3383/** An opaque object describing a gradient. It is returned by the methods CanvasRenderingContext2D.createLinearGradient() or CanvasRenderingContext2D.createRadialGradient(). */
3384interface CanvasGradient {
3385    /**
3386     * 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.
3387     *
3388     * Throws an "IndexSizeError" DOMException if the offset is out of range. Throws a "SyntaxError" DOMException if the color cannot be parsed.
3389     */
3390    addColorStop(offset: number, color: string): void;
3391}
3392
3393declare var CanvasGradient: {
3394    prototype: CanvasGradient;
3395    new(): CanvasGradient;
3396};
3397
3398interface CanvasImageData {
3399    createImageData(sw: number, sh: number): ImageData;
3400    createImageData(imagedata: ImageData): ImageData;
3401    getImageData(sx: number, sy: number, sw: number, sh: number): ImageData;
3402    putImageData(imagedata: ImageData, dx: number, dy: number): void;
3403    putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void;
3404}
3405
3406interface CanvasImageSmoothing {
3407    imageSmoothingEnabled: boolean;
3408    imageSmoothingQuality: ImageSmoothingQuality;
3409}
3410
3411interface CanvasPath {
3412    arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;
3413    arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;
3414    bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
3415    closePath(): void;
3416    ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;
3417    lineTo(x: number, y: number): void;
3418    moveTo(x: number, y: number): void;
3419    quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
3420    rect(x: number, y: number, w: number, h: number): void;
3421}
3422
3423interface CanvasPathDrawingStyles {
3424    lineCap: CanvasLineCap;
3425    lineDashOffset: number;
3426    lineJoin: CanvasLineJoin;
3427    lineWidth: number;
3428    miterLimit: number;
3429    getLineDash(): number[];
3430    setLineDash(segments: number[]): void;
3431}
3432
3433/** An opaque object describing a pattern, based on an image, a canvas, or a video, created by the CanvasRenderingContext2D.createPattern() method. */
3434interface CanvasPattern {
3435    /**
3436     * Sets the transformation matrix that will be used when rendering the pattern during a fill or stroke painting operation.
3437     */
3438    setTransform(transform?: DOMMatrix2DInit): void;
3439}
3440
3441declare var CanvasPattern: {
3442    prototype: CanvasPattern;
3443    new(): CanvasPattern;
3444};
3445
3446interface CanvasRect {
3447    clearRect(x: number, y: number, w: number, h: number): void;
3448    fillRect(x: number, y: number, w: number, h: number): void;
3449    strokeRect(x: number, y: number, w: number, h: number): void;
3450}
3451
3452/** 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. */
3453interface CanvasRenderingContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform, CanvasUserInterface {
3454    readonly canvas: HTMLCanvasElement;
3455}
3456
3457declare var CanvasRenderingContext2D: {
3458    prototype: CanvasRenderingContext2D;
3459    new(): CanvasRenderingContext2D;
3460};
3461
3462interface CanvasShadowStyles {
3463    shadowBlur: number;
3464    shadowColor: string;
3465    shadowOffsetX: number;
3466    shadowOffsetY: number;
3467}
3468
3469interface CanvasState {
3470    restore(): void;
3471    save(): void;
3472}
3473
3474interface CanvasText {
3475    fillText(text: string, x: number, y: number, maxWidth?: number): void;
3476    measureText(text: string): TextMetrics;
3477    strokeText(text: string, x: number, y: number, maxWidth?: number): void;
3478}
3479
3480interface CanvasTextDrawingStyles {
3481    direction: CanvasDirection;
3482    font: string;
3483    textAlign: CanvasTextAlign;
3484    textBaseline: CanvasTextBaseline;
3485}
3486
3487interface CanvasTransform {
3488    getTransform(): DOMMatrix;
3489    resetTransform(): void;
3490    rotate(angle: number): void;
3491    scale(x: number, y: number): void;
3492    setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;
3493    setTransform(transform?: DOMMatrix2DInit): void;
3494    transform(a: number, b: number, c: number, d: number, e: number, f: number): void;
3495    translate(x: number, y: number): void;
3496}
3497
3498interface CanvasUserInterface {
3499    drawFocusIfNeeded(element: Element): void;
3500    drawFocusIfNeeded(path: Path2D, element: Element): void;
3501    scrollPathIntoView(): void;
3502    scrollPathIntoView(path: Path2D): void;
3503}
3504
3505interface CaretPosition {
3506    readonly offset: number;
3507    readonly offsetNode: Node;
3508    getClientRect(): DOMRect | null;
3509}
3510
3511declare var CaretPosition: {
3512    prototype: CaretPosition;
3513    new(): CaretPosition;
3514};
3515
3516/** 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. */
3517interface ChannelMergerNode extends AudioNode {
3518}
3519
3520declare var ChannelMergerNode: {
3521    prototype: ChannelMergerNode;
3522    new(context: BaseAudioContext, options?: ChannelMergerOptions): ChannelMergerNode;
3523};
3524
3525/** 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. */
3526interface ChannelSplitterNode extends AudioNode {
3527}
3528
3529declare var ChannelSplitterNode: {
3530    prototype: ChannelSplitterNode;
3531    new(context: BaseAudioContext, options?: ChannelSplitterOptions): ChannelSplitterNode;
3532};
3533
3534/** 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. */
3535interface CharacterData extends Node, ChildNode, NonDocumentTypeChildNode {
3536    data: string;
3537    readonly length: number;
3538    readonly ownerDocument: Document;
3539    appendData(data: string): void;
3540    deleteData(offset: number, count: number): void;
3541    insertData(offset: number, data: string): void;
3542    replaceData(offset: number, count: number, data: string): void;
3543    substringData(offset: number, count: number): string;
3544}
3545
3546declare var CharacterData: {
3547    prototype: CharacterData;
3548    new(): CharacterData;
3549};
3550
3551interface ChildNode extends Node {
3552    /**
3553     * Inserts nodes just after node, while replacing strings in nodes with equivalent Text nodes.
3554     *
3555     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
3556     */
3557    after(...nodes: (Node | string)[]): void;
3558    /**
3559     * Inserts nodes just before node, while replacing strings in nodes with equivalent Text nodes.
3560     *
3561     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
3562     */
3563    before(...nodes: (Node | string)[]): void;
3564    /**
3565     * Removes node.
3566     */
3567    remove(): void;
3568    /**
3569     * Replaces node with nodes, while replacing strings in nodes with equivalent Text nodes.
3570     *
3571     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
3572     */
3573    replaceWith(...nodes: (Node | string)[]): void;
3574}
3575
3576interface ClientRect {
3577    bottom: number;
3578    readonly height: number;
3579    left: number;
3580    right: number;
3581    top: number;
3582    readonly width: number;
3583}
3584
3585declare var ClientRect: {
3586    prototype: ClientRect;
3587    new(): ClientRect;
3588};
3589
3590interface ClientRectList {
3591    readonly length: number;
3592    item(index: number): ClientRect;
3593    [index: number]: ClientRect;
3594}
3595
3596declare var ClientRectList: {
3597    prototype: ClientRectList;
3598    new(): ClientRectList;
3599};
3600
3601interface Clipboard extends EventTarget {
3602    readText(): Promise<string>;
3603    writeText(data: string): Promise<void>;
3604}
3605
3606declare var Clipboard: {
3607    prototype: Clipboard;
3608    new(): Clipboard;
3609};
3610
3611/** Events providing information related to modification of the clipboard, that is cut, copy, and paste events. */
3612interface ClipboardEvent extends Event {
3613    readonly clipboardData: DataTransfer | null;
3614}
3615
3616declare var ClipboardEvent: {
3617    prototype: ClipboardEvent;
3618    new(type: string, eventInitDict?: ClipboardEventInit): ClipboardEvent;
3619};
3620
3621/** 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. */
3622interface CloseEvent extends Event {
3623    /**
3624     * Returns the WebSocket connection close code provided by the server.
3625     */
3626    readonly code: number;
3627    /**
3628     * Returns the WebSocket connection close reason provided by the server.
3629     */
3630    readonly reason: string;
3631    /**
3632     * Returns true if the connection closed cleanly; false otherwise.
3633     */
3634    readonly wasClean: boolean;
3635}
3636
3637declare var CloseEvent: {
3638    prototype: CloseEvent;
3639    new(type: string, eventInitDict?: CloseEventInit): CloseEvent;
3640};
3641
3642/** Textual notations within markup; although it is generally not visually shown, such comments are available to be read in the source view. */
3643interface Comment extends CharacterData {
3644}
3645
3646declare var Comment: {
3647    prototype: Comment;
3648    new(data?: string): Comment;
3649};
3650
3651/** The DOM CompositionEvent represents events that occur due to the user indirectly entering text. */
3652interface CompositionEvent extends UIEvent {
3653    readonly data: string;
3654}
3655
3656declare var CompositionEvent: {
3657    prototype: CompositionEvent;
3658    new(type: string, eventInitDict?: CompositionEventInit): CompositionEvent;
3659};
3660
3661interface ConcatParams extends Algorithm {
3662    algorithmId: Uint8Array;
3663    hash?: string | Algorithm;
3664    partyUInfo: Uint8Array;
3665    partyVInfo: Uint8Array;
3666    privateInfo?: Uint8Array;
3667    publicInfo?: Uint8Array;
3668}
3669
3670interface ConstantSourceNode extends AudioScheduledSourceNode {
3671    readonly offset: AudioParam;
3672    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3673    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3674    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3675    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3676}
3677
3678declare var ConstantSourceNode: {
3679    prototype: ConstantSourceNode;
3680    new(context: BaseAudioContext, options?: ConstantSourceOptions): ConstantSourceNode;
3681};
3682
3683/** 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. */
3684interface ConvolverNode extends AudioNode {
3685    buffer: AudioBuffer | null;
3686    normalize: boolean;
3687}
3688
3689declare var ConvolverNode: {
3690    prototype: ConvolverNode;
3691    new(context: BaseAudioContext, options?: ConvolverOptions): ConvolverNode;
3692};
3693
3694/** This Streams API interface provides a built-in byte length queuing strategy that can be used when constructing streams. */
3695interface CountQueuingStrategy extends QueuingStrategy {
3696    readonly highWaterMark: number;
3697    readonly size: QueuingStrategySize;
3698}
3699
3700declare var CountQueuingStrategy: {
3701    prototype: CountQueuingStrategy;
3702    new(init: QueuingStrategyInit): CountQueuingStrategy;
3703};
3704
3705interface Credential {
3706    readonly id: string;
3707    readonly type: string;
3708}
3709
3710declare var Credential: {
3711    prototype: Credential;
3712    new(): Credential;
3713};
3714
3715interface CredentialsContainer {
3716    create(options?: CredentialCreationOptions): Promise<Credential | null>;
3717    get(options?: CredentialRequestOptions): Promise<Credential | null>;
3718    preventSilentAccess(): Promise<void>;
3719    store(credential: Credential): Promise<Credential>;
3720}
3721
3722declare var CredentialsContainer: {
3723    prototype: CredentialsContainer;
3724    new(): CredentialsContainer;
3725};
3726
3727/** Basic cryptography features available in the current context. It allows access to a cryptographically strong random number generator and to cryptographic primitives. */
3728interface Crypto {
3729    readonly subtle: SubtleCrypto;
3730    getRandomValues<T extends Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | null>(array: T): T;
3731}
3732
3733declare var Crypto: {
3734    prototype: Crypto;
3735    new(): Crypto;
3736};
3737
3738/** The CryptoKey dictionary of the Web Crypto API represents a cryptographic key. */
3739interface CryptoKey {
3740    readonly algorithm: KeyAlgorithm;
3741    readonly extractable: boolean;
3742    readonly type: KeyType;
3743    readonly usages: KeyUsage[];
3744}
3745
3746declare var CryptoKey: {
3747    prototype: CryptoKey;
3748    new(): CryptoKey;
3749};
3750
3751/** The CryptoKeyPair dictionary of the Web Crypto API represents a key pair for an asymmetric cryptography algorithm, also known as a public-key algorithm. */
3752interface CryptoKeyPair {
3753    privateKey: CryptoKey;
3754    publicKey: CryptoKey;
3755}
3756
3757declare var CryptoKeyPair: {
3758    prototype: CryptoKeyPair;
3759    new(): CryptoKeyPair;
3760};
3761
3762interface CustomElementRegistry {
3763    define(name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions): void;
3764    get(name: string): any;
3765    upgrade(root: Node): void;
3766    whenDefined(name: string): Promise<void>;
3767}
3768
3769declare var CustomElementRegistry: {
3770    prototype: CustomElementRegistry;
3771    new(): CustomElementRegistry;
3772};
3773
3774interface CustomEvent<T = any> extends Event {
3775    /**
3776     * Returns any custom data event was created with. Typically used for synthetic events.
3777     */
3778    readonly detail: T;
3779    initCustomEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, detailArg: T): void;
3780}
3781
3782declare var CustomEvent: {
3783    prototype: CustomEvent;
3784    new<T>(typeArg: string, eventInitDict?: CustomEventInit<T>): CustomEvent<T>;
3785};
3786
3787/** An error object that contains an error name. */
3788interface DOMError {
3789    readonly name: string;
3790    toString(): string;
3791}
3792
3793declare var DOMError: {
3794    prototype: DOMError;
3795    new(): DOMError;
3796};
3797
3798/** An abnormal event (called an exception) which occurs as a result of calling a method or accessing a property of a web API. */
3799interface DOMException {
3800    readonly code: number;
3801    readonly message: string;
3802    readonly name: string;
3803    readonly ABORT_ERR: number;
3804    readonly DATA_CLONE_ERR: number;
3805    readonly DOMSTRING_SIZE_ERR: number;
3806    readonly HIERARCHY_REQUEST_ERR: number;
3807    readonly INDEX_SIZE_ERR: number;
3808    readonly INUSE_ATTRIBUTE_ERR: number;
3809    readonly INVALID_ACCESS_ERR: number;
3810    readonly INVALID_CHARACTER_ERR: number;
3811    readonly INVALID_MODIFICATION_ERR: number;
3812    readonly INVALID_NODE_TYPE_ERR: number;
3813    readonly INVALID_STATE_ERR: number;
3814    readonly NAMESPACE_ERR: number;
3815    readonly NETWORK_ERR: number;
3816    readonly NOT_FOUND_ERR: number;
3817    readonly NOT_SUPPORTED_ERR: number;
3818    readonly NO_DATA_ALLOWED_ERR: number;
3819    readonly NO_MODIFICATION_ALLOWED_ERR: number;
3820    readonly QUOTA_EXCEEDED_ERR: number;
3821    readonly SECURITY_ERR: number;
3822    readonly SYNTAX_ERR: number;
3823    readonly TIMEOUT_ERR: number;
3824    readonly TYPE_MISMATCH_ERR: number;
3825    readonly URL_MISMATCH_ERR: number;
3826    readonly VALIDATION_ERR: number;
3827    readonly WRONG_DOCUMENT_ERR: number;
3828}
3829
3830declare var DOMException: {
3831    prototype: DOMException;
3832    new(message?: string, name?: string): DOMException;
3833    readonly ABORT_ERR: number;
3834    readonly DATA_CLONE_ERR: number;
3835    readonly DOMSTRING_SIZE_ERR: number;
3836    readonly HIERARCHY_REQUEST_ERR: number;
3837    readonly INDEX_SIZE_ERR: number;
3838    readonly INUSE_ATTRIBUTE_ERR: number;
3839    readonly INVALID_ACCESS_ERR: number;
3840    readonly INVALID_CHARACTER_ERR: number;
3841    readonly INVALID_MODIFICATION_ERR: number;
3842    readonly INVALID_NODE_TYPE_ERR: number;
3843    readonly INVALID_STATE_ERR: number;
3844    readonly NAMESPACE_ERR: number;
3845    readonly NETWORK_ERR: number;
3846    readonly NOT_FOUND_ERR: number;
3847    readonly NOT_SUPPORTED_ERR: number;
3848    readonly NO_DATA_ALLOWED_ERR: number;
3849    readonly NO_MODIFICATION_ALLOWED_ERR: number;
3850    readonly QUOTA_EXCEEDED_ERR: number;
3851    readonly SECURITY_ERR: number;
3852    readonly SYNTAX_ERR: number;
3853    readonly TIMEOUT_ERR: number;
3854    readonly TYPE_MISMATCH_ERR: number;
3855    readonly URL_MISMATCH_ERR: number;
3856    readonly VALIDATION_ERR: number;
3857    readonly WRONG_DOCUMENT_ERR: number;
3858};
3859
3860/** An object providing methods which are not dependent on any particular document. Such an object is returned by the Document.implementation property. */
3861interface DOMImplementation {
3862    createDocument(namespace: string | null, qualifiedName: string | null, doctype?: DocumentType | null): XMLDocument;
3863    createDocumentType(qualifiedName: string, publicId: string, systemId: string): DocumentType;
3864    createHTMLDocument(title?: string): Document;
3865    /** @deprecated */
3866    hasFeature(...args: any[]): true;
3867}
3868
3869declare var DOMImplementation: {
3870    prototype: DOMImplementation;
3871    new(): DOMImplementation;
3872};
3873
3874interface DOML2DeprecatedColorProperty {
3875    color: string;
3876}
3877
3878interface DOMMatrix extends DOMMatrixReadOnly {
3879    a: number;
3880    b: number;
3881    c: number;
3882    d: number;
3883    e: number;
3884    f: number;
3885    m11: number;
3886    m12: number;
3887    m13: number;
3888    m14: number;
3889    m21: number;
3890    m22: number;
3891    m23: number;
3892    m24: number;
3893    m31: number;
3894    m32: number;
3895    m33: number;
3896    m34: number;
3897    m41: number;
3898    m42: number;
3899    m43: number;
3900    m44: number;
3901    invertSelf(): DOMMatrix;
3902    multiplySelf(other?: DOMMatrixInit): DOMMatrix;
3903    preMultiplySelf(other?: DOMMatrixInit): DOMMatrix;
3904    rotateAxisAngleSelf(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;
3905    rotateFromVectorSelf(x?: number, y?: number): DOMMatrix;
3906    rotateSelf(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;
3907    scale3dSelf(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
3908    scaleSelf(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
3909    setMatrixValue(transformList: string): DOMMatrix;
3910    skewXSelf(sx?: number): DOMMatrix;
3911    skewYSelf(sy?: number): DOMMatrix;
3912    translateSelf(tx?: number, ty?: number, tz?: number): DOMMatrix;
3913}
3914
3915declare var DOMMatrix: {
3916    prototype: DOMMatrix;
3917    new(init?: string | number[]): DOMMatrix;
3918    fromFloat32Array(array32: Float32Array): DOMMatrix;
3919    fromFloat64Array(array64: Float64Array): DOMMatrix;
3920    fromMatrix(other?: DOMMatrixInit): DOMMatrix;
3921};
3922
3923type SVGMatrix = DOMMatrix;
3924declare var SVGMatrix: typeof DOMMatrix;
3925
3926type WebKitCSSMatrix = DOMMatrix;
3927declare var WebKitCSSMatrix: typeof DOMMatrix;
3928
3929interface DOMMatrixReadOnly {
3930    readonly a: number;
3931    readonly b: number;
3932    readonly c: number;
3933    readonly d: number;
3934    readonly e: number;
3935    readonly f: number;
3936    readonly is2D: boolean;
3937    readonly isIdentity: boolean;
3938    readonly m11: number;
3939    readonly m12: number;
3940    readonly m13: number;
3941    readonly m14: number;
3942    readonly m21: number;
3943    readonly m22: number;
3944    readonly m23: number;
3945    readonly m24: number;
3946    readonly m31: number;
3947    readonly m32: number;
3948    readonly m33: number;
3949    readonly m34: number;
3950    readonly m41: number;
3951    readonly m42: number;
3952    readonly m43: number;
3953    readonly m44: number;
3954    flipX(): DOMMatrix;
3955    flipY(): DOMMatrix;
3956    inverse(): DOMMatrix;
3957    multiply(other?: DOMMatrixInit): DOMMatrix;
3958    rotate(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;
3959    rotateAxisAngle(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;
3960    rotateFromVector(x?: number, y?: number): DOMMatrix;
3961    scale(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
3962    scale3d(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
3963    /** @deprecated */
3964    scaleNonUniform(scaleX?: number, scaleY?: number): DOMMatrix;
3965    skewX(sx?: number): DOMMatrix;
3966    skewY(sy?: number): DOMMatrix;
3967    toFloat32Array(): Float32Array;
3968    toFloat64Array(): Float64Array;
3969    toJSON(): any;
3970    transformPoint(point?: DOMPointInit): DOMPoint;
3971    translate(tx?: number, ty?: number, tz?: number): DOMMatrix;
3972    toString(): string;
3973}
3974
3975declare var DOMMatrixReadOnly: {
3976    prototype: DOMMatrixReadOnly;
3977    new(init?: string | number[]): DOMMatrixReadOnly;
3978    fromFloat32Array(array32: Float32Array): DOMMatrixReadOnly;
3979    fromFloat64Array(array64: Float64Array): DOMMatrixReadOnly;
3980    fromMatrix(other?: DOMMatrixInit): DOMMatrixReadOnly;
3981    toString(): string;
3982};
3983
3984/** Provides the ability to parse XML or HTML source code from a string into a DOM Document. */
3985interface DOMParser {
3986    /**
3987     * 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).
3988     *
3989     * For the XML parser, if string cannot be parsed, then the returned Document will contain elements describing the resulting error.
3990     *
3991     * Note that script elements are not evaluated during parsing, and the resulting document's encoding will always be UTF-8.
3992     *
3993     * Values other than the above for type will cause a TypeError exception to be thrown.
3994     */
3995    parseFromString(string: string, type: DOMParserSupportedType): Document;
3996}
3997
3998declare var DOMParser: {
3999    prototype: DOMParser;
4000    new(): DOMParser;
4001};
4002
4003interface DOMPoint extends DOMPointReadOnly {
4004    w: number;
4005    x: number;
4006    y: number;
4007    z: number;
4008}
4009
4010declare var DOMPoint: {
4011    prototype: DOMPoint;
4012    new(x?: number, y?: number, z?: number, w?: number): DOMPoint;
4013    fromPoint(other?: DOMPointInit): DOMPoint;
4014};
4015
4016type SVGPoint = DOMPoint;
4017declare var SVGPoint: typeof DOMPoint;
4018
4019interface DOMPointReadOnly {
4020    readonly w: number;
4021    readonly x: number;
4022    readonly y: number;
4023    readonly z: number;
4024    matrixTransform(matrix?: DOMMatrixInit): DOMPoint;
4025    toJSON(): any;
4026}
4027
4028declare var DOMPointReadOnly: {
4029    prototype: DOMPointReadOnly;
4030    new(x?: number, y?: number, z?: number, w?: number): DOMPointReadOnly;
4031    fromPoint(other?: DOMPointInit): DOMPointReadOnly;
4032};
4033
4034interface DOMQuad {
4035    readonly p1: DOMPoint;
4036    readonly p2: DOMPoint;
4037    readonly p3: DOMPoint;
4038    readonly p4: DOMPoint;
4039    getBounds(): DOMRect;
4040    toJSON(): any;
4041}
4042
4043declare var DOMQuad: {
4044    prototype: DOMQuad;
4045    new(p1?: DOMPointInit, p2?: DOMPointInit, p3?: DOMPointInit, p4?: DOMPointInit): DOMQuad;
4046    fromQuad(other?: DOMQuadInit): DOMQuad;
4047    fromRect(other?: DOMRectInit): DOMQuad;
4048};
4049
4050interface DOMRect extends DOMRectReadOnly {
4051    height: number;
4052    width: number;
4053    x: number;
4054    y: number;
4055}
4056
4057declare var DOMRect: {
4058    prototype: DOMRect;
4059    new(x?: number, y?: number, width?: number, height?: number): DOMRect;
4060    fromRect(other?: DOMRectInit): DOMRect;
4061};
4062
4063type SVGRect = DOMRect;
4064declare var SVGRect: typeof DOMRect;
4065
4066interface DOMRectList {
4067    readonly length: number;
4068    item(index: number): DOMRect | null;
4069    [index: number]: DOMRect;
4070}
4071
4072declare var DOMRectList: {
4073    prototype: DOMRectList;
4074    new(): DOMRectList;
4075};
4076
4077interface DOMRectReadOnly {
4078    readonly bottom: number;
4079    readonly height: number;
4080    readonly left: number;
4081    readonly right: number;
4082    readonly top: number;
4083    readonly width: number;
4084    readonly x: number;
4085    readonly y: number;
4086    toJSON(): any;
4087}
4088
4089declare var DOMRectReadOnly: {
4090    prototype: DOMRectReadOnly;
4091    new(x?: number, y?: number, width?: number, height?: number): DOMRectReadOnly;
4092    fromRect(other?: DOMRectInit): DOMRectReadOnly;
4093};
4094
4095interface DOMSettableTokenList extends DOMTokenList {
4096    value: string;
4097}
4098
4099declare var DOMSettableTokenList: {
4100    prototype: DOMSettableTokenList;
4101    new(): DOMSettableTokenList;
4102};
4103
4104/** A type returned by some APIs which contains a list of DOMString (strings). */
4105interface DOMStringList {
4106    /**
4107     * Returns the number of strings in strings.
4108     */
4109    readonly length: number;
4110    /**
4111     * Returns true if strings contains string, and false otherwise.
4112     */
4113    contains(string: string): boolean;
4114    /**
4115     * Returns the string with index index from strings.
4116     */
4117    item(index: number): string | null;
4118    [index: number]: string;
4119}
4120
4121declare var DOMStringList: {
4122    prototype: DOMStringList;
4123    new(): DOMStringList;
4124};
4125
4126/** Used by the dataset HTML attribute to represent data for custom attributes added to elements. */
4127interface DOMStringMap {
4128    [name: string]: string | undefined;
4129}
4130
4131declare var DOMStringMap: {
4132    prototype: DOMStringMap;
4133    new(): DOMStringMap;
4134};
4135
4136/** 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. */
4137interface DOMTokenList {
4138    /**
4139     * Returns the number of tokens.
4140     */
4141    readonly length: number;
4142    /**
4143     * Returns the associated set as string.
4144     *
4145     * Can be set, to change the associated attribute.
4146     */
4147    value: string;
4148    toString(): string;
4149    /**
4150     * Adds all arguments passed, except those already present.
4151     *
4152     * Throws a "SyntaxError" DOMException if one of the arguments is the empty string.
4153     *
4154     * Throws an "InvalidCharacterError" DOMException if one of the arguments contains any ASCII whitespace.
4155     */
4156    add(...tokens: string[]): void;
4157    /**
4158     * Returns true if token is present, and false otherwise.
4159     */
4160    contains(token: string): boolean;
4161    /**
4162     * Returns the token with index index.
4163     */
4164    item(index: number): string | null;
4165    /**
4166     * Removes arguments passed, if they are present.
4167     *
4168     * Throws a "SyntaxError" DOMException if one of the arguments is the empty string.
4169     *
4170     * Throws an "InvalidCharacterError" DOMException if one of the arguments contains any ASCII whitespace.
4171     */
4172    remove(...tokens: string[]): void;
4173    /**
4174     * Replaces token with newToken.
4175     *
4176     * Returns true if token was replaced with newToken, and false otherwise.
4177     *
4178     * Throws a "SyntaxError" DOMException if one of the arguments is the empty string.
4179     *
4180     * Throws an "InvalidCharacterError" DOMException if one of the arguments contains any ASCII whitespace.
4181     */
4182    replace(oldToken: string, newToken: string): void;
4183    /**
4184     * Returns true if token is in the associated attribute's supported tokens. Returns false otherwise.
4185     *
4186     * Throws a TypeError if the associated attribute has no supported tokens defined.
4187     */
4188    supports(token: string): boolean;
4189    /**
4190     * 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()).
4191     *
4192     * Returns true if token is now present, and false otherwise.
4193     *
4194     * Throws a "SyntaxError" DOMException if token is empty.
4195     *
4196     * Throws an "InvalidCharacterError" DOMException if token contains any spaces.
4197     */
4198    toggle(token: string, force?: boolean): boolean;
4199    forEach(callbackfn: (value: string, key: number, parent: DOMTokenList) => void, thisArg?: any): void;
4200    [index: number]: string;
4201}
4202
4203declare var DOMTokenList: {
4204    prototype: DOMTokenList;
4205    new(): DOMTokenList;
4206};
4207
4208interface DataCue extends TextTrackCue {
4209    data: ArrayBuffer;
4210    addEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: DataCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4211    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4212    removeEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: DataCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4213    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
4214}
4215
4216declare var DataCue: {
4217    prototype: DataCue;
4218    new(): DataCue;
4219};
4220
4221/** 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. */
4222interface DataTransfer {
4223    /**
4224     * 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.
4225     *
4226     * Can be set, to change the selected operation.
4227     *
4228     * The possible values are "none", "copy", "link", and "move".
4229     */
4230    dropEffect: "none" | "copy" | "link" | "move";
4231    /**
4232     * Returns the kinds of operations that are to be allowed.
4233     *
4234     * Can be set (during the dragstart event), to change the allowed operations.
4235     *
4236     * The possible values are "none", "copy", "copyLink", "copyMove", "link", "linkMove", "move", "all", and "uninitialized",
4237     */
4238    effectAllowed: "none" | "copy" | "copyLink" | "copyMove" | "link" | "linkMove" | "move" | "all" | "uninitialized";
4239    /**
4240     * Returns a FileList of the files being dragged, if any.
4241     */
4242    readonly files: FileList;
4243    /**
4244     * Returns a DataTransferItemList object, with the drag data.
4245     */
4246    readonly items: DataTransferItemList;
4247    /**
4248     * 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".
4249     */
4250    readonly types: ReadonlyArray<string>;
4251    /**
4252     * Removes the data of the specified formats. Removes all data if the argument is omitted.
4253     */
4254    clearData(format?: string): void;
4255    /**
4256     * Returns the specified data. If there is no such data, returns the empty string.
4257     */
4258    getData(format: string): string;
4259    /**
4260     * Adds the specified data.
4261     */
4262    setData(format: string, data: string): void;
4263    /**
4264     * Uses the given element to update the drag feedback, replacing any previously specified feedback.
4265     */
4266    setDragImage(image: Element, x: number, y: number): void;
4267}
4268
4269declare var DataTransfer: {
4270    prototype: DataTransfer;
4271    new(): DataTransfer;
4272};
4273
4274/** 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. */
4275interface DataTransferItem {
4276    /**
4277     * Returns the drag data item kind, one of: "string", "file".
4278     */
4279    readonly kind: string;
4280    /**
4281     * Returns the drag data item type string.
4282     */
4283    readonly type: string;
4284    /**
4285     * Returns a File object, if the drag data item kind is File.
4286     */
4287    getAsFile(): File | null;
4288    /**
4289     * Invokes the callback with the string data as the argument, if the drag data item kind is text.
4290     */
4291    getAsString(callback: FunctionStringCallback | null): void;
4292    webkitGetAsEntry(): any;
4293}
4294
4295declare var DataTransferItem: {
4296    prototype: DataTransferItem;
4297    new(): DataTransferItem;
4298};
4299
4300/** 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. */
4301interface DataTransferItemList {
4302    /**
4303     * Returns the number of items in the drag data store.
4304     */
4305    readonly length: number;
4306    /**
4307     * 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.
4308     */
4309    add(data: string, type: string): DataTransferItem | null;
4310    add(data: File): DataTransferItem | null;
4311    /**
4312     * Removes all the entries in the drag data store.
4313     */
4314    clear(): void;
4315    item(index: number): DataTransferItem;
4316    /**
4317     * Removes the indexth entry in the drag data store.
4318     */
4319    remove(index: number): void;
4320    [name: number]: DataTransferItem;
4321}
4322
4323declare var DataTransferItemList: {
4324    prototype: DataTransferItemList;
4325    new(): DataTransferItemList;
4326};
4327
4328interface DeferredPermissionRequest {
4329    readonly id: number;
4330    readonly type: MSWebViewPermissionType;
4331    readonly uri: string;
4332    allow(): void;
4333    deny(): void;
4334}
4335
4336declare var DeferredPermissionRequest: {
4337    prototype: DeferredPermissionRequest;
4338    new(): DeferredPermissionRequest;
4339};
4340
4341/** 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. */
4342interface DelayNode extends AudioNode {
4343    readonly delayTime: AudioParam;
4344}
4345
4346declare var DelayNode: {
4347    prototype: DelayNode;
4348    new(context: BaseAudioContext, options?: DelayOptions): DelayNode;
4349};
4350
4351/** Provides information about the amount of acceleration the device is experiencing along all three axes. */
4352interface DeviceAcceleration {
4353    readonly x: number | null;
4354    readonly y: number | null;
4355    readonly z: number | null;
4356}
4357
4358declare var DeviceAcceleration: {
4359    prototype: DeviceAcceleration;
4360    new(): DeviceAcceleration;
4361};
4362
4363/** The DeviceLightEvent provides web developers with information from photo sensors or similiar detectors about ambient light levels near the device. For example this may be useful to adjust the screen's brightness based on the current ambient light level in order to save energy or provide better readability. */
4364interface DeviceLightEvent extends Event {
4365    readonly value: number;
4366}
4367
4368declare var DeviceLightEvent: {
4369    prototype: DeviceLightEvent;
4370    new(typeArg: string, eventInitDict?: DeviceLightEventInit): DeviceLightEvent;
4371};
4372
4373/** The DeviceMotionEvent provides web developers with information about the speed of changes for the device's position and orientation. */
4374interface DeviceMotionEvent extends Event {
4375    readonly acceleration: DeviceMotionEventAcceleration | null;
4376    readonly accelerationIncludingGravity: DeviceMotionEventAcceleration | null;
4377    readonly interval: number;
4378    readonly rotationRate: DeviceMotionEventRotationRate | null;
4379}
4380
4381declare var DeviceMotionEvent: {
4382    prototype: DeviceMotionEvent;
4383    new(type: string, eventInitDict?: DeviceMotionEventInit): DeviceMotionEvent;
4384    requestPermission(): Promise<PermissionState>;
4385};
4386
4387interface DeviceMotionEventAcceleration {
4388    readonly x: number | null;
4389    readonly y: number | null;
4390    readonly z: number | null;
4391}
4392
4393interface DeviceMotionEventRotationRate {
4394    readonly alpha: number | null;
4395    readonly beta: number | null;
4396    readonly gamma: number | null;
4397}
4398
4399/** The DeviceOrientationEvent provides web developers with information from the physical orientation of the device running the web page. */
4400interface DeviceOrientationEvent extends Event {
4401    readonly absolute: boolean;
4402    readonly alpha: number | null;
4403    readonly beta: number | null;
4404    readonly gamma: number | null;
4405}
4406
4407declare var DeviceOrientationEvent: {
4408    prototype: DeviceOrientationEvent;
4409    new(type: string, eventInitDict?: DeviceOrientationEventInit): DeviceOrientationEvent;
4410    requestPermission(): Promise<PermissionState>;
4411};
4412
4413/** Provides information about the rate at which the device is rotating around all three axes. */
4414interface DeviceRotationRate {
4415    readonly alpha: number | null;
4416    readonly beta: number | null;
4417    readonly gamma: number | null;
4418}
4419
4420declare var DeviceRotationRate: {
4421    prototype: DeviceRotationRate;
4422    new(): DeviceRotationRate;
4423};
4424
4425interface DhImportKeyParams extends Algorithm {
4426    generator: Uint8Array;
4427    prime: Uint8Array;
4428}
4429
4430interface DhKeyAlgorithm extends KeyAlgorithm {
4431    generator: Uint8Array;
4432    prime: Uint8Array;
4433}
4434
4435interface DhKeyDeriveParams extends Algorithm {
4436    public: CryptoKey;
4437}
4438
4439interface DhKeyGenParams extends Algorithm {
4440    generator: Uint8Array;
4441    prime: Uint8Array;
4442}
4443
4444interface DocumentEventMap extends GlobalEventHandlersEventMap, DocumentAndElementEventHandlersEventMap {
4445    "fullscreenchange": Event;
4446    "fullscreenerror": Event;
4447    "pointerlockchange": Event;
4448    "pointerlockerror": Event;
4449    "readystatechange": Event;
4450    "visibilitychange": Event;
4451}
4452
4453/** Any web page loaded in the browser and serves as an entry point into the web page's content, which is the DOM tree. */
4454interface Document extends Node, DocumentAndElementEventHandlers, DocumentOrShadowRoot, GlobalEventHandlers, NonElementParentNode, ParentNode, XPathEvaluatorBase {
4455    /**
4456     * Sets or gets the URL for the current document.
4457     */
4458    readonly URL: string;
4459    /**
4460     * Sets or gets the color of all active links in the document.
4461     */
4462    /** @deprecated */
4463    alinkColor: string;
4464    /**
4465     * Returns a reference to the collection of elements contained by the object.
4466     */
4467    /** @deprecated */
4468    readonly all: HTMLAllCollection;
4469    /**
4470     * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order.
4471     */
4472    /** @deprecated */
4473    readonly anchors: HTMLCollectionOf<HTMLAnchorElement>;
4474    /**
4475     * Retrieves a collection of all applet objects in the document.
4476     */
4477    /** @deprecated */
4478    readonly applets: HTMLCollectionOf<HTMLAppletElement>;
4479    /**
4480     * Deprecated. Sets or retrieves a value that indicates the background color behind the object.
4481     */
4482    /** @deprecated */
4483    bgColor: string;
4484    /**
4485     * Specifies the beginning and end of the document body.
4486     */
4487    body: HTMLElement;
4488    /**
4489     * Returns document's encoding.
4490     */
4491    readonly characterSet: string;
4492    /**
4493     * Gets or sets the character set used to encode the object.
4494     */
4495    readonly charset: string;
4496    /**
4497     * Gets a value that indicates whether standards-compliant mode is switched on for the object.
4498     */
4499    readonly compatMode: string;
4500    /**
4501     * Returns document's content type.
4502     */
4503    readonly contentType: string;
4504    /**
4505     * 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.
4506     *
4507     * Can be set, to add a new cookie to the element's set of HTTP cookies.
4508     *
4509     * 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.
4510     */
4511    cookie: string;
4512    /**
4513     * 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.
4514     *
4515     * 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.
4516     */
4517    readonly currentScript: HTMLOrSVGScriptElement | null;
4518    readonly defaultView: (WindowProxy & typeof globalThis) | null;
4519    /**
4520     * Sets or gets a value that indicates whether the document can be edited.
4521     */
4522    designMode: string;
4523    /**
4524     * Sets or retrieves a value that indicates the reading order of the object.
4525     */
4526    dir: string;
4527    /**
4528     * Gets an object representing the document type declaration associated with the current document.
4529     */
4530    readonly doctype: DocumentType | null;
4531    /**
4532     * Gets a reference to the root node of the document.
4533     */
4534    readonly documentElement: HTMLElement;
4535    /**
4536     * Returns document's URL.
4537     */
4538    readonly documentURI: string;
4539    /**
4540     * Sets or gets the security domain of the document.
4541     */
4542    domain: string;
4543    /**
4544     * Retrieves a collection of all embed objects in the document.
4545     */
4546    readonly embeds: HTMLCollectionOf<HTMLEmbedElement>;
4547    /**
4548     * Sets or gets the foreground (text) color of the document.
4549     */
4550    /** @deprecated */
4551    fgColor: string;
4552    /**
4553     * Retrieves a collection, in source order, of all form objects in the document.
4554     */
4555    readonly forms: HTMLCollectionOf<HTMLFormElement>;
4556    /** @deprecated */
4557    readonly fullscreen: boolean;
4558    /**
4559     * Returns true if document has the ability to display elements fullscreen and fullscreen is supported, or false otherwise.
4560     */
4561    readonly fullscreenEnabled: boolean;
4562    /**
4563     * Returns the head element.
4564     */
4565    readonly head: HTMLHeadElement;
4566    readonly hidden: boolean;
4567    /**
4568     * Retrieves a collection, in source order, of img objects in the document.
4569     */
4570    readonly images: HTMLCollectionOf<HTMLImageElement>;
4571    /**
4572     * Gets the implementation object of the current document.
4573     */
4574    readonly implementation: DOMImplementation;
4575    /**
4576     * Returns the character encoding used to create the webpage that is loaded into the document object.
4577     */
4578    readonly inputEncoding: string;
4579    /**
4580     * Gets the date that the page was last modified, if the page supplies one.
4581     */
4582    readonly lastModified: string;
4583    /**
4584     * Sets or gets the color of the document links.
4585     */
4586    /** @deprecated */
4587    linkColor: string;
4588    /**
4589     * Retrieves a collection of all a objects that specify the href property and all area objects in the document.
4590     */
4591    readonly links: HTMLCollectionOf<HTMLAnchorElement | HTMLAreaElement>;
4592    /**
4593     * Contains information about the current URL.
4594     */
4595    location: Location;
4596    onfullscreenchange: ((this: Document, ev: Event) => any) | null;
4597    onfullscreenerror: ((this: Document, ev: Event) => any) | null;
4598    onpointerlockchange: ((this: Document, ev: Event) => any) | null;
4599    onpointerlockerror: ((this: Document, ev: Event) => any) | null;
4600    /**
4601     * Fires when the state of the object has changed.
4602     * @param ev The event
4603     */
4604    onreadystatechange: ((this: Document, ev: Event) => any) | null;
4605    onvisibilitychange: ((this: Document, ev: Event) => any) | null;
4606    readonly ownerDocument: null;
4607    /**
4608     * Return an HTMLCollection of the embed elements in the Document.
4609     */
4610    readonly plugins: HTMLCollectionOf<HTMLEmbedElement>;
4611    /**
4612     * Retrieves a value that indicates the current state of the object.
4613     */
4614    readonly readyState: DocumentReadyState;
4615    /**
4616     * Gets the URL of the location that referred the user to the current page.
4617     */
4618    readonly referrer: string;
4619    /**
4620     * Retrieves a collection of all script objects in the document.
4621     */
4622    readonly scripts: HTMLCollectionOf<HTMLScriptElement>;
4623    readonly scrollingElement: Element | null;
4624    readonly timeline: DocumentTimeline;
4625    /**
4626     * Contains the title of the document.
4627     */
4628    title: string;
4629    readonly visibilityState: VisibilityState;
4630    /**
4631     * Sets or gets the color of the links that the user has visited.
4632     */
4633    /** @deprecated */
4634    vlinkColor: string;
4635    /**
4636     * Moves node from another document and returns it.
4637     *
4638     * If node is a document, throws a "NotSupportedError" DOMException or, if node is a shadow root, throws a "HierarchyRequestError" DOMException.
4639     */
4640    adoptNode<T extends Node>(source: T): T;
4641    /** @deprecated */
4642    captureEvents(): void;
4643    caretPositionFromPoint(x: number, y: number): CaretPosition | null;
4644    /** @deprecated */
4645    caretRangeFromPoint(x: number, y: number): Range;
4646    /** @deprecated */
4647    clear(): void;
4648    /**
4649     * Closes an output stream and forces the sent data to display.
4650     */
4651    close(): void;
4652    /**
4653     * Creates an attribute object with a specified name.
4654     * @param name String that sets the attribute object's name.
4655     */
4656    createAttribute(localName: string): Attr;
4657    createAttributeNS(namespace: string | null, qualifiedName: string): Attr;
4658    /**
4659     * Returns a CDATASection node whose data is data.
4660     */
4661    createCDATASection(data: string): CDATASection;
4662    /**
4663     * Creates a comment object with the specified data.
4664     * @param data Sets the comment object's data.
4665     */
4666    createComment(data: string): Comment;
4667    /**
4668     * Creates a new document.
4669     */
4670    createDocumentFragment(): DocumentFragment;
4671    /**
4672     * Creates an instance of the element for the specified tag.
4673     * @param tagName The name of an element.
4674     */
4675    createElement<K extends keyof HTMLElementTagNameMap>(tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K];
4676    /** @deprecated */
4677    createElement<K extends keyof HTMLElementDeprecatedTagNameMap>(tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K];
4678    createElement(tagName: string, options?: ElementCreationOptions): HTMLElement;
4679    /**
4680     * 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.
4681     *
4682     * If localName does not match the Name production an "InvalidCharacterError" DOMException will be thrown.
4683     *
4684     * If one of the following conditions is true a "NamespaceError" DOMException will be thrown:
4685     *
4686     * localName does not match the QName production.
4687     * Namespace prefix is not null and namespace is the empty string.
4688     * Namespace prefix is "xml" and namespace is not the XML namespace.
4689     * qualifiedName or namespace prefix is "xmlns" and namespace is not the XMLNS namespace.
4690     * namespace is the XMLNS namespace and neither qualifiedName nor namespace prefix is "xmlns".
4691     *
4692     * When supplied, options's is can be used to create a customized built-in element.
4693     */
4694    createElementNS(namespaceURI: "http://www.w3.org/1999/xhtml", qualifiedName: string): HTMLElement;
4695    createElementNS<K extends keyof SVGElementTagNameMap>(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: K): SVGElementTagNameMap[K];
4696    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: string): SVGElement;
4697    createElementNS(namespaceURI: string | null, qualifiedName: string, options?: ElementCreationOptions): Element;
4698    createElementNS(namespace: string | null, qualifiedName: string, options?: string | ElementCreationOptions): Element;
4699    createEvent(eventInterface: "AnimationEvent"): AnimationEvent;
4700    createEvent(eventInterface: "AnimationPlaybackEvent"): AnimationPlaybackEvent;
4701    createEvent(eventInterface: "AudioProcessingEvent"): AudioProcessingEvent;
4702    createEvent(eventInterface: "BeforeUnloadEvent"): BeforeUnloadEvent;
4703    createEvent(eventInterface: "ClipboardEvent"): ClipboardEvent;
4704    createEvent(eventInterface: "CloseEvent"): CloseEvent;
4705    createEvent(eventInterface: "CompositionEvent"): CompositionEvent;
4706    createEvent(eventInterface: "CustomEvent"): CustomEvent;
4707    createEvent(eventInterface: "DeviceLightEvent"): DeviceLightEvent;
4708    createEvent(eventInterface: "DeviceMotionEvent"): DeviceMotionEvent;
4709    createEvent(eventInterface: "DeviceOrientationEvent"): DeviceOrientationEvent;
4710    createEvent(eventInterface: "DragEvent"): DragEvent;
4711    createEvent(eventInterface: "ErrorEvent"): ErrorEvent;
4712    createEvent(eventInterface: "Event"): Event;
4713    createEvent(eventInterface: "Events"): Event;
4714    createEvent(eventInterface: "FocusEvent"): FocusEvent;
4715    createEvent(eventInterface: "FocusNavigationEvent"): FocusNavigationEvent;
4716    createEvent(eventInterface: "GamepadEvent"): GamepadEvent;
4717    createEvent(eventInterface: "HashChangeEvent"): HashChangeEvent;
4718    createEvent(eventInterface: "IDBVersionChangeEvent"): IDBVersionChangeEvent;
4719    createEvent(eventInterface: "InputEvent"): InputEvent;
4720    createEvent(eventInterface: "KeyboardEvent"): KeyboardEvent;
4721    createEvent(eventInterface: "ListeningStateChangedEvent"): ListeningStateChangedEvent;
4722    createEvent(eventInterface: "MSGestureEvent"): MSGestureEvent;
4723    createEvent(eventInterface: "MSMediaKeyMessageEvent"): MSMediaKeyMessageEvent;
4724    createEvent(eventInterface: "MSMediaKeyNeededEvent"): MSMediaKeyNeededEvent;
4725    createEvent(eventInterface: "MSPointerEvent"): MSPointerEvent;
4726    createEvent(eventInterface: "MediaEncryptedEvent"): MediaEncryptedEvent;
4727    createEvent(eventInterface: "MediaKeyMessageEvent"): MediaKeyMessageEvent;
4728    createEvent(eventInterface: "MediaQueryListEvent"): MediaQueryListEvent;
4729    createEvent(eventInterface: "MediaStreamErrorEvent"): MediaStreamErrorEvent;
4730    createEvent(eventInterface: "MediaStreamEvent"): MediaStreamEvent;
4731    createEvent(eventInterface: "MediaStreamTrackEvent"): MediaStreamTrackEvent;
4732    createEvent(eventInterface: "MessageEvent"): MessageEvent;
4733    createEvent(eventInterface: "MouseEvent"): MouseEvent;
4734    createEvent(eventInterface: "MouseEvents"): MouseEvent;
4735    createEvent(eventInterface: "MutationEvent"): MutationEvent;
4736    createEvent(eventInterface: "MutationEvents"): MutationEvent;
4737    createEvent(eventInterface: "OfflineAudioCompletionEvent"): OfflineAudioCompletionEvent;
4738    createEvent(eventInterface: "OverflowEvent"): OverflowEvent;
4739    createEvent(eventInterface: "PageTransitionEvent"): PageTransitionEvent;
4740    createEvent(eventInterface: "PaymentRequestUpdateEvent"): PaymentRequestUpdateEvent;
4741    createEvent(eventInterface: "PermissionRequestedEvent"): PermissionRequestedEvent;
4742    createEvent(eventInterface: "PointerEvent"): PointerEvent;
4743    createEvent(eventInterface: "PopStateEvent"): PopStateEvent;
4744    createEvent(eventInterface: "ProgressEvent"): ProgressEvent;
4745    createEvent(eventInterface: "PromiseRejectionEvent"): PromiseRejectionEvent;
4746    createEvent(eventInterface: "RTCDTMFToneChangeEvent"): RTCDTMFToneChangeEvent;
4747    createEvent(eventInterface: "RTCDataChannelEvent"): RTCDataChannelEvent;
4748    createEvent(eventInterface: "RTCDtlsTransportStateChangedEvent"): RTCDtlsTransportStateChangedEvent;
4749    createEvent(eventInterface: "RTCErrorEvent"): RTCErrorEvent;
4750    createEvent(eventInterface: "RTCIceCandidatePairChangedEvent"): RTCIceCandidatePairChangedEvent;
4751    createEvent(eventInterface: "RTCIceGathererEvent"): RTCIceGathererEvent;
4752    createEvent(eventInterface: "RTCIceTransportStateChangedEvent"): RTCIceTransportStateChangedEvent;
4753    createEvent(eventInterface: "RTCPeerConnectionIceErrorEvent"): RTCPeerConnectionIceErrorEvent;
4754    createEvent(eventInterface: "RTCPeerConnectionIceEvent"): RTCPeerConnectionIceEvent;
4755    createEvent(eventInterface: "RTCSsrcConflictEvent"): RTCSsrcConflictEvent;
4756    createEvent(eventInterface: "RTCStatsEvent"): RTCStatsEvent;
4757    createEvent(eventInterface: "RTCTrackEvent"): RTCTrackEvent;
4758    createEvent(eventInterface: "SVGZoomEvent"): SVGZoomEvent;
4759    createEvent(eventInterface: "SVGZoomEvents"): SVGZoomEvent;
4760    createEvent(eventInterface: "SecurityPolicyViolationEvent"): SecurityPolicyViolationEvent;
4761    createEvent(eventInterface: "ServiceWorkerMessageEvent"): ServiceWorkerMessageEvent;
4762    createEvent(eventInterface: "SpeechRecognitionErrorEvent"): SpeechRecognitionErrorEvent;
4763    createEvent(eventInterface: "SpeechRecognitionEvent"): SpeechRecognitionEvent;
4764    createEvent(eventInterface: "SpeechSynthesisErrorEvent"): SpeechSynthesisErrorEvent;
4765    createEvent(eventInterface: "SpeechSynthesisEvent"): SpeechSynthesisEvent;
4766    createEvent(eventInterface: "StorageEvent"): StorageEvent;
4767    createEvent(eventInterface: "TextEvent"): TextEvent;
4768    createEvent(eventInterface: "TouchEvent"): TouchEvent;
4769    createEvent(eventInterface: "TrackEvent"): TrackEvent;
4770    createEvent(eventInterface: "TransitionEvent"): TransitionEvent;
4771    createEvent(eventInterface: "UIEvent"): UIEvent;
4772    createEvent(eventInterface: "UIEvents"): UIEvent;
4773    createEvent(eventInterface: "VRDisplayEvent"): VRDisplayEvent;
4774    createEvent(eventInterface: "VRDisplayEvent "): VRDisplayEvent ;
4775    createEvent(eventInterface: "WebGLContextEvent"): WebGLContextEvent;
4776    createEvent(eventInterface: "WheelEvent"): WheelEvent;
4777    createEvent(eventInterface: string): Event;
4778    /**
4779     * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.
4780     * @param root The root element or node to start traversing on.
4781     * @param whatToShow The type of nodes or elements to appear in the node list
4782     * @param filter A custom NodeFilter function to use. For more information, see filter. Use null for no filter.
4783     * @param entityReferenceExpansion A flag that specifies whether entity reference nodes are expanded.
4784     */
4785    createNodeIterator(root: Node, whatToShow?: number, filter?: NodeFilter | null): NodeIterator;
4786    /**
4787     * 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.
4788     */
4789    createProcessingInstruction(target: string, data: string): ProcessingInstruction;
4790    /**
4791     *  Returns an empty range object that has both of its boundary points positioned at the beginning of the document.
4792     */
4793    createRange(): Range;
4794    /**
4795     * Creates a text string from the specified value.
4796     * @param data String that specifies the nodeValue property of the text node.
4797     */
4798    createTextNode(data: string): Text;
4799    /**
4800     * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document.
4801     * @param root The root element or node to start traversing on.
4802     * @param whatToShow The type of nodes or elements to appear in the node list. For more information, see whatToShow.
4803     * @param filter A custom NodeFilter function to use.
4804     * @param entityReferenceExpansion A flag that specifies whether entity reference nodes are expanded.
4805     */
4806    createTreeWalker(root: Node, whatToShow?: number, filter?: NodeFilter | null): TreeWalker;
4807    /** @deprecated */
4808    createTreeWalker(root: Node, whatToShow: number, filter: NodeFilter | null, entityReferenceExpansion?: boolean): TreeWalker;
4809    /**
4810     * Returns the element for the specified x coordinate and the specified y coordinate.
4811     * @param x The x-offset
4812     * @param y The y-offset
4813     */
4814    elementFromPoint(x: number, y: number): Element | null;
4815    elementsFromPoint(x: number, y: number): Element[];
4816    /**
4817     * Executes a command on the current document, current selection, or the given range.
4818     * @param commandId String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
4819     * @param showUI Display the user interface, defaults to false.
4820     * @param value Value to assign.
4821     */
4822    execCommand(commandId: string, showUI?: boolean, value?: string): boolean;
4823    /**
4824     * Stops document's fullscreen element from being displayed fullscreen and resolves promise when done.
4825     */
4826    exitFullscreen(): Promise<void>;
4827    exitPointerLock(): void;
4828    getAnimations(): Animation[];
4829    /**
4830     * Returns a reference to the first object with the specified value of the ID attribute.
4831     * @param elementId String that specifies the ID value.
4832     */
4833    getElementById(elementId: string): HTMLElement | null;
4834    /**
4835     * 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.
4836     */
4837    getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;
4838    /**
4839     * Gets a collection of objects based on the value of the NAME or ID attribute.
4840     * @param elementName Gets a collection of objects based on the value of the NAME or ID attribute.
4841     */
4842    getElementsByName(elementName: string): NodeListOf<HTMLElement>;
4843    /**
4844     * Retrieves a collection of objects based on the specified element name.
4845     * @param name Specifies the name of an element.
4846     */
4847    getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;
4848    getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;
4849    getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;
4850    /**
4851     * If namespace and localName are "*" returns a HTMLCollection of all descendant elements.
4852     *
4853     * If only namespace is "*" returns a HTMLCollection of all descendant elements whose local name is localName.
4854     *
4855     * If only localName is "*" returns a HTMLCollection of all descendant elements whose namespace is namespace.
4856     *
4857     * Otherwise, returns a HTMLCollection of all descendant elements whose namespace is namespace and local name is localName.
4858     */
4859    getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf<HTMLElement>;
4860    getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf<SVGElement>;
4861    getElementsByTagNameNS(namespaceURI: string, localName: string): HTMLCollectionOf<Element>;
4862    /**
4863     * Returns an object representing the current selection of the document that is loaded into the object displaying a webpage.
4864     */
4865    getSelection(): Selection | null;
4866    /**
4867     * Gets a value indicating whether the object currently has focus.
4868     */
4869    hasFocus(): boolean;
4870    /**
4871     * Returns a copy of node. If deep is true, the copy also includes the node's descendants.
4872     *
4873     * If node is a document or a shadow root, throws a "NotSupportedError" DOMException.
4874     */
4875    importNode<T extends Node>(importedNode: T, deep: boolean): T;
4876    /**
4877     * 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.
4878     * @param url Specifies a MIME type for the document.
4879     * @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.
4880     * @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.
4881     * @param replace Specifies whether the existing entry for the document is replaced in the history list.
4882     */
4883    open(url?: string, name?: string, features?: string, replace?: boolean): Document;
4884    /**
4885     * Returns a Boolean value that indicates whether a specified command can be successfully executed using execCommand, given the current state of the document.
4886     * @param commandId Specifies a command identifier.
4887     */
4888    queryCommandEnabled(commandId: string): boolean;
4889    /**
4890     * Returns a Boolean value that indicates whether the specified command is in the indeterminate state.
4891     * @param commandId String that specifies a command identifier.
4892     */
4893    queryCommandIndeterm(commandId: string): boolean;
4894    /**
4895     * Returns a Boolean value that indicates the current state of the command.
4896     * @param commandId String that specifies a command identifier.
4897     */
4898    queryCommandState(commandId: string): boolean;
4899    /**
4900     * Returns a Boolean value that indicates whether the current command is supported on the current range.
4901     * @param commandId Specifies a command identifier.
4902     */
4903    queryCommandSupported(commandId: string): boolean;
4904    /**
4905     * Returns the current value of the document, range, or current selection for the given command.
4906     * @param commandId String that specifies a command identifier.
4907     */
4908    queryCommandValue(commandId: string): string;
4909    /** @deprecated */
4910    releaseEvents(): void;
4911    /**
4912     * Writes one or more HTML expressions to a document in the specified window.
4913     * @param content Specifies the text and HTML tags to write.
4914     */
4915    write(...text: string[]): void;
4916    /**
4917     * Writes one or more HTML expressions, followed by a carriage return, to a document in the specified window.
4918     * @param content The text and HTML tags to write.
4919     */
4920    writeln(...text: string[]): void;
4921    addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4922    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4923    removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4924    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
4925}
4926
4927declare var Document: {
4928    prototype: Document;
4929    new(): Document;
4930};
4931
4932interface DocumentAndElementEventHandlersEventMap {
4933    "copy": ClipboardEvent;
4934    "cut": ClipboardEvent;
4935    "paste": ClipboardEvent;
4936}
4937
4938interface DocumentAndElementEventHandlers {
4939    oncopy: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;
4940    oncut: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;
4941    onpaste: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;
4942    addEventListener<K extends keyof DocumentAndElementEventHandlersEventMap>(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4943    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4944    removeEventListener<K extends keyof DocumentAndElementEventHandlersEventMap>(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4945    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
4946}
4947
4948interface DocumentEvent {
4949    createEvent(eventInterface: "AnimationEvent"): AnimationEvent;
4950    createEvent(eventInterface: "AnimationPlaybackEvent"): AnimationPlaybackEvent;
4951    createEvent(eventInterface: "AudioProcessingEvent"): AudioProcessingEvent;
4952    createEvent(eventInterface: "BeforeUnloadEvent"): BeforeUnloadEvent;
4953    createEvent(eventInterface: "ClipboardEvent"): ClipboardEvent;
4954    createEvent(eventInterface: "CloseEvent"): CloseEvent;
4955    createEvent(eventInterface: "CompositionEvent"): CompositionEvent;
4956    createEvent(eventInterface: "CustomEvent"): CustomEvent;
4957    createEvent(eventInterface: "DeviceLightEvent"): DeviceLightEvent;
4958    createEvent(eventInterface: "DeviceMotionEvent"): DeviceMotionEvent;
4959    createEvent(eventInterface: "DeviceOrientationEvent"): DeviceOrientationEvent;
4960    createEvent(eventInterface: "DragEvent"): DragEvent;
4961    createEvent(eventInterface: "ErrorEvent"): ErrorEvent;
4962    createEvent(eventInterface: "Event"): Event;
4963    createEvent(eventInterface: "Events"): Event;
4964    createEvent(eventInterface: "FocusEvent"): FocusEvent;
4965    createEvent(eventInterface: "FocusNavigationEvent"): FocusNavigationEvent;
4966    createEvent(eventInterface: "GamepadEvent"): GamepadEvent;
4967    createEvent(eventInterface: "HashChangeEvent"): HashChangeEvent;
4968    createEvent(eventInterface: "IDBVersionChangeEvent"): IDBVersionChangeEvent;
4969    createEvent(eventInterface: "InputEvent"): InputEvent;
4970    createEvent(eventInterface: "KeyboardEvent"): KeyboardEvent;
4971    createEvent(eventInterface: "ListeningStateChangedEvent"): ListeningStateChangedEvent;
4972    createEvent(eventInterface: "MSGestureEvent"): MSGestureEvent;
4973    createEvent(eventInterface: "MSMediaKeyMessageEvent"): MSMediaKeyMessageEvent;
4974    createEvent(eventInterface: "MSMediaKeyNeededEvent"): MSMediaKeyNeededEvent;
4975    createEvent(eventInterface: "MSPointerEvent"): MSPointerEvent;
4976    createEvent(eventInterface: "MediaEncryptedEvent"): MediaEncryptedEvent;
4977    createEvent(eventInterface: "MediaKeyMessageEvent"): MediaKeyMessageEvent;
4978    createEvent(eventInterface: "MediaQueryListEvent"): MediaQueryListEvent;
4979    createEvent(eventInterface: "MediaStreamErrorEvent"): MediaStreamErrorEvent;
4980    createEvent(eventInterface: "MediaStreamEvent"): MediaStreamEvent;
4981    createEvent(eventInterface: "MediaStreamTrackEvent"): MediaStreamTrackEvent;
4982    createEvent(eventInterface: "MessageEvent"): MessageEvent;
4983    createEvent(eventInterface: "MouseEvent"): MouseEvent;
4984    createEvent(eventInterface: "MouseEvents"): MouseEvent;
4985    createEvent(eventInterface: "MutationEvent"): MutationEvent;
4986    createEvent(eventInterface: "MutationEvents"): MutationEvent;
4987    createEvent(eventInterface: "OfflineAudioCompletionEvent"): OfflineAudioCompletionEvent;
4988    createEvent(eventInterface: "OverflowEvent"): OverflowEvent;
4989    createEvent(eventInterface: "PageTransitionEvent"): PageTransitionEvent;
4990    createEvent(eventInterface: "PaymentRequestUpdateEvent"): PaymentRequestUpdateEvent;
4991    createEvent(eventInterface: "PermissionRequestedEvent"): PermissionRequestedEvent;
4992    createEvent(eventInterface: "PointerEvent"): PointerEvent;
4993    createEvent(eventInterface: "PopStateEvent"): PopStateEvent;
4994    createEvent(eventInterface: "ProgressEvent"): ProgressEvent;
4995    createEvent(eventInterface: "PromiseRejectionEvent"): PromiseRejectionEvent;
4996    createEvent(eventInterface: "RTCDTMFToneChangeEvent"): RTCDTMFToneChangeEvent;
4997    createEvent(eventInterface: "RTCDataChannelEvent"): RTCDataChannelEvent;
4998    createEvent(eventInterface: "RTCDtlsTransportStateChangedEvent"): RTCDtlsTransportStateChangedEvent;
4999    createEvent(eventInterface: "RTCErrorEvent"): RTCErrorEvent;
5000    createEvent(eventInterface: "RTCIceCandidatePairChangedEvent"): RTCIceCandidatePairChangedEvent;
5001    createEvent(eventInterface: "RTCIceGathererEvent"): RTCIceGathererEvent;
5002    createEvent(eventInterface: "RTCIceTransportStateChangedEvent"): RTCIceTransportStateChangedEvent;
5003    createEvent(eventInterface: "RTCPeerConnectionIceErrorEvent"): RTCPeerConnectionIceErrorEvent;
5004    createEvent(eventInterface: "RTCPeerConnectionIceEvent"): RTCPeerConnectionIceEvent;
5005    createEvent(eventInterface: "RTCSsrcConflictEvent"): RTCSsrcConflictEvent;
5006    createEvent(eventInterface: "RTCStatsEvent"): RTCStatsEvent;
5007    createEvent(eventInterface: "RTCTrackEvent"): RTCTrackEvent;
5008    createEvent(eventInterface: "SVGZoomEvent"): SVGZoomEvent;
5009    createEvent(eventInterface: "SVGZoomEvents"): SVGZoomEvent;
5010    createEvent(eventInterface: "SecurityPolicyViolationEvent"): SecurityPolicyViolationEvent;
5011    createEvent(eventInterface: "ServiceWorkerMessageEvent"): ServiceWorkerMessageEvent;
5012    createEvent(eventInterface: "SpeechRecognitionErrorEvent"): SpeechRecognitionErrorEvent;
5013    createEvent(eventInterface: "SpeechRecognitionEvent"): SpeechRecognitionEvent;
5014    createEvent(eventInterface: "SpeechSynthesisErrorEvent"): SpeechSynthesisErrorEvent;
5015    createEvent(eventInterface: "SpeechSynthesisEvent"): SpeechSynthesisEvent;
5016    createEvent(eventInterface: "StorageEvent"): StorageEvent;
5017    createEvent(eventInterface: "TextEvent"): TextEvent;
5018    createEvent(eventInterface: "TouchEvent"): TouchEvent;
5019    createEvent(eventInterface: "TrackEvent"): TrackEvent;
5020    createEvent(eventInterface: "TransitionEvent"): TransitionEvent;
5021    createEvent(eventInterface: "UIEvent"): UIEvent;
5022    createEvent(eventInterface: "UIEvents"): UIEvent;
5023    createEvent(eventInterface: "VRDisplayEvent"): VRDisplayEvent;
5024    createEvent(eventInterface: "VRDisplayEvent "): VRDisplayEvent ;
5025    createEvent(eventInterface: "WebGLContextEvent"): WebGLContextEvent;
5026    createEvent(eventInterface: "WheelEvent"): WheelEvent;
5027    createEvent(eventInterface: string): Event;
5028}
5029
5030/** 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. */
5031interface DocumentFragment extends Node, NonElementParentNode, ParentNode {
5032    readonly ownerDocument: Document;
5033    getElementById(elementId: string): HTMLElement | null;
5034}
5035
5036declare var DocumentFragment: {
5037    prototype: DocumentFragment;
5038    new(): DocumentFragment;
5039};
5040
5041interface DocumentOrShadowRoot {
5042    readonly activeElement: Element | null;
5043    /**
5044     * Returns document's fullscreen element.
5045     */
5046    readonly fullscreenElement: Element | null;
5047    readonly pointerLockElement: Element | null;
5048    /**
5049     * Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document.
5050     */
5051    readonly styleSheets: StyleSheetList;
5052    caretPositionFromPoint(x: number, y: number): CaretPosition | null;
5053    /** @deprecated */
5054    caretRangeFromPoint(x: number, y: number): Range;
5055    elementFromPoint(x: number, y: number): Element | null;
5056    elementsFromPoint(x: number, y: number): Element[];
5057    getSelection(): Selection | null;
5058}
5059
5060interface DocumentTimeline extends AnimationTimeline {
5061}
5062
5063declare var DocumentTimeline: {
5064    prototype: DocumentTimeline;
5065    new(options?: DocumentTimelineOptions): DocumentTimeline;
5066};
5067
5068/** A Node containing a doctype. */
5069interface DocumentType extends Node, ChildNode {
5070    readonly name: string;
5071    readonly ownerDocument: Document;
5072    readonly publicId: string;
5073    readonly systemId: string;
5074}
5075
5076declare var DocumentType: {
5077    prototype: DocumentType;
5078    new(): DocumentType;
5079};
5080
5081/** 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. */
5082interface DragEvent extends MouseEvent {
5083    /**
5084     * Returns the DataTransfer object for the event.
5085     */
5086    readonly dataTransfer: DataTransfer | null;
5087}
5088
5089declare var DragEvent: {
5090    prototype: DragEvent;
5091    new(type: string, eventInitDict?: DragEventInit): DragEvent;
5092};
5093
5094/** Inherits properties from its parent, AudioNode. */
5095interface DynamicsCompressorNode extends AudioNode {
5096    readonly attack: AudioParam;
5097    readonly knee: AudioParam;
5098    readonly ratio: AudioParam;
5099    readonly reduction: number;
5100    readonly release: AudioParam;
5101    readonly threshold: AudioParam;
5102}
5103
5104declare var DynamicsCompressorNode: {
5105    prototype: DynamicsCompressorNode;
5106    new(context: BaseAudioContext, options?: DynamicsCompressorOptions): DynamicsCompressorNode;
5107};
5108
5109interface EXT_blend_minmax {
5110    readonly MAX_EXT: GLenum;
5111    readonly MIN_EXT: GLenum;
5112}
5113
5114/** 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. */
5115interface EXT_frag_depth {
5116}
5117
5118interface EXT_sRGB {
5119    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: GLenum;
5120    readonly SRGB8_ALPHA8_EXT: GLenum;
5121    readonly SRGB_ALPHA_EXT: GLenum;
5122    readonly SRGB_EXT: GLenum;
5123}
5124
5125interface EXT_shader_texture_lod {
5126}
5127
5128/** The EXT_texture_filter_anisotropic extension is part of the WebGL API and exposes two constants for anisotropic filtering (AF). */
5129interface EXT_texture_filter_anisotropic {
5130    readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: GLenum;
5131    readonly TEXTURE_MAX_ANISOTROPY_EXT: GLenum;
5132}
5133
5134interface ElementEventMap {
5135    "fullscreenchange": Event;
5136    "fullscreenerror": Event;
5137}
5138
5139/** 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. */
5140interface Element extends Node, Animatable, ChildNode, InnerHTML, NonDocumentTypeChildNode, ParentNode, Slottable {
5141    readonly attributes: NamedNodeMap;
5142    /**
5143     * Allows for manipulation of element's class content attribute as a set of whitespace-separated tokens through a DOMTokenList object.
5144     */
5145    readonly classList: DOMTokenList;
5146    /**
5147     * Returns the value of element's class content attribute. Can be set to change it.
5148     */
5149    className: string;
5150    readonly clientHeight: number;
5151    readonly clientLeft: number;
5152    readonly clientTop: number;
5153    readonly clientWidth: number;
5154    /**
5155     * Returns the value of element's id content attribute. Can be set to change it.
5156     */
5157    id: string;
5158    /**
5159     * Returns the local name.
5160     */
5161    readonly localName: string;
5162    /**
5163     * Returns the namespace.
5164     */
5165    readonly namespaceURI: string | null;
5166    onfullscreenchange: ((this: Element, ev: Event) => any) | null;
5167    onfullscreenerror: ((this: Element, ev: Event) => any) | null;
5168    outerHTML: string;
5169    readonly ownerDocument: Document;
5170    /**
5171     * Returns the namespace prefix.
5172     */
5173    readonly prefix: string | null;
5174    readonly scrollHeight: number;
5175    scrollLeft: number;
5176    scrollTop: number;
5177    readonly scrollWidth: number;
5178    /**
5179     * Returns element's shadow root, if any, and if shadow root's mode is "open", and null otherwise.
5180     */
5181    readonly shadowRoot: ShadowRoot | null;
5182    /**
5183     * Returns the value of element's slot content attribute. Can be set to change it.
5184     */
5185    slot: string;
5186    /**
5187     * Returns the HTML-uppercased qualified name.
5188     */
5189    readonly tagName: string;
5190    /**
5191     * Creates a shadow root for element and returns it.
5192     */
5193    attachShadow(init: ShadowRootInit): ShadowRoot;
5194    /**
5195     * Returns the first (starting at element) inclusive ancestor that matches selectors, and null otherwise.
5196     */
5197    closest<K extends keyof HTMLElementTagNameMap>(selector: K): HTMLElementTagNameMap[K] | null;
5198    closest<K extends keyof SVGElementTagNameMap>(selector: K): SVGElementTagNameMap[K] | null;
5199    closest<E extends Element = Element>(selector: string): E | null;
5200    /**
5201     * Returns element's first attribute whose qualified name is qualifiedName, and null if there is no such attribute otherwise.
5202     */
5203    getAttribute(qualifiedName: string): string | null;
5204    /**
5205     * Returns element's attribute whose namespace is namespace and local name is localName, and null if there is no such attribute otherwise.
5206     */
5207    getAttributeNS(namespace: string | null, localName: string): string | null;
5208    /**
5209     * Returns the qualified names of all element's attributes. Can contain duplicates.
5210     */
5211    getAttributeNames(): string[];
5212    getAttributeNode(qualifiedName: string): Attr | null;
5213    getAttributeNodeNS(namespace: string | null, localName: string): Attr | null;
5214    getBoundingClientRect(): DOMRect;
5215    getClientRects(): DOMRectList;
5216    /**
5217     * 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.
5218     */
5219    getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;
5220    getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;
5221    getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;
5222    getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;
5223    getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf<HTMLElement>;
5224    getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf<SVGElement>;
5225    getElementsByTagNameNS(namespaceURI: string, localName: string): HTMLCollectionOf<Element>;
5226    /**
5227     * Returns true if element has an attribute whose qualified name is qualifiedName, and false otherwise.
5228     */
5229    hasAttribute(qualifiedName: string): boolean;
5230    /**
5231     * Returns true if element has an attribute whose namespace is namespace and local name is localName.
5232     */
5233    hasAttributeNS(namespace: string | null, localName: string): boolean;
5234    /**
5235     * Returns true if element has attributes, and false otherwise.
5236     */
5237    hasAttributes(): boolean;
5238    hasPointerCapture(pointerId: number): boolean;
5239    insertAdjacentElement(position: InsertPosition, insertedElement: Element): Element | null;
5240    insertAdjacentHTML(where: InsertPosition, html: string): void;
5241    insertAdjacentText(where: InsertPosition, text: string): void;
5242    /**
5243     * Returns true if matching selectors against element's root yields element, and false otherwise.
5244     */
5245    matches(selectors: string): boolean;
5246    msGetRegionContent(): any;
5247    releasePointerCapture(pointerId: number): void;
5248    /**
5249     * Removes element's first attribute whose qualified name is qualifiedName.
5250     */
5251    removeAttribute(qualifiedName: string): void;
5252    /**
5253     * Removes element's attribute whose namespace is namespace and local name is localName.
5254     */
5255    removeAttributeNS(namespace: string | null, localName: string): void;
5256    removeAttributeNode(attr: Attr): Attr;
5257    /**
5258     * Displays element fullscreen and resolves promise when done.
5259     *
5260     * 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.
5261     */
5262    requestFullscreen(options?: FullscreenOptions): Promise<void>;
5263    requestPointerLock(): void;
5264    scroll(options?: ScrollToOptions): void;
5265    scroll(x: number, y: number): void;
5266    scrollBy(options?: ScrollToOptions): void;
5267    scrollBy(x: number, y: number): void;
5268    scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void;
5269    scrollTo(options?: ScrollToOptions): void;
5270    scrollTo(x: number, y: number): void;
5271    /**
5272     * Sets the value of element's first attribute whose qualified name is qualifiedName to value.
5273     */
5274    setAttribute(qualifiedName: string, value: string): void;
5275    /**
5276     * Sets the value of element's attribute whose namespace is namespace and local name is localName to value.
5277     */
5278    setAttributeNS(namespace: string | null, qualifiedName: string, value: string): void;
5279    setAttributeNode(attr: Attr): Attr | null;
5280    setAttributeNodeNS(attr: Attr): Attr | null;
5281    setPointerCapture(pointerId: number): void;
5282    /**
5283     * 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.
5284     *
5285     * Returns true if qualifiedName is now present, and false otherwise.
5286     */
5287    toggleAttribute(qualifiedName: string, force?: boolean): boolean;
5288    webkitMatchesSelector(selectors: string): boolean;
5289    addEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5290    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5291    removeEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5292    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5293}
5294
5295declare var Element: {
5296    prototype: Element;
5297    new(): Element;
5298};
5299
5300interface ElementCSSInlineStyle {
5301    readonly style: CSSStyleDeclaration;
5302}
5303
5304interface ElementContentEditable {
5305    contentEditable: string;
5306    enterKeyHint: string;
5307    inputMode: string;
5308    readonly isContentEditable: boolean;
5309}
5310
5311/** Events providing information related to errors in scripts or in files. */
5312interface ErrorEvent extends Event {
5313    readonly colno: number;
5314    readonly error: any;
5315    readonly filename: string;
5316    readonly lineno: number;
5317    readonly message: string;
5318}
5319
5320declare var ErrorEvent: {
5321    prototype: ErrorEvent;
5322    new(type: string, eventInitDict?: ErrorEventInit): ErrorEvent;
5323};
5324
5325/** An event which takes place in the DOM. */
5326interface Event {
5327    /**
5328     * 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.
5329     */
5330    readonly bubbles: boolean;
5331    cancelBubble: boolean;
5332    /**
5333     * 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.
5334     */
5335    readonly cancelable: boolean;
5336    /**
5337     * 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.
5338     */
5339    readonly composed: boolean;
5340    /**
5341     * Returns the object whose event listener's callback is currently being invoked.
5342     */
5343    readonly currentTarget: EventTarget | null;
5344    /**
5345     * Returns true if preventDefault() was invoked successfully to indicate cancelation, and false otherwise.
5346     */
5347    readonly defaultPrevented: boolean;
5348    /**
5349     * Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET, and BUBBLING_PHASE.
5350     */
5351    readonly eventPhase: number;
5352    /**
5353     * Returns true if event was dispatched by the user agent, and false otherwise.
5354     */
5355    readonly isTrusted: boolean;
5356    returnValue: boolean;
5357    /** @deprecated */
5358    readonly srcElement: EventTarget | null;
5359    /**
5360     * Returns the object to which event is dispatched (its target).
5361     */
5362    readonly target: EventTarget | null;
5363    /**
5364     * Returns the event's timestamp as the number of milliseconds measured relative to the time origin.
5365     */
5366    readonly timeStamp: number;
5367    /**
5368     * Returns the type of event, e.g. "click", "hashchange", or "submit".
5369     */
5370    readonly type: string;
5371    /**
5372     * 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.
5373     */
5374    composedPath(): EventTarget[];
5375    initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;
5376    /**
5377     * 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.
5378     */
5379    preventDefault(): void;
5380    /**
5381     * 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.
5382     */
5383    stopImmediatePropagation(): void;
5384    /**
5385     * When dispatched in a tree, invoking this method prevents event from reaching any objects other than the current object.
5386     */
5387    stopPropagation(): void;
5388    readonly AT_TARGET: number;
5389    readonly BUBBLING_PHASE: number;
5390    readonly CAPTURING_PHASE: number;
5391    readonly NONE: number;
5392}
5393
5394declare var Event: {
5395    prototype: Event;
5396    new(type: string, eventInitDict?: EventInit): Event;
5397    readonly AT_TARGET: number;
5398    readonly BUBBLING_PHASE: number;
5399    readonly CAPTURING_PHASE: number;
5400    readonly NONE: number;
5401};
5402
5403interface EventListenerObject {
5404    handleEvent(evt: Event): void;
5405}
5406
5407interface EventSourceEventMap {
5408    "error": Event;
5409    "message": MessageEvent;
5410    "open": Event;
5411}
5412
5413interface EventSource extends EventTarget {
5414    onerror: ((this: EventSource, ev: Event) => any) | null;
5415    onmessage: ((this: EventSource, ev: MessageEvent) => any) | null;
5416    onopen: ((this: EventSource, ev: Event) => any) | null;
5417    /**
5418     * Returns the state of this EventSource object's connection. It can have the values described below.
5419     */
5420    readonly readyState: number;
5421    /**
5422     * Returns the URL providing the event stream.
5423     */
5424    readonly url: string;
5425    /**
5426     * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to "include", and false otherwise.
5427     */
5428    readonly withCredentials: boolean;
5429    /**
5430     * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED.
5431     */
5432    close(): void;
5433    readonly CLOSED: number;
5434    readonly CONNECTING: number;
5435    readonly OPEN: number;
5436    addEventListener<K extends keyof EventSourceEventMap>(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5437    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5438    removeEventListener<K extends keyof EventSourceEventMap>(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5439    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5440}
5441
5442declare var EventSource: {
5443    prototype: EventSource;
5444    new(url: string, eventSourceInitDict?: EventSourceInit): EventSource;
5445    readonly CLOSED: number;
5446    readonly CONNECTING: number;
5447    readonly OPEN: number;
5448};
5449
5450/** EventTarget is a DOM interface implemented by objects that can receive events and may have listeners for them. */
5451interface EventTarget {
5452    /**
5453     * 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.
5454     *
5455     * 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.
5456     *
5457     * 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.
5458     *
5459     * 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.
5460     *
5461     * When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.
5462     *
5463     * The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
5464     */
5465    addEventListener(type: string, listener: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions): void;
5466    /**
5467     * 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.
5468     */
5469    dispatchEvent(event: Event): boolean;
5470    /**
5471     * Removes the event listener in target's event listener list with the same type, callback, and options.
5472     */
5473    removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;
5474}
5475
5476declare var EventTarget: {
5477    prototype: EventTarget;
5478    new(): EventTarget;
5479};
5480
5481interface ExtensionScriptApis {
5482    extensionIdToShortId(extensionId: string): number;
5483    fireExtensionApiTelemetry(functionName: string, isSucceeded: boolean, isSupported: boolean, errorString: string): void;
5484    genericFunction(routerAddress: any, parameters?: string, callbackId?: number): void;
5485    genericSynchronousFunction(functionId: number, parameters?: string): string;
5486    genericWebRuntimeCallout(to: any, from: any, payload: string): void;
5487    getExtensionId(): string;
5488    registerGenericFunctionCallbackHandler(callbackHandler: Function): void;
5489    registerGenericPersistentCallbackHandler(callbackHandler: Function): void;
5490    registerWebRuntimeCallbackHandler(handler: Function): any;
5491}
5492
5493declare var ExtensionScriptApis: {
5494    prototype: ExtensionScriptApis;
5495    new(): ExtensionScriptApis;
5496};
5497
5498interface External {
5499    /** @deprecated */
5500    AddSearchProvider(): void;
5501    /** @deprecated */
5502    IsSearchProviderInstalled(): void;
5503}
5504
5505declare var External: {
5506    prototype: External;
5507    new(): External;
5508};
5509
5510/** Provides information about files and allows JavaScript in a web page to access their content. */
5511interface File extends Blob {
5512    readonly lastModified: number;
5513    readonly name: string;
5514}
5515
5516declare var File: {
5517    prototype: File;
5518    new(fileBits: BlobPart[], fileName: string, options?: FilePropertyBag): File;
5519};
5520
5521/** 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. */
5522interface FileList {
5523    readonly length: number;
5524    item(index: number): File | null;
5525    [index: number]: File;
5526}
5527
5528declare var FileList: {
5529    prototype: FileList;
5530    new(): FileList;
5531};
5532
5533interface FileReaderEventMap {
5534    "abort": ProgressEvent<FileReader>;
5535    "error": ProgressEvent<FileReader>;
5536    "load": ProgressEvent<FileReader>;
5537    "loadend": ProgressEvent<FileReader>;
5538    "loadstart": ProgressEvent<FileReader>;
5539    "progress": ProgressEvent<FileReader>;
5540}
5541
5542/** 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. */
5543interface FileReader extends EventTarget {
5544    readonly error: DOMException | null;
5545    onabort: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5546    onerror: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5547    onload: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5548    onloadend: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5549    onloadstart: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5550    onprogress: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5551    readonly readyState: number;
5552    readonly result: string | ArrayBuffer | null;
5553    abort(): void;
5554    readAsArrayBuffer(blob: Blob): void;
5555    readAsBinaryString(blob: Blob): void;
5556    readAsDataURL(blob: Blob): void;
5557    readAsText(blob: Blob, encoding?: string): void;
5558    readonly DONE: number;
5559    readonly EMPTY: number;
5560    readonly LOADING: number;
5561    addEventListener<K extends keyof FileReaderEventMap>(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5562    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5563    removeEventListener<K extends keyof FileReaderEventMap>(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5564    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5565}
5566
5567declare var FileReader: {
5568    prototype: FileReader;
5569    new(): FileReader;
5570    readonly DONE: number;
5571    readonly EMPTY: number;
5572    readonly LOADING: number;
5573};
5574
5575/** Focus-related events like focus, blur, focusin, or focusout. */
5576interface FocusEvent extends UIEvent {
5577    readonly relatedTarget: EventTarget | null;
5578}
5579
5580declare var FocusEvent: {
5581    prototype: FocusEvent;
5582    new(type: string, eventInitDict?: FocusEventInit): FocusEvent;
5583};
5584
5585interface FocusNavigationEvent extends Event {
5586    readonly navigationReason: NavigationReason;
5587    readonly originHeight: number;
5588    readonly originLeft: number;
5589    readonly originTop: number;
5590    readonly originWidth: number;
5591    requestFocus(): void;
5592}
5593
5594declare var FocusNavigationEvent: {
5595    prototype: FocusNavigationEvent;
5596    new(type: string, eventInitDict?: FocusNavigationEventInit): FocusNavigationEvent;
5597};
5598
5599/** 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". */
5600interface FormData {
5601    append(name: string, value: string | Blob, fileName?: string): void;
5602    delete(name: string): void;
5603    get(name: string): FormDataEntryValue | null;
5604    getAll(name: string): FormDataEntryValue[];
5605    has(name: string): boolean;
5606    set(name: string, value: string | Blob, fileName?: string): void;
5607    forEach(callbackfn: (value: FormDataEntryValue, key: string, parent: FormData) => void, thisArg?: any): void;
5608}
5609
5610declare var FormData: {
5611    prototype: FormData;
5612    new(form?: HTMLFormElement): FormData;
5613};
5614
5615/** 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. */
5616interface GainNode extends AudioNode {
5617    readonly gain: AudioParam;
5618}
5619
5620declare var GainNode: {
5621    prototype: GainNode;
5622    new(context: BaseAudioContext, options?: GainOptions): GainNode;
5623};
5624
5625/** This Gamepad API interface defines an individual gamepad or other controller, allowing access to information such as button presses, axis positions, and id. */
5626interface Gamepad {
5627    readonly axes: ReadonlyArray<number>;
5628    readonly buttons: ReadonlyArray<GamepadButton>;
5629    readonly connected: boolean;
5630    readonly hand: GamepadHand;
5631    readonly hapticActuators: ReadonlyArray<GamepadHapticActuator>;
5632    readonly id: string;
5633    readonly index: number;
5634    readonly mapping: GamepadMappingType;
5635    readonly pose: GamepadPose | null;
5636    readonly timestamp: number;
5637}
5638
5639declare var Gamepad: {
5640    prototype: Gamepad;
5641    new(): Gamepad;
5642};
5643
5644/** 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. */
5645interface GamepadButton {
5646    readonly pressed: boolean;
5647    readonly touched: boolean;
5648    readonly value: number;
5649}
5650
5651declare var GamepadButton: {
5652    prototype: GamepadButton;
5653    new(): GamepadButton;
5654};
5655
5656/** 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. */
5657interface GamepadEvent extends Event {
5658    readonly gamepad: Gamepad;
5659}
5660
5661declare var GamepadEvent: {
5662    prototype: GamepadEvent;
5663    new(type: string, eventInitDict: GamepadEventInit): GamepadEvent;
5664};
5665
5666/** This Gamepad API interface represents hardware in the controller designed to provide haptic feedback to the user (if available), most commonly vibration hardware. */
5667interface GamepadHapticActuator {
5668    readonly type: GamepadHapticActuatorType;
5669    pulse(value: number, duration: number): Promise<boolean>;
5670}
5671
5672declare var GamepadHapticActuator: {
5673    prototype: GamepadHapticActuator;
5674    new(): GamepadHapticActuator;
5675};
5676
5677/** This Gamepad API interface represents the pose of a WebVR controller at a given timestamp (which includes orientation, position, velocity, and acceleration information.) */
5678interface GamepadPose {
5679    readonly angularAcceleration: Float32Array | null;
5680    readonly angularVelocity: Float32Array | null;
5681    readonly hasOrientation: boolean;
5682    readonly hasPosition: boolean;
5683    readonly linearAcceleration: Float32Array | null;
5684    readonly linearVelocity: Float32Array | null;
5685    readonly orientation: Float32Array | null;
5686    readonly position: Float32Array | null;
5687}
5688
5689declare var GamepadPose: {
5690    prototype: GamepadPose;
5691    new(): GamepadPose;
5692};
5693
5694interface GenericTransformStream {
5695    readonly readable: ReadableStream;
5696    readonly writable: WritableStream;
5697}
5698
5699/** 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. */
5700interface Geolocation {
5701    clearWatch(watchId: number): void;
5702    getCurrentPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback, options?: PositionOptions): void;
5703    watchPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback, options?: PositionOptions): number;
5704}
5705
5706declare var Geolocation: {
5707    prototype: Geolocation;
5708    new(): Geolocation;
5709};
5710
5711interface GeolocationCoordinates {
5712    readonly accuracy: number;
5713    readonly altitude: number | null;
5714    readonly altitudeAccuracy: number | null;
5715    readonly heading: number | null;
5716    readonly latitude: number;
5717    readonly longitude: number;
5718    readonly speed: number | null;
5719}
5720
5721declare var GeolocationCoordinates: {
5722    prototype: GeolocationCoordinates;
5723    new(): GeolocationCoordinates;
5724};
5725
5726interface GeolocationPosition {
5727    readonly coords: GeolocationCoordinates;
5728    readonly timestamp: number;
5729}
5730
5731declare var GeolocationPosition: {
5732    prototype: GeolocationPosition;
5733    new(): GeolocationPosition;
5734};
5735
5736interface GeolocationPositionError {
5737    readonly code: number;
5738    readonly message: string;
5739    readonly PERMISSION_DENIED: number;
5740    readonly POSITION_UNAVAILABLE: number;
5741    readonly TIMEOUT: number;
5742}
5743
5744declare var GeolocationPositionError: {
5745    prototype: GeolocationPositionError;
5746    new(): GeolocationPositionError;
5747    readonly PERMISSION_DENIED: number;
5748    readonly POSITION_UNAVAILABLE: number;
5749    readonly TIMEOUT: number;
5750};
5751
5752interface GlobalEventHandlersEventMap {
5753    "abort": UIEvent;
5754    "animationcancel": AnimationEvent;
5755    "animationend": AnimationEvent;
5756    "animationiteration": AnimationEvent;
5757    "animationstart": AnimationEvent;
5758    "auxclick": MouseEvent;
5759    "beforeinput": InputEvent;
5760    "blur": FocusEvent;
5761    "cancel": Event;
5762    "canplay": Event;
5763    "canplaythrough": Event;
5764    "change": Event;
5765    "click": MouseEvent;
5766    "close": Event;
5767    "compositionend": CompositionEvent;
5768    "compositionstart": CompositionEvent;
5769    "compositionupdate": CompositionEvent;
5770    "contextmenu": MouseEvent;
5771    "cuechange": Event;
5772    "dblclick": MouseEvent;
5773    "drag": DragEvent;
5774    "dragend": DragEvent;
5775    "dragenter": DragEvent;
5776    "dragexit": Event;
5777    "dragleave": DragEvent;
5778    "dragover": DragEvent;
5779    "dragstart": DragEvent;
5780    "drop": DragEvent;
5781    "durationchange": Event;
5782    "emptied": Event;
5783    "ended": Event;
5784    "error": ErrorEvent;
5785    "focus": FocusEvent;
5786    "focusin": FocusEvent;
5787    "focusout": FocusEvent;
5788    "gotpointercapture": PointerEvent;
5789    "input": Event;
5790    "invalid": Event;
5791    "keydown": KeyboardEvent;
5792    "keypress": KeyboardEvent;
5793    "keyup": KeyboardEvent;
5794    "load": Event;
5795    "loadeddata": Event;
5796    "loadedmetadata": Event;
5797    "loadstart": Event;
5798    "lostpointercapture": PointerEvent;
5799    "mousedown": MouseEvent;
5800    "mouseenter": MouseEvent;
5801    "mouseleave": MouseEvent;
5802    "mousemove": MouseEvent;
5803    "mouseout": MouseEvent;
5804    "mouseover": MouseEvent;
5805    "mouseup": MouseEvent;
5806    "pause": Event;
5807    "play": Event;
5808    "playing": Event;
5809    "pointercancel": PointerEvent;
5810    "pointerdown": PointerEvent;
5811    "pointerenter": PointerEvent;
5812    "pointerleave": PointerEvent;
5813    "pointermove": PointerEvent;
5814    "pointerout": PointerEvent;
5815    "pointerover": PointerEvent;
5816    "pointerup": PointerEvent;
5817    "progress": ProgressEvent;
5818    "ratechange": Event;
5819    "reset": Event;
5820    "resize": UIEvent;
5821    "scroll": Event;
5822    "securitypolicyviolation": SecurityPolicyViolationEvent;
5823    "seeked": Event;
5824    "seeking": Event;
5825    "select": Event;
5826    "selectionchange": Event;
5827    "selectstart": Event;
5828    "stalled": Event;
5829    "submit": Event;
5830    "suspend": Event;
5831    "timeupdate": Event;
5832    "toggle": Event;
5833    "touchcancel": TouchEvent;
5834    "touchend": TouchEvent;
5835    "touchmove": TouchEvent;
5836    "touchstart": TouchEvent;
5837    "transitioncancel": TransitionEvent;
5838    "transitionend": TransitionEvent;
5839    "transitionrun": TransitionEvent;
5840    "transitionstart": TransitionEvent;
5841    "volumechange": Event;
5842    "waiting": Event;
5843    "wheel": WheelEvent;
5844}
5845
5846interface GlobalEventHandlers {
5847    /**
5848     * Fires when the user aborts the download.
5849     * @param ev The event.
5850     */
5851    onabort: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
5852    onanimationcancel: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
5853    onanimationend: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
5854    onanimationiteration: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
5855    onanimationstart: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
5856    onauxclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5857    /**
5858     * Fires when the object loses the input focus.
5859     * @param ev The focus event.
5860     */
5861    onblur: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
5862    oncancel: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5863    /**
5864     * Occurs when playback is possible, but would require further buffering.
5865     * @param ev The event.
5866     */
5867    oncanplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5868    oncanplaythrough: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5869    /**
5870     * Fires when the contents of the object or selection have changed.
5871     * @param ev The event.
5872     */
5873    onchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5874    /**
5875     * Fires when the user clicks the left mouse button on the object
5876     * @param ev The mouse event.
5877     */
5878    onclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5879    onclose: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5880    /**
5881     * Fires when the user clicks the right mouse button in the client area, opening the context menu.
5882     * @param ev The mouse event.
5883     */
5884    oncontextmenu: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5885    oncuechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5886    /**
5887     * Fires when the user double-clicks the object.
5888     * @param ev The mouse event.
5889     */
5890    ondblclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5891    /**
5892     * Fires on the source object continuously during a drag operation.
5893     * @param ev The event.
5894     */
5895    ondrag: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5896    /**
5897     * Fires on the source object when the user releases the mouse at the close of a drag operation.
5898     * @param ev The event.
5899     */
5900    ondragend: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5901    /**
5902     * Fires on the target element when the user drags the object to a valid drop target.
5903     * @param ev The drag event.
5904     */
5905    ondragenter: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5906    ondragexit: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5907    /**
5908     * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation.
5909     * @param ev The drag event.
5910     */
5911    ondragleave: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5912    /**
5913     * Fires on the target element continuously while the user drags the object over a valid drop target.
5914     * @param ev The event.
5915     */
5916    ondragover: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5917    /**
5918     * Fires on the source object when the user starts to drag a text selection or selected object.
5919     * @param ev The event.
5920     */
5921    ondragstart: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5922    ondrop: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5923    /**
5924     * Occurs when the duration attribute is updated.
5925     * @param ev The event.
5926     */
5927    ondurationchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5928    /**
5929     * Occurs when the media element is reset to its initial state.
5930     * @param ev The event.
5931     */
5932    onemptied: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5933    /**
5934     * Occurs when the end of playback is reached.
5935     * @param ev The event
5936     */
5937    onended: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5938    /**
5939     * Fires when an error occurs during object loading.
5940     * @param ev The event.
5941     */
5942    onerror: OnErrorEventHandler;
5943    /**
5944     * Fires when the object receives focus.
5945     * @param ev The event.
5946     */
5947    onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
5948    ongotpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5949    oninput: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5950    oninvalid: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5951    /**
5952     * Fires when the user presses a key.
5953     * @param ev The keyboard event
5954     */
5955    onkeydown: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
5956    /**
5957     * Fires when the user presses an alphanumeric key.
5958     * @param ev The event.
5959     */
5960    onkeypress: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
5961    /**
5962     * Fires when the user releases a key.
5963     * @param ev The keyboard event
5964     */
5965    onkeyup: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
5966    /**
5967     * Fires immediately after the browser loads the object.
5968     * @param ev The event.
5969     */
5970    onload: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5971    /**
5972     * Occurs when media data is loaded at the current playback position.
5973     * @param ev The event.
5974     */
5975    onloadeddata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5976    /**
5977     * Occurs when the duration and dimensions of the media have been determined.
5978     * @param ev The event.
5979     */
5980    onloadedmetadata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5981    /**
5982     * Occurs when Internet Explorer begins looking for media data.
5983     * @param ev The event.
5984     */
5985    onloadstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5986    onlostpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5987    /**
5988     * Fires when the user clicks the object with either mouse button.
5989     * @param ev The mouse event.
5990     */
5991    onmousedown: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5992    onmouseenter: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5993    onmouseleave: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5994    /**
5995     * Fires when the user moves the mouse over the object.
5996     * @param ev The mouse event.
5997     */
5998    onmousemove: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5999    /**
6000     * Fires when the user moves the mouse pointer outside the boundaries of the object.
6001     * @param ev The mouse event.
6002     */
6003    onmouseout: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
6004    /**
6005     * Fires when the user moves the mouse pointer into the object.
6006     * @param ev The mouse event.
6007     */
6008    onmouseover: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
6009    /**
6010     * Fires when the user releases a mouse button while the mouse is over the object.
6011     * @param ev The mouse event.
6012     */
6013    onmouseup: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
6014    /**
6015     * Occurs when playback is paused.
6016     * @param ev The event.
6017     */
6018    onpause: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6019    /**
6020     * Occurs when the play method is requested.
6021     * @param ev The event.
6022     */
6023    onplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6024    /**
6025     * Occurs when the audio or video has started playing.
6026     * @param ev The event.
6027     */
6028    onplaying: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6029    onpointercancel: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6030    onpointerdown: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6031    onpointerenter: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6032    onpointerleave: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6033    onpointermove: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6034    onpointerout: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6035    onpointerover: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6036    onpointerup: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
6037    /**
6038     * Occurs to indicate progress while downloading media data.
6039     * @param ev The event.
6040     */
6041    onprogress: ((this: GlobalEventHandlers, ev: ProgressEvent) => any) | null;
6042    /**
6043     * Occurs when the playback rate is increased or decreased.
6044     * @param ev The event.
6045     */
6046    onratechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6047    /**
6048     * Fires when the user resets a form.
6049     * @param ev The event.
6050     */
6051    onreset: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6052    onresize: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
6053    /**
6054     * Fires when the user repositions the scroll box in the scroll bar on the object.
6055     * @param ev The event.
6056     */
6057    onscroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6058    onsecuritypolicyviolation: ((this: GlobalEventHandlers, ev: SecurityPolicyViolationEvent) => any) | null;
6059    /**
6060     * Occurs when the seek operation ends.
6061     * @param ev The event.
6062     */
6063    onseeked: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6064    /**
6065     * Occurs when the current playback position is moved.
6066     * @param ev The event.
6067     */
6068    onseeking: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6069    /**
6070     * Fires when the current selection changes.
6071     * @param ev The event.
6072     */
6073    onselect: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6074    onselectionchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6075    onselectstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6076    /**
6077     * Occurs when the download has stopped.
6078     * @param ev The event.
6079     */
6080    onstalled: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6081    onsubmit: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6082    /**
6083     * Occurs if the load operation has been intentionally halted.
6084     * @param ev The event.
6085     */
6086    onsuspend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6087    /**
6088     * Occurs to indicate the current playback position.
6089     * @param ev The event.
6090     */
6091    ontimeupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6092    ontoggle: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6093    ontouchcancel?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null;
6094    ontouchend?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null;
6095    ontouchmove?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null;
6096    ontouchstart?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null;
6097    ontransitioncancel: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
6098    ontransitionend: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
6099    ontransitionrun: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
6100    ontransitionstart: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
6101    /**
6102     * Occurs when the volume is changed, or playback is muted or unmuted.
6103     * @param ev The event.
6104     */
6105    onvolumechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6106    /**
6107     * Occurs when playback stops because the next frame of a video resource is not available.
6108     * @param ev The event.
6109     */
6110    onwaiting: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6111    onwheel: ((this: GlobalEventHandlers, ev: WheelEvent) => any) | null;
6112    addEventListener<K extends keyof GlobalEventHandlersEventMap>(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6113    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6114    removeEventListener<K extends keyof GlobalEventHandlersEventMap>(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6115    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6116}
6117
6118interface HTMLAllCollection {
6119    /**
6120     * Returns the number of elements in the collection.
6121     */
6122    readonly length: number;
6123    /**
6124     * Returns the item with index index from the collection (determined by tree order).
6125     */
6126    item(nameOrIndex?: string): HTMLCollection | Element | null;
6127    /**
6128     * Returns the item with ID or name name from the collection.
6129     *
6130     * If there are multiple matching items, then an HTMLCollection object containing all those elements is returned.
6131     *
6132     * 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.
6133     */
6134    namedItem(name: string): HTMLCollection | Element | null;
6135    [index: number]: Element;
6136}
6137
6138declare var HTMLAllCollection: {
6139    prototype: HTMLAllCollection;
6140    new(): HTMLAllCollection;
6141};
6142
6143/** 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. */
6144interface HTMLAnchorElement extends HTMLElement, HTMLHyperlinkElementUtils {
6145    /**
6146     * Sets or retrieves the character set used to encode the object.
6147     */
6148    /** @deprecated */
6149    charset: string;
6150    /**
6151     * Sets or retrieves the coordinates of the object.
6152     */
6153    /** @deprecated */
6154    coords: string;
6155    download: string;
6156    /**
6157     * Sets or retrieves the language code of the object.
6158     */
6159    hreflang: string;
6160    /**
6161     * Sets or retrieves the shape of the object.
6162     */
6163    /** @deprecated */
6164    name: string;
6165    ping: string;
6166    referrerPolicy: string;
6167    /**
6168     * Sets or retrieves the relationship between the object and the destination of the link.
6169     */
6170    rel: string;
6171    readonly relList: DOMTokenList;
6172    /**
6173     * Sets or retrieves the relationship between the object and the destination of the link.
6174     */
6175    /** @deprecated */
6176    rev: string;
6177    /**
6178     * Sets or retrieves the shape of the object.
6179     */
6180    /** @deprecated */
6181    shape: string;
6182    /**
6183     * Sets or retrieves the window or frame at which to target content.
6184     */
6185    target: string;
6186    /**
6187     * Retrieves or sets the text of the object as a string.
6188     */
6189    text: string;
6190    type: string;
6191    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6192    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6193    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6194    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6195}
6196
6197declare var HTMLAnchorElement: {
6198    prototype: HTMLAnchorElement;
6199    new(): HTMLAnchorElement;
6200};
6201
6202interface HTMLAppletElement extends HTMLElement {
6203    /** @deprecated */
6204    align: string;
6205    /**
6206     * Sets or retrieves a text alternative to the graphic.
6207     */
6208    /** @deprecated */
6209    alt: string;
6210    /**
6211     * Sets or retrieves a character string that can be used to implement your own archive functionality for the object.
6212     */
6213    /** @deprecated */
6214    archive: string;
6215    /** @deprecated */
6216    code: string;
6217    /**
6218     * Sets or retrieves the URL of the component.
6219     */
6220    /** @deprecated */
6221    codeBase: string;
6222    readonly form: HTMLFormElement | null;
6223    /**
6224     * Sets or retrieves the height of the object.
6225     */
6226    /** @deprecated */
6227    height: string;
6228    /** @deprecated */
6229    hspace: number;
6230    /**
6231     * Sets or retrieves the shape of the object.
6232     */
6233    /** @deprecated */
6234    name: string;
6235    /** @deprecated */
6236    object: string;
6237    /** @deprecated */
6238    vspace: number;
6239    /** @deprecated */
6240    width: string;
6241    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAppletElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6242    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6243    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAppletElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6244    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6245}
6246
6247declare var HTMLAppletElement: {
6248    prototype: HTMLAppletElement;
6249    new(): HTMLAppletElement;
6250};
6251
6252/** 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. */
6253interface HTMLAreaElement extends HTMLElement, HTMLHyperlinkElementUtils {
6254    /**
6255     * Sets or retrieves a text alternative to the graphic.
6256     */
6257    alt: string;
6258    /**
6259     * Sets or retrieves the coordinates of the object.
6260     */
6261    coords: string;
6262    download: string;
6263    /**
6264     * Sets or gets whether clicks in this region cause action.
6265     */
6266    /** @deprecated */
6267    noHref: boolean;
6268    ping: string;
6269    referrerPolicy: string;
6270    rel: string;
6271    readonly relList: DOMTokenList;
6272    /**
6273     * Sets or retrieves the shape of the object.
6274     */
6275    shape: string;
6276    /**
6277     * Sets or retrieves the window or frame at which to target content.
6278     */
6279    target: string;
6280    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6281    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6282    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6283    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6284}
6285
6286declare var HTMLAreaElement: {
6287    prototype: HTMLAreaElement;
6288    new(): HTMLAreaElement;
6289};
6290
6291/** Provides access to the properties of <audio> elements, as well as methods to manipulate them. It derives from the HTMLMediaElement interface. */
6292interface HTMLAudioElement extends HTMLMediaElement {
6293    addEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLAudioElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6294    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6295    removeEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLAudioElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6296    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6297}
6298
6299declare var HTMLAudioElement: {
6300    prototype: HTMLAudioElement;
6301    new(): HTMLAudioElement;
6302};
6303
6304/** A HTML line break element (<br>). It inherits from HTMLElement. */
6305interface HTMLBRElement extends HTMLElement {
6306    /**
6307     * Sets or retrieves the side on which floating objects are not to be positioned when any IHTMLBlockElement is inserted into the document.
6308     */
6309    /** @deprecated */
6310    clear: string;
6311    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6312    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6313    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6314    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6315}
6316
6317declare var HTMLBRElement: {
6318    prototype: HTMLBRElement;
6319    new(): HTMLBRElement;
6320};
6321
6322/** Contains the base URI for a document. This object inherits all of the properties and methods as described in the HTMLElement interface. */
6323interface HTMLBaseElement extends HTMLElement {
6324    /**
6325     * Gets or sets the baseline URL on which relative links are based.
6326     */
6327    href: string;
6328    /**
6329     * Sets or retrieves the window or frame at which to target content.
6330     */
6331    target: string;
6332    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBaseElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6333    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6334    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBaseElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6335    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6336}
6337
6338declare var HTMLBaseElement: {
6339    prototype: HTMLBaseElement;
6340    new(): HTMLBaseElement;
6341};
6342
6343/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <basefont> elements. */
6344interface HTMLBaseFontElement extends HTMLElement, DOML2DeprecatedColorProperty {
6345    /**
6346     * Sets or retrieves the current typeface family.
6347     */
6348    /** @deprecated */
6349    face: string;
6350    /**
6351     * Sets or retrieves the font size of the object.
6352     */
6353    /** @deprecated */
6354    size: number;
6355    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBaseFontElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6356    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6357    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBaseFontElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6358    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6359}
6360
6361declare var HTMLBaseFontElement: {
6362    prototype: HTMLBaseFontElement;
6363    new(): HTMLBaseFontElement;
6364};
6365
6366interface HTMLBodyElementEventMap extends HTMLElementEventMap, WindowEventHandlersEventMap {
6367    "orientationchange": Event;
6368}
6369
6370/** Provides special properties (beyond those inherited from the regular HTMLElement interface) for manipulating <body> elements. */
6371interface HTMLBodyElement extends HTMLElement, WindowEventHandlers {
6372    /** @deprecated */
6373    aLink: string;
6374    /** @deprecated */
6375    background: string;
6376    /** @deprecated */
6377    bgColor: string;
6378    /** @deprecated */
6379    link: string;
6380    /** @deprecated */
6381    onorientationchange: ((this: HTMLBodyElement, ev: Event) => any) | null;
6382    /** @deprecated */
6383    text: string;
6384    /** @deprecated */
6385    vLink: string;
6386    addEventListener<K extends keyof HTMLBodyElementEventMap>(type: K, listener: (this: HTMLBodyElement, ev: HTMLBodyElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6387    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6388    removeEventListener<K extends keyof HTMLBodyElementEventMap>(type: K, listener: (this: HTMLBodyElement, ev: HTMLBodyElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6389    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6390}
6391
6392declare var HTMLBodyElement: {
6393    prototype: HTMLBodyElement;
6394    new(): HTMLBodyElement;
6395};
6396
6397/** Provides properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <button> elements. */
6398interface HTMLButtonElement extends HTMLElement {
6399    disabled: boolean;
6400    /**
6401     * Retrieves a reference to the form that the object is embedded in.
6402     */
6403    readonly form: HTMLFormElement | null;
6404    /**
6405     * Overrides the action attribute (where the data on a form is sent) on the parent form element.
6406     */
6407    formAction: string;
6408    /**
6409     * Used to override the encoding (formEnctype attribute) specified on the form element.
6410     */
6411    formEnctype: string;
6412    /**
6413     * Overrides the submit method attribute previously specified on a form element.
6414     */
6415    formMethod: string;
6416    /**
6417     * 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.
6418     */
6419    formNoValidate: boolean;
6420    /**
6421     * Overrides the target attribute on a form element.
6422     */
6423    formTarget: string;
6424    readonly labels: NodeListOf<HTMLLabelElement>;
6425    /**
6426     * Sets or retrieves the name of the object.
6427     */
6428    name: string;
6429    /**
6430     * Gets the classification and default behavior of the button.
6431     */
6432    type: string;
6433    /**
6434     * 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.
6435     */
6436    readonly validationMessage: string;
6437    /**
6438     * Returns a  ValidityState object that represents the validity states of an element.
6439     */
6440    readonly validity: ValidityState;
6441    /**
6442     * Sets or retrieves the default or selected value of the control.
6443     */
6444    value: string;
6445    /**
6446     * Returns whether an element will successfully validate based on forms validation rules and constraints.
6447     */
6448    readonly willValidate: boolean;
6449    /**
6450     * Returns whether a form will validate when it is submitted, without having to submit it.
6451     */
6452    checkValidity(): boolean;
6453    reportValidity(): boolean;
6454    /**
6455     * Sets a custom error message that is displayed when a form is submitted.
6456     * @param error Sets a custom error message that is displayed when a form is submitted.
6457     */
6458    setCustomValidity(error: string): void;
6459    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLButtonElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6460    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6461    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLButtonElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6462    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6463}
6464
6465declare var HTMLButtonElement: {
6466    prototype: HTMLButtonElement;
6467    new(): HTMLButtonElement;
6468};
6469
6470/** 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. */
6471interface HTMLCanvasElement extends HTMLElement {
6472    /**
6473     * Gets or sets the height of a canvas element on a document.
6474     */
6475    height: number;
6476    /**
6477     * Gets or sets the width of a canvas element on a document.
6478     */
6479    width: number;
6480    /**
6481     * 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.
6482     * @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");
6483     */
6484    getContext(contextId: "2d", options?: CanvasRenderingContext2DSettings): CanvasRenderingContext2D | null;
6485    getContext(contextId: "bitmaprenderer", options?: ImageBitmapRenderingContextSettings): ImageBitmapRenderingContext | null;
6486    getContext(contextId: "webgl", options?: WebGLContextAttributes): WebGLRenderingContext | null;
6487    getContext(contextId: "webgl2", options?: WebGLContextAttributes): WebGL2RenderingContext | null;
6488    getContext(contextId: string, options?: any): RenderingContext | null;
6489    toBlob(callback: BlobCallback, type?: string, quality?: any): void;
6490    /**
6491     * Returns the content of the current canvas as an image that you can use as a source for another canvas or an HTML element.
6492     * @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.
6493     */
6494    toDataURL(type?: string, quality?: any): string;
6495    transferControlToOffscreen(): OffscreenCanvas;
6496    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6497    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6498    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6499    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6500}
6501
6502declare var HTMLCanvasElement: {
6503    prototype: HTMLCanvasElement;
6504    new(): HTMLCanvasElement;
6505};
6506
6507/** A generic collection (array-like object similar to arguments) of elements (in document order) and offers methods and properties for selecting from the list. */
6508interface HTMLCollectionBase {
6509    /**
6510     * Sets or retrieves the number of objects in a collection.
6511     */
6512    readonly length: number;
6513    /**
6514     * Retrieves an object from various collections.
6515     */
6516    item(index: number): Element | null;
6517    [index: number]: Element;
6518}
6519
6520interface HTMLCollection extends HTMLCollectionBase {
6521    /**
6522     * Retrieves a select object or an object from an options collection.
6523     */
6524    namedItem(name: string): Element | null;
6525}
6526
6527declare var HTMLCollection: {
6528    prototype: HTMLCollection;
6529    new(): HTMLCollection;
6530};
6531
6532interface HTMLCollectionOf<T extends Element> extends HTMLCollectionBase {
6533    item(index: number): T | null;
6534    namedItem(name: string): T | null;
6535    [index: number]: T;
6536}
6537
6538/** Provides special properties (beyond those of the regular HTMLElement interface it also has available to it by inheritance) for manipulating definition list (<dl>) elements. */
6539interface HTMLDListElement extends HTMLElement {
6540    /** @deprecated */
6541    compact: boolean;
6542    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6543    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6544    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6545    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6546}
6547
6548declare var HTMLDListElement: {
6549    prototype: HTMLDListElement;
6550    new(): HTMLDListElement;
6551};
6552
6553/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <data> elements. */
6554interface HTMLDataElement extends HTMLElement {
6555    value: string;
6556    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6557    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6558    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6559    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6560}
6561
6562declare var HTMLDataElement: {
6563    prototype: HTMLDataElement;
6564    new(): HTMLDataElement;
6565};
6566
6567/** Provides special properties (beyond the HTMLElement object interface it also has available to it by inheritance) to manipulate <datalist> elements and their content. */
6568interface HTMLDataListElement extends HTMLElement {
6569    readonly options: HTMLCollectionOf<HTMLOptionElement>;
6570    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6571    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6572    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6573    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6574}
6575
6576declare var HTMLDataListElement: {
6577    prototype: HTMLDataListElement;
6578    new(): HTMLDataListElement;
6579};
6580
6581interface HTMLDetailsElement extends HTMLElement {
6582    open: boolean;
6583    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDetailsElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6584    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6585    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDetailsElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6586    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6587}
6588
6589declare var HTMLDetailsElement: {
6590    prototype: HTMLDetailsElement;
6591    new(): HTMLDetailsElement;
6592};
6593
6594interface HTMLDialogElement extends HTMLElement {
6595    open: boolean;
6596    returnValue: string;
6597    close(returnValue?: string): void;
6598    show(): void;
6599    showModal(): void;
6600    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDialogElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6601    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6602    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDialogElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6603    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6604}
6605
6606declare var HTMLDialogElement: {
6607    prototype: HTMLDialogElement;
6608    new(): HTMLDialogElement;
6609};
6610
6611interface HTMLDirectoryElement extends HTMLElement {
6612    /** @deprecated */
6613    compact: boolean;
6614    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDirectoryElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6615    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6616    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDirectoryElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6617    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6618}
6619
6620declare var HTMLDirectoryElement: {
6621    prototype: HTMLDirectoryElement;
6622    new(): HTMLDirectoryElement;
6623};
6624
6625/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <div> elements. */
6626interface HTMLDivElement extends HTMLElement {
6627    /**
6628     * Sets or retrieves how the object is aligned with adjacent text.
6629     */
6630    /** @deprecated */
6631    align: string;
6632    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6633    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6634    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6635    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6636}
6637
6638declare var HTMLDivElement: {
6639    prototype: HTMLDivElement;
6640    new(): HTMLDivElement;
6641};
6642
6643/** The HTMLDocument property of Window objects is an alias that browsers expose for the Document interface object. */
6644interface HTMLDocument extends Document {
6645    addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: HTMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6646    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6647    removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: HTMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6648    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6649}
6650
6651declare var HTMLDocument: {
6652    prototype: HTMLDocument;
6653    new(): HTMLDocument;
6654};
6655
6656interface HTMLElementEventMap extends ElementEventMap, GlobalEventHandlersEventMap, DocumentAndElementEventHandlersEventMap {
6657}
6658
6659/** Any HTML element. Some elements directly implement this interface, while others implement it via an interface that inherits it. */
6660interface HTMLElement extends Element, DocumentAndElementEventHandlers, ElementCSSInlineStyle, ElementCSSInlineStyle, ElementContentEditable, GlobalEventHandlers, HTMLOrSVGElement {
6661    accessKey: string;
6662    readonly accessKeyLabel: string;
6663    autocapitalize: string;
6664    dir: string;
6665    draggable: boolean;
6666    hidden: boolean;
6667    innerText: string;
6668    lang: string;
6669    readonly offsetHeight: number;
6670    readonly offsetLeft: number;
6671    readonly offsetParent: Element | null;
6672    readonly offsetTop: number;
6673    readonly offsetWidth: number;
6674    spellcheck: boolean;
6675    title: string;
6676    translate: boolean;
6677    click(): void;
6678    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6679    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6680    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6681    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6682}
6683
6684declare var HTMLElement: {
6685    prototype: HTMLElement;
6686    new(): HTMLElement;
6687};
6688
6689/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <embed> elements. */
6690interface HTMLEmbedElement extends HTMLElement {
6691    /** @deprecated */
6692    align: string;
6693    /**
6694     * Sets or retrieves the height of the object.
6695     */
6696    height: string;
6697    /**
6698     * Sets or retrieves the name of the object.
6699     */
6700    /** @deprecated */
6701    name: string;
6702    /**
6703     * Sets or retrieves a URL to be loaded by the object.
6704     */
6705    src: string;
6706    type: string;
6707    /**
6708     * Sets or retrieves the width of the object.
6709     */
6710    width: string;
6711    getSVGDocument(): Document | null;
6712    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLEmbedElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6713    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6714    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLEmbedElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6715    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6716}
6717
6718declare var HTMLEmbedElement: {
6719    prototype: HTMLEmbedElement;
6720    new(): HTMLEmbedElement;
6721};
6722
6723/** 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. */
6724interface HTMLFieldSetElement extends HTMLElement {
6725    disabled: boolean;
6726    readonly elements: HTMLCollection;
6727    /**
6728     * Retrieves a reference to the form that the object is embedded in.
6729     */
6730    readonly form: HTMLFormElement | null;
6731    name: string;
6732    readonly type: string;
6733    /**
6734     * 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.
6735     */
6736    readonly validationMessage: string;
6737    /**
6738     * Returns a  ValidityState object that represents the validity states of an element.
6739     */
6740    readonly validity: ValidityState;
6741    /**
6742     * Returns whether an element will successfully validate based on forms validation rules and constraints.
6743     */
6744    readonly willValidate: boolean;
6745    /**
6746     * Returns whether a form will validate when it is submitted, without having to submit it.
6747     */
6748    checkValidity(): boolean;
6749    reportValidity(): boolean;
6750    /**
6751     * Sets a custom error message that is displayed when a form is submitted.
6752     * @param error Sets a custom error message that is displayed when a form is submitted.
6753     */
6754    setCustomValidity(error: string): void;
6755    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFieldSetElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6756    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6757    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFieldSetElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6758    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6759}
6760
6761declare var HTMLFieldSetElement: {
6762    prototype: HTMLFieldSetElement;
6763    new(): HTMLFieldSetElement;
6764};
6765
6766/** 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. */
6767interface HTMLFontElement extends HTMLElement {
6768    /** @deprecated */
6769    color: string;
6770    /**
6771     * Sets or retrieves the current typeface family.
6772     */
6773    /** @deprecated */
6774    face: string;
6775    /** @deprecated */
6776    size: string;
6777    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFontElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6778    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6779    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFontElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6780    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6781}
6782
6783declare var HTMLFontElement: {
6784    prototype: HTMLFontElement;
6785    new(): HTMLFontElement;
6786};
6787
6788/** A collection of HTML form control elements.  */
6789interface HTMLFormControlsCollection extends HTMLCollectionBase {
6790    /**
6791     * Returns the item with ID or name name from the collection.
6792     *
6793     * If there are multiple matching items, then a RadioNodeList object containing all those elements is returned.
6794     */
6795    namedItem(name: string): RadioNodeList | Element | null;
6796}
6797
6798declare var HTMLFormControlsCollection: {
6799    prototype: HTMLFormControlsCollection;
6800    new(): HTMLFormControlsCollection;
6801};
6802
6803/** 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. */
6804interface HTMLFormElement extends HTMLElement {
6805    /**
6806     * Sets or retrieves a list of character encodings for input data that must be accepted by the server processing the form.
6807     */
6808    acceptCharset: string;
6809    /**
6810     * Sets or retrieves the URL to which the form content is sent for processing.
6811     */
6812    action: string;
6813    /**
6814     * Specifies whether autocomplete is applied to an editable text field.
6815     */
6816    autocomplete: string;
6817    /**
6818     * Retrieves a collection, in source order, of all controls in a given form.
6819     */
6820    readonly elements: HTMLFormControlsCollection;
6821    /**
6822     * Sets or retrieves the MIME encoding for the form.
6823     */
6824    encoding: string;
6825    /**
6826     * Sets or retrieves the encoding type for the form.
6827     */
6828    enctype: string;
6829    /**
6830     * Sets or retrieves the number of objects in a collection.
6831     */
6832    readonly length: number;
6833    /**
6834     * Sets or retrieves how to send the form data to the server.
6835     */
6836    method: string;
6837    /**
6838     * Sets or retrieves the name of the object.
6839     */
6840    name: string;
6841    /**
6842     * Designates a form that is not validated when submitted.
6843     */
6844    noValidate: boolean;
6845    /**
6846     * Sets or retrieves the window or frame at which to target content.
6847     */
6848    target: string;
6849    /**
6850     * Returns whether a form will validate when it is submitted, without having to submit it.
6851     */
6852    checkValidity(): boolean;
6853    reportValidity(): boolean;
6854    /**
6855     * Fires when the user resets a form.
6856     */
6857    reset(): void;
6858    /**
6859     * Fires when a FORM is about to be submitted.
6860     */
6861    submit(): void;
6862    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFormElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6863    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6864    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFormElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6865    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6866    [index: number]: Element;
6867    [name: string]: any;
6868}
6869
6870declare var HTMLFormElement: {
6871    prototype: HTMLFormElement;
6872    new(): HTMLFormElement;
6873};
6874
6875interface HTMLFrameElement extends HTMLElement {
6876    /**
6877     * Retrieves the document object of the page or frame.
6878     */
6879    /** @deprecated */
6880    readonly contentDocument: Document | null;
6881    /**
6882     * Retrieves the object of the specified.
6883     */
6884    /** @deprecated */
6885    readonly contentWindow: WindowProxy | null;
6886    /**
6887     * Sets or retrieves whether to display a border for the frame.
6888     */
6889    /** @deprecated */
6890    frameBorder: string;
6891    /**
6892     * Sets or retrieves a URI to a long description of the object.
6893     */
6894    /** @deprecated */
6895    longDesc: string;
6896    /**
6897     * Sets or retrieves the top and bottom margin heights before displaying the text in a frame.
6898     */
6899    /** @deprecated */
6900    marginHeight: string;
6901    /**
6902     * Sets or retrieves the left and right margin widths before displaying the text in a frame.
6903     */
6904    /** @deprecated */
6905    marginWidth: string;
6906    /**
6907     * Sets or retrieves the frame name.
6908     */
6909    /** @deprecated */
6910    name: string;
6911    /**
6912     * Sets or retrieves whether the user can resize the frame.
6913     */
6914    /** @deprecated */
6915    noResize: boolean;
6916    /**
6917     * Sets or retrieves whether the frame can be scrolled.
6918     */
6919    /** @deprecated */
6920    scrolling: string;
6921    /**
6922     * Sets or retrieves a URL to be loaded by the object.
6923     */
6924    /** @deprecated */
6925    src: string;
6926    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6927    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6928    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6929    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6930}
6931
6932declare var HTMLFrameElement: {
6933    prototype: HTMLFrameElement;
6934    new(): HTMLFrameElement;
6935};
6936
6937interface HTMLFrameSetElementEventMap extends HTMLElementEventMap, WindowEventHandlersEventMap {
6938}
6939
6940/** Provides special properties (beyond those of the regular HTMLElement interface they also inherit) for manipulating <frameset> elements. */
6941interface HTMLFrameSetElement extends HTMLElement, WindowEventHandlers {
6942    /**
6943     * Sets or retrieves the frame widths of the object.
6944     */
6945    /** @deprecated */
6946    cols: string;
6947    /**
6948     * Sets or retrieves the frame heights of the object.
6949     */
6950    /** @deprecated */
6951    rows: string;
6952    addEventListener<K extends keyof HTMLFrameSetElementEventMap>(type: K, listener: (this: HTMLFrameSetElement, ev: HTMLFrameSetElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6953    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6954    removeEventListener<K extends keyof HTMLFrameSetElementEventMap>(type: K, listener: (this: HTMLFrameSetElement, ev: HTMLFrameSetElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6955    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6956}
6957
6958declare var HTMLFrameSetElement: {
6959    prototype: HTMLFrameSetElement;
6960    new(): HTMLFrameSetElement;
6961};
6962
6963/** Provides special properties (beyond those of the HTMLElement interface it also has available to it by inheritance) for manipulating <hr> elements. */
6964interface HTMLHRElement extends HTMLElement {
6965    /**
6966     * Sets or retrieves how the object is aligned with adjacent text.
6967     */
6968    /** @deprecated */
6969    align: string;
6970    /** @deprecated */
6971    color: string;
6972    /**
6973     * Sets or retrieves whether the horizontal rule is drawn with 3-D shading.
6974     */
6975    /** @deprecated */
6976    noShade: boolean;
6977    /** @deprecated */
6978    size: string;
6979    /**
6980     * Sets or retrieves the width of the object.
6981     */
6982    /** @deprecated */
6983    width: string;
6984    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6985    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6986    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6987    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6988}
6989
6990declare var HTMLHRElement: {
6991    prototype: HTMLHRElement;
6992    new(): HTMLHRElement;
6993};
6994
6995/** Contains the descriptive information, or metadata, for a document. This object inherits all of the properties and methods described in the HTMLElement interface. */
6996interface HTMLHeadElement extends HTMLElement {
6997    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6998    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6999    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7000    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7001}
7002
7003declare var HTMLHeadElement: {
7004    prototype: HTMLHeadElement;
7005    new(): HTMLHeadElement;
7006};
7007
7008/** The different heading elements. It inherits methods and properties from the HTMLElement interface. */
7009interface HTMLHeadingElement extends HTMLElement {
7010    /**
7011     * Sets or retrieves a value that indicates the table alignment.
7012     */
7013    /** @deprecated */
7014    align: string;
7015    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadingElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7016    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7017    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadingElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7018    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7019}
7020
7021declare var HTMLHeadingElement: {
7022    prototype: HTMLHeadingElement;
7023    new(): HTMLHeadingElement;
7024};
7025
7026/** Serves as the root node for a given HTML document. This object inherits the properties and methods described in the HTMLElement interface. */
7027interface HTMLHtmlElement extends HTMLElement {
7028    /**
7029     * Sets or retrieves the DTD version that governs the current document.
7030     */
7031    /** @deprecated */
7032    version: string;
7033    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHtmlElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7034    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7035    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHtmlElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7036    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7037}
7038
7039declare var HTMLHtmlElement: {
7040    prototype: HTMLHtmlElement;
7041    new(): HTMLHtmlElement;
7042};
7043
7044interface HTMLHyperlinkElementUtils {
7045    hash: string;
7046    host: string;
7047    hostname: string;
7048    href: string;
7049    toString(): string;
7050    readonly origin: string;
7051    password: string;
7052    pathname: string;
7053    port: string;
7054    protocol: string;
7055    search: string;
7056    username: string;
7057}
7058
7059/** 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. */
7060interface HTMLIFrameElement extends HTMLElement {
7061    /**
7062     * Sets or retrieves how the object is aligned with adjacent text.
7063     */
7064    /** @deprecated */
7065    align: string;
7066    allow: string;
7067    allowFullscreen: boolean;
7068    allowPaymentRequest: boolean;
7069    /**
7070     * Retrieves the document object of the page or frame.
7071     */
7072    readonly contentDocument: Document | null;
7073    /**
7074     * Retrieves the object of the specified.
7075     */
7076    readonly contentWindow: WindowProxy | null;
7077    /**
7078     * Sets or retrieves whether to display a border for the frame.
7079     */
7080    /** @deprecated */
7081    frameBorder: string;
7082    /**
7083     * Sets or retrieves the height of the object.
7084     */
7085    height: string;
7086    /**
7087     * Sets or retrieves a URI to a long description of the object.
7088     */
7089    /** @deprecated */
7090    longDesc: string;
7091    /**
7092     * Sets or retrieves the top and bottom margin heights before displaying the text in a frame.
7093     */
7094    /** @deprecated */
7095    marginHeight: string;
7096    /**
7097     * Sets or retrieves the left and right margin widths before displaying the text in a frame.
7098     */
7099    /** @deprecated */
7100    marginWidth: string;
7101    /**
7102     * Sets or retrieves the frame name.
7103     */
7104    name: string;
7105    referrerPolicy: ReferrerPolicy;
7106    readonly sandbox: DOMTokenList;
7107    /**
7108     * Sets or retrieves whether the frame can be scrolled.
7109     */
7110    /** @deprecated */
7111    scrolling: string;
7112    /**
7113     * Sets or retrieves a URL to be loaded by the object.
7114     */
7115    src: string;
7116    /**
7117     * Sets or retrives the content of the page that is to contain.
7118     */
7119    srcdoc: string;
7120    /**
7121     * Sets or retrieves the width of the object.
7122     */
7123    width: string;
7124    getSVGDocument(): Document | null;
7125    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLIFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7126    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7127    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLIFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7128    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7129}
7130
7131declare var HTMLIFrameElement: {
7132    prototype: HTMLIFrameElement;
7133    new(): HTMLIFrameElement;
7134};
7135
7136/** Provides special properties and methods for manipulating <img> elements. */
7137interface HTMLImageElement extends HTMLElement {
7138    /**
7139     * Sets or retrieves how the object is aligned with adjacent text.
7140     */
7141    /** @deprecated */
7142    align: string;
7143    /**
7144     * Sets or retrieves a text alternative to the graphic.
7145     */
7146    alt: string;
7147    /**
7148     * Specifies the properties of a border drawn around an object.
7149     */
7150    /** @deprecated */
7151    border: string;
7152    /**
7153     * Retrieves whether the object is fully loaded.
7154     */
7155    readonly complete: boolean;
7156    crossOrigin: string | null;
7157    readonly currentSrc: string;
7158    decoding: "async" | "sync" | "auto";
7159    /**
7160     * Sets or retrieves the height of the object.
7161     */
7162    height: number;
7163    /**
7164     * Sets or retrieves the width of the border to draw around the object.
7165     */
7166    /** @deprecated */
7167    hspace: number;
7168    /**
7169     * Sets or retrieves whether the image is a server-side image map.
7170     */
7171    isMap: boolean;
7172    loading: string;
7173    /**
7174     * Sets or retrieves a Uniform Resource Identifier (URI) to a long description of the object.
7175     */
7176    /** @deprecated */
7177    longDesc: string;
7178    /** @deprecated */
7179    lowsrc: string;
7180    /**
7181     * Sets or retrieves the name of the object.
7182     */
7183    /** @deprecated */
7184    name: string;
7185    /**
7186     * The original height of the image resource before sizing.
7187     */
7188    readonly naturalHeight: number;
7189    /**
7190     * The original width of the image resource before sizing.
7191     */
7192    readonly naturalWidth: number;
7193    referrerPolicy: string;
7194    sizes: string;
7195    /**
7196     * The address or URL of the a media resource that is to be considered.
7197     */
7198    src: string;
7199    srcset: string;
7200    /**
7201     * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map.
7202     */
7203    useMap: string;
7204    /**
7205     * Sets or retrieves the vertical margin for the object.
7206     */
7207    /** @deprecated */
7208    vspace: number;
7209    /**
7210     * Sets or retrieves the width of the object.
7211     */
7212    width: number;
7213    readonly x: number;
7214    readonly y: number;
7215    decode(): Promise<void>;
7216    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLImageElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7217    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7218    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLImageElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7219    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7220}
7221
7222declare var HTMLImageElement: {
7223    prototype: HTMLImageElement;
7224    new(): HTMLImageElement;
7225};
7226
7227/** Provides special properties and methods for manipulating the options, layout, and presentation of <input> elements. */
7228interface HTMLInputElement extends HTMLElement {
7229    /**
7230     * Sets or retrieves a comma-separated list of content types.
7231     */
7232    accept: string;
7233    /**
7234     * Sets or retrieves how the object is aligned with adjacent text.
7235     */
7236    /** @deprecated */
7237    align: string;
7238    /**
7239     * Sets or retrieves a text alternative to the graphic.
7240     */
7241    alt: string;
7242    /**
7243     * Specifies whether autocomplete is applied to an editable text field.
7244     */
7245    autocomplete: string;
7246    /**
7247     * Sets or retrieves the state of the check box or radio button.
7248     */
7249    checked: boolean;
7250    /**
7251     * Sets or retrieves the state of the check box or radio button.
7252     */
7253    defaultChecked: boolean;
7254    /**
7255     * Sets or retrieves the initial contents of the object.
7256     */
7257    defaultValue: string;
7258    dirName: string;
7259    disabled: boolean;
7260    /**
7261     * Returns a FileList object on a file type input object.
7262     */
7263    files: FileList | null;
7264    /**
7265     * Retrieves a reference to the form that the object is embedded in.
7266     */
7267    readonly form: HTMLFormElement | null;
7268    /**
7269     * Overrides the action attribute (where the data on a form is sent) on the parent form element.
7270     */
7271    formAction: string;
7272    /**
7273     * Used to override the encoding (formEnctype attribute) specified on the form element.
7274     */
7275    formEnctype: string;
7276    /**
7277     * Overrides the submit method attribute previously specified on a form element.
7278     */
7279    formMethod: string;
7280    /**
7281     * 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.
7282     */
7283    formNoValidate: boolean;
7284    /**
7285     * Overrides the target attribute on a form element.
7286     */
7287    formTarget: string;
7288    /**
7289     * Sets or retrieves the height of the object.
7290     */
7291    height: number;
7292    indeterminate: boolean;
7293    readonly labels: NodeListOf<HTMLLabelElement> | null;
7294    /**
7295     * Specifies the ID of a pre-defined datalist of options for an input element.
7296     */
7297    readonly list: HTMLElement | null;
7298    /**
7299     * 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.
7300     */
7301    max: string;
7302    /**
7303     * Sets or retrieves the maximum number of characters that the user can enter in a text control.
7304     */
7305    maxLength: number;
7306    /**
7307     * 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.
7308     */
7309    min: string;
7310    minLength: number;
7311    /**
7312     * Sets or retrieves the Boolean value indicating whether multiple items can be selected from a list.
7313     */
7314    multiple: boolean;
7315    /**
7316     * Sets or retrieves the name of the object.
7317     */
7318    name: string;
7319    /**
7320     * Gets or sets a string containing a regular expression that the user's input must match.
7321     */
7322    pattern: string;
7323    /**
7324     * 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.
7325     */
7326    placeholder: string;
7327    readOnly: boolean;
7328    /**
7329     * When present, marks an element that can't be submitted without a value.
7330     */
7331    required: boolean;
7332    selectionDirection: "forward" | "backward" | "none" | null;
7333    /**
7334     * Gets or sets the end position or offset of a text selection.
7335     */
7336    selectionEnd: number | null;
7337    /**
7338     * Gets or sets the starting position or offset of a text selection.
7339     */
7340    selectionStart: number | null;
7341    size: number;
7342    /**
7343     * The address or URL of the a media resource that is to be considered.
7344     */
7345    src: string;
7346    /**
7347     * 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.
7348     */
7349    step: string;
7350    /**
7351     * Returns the content type of the object.
7352     */
7353    type: string;
7354    /**
7355     * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map.
7356     */
7357    /** @deprecated */
7358    useMap: string;
7359    /**
7360     * 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.
7361     */
7362    readonly validationMessage: string;
7363    /**
7364     * Returns a  ValidityState object that represents the validity states of an element.
7365     */
7366    readonly validity: ValidityState;
7367    /**
7368     * Returns the value of the data at the cursor's current position.
7369     */
7370    value: string;
7371    /**
7372     * 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.
7373     */
7374    valueAsDate: Date | null;
7375    /**
7376     * Returns the input field value as a number.
7377     */
7378    valueAsNumber: number;
7379    /**
7380     * Sets or retrieves the width of the object.
7381     */
7382    width: number;
7383    /**
7384     * Returns whether an element will successfully validate based on forms validation rules and constraints.
7385     */
7386    readonly willValidate: boolean;
7387    /**
7388     * Returns whether a form will validate when it is submitted, without having to submit it.
7389     */
7390    checkValidity(): boolean;
7391    reportValidity(): boolean;
7392    /**
7393     * Makes the selection equal to the current object.
7394     */
7395    select(): void;
7396    /**
7397     * Sets a custom error message that is displayed when a form is submitted.
7398     * @param error Sets a custom error message that is displayed when a form is submitted.
7399     */
7400    setCustomValidity(error: string): void;
7401    setRangeText(replacement: string): void;
7402    setRangeText(replacement: string, start: number, end: number, selectionMode?: SelectionMode): void;
7403    /**
7404     * Sets the start and end positions of a selection in a text field.
7405     * @param start The offset into the text field for the start of the selection.
7406     * @param end The offset into the text field for the end of the selection.
7407     * @param direction The direction in which the selection is performed.
7408     */
7409    setSelectionRange(start: number | null, end: number | null, direction?: "forward" | "backward" | "none"): void;
7410    /**
7411     * 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.
7412     * @param n Value to decrement the value by.
7413     */
7414    stepDown(n?: number): void;
7415    /**
7416     * 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.
7417     * @param n Value to increment the value by.
7418     */
7419    stepUp(n?: number): void;
7420    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLInputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7421    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7422    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLInputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7423    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7424}
7425
7426declare var HTMLInputElement: {
7427    prototype: HTMLInputElement;
7428    new(): HTMLInputElement;
7429};
7430
7431/** Exposes specific properties and methods (beyond those defined by regular HTMLElement interface it also has available to it by inheritance) for manipulating list elements. */
7432interface HTMLLIElement extends HTMLElement {
7433    /** @deprecated */
7434    type: string;
7435    /**
7436     * Sets or retrieves the value of a list item.
7437     */
7438    value: number;
7439    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLIElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7440    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7441    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLIElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7442    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7443}
7444
7445declare var HTMLLIElement: {
7446    prototype: HTMLLIElement;
7447    new(): HTMLLIElement;
7448};
7449
7450/** Gives access to properties specific to <label> elements. It inherits methods and properties from the base HTMLElement interface. */
7451interface HTMLLabelElement extends HTMLElement {
7452    readonly control: HTMLElement | null;
7453    /**
7454     * Retrieves a reference to the form that the object is embedded in.
7455     */
7456    readonly form: HTMLFormElement | null;
7457    /**
7458     * Sets or retrieves the object to which the given label object is assigned.
7459     */
7460    htmlFor: string;
7461    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLabelElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7462    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7463    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLabelElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7464    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7465}
7466
7467declare var HTMLLabelElement: {
7468    prototype: HTMLLabelElement;
7469    new(): HTMLLabelElement;
7470};
7471
7472/** The HTMLLegendElement is an interface allowing to access properties of the <legend> elements. It inherits properties and methods from the HTMLElement interface. */
7473interface HTMLLegendElement extends HTMLElement {
7474    /** @deprecated */
7475    align: string;
7476    /**
7477     * Retrieves a reference to the form that the object is embedded in.
7478     */
7479    readonly form: HTMLFormElement | null;
7480    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLegendElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7481    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7482    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLegendElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7483    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7484}
7485
7486declare var HTMLLegendElement: {
7487    prototype: HTMLLegendElement;
7488    new(): HTMLLegendElement;
7489};
7490
7491/** 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. */
7492interface HTMLLinkElement extends HTMLElement, LinkStyle {
7493    as: string;
7494    /**
7495     * Sets or retrieves the character set used to encode the object.
7496     */
7497    /** @deprecated */
7498    charset: string;
7499    crossOrigin: string | null;
7500    disabled: boolean;
7501    /**
7502     * Sets or retrieves a destination URL or an anchor point.
7503     */
7504    href: string;
7505    /**
7506     * Sets or retrieves the language code of the object.
7507     */
7508    hreflang: string;
7509    imageSizes: string;
7510    imageSrcset: string;
7511    integrity: string;
7512    /**
7513     * Sets or retrieves the media type.
7514     */
7515    media: string;
7516    referrerPolicy: string;
7517    /**
7518     * Sets or retrieves the relationship between the object and the destination of the link.
7519     */
7520    rel: string;
7521    readonly relList: DOMTokenList;
7522    /**
7523     * Sets or retrieves the relationship between the object and the destination of the link.
7524     */
7525    /** @deprecated */
7526    rev: string;
7527    readonly sizes: DOMTokenList;
7528    /**
7529     * Sets or retrieves the window or frame at which to target content.
7530     */
7531    /** @deprecated */
7532    target: string;
7533    /**
7534     * Sets or retrieves the MIME type of the object.
7535     */
7536    type: string;
7537    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLinkElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7538    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7539    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLinkElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7540    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7541}
7542
7543declare var HTMLLinkElement: {
7544    prototype: HTMLLinkElement;
7545    new(): HTMLLinkElement;
7546};
7547
7548/** 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. */
7549interface HTMLMapElement extends HTMLElement {
7550    /**
7551     * Retrieves a collection of the area objects defined for the given map object.
7552     */
7553    readonly areas: HTMLCollection;
7554    /**
7555     * Sets or retrieves the name of the object.
7556     */
7557    name: string;
7558    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMapElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7559    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7560    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMapElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7561    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7562}
7563
7564declare var HTMLMapElement: {
7565    prototype: HTMLMapElement;
7566    new(): HTMLMapElement;
7567};
7568
7569interface HTMLMarqueeElementEventMap extends HTMLElementEventMap {
7570    "bounce": Event;
7571    "finish": Event;
7572    "start": Event;
7573}
7574
7575/** Provides methods to manipulate <marquee> elements. */
7576interface HTMLMarqueeElement extends HTMLElement {
7577    /** @deprecated */
7578    behavior: string;
7579    /** @deprecated */
7580    bgColor: string;
7581    /** @deprecated */
7582    direction: string;
7583    /** @deprecated */
7584    height: string;
7585    /** @deprecated */
7586    hspace: number;
7587    /** @deprecated */
7588    loop: number;
7589    /** @deprecated */
7590    onbounce: ((this: HTMLMarqueeElement, ev: Event) => any) | null;
7591    /** @deprecated */
7592    onfinish: ((this: HTMLMarqueeElement, ev: Event) => any) | null;
7593    /** @deprecated */
7594    onstart: ((this: HTMLMarqueeElement, ev: Event) => any) | null;
7595    /** @deprecated */
7596    scrollAmount: number;
7597    /** @deprecated */
7598    scrollDelay: number;
7599    /** @deprecated */
7600    trueSpeed: boolean;
7601    /** @deprecated */
7602    vspace: number;
7603    /** @deprecated */
7604    width: string;
7605    /** @deprecated */
7606    start(): void;
7607    /** @deprecated */
7608    stop(): void;
7609    addEventListener<K extends keyof HTMLMarqueeElementEventMap>(type: K, listener: (this: HTMLMarqueeElement, ev: HTMLMarqueeElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7610    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7611    removeEventListener<K extends keyof HTMLMarqueeElementEventMap>(type: K, listener: (this: HTMLMarqueeElement, ev: HTMLMarqueeElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7612    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7613}
7614
7615declare var HTMLMarqueeElement: {
7616    prototype: HTMLMarqueeElement;
7617    new(): HTMLMarqueeElement;
7618};
7619
7620interface HTMLMediaElementEventMap extends HTMLElementEventMap {
7621    "encrypted": MediaEncryptedEvent;
7622    "waitingforkey": Event;
7623}
7624
7625/** Adds to HTMLElement the properties and methods needed to support basic media-related capabilities that are common to audio and video. */
7626interface HTMLMediaElement extends HTMLElement {
7627    /**
7628     * Gets or sets a value that indicates whether to start playing the media automatically.
7629     */
7630    autoplay: boolean;
7631    /**
7632     * Gets a collection of buffered time ranges.
7633     */
7634    readonly buffered: TimeRanges;
7635    /**
7636     * 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).
7637     */
7638    controls: boolean;
7639    crossOrigin: string | null;
7640    /**
7641     * Gets the address or URL of the current media resource that is selected by IHTMLMediaElement.
7642     */
7643    readonly currentSrc: string;
7644    /**
7645     * Gets or sets the current playback position, in seconds.
7646     */
7647    currentTime: number;
7648    defaultMuted: boolean;
7649    /**
7650     * Gets or sets the default playback rate when the user is not using fast forward or reverse for a video or audio resource.
7651     */
7652    defaultPlaybackRate: number;
7653    /**
7654     * 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.
7655     */
7656    readonly duration: number;
7657    /**
7658     * Gets information about whether the playback has ended or not.
7659     */
7660    readonly ended: boolean;
7661    /**
7662     * Returns an object representing the current error state of the audio or video element.
7663     */
7664    readonly error: MediaError | null;
7665    /**
7666     * Gets or sets a flag to specify whether playback should restart after it completes.
7667     */
7668    loop: boolean;
7669    readonly mediaKeys: MediaKeys | null;
7670    /**
7671     * Gets or sets a flag that indicates whether the audio (either audio or the audio track on video media) is muted.
7672     */
7673    muted: boolean;
7674    /**
7675     * Gets the current network activity for the element.
7676     */
7677    readonly networkState: number;
7678    onencrypted: ((this: HTMLMediaElement, ev: MediaEncryptedEvent) => any) | null;
7679    onwaitingforkey: ((this: HTMLMediaElement, ev: Event) => any) | null;
7680    /**
7681     * Gets a flag that specifies whether playback is paused.
7682     */
7683    readonly paused: boolean;
7684    /**
7685     * 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.
7686     */
7687    playbackRate: number;
7688    /**
7689     * Gets TimeRanges for the current media resource that has been played.
7690     */
7691    readonly played: TimeRanges;
7692    /**
7693     * Gets or sets the current playback position, in seconds.
7694     */
7695    preload: string;
7696    readonly readyState: number;
7697    /**
7698     * Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked.
7699     */
7700    readonly seekable: TimeRanges;
7701    /**
7702     * Gets a flag that indicates whether the client is currently moving to a new playback position in the media resource.
7703     */
7704    readonly seeking: boolean;
7705    /**
7706     * The address or URL of the a media resource that is to be considered.
7707     */
7708    src: string;
7709    srcObject: MediaProvider | null;
7710    readonly textTracks: TextTrackList;
7711    /**
7712     * Gets or sets the volume level for audio portions of the media element.
7713     */
7714    volume: number;
7715    addTextTrack(kind: TextTrackKind, label?: string, language?: string): TextTrack;
7716    /**
7717     * Returns a string that specifies whether the client can play a given media resource type.
7718     */
7719    canPlayType(type: string): CanPlayTypeResult;
7720    fastSeek(time: number): void;
7721    /**
7722     * Resets the audio or video object and loads a new media resource.
7723     */
7724    load(): void;
7725    /**
7726     * 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.
7727     */
7728    pause(): void;
7729    /**
7730     * Loads and starts playback of a media resource.
7731     */
7732    play(): Promise<void>;
7733    setMediaKeys(mediaKeys: MediaKeys | null): Promise<void>;
7734    readonly HAVE_CURRENT_DATA: number;
7735    readonly HAVE_ENOUGH_DATA: number;
7736    readonly HAVE_FUTURE_DATA: number;
7737    readonly HAVE_METADATA: number;
7738    readonly HAVE_NOTHING: number;
7739    readonly NETWORK_EMPTY: number;
7740    readonly NETWORK_IDLE: number;
7741    readonly NETWORK_LOADING: number;
7742    readonly NETWORK_NO_SOURCE: number;
7743    addEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLMediaElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7744    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7745    removeEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLMediaElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7746    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7747}
7748
7749declare var HTMLMediaElement: {
7750    prototype: HTMLMediaElement;
7751    new(): HTMLMediaElement;
7752    readonly HAVE_CURRENT_DATA: number;
7753    readonly HAVE_ENOUGH_DATA: number;
7754    readonly HAVE_FUTURE_DATA: number;
7755    readonly HAVE_METADATA: number;
7756    readonly HAVE_NOTHING: number;
7757    readonly NETWORK_EMPTY: number;
7758    readonly NETWORK_IDLE: number;
7759    readonly NETWORK_LOADING: number;
7760    readonly NETWORK_NO_SOURCE: number;
7761};
7762
7763interface HTMLMenuElement extends HTMLElement {
7764    /** @deprecated */
7765    compact: boolean;
7766    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMenuElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7767    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7768    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMenuElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7769    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7770}
7771
7772declare var HTMLMenuElement: {
7773    prototype: HTMLMenuElement;
7774    new(): HTMLMenuElement;
7775};
7776
7777/** Contains descriptive metadata about a document. It inherits all of the properties and methods described in the HTMLElement interface. */
7778interface HTMLMetaElement extends HTMLElement {
7779    /**
7780     * Gets or sets meta-information to associate with httpEquiv or name.
7781     */
7782    content: string;
7783    /**
7784     * Gets or sets information used to bind the value of a content attribute of a meta element to an HTTP response header.
7785     */
7786    httpEquiv: string;
7787    /**
7788     * Sets or retrieves the value specified in the content attribute of the meta object.
7789     */
7790    name: string;
7791    /**
7792     * Sets or retrieves a scheme to be used in interpreting the value of a property specified for the object.
7793     */
7794    /** @deprecated */
7795    scheme: string;
7796    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMetaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7797    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7798    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMetaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7799    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7800}
7801
7802declare var HTMLMetaElement: {
7803    prototype: HTMLMetaElement;
7804    new(): HTMLMetaElement;
7805};
7806
7807/** 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. */
7808interface HTMLMeterElement extends HTMLElement {
7809    high: number;
7810    readonly labels: NodeListOf<HTMLLabelElement>;
7811    low: number;
7812    max: number;
7813    min: number;
7814    optimum: number;
7815    value: number;
7816    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMeterElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7817    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7818    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMeterElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7819    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7820}
7821
7822declare var HTMLMeterElement: {
7823    prototype: HTMLMeterElement;
7824    new(): HTMLMeterElement;
7825};
7826
7827/** 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>. */
7828interface HTMLModElement extends HTMLElement {
7829    /**
7830     * Sets or retrieves reference information about the object.
7831     */
7832    cite: string;
7833    /**
7834     * Sets or retrieves the date and time of a modification to the object.
7835     */
7836    dateTime: string;
7837    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLModElement, 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: HTMLModElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7840    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7841}
7842
7843declare var HTMLModElement: {
7844    prototype: HTMLModElement;
7845    new(): HTMLModElement;
7846};
7847
7848/** Provides special properties (beyond those defined on the regular HTMLElement interface it also has available to it by inheritance) for manipulating ordered list elements. */
7849interface HTMLOListElement extends HTMLElement {
7850    /** @deprecated */
7851    compact: boolean;
7852    reversed: boolean;
7853    /**
7854     * The starting number.
7855     */
7856    start: number;
7857    type: string;
7858    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7859    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7860    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7861    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7862}
7863
7864declare var HTMLOListElement: {
7865    prototype: HTMLOListElement;
7866    new(): HTMLOListElement;
7867};
7868
7869/** 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. */
7870interface HTMLObjectElement extends HTMLElement {
7871    /** @deprecated */
7872    align: string;
7873    /**
7874     * Sets or retrieves a character string that can be used to implement your own archive functionality for the object.
7875     */
7876    /** @deprecated */
7877    archive: string;
7878    /** @deprecated */
7879    border: string;
7880    /**
7881     * Sets or retrieves the URL of the file containing the compiled Java class.
7882     */
7883    /** @deprecated */
7884    code: string;
7885    /**
7886     * Sets or retrieves the URL of the component.
7887     */
7888    /** @deprecated */
7889    codeBase: string;
7890    /**
7891     * Sets or retrieves the Internet media type for the code associated with the object.
7892     */
7893    /** @deprecated */
7894    codeType: string;
7895    /**
7896     * Retrieves the document object of the page or frame.
7897     */
7898    readonly contentDocument: Document | null;
7899    readonly contentWindow: WindowProxy | null;
7900    /**
7901     * Sets or retrieves the URL that references the data of the object.
7902     */
7903    data: string;
7904    /** @deprecated */
7905    declare: boolean;
7906    /**
7907     * Retrieves a reference to the form that the object is embedded in.
7908     */
7909    readonly form: HTMLFormElement | null;
7910    /**
7911     * Sets or retrieves the height of the object.
7912     */
7913    height: string;
7914    /** @deprecated */
7915    hspace: number;
7916    /**
7917     * Sets or retrieves the name of the object.
7918     */
7919    name: string;
7920    /**
7921     * Sets or retrieves a message to be displayed while an object is loading.
7922     */
7923    /** @deprecated */
7924    standby: string;
7925    /**
7926     * Sets or retrieves the MIME type of the object.
7927     */
7928    type: string;
7929    /**
7930     * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map.
7931     */
7932    useMap: string;
7933    /**
7934     * 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.
7935     */
7936    readonly validationMessage: string;
7937    /**
7938     * Returns a  ValidityState object that represents the validity states of an element.
7939     */
7940    readonly validity: ValidityState;
7941    /** @deprecated */
7942    vspace: number;
7943    /**
7944     * Sets or retrieves the width of the object.
7945     */
7946    width: string;
7947    /**
7948     * Returns whether an element will successfully validate based on forms validation rules and constraints.
7949     */
7950    readonly willValidate: boolean;
7951    /**
7952     * Returns whether a form will validate when it is submitted, without having to submit it.
7953     */
7954    checkValidity(): boolean;
7955    getSVGDocument(): Document | null;
7956    reportValidity(): boolean;
7957    /**
7958     * Sets a custom error message that is displayed when a form is submitted.
7959     * @param error Sets a custom error message that is displayed when a form is submitted.
7960     */
7961    setCustomValidity(error: string): void;
7962    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLObjectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7963    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7964    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLObjectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7965    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7966}
7967
7968declare var HTMLObjectElement: {
7969    prototype: HTMLObjectElement;
7970    new(): HTMLObjectElement;
7971};
7972
7973/** 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. */
7974interface HTMLOptGroupElement extends HTMLElement {
7975    disabled: boolean;
7976    /**
7977     * Retrieves a reference to the form that the object is embedded in.
7978     */
7979    readonly form: HTMLFormElement | null;
7980    /**
7981     * Sets or retrieves a value that you can use to implement your own label functionality for the object.
7982     */
7983    label: string;
7984    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptGroupElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7985    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7986    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptGroupElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7987    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7988}
7989
7990declare var HTMLOptGroupElement: {
7991    prototype: HTMLOptGroupElement;
7992    new(): HTMLOptGroupElement;
7993};
7994
7995/** <option> elements and inherits all classes and methods of the HTMLElement interface. */
7996interface HTMLOptionElement extends HTMLElement {
7997    /**
7998     * Sets or retrieves the status of an option.
7999     */
8000    defaultSelected: boolean;
8001    disabled: boolean;
8002    /**
8003     * Retrieves a reference to the form that the object is embedded in.
8004     */
8005    readonly form: HTMLFormElement | null;
8006    /**
8007     * Sets or retrieves the ordinal position of an option in a list box.
8008     */
8009    readonly index: number;
8010    /**
8011     * Sets or retrieves a value that you can use to implement your own label functionality for the object.
8012     */
8013    label: string;
8014    /**
8015     * Sets or retrieves whether the option in the list box is the default item.
8016     */
8017    selected: boolean;
8018    /**
8019     * Sets or retrieves the text string specified by the option tag.
8020     */
8021    text: string;
8022    /**
8023     * Sets or retrieves the value which is returned to the server when the form control is submitted.
8024     */
8025    value: string;
8026    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8027    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8028    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8029    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8030}
8031
8032declare var HTMLOptionElement: {
8033    prototype: HTMLOptionElement;
8034    new(): HTMLOptionElement;
8035};
8036
8037/** 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. */
8038interface HTMLOptionsCollection extends HTMLCollectionOf<HTMLOptionElement> {
8039    /**
8040     * Returns the number of elements in the collection.
8041     *
8042     * When set to a smaller number, truncates the number of option elements in the corresponding container.
8043     *
8044     * When set to a greater number, adds new blank option elements to that container.
8045     */
8046    length: number;
8047    /**
8048     * Returns the index of the first selected item, if any, or −1 if there is no selected item.
8049     *
8050     * Can be set, to change the selection.
8051     */
8052    selectedIndex: number;
8053    /**
8054     * Inserts element before the node given by before.
8055     *
8056     * 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.
8057     *
8058     * If before is omitted, null, or a number out of range, then element will be added at the end of the list.
8059     *
8060     * This method will throw a "HierarchyRequestError" DOMException if element is an ancestor of the element into which it is to be inserted.
8061     */
8062    add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number | null): void;
8063    /**
8064     * Removes the item with index index from the collection.
8065     */
8066    remove(index: number): void;
8067}
8068
8069declare var HTMLOptionsCollection: {
8070    prototype: HTMLOptionsCollection;
8071    new(): HTMLOptionsCollection;
8072};
8073
8074interface HTMLOrSVGElement {
8075    autofocus: boolean;
8076    readonly dataset: DOMStringMap;
8077    nonce?: string;
8078    tabIndex: number;
8079    blur(): void;
8080    focus(options?: FocusOptions): void;
8081}
8082
8083/** Provides properties and methods (beyond those inherited from HTMLElement) for manipulating the layout and presentation of <output> elements. */
8084interface HTMLOutputElement extends HTMLElement {
8085    defaultValue: string;
8086    readonly form: HTMLFormElement | null;
8087    readonly htmlFor: DOMTokenList;
8088    readonly labels: NodeListOf<HTMLLabelElement>;
8089    name: string;
8090    readonly type: string;
8091    readonly validationMessage: string;
8092    readonly validity: ValidityState;
8093    value: string;
8094    readonly willValidate: boolean;
8095    checkValidity(): boolean;
8096    reportValidity(): boolean;
8097    setCustomValidity(error: string): void;
8098    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOutputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8099    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8100    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOutputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8101    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8102}
8103
8104declare var HTMLOutputElement: {
8105    prototype: HTMLOutputElement;
8106    new(): HTMLOutputElement;
8107};
8108
8109/** Provides special properties (beyond those of the regular HTMLElement object interface it inherits) for manipulating <p> elements. */
8110interface HTMLParagraphElement extends HTMLElement {
8111    /**
8112     * Sets or retrieves how the object is aligned with adjacent text.
8113     */
8114    /** @deprecated */
8115    align: string;
8116    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParagraphElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8117    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8118    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParagraphElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8119    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8120}
8121
8122declare var HTMLParagraphElement: {
8123    prototype: HTMLParagraphElement;
8124    new(): HTMLParagraphElement;
8125};
8126
8127/** 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. */
8128interface HTMLParamElement extends HTMLElement {
8129    /**
8130     * Sets or retrieves the name of an input parameter for an element.
8131     */
8132    name: string;
8133    /**
8134     * Sets or retrieves the content type of the resource designated by the value attribute.
8135     */
8136    /** @deprecated */
8137    type: string;
8138    /**
8139     * Sets or retrieves the value of an input parameter for an element.
8140     */
8141    value: string;
8142    /**
8143     * Sets or retrieves the data type of the value attribute.
8144     */
8145    /** @deprecated */
8146    valueType: string;
8147    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParamElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8148    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8149    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParamElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8150    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8151}
8152
8153declare var HTMLParamElement: {
8154    prototype: HTMLParamElement;
8155    new(): HTMLParamElement;
8156};
8157
8158/** A <picture> HTML element. It doesn't implement specific properties or methods. */
8159interface HTMLPictureElement extends HTMLElement {
8160    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPictureElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8161    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8162    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPictureElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8163    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8164}
8165
8166declare var HTMLPictureElement: {
8167    prototype: HTMLPictureElement;
8168    new(): HTMLPictureElement;
8169};
8170
8171/** 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>). */
8172interface HTMLPreElement extends HTMLElement {
8173    /**
8174     * Sets or gets a value that you can use to implement your own width functionality for the object.
8175     */
8176    /** @deprecated */
8177    width: number;
8178    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPreElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8179    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8180    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPreElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8181    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8182}
8183
8184declare var HTMLPreElement: {
8185    prototype: HTMLPreElement;
8186    new(): HTMLPreElement;
8187};
8188
8189/** 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. */
8190interface HTMLProgressElement extends HTMLElement {
8191    readonly labels: NodeListOf<HTMLLabelElement>;
8192    /**
8193     * Defines the maximum, or "done" value for a progress element.
8194     */
8195    max: number;
8196    /**
8197     * 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).
8198     */
8199    readonly position: number;
8200    /**
8201     * Sets or gets the current value of a progress element. The value must be a non-negative number between 0 and the max value.
8202     */
8203    value: number;
8204    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLProgressElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8205    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8206    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLProgressElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8207    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8208}
8209
8210declare var HTMLProgressElement: {
8211    prototype: HTMLProgressElement;
8212    new(): HTMLProgressElement;
8213};
8214
8215/** 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. */
8216interface HTMLQuoteElement extends HTMLElement {
8217    /**
8218     * Sets or retrieves reference information about the object.
8219     */
8220    cite: string;
8221    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLQuoteElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8222    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8223    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLQuoteElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8224    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8225}
8226
8227declare var HTMLQuoteElement: {
8228    prototype: HTMLQuoteElement;
8229    new(): HTMLQuoteElement;
8230};
8231
8232/** 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). */
8233interface HTMLScriptElement extends HTMLElement {
8234    async: boolean;
8235    /**
8236     * Sets or retrieves the character set used to encode the object.
8237     */
8238    /** @deprecated */
8239    charset: string;
8240    crossOrigin: string | null;
8241    /**
8242     * Sets or retrieves the status of the script.
8243     */
8244    defer: boolean;
8245    /**
8246     * Sets or retrieves the event for which the script is written.
8247     */
8248    /** @deprecated */
8249    event: string;
8250    /**
8251     * Sets or retrieves the object that is bound to the event script.
8252     */
8253    /** @deprecated */
8254    htmlFor: string;
8255    integrity: string;
8256    noModule: boolean;
8257    referrerPolicy: string;
8258    /**
8259     * Retrieves the URL to an external file that contains the source code or data.
8260     */
8261    src: string;
8262    /**
8263     * Retrieves or sets the text of the object as a string.
8264     */
8265    text: string;
8266    /**
8267     * Sets or retrieves the MIME type for the associated scripting engine.
8268     */
8269    type: string;
8270    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLScriptElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8271    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8272    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLScriptElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8273    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8274}
8275
8276declare var HTMLScriptElement: {
8277    prototype: HTMLScriptElement;
8278    new(): HTMLScriptElement;
8279};
8280
8281/** A <select> HTML Element. These elements also share all of the properties and methods of other HTML elements via the HTMLElement interface. */
8282interface HTMLSelectElement extends HTMLElement {
8283    autocomplete: string;
8284    disabled: boolean;
8285    /**
8286     * Retrieves a reference to the form that the object is embedded in.
8287     */
8288    readonly form: HTMLFormElement | null;
8289    readonly labels: NodeListOf<HTMLLabelElement>;
8290    /**
8291     * Sets or retrieves the number of objects in a collection.
8292     */
8293    length: number;
8294    /**
8295     * Sets or retrieves the Boolean value indicating whether multiple items can be selected from a list.
8296     */
8297    multiple: boolean;
8298    /**
8299     * Sets or retrieves the name of the object.
8300     */
8301    name: string;
8302    readonly options: HTMLOptionsCollection;
8303    /**
8304     * When present, marks an element that can't be submitted without a value.
8305     */
8306    required: boolean;
8307    /**
8308     * Sets or retrieves the index of the selected option in a select object.
8309     */
8310    selectedIndex: number;
8311    readonly selectedOptions: HTMLCollectionOf<HTMLOptionElement>;
8312    /**
8313     * Sets or retrieves the number of rows in the list box.
8314     */
8315    size: number;
8316    /**
8317     * Retrieves the type of select control based on the value of the MULTIPLE attribute.
8318     */
8319    readonly type: string;
8320    /**
8321     * 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.
8322     */
8323    readonly validationMessage: string;
8324    /**
8325     * Returns a  ValidityState object that represents the validity states of an element.
8326     */
8327    readonly validity: ValidityState;
8328    /**
8329     * Sets or retrieves the value which is returned to the server when the form control is submitted.
8330     */
8331    value: string;
8332    /**
8333     * Returns whether an element will successfully validate based on forms validation rules and constraints.
8334     */
8335    readonly willValidate: boolean;
8336    /**
8337     * Adds an element to the areas, controlRange, or options collection.
8338     * @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.
8339     * @param before Variant of type Object that specifies an element to insert before, or null to append the object to the collection.
8340     */
8341    add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number | null): void;
8342    /**
8343     * Returns whether a form will validate when it is submitted, without having to submit it.
8344     */
8345    checkValidity(): boolean;
8346    /**
8347     * Retrieves a select object or an object from an options collection.
8348     * @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.
8349     * @param index Variant of type Number that specifies the zero-based index of the object to retrieve when a collection is returned.
8350     */
8351    item(index: number): Element | null;
8352    /**
8353     * Retrieves a select object or an object from an options collection.
8354     * @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.
8355     */
8356    namedItem(name: string): HTMLOptionElement | null;
8357    /**
8358     * Removes an element from the collection.
8359     * @param index Number that specifies the zero-based index of the element to remove from the collection.
8360     */
8361    remove(): void;
8362    remove(index: number): void;
8363    reportValidity(): boolean;
8364    /**
8365     * Sets a custom error message that is displayed when a form is submitted.
8366     * @param error Sets a custom error message that is displayed when a form is submitted.
8367     */
8368    setCustomValidity(error: string): void;
8369    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSelectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8370    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8371    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSelectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8372    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8373    [name: number]: HTMLOptionElement | HTMLOptGroupElement;
8374}
8375
8376declare var HTMLSelectElement: {
8377    prototype: HTMLSelectElement;
8378    new(): HTMLSelectElement;
8379};
8380
8381interface HTMLSlotElement extends HTMLElement {
8382    name: string;
8383    assignedElements(options?: AssignedNodesOptions): Element[];
8384    assignedNodes(options?: AssignedNodesOptions): Node[];
8385    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSlotElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8386    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8387    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSlotElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8388    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8389}
8390
8391declare var HTMLSlotElement: {
8392    prototype: HTMLSlotElement;
8393    new(): HTMLSlotElement;
8394};
8395
8396/** Provides special properties (beyond the regular HTMLElement object interface it also has available to it by inheritance) for manipulating <source> elements. */
8397interface HTMLSourceElement extends HTMLElement {
8398    /**
8399     * Gets or sets the intended media type of the media source.
8400     */
8401    media: string;
8402    sizes: string;
8403    /**
8404     * The address or URL of the a media resource that is to be considered.
8405     */
8406    src: string;
8407    srcset: string;
8408    /**
8409     * Gets or sets the MIME type of a media resource.
8410     */
8411    type: string;
8412    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSourceElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8413    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8414    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSourceElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8415    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8416}
8417
8418declare var HTMLSourceElement: {
8419    prototype: HTMLSourceElement;
8420    new(): HTMLSourceElement;
8421};
8422
8423/** A <span> element and derives from the HTMLElement interface, but without implementing any additional properties or methods. */
8424interface HTMLSpanElement extends HTMLElement {
8425    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSpanElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8426    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8427    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSpanElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8428    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8429}
8430
8431declare var HTMLSpanElement: {
8432    prototype: HTMLSpanElement;
8433    new(): HTMLSpanElement;
8434};
8435
8436/** A <style> element. It inherits properties and methods from its parent, HTMLElement, and from LinkStyle. */
8437interface HTMLStyleElement extends HTMLElement, LinkStyle {
8438    /**
8439     * Sets or retrieves the media type.
8440     */
8441    media: string;
8442    /**
8443     * Retrieves the CSS language in which the style sheet is written.
8444     */
8445    /** @deprecated */
8446    type: string;
8447    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLStyleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8448    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8449    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLStyleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8450    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8451}
8452
8453declare var HTMLStyleElement: {
8454    prototype: HTMLStyleElement;
8455    new(): HTMLStyleElement;
8456};
8457
8458/** Special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating table caption elements. */
8459interface HTMLTableCaptionElement extends HTMLElement {
8460    /**
8461     * Sets or retrieves the alignment of the caption or legend.
8462     */
8463    /** @deprecated */
8464    align: string;
8465    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCaptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8466    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8467    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCaptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8468    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8469}
8470
8471declare var HTMLTableCaptionElement: {
8472    prototype: HTMLTableCaptionElement;
8473    new(): HTMLTableCaptionElement;
8474};
8475
8476/** 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. */
8477interface HTMLTableCellElement extends HTMLElement {
8478    /**
8479     * Sets or retrieves abbreviated text for the object.
8480     */
8481    abbr: string;
8482    /**
8483     * Sets or retrieves how the object is aligned with adjacent text.
8484     */
8485    /** @deprecated */
8486    align: string;
8487    /**
8488     * Sets or retrieves a comma-delimited list of conceptual categories associated with the object.
8489     */
8490    /** @deprecated */
8491    axis: string;
8492    /** @deprecated */
8493    bgColor: string;
8494    /**
8495     * Retrieves the position of the object in the cells collection of a row.
8496     */
8497    readonly cellIndex: number;
8498    /** @deprecated */
8499    ch: string;
8500    /** @deprecated */
8501    chOff: string;
8502    /**
8503     * Sets or retrieves the number columns in the table that the object should span.
8504     */
8505    colSpan: number;
8506    /**
8507     * Sets or retrieves a list of header cells that provide information for the object.
8508     */
8509    headers: string;
8510    /**
8511     * Sets or retrieves the height of the object.
8512     */
8513    /** @deprecated */
8514    height: string;
8515    /**
8516     * Sets or retrieves whether the browser automatically performs wordwrap.
8517     */
8518    /** @deprecated */
8519    noWrap: boolean;
8520    /**
8521     * Sets or retrieves how many rows in a table the cell should span.
8522     */
8523    rowSpan: number;
8524    /**
8525     * Sets or retrieves the group of cells in a table to which the object's information applies.
8526     */
8527    scope: string;
8528    /** @deprecated */
8529    vAlign: string;
8530    /**
8531     * Sets or retrieves the width of the object.
8532     */
8533    /** @deprecated */
8534    width: string;
8535    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8536    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8537    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8538    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8539}
8540
8541declare var HTMLTableCellElement: {
8542    prototype: HTMLTableCellElement;
8543    new(): HTMLTableCellElement;
8544};
8545
8546/** Provides special properties (beyond the HTMLElement interface it also has available to it inheritance) for manipulating single or grouped table column elements. */
8547interface HTMLTableColElement extends HTMLElement {
8548    /**
8549     * Sets or retrieves the alignment of the object relative to the display or table.
8550     */
8551    /** @deprecated */
8552    align: string;
8553    /** @deprecated */
8554    ch: string;
8555    /** @deprecated */
8556    chOff: string;
8557    /**
8558     * Sets or retrieves the number of columns in the group.
8559     */
8560    span: number;
8561    /** @deprecated */
8562    vAlign: string;
8563    /**
8564     * Sets or retrieves the width of the object.
8565     */
8566    /** @deprecated */
8567    width: string;
8568    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableColElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8569    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8570    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableColElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8571    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8572}
8573
8574declare var HTMLTableColElement: {
8575    prototype: HTMLTableColElement;
8576    new(): HTMLTableColElement;
8577};
8578
8579interface HTMLTableDataCellElement extends HTMLTableCellElement {
8580    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableDataCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8581    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8582    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableDataCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8583    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8584}
8585
8586declare var HTMLTableDataCellElement: {
8587    prototype: HTMLTableDataCellElement;
8588    new(): HTMLTableDataCellElement;
8589};
8590
8591/** 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. */
8592interface HTMLTableElement extends HTMLElement {
8593    /**
8594     * Sets or retrieves a value that indicates the table alignment.
8595     */
8596    /** @deprecated */
8597    align: string;
8598    /** @deprecated */
8599    bgColor: string;
8600    /**
8601     * Sets or retrieves the width of the border to draw around the object.
8602     */
8603    /** @deprecated */
8604    border: string;
8605    /**
8606     * Retrieves the caption object of a table.
8607     */
8608    caption: HTMLTableCaptionElement | null;
8609    /**
8610     * Sets or retrieves the amount of space between the border of the cell and the content of the cell.
8611     */
8612    /** @deprecated */
8613    cellPadding: string;
8614    /**
8615     * Sets or retrieves the amount of space between cells in a table.
8616     */
8617    /** @deprecated */
8618    cellSpacing: string;
8619    /**
8620     * Sets or retrieves the way the border frame around the table is displayed.
8621     */
8622    /** @deprecated */
8623    frame: string;
8624    /**
8625     * Sets or retrieves the number of horizontal rows contained in the object.
8626     */
8627    readonly rows: HTMLCollectionOf<HTMLTableRowElement>;
8628    /**
8629     * Sets or retrieves which dividing lines (inner borders) are displayed.
8630     */
8631    /** @deprecated */
8632    rules: string;
8633    /**
8634     * Sets or retrieves a description and/or structure of the object.
8635     */
8636    /** @deprecated */
8637    summary: string;
8638    /**
8639     * Retrieves a collection of all tBody objects in the table. Objects in this collection are in source order.
8640     */
8641    readonly tBodies: HTMLCollectionOf<HTMLTableSectionElement>;
8642    /**
8643     * Retrieves the tFoot object of the table.
8644     */
8645    tFoot: HTMLTableSectionElement | null;
8646    /**
8647     * Retrieves the tHead object of the table.
8648     */
8649    tHead: HTMLTableSectionElement | null;
8650    /**
8651     * Sets or retrieves the width of the object.
8652     */
8653    /** @deprecated */
8654    width: string;
8655    /**
8656     * Creates an empty caption element in the table.
8657     */
8658    createCaption(): HTMLTableCaptionElement;
8659    /**
8660     * Creates an empty tBody element in the table.
8661     */
8662    createTBody(): HTMLTableSectionElement;
8663    /**
8664     * Creates an empty tFoot element in the table.
8665     */
8666    createTFoot(): HTMLTableSectionElement;
8667    /**
8668     * Returns the tHead element object if successful, or null otherwise.
8669     */
8670    createTHead(): HTMLTableSectionElement;
8671    /**
8672     * Deletes the caption element and its contents from the table.
8673     */
8674    deleteCaption(): void;
8675    /**
8676     * Removes the specified row (tr) from the element and from the rows collection.
8677     * @param index Number that specifies the zero-based position in the rows collection of the row to remove.
8678     */
8679    deleteRow(index: number): void;
8680    /**
8681     * Deletes the tFoot element and its contents from the table.
8682     */
8683    deleteTFoot(): void;
8684    /**
8685     * Deletes the tHead element and its contents from the table.
8686     */
8687    deleteTHead(): void;
8688    /**
8689     * Creates a new row (tr) in the table, and adds the row to the rows collection.
8690     * @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.
8691     */
8692    insertRow(index?: number): HTMLTableRowElement;
8693    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8694    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8695    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8696    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8697}
8698
8699declare var HTMLTableElement: {
8700    prototype: HTMLTableElement;
8701    new(): HTMLTableElement;
8702};
8703
8704interface HTMLTableHeaderCellElement extends HTMLTableCellElement {
8705    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableHeaderCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8706    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8707    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableHeaderCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8708    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8709}
8710
8711declare var HTMLTableHeaderCellElement: {
8712    prototype: HTMLTableHeaderCellElement;
8713    new(): HTMLTableHeaderCellElement;
8714};
8715
8716/** 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. */
8717interface HTMLTableRowElement extends HTMLElement {
8718    /**
8719     * Sets or retrieves how the object is aligned with adjacent text.
8720     */
8721    /** @deprecated */
8722    align: string;
8723    /** @deprecated */
8724    bgColor: string;
8725    /**
8726     * Retrieves a collection of all cells in the table row.
8727     */
8728    readonly cells: HTMLCollectionOf<HTMLTableDataCellElement | HTMLTableHeaderCellElement>;
8729    /** @deprecated */
8730    ch: string;
8731    /** @deprecated */
8732    chOff: string;
8733    /**
8734     * Retrieves the position of the object in the rows collection for the table.
8735     */
8736    readonly rowIndex: number;
8737    /**
8738     * Retrieves the position of the object in the collection.
8739     */
8740    readonly sectionRowIndex: number;
8741    /** @deprecated */
8742    vAlign: string;
8743    /**
8744     * Removes the specified cell from the table row, as well as from the cells collection.
8745     * @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.
8746     */
8747    deleteCell(index: number): void;
8748    /**
8749     * Creates a new cell in the table row, and adds the cell to the cells collection.
8750     * @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.
8751     */
8752    insertCell(index?: number): HTMLTableDataCellElement;
8753    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableRowElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8754    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8755    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableRowElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8756    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8757}
8758
8759declare var HTMLTableRowElement: {
8760    prototype: HTMLTableRowElement;
8761    new(): HTMLTableRowElement;
8762};
8763
8764/** 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. */
8765interface HTMLTableSectionElement extends HTMLElement {
8766    /**
8767     * Sets or retrieves a value that indicates the table alignment.
8768     */
8769    /** @deprecated */
8770    align: string;
8771    /** @deprecated */
8772    ch: string;
8773    /** @deprecated */
8774    chOff: string;
8775    /**
8776     * Sets or retrieves the number of horizontal rows contained in the object.
8777     */
8778    readonly rows: HTMLCollectionOf<HTMLTableRowElement>;
8779    /** @deprecated */
8780    vAlign: string;
8781    /**
8782     * Removes the specified row (tr) from the element and from the rows collection.
8783     * @param index Number that specifies the zero-based position in the rows collection of the row to remove.
8784     */
8785    deleteRow(index: number): void;
8786    /**
8787     * Creates a new row (tr) in the table, and adds the row to the rows collection.
8788     * @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.
8789     */
8790    insertRow(index?: number): HTMLTableRowElement;
8791    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableSectionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8792    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8793    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableSectionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8794    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8795}
8796
8797declare var HTMLTableSectionElement: {
8798    prototype: HTMLTableSectionElement;
8799    new(): HTMLTableSectionElement;
8800};
8801
8802/** Enables access to the contents of an HTML <template> element. */
8803interface HTMLTemplateElement extends HTMLElement {
8804    readonly content: DocumentFragment;
8805    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTemplateElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8806    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8807    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTemplateElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8808    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8809}
8810
8811declare var HTMLTemplateElement: {
8812    prototype: HTMLTemplateElement;
8813    new(): HTMLTemplateElement;
8814};
8815
8816/** Provides special properties and methods for manipulating the layout and presentation of <textarea> elements. */
8817interface HTMLTextAreaElement extends HTMLElement {
8818    autocomplete: string;
8819    /**
8820     * Sets or retrieves the width of the object.
8821     */
8822    cols: number;
8823    /**
8824     * Sets or retrieves the initial contents of the object.
8825     */
8826    defaultValue: string;
8827    dirName: string;
8828    disabled: boolean;
8829    /**
8830     * Retrieves a reference to the form that the object is embedded in.
8831     */
8832    readonly form: HTMLFormElement | null;
8833    readonly labels: NodeListOf<HTMLLabelElement>;
8834    /**
8835     * Sets or retrieves the maximum number of characters that the user can enter in a text control.
8836     */
8837    maxLength: number;
8838    minLength: number;
8839    /**
8840     * Sets or retrieves the name of the object.
8841     */
8842    name: string;
8843    /**
8844     * 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.
8845     */
8846    placeholder: string;
8847    /**
8848     * Sets or retrieves the value indicated whether the content of the object is read-only.
8849     */
8850    readOnly: boolean;
8851    /**
8852     * When present, marks an element that can't be submitted without a value.
8853     */
8854    required: boolean;
8855    /**
8856     * Sets or retrieves the number of horizontal rows contained in the object.
8857     */
8858    rows: number;
8859    selectionDirection: "forward" | "backward" | "none";
8860    /**
8861     * Gets or sets the end position or offset of a text selection.
8862     */
8863    selectionEnd: number;
8864    /**
8865     * Gets or sets the starting position or offset of a text selection.
8866     */
8867    selectionStart: number;
8868    readonly textLength: number;
8869    /**
8870     * Retrieves the type of control.
8871     */
8872    readonly type: string;
8873    /**
8874     * 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.
8875     */
8876    readonly validationMessage: string;
8877    /**
8878     * Returns a  ValidityState object that represents the validity states of an element.
8879     */
8880    readonly validity: ValidityState;
8881    /**
8882     * Retrieves or sets the text in the entry field of the textArea element.
8883     */
8884    value: string;
8885    /**
8886     * Returns whether an element will successfully validate based on forms validation rules and constraints.
8887     */
8888    readonly willValidate: boolean;
8889    /**
8890     * Sets or retrieves how to handle wordwrapping in the object.
8891     */
8892    wrap: string;
8893    /**
8894     * Returns whether a form will validate when it is submitted, without having to submit it.
8895     */
8896    checkValidity(): boolean;
8897    reportValidity(): boolean;
8898    /**
8899     * Highlights the input area of a form element.
8900     */
8901    select(): void;
8902    /**
8903     * Sets a custom error message that is displayed when a form is submitted.
8904     * @param error Sets a custom error message that is displayed when a form is submitted.
8905     */
8906    setCustomValidity(error: string): void;
8907    setRangeText(replacement: string): void;
8908    setRangeText(replacement: string, start: number, end: number, selectionMode?: SelectionMode): void;
8909    /**
8910     * Sets the start and end positions of a selection in a text field.
8911     * @param start The offset into the text field for the start of the selection.
8912     * @param end The offset into the text field for the end of the selection.
8913     * @param direction The direction in which the selection is performed.
8914     */
8915    setSelectionRange(start: number | null, end: number | null, direction?: "forward" | "backward" | "none"): void;
8916    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTextAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8917    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8918    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTextAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8919    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8920}
8921
8922declare var HTMLTextAreaElement: {
8923    prototype: HTMLTextAreaElement;
8924    new(): HTMLTextAreaElement;
8925};
8926
8927/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <time> elements. */
8928interface HTMLTimeElement extends HTMLElement {
8929    dateTime: string;
8930    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTimeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8931    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8932    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTimeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8933    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8934}
8935
8936declare var HTMLTimeElement: {
8937    prototype: HTMLTimeElement;
8938    new(): HTMLTimeElement;
8939};
8940
8941/** Contains the title for a document. This element inherits all of the properties and methods of the HTMLElement interface. */
8942interface HTMLTitleElement extends HTMLElement {
8943    /**
8944     * Retrieves or sets the text of the object as a string.
8945     */
8946    text: string;
8947    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTitleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8948    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8949    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTitleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8950    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8951}
8952
8953declare var HTMLTitleElement: {
8954    prototype: HTMLTitleElement;
8955    new(): HTMLTitleElement;
8956};
8957
8958/** The HTMLTrackElement */
8959interface HTMLTrackElement extends HTMLElement {
8960    default: boolean;
8961    kind: string;
8962    label: string;
8963    readonly readyState: number;
8964    src: string;
8965    srclang: string;
8966    readonly track: TextTrack;
8967    readonly ERROR: number;
8968    readonly LOADED: number;
8969    readonly LOADING: number;
8970    readonly NONE: number;
8971    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTrackElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8972    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8973    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTrackElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8974    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8975}
8976
8977declare var HTMLTrackElement: {
8978    prototype: HTMLTrackElement;
8979    new(): HTMLTrackElement;
8980    readonly ERROR: number;
8981    readonly LOADED: number;
8982    readonly LOADING: number;
8983    readonly NONE: number;
8984};
8985
8986/** Provides special properties (beyond those defined on the regular HTMLElement interface it also has available to it by inheritance) for manipulating unordered list elements. */
8987interface HTMLUListElement extends HTMLElement {
8988    /** @deprecated */
8989    compact: boolean;
8990    /** @deprecated */
8991    type: string;
8992    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8993    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8994    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8995    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8996}
8997
8998declare var HTMLUListElement: {
8999    prototype: HTMLUListElement;
9000    new(): HTMLUListElement;
9001};
9002
9003/** An invalid HTML element and derives from the HTMLElement interface, but without implementing any additional properties or methods. */
9004interface HTMLUnknownElement extends HTMLElement {
9005    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUnknownElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9006    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9007    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUnknownElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9008    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9009}
9010
9011declare var HTMLUnknownElement: {
9012    prototype: HTMLUnknownElement;
9013    new(): HTMLUnknownElement;
9014};
9015
9016/** Provides special properties and methods for manipulating video objects. It also inherits properties and methods of HTMLMediaElement and HTMLElement. */
9017interface HTMLVideoElement extends HTMLMediaElement {
9018    /**
9019     * Gets or sets the height of the video element.
9020     */
9021    height: number;
9022    /**
9023     * 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.
9024     */
9025    playsInline: boolean;
9026    /**
9027     * 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.
9028     */
9029    poster: string;
9030    /**
9031     * Gets the intrinsic height of a video in CSS pixels, or zero if the dimensions are not known.
9032     */
9033    readonly videoHeight: number;
9034    /**
9035     * Gets the intrinsic width of a video in CSS pixels, or zero if the dimensions are not known.
9036     */
9037    readonly videoWidth: number;
9038    /**
9039     * Gets or sets the width of the video element.
9040     */
9041    width: number;
9042    getVideoPlaybackQuality(): VideoPlaybackQuality;
9043    addEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLVideoElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9044    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9045    removeEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLVideoElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9046    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9047}
9048
9049declare var HTMLVideoElement: {
9050    prototype: HTMLVideoElement;
9051    new(): HTMLVideoElement;
9052};
9053
9054/** Events that fire when the fragment identifier of the URL has changed. */
9055interface HashChangeEvent extends Event {
9056    /**
9057     * Returns the URL of the session history entry that is now current.
9058     */
9059    readonly newURL: string;
9060    /**
9061     * Returns the URL of the session history entry that was previously current.
9062     */
9063    readonly oldURL: string;
9064}
9065
9066declare var HashChangeEvent: {
9067    prototype: HashChangeEvent;
9068    new(type: string, eventInitDict?: HashChangeEventInit): HashChangeEvent;
9069};
9070
9071/** 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. */
9072interface Headers {
9073    append(name: string, value: string): void;
9074    delete(name: string): void;
9075    get(name: string): string | null;
9076    has(name: string): boolean;
9077    set(name: string, value: string): void;
9078    forEach(callbackfn: (value: string, key: string, parent: Headers) => void, thisArg?: any): void;
9079}
9080
9081declare var Headers: {
9082    prototype: Headers;
9083    new(init?: HeadersInit): Headers;
9084};
9085
9086/** Allows manipulation of the browser session history, that is the pages visited in the tab or frame that the current page is loaded in. */
9087interface History {
9088    readonly length: number;
9089    scrollRestoration: ScrollRestoration;
9090    readonly state: any;
9091    back(): void;
9092    forward(): void;
9093    go(delta?: number): void;
9094    pushState(data: any, title: string, url?: string | null): void;
9095    replaceState(data: any, title: string, url?: string | null): void;
9096}
9097
9098declare var History: {
9099    prototype: History;
9100    new(): History;
9101};
9102
9103interface IDBArrayKey extends Array<IDBValidKey> {
9104}
9105
9106/** This IndexedDB API interface represents a cursor for traversing or iterating over multiple records in a database. */
9107interface IDBCursor {
9108    /**
9109     * Returns the direction ("next", "nextunique", "prev" or "prevunique") of the cursor.
9110     */
9111    readonly direction: IDBCursorDirection;
9112    /**
9113     * Returns the key of the cursor. Throws a "InvalidStateError" DOMException if the cursor is advancing or is finished.
9114     */
9115    readonly key: IDBValidKey;
9116    /**
9117     * Returns the effective key of the cursor. Throws a "InvalidStateError" DOMException if the cursor is advancing or is finished.
9118     */
9119    readonly primaryKey: IDBValidKey;
9120    /**
9121     * Returns the IDBObjectStore or IDBIndex the cursor was opened from.
9122     */
9123    readonly source: IDBObjectStore | IDBIndex;
9124    /**
9125     * Advances the cursor through the next count records in range.
9126     */
9127    advance(count: number): void;
9128    /**
9129     * Advances the cursor to the next record in range.
9130     */
9131    continue(key?: IDBValidKey): void;
9132    /**
9133     * 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.
9134     */
9135    continuePrimaryKey(key: IDBValidKey, primaryKey: IDBValidKey): void;
9136    /**
9137     * Delete the record pointed at by the cursor with a new value.
9138     *
9139     * If successful, request's result will be undefined.
9140     */
9141    delete(): IDBRequest<undefined>;
9142    /**
9143     * Updated the record pointed at by the cursor with a new value.
9144     *
9145     * Throws a "DataError" DOMException if the effective object store uses in-line keys and the key would have changed.
9146     *
9147     * If successful, request's result will be the record's key.
9148     */
9149    update(value: any): IDBRequest<IDBValidKey>;
9150}
9151
9152declare var IDBCursor: {
9153    prototype: IDBCursor;
9154    new(): IDBCursor;
9155};
9156
9157/** 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. */
9158interface IDBCursorWithValue extends IDBCursor {
9159    /**
9160     * Returns the cursor's current value.
9161     */
9162    readonly value: any;
9163}
9164
9165declare var IDBCursorWithValue: {
9166    prototype: IDBCursorWithValue;
9167    new(): IDBCursorWithValue;
9168};
9169
9170interface IDBDatabaseEventMap {
9171    "abort": Event;
9172    "close": Event;
9173    "error": Event;
9174    "versionchange": IDBVersionChangeEvent;
9175}
9176
9177/** 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. */
9178interface IDBDatabase extends EventTarget {
9179    /**
9180     * Returns the name of the database.
9181     */
9182    readonly name: string;
9183    /**
9184     * Returns a list of the names of object stores in the database.
9185     */
9186    readonly objectStoreNames: DOMStringList;
9187    onabort: ((this: IDBDatabase, ev: Event) => any) | null;
9188    onclose: ((this: IDBDatabase, ev: Event) => any) | null;
9189    onerror: ((this: IDBDatabase, ev: Event) => any) | null;
9190    onversionchange: ((this: IDBDatabase, ev: IDBVersionChangeEvent) => any) | null;
9191    /**
9192     * Returns the version of the database.
9193     */
9194    readonly version: number;
9195    /**
9196     * Closes the connection once all running transactions have finished.
9197     */
9198    close(): void;
9199    /**
9200     * Creates a new object store with the given name and options and returns a new IDBObjectStore.
9201     *
9202     * Throws a "InvalidStateError" DOMException if not called within an upgrade transaction.
9203     */
9204    createObjectStore(name: string, options?: IDBObjectStoreParameters): IDBObjectStore;
9205    /**
9206     * Deletes the object store with the given name.
9207     *
9208     * Throws a "InvalidStateError" DOMException if not called within an upgrade transaction.
9209     */
9210    deleteObjectStore(name: string): void;
9211    /**
9212     * 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.
9213     */
9214    transaction(storeNames: string | string[], mode?: IDBTransactionMode): IDBTransaction;
9215    addEventListener<K extends keyof IDBDatabaseEventMap>(type: K, listener: (this: IDBDatabase, ev: IDBDatabaseEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9216    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9217    removeEventListener<K extends keyof IDBDatabaseEventMap>(type: K, listener: (this: IDBDatabase, ev: IDBDatabaseEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9218    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9219}
9220
9221declare var IDBDatabase: {
9222    prototype: IDBDatabase;
9223    new(): IDBDatabase;
9224};
9225
9226/** 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.) */
9227interface IDBFactory {
9228    /**
9229     * Compares two values as keys. Returns -1 if key1 precedes key2, 1 if key2 precedes key1, and 0 if the keys are equal.
9230     *
9231     * Throws a "DataError" DOMException if either input is not a valid key.
9232     */
9233    cmp(first: any, second: any): number;
9234    /**
9235     * 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.
9236     */
9237    deleteDatabase(name: string): IDBOpenDBRequest;
9238    /**
9239     * 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.
9240     */
9241    open(name: string, version?: number): IDBOpenDBRequest;
9242}
9243
9244declare var IDBFactory: {
9245    prototype: IDBFactory;
9246    new(): IDBFactory;
9247};
9248
9249/** 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. */
9250interface IDBIndex {
9251    readonly keyPath: string | string[];
9252    readonly multiEntry: boolean;
9253    /**
9254     * Returns the name of the index.
9255     */
9256    name: string;
9257    /**
9258     * Returns the IDBObjectStore the index belongs to.
9259     */
9260    readonly objectStore: IDBObjectStore;
9261    readonly unique: boolean;
9262    /**
9263     * Retrieves the number of records matching the given key or key range in query.
9264     *
9265     * If successful, request's result will be the count.
9266     */
9267    count(key?: IDBValidKey | IDBKeyRange): IDBRequest<number>;
9268    /**
9269     * Retrieves the value of the first record matching the given key or key range in query.
9270     *
9271     * If successful, request's result will be the value, or undefined if there was no matching record.
9272     */
9273    get(key: IDBValidKey | IDBKeyRange): IDBRequest<any | undefined>;
9274    /**
9275     * Retrieves the values of the records matching the given key or key range in query (up to count if given).
9276     *
9277     * If successful, request's result will be an Array of the values.
9278     */
9279    getAll(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<any[]>;
9280    /**
9281     * Retrieves the keys of records matching the given key or key range in query (up to count if given).
9282     *
9283     * If successful, request's result will be an Array of the keys.
9284     */
9285    getAllKeys(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<IDBValidKey[]>;
9286    /**
9287     * Retrieves the key of the first record matching the given key or key range in query.
9288     *
9289     * If successful, request's result will be the key, or undefined if there was no matching record.
9290     */
9291    getKey(key: IDBValidKey | IDBKeyRange): IDBRequest<IDBValidKey | undefined>;
9292    /**
9293     * Opens a cursor over the records matching query, ordered by direction. If query is null, all records in index are matched.
9294     *
9295     * If successful, request's result will be an IDBCursorWithValue, or null if there were no matching records.
9296     */
9297    openCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursorWithValue | null>;
9298    /**
9299     * 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.
9300     *
9301     * If successful, request's result will be an IDBCursor, or null if there were no matching records.
9302     */
9303    openKeyCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursor | null>;
9304}
9305
9306declare var IDBIndex: {
9307    prototype: IDBIndex;
9308    new(): IDBIndex;
9309};
9310
9311/** 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: */
9312interface IDBKeyRange {
9313    /**
9314     * Returns lower bound, or undefined if none.
9315     */
9316    readonly lower: any;
9317    /**
9318     * Returns true if the lower open flag is set, and false otherwise.
9319     */
9320    readonly lowerOpen: boolean;
9321    /**
9322     * Returns upper bound, or undefined if none.
9323     */
9324    readonly upper: any;
9325    /**
9326     * Returns true if the upper open flag is set, and false otherwise.
9327     */
9328    readonly upperOpen: boolean;
9329    /**
9330     * Returns true if key is included in the range, and false otherwise.
9331     */
9332    includes(key: any): boolean;
9333}
9334
9335declare var IDBKeyRange: {
9336    prototype: IDBKeyRange;
9337    new(): IDBKeyRange;
9338    /**
9339     * 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.
9340     */
9341    bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange;
9342    /**
9343     * Returns a new IDBKeyRange starting at key with no upper bound. If open is true, key is not included in the range.
9344     */
9345    lowerBound(lower: any, open?: boolean): IDBKeyRange;
9346    /**
9347     * Returns a new IDBKeyRange spanning only key.
9348     */
9349    only(value: any): IDBKeyRange;
9350    /**
9351     * Returns a new IDBKeyRange with no lower bound and ending at key. If open is true, key is not included in the range.
9352     */
9353    upperBound(upper: any, open?: boolean): IDBKeyRange;
9354};
9355
9356/** 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.) */
9357interface IDBObjectStore {
9358    /**
9359     * Returns true if the store has a key generator, and false otherwise.
9360     */
9361    readonly autoIncrement: boolean;
9362    /**
9363     * Returns a list of the names of indexes in the store.
9364     */
9365    readonly indexNames: DOMStringList;
9366    /**
9367     * Returns the key path of the store, or null if none.
9368     */
9369    readonly keyPath: string | string[];
9370    /**
9371     * Returns the name of the store.
9372     */
9373    name: string;
9374    /**
9375     * Returns the associated transaction.
9376     */
9377    readonly transaction: IDBTransaction;
9378    /**
9379     * Adds or updates a record in store with the given value and key.
9380     *
9381     * If the store uses in-line keys and key is specified a "DataError" DOMException will be thrown.
9382     *
9383     * 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.
9384     *
9385     * If successful, request's result will be the record's key.
9386     */
9387    add(value: any, key?: IDBValidKey): IDBRequest<IDBValidKey>;
9388    /**
9389     * Deletes all records in store.
9390     *
9391     * If successful, request's result will be undefined.
9392     */
9393    clear(): IDBRequest<undefined>;
9394    /**
9395     * Retrieves the number of records matching the given key or key range in query.
9396     *
9397     * If successful, request's result will be the count.
9398     */
9399    count(key?: IDBValidKey | IDBKeyRange): IDBRequest<number>;
9400    /**
9401     * 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.
9402     *
9403     * Throws an "InvalidStateError" DOMException if not called within an upgrade transaction.
9404     */
9405    createIndex(name: string, keyPath: string | string[], options?: IDBIndexParameters): IDBIndex;
9406    /**
9407     * Deletes records in store with the given key or in the given key range in query.
9408     *
9409     * If successful, request's result will be undefined.
9410     */
9411    delete(key: IDBValidKey | IDBKeyRange): IDBRequest<undefined>;
9412    /**
9413     * Deletes the index in store with the given name.
9414     *
9415     * Throws an "InvalidStateError" DOMException if not called within an upgrade transaction.
9416     */
9417    deleteIndex(name: string): void;
9418    /**
9419     * Retrieves the value of the first record matching the given key or key range in query.
9420     *
9421     * If successful, request's result will be the value, or undefined if there was no matching record.
9422     */
9423    get(query: IDBValidKey | IDBKeyRange): IDBRequest<any | undefined>;
9424    /**
9425     * Retrieves the values of the records matching the given key or key range in query (up to count if given).
9426     *
9427     * If successful, request's result will be an Array of the values.
9428     */
9429    getAll(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<any[]>;
9430    /**
9431     * Retrieves the keys of records matching the given key or key range in query (up to count if given).
9432     *
9433     * If successful, request's result will be an Array of the keys.
9434     */
9435    getAllKeys(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<IDBValidKey[]>;
9436    /**
9437     * Retrieves the key of the first record matching the given key or key range in query.
9438     *
9439     * If successful, request's result will be the key, or undefined if there was no matching record.
9440     */
9441    getKey(query: IDBValidKey | IDBKeyRange): IDBRequest<IDBValidKey | undefined>;
9442    index(name: string): IDBIndex;
9443    /**
9444     * Opens a cursor over the records matching query, ordered by direction. If query is null, all records in store are matched.
9445     *
9446     * If successful, request's result will be an IDBCursorWithValue pointing at the first matching record, or null if there were no matching records.
9447     */
9448    openCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursorWithValue | null>;
9449    /**
9450     * 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.
9451     *
9452     * If successful, request's result will be an IDBCursor pointing at the first matching record, or null if there were no matching records.
9453     */
9454    openKeyCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursor | null>;
9455    /**
9456     * Adds or updates a record in store with the given value and key.
9457     *
9458     * If the store uses in-line keys and key is specified a "DataError" DOMException will be thrown.
9459     *
9460     * 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.
9461     *
9462     * If successful, request's result will be the record's key.
9463     */
9464    put(value: any, key?: IDBValidKey): IDBRequest<IDBValidKey>;
9465}
9466
9467declare var IDBObjectStore: {
9468    prototype: IDBObjectStore;
9469    new(): IDBObjectStore;
9470};
9471
9472interface IDBOpenDBRequestEventMap extends IDBRequestEventMap {
9473    "blocked": Event;
9474    "upgradeneeded": IDBVersionChangeEvent;
9475}
9476
9477/** Also inherits methods from its parents IDBRequest and EventTarget. */
9478interface IDBOpenDBRequest extends IDBRequest<IDBDatabase> {
9479    onblocked: ((this: IDBOpenDBRequest, ev: Event) => any) | null;
9480    onupgradeneeded: ((this: IDBOpenDBRequest, ev: IDBVersionChangeEvent) => any) | null;
9481    addEventListener<K extends keyof IDBOpenDBRequestEventMap>(type: K, listener: (this: IDBOpenDBRequest, ev: IDBOpenDBRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9482    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9483    removeEventListener<K extends keyof IDBOpenDBRequestEventMap>(type: K, listener: (this: IDBOpenDBRequest, ev: IDBOpenDBRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9484    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9485}
9486
9487declare var IDBOpenDBRequest: {
9488    prototype: IDBOpenDBRequest;
9489    new(): IDBOpenDBRequest;
9490};
9491
9492interface IDBRequestEventMap {
9493    "error": Event;
9494    "success": Event;
9495}
9496
9497/** 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. */
9498interface IDBRequest<T = any> extends EventTarget {
9499    /**
9500     * 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.
9501     */
9502    readonly error: DOMException | null;
9503    onerror: ((this: IDBRequest<T>, ev: Event) => any) | null;
9504    onsuccess: ((this: IDBRequest<T>, ev: Event) => any) | null;
9505    /**
9506     * Returns "pending" until a request is complete, then returns "done".
9507     */
9508    readonly readyState: IDBRequestReadyState;
9509    /**
9510     * When a request is completed, returns the result, or undefined if the request failed. Throws a "InvalidStateError" DOMException if the request is still pending.
9511     */
9512    readonly result: T;
9513    /**
9514     * Returns the IDBObjectStore, IDBIndex, or IDBCursor the request was made against, or null if is was an open request.
9515     */
9516    readonly source: IDBObjectStore | IDBIndex | IDBCursor;
9517    /**
9518     * 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.
9519     */
9520    readonly transaction: IDBTransaction | null;
9521    addEventListener<K extends keyof IDBRequestEventMap>(type: K, listener: (this: IDBRequest<T>, ev: IDBRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9522    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9523    removeEventListener<K extends keyof IDBRequestEventMap>(type: K, listener: (this: IDBRequest<T>, ev: IDBRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9524    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9525}
9526
9527declare var IDBRequest: {
9528    prototype: IDBRequest;
9529    new(): IDBRequest;
9530};
9531
9532interface IDBTransactionEventMap {
9533    "abort": Event;
9534    "complete": Event;
9535    "error": Event;
9536}
9537
9538interface IDBTransaction extends EventTarget {
9539    /**
9540     * Returns the transaction's connection.
9541     */
9542    readonly db: IDBDatabase;
9543    /**
9544     * If the transaction was aborted, returns the error (a DOMException) providing the reason.
9545     */
9546    readonly error: DOMException;
9547    /**
9548     * Returns the mode the transaction was created with ("readonly" or "readwrite"), or "versionchange" for an upgrade transaction.
9549     */
9550    readonly mode: IDBTransactionMode;
9551    /**
9552     * 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.
9553     */
9554    readonly objectStoreNames: DOMStringList;
9555    onabort: ((this: IDBTransaction, ev: Event) => any) | null;
9556    oncomplete: ((this: IDBTransaction, ev: Event) => any) | null;
9557    onerror: ((this: IDBTransaction, ev: Event) => any) | null;
9558    /**
9559     * Aborts the transaction. All pending requests will fail with a "AbortError" DOMException and all changes made to the database will be reverted.
9560     */
9561    abort(): void;
9562    /**
9563     * Returns an IDBObjectStore in the transaction's scope.
9564     */
9565    objectStore(name: string): IDBObjectStore;
9566    addEventListener<K extends keyof IDBTransactionEventMap>(type: K, listener: (this: IDBTransaction, ev: IDBTransactionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9567    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9568    removeEventListener<K extends keyof IDBTransactionEventMap>(type: K, listener: (this: IDBTransaction, ev: IDBTransactionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9569    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9570}
9571
9572declare var IDBTransaction: {
9573    prototype: IDBTransaction;
9574    new(): IDBTransaction;
9575};
9576
9577/** This IndexedDB API interface indicates that the version of the database has changed, as the result of an IDBOpenDBRequest.onupgradeneeded event handler function. */
9578interface IDBVersionChangeEvent extends Event {
9579    readonly newVersion: number | null;
9580    readonly oldVersion: number;
9581}
9582
9583declare var IDBVersionChangeEvent: {
9584    prototype: IDBVersionChangeEvent;
9585    new(type: string, eventInitDict?: IDBVersionChangeEventInit): IDBVersionChangeEvent;
9586};
9587
9588/** 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. */
9589interface IIRFilterNode extends AudioNode {
9590    getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;
9591}
9592
9593declare var IIRFilterNode: {
9594    prototype: IIRFilterNode;
9595    new(context: BaseAudioContext, options: IIRFilterOptions): IIRFilterNode;
9596};
9597
9598interface ImageBitmap {
9599    /**
9600     * Returns the intrinsic height of the image, in CSS pixels.
9601     */
9602    readonly height: number;
9603    /**
9604     * Returns the intrinsic width of the image, in CSS pixels.
9605     */
9606    readonly width: number;
9607    /**
9608     * Releases imageBitmap's underlying bitmap data.
9609     */
9610    close(): void;
9611}
9612
9613declare var ImageBitmap: {
9614    prototype: ImageBitmap;
9615    new(): ImageBitmap;
9616};
9617
9618interface ImageBitmapRenderingContext {
9619    /**
9620     * Returns the canvas element that the context is bound to.
9621     */
9622    readonly canvas: HTMLCanvasElement | OffscreenCanvas;
9623    /**
9624     * Transfers the underlying bitmap data from imageBitmap to context, and the bitmap becomes the contents of the canvas element to which context is bound.
9625     */
9626    transferFromImageBitmap(bitmap: ImageBitmap | null): void;
9627}
9628
9629declare var ImageBitmapRenderingContext: {
9630    prototype: ImageBitmapRenderingContext;
9631    new(): ImageBitmapRenderingContext;
9632};
9633
9634/** 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(). */
9635interface ImageData {
9636    /**
9637     * Returns the one-dimensional array containing the data in RGBA order, as integers in the range 0 to 255.
9638     */
9639    readonly data: Uint8ClampedArray;
9640    /**
9641     * Returns the actual dimensions of the data in the ImageData object, in pixels.
9642     */
9643    readonly height: number;
9644    /**
9645     * Returns the actual dimensions of the data in the ImageData object, in pixels.
9646     */
9647    readonly width: number;
9648}
9649
9650declare var ImageData: {
9651    prototype: ImageData;
9652    new(sw: number, sh: number): ImageData;
9653    new(data: Uint8ClampedArray, sw: number, sh?: number): ImageData;
9654};
9655
9656interface InnerHTML {
9657    innerHTML: string;
9658}
9659
9660interface InputDeviceInfo extends MediaDeviceInfo {
9661    getCapabilities(): MediaTrackCapabilities;
9662}
9663
9664declare var InputDeviceInfo: {
9665    prototype: InputDeviceInfo;
9666    new(): InputDeviceInfo;
9667};
9668
9669interface InputEvent extends UIEvent {
9670    readonly data: string | null;
9671    readonly inputType: string;
9672    readonly isComposing: boolean;
9673}
9674
9675declare var InputEvent: {
9676    prototype: InputEvent;
9677    new(type: string, eventInitDict?: InputEventInit): InputEvent;
9678};
9679
9680/** 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. */
9681interface IntersectionObserver {
9682    readonly root: Element | Document | null;
9683    readonly rootMargin: string;
9684    readonly thresholds: ReadonlyArray<number>;
9685    disconnect(): void;
9686    observe(target: Element): void;
9687    takeRecords(): IntersectionObserverEntry[];
9688    unobserve(target: Element): void;
9689}
9690
9691declare var IntersectionObserver: {
9692    prototype: IntersectionObserver;
9693    new(callback: IntersectionObserverCallback, options?: IntersectionObserverInit): IntersectionObserver;
9694};
9695
9696/** This Intersection Observer API interface describes the intersection between the target element and its root container at a specific moment of transition. */
9697interface IntersectionObserverEntry {
9698    readonly boundingClientRect: DOMRectReadOnly;
9699    readonly intersectionRatio: number;
9700    readonly intersectionRect: DOMRectReadOnly;
9701    readonly isIntersecting: boolean;
9702    readonly rootBounds: DOMRectReadOnly | null;
9703    readonly target: Element;
9704    readonly time: number;
9705}
9706
9707declare var IntersectionObserverEntry: {
9708    prototype: IntersectionObserverEntry;
9709    new(intersectionObserverEntryInit: IntersectionObserverEntryInit): IntersectionObserverEntry;
9710};
9711
9712/** 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. */
9713interface KeyboardEvent extends UIEvent {
9714    readonly altKey: boolean;
9715    /** @deprecated */
9716    char: string;
9717    /** @deprecated */
9718    readonly charCode: number;
9719    readonly code: string;
9720    readonly ctrlKey: boolean;
9721    readonly isComposing: boolean;
9722    readonly key: string;
9723    /** @deprecated */
9724    readonly keyCode: number;
9725    readonly location: number;
9726    readonly metaKey: boolean;
9727    readonly repeat: boolean;
9728    readonly shiftKey: boolean;
9729    getModifierState(keyArg: string): boolean;
9730    readonly DOM_KEY_LOCATION_LEFT: number;
9731    readonly DOM_KEY_LOCATION_NUMPAD: number;
9732    readonly DOM_KEY_LOCATION_RIGHT: number;
9733    readonly DOM_KEY_LOCATION_STANDARD: number;
9734}
9735
9736declare var KeyboardEvent: {
9737    prototype: KeyboardEvent;
9738    new(type: string, eventInitDict?: KeyboardEventInit): KeyboardEvent;
9739    readonly DOM_KEY_LOCATION_LEFT: number;
9740    readonly DOM_KEY_LOCATION_NUMPAD: number;
9741    readonly DOM_KEY_LOCATION_RIGHT: number;
9742    readonly DOM_KEY_LOCATION_STANDARD: number;
9743};
9744
9745interface KeyframeEffect extends AnimationEffect {
9746    composite: CompositeOperation;
9747    iterationComposite: IterationCompositeOperation;
9748    target: Element | null;
9749    getKeyframes(): ComputedKeyframe[];
9750    setKeyframes(keyframes: Keyframe[] | PropertyIndexedKeyframes | null): void;
9751}
9752
9753declare var KeyframeEffect: {
9754    prototype: KeyframeEffect;
9755    new(target: Element | null, keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeEffectOptions): KeyframeEffect;
9756    new(source: KeyframeEffect): KeyframeEffect;
9757};
9758
9759interface LinkStyle {
9760    readonly sheet: CSSStyleSheet | null;
9761}
9762
9763interface ListeningStateChangedEvent extends Event {
9764    readonly label: string;
9765    readonly state: ListeningState;
9766}
9767
9768declare var ListeningStateChangedEvent: {
9769    prototype: ListeningStateChangedEvent;
9770    new(): ListeningStateChangedEvent;
9771};
9772
9773/** 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. */
9774interface Location {
9775    /**
9776     * Returns a DOMStringList object listing the origins of the ancestor browsing contexts, from the parent browsing context to the top-level browsing context.
9777     */
9778    readonly ancestorOrigins: DOMStringList;
9779    /**
9780     * Returns the Location object's URL's fragment (includes leading "#" if non-empty).
9781     *
9782     * Can be set, to navigate to the same URL with a changed fragment (ignores leading "#").
9783     */
9784    hash: string;
9785    /**
9786     * Returns the Location object's URL's host and port (if different from the default port for the scheme).
9787     *
9788     * Can be set, to navigate to the same URL with a changed host and port.
9789     */
9790    host: string;
9791    /**
9792     * Returns the Location object's URL's host.
9793     *
9794     * Can be set, to navigate to the same URL with a changed host.
9795     */
9796    hostname: string;
9797    /**
9798     * Returns the Location object's URL.
9799     *
9800     * Can be set, to navigate to the given URL.
9801     */
9802    href: string;
9803    toString(): string;
9804    /**
9805     * Returns the Location object's URL's origin.
9806     */
9807    readonly origin: string;
9808    /**
9809     * Returns the Location object's URL's path.
9810     *
9811     * Can be set, to navigate to the same URL with a changed path.
9812     */
9813    pathname: string;
9814    /**
9815     * Returns the Location object's URL's port.
9816     *
9817     * Can be set, to navigate to the same URL with a changed port.
9818     */
9819    port: string;
9820    /**
9821     * Returns the Location object's URL's scheme.
9822     *
9823     * Can be set, to navigate to the same URL with a changed scheme.
9824     */
9825    protocol: string;
9826    /**
9827     * Returns the Location object's URL's query (includes leading "?" if non-empty).
9828     *
9829     * Can be set, to navigate to the same URL with a changed query (ignores leading "?").
9830     */
9831    search: string;
9832    /**
9833     * Navigates to the given URL.
9834     */
9835    assign(url: string): void;
9836    /**
9837     * Reloads the current page.
9838     */
9839    reload(): void;
9840    /** @deprecated */
9841    reload(forcedReload: boolean): void;
9842    /**
9843     * Removes the current page from the session history and navigates to the given URL.
9844     */
9845    replace(url: string): void;
9846}
9847
9848declare var Location: {
9849    prototype: Location;
9850    new(): Location;
9851};
9852
9853interface MSAssertion {
9854    readonly id: string;
9855    readonly type: MSCredentialType;
9856}
9857
9858declare var MSAssertion: {
9859    prototype: MSAssertion;
9860    new(): MSAssertion;
9861};
9862
9863interface MSBlobBuilder {
9864    append(data: any, endings?: string): void;
9865    getBlob(contentType?: string): Blob;
9866}
9867
9868declare var MSBlobBuilder: {
9869    prototype: MSBlobBuilder;
9870    new(): MSBlobBuilder;
9871};
9872
9873interface MSFIDOCredentialAssertion extends MSAssertion {
9874    readonly algorithm: string | Algorithm;
9875    readonly attestation: any;
9876    readonly publicKey: string;
9877    readonly transportHints: MSTransportType[];
9878}
9879
9880declare var MSFIDOCredentialAssertion: {
9881    prototype: MSFIDOCredentialAssertion;
9882    new(): MSFIDOCredentialAssertion;
9883};
9884
9885interface MSFIDOSignature {
9886    readonly authnrData: string;
9887    readonly clientData: string;
9888    readonly signature: string;
9889}
9890
9891declare var MSFIDOSignature: {
9892    prototype: MSFIDOSignature;
9893    new(): MSFIDOSignature;
9894};
9895
9896interface MSFIDOSignatureAssertion extends MSAssertion {
9897    readonly signature: MSFIDOSignature;
9898}
9899
9900declare var MSFIDOSignatureAssertion: {
9901    prototype: MSFIDOSignatureAssertion;
9902    new(): MSFIDOSignatureAssertion;
9903};
9904
9905interface MSFileSaver {
9906    msSaveBlob(blob: any, defaultName?: string): boolean;
9907    msSaveOrOpenBlob(blob: any, defaultName?: string): boolean;
9908}
9909
9910interface MSGesture {
9911    target: Element;
9912    addPointer(pointerId: number): void;
9913    stop(): void;
9914}
9915
9916declare var MSGesture: {
9917    prototype: MSGesture;
9918    new(): MSGesture;
9919};
9920
9921/** The MSGestureEvent is a proprietary interface specific to Internet Explorer and Microsoft Edge which represents events that occur due to touch gestures. Events using this interface include MSGestureStart, MSGestureEnd, MSGestureTap, MSGestureHold, MSGestureChange, and MSInertiaStart. */
9922interface MSGestureEvent extends UIEvent {
9923    readonly clientX: number;
9924    readonly clientY: number;
9925    readonly expansion: number;
9926    readonly gestureObject: any;
9927    readonly hwTimestamp: number;
9928    readonly offsetX: number;
9929    readonly offsetY: number;
9930    readonly rotation: number;
9931    readonly scale: number;
9932    readonly screenX: number;
9933    readonly screenY: number;
9934    readonly translationX: number;
9935    readonly translationY: number;
9936    readonly velocityAngular: number;
9937    readonly velocityExpansion: number;
9938    readonly velocityX: number;
9939    readonly velocityY: number;
9940    initGestureEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, offsetXArg: number, offsetYArg: number, translationXArg: number, translationYArg: number, scaleArg: number, expansionArg: number, rotationArg: number, velocityXArg: number, velocityYArg: number, velocityExpansionArg: number, velocityAngularArg: number, hwTimestampArg: number): void;
9941    readonly MSGESTURE_FLAG_BEGIN: number;
9942    readonly MSGESTURE_FLAG_CANCEL: number;
9943    readonly MSGESTURE_FLAG_END: number;
9944    readonly MSGESTURE_FLAG_INERTIA: number;
9945    readonly MSGESTURE_FLAG_NONE: number;
9946}
9947
9948declare var MSGestureEvent: {
9949    prototype: MSGestureEvent;
9950    new(): MSGestureEvent;
9951    readonly MSGESTURE_FLAG_BEGIN: number;
9952    readonly MSGESTURE_FLAG_CANCEL: number;
9953    readonly MSGESTURE_FLAG_END: number;
9954    readonly MSGESTURE_FLAG_INERTIA: number;
9955    readonly MSGESTURE_FLAG_NONE: number;
9956};
9957
9958/** The msGraphicsTrust() constructor returns an object that provides properties for info on protected video playback. */
9959interface MSGraphicsTrust {
9960    readonly constrictionActive: boolean;
9961    readonly status: string;
9962}
9963
9964declare var MSGraphicsTrust: {
9965    prototype: MSGraphicsTrust;
9966    new(): MSGraphicsTrust;
9967};
9968
9969interface MSInputMethodContextEventMap {
9970    "MSCandidateWindowHide": Event;
9971    "MSCandidateWindowShow": Event;
9972    "MSCandidateWindowUpdate": Event;
9973}
9974
9975interface MSInputMethodContext extends EventTarget {
9976    readonly compositionEndOffset: number;
9977    readonly compositionStartOffset: number;
9978    oncandidatewindowhide: ((this: MSInputMethodContext, ev: Event) => any) | null;
9979    oncandidatewindowshow: ((this: MSInputMethodContext, ev: Event) => any) | null;
9980    oncandidatewindowupdate: ((this: MSInputMethodContext, ev: Event) => any) | null;
9981    readonly target: HTMLElement;
9982    getCandidateWindowClientRect(): ClientRect;
9983    getCompositionAlternatives(): string[];
9984    hasComposition(): boolean;
9985    isCandidateWindowVisible(): boolean;
9986    addEventListener<K extends keyof MSInputMethodContextEventMap>(type: K, listener: (this: MSInputMethodContext, ev: MSInputMethodContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9987    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9988    removeEventListener<K extends keyof MSInputMethodContextEventMap>(type: K, listener: (this: MSInputMethodContext, ev: MSInputMethodContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9989    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9990}
9991
9992declare var MSInputMethodContext: {
9993    prototype: MSInputMethodContext;
9994    new(): MSInputMethodContext;
9995};
9996
9997interface MSMediaKeyError {
9998    readonly code: number;
9999    readonly systemCode: number;
10000    readonly MS_MEDIA_KEYERR_CLIENT: number;
10001    readonly MS_MEDIA_KEYERR_DOMAIN: number;
10002    readonly MS_MEDIA_KEYERR_HARDWARECHANGE: number;
10003    readonly MS_MEDIA_KEYERR_OUTPUT: number;
10004    readonly MS_MEDIA_KEYERR_SERVICE: number;
10005    readonly MS_MEDIA_KEYERR_UNKNOWN: number;
10006}
10007
10008declare var MSMediaKeyError: {
10009    prototype: MSMediaKeyError;
10010    new(): MSMediaKeyError;
10011    readonly MS_MEDIA_KEYERR_CLIENT: number;
10012    readonly MS_MEDIA_KEYERR_DOMAIN: number;
10013    readonly MS_MEDIA_KEYERR_HARDWARECHANGE: number;
10014    readonly MS_MEDIA_KEYERR_OUTPUT: number;
10015    readonly MS_MEDIA_KEYERR_SERVICE: number;
10016    readonly MS_MEDIA_KEYERR_UNKNOWN: number;
10017};
10018
10019interface MSMediaKeyMessageEvent extends Event {
10020    readonly destinationURL: string | null;
10021    readonly message: Uint8Array;
10022}
10023
10024declare var MSMediaKeyMessageEvent: {
10025    prototype: MSMediaKeyMessageEvent;
10026    new(): MSMediaKeyMessageEvent;
10027};
10028
10029interface MSMediaKeyNeededEvent extends Event {
10030    readonly initData: Uint8Array | null;
10031}
10032
10033declare var MSMediaKeyNeededEvent: {
10034    prototype: MSMediaKeyNeededEvent;
10035    new(): MSMediaKeyNeededEvent;
10036};
10037
10038interface MSMediaKeySession extends EventTarget {
10039    readonly error: MSMediaKeyError | null;
10040    readonly keySystem: string;
10041    readonly sessionId: string;
10042    close(): void;
10043    update(key: Uint8Array): void;
10044}
10045
10046declare var MSMediaKeySession: {
10047    prototype: MSMediaKeySession;
10048    new(): MSMediaKeySession;
10049};
10050
10051interface MSMediaKeys {
10052    readonly keySystem: string;
10053    createSession(type: string, initData: Uint8Array, cdmData?: Uint8Array | null): MSMediaKeySession;
10054}
10055
10056declare var MSMediaKeys: {
10057    prototype: MSMediaKeys;
10058    new(keySystem: string): MSMediaKeys;
10059    isTypeSupported(keySystem: string, type?: string | null): boolean;
10060    isTypeSupportedWithFeatures(keySystem: string, type?: string | null): string;
10061};
10062
10063interface MSNavigatorDoNotTrack {
10064    confirmSiteSpecificTrackingException(args: ConfirmSiteSpecificExceptionsInformation): boolean;
10065    confirmWebWideTrackingException(args: ExceptionInformation): boolean;
10066    removeSiteSpecificTrackingException(args: ExceptionInformation): void;
10067    removeWebWideTrackingException(args: ExceptionInformation): void;
10068    storeSiteSpecificTrackingException(args: StoreSiteSpecificExceptionsInformation): void;
10069    storeWebWideTrackingException(args: StoreExceptionsInformation): void;
10070}
10071
10072interface MSPointerEvent extends MouseEvent {
10073    readonly currentPoint: any;
10074    readonly height: number;
10075    readonly hwTimestamp: number;
10076    readonly intermediatePoints: any;
10077    readonly isPrimary: boolean;
10078    readonly pointerId: number;
10079    readonly pointerType: any;
10080    readonly pressure: number;
10081    readonly rotation: number;
10082    readonly tiltX: number;
10083    readonly tiltY: number;
10084    readonly width: number;
10085    getCurrentPoint(element: Element): void;
10086    getIntermediatePoints(element: Element): void;
10087    initPointerEvent(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, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void;
10088}
10089
10090declare var MSPointerEvent: {
10091    prototype: MSPointerEvent;
10092    new(typeArg: string, eventInitDict?: PointerEventInit): MSPointerEvent;
10093};
10094
10095interface MSStream {
10096    readonly type: string;
10097    msClose(): void;
10098    msDetachStream(): any;
10099}
10100
10101declare var MSStream: {
10102    prototype: MSStream;
10103    new(): MSStream;
10104};
10105
10106/** The MediaDevicesInfo interface contains information that describes a single media input or output device. */
10107interface MediaDeviceInfo {
10108    readonly deviceId: string;
10109    readonly groupId: string;
10110    readonly kind: MediaDeviceKind;
10111    readonly label: string;
10112    toJSON(): any;
10113}
10114
10115declare var MediaDeviceInfo: {
10116    prototype: MediaDeviceInfo;
10117    new(): MediaDeviceInfo;
10118};
10119
10120interface MediaDevicesEventMap {
10121    "devicechange": Event;
10122}
10123
10124/** 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. */
10125interface MediaDevices extends EventTarget {
10126    ondevicechange: ((this: MediaDevices, ev: Event) => any) | null;
10127    enumerateDevices(): Promise<MediaDeviceInfo[]>;
10128    getSupportedConstraints(): MediaTrackSupportedConstraints;
10129    getUserMedia(constraints?: MediaStreamConstraints): Promise<MediaStream>;
10130    addEventListener<K extends keyof MediaDevicesEventMap>(type: K, listener: (this: MediaDevices, ev: MediaDevicesEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10131    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10132    removeEventListener<K extends keyof MediaDevicesEventMap>(type: K, listener: (this: MediaDevices, ev: MediaDevicesEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10133    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10134}
10135
10136declare var MediaDevices: {
10137    prototype: MediaDevices;
10138    new(): MediaDevices;
10139};
10140
10141/** 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. */
10142interface MediaElementAudioSourceNode extends AudioNode {
10143    readonly mediaElement: HTMLMediaElement;
10144}
10145
10146declare var MediaElementAudioSourceNode: {
10147    prototype: MediaElementAudioSourceNode;
10148    new(context: AudioContext, options: MediaElementAudioSourceOptions): MediaElementAudioSourceNode;
10149};
10150
10151interface MediaEncryptedEvent extends Event {
10152    readonly initData: ArrayBuffer | null;
10153    readonly initDataType: string;
10154}
10155
10156declare var MediaEncryptedEvent: {
10157    prototype: MediaEncryptedEvent;
10158    new(type: string, eventInitDict?: MediaEncryptedEventInit): MediaEncryptedEvent;
10159};
10160
10161/** An error which occurred while handling media in an HTML media element based on HTMLMediaElement, such as <audio> or <video>. */
10162interface MediaError {
10163    readonly code: number;
10164    readonly message: string;
10165    readonly MEDIA_ERR_ABORTED: number;
10166    readonly MEDIA_ERR_DECODE: number;
10167    readonly MEDIA_ERR_NETWORK: number;
10168    readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number;
10169}
10170
10171declare var MediaError: {
10172    prototype: MediaError;
10173    new(): MediaError;
10174    readonly MEDIA_ERR_ABORTED: number;
10175    readonly MEDIA_ERR_DECODE: number;
10176    readonly MEDIA_ERR_NETWORK: number;
10177    readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number;
10178};
10179
10180/** This EncryptedMediaExtensions API interface contains the content and related data when the content decryption module generates a message for the session. */
10181interface MediaKeyMessageEvent extends Event {
10182    readonly message: ArrayBuffer;
10183    readonly messageType: MediaKeyMessageType;
10184}
10185
10186declare var MediaKeyMessageEvent: {
10187    prototype: MediaKeyMessageEvent;
10188    new(type: string, eventInitDict: MediaKeyMessageEventInit): MediaKeyMessageEvent;
10189};
10190
10191interface MediaKeySessionEventMap {
10192    "keystatuseschange": Event;
10193    "message": MediaKeyMessageEvent;
10194}
10195
10196/** This EncryptedMediaExtensions API interface represents a context for message exchange with a content decryption module (CDM). */
10197interface MediaKeySession extends EventTarget {
10198    readonly closed: Promise<void>;
10199    readonly expiration: number;
10200    readonly keyStatuses: MediaKeyStatusMap;
10201    onkeystatuseschange: ((this: MediaKeySession, ev: Event) => any) | null;
10202    onmessage: ((this: MediaKeySession, ev: MediaKeyMessageEvent) => any) | null;
10203    readonly sessionId: string;
10204    close(): Promise<void>;
10205    generateRequest(initDataType: string, initData: BufferSource): Promise<void>;
10206    load(sessionId: string): Promise<boolean>;
10207    remove(): Promise<void>;
10208    update(response: BufferSource): Promise<void>;
10209    addEventListener<K extends keyof MediaKeySessionEventMap>(type: K, listener: (this: MediaKeySession, ev: MediaKeySessionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10210    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10211    removeEventListener<K extends keyof MediaKeySessionEventMap>(type: K, listener: (this: MediaKeySession, ev: MediaKeySessionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10212    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10213}
10214
10215declare var MediaKeySession: {
10216    prototype: MediaKeySession;
10217    new(): MediaKeySession;
10218};
10219
10220/** This EncryptedMediaExtensions API interface is a read-only map of media key statuses by key IDs. */
10221interface MediaKeyStatusMap {
10222    readonly size: number;
10223    get(keyId: BufferSource): MediaKeyStatus | undefined;
10224    has(keyId: BufferSource): boolean;
10225    forEach(callbackfn: (value: MediaKeyStatus, key: BufferSource, parent: MediaKeyStatusMap) => void, thisArg?: any): void;
10226}
10227
10228declare var MediaKeyStatusMap: {
10229    prototype: MediaKeyStatusMap;
10230    new(): MediaKeyStatusMap;
10231};
10232
10233/** 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. */
10234interface MediaKeySystemAccess {
10235    readonly keySystem: string;
10236    createMediaKeys(): Promise<MediaKeys>;
10237    getConfiguration(): MediaKeySystemConfiguration;
10238}
10239
10240declare var MediaKeySystemAccess: {
10241    prototype: MediaKeySystemAccess;
10242    new(): MediaKeySystemAccess;
10243};
10244
10245/** This EncryptedMediaExtensions API interface the represents a set of keys that an associated HTMLMediaElement can use for decryption of media data during playback. */
10246interface MediaKeys {
10247    createSession(sessionType?: MediaKeySessionType): MediaKeySession;
10248    setServerCertificate(serverCertificate: BufferSource): Promise<boolean>;
10249}
10250
10251declare var MediaKeys: {
10252    prototype: MediaKeys;
10253    new(): MediaKeys;
10254};
10255
10256interface MediaList {
10257    readonly length: number;
10258    mediaText: string;
10259    toString(): string;
10260    appendMedium(medium: string): void;
10261    deleteMedium(medium: string): void;
10262    item(index: number): string | null;
10263    [index: number]: string;
10264}
10265
10266declare var MediaList: {
10267    prototype: MediaList;
10268    new(): MediaList;
10269};
10270
10271interface MediaQueryListEventMap {
10272    "change": MediaQueryListEvent;
10273}
10274
10275/** 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). */
10276interface MediaQueryList extends EventTarget {
10277    readonly matches: boolean;
10278    readonly media: string;
10279    onchange: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null;
10280    /** @deprecated */
10281    addListener(listener: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null): void;
10282    /** @deprecated */
10283    removeListener(listener: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null): void;
10284    addEventListener<K extends keyof MediaQueryListEventMap>(type: K, listener: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10285    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10286    removeEventListener<K extends keyof MediaQueryListEventMap>(type: K, listener: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10287    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10288}
10289
10290declare var MediaQueryList: {
10291    prototype: MediaQueryList;
10292    new(): MediaQueryList;
10293};
10294
10295interface MediaQueryListEvent extends Event {
10296    readonly matches: boolean;
10297    readonly media: string;
10298}
10299
10300declare var MediaQueryListEvent: {
10301    prototype: MediaQueryListEvent;
10302    new(type: string, eventInitDict?: MediaQueryListEventInit): MediaQueryListEvent;
10303};
10304
10305interface MediaSourceEventMap {
10306    "sourceclose": Event;
10307    "sourceended": Event;
10308    "sourceopen": Event;
10309}
10310
10311/** 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. */
10312interface MediaSource extends EventTarget {
10313    readonly activeSourceBuffers: SourceBufferList;
10314    duration: number;
10315    onsourceclose: ((this: MediaSource, ev: Event) => any) | null;
10316    onsourceended: ((this: MediaSource, ev: Event) => any) | null;
10317    onsourceopen: ((this: MediaSource, ev: Event) => any) | null;
10318    readonly readyState: ReadyState;
10319    readonly sourceBuffers: SourceBufferList;
10320    addSourceBuffer(type: string): SourceBuffer;
10321    clearLiveSeekableRange(): void;
10322    endOfStream(error?: EndOfStreamError): void;
10323    removeSourceBuffer(sourceBuffer: SourceBuffer): void;
10324    setLiveSeekableRange(start: number, end: number): void;
10325    addEventListener<K extends keyof MediaSourceEventMap>(type: K, listener: (this: MediaSource, ev: MediaSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10326    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10327    removeEventListener<K extends keyof MediaSourceEventMap>(type: K, listener: (this: MediaSource, ev: MediaSourceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10328    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10329}
10330
10331declare var MediaSource: {
10332    prototype: MediaSource;
10333    new(): MediaSource;
10334    isTypeSupported(type: string): boolean;
10335};
10336
10337interface MediaStreamEventMap {
10338    "addtrack": MediaStreamTrackEvent;
10339    "removetrack": MediaStreamTrackEvent;
10340}
10341
10342/** 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. */
10343interface MediaStream extends EventTarget {
10344    readonly active: boolean;
10345    readonly id: string;
10346    onaddtrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
10347    onremovetrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
10348    addTrack(track: MediaStreamTrack): void;
10349    clone(): MediaStream;
10350    getAudioTracks(): MediaStreamTrack[];
10351    getTrackById(trackId: string): MediaStreamTrack | null;
10352    getTracks(): MediaStreamTrack[];
10353    getVideoTracks(): MediaStreamTrack[];
10354    removeTrack(track: MediaStreamTrack): void;
10355    addEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10356    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10357    removeEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10358    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10359}
10360
10361declare var MediaStream: {
10362    prototype: MediaStream;
10363    new(): MediaStream;
10364    new(stream: MediaStream): MediaStream;
10365    new(tracks: MediaStreamTrack[]): MediaStream;
10366};
10367
10368interface MediaStreamAudioDestinationNode extends AudioNode {
10369    readonly stream: MediaStream;
10370}
10371
10372declare var MediaStreamAudioDestinationNode: {
10373    prototype: MediaStreamAudioDestinationNode;
10374    new(context: AudioContext, options?: AudioNodeOptions): MediaStreamAudioDestinationNode;
10375};
10376
10377/** 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. */
10378interface MediaStreamAudioSourceNode extends AudioNode {
10379    readonly mediaStream: MediaStream;
10380}
10381
10382declare var MediaStreamAudioSourceNode: {
10383    prototype: MediaStreamAudioSourceNode;
10384    new(context: AudioContext, options: MediaStreamAudioSourceOptions): MediaStreamAudioSourceNode;
10385};
10386
10387interface MediaStreamError {
10388    readonly constraintName: string | null;
10389    readonly message: string | null;
10390    readonly name: string;
10391}
10392
10393declare var MediaStreamError: {
10394    prototype: MediaStreamError;
10395    new(): MediaStreamError;
10396};
10397
10398interface MediaStreamErrorEvent extends Event {
10399    readonly error: MediaStreamError | null;
10400}
10401
10402declare var MediaStreamErrorEvent: {
10403    prototype: MediaStreamErrorEvent;
10404    new(typeArg: string, eventInitDict?: MediaStreamErrorEventInit): MediaStreamErrorEvent;
10405};
10406
10407/** Events that occurs in relation to a MediaStream. Two events of this type can be thrown: addstream and removestream. */
10408interface MediaStreamEvent extends Event {
10409    readonly stream: MediaStream | null;
10410}
10411
10412declare var MediaStreamEvent: {
10413    prototype: MediaStreamEvent;
10414    new(type: string, eventInitDict: MediaStreamEventInit): MediaStreamEvent;
10415};
10416
10417interface MediaStreamTrackEventMap {
10418    "ended": Event;
10419    "isolationchange": Event;
10420    "mute": Event;
10421    "unmute": Event;
10422}
10423
10424/** A single media track within a stream; typically, these are audio or video tracks, but other track types may exist as well. */
10425interface MediaStreamTrack extends EventTarget {
10426    enabled: boolean;
10427    readonly id: string;
10428    readonly isolated: boolean;
10429    readonly kind: string;
10430    readonly label: string;
10431    readonly muted: boolean;
10432    onended: ((this: MediaStreamTrack, ev: Event) => any) | null;
10433    onisolationchange: ((this: MediaStreamTrack, ev: Event) => any) | null;
10434    onmute: ((this: MediaStreamTrack, ev: Event) => any) | null;
10435    onunmute: ((this: MediaStreamTrack, ev: Event) => any) | null;
10436    readonly readyState: MediaStreamTrackState;
10437    applyConstraints(constraints?: MediaTrackConstraints): Promise<void>;
10438    clone(): MediaStreamTrack;
10439    getCapabilities(): MediaTrackCapabilities;
10440    getConstraints(): MediaTrackConstraints;
10441    getSettings(): MediaTrackSettings;
10442    stop(): void;
10443    addEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: MediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10444    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10445    removeEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: MediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10446    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10447}
10448
10449declare var MediaStreamTrack: {
10450    prototype: MediaStreamTrack;
10451    new(): MediaStreamTrack;
10452};
10453
10454interface MediaStreamTrackAudioSourceNode extends AudioNode {
10455}
10456
10457declare var MediaStreamTrackAudioSourceNode: {
10458    prototype: MediaStreamTrackAudioSourceNode;
10459    new(context: AudioContext, options: MediaStreamTrackAudioSourceOptions): MediaStreamTrackAudioSourceNode;
10460};
10461
10462/** 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. */
10463interface MediaStreamTrackEvent extends Event {
10464    readonly track: MediaStreamTrack;
10465}
10466
10467declare var MediaStreamTrackEvent: {
10468    prototype: MediaStreamTrackEvent;
10469    new(type: string, eventInitDict: MediaStreamTrackEventInit): MediaStreamTrackEvent;
10470};
10471
10472/** This Channel Messaging API interface allows us to create a new message channel and send data through it via its two MessagePort properties. */
10473interface MessageChannel {
10474    /**
10475     * Returns the first MessagePort object.
10476     */
10477    readonly port1: MessagePort;
10478    /**
10479     * Returns the second MessagePort object.
10480     */
10481    readonly port2: MessagePort;
10482}
10483
10484declare var MessageChannel: {
10485    prototype: MessageChannel;
10486    new(): MessageChannel;
10487};
10488
10489/** A message received by a target object. */
10490interface MessageEvent<T = any> extends Event {
10491    /**
10492     * Returns the data of the message.
10493     */
10494    readonly data: T;
10495    /**
10496     * Returns the last event ID string, for server-sent events.
10497     */
10498    readonly lastEventId: string;
10499    /**
10500     * Returns the origin of the message, for server-sent events and cross-document messaging.
10501     */
10502    readonly origin: string;
10503    /**
10504     * Returns the MessagePort array sent with the message, for cross-document messaging and channel messaging.
10505     */
10506    readonly ports: ReadonlyArray<MessagePort>;
10507    /**
10508     * Returns the WindowProxy of the source window, for cross-document messaging, and the MessagePort being attached, in the connect event fired at SharedWorkerGlobalScope objects.
10509     */
10510    readonly source: MessageEventSource | null;
10511}
10512
10513declare var MessageEvent: {
10514    prototype: MessageEvent;
10515    new<T>(type: string, eventInitDict?: MessageEventInit<T>): MessageEvent<T>;
10516};
10517
10518interface MessagePortEventMap {
10519    "message": MessageEvent;
10520    "messageerror": MessageEvent;
10521}
10522
10523/** 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. */
10524interface MessagePort extends EventTarget {
10525    onmessage: ((this: MessagePort, ev: MessageEvent) => any) | null;
10526    onmessageerror: ((this: MessagePort, ev: MessageEvent) => any) | null;
10527    /**
10528     * Disconnects the port, so that it is no longer active.
10529     */
10530    close(): void;
10531    /**
10532     * 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.
10533     *
10534     * Throws a "DataCloneError" DOMException if transfer contains duplicate objects or port, or if message could not be cloned.
10535     */
10536    postMessage(message: any, transfer: Transferable[]): void;
10537    postMessage(message: any, options?: PostMessageOptions): void;
10538    /**
10539     * Begins dispatching messages received on the port.
10540     */
10541    start(): void;
10542    addEventListener<K extends keyof MessagePortEventMap>(type: K, listener: (this: MessagePort, ev: MessagePortEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10543    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10544    removeEventListener<K extends keyof MessagePortEventMap>(type: K, listener: (this: MessagePort, ev: MessagePortEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10545    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10546}
10547
10548declare var MessagePort: {
10549    prototype: MessagePort;
10550    new(): MessagePort;
10551};
10552
10553/** Provides contains information about a MIME type associated with a particular plugin. NavigatorPlugins.mimeTypes returns an array of this object. */
10554interface MimeType {
10555    /**
10556     * Returns the MIME type's description.
10557     */
10558    readonly description: string;
10559    /**
10560     * Returns the Plugin object that implements this MIME type.
10561     */
10562    readonly enabledPlugin: Plugin;
10563    /**
10564     * Returns the MIME type's typical file extensions, in a comma-separated list.
10565     */
10566    readonly suffixes: string;
10567    /**
10568     * Returns the MIME type.
10569     */
10570    readonly type: string;
10571}
10572
10573declare var MimeType: {
10574    prototype: MimeType;
10575    new(): MimeType;
10576};
10577
10578/** Returns an array of MimeType instances, each of which contains information about a supported browser plugins. This object is returned by NavigatorPlugins.mimeTypes. */
10579interface MimeTypeArray {
10580    readonly length: number;
10581    item(index: number): MimeType | null;
10582    namedItem(name: string): MimeType | null;
10583    [index: number]: MimeType;
10584}
10585
10586declare var MimeTypeArray: {
10587    prototype: MimeTypeArray;
10588    new(): MimeTypeArray;
10589};
10590
10591/** 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. */
10592interface MouseEvent extends UIEvent {
10593    readonly altKey: boolean;
10594    readonly button: number;
10595    readonly buttons: number;
10596    readonly clientX: number;
10597    readonly clientY: number;
10598    readonly ctrlKey: boolean;
10599    readonly metaKey: boolean;
10600    readonly movementX: number;
10601    readonly movementY: number;
10602    readonly offsetX: number;
10603    readonly offsetY: number;
10604    readonly pageX: number;
10605    readonly pageY: number;
10606    readonly relatedTarget: EventTarget | null;
10607    readonly screenX: number;
10608    readonly screenY: number;
10609    readonly shiftKey: boolean;
10610    readonly x: number;
10611    readonly y: number;
10612    getModifierState(keyArg: string): boolean;
10613    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;
10614}
10615
10616declare var MouseEvent: {
10617    prototype: MouseEvent;
10618    new(type: string, eventInitDict?: MouseEventInit): MouseEvent;
10619};
10620
10621/** Provides event properties that are specific to modifications to the Document Object Model (DOM) hierarchy and nodes.
10622 * @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. */
10623interface MutationEvent extends Event {
10624    readonly attrChange: number;
10625    readonly attrName: string;
10626    readonly newValue: string;
10627    readonly prevValue: string;
10628    readonly relatedNode: Node;
10629    initMutationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, relatedNodeArg: Node, prevValueArg: string, newValueArg: string, attrNameArg: string, attrChangeArg: number): void;
10630    readonly ADDITION: number;
10631    readonly MODIFICATION: number;
10632    readonly REMOVAL: number;
10633}
10634
10635declare var MutationEvent: {
10636    prototype: MutationEvent;
10637    new(): MutationEvent;
10638    readonly ADDITION: number;
10639    readonly MODIFICATION: number;
10640    readonly REMOVAL: number;
10641};
10642
10643/** 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. */
10644interface MutationObserver {
10645    /**
10646     * Stops observer from observing any mutations. Until the observe() method is used again, observer's callback will not be invoked.
10647     */
10648    disconnect(): void;
10649    /**
10650     * Instructs the user agent to observe a given target (a node) and report any mutations based on the criteria given by options (an object).
10651     *
10652     * The options argument allows for setting mutation observation options via object members.
10653     */
10654    observe(target: Node, options?: MutationObserverInit): void;
10655    /**
10656     * Empties the record queue and returns what was in there.
10657     */
10658    takeRecords(): MutationRecord[];
10659}
10660
10661declare var MutationObserver: {
10662    prototype: MutationObserver;
10663    new(callback: MutationCallback): MutationObserver;
10664};
10665
10666/** A MutationRecord represents an individual DOM mutation. It is the object that is passed to MutationObserver's callback. */
10667interface MutationRecord {
10668    /**
10669     * Return the nodes added and removed respectively.
10670     */
10671    readonly addedNodes: NodeList;
10672    /**
10673     * Returns the local name of the changed attribute, and null otherwise.
10674     */
10675    readonly attributeName: string | null;
10676    /**
10677     * Returns the namespace of the changed attribute, and null otherwise.
10678     */
10679    readonly attributeNamespace: string | null;
10680    /**
10681     * Return the previous and next sibling respectively of the added or removed nodes, and null otherwise.
10682     */
10683    readonly nextSibling: Node | null;
10684    /**
10685     * 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.
10686     */
10687    readonly oldValue: string | null;
10688    /**
10689     * Return the previous and next sibling respectively of the added or removed nodes, and null otherwise.
10690     */
10691    readonly previousSibling: Node | null;
10692    /**
10693     * Return the nodes added and removed respectively.
10694     */
10695    readonly removedNodes: NodeList;
10696    /**
10697     * 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.
10698     */
10699    readonly target: Node;
10700    /**
10701     * 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.
10702     */
10703    readonly type: MutationRecordType;
10704}
10705
10706declare var MutationRecord: {
10707    prototype: MutationRecord;
10708    new(): MutationRecord;
10709};
10710
10711/** 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. */
10712interface NamedNodeMap {
10713    readonly length: number;
10714    getNamedItem(qualifiedName: string): Attr | null;
10715    getNamedItemNS(namespace: string | null, localName: string): Attr | null;
10716    item(index: number): Attr | null;
10717    removeNamedItem(qualifiedName: string): Attr;
10718    removeNamedItemNS(namespace: string | null, localName: string): Attr;
10719    setNamedItem(attr: Attr): Attr | null;
10720    setNamedItemNS(attr: Attr): Attr | null;
10721    [index: number]: Attr;
10722}
10723
10724declare var NamedNodeMap: {
10725    prototype: NamedNodeMap;
10726    new(): NamedNodeMap;
10727};
10728
10729interface NavigationPreloadManager {
10730    disable(): Promise<void>;
10731    enable(): Promise<void>;
10732    getState(): Promise<NavigationPreloadState>;
10733    setHeaderValue(value: string): Promise<void>;
10734}
10735
10736declare var NavigationPreloadManager: {
10737    prototype: NavigationPreloadManager;
10738    new(): NavigationPreloadManager;
10739};
10740
10741/** The state and the identity of the user agent. It allows scripts to query it and to register themselves to carry on some activities. */
10742interface Navigator extends MSFileSaver, MSNavigatorDoNotTrack, NavigatorAutomationInformation, NavigatorBeacon, NavigatorConcurrentHardware, NavigatorContentUtils, NavigatorCookies, NavigatorID, NavigatorLanguage, NavigatorOnLine, NavigatorPlugins, NavigatorStorage {
10743    readonly activeVRDisplays: ReadonlyArray<VRDisplay>;
10744    readonly clipboard: Clipboard;
10745    readonly credentials: CredentialsContainer;
10746    readonly doNotTrack: string | null;
10747    readonly geolocation: Geolocation;
10748    readonly maxTouchPoints: number;
10749    readonly mediaDevices: MediaDevices;
10750    readonly msManipulationViewsEnabled: boolean;
10751    readonly msMaxTouchPoints: number;
10752    readonly msPointerEnabled: boolean;
10753    readonly permissions: Permissions;
10754    readonly pointerEnabled: boolean;
10755    readonly serviceWorker: ServiceWorkerContainer;
10756    getGamepads(): (Gamepad | null)[];
10757    getUserMedia(constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void;
10758    getVRDisplays(): Promise<VRDisplay[]>;
10759    msLaunchUri(uri: string, successCallback?: MSLaunchUriCallback, noHandlerCallback?: MSLaunchUriCallback): void;
10760    requestMediaKeySystemAccess(keySystem: string, supportedConfigurations: MediaKeySystemConfiguration[]): Promise<MediaKeySystemAccess>;
10761    sendBeacon(url: string, data?: BodyInit | null): boolean;
10762    share(data?: ShareData): Promise<void>;
10763    vibrate(pattern: number | number[]): boolean;
10764}
10765
10766declare var Navigator: {
10767    prototype: Navigator;
10768    new(): Navigator;
10769};
10770
10771interface NavigatorAutomationInformation {
10772    readonly webdriver: boolean;
10773}
10774
10775interface NavigatorBeacon {
10776    sendBeacon(url: string, data?: Blob | Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer | FormData | string | null): boolean;
10777}
10778
10779interface NavigatorConcurrentHardware {
10780    readonly hardwareConcurrency: number;
10781}
10782
10783interface NavigatorContentUtils {
10784    registerProtocolHandler(scheme: string, url: string, title: string): void;
10785    unregisterProtocolHandler(scheme: string, url: string): void;
10786}
10787
10788interface NavigatorCookies {
10789    readonly cookieEnabled: boolean;
10790}
10791
10792interface NavigatorID {
10793    readonly appCodeName: string;
10794    readonly appName: string;
10795    readonly appVersion: string;
10796    readonly platform: string;
10797    readonly product: string;
10798    readonly productSub: string;
10799    readonly userAgent: string;
10800    readonly vendor: string;
10801    readonly vendorSub: string;
10802}
10803
10804interface NavigatorLanguage {
10805    readonly language: string;
10806    readonly languages: ReadonlyArray<string>;
10807}
10808
10809interface NavigatorOnLine {
10810    readonly onLine: boolean;
10811}
10812
10813interface NavigatorPlugins {
10814    readonly mimeTypes: MimeTypeArray;
10815    readonly plugins: PluginArray;
10816    javaEnabled(): boolean;
10817}
10818
10819interface NavigatorStorage {
10820    readonly storage: StorageManager;
10821}
10822
10823/** 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. */
10824interface Node extends EventTarget {
10825    /**
10826     * Returns node's node document's document base URL.
10827     */
10828    readonly baseURI: string;
10829    /**
10830     * Returns the children.
10831     */
10832    readonly childNodes: NodeListOf<ChildNode>;
10833    /**
10834     * Returns the first child.
10835     */
10836    readonly firstChild: ChildNode | null;
10837    /**
10838     * Returns true if node is connected and false otherwise.
10839     */
10840    readonly isConnected: boolean;
10841    /**
10842     * Returns the last child.
10843     */
10844    readonly lastChild: ChildNode | null;
10845    /** @deprecated */
10846    readonly namespaceURI: string | null;
10847    /**
10848     * Returns the next sibling.
10849     */
10850    readonly nextSibling: ChildNode | null;
10851    /**
10852     * Returns a string appropriate for the type of node.
10853     */
10854    readonly nodeName: string;
10855    /**
10856     * Returns the type of node.
10857     */
10858    readonly nodeType: number;
10859    nodeValue: string | null;
10860    /**
10861     * Returns the node document. Returns null for documents.
10862     */
10863    readonly ownerDocument: Document | null;
10864    /**
10865     * Returns the parent element.
10866     */
10867    readonly parentElement: HTMLElement | null;
10868    /**
10869     * Returns the parent.
10870     */
10871    readonly parentNode: Node & ParentNode | null;
10872    /**
10873     * Returns the previous sibling.
10874     */
10875    readonly previousSibling: ChildNode | null;
10876    textContent: string | null;
10877    appendChild<T extends Node>(newChild: T): T;
10878    /**
10879     * Returns a copy of node. If deep is true, the copy also includes the node's descendants.
10880     */
10881    cloneNode(deep?: boolean): Node;
10882    /**
10883     * Returns a bitmask indicating the position of other relative to node.
10884     */
10885    compareDocumentPosition(other: Node): number;
10886    /**
10887     * Returns true if other is an inclusive descendant of node, and false otherwise.
10888     */
10889    contains(other: Node | null): boolean;
10890    /**
10891     * Returns node's root.
10892     */
10893    getRootNode(options?: GetRootNodeOptions): Node;
10894    /**
10895     * Returns whether node has children.
10896     */
10897    hasChildNodes(): boolean;
10898    insertBefore<T extends Node>(newChild: T, refChild: Node | null): T;
10899    isDefaultNamespace(namespace: string | null): boolean;
10900    /**
10901     * Returns whether node and otherNode have the same properties.
10902     */
10903    isEqualNode(otherNode: Node | null): boolean;
10904    isSameNode(otherNode: Node | null): boolean;
10905    lookupNamespaceURI(prefix: string | null): string | null;
10906    lookupPrefix(namespace: string | null): string | null;
10907    /**
10908     * Removes empty exclusive Text nodes and concatenates the data of remaining contiguous exclusive Text nodes into the first of their nodes.
10909     */
10910    normalize(): void;
10911    removeChild<T extends Node>(oldChild: T): T;
10912    replaceChild<T extends Node>(newChild: Node, oldChild: T): T;
10913    readonly ATTRIBUTE_NODE: number;
10914    /**
10915     * node is a CDATASection node.
10916     */
10917    readonly CDATA_SECTION_NODE: number;
10918    /**
10919     * node is a Comment node.
10920     */
10921    readonly COMMENT_NODE: number;
10922    /**
10923     * node is a DocumentFragment node.
10924     */
10925    readonly DOCUMENT_FRAGMENT_NODE: number;
10926    /**
10927     * node is a document.
10928     */
10929    readonly DOCUMENT_NODE: number;
10930    /**
10931     * Set when other is a descendant of node.
10932     */
10933    readonly DOCUMENT_POSITION_CONTAINED_BY: number;
10934    /**
10935     * Set when other is an ancestor of node.
10936     */
10937    readonly DOCUMENT_POSITION_CONTAINS: number;
10938    /**
10939     * Set when node and other are not in the same tree.
10940     */
10941    readonly DOCUMENT_POSITION_DISCONNECTED: number;
10942    /**
10943     * Set when other is following node.
10944     */
10945    readonly DOCUMENT_POSITION_FOLLOWING: number;
10946    readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number;
10947    /**
10948     * Set when other is preceding node.
10949     */
10950    readonly DOCUMENT_POSITION_PRECEDING: number;
10951    /**
10952     * node is a doctype.
10953     */
10954    readonly DOCUMENT_TYPE_NODE: number;
10955    /**
10956     * node is an element.
10957     */
10958    readonly ELEMENT_NODE: number;
10959    readonly ENTITY_NODE: number;
10960    readonly ENTITY_REFERENCE_NODE: number;
10961    readonly NOTATION_NODE: number;
10962    /**
10963     * node is a ProcessingInstruction node.
10964     */
10965    readonly PROCESSING_INSTRUCTION_NODE: number;
10966    /**
10967     * node is a Text node.
10968     */
10969    readonly TEXT_NODE: number;
10970}
10971
10972declare var Node: {
10973    prototype: Node;
10974    new(): Node;
10975    readonly ATTRIBUTE_NODE: number;
10976    /**
10977     * node is a CDATASection node.
10978     */
10979    readonly CDATA_SECTION_NODE: number;
10980    /**
10981     * node is a Comment node.
10982     */
10983    readonly COMMENT_NODE: number;
10984    /**
10985     * node is a DocumentFragment node.
10986     */
10987    readonly DOCUMENT_FRAGMENT_NODE: number;
10988    /**
10989     * node is a document.
10990     */
10991    readonly DOCUMENT_NODE: number;
10992    /**
10993     * Set when other is a descendant of node.
10994     */
10995    readonly DOCUMENT_POSITION_CONTAINED_BY: number;
10996    /**
10997     * Set when other is an ancestor of node.
10998     */
10999    readonly DOCUMENT_POSITION_CONTAINS: number;
11000    /**
11001     * Set when node and other are not in the same tree.
11002     */
11003    readonly DOCUMENT_POSITION_DISCONNECTED: number;
11004    /**
11005     * Set when other is following node.
11006     */
11007    readonly DOCUMENT_POSITION_FOLLOWING: number;
11008    readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number;
11009    /**
11010     * Set when other is preceding node.
11011     */
11012    readonly DOCUMENT_POSITION_PRECEDING: number;
11013    /**
11014     * node is a doctype.
11015     */
11016    readonly DOCUMENT_TYPE_NODE: number;
11017    /**
11018     * node is an element.
11019     */
11020    readonly ELEMENT_NODE: number;
11021    readonly ENTITY_NODE: number;
11022    readonly ENTITY_REFERENCE_NODE: number;
11023    readonly NOTATION_NODE: number;
11024    /**
11025     * node is a ProcessingInstruction node.
11026     */
11027    readonly PROCESSING_INSTRUCTION_NODE: number;
11028    /**
11029     * node is a Text node.
11030     */
11031    readonly TEXT_NODE: number;
11032};
11033
11034/** An object used to filter the nodes in a NodeIterator or TreeWalker. They don't know anything about the DOM or how to traverse nodes; they just know how to evaluate a single node against the provided filter. */
11035interface NodeFilter {
11036    acceptNode(node: Node): number;
11037}
11038
11039declare var NodeFilter: {
11040    readonly FILTER_ACCEPT: number;
11041    readonly FILTER_REJECT: number;
11042    readonly FILTER_SKIP: number;
11043    readonly SHOW_ALL: number;
11044    readonly SHOW_ATTRIBUTE: number;
11045    readonly SHOW_CDATA_SECTION: number;
11046    readonly SHOW_COMMENT: number;
11047    readonly SHOW_DOCUMENT: number;
11048    readonly SHOW_DOCUMENT_FRAGMENT: number;
11049    readonly SHOW_DOCUMENT_TYPE: number;
11050    readonly SHOW_ELEMENT: number;
11051    readonly SHOW_ENTITY: number;
11052    readonly SHOW_ENTITY_REFERENCE: number;
11053    readonly SHOW_NOTATION: number;
11054    readonly SHOW_PROCESSING_INSTRUCTION: number;
11055    readonly SHOW_TEXT: number;
11056};
11057
11058/** 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. */
11059interface NodeIterator {
11060    readonly filter: NodeFilter | null;
11061    readonly pointerBeforeReferenceNode: boolean;
11062    readonly referenceNode: Node;
11063    readonly root: Node;
11064    readonly whatToShow: number;
11065    detach(): void;
11066    nextNode(): Node | null;
11067    previousNode(): Node | null;
11068}
11069
11070declare var NodeIterator: {
11071    prototype: NodeIterator;
11072    new(): NodeIterator;
11073};
11074
11075/** NodeList objects are collections of nodes, usually returned by properties such as Node.childNodes and methods such as document.querySelectorAll(). */
11076interface NodeList {
11077    /**
11078     * Returns the number of nodes in the collection.
11079     */
11080    readonly length: number;
11081    /**
11082     * Returns the node with index index from the collection. The nodes are sorted in tree order.
11083     */
11084    item(index: number): Node | null;
11085    /**
11086     * Performs the specified action for each node in an list.
11087     * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the list.
11088     * @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.
11089     */
11090    forEach(callbackfn: (value: Node, key: number, parent: NodeList) => void, thisArg?: any): void;
11091    [index: number]: Node;
11092}
11093
11094declare var NodeList: {
11095    prototype: NodeList;
11096    new(): NodeList;
11097};
11098
11099interface NodeListOf<TNode extends Node> extends NodeList {
11100    item(index: number): TNode;
11101    /**
11102     * Performs the specified action for each node in an list.
11103     * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the list.
11104     * @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.
11105     */
11106    forEach(callbackfn: (value: TNode, key: number, parent: NodeListOf<TNode>) => void, thisArg?: any): void;
11107    [index: number]: TNode;
11108}
11109
11110interface NonDocumentTypeChildNode {
11111    /**
11112     * Returns the first following sibling that is an element, and null otherwise.
11113     */
11114    readonly nextElementSibling: Element | null;
11115    /**
11116     * Returns the first preceding sibling that is an element, and null otherwise.
11117     */
11118    readonly previousElementSibling: Element | null;
11119}
11120
11121interface NonElementParentNode {
11122    /**
11123     * Returns the first element within node's descendants whose ID is elementId.
11124     */
11125    getElementById(elementId: string): Element | null;
11126}
11127
11128interface NotificationEventMap {
11129    "click": Event;
11130    "close": Event;
11131    "error": Event;
11132    "show": Event;
11133}
11134
11135/** This Notifications API interface is used to configure and display desktop notifications to the user. */
11136interface Notification extends EventTarget {
11137    readonly actions: ReadonlyArray<NotificationAction>;
11138    readonly badge: string;
11139    readonly body: string;
11140    readonly data: any;
11141    readonly dir: NotificationDirection;
11142    readonly icon: string;
11143    readonly image: string;
11144    readonly lang: string;
11145    onclick: ((this: Notification, ev: Event) => any) | null;
11146    onclose: ((this: Notification, ev: Event) => any) | null;
11147    onerror: ((this: Notification, ev: Event) => any) | null;
11148    onshow: ((this: Notification, ev: Event) => any) | null;
11149    readonly renotify: boolean;
11150    readonly requireInteraction: boolean;
11151    readonly silent: boolean;
11152    readonly tag: string;
11153    readonly timestamp: number;
11154    readonly title: string;
11155    readonly vibrate: ReadonlyArray<number>;
11156    close(): void;
11157    addEventListener<K extends keyof NotificationEventMap>(type: K, listener: (this: Notification, ev: NotificationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11158    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11159    removeEventListener<K extends keyof NotificationEventMap>(type: K, listener: (this: Notification, ev: NotificationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11160    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11161}
11162
11163declare var Notification: {
11164    prototype: Notification;
11165    new(title: string, options?: NotificationOptions): Notification;
11166    readonly maxActions: number;
11167    readonly permission: NotificationPermission;
11168    requestPermission(deprecatedCallback?: NotificationPermissionCallback): Promise<NotificationPermission>;
11169};
11170
11171/** The OES_element_index_uint extension is part of the WebGL API and adds support for gl.UNSIGNED_INT types to WebGLRenderingContext.drawElements(). */
11172interface OES_element_index_uint {
11173}
11174
11175/** The OES_standard_derivatives extension is part of the WebGL API and adds the GLSL derivative functions dFdx, dFdy, and fwidth. */
11176interface OES_standard_derivatives {
11177    readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: GLenum;
11178}
11179
11180/** The OES_texture_float extension is part of the WebGL API and exposes floating-point pixel types for textures. */
11181interface OES_texture_float {
11182}
11183
11184/** The OES_texture_float_linear extension is part of the WebGL API and allows linear filtering with floating-point pixel types for textures. */
11185interface OES_texture_float_linear {
11186}
11187
11188/** 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. */
11189interface OES_texture_half_float {
11190    readonly HALF_FLOAT_OES: GLenum;
11191}
11192
11193/** 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. */
11194interface OES_texture_half_float_linear {
11195}
11196
11197interface OES_vertex_array_object {
11198    bindVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void;
11199    createVertexArrayOES(): WebGLVertexArrayObjectOES | null;
11200    deleteVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void;
11201    isVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): GLboolean;
11202    readonly VERTEX_ARRAY_BINDING_OES: GLenum;
11203}
11204
11205/** The Web Audio API OfflineAudioCompletionEvent interface represents events that occur when the processing of an OfflineAudioContext is terminated. The complete event implements this interface. */
11206interface OfflineAudioCompletionEvent extends Event {
11207    readonly renderedBuffer: AudioBuffer;
11208}
11209
11210declare var OfflineAudioCompletionEvent: {
11211    prototype: OfflineAudioCompletionEvent;
11212    new(type: string, eventInitDict: OfflineAudioCompletionEventInit): OfflineAudioCompletionEvent;
11213};
11214
11215interface OfflineAudioContextEventMap extends BaseAudioContextEventMap {
11216    "complete": OfflineAudioCompletionEvent;
11217}
11218
11219/** 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. */
11220interface OfflineAudioContext extends BaseAudioContext {
11221    readonly length: number;
11222    oncomplete: ((this: OfflineAudioContext, ev: OfflineAudioCompletionEvent) => any) | null;
11223    resume(): Promise<void>;
11224    startRendering(): Promise<AudioBuffer>;
11225    suspend(suspendTime: number): Promise<void>;
11226    addEventListener<K extends keyof OfflineAudioContextEventMap>(type: K, listener: (this: OfflineAudioContext, ev: OfflineAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11227    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11228    removeEventListener<K extends keyof OfflineAudioContextEventMap>(type: K, listener: (this: OfflineAudioContext, ev: OfflineAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11229    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11230}
11231
11232declare var OfflineAudioContext: {
11233    prototype: OfflineAudioContext;
11234    new(contextOptions: OfflineAudioContextOptions): OfflineAudioContext;
11235    new(numberOfChannels: number, length: number, sampleRate: number): OfflineAudioContext;
11236};
11237
11238interface OffscreenCanvas extends EventTarget {
11239    /**
11240     * These attributes return the dimensions of the OffscreenCanvas object's bitmap.
11241     *
11242     * They can be set, to replace the bitmap with a new, transparent black bitmap of the specified dimensions (effectively resizing it).
11243     */
11244    height: number;
11245    /**
11246     * These attributes return the dimensions of the OffscreenCanvas object's bitmap.
11247     *
11248     * They can be set, to replace the bitmap with a new, transparent black bitmap of the specified dimensions (effectively resizing it).
11249     */
11250    width: number;
11251    /**
11252     * Returns a promise that will fulfill with a new Blob object representing a file containing the image in the OffscreenCanvas object.
11253     *
11254     * The argument, if provided, is a dictionary that controls the encoding options of the image file to be created. The type field specifies the file format and has a default value of "image/png"; that type is also used if the requested type isn't supported. If the image format supports variable quality (such as "image/jpeg"), then the quality field is a number in the range 0.0 to 1.0 inclusive indicating the desired quality level for the resulting image.
11255     */
11256    convertToBlob(options?: ImageEncodeOptions): Promise<Blob>;
11257    /**
11258     * 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.
11259     *
11260     * 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]
11261     *
11262     * 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).
11263     */
11264    getContext(contextId: "2d", options?: CanvasRenderingContext2DSettings): OffscreenCanvasRenderingContext2D | null;
11265    getContext(contextId: "bitmaprenderer", options?: ImageBitmapRenderingContextSettings): ImageBitmapRenderingContext | null;
11266    getContext(contextId: "webgl", options?: WebGLContextAttributes): WebGLRenderingContext | null;
11267    getContext(contextId: "webgl2", options?: WebGLContextAttributes): WebGL2RenderingContext | null;
11268    getContext(contextId: OffscreenRenderingContextId, options?: any): OffscreenRenderingContext | null;
11269    /**
11270     * 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.
11271     */
11272    transferToImageBitmap(): ImageBitmap;
11273}
11274
11275declare var OffscreenCanvas: {
11276    prototype: OffscreenCanvas;
11277    new(width: number, height: number): OffscreenCanvas;
11278};
11279
11280interface OffscreenCanvasRenderingContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform {
11281    readonly canvas: OffscreenCanvas;
11282    commit(): void;
11283}
11284
11285declare var OffscreenCanvasRenderingContext2D: {
11286    prototype: OffscreenCanvasRenderingContext2D;
11287    new(): OffscreenCanvasRenderingContext2D;
11288};
11289
11290/** 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. */
11291interface OscillatorNode extends AudioScheduledSourceNode {
11292    readonly detune: AudioParam;
11293    readonly frequency: AudioParam;
11294    type: OscillatorType;
11295    setPeriodicWave(periodicWave: PeriodicWave): void;
11296    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: OscillatorNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11297    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11298    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: OscillatorNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11299    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11300}
11301
11302declare var OscillatorNode: {
11303    prototype: OscillatorNode;
11304    new(context: BaseAudioContext, options?: OscillatorOptions): OscillatorNode;
11305};
11306
11307interface OverconstrainedError extends Error {
11308    constraint: string;
11309}
11310
11311declare var OverconstrainedError: {
11312    prototype: OverconstrainedError;
11313    new(): OverconstrainedError;
11314};
11315
11316interface OverflowEvent extends UIEvent {
11317    readonly horizontalOverflow: boolean;
11318    readonly orient: number;
11319    readonly verticalOverflow: boolean;
11320    readonly BOTH: number;
11321    readonly HORIZONTAL: number;
11322    readonly VERTICAL: number;
11323}
11324
11325declare var OverflowEvent: {
11326    prototype: OverflowEvent;
11327    new(): OverflowEvent;
11328    readonly BOTH: number;
11329    readonly HORIZONTAL: number;
11330    readonly VERTICAL: number;
11331};
11332
11333/** The PageTransitionEvent is fired when a document is being loaded or unloaded. */
11334interface PageTransitionEvent extends Event {
11335    /**
11336     * For the pageshow event, returns false if the page is newly being loaded (and the load event will fire). Otherwise, returns true.
11337     *
11338     * 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.
11339     *
11340     * Things that can cause the page to be unsalvageable include:
11341     *
11342     * Listening for beforeunload events
11343     * Listening for unload events
11344     * Having iframes that are not salvageable
11345     * Active WebSocket objects
11346     * Aborting a Document
11347     */
11348    readonly persisted: boolean;
11349}
11350
11351declare var PageTransitionEvent: {
11352    prototype: PageTransitionEvent;
11353    new(type: string, eventInitDict?: PageTransitionEventInit): PageTransitionEvent;
11354};
11355
11356/** 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! */
11357interface PannerNode extends AudioNode {
11358    coneInnerAngle: number;
11359    coneOuterAngle: number;
11360    coneOuterGain: number;
11361    distanceModel: DistanceModelType;
11362    maxDistance: number;
11363    readonly orientationX: AudioParam;
11364    readonly orientationY: AudioParam;
11365    readonly orientationZ: AudioParam;
11366    panningModel: PanningModelType;
11367    readonly positionX: AudioParam;
11368    readonly positionY: AudioParam;
11369    readonly positionZ: AudioParam;
11370    refDistance: number;
11371    rolloffFactor: number;
11372    /** @deprecated */
11373    setOrientation(x: number, y: number, z: number): void;
11374    /** @deprecated */
11375    setPosition(x: number, y: number, z: number): void;
11376}
11377
11378declare var PannerNode: {
11379    prototype: PannerNode;
11380    new(context: BaseAudioContext, options?: PannerOptions): PannerNode;
11381};
11382
11383interface ParentNode {
11384    readonly childElementCount: number;
11385    /**
11386     * Returns the child elements.
11387     */
11388    readonly children: HTMLCollection;
11389    /**
11390     * Returns the first child that is an element, and null otherwise.
11391     */
11392    readonly firstElementChild: Element | null;
11393    /**
11394     * Returns the last child that is an element, and null otherwise.
11395     */
11396    readonly lastElementChild: Element | null;
11397    /**
11398     * Inserts nodes after the last child of node, while replacing strings in nodes with equivalent Text nodes.
11399     *
11400     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
11401     */
11402    append(...nodes: (Node | string)[]): void;
11403    /**
11404     * Inserts nodes before the first child of node, while replacing strings in nodes with equivalent Text nodes.
11405     *
11406     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
11407     */
11408    prepend(...nodes: (Node | string)[]): void;
11409    /**
11410     * Returns the first element that is a descendant of node that matches selectors.
11411     */
11412    querySelector<K extends keyof HTMLElementTagNameMap>(selectors: K): HTMLElementTagNameMap[K] | null;
11413    querySelector<K extends keyof SVGElementTagNameMap>(selectors: K): SVGElementTagNameMap[K] | null;
11414    querySelector<E extends Element = Element>(selectors: string): E | null;
11415    /**
11416     * Returns all element descendants of node that match selectors.
11417     */
11418    querySelectorAll<K extends keyof HTMLElementTagNameMap>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;
11419    querySelectorAll<K extends keyof SVGElementTagNameMap>(selectors: K): NodeListOf<SVGElementTagNameMap[K]>;
11420    querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;
11421}
11422
11423/** 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. */
11424interface Path2D extends CanvasPath {
11425    /**
11426     * Adds to the path the path given by the argument.
11427     */
11428    addPath(path: Path2D, transform?: DOMMatrix2DInit): void;
11429}
11430
11431declare var Path2D: {
11432    prototype: Path2D;
11433    new(path?: Path2D | string): Path2D;
11434};
11435
11436/** This Payment Request API interface is used to store shipping or payment address information. */
11437interface PaymentAddress {
11438    readonly addressLine: string[];
11439    readonly city: string;
11440    readonly country: string;
11441    readonly dependentLocality: string;
11442    readonly languageCode: string;
11443    readonly organization: string;
11444    readonly phone: string;
11445    readonly postalCode: string;
11446    readonly recipient: string;
11447    readonly region: string;
11448    readonly sortingCode: string;
11449    toJSON(): any;
11450}
11451
11452declare var PaymentAddress: {
11453    prototype: PaymentAddress;
11454    new(): PaymentAddress;
11455};
11456
11457interface PaymentRequestEventMap {
11458    "shippingaddresschange": Event;
11459    "shippingoptionchange": Event;
11460}
11461
11462/** 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. */
11463interface PaymentRequest extends EventTarget {
11464    readonly id: string;
11465    onshippingaddresschange: ((this: PaymentRequest, ev: Event) => any) | null;
11466    onshippingoptionchange: ((this: PaymentRequest, ev: Event) => any) | null;
11467    readonly shippingAddress: PaymentAddress | null;
11468    readonly shippingOption: string | null;
11469    readonly shippingType: PaymentShippingType | null;
11470    abort(): Promise<void>;
11471    canMakePayment(): Promise<boolean>;
11472    show(): Promise<PaymentResponse>;
11473    addEventListener<K extends keyof PaymentRequestEventMap>(type: K, listener: (this: PaymentRequest, ev: PaymentRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11474    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11475    removeEventListener<K extends keyof PaymentRequestEventMap>(type: K, listener: (this: PaymentRequest, ev: PaymentRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11476    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11477}
11478
11479declare var PaymentRequest: {
11480    prototype: PaymentRequest;
11481    new(methodData: PaymentMethodData[], details: PaymentDetailsInit, options?: PaymentOptions): PaymentRequest;
11482};
11483
11484/** This Payment Request API interface enables a web page to update the details of a PaymentRequest in response to a user action. */
11485interface PaymentRequestUpdateEvent extends Event {
11486    updateWith(detailsPromise: PaymentDetailsUpdate | Promise<PaymentDetailsUpdate>): void;
11487}
11488
11489declare var PaymentRequestUpdateEvent: {
11490    prototype: PaymentRequestUpdateEvent;
11491    new(type: string, eventInitDict?: PaymentRequestUpdateEventInit): PaymentRequestUpdateEvent;
11492};
11493
11494/** This Payment Request API interface is returned after a user selects a payment method and approves a payment request. */
11495interface PaymentResponse {
11496    readonly details: any;
11497    readonly methodName: string;
11498    readonly payerEmail: string | null;
11499    readonly payerName: string | null;
11500    readonly payerPhone: string | null;
11501    readonly requestId: string;
11502    readonly shippingAddress: PaymentAddress | null;
11503    readonly shippingOption: string | null;
11504    complete(result?: PaymentComplete): Promise<void>;
11505    toJSON(): any;
11506}
11507
11508declare var PaymentResponse: {
11509    prototype: PaymentResponse;
11510    new(): PaymentResponse;
11511};
11512
11513interface PerfWidgetExternal {
11514    readonly activeNetworkRequestCount: number;
11515    readonly averageFrameTime: number;
11516    readonly averagePaintTime: number;
11517    readonly extraInformationEnabled: boolean;
11518    readonly independentRenderingEnabled: boolean;
11519    readonly irDisablingContentString: string;
11520    readonly irStatusAvailable: boolean;
11521    readonly maxCpuSpeed: number;
11522    readonly paintRequestsPerSecond: number;
11523    readonly performanceCounter: number;
11524    readonly performanceCounterFrequency: number;
11525    addEventListener(eventType: string, callback: Function): void;
11526    getMemoryUsage(): number;
11527    getProcessCpuUsage(): number;
11528    getRecentCpuUsage(last: number | null): any;
11529    getRecentFrames(last: number | null): any;
11530    getRecentMemoryUsage(last: number | null): any;
11531    getRecentPaintRequests(last: number | null): any;
11532    removeEventListener(eventType: string, callback: Function): void;
11533    repositionWindow(x: number, y: number): void;
11534    resizeWindow(width: number, height: number): void;
11535}
11536
11537declare var PerfWidgetExternal: {
11538    prototype: PerfWidgetExternal;
11539    new(): PerfWidgetExternal;
11540};
11541
11542interface PerformanceEventMap {
11543    "resourcetimingbufferfull": Event;
11544}
11545
11546/** 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. */
11547interface Performance extends EventTarget {
11548    /** @deprecated */
11549    readonly navigation: PerformanceNavigation;
11550    onresourcetimingbufferfull: ((this: Performance, ev: Event) => any) | null;
11551    readonly timeOrigin: number;
11552    /** @deprecated */
11553    readonly timing: PerformanceTiming;
11554    clearMarks(markName?: string): void;
11555    clearMeasures(measureName?: string): void;
11556    clearResourceTimings(): void;
11557    getEntries(): PerformanceEntryList;
11558    getEntriesByName(name: string, type?: string): PerformanceEntryList;
11559    getEntriesByType(type: string): PerformanceEntryList;
11560    mark(markName: string): void;
11561    measure(measureName: string, startMark?: string, endMark?: string): void;
11562    now(): number;
11563    setResourceTimingBufferSize(maxSize: number): void;
11564    toJSON(): any;
11565    addEventListener<K extends keyof PerformanceEventMap>(type: K, listener: (this: Performance, ev: PerformanceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11566    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11567    removeEventListener<K extends keyof PerformanceEventMap>(type: K, listener: (this: Performance, ev: PerformanceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11568    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11569}
11570
11571declare var Performance: {
11572    prototype: Performance;
11573    new(): Performance;
11574};
11575
11576/** 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). */
11577interface PerformanceEntry {
11578    readonly duration: number;
11579    readonly entryType: string;
11580    readonly name: string;
11581    readonly startTime: number;
11582    toJSON(): any;
11583}
11584
11585declare var PerformanceEntry: {
11586    prototype: PerformanceEntry;
11587    new(): PerformanceEntry;
11588};
11589
11590/** 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. */
11591interface PerformanceMark extends PerformanceEntry {
11592}
11593
11594declare var PerformanceMark: {
11595    prototype: PerformanceMark;
11596    new(): PerformanceMark;
11597};
11598
11599/** 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. */
11600interface PerformanceMeasure extends PerformanceEntry {
11601}
11602
11603declare var PerformanceMeasure: {
11604    prototype: PerformanceMeasure;
11605    new(): PerformanceMeasure;
11606};
11607
11608/** The legacy PerformanceNavigation interface represents information about how the navigation to the current document was done.
11609 * @deprecated This interface is deprecated in the Navigation Timing Level 2 specification. Please use the PerformanceNavigationTiming interface instead.
11610 */
11611interface PerformanceNavigation {
11612    readonly redirectCount: number;
11613    readonly type: number;
11614    toJSON(): any;
11615    readonly TYPE_BACK_FORWARD: number;
11616    readonly TYPE_NAVIGATE: number;
11617    readonly TYPE_RELOAD: number;
11618    readonly TYPE_RESERVED: number;
11619}
11620
11621declare var PerformanceNavigation: {
11622    prototype: PerformanceNavigation;
11623    new(): PerformanceNavigation;
11624    readonly TYPE_BACK_FORWARD: number;
11625    readonly TYPE_NAVIGATE: number;
11626    readonly TYPE_RELOAD: number;
11627    readonly TYPE_RESERVED: number;
11628};
11629
11630/** 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. */
11631interface PerformanceNavigationTiming extends PerformanceResourceTiming {
11632    readonly domComplete: number;
11633    readonly domContentLoadedEventEnd: number;
11634    readonly domContentLoadedEventStart: number;
11635    readonly domInteractive: number;
11636    readonly loadEventEnd: number;
11637    readonly loadEventStart: number;
11638    readonly redirectCount: number;
11639    readonly type: NavigationType;
11640    readonly unloadEventEnd: number;
11641    readonly unloadEventStart: number;
11642    toJSON(): any;
11643}
11644
11645declare var PerformanceNavigationTiming: {
11646    prototype: PerformanceNavigationTiming;
11647    new(): PerformanceNavigationTiming;
11648};
11649
11650interface PerformanceObserver {
11651    disconnect(): void;
11652    observe(options?: PerformanceObserverInit): void;
11653    takeRecords(): PerformanceEntryList;
11654}
11655
11656declare var PerformanceObserver: {
11657    prototype: PerformanceObserver;
11658    new(callback: PerformanceObserverCallback): PerformanceObserver;
11659    readonly supportedEntryTypes: ReadonlyArray<string>;
11660};
11661
11662interface PerformanceObserverEntryList {
11663    getEntries(): PerformanceEntryList;
11664    getEntriesByName(name: string, type?: string): PerformanceEntryList;
11665    getEntriesByType(type: string): PerformanceEntryList;
11666}
11667
11668declare var PerformanceObserverEntryList: {
11669    prototype: PerformanceObserverEntryList;
11670    new(): PerformanceObserverEntryList;
11671};
11672
11673/** 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. */
11674interface PerformanceResourceTiming extends PerformanceEntry {
11675    readonly connectEnd: number;
11676    readonly connectStart: number;
11677    readonly decodedBodySize: number;
11678    readonly domainLookupEnd: number;
11679    readonly domainLookupStart: number;
11680    readonly encodedBodySize: number;
11681    readonly fetchStart: number;
11682    readonly initiatorType: string;
11683    readonly nextHopProtocol: string;
11684    readonly redirectEnd: number;
11685    readonly redirectStart: number;
11686    readonly requestStart: number;
11687    readonly responseEnd: number;
11688    readonly responseStart: number;
11689    readonly secureConnectionStart: number;
11690    readonly transferSize: number;
11691    readonly workerStart: number;
11692    toJSON(): any;
11693}
11694
11695declare var PerformanceResourceTiming: {
11696    prototype: PerformanceResourceTiming;
11697    new(): PerformanceResourceTiming;
11698};
11699
11700/** 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.
11701 * @deprecated This interface is deprecated in the Navigation Timing Level 2 specification. Please use the PerformanceNavigationTiming interface instead.
11702 */
11703interface PerformanceTiming {
11704    readonly connectEnd: number;
11705    readonly connectStart: number;
11706    readonly domComplete: number;
11707    readonly domContentLoadedEventEnd: number;
11708    readonly domContentLoadedEventStart: number;
11709    readonly domInteractive: number;
11710    readonly domLoading: number;
11711    readonly domainLookupEnd: number;
11712    readonly domainLookupStart: number;
11713    readonly fetchStart: number;
11714    readonly loadEventEnd: number;
11715    readonly loadEventStart: number;
11716    readonly navigationStart: number;
11717    readonly redirectEnd: number;
11718    readonly redirectStart: number;
11719    readonly requestStart: number;
11720    readonly responseEnd: number;
11721    readonly responseStart: number;
11722    readonly secureConnectionStart: number;
11723    readonly unloadEventEnd: number;
11724    readonly unloadEventStart: number;
11725    toJSON(): any;
11726}
11727
11728declare var PerformanceTiming: {
11729    prototype: PerformanceTiming;
11730    new(): PerformanceTiming;
11731};
11732
11733/** 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(). */
11734interface PeriodicWave {
11735}
11736
11737declare var PeriodicWave: {
11738    prototype: PeriodicWave;
11739    new(context: BaseAudioContext, options?: PeriodicWaveOptions): PeriodicWave;
11740};
11741
11742interface PermissionRequest extends DeferredPermissionRequest {
11743    readonly state: MSWebViewPermissionState;
11744    defer(): void;
11745}
11746
11747declare var PermissionRequest: {
11748    prototype: PermissionRequest;
11749    new(): PermissionRequest;
11750};
11751
11752interface PermissionRequestedEvent extends Event {
11753    readonly permissionRequest: PermissionRequest;
11754}
11755
11756declare var PermissionRequestedEvent: {
11757    prototype: PermissionRequestedEvent;
11758    new(): PermissionRequestedEvent;
11759};
11760
11761interface PermissionStatusEventMap {
11762    "change": Event;
11763}
11764
11765interface PermissionStatus extends EventTarget {
11766    onchange: ((this: PermissionStatus, ev: Event) => any) | null;
11767    readonly state: PermissionState;
11768    addEventListener<K extends keyof PermissionStatusEventMap>(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11769    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11770    removeEventListener<K extends keyof PermissionStatusEventMap>(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11771    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11772}
11773
11774declare var PermissionStatus: {
11775    prototype: PermissionStatus;
11776    new(): PermissionStatus;
11777};
11778
11779interface Permissions {
11780    query(permissionDesc: PermissionDescriptor | DevicePermissionDescriptor | MidiPermissionDescriptor | PushPermissionDescriptor): Promise<PermissionStatus>;
11781}
11782
11783declare var Permissions: {
11784    prototype: Permissions;
11785    new(): Permissions;
11786};
11787
11788/** Provides information about a browser plugin. */
11789interface Plugin {
11790    /**
11791     * Returns the plugin's description.
11792     */
11793    readonly description: string;
11794    /**
11795     * Returns the plugin library's filename, if applicable on the current platform.
11796     */
11797    readonly filename: string;
11798    /**
11799     * Returns the number of MIME types, represented by MimeType objects, supported by the plugin.
11800     */
11801    readonly length: number;
11802    /**
11803     * Returns the plugin's name.
11804     */
11805    readonly name: string;
11806    /**
11807     * Returns the specified MimeType object.
11808     */
11809    item(index: number): MimeType | null;
11810    namedItem(name: string): MimeType | null;
11811    [index: number]: MimeType;
11812}
11813
11814declare var Plugin: {
11815    prototype: Plugin;
11816    new(): Plugin;
11817};
11818
11819/** 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. */
11820interface PluginArray {
11821    readonly length: number;
11822    item(index: number): Plugin | null;
11823    namedItem(name: string): Plugin | null;
11824    refresh(reload?: boolean): void;
11825    [index: number]: Plugin;
11826}
11827
11828declare var PluginArray: {
11829    prototype: PluginArray;
11830    new(): PluginArray;
11831};
11832
11833/** 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. */
11834interface PointerEvent extends MouseEvent {
11835    readonly height: number;
11836    readonly isPrimary: boolean;
11837    readonly pointerId: number;
11838    readonly pointerType: string;
11839    readonly pressure: number;
11840    readonly tangentialPressure: number;
11841    readonly tiltX: number;
11842    readonly tiltY: number;
11843    readonly twist: number;
11844    readonly width: number;
11845    getCoalescedEvents(): PointerEvent[];
11846    getPredictedEvents(): PointerEvent[];
11847}
11848
11849declare var PointerEvent: {
11850    prototype: PointerEvent;
11851    new(type: string, eventInitDict?: PointerEventInit): PointerEvent;
11852};
11853
11854/** PopStateEvent is an event handler for the popstate event on the window. */
11855interface PopStateEvent extends Event {
11856    /**
11857     * Returns a copy of the information that was provided to pushState() or replaceState().
11858     */
11859    readonly state: any;
11860}
11861
11862declare var PopStateEvent: {
11863    prototype: PopStateEvent;
11864    new(type: string, eventInitDict?: PopStateEventInit): PopStateEvent;
11865};
11866
11867/** A processing instruction embeds application-specific instructions in XML which can be ignored by other applications that don't recognize them. */
11868interface ProcessingInstruction extends CharacterData, LinkStyle {
11869    readonly ownerDocument: Document;
11870    readonly target: string;
11871}
11872
11873declare var ProcessingInstruction: {
11874    prototype: ProcessingInstruction;
11875    new(): ProcessingInstruction;
11876};
11877
11878/** 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>). */
11879interface ProgressEvent<T extends EventTarget = EventTarget> extends Event {
11880    readonly lengthComputable: boolean;
11881    readonly loaded: number;
11882    readonly target: T | null;
11883    readonly total: number;
11884}
11885
11886declare var ProgressEvent: {
11887    prototype: ProgressEvent;
11888    new(type: string, eventInitDict?: ProgressEventInit): ProgressEvent;
11889};
11890
11891interface PromiseRejectionEvent extends Event {
11892    readonly promise: Promise<any>;
11893    readonly reason: any;
11894}
11895
11896declare var PromiseRejectionEvent: {
11897    prototype: PromiseRejectionEvent;
11898    new(type: string, eventInitDict: PromiseRejectionEventInit): PromiseRejectionEvent;
11899};
11900
11901interface PublicKeyCredential extends Credential {
11902    readonly rawId: ArrayBuffer;
11903    readonly response: AuthenticatorResponse;
11904    getClientExtensionResults(): AuthenticationExtensionsClientOutputs;
11905}
11906
11907declare var PublicKeyCredential: {
11908    prototype: PublicKeyCredential;
11909    new(): PublicKeyCredential;
11910    isUserVerifyingPlatformAuthenticatorAvailable(): Promise<boolean>;
11911};
11912
11913/** This Push API interface provides a way to receive notifications from third-party servers as well as request URLs for push notifications. */
11914interface PushManager {
11915    getSubscription(): Promise<PushSubscription | null>;
11916    permissionState(options?: PushSubscriptionOptionsInit): Promise<PushPermissionState>;
11917    subscribe(options?: PushSubscriptionOptionsInit): Promise<PushSubscription>;
11918}
11919
11920declare var PushManager: {
11921    prototype: PushManager;
11922    new(): PushManager;
11923    readonly supportedContentEncodings: ReadonlyArray<string>;
11924};
11925
11926/** This Push API interface provides a subcription's URL endpoint and allows unsubscription from a push service. */
11927interface PushSubscription {
11928    readonly endpoint: string;
11929    readonly expirationTime: number | null;
11930    readonly options: PushSubscriptionOptions;
11931    getKey(name: PushEncryptionKeyName): ArrayBuffer | null;
11932    toJSON(): PushSubscriptionJSON;
11933    unsubscribe(): Promise<boolean>;
11934}
11935
11936declare var PushSubscription: {
11937    prototype: PushSubscription;
11938    new(): PushSubscription;
11939};
11940
11941interface PushSubscriptionOptions {
11942    readonly applicationServerKey: ArrayBuffer | null;
11943    readonly userVisibleOnly: boolean;
11944}
11945
11946declare var PushSubscriptionOptions: {
11947    prototype: PushSubscriptionOptions;
11948    new(): PushSubscriptionOptions;
11949};
11950
11951interface RTCCertificate {
11952    readonly expires: number;
11953    getFingerprints(): RTCDtlsFingerprint[];
11954}
11955
11956declare var RTCCertificate: {
11957    prototype: RTCCertificate;
11958    new(): RTCCertificate;
11959    getSupportedAlgorithms(): AlgorithmIdentifier[];
11960};
11961
11962interface RTCDTMFSenderEventMap {
11963    "tonechange": RTCDTMFToneChangeEvent;
11964}
11965
11966interface RTCDTMFSender extends EventTarget {
11967    readonly canInsertDTMF: boolean;
11968    ontonechange: ((this: RTCDTMFSender, ev: RTCDTMFToneChangeEvent) => any) | null;
11969    readonly toneBuffer: string;
11970    insertDTMF(tones: string, duration?: number, interToneGap?: number): void;
11971    addEventListener<K extends keyof RTCDTMFSenderEventMap>(type: K, listener: (this: RTCDTMFSender, ev: RTCDTMFSenderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11972    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11973    removeEventListener<K extends keyof RTCDTMFSenderEventMap>(type: K, listener: (this: RTCDTMFSender, ev: RTCDTMFSenderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11974    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11975}
11976
11977declare var RTCDTMFSender: {
11978    prototype: RTCDTMFSender;
11979    new(): RTCDTMFSender;
11980};
11981
11982/** Events sent to indicate that DTMF tones have started or finished playing. This interface is used by the tonechange event. */
11983interface RTCDTMFToneChangeEvent extends Event {
11984    readonly tone: string;
11985}
11986
11987declare var RTCDTMFToneChangeEvent: {
11988    prototype: RTCDTMFToneChangeEvent;
11989    new(type: string, eventInitDict: RTCDTMFToneChangeEventInit): RTCDTMFToneChangeEvent;
11990};
11991
11992interface RTCDataChannelEventMap {
11993    "bufferedamountlow": Event;
11994    "close": Event;
11995    "error": RTCErrorEvent;
11996    "message": MessageEvent;
11997    "open": Event;
11998}
11999
12000interface RTCDataChannel extends EventTarget {
12001    binaryType: string;
12002    readonly bufferedAmount: number;
12003    bufferedAmountLowThreshold: number;
12004    readonly id: number | null;
12005    readonly label: string;
12006    readonly maxPacketLifeTime: number | null;
12007    readonly maxRetransmits: number | null;
12008    readonly negotiated: boolean;
12009    onbufferedamountlow: ((this: RTCDataChannel, ev: Event) => any) | null;
12010    onclose: ((this: RTCDataChannel, ev: Event) => any) | null;
12011    onerror: ((this: RTCDataChannel, ev: RTCErrorEvent) => any) | null;
12012    onmessage: ((this: RTCDataChannel, ev: MessageEvent) => any) | null;
12013    onopen: ((this: RTCDataChannel, ev: Event) => any) | null;
12014    readonly ordered: boolean;
12015    readonly priority: RTCPriorityType;
12016    readonly protocol: string;
12017    readonly readyState: RTCDataChannelState;
12018    close(): void;
12019    send(data: string): void;
12020    send(data: Blob): void;
12021    send(data: ArrayBuffer): void;
12022    send(data: ArrayBufferView): void;
12023    addEventListener<K extends keyof RTCDataChannelEventMap>(type: K, listener: (this: RTCDataChannel, ev: RTCDataChannelEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12024    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12025    removeEventListener<K extends keyof RTCDataChannelEventMap>(type: K, listener: (this: RTCDataChannel, ev: RTCDataChannelEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12026    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12027}
12028
12029declare var RTCDataChannel: {
12030    prototype: RTCDataChannel;
12031    new(): RTCDataChannel;
12032};
12033
12034interface RTCDataChannelEvent extends Event {
12035    readonly channel: RTCDataChannel;
12036}
12037
12038declare var RTCDataChannelEvent: {
12039    prototype: RTCDataChannelEvent;
12040    new(type: string, eventInitDict: RTCDataChannelEventInit): RTCDataChannelEvent;
12041};
12042
12043interface RTCDtlsTransportEventMap {
12044    "error": RTCErrorEvent;
12045    "statechange": Event;
12046}
12047
12048interface RTCDtlsTransport extends EventTarget {
12049    readonly iceTransport: RTCIceTransport;
12050    onerror: ((this: RTCDtlsTransport, ev: RTCErrorEvent) => any) | null;
12051    onstatechange: ((this: RTCDtlsTransport, ev: Event) => any) | null;
12052    readonly state: RTCDtlsTransportState;
12053    getRemoteCertificates(): ArrayBuffer[];
12054    addEventListener<K extends keyof RTCDtlsTransportEventMap>(type: K, listener: (this: RTCDtlsTransport, ev: RTCDtlsTransportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12055    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12056    removeEventListener<K extends keyof RTCDtlsTransportEventMap>(type: K, listener: (this: RTCDtlsTransport, ev: RTCDtlsTransportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12057    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12058}
12059
12060declare var RTCDtlsTransport: {
12061    prototype: RTCDtlsTransport;
12062    new(): RTCDtlsTransport;
12063};
12064
12065interface RTCDtlsTransportStateChangedEvent extends Event {
12066    readonly state: RTCDtlsTransportState;
12067}
12068
12069declare var RTCDtlsTransportStateChangedEvent: {
12070    prototype: RTCDtlsTransportStateChangedEvent;
12071    new(): RTCDtlsTransportStateChangedEvent;
12072};
12073
12074interface RTCDtmfSenderEventMap {
12075    "tonechange": RTCDTMFToneChangeEvent;
12076}
12077
12078interface RTCDtmfSender extends EventTarget {
12079    readonly canInsertDTMF: boolean;
12080    readonly duration: number;
12081    readonly interToneGap: number;
12082    ontonechange: ((this: RTCDtmfSender, ev: RTCDTMFToneChangeEvent) => any) | null;
12083    readonly sender: RTCRtpSender;
12084    readonly toneBuffer: string;
12085    insertDTMF(tones: string, duration?: number, interToneGap?: number): void;
12086    addEventListener<K extends keyof RTCDtmfSenderEventMap>(type: K, listener: (this: RTCDtmfSender, ev: RTCDtmfSenderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12087    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12088    removeEventListener<K extends keyof RTCDtmfSenderEventMap>(type: K, listener: (this: RTCDtmfSender, ev: RTCDtmfSenderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12089    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12090}
12091
12092declare var RTCDtmfSender: {
12093    prototype: RTCDtmfSender;
12094    new(sender: RTCRtpSender): RTCDtmfSender;
12095};
12096
12097interface RTCError extends DOMException {
12098    readonly errorDetail: RTCErrorDetailType;
12099    readonly httpRequestStatusCode: number | null;
12100    readonly receivedAlert: number | null;
12101    readonly sctpCauseCode: number | null;
12102    readonly sdpLineNumber: number | null;
12103    readonly sentAlert: number | null;
12104}
12105
12106declare var RTCError: {
12107    prototype: RTCError;
12108    new(init: RTCErrorInit, message?: string): RTCError;
12109};
12110
12111interface RTCErrorEvent extends Event {
12112    readonly error: RTCError;
12113}
12114
12115declare var RTCErrorEvent: {
12116    prototype: RTCErrorEvent;
12117    new(type: string, eventInitDict: RTCErrorEventInit): RTCErrorEvent;
12118};
12119
12120/** The RTCIceCandidate interface—part of the WebRTC API—represents a candidate Internet Connectivity Establishment (ICE) configuration which may be used to establish an RTCPeerConnection. */
12121interface RTCIceCandidate {
12122    readonly candidate: string;
12123    readonly component: RTCIceComponent | null;
12124    readonly foundation: string | null;
12125    readonly port: number | null;
12126    readonly priority: number | null;
12127    readonly protocol: RTCIceProtocol | null;
12128    readonly relatedAddress: string | null;
12129    readonly relatedPort: number | null;
12130    readonly sdpMLineIndex: number | null;
12131    readonly sdpMid: string | null;
12132    readonly tcpType: RTCIceTcpCandidateType | null;
12133    readonly type: RTCIceCandidateType | null;
12134    readonly usernameFragment: string | null;
12135    toJSON(): RTCIceCandidateInit;
12136}
12137
12138declare var RTCIceCandidate: {
12139    prototype: RTCIceCandidate;
12140    new(candidateInitDict?: RTCIceCandidateInit): RTCIceCandidate;
12141};
12142
12143interface RTCIceCandidatePairChangedEvent extends Event {
12144    readonly pair: RTCIceCandidatePair;
12145}
12146
12147declare var RTCIceCandidatePairChangedEvent: {
12148    prototype: RTCIceCandidatePairChangedEvent;
12149    new(): RTCIceCandidatePairChangedEvent;
12150};
12151
12152interface RTCIceGathererEventMap {
12153    "error": Event;
12154    "localcandidate": RTCIceGathererEvent;
12155}
12156
12157interface RTCIceGatherer extends RTCStatsProvider {
12158    readonly component: RTCIceComponent;
12159    onerror: ((this: RTCIceGatherer, ev: Event) => any) | null;
12160    onlocalcandidate: ((this: RTCIceGatherer, ev: RTCIceGathererEvent) => any) | null;
12161    createAssociatedGatherer(): RTCIceGatherer;
12162    getLocalCandidates(): RTCIceCandidateDictionary[];
12163    getLocalParameters(): RTCIceParameters;
12164    addEventListener<K extends keyof RTCIceGathererEventMap>(type: K, listener: (this: RTCIceGatherer, ev: RTCIceGathererEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12165    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12166    removeEventListener<K extends keyof RTCIceGathererEventMap>(type: K, listener: (this: RTCIceGatherer, ev: RTCIceGathererEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12167    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12168}
12169
12170declare var RTCIceGatherer: {
12171    prototype: RTCIceGatherer;
12172    new(options: RTCIceGatherOptions): RTCIceGatherer;
12173};
12174
12175interface RTCIceGathererEvent extends Event {
12176    readonly candidate: RTCIceCandidateDictionary | RTCIceCandidateComplete;
12177}
12178
12179declare var RTCIceGathererEvent: {
12180    prototype: RTCIceGathererEvent;
12181    new(): RTCIceGathererEvent;
12182};
12183
12184interface RTCIceTransportEventMap {
12185    "gatheringstatechange": Event;
12186    "selectedcandidatepairchange": Event;
12187    "statechange": Event;
12188}
12189
12190/** Provides access to information about the ICE transport layer over which the data is being sent and received. */
12191interface RTCIceTransport extends EventTarget {
12192    readonly component: RTCIceComponent;
12193    readonly gatheringState: RTCIceGathererState;
12194    ongatheringstatechange: ((this: RTCIceTransport, ev: Event) => any) | null;
12195    onselectedcandidatepairchange: ((this: RTCIceTransport, ev: Event) => any) | null;
12196    onstatechange: ((this: RTCIceTransport, ev: Event) => any) | null;
12197    readonly role: RTCIceRole;
12198    readonly state: RTCIceTransportState;
12199    getLocalCandidates(): RTCIceCandidate[];
12200    getLocalParameters(): RTCIceParameters | null;
12201    getRemoteCandidates(): RTCIceCandidate[];
12202    getRemoteParameters(): RTCIceParameters | null;
12203    getSelectedCandidatePair(): RTCIceCandidatePair | null;
12204    addEventListener<K extends keyof RTCIceTransportEventMap>(type: K, listener: (this: RTCIceTransport, ev: RTCIceTransportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12205    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12206    removeEventListener<K extends keyof RTCIceTransportEventMap>(type: K, listener: (this: RTCIceTransport, ev: RTCIceTransportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12207    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12208}
12209
12210declare var RTCIceTransport: {
12211    prototype: RTCIceTransport;
12212    new(): RTCIceTransport;
12213};
12214
12215interface RTCIceTransportStateChangedEvent extends Event {
12216    readonly state: RTCIceTransportState;
12217}
12218
12219declare var RTCIceTransportStateChangedEvent: {
12220    prototype: RTCIceTransportStateChangedEvent;
12221    new(): RTCIceTransportStateChangedEvent;
12222};
12223
12224interface RTCIdentityAssertion {
12225    idp: string;
12226    name: string;
12227}
12228
12229declare var RTCIdentityAssertion: {
12230    prototype: RTCIdentityAssertion;
12231    new(idp: string, name: string): RTCIdentityAssertion;
12232};
12233
12234interface RTCPeerConnectionEventMap {
12235    "connectionstatechange": Event;
12236    "datachannel": RTCDataChannelEvent;
12237    "icecandidate": RTCPeerConnectionIceEvent;
12238    "icecandidateerror": RTCPeerConnectionIceErrorEvent;
12239    "iceconnectionstatechange": Event;
12240    "icegatheringstatechange": Event;
12241    "negotiationneeded": Event;
12242    "signalingstatechange": Event;
12243    "statsended": RTCStatsEvent;
12244    "track": RTCTrackEvent;
12245}
12246
12247/** 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. */
12248interface RTCPeerConnection extends EventTarget {
12249    readonly canTrickleIceCandidates: boolean | null;
12250    readonly connectionState: RTCPeerConnectionState;
12251    readonly currentLocalDescription: RTCSessionDescription | null;
12252    readonly currentRemoteDescription: RTCSessionDescription | null;
12253    readonly iceConnectionState: RTCIceConnectionState;
12254    readonly iceGatheringState: RTCIceGatheringState;
12255    readonly idpErrorInfo: string | null;
12256    readonly idpLoginUrl: string | null;
12257    readonly localDescription: RTCSessionDescription | null;
12258    onconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
12259    ondatachannel: ((this: RTCPeerConnection, ev: RTCDataChannelEvent) => any) | null;
12260    onicecandidate: ((this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => any) | null;
12261    onicecandidateerror: ((this: RTCPeerConnection, ev: RTCPeerConnectionIceErrorEvent) => any) | null;
12262    oniceconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
12263    onicegatheringstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
12264    onnegotiationneeded: ((this: RTCPeerConnection, ev: Event) => any) | null;
12265    onsignalingstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
12266    onstatsended: ((this: RTCPeerConnection, ev: RTCStatsEvent) => any) | null;
12267    ontrack: ((this: RTCPeerConnection, ev: RTCTrackEvent) => any) | null;
12268    readonly peerIdentity: Promise<RTCIdentityAssertion>;
12269    readonly pendingLocalDescription: RTCSessionDescription | null;
12270    readonly pendingRemoteDescription: RTCSessionDescription | null;
12271    readonly remoteDescription: RTCSessionDescription | null;
12272    readonly sctp: RTCSctpTransport | null;
12273    readonly signalingState: RTCSignalingState;
12274    addIceCandidate(candidate: RTCIceCandidateInit | RTCIceCandidate): Promise<void>;
12275    addTrack(track: MediaStreamTrack, ...streams: MediaStream[]): RTCRtpSender;
12276    addTransceiver(trackOrKind: MediaStreamTrack | string, init?: RTCRtpTransceiverInit): RTCRtpTransceiver;
12277    close(): void;
12278    createAnswer(options?: RTCOfferOptions): Promise<RTCSessionDescriptionInit>;
12279    createDataChannel(label: string, dataChannelDict?: RTCDataChannelInit): RTCDataChannel;
12280    createOffer(options?: RTCOfferOptions): Promise<RTCSessionDescriptionInit>;
12281    getConfiguration(): RTCConfiguration;
12282    getIdentityAssertion(): Promise<string>;
12283    getReceivers(): RTCRtpReceiver[];
12284    getSenders(): RTCRtpSender[];
12285    getStats(selector?: MediaStreamTrack | null): Promise<RTCStatsReport>;
12286    getTransceivers(): RTCRtpTransceiver[];
12287    removeTrack(sender: RTCRtpSender): void;
12288    setConfiguration(configuration: RTCConfiguration): void;
12289    setIdentityProvider(provider: string, options?: RTCIdentityProviderOptions): void;
12290    setLocalDescription(description: RTCSessionDescriptionInit): Promise<void>;
12291    setRemoteDescription(description: RTCSessionDescriptionInit): Promise<void>;
12292    addEventListener<K extends keyof RTCPeerConnectionEventMap>(type: K, listener: (this: RTCPeerConnection, ev: RTCPeerConnectionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12293    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12294    removeEventListener<K extends keyof RTCPeerConnectionEventMap>(type: K, listener: (this: RTCPeerConnection, ev: RTCPeerConnectionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12295    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12296}
12297
12298declare var RTCPeerConnection: {
12299    prototype: RTCPeerConnection;
12300    new(configuration?: RTCConfiguration): RTCPeerConnection;
12301    generateCertificate(keygenAlgorithm: AlgorithmIdentifier): Promise<RTCCertificate>;
12302    getDefaultIceServers(): RTCIceServer[];
12303};
12304
12305interface RTCPeerConnectionIceErrorEvent extends Event {
12306    readonly errorCode: number;
12307    readonly errorText: string;
12308    readonly hostCandidate: string;
12309    readonly url: string;
12310}
12311
12312declare var RTCPeerConnectionIceErrorEvent: {
12313    prototype: RTCPeerConnectionIceErrorEvent;
12314    new(type: string, eventInitDict: RTCPeerConnectionIceErrorEventInit): RTCPeerConnectionIceErrorEvent;
12315};
12316
12317/** Events that occurs in relation to ICE candidates with the target, usually an RTCPeerConnection. Only one event is of this type: icecandidate. */
12318interface RTCPeerConnectionIceEvent extends Event {
12319    readonly candidate: RTCIceCandidate | null;
12320    readonly url: string | null;
12321}
12322
12323declare var RTCPeerConnectionIceEvent: {
12324    prototype: RTCPeerConnectionIceEvent;
12325    new(type: string, eventInitDict?: RTCPeerConnectionIceEventInit): RTCPeerConnectionIceEvent;
12326};
12327
12328/** This WebRTC API interface manages the reception and decoding of data for a MediaStreamTrack on an RTCPeerConnection. */
12329interface RTCRtpReceiver {
12330    readonly rtcpTransport: RTCDtlsTransport | null;
12331    readonly track: MediaStreamTrack;
12332    readonly transport: RTCDtlsTransport | null;
12333    getContributingSources(): RTCRtpContributingSource[];
12334    getParameters(): RTCRtpReceiveParameters;
12335    getStats(): Promise<RTCStatsReport>;
12336    getSynchronizationSources(): RTCRtpSynchronizationSource[];
12337}
12338
12339declare var RTCRtpReceiver: {
12340    prototype: RTCRtpReceiver;
12341    new(): RTCRtpReceiver;
12342    getCapabilities(kind: string): RTCRtpCapabilities | null;
12343};
12344
12345/** Provides the ability to control and obtain details about how a particular MediaStreamTrack is encoded and sent to a remote peer. */
12346interface RTCRtpSender {
12347    readonly dtmf: RTCDTMFSender | null;
12348    readonly rtcpTransport: RTCDtlsTransport | null;
12349    readonly track: MediaStreamTrack | null;
12350    readonly transport: RTCDtlsTransport | null;
12351    getParameters(): RTCRtpSendParameters;
12352    getStats(): Promise<RTCStatsReport>;
12353    replaceTrack(withTrack: MediaStreamTrack | null): Promise<void>;
12354    setParameters(parameters: RTCRtpSendParameters): Promise<void>;
12355    setStreams(...streams: MediaStream[]): void;
12356}
12357
12358declare var RTCRtpSender: {
12359    prototype: RTCRtpSender;
12360    new(): RTCRtpSender;
12361    getCapabilities(kind: string): RTCRtpCapabilities | null;
12362};
12363
12364interface RTCRtpTransceiver {
12365    readonly currentDirection: RTCRtpTransceiverDirection | null;
12366    direction: RTCRtpTransceiverDirection;
12367    readonly mid: string | null;
12368    readonly receiver: RTCRtpReceiver;
12369    readonly sender: RTCRtpSender;
12370    setCodecPreferences(codecs: RTCRtpCodecCapability[]): void;
12371    stop(): void;
12372}
12373
12374declare var RTCRtpTransceiver: {
12375    prototype: RTCRtpTransceiver;
12376    new(): RTCRtpTransceiver;
12377};
12378
12379interface RTCSctpTransportEventMap {
12380    "statechange": Event;
12381}
12382
12383interface RTCSctpTransport extends EventTarget {
12384    readonly maxChannels: number | null;
12385    readonly maxMessageSize: number;
12386    onstatechange: ((this: RTCSctpTransport, ev: Event) => any) | null;
12387    readonly state: RTCSctpTransportState;
12388    readonly transport: RTCDtlsTransport;
12389    addEventListener<K extends keyof RTCSctpTransportEventMap>(type: K, listener: (this: RTCSctpTransport, ev: RTCSctpTransportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12390    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12391    removeEventListener<K extends keyof RTCSctpTransportEventMap>(type: K, listener: (this: RTCSctpTransport, ev: RTCSctpTransportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12392    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12393}
12394
12395declare var RTCSctpTransport: {
12396    prototype: RTCSctpTransport;
12397    new(): RTCSctpTransport;
12398};
12399
12400/** 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. */
12401interface RTCSessionDescription {
12402    readonly sdp: string;
12403    readonly type: RTCSdpType;
12404    toJSON(): any;
12405}
12406
12407declare var RTCSessionDescription: {
12408    prototype: RTCSessionDescription;
12409    new(descriptionInitDict?: RTCSessionDescriptionInit): RTCSessionDescription;
12410};
12411
12412interface RTCSrtpSdesTransportEventMap {
12413    "error": Event;
12414}
12415
12416interface RTCSrtpSdesTransport extends EventTarget {
12417    onerror: ((this: RTCSrtpSdesTransport, ev: Event) => any) | null;
12418    readonly transport: RTCIceTransport;
12419    addEventListener<K extends keyof RTCSrtpSdesTransportEventMap>(type: K, listener: (this: RTCSrtpSdesTransport, ev: RTCSrtpSdesTransportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12420    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12421    removeEventListener<K extends keyof RTCSrtpSdesTransportEventMap>(type: K, listener: (this: RTCSrtpSdesTransport, ev: RTCSrtpSdesTransportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12422    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12423}
12424
12425declare var RTCSrtpSdesTransport: {
12426    prototype: RTCSrtpSdesTransport;
12427    new(transport: RTCIceTransport, encryptParameters: RTCSrtpSdesParameters, decryptParameters: RTCSrtpSdesParameters): RTCSrtpSdesTransport;
12428    getLocalParameters(): RTCSrtpSdesParameters[];
12429};
12430
12431interface RTCSsrcConflictEvent extends Event {
12432    readonly ssrc: number;
12433}
12434
12435declare var RTCSsrcConflictEvent: {
12436    prototype: RTCSsrcConflictEvent;
12437    new(): RTCSsrcConflictEvent;
12438};
12439
12440interface RTCStatsEvent extends Event {
12441    readonly report: RTCStatsReport;
12442}
12443
12444declare var RTCStatsEvent: {
12445    prototype: RTCStatsEvent;
12446    new(type: string, eventInitDict: RTCStatsEventInit): RTCStatsEvent;
12447};
12448
12449interface RTCStatsProvider extends EventTarget {
12450    getStats(): Promise<RTCStatsReport>;
12451    msGetStats(): Promise<RTCStatsReport>;
12452}
12453
12454declare var RTCStatsProvider: {
12455    prototype: RTCStatsProvider;
12456    new(): RTCStatsProvider;
12457};
12458
12459interface RTCStatsReport {
12460    forEach(callbackfn: (value: any, key: string, parent: RTCStatsReport) => void, thisArg?: any): void;
12461}
12462
12463declare var RTCStatsReport: {
12464    prototype: RTCStatsReport;
12465    new(): RTCStatsReport;
12466};
12467
12468interface RTCTrackEvent extends Event {
12469    readonly receiver: RTCRtpReceiver;
12470    readonly streams: ReadonlyArray<MediaStream>;
12471    readonly track: MediaStreamTrack;
12472    readonly transceiver: RTCRtpTransceiver;
12473}
12474
12475declare var RTCTrackEvent: {
12476    prototype: RTCTrackEvent;
12477    new(type: string, eventInitDict: RTCTrackEventInit): RTCTrackEvent;
12478};
12479
12480interface RadioNodeList extends NodeList {
12481    value: string;
12482}
12483
12484declare var RadioNodeList: {
12485    prototype: RadioNodeList;
12486    new(): RadioNodeList;
12487};
12488
12489interface RandomSource {
12490    getRandomValues<T extends Int8Array | Uint8ClampedArray | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array>(array: T): T;
12491}
12492
12493declare var RandomSource: {
12494    prototype: RandomSource;
12495    new(): RandomSource;
12496};
12497
12498/** A fragment of a document that can contain nodes and parts of text nodes. */
12499interface Range extends AbstractRange {
12500    /**
12501     * Returns the node, furthest away from the document, that is an ancestor of both range's start node and end node.
12502     */
12503    readonly commonAncestorContainer: Node;
12504    cloneContents(): DocumentFragment;
12505    cloneRange(): Range;
12506    collapse(toStart?: boolean): void;
12507    compareBoundaryPoints(how: number, sourceRange: Range): number;
12508    /**
12509     * 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.
12510     */
12511    comparePoint(node: Node, offset: number): number;
12512    createContextualFragment(fragment: string): DocumentFragment;
12513    deleteContents(): void;
12514    detach(): void;
12515    extractContents(): DocumentFragment;
12516    getBoundingClientRect(): DOMRect;
12517    getClientRects(): DOMRectList;
12518    insertNode(node: Node): void;
12519    /**
12520     * Returns whether range intersects node.
12521     */
12522    intersectsNode(node: Node): boolean;
12523    isPointInRange(node: Node, offset: number): boolean;
12524    selectNode(node: Node): void;
12525    selectNodeContents(node: Node): void;
12526    setEnd(node: Node, offset: number): void;
12527    setEndAfter(node: Node): void;
12528    setEndBefore(node: Node): void;
12529    setStart(node: Node, offset: number): void;
12530    setStartAfter(node: Node): void;
12531    setStartBefore(node: Node): void;
12532    surroundContents(newParent: Node): void;
12533    toString(): string;
12534    readonly END_TO_END: number;
12535    readonly END_TO_START: number;
12536    readonly START_TO_END: number;
12537    readonly START_TO_START: number;
12538}
12539
12540declare var Range: {
12541    prototype: Range;
12542    new(): Range;
12543    readonly END_TO_END: number;
12544    readonly END_TO_START: number;
12545    readonly START_TO_END: number;
12546    readonly START_TO_START: number;
12547    toString(): string;
12548};
12549
12550/** 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. */
12551interface ReadableStream<R = any> {
12552    readonly locked: boolean;
12553    cancel(reason?: any): Promise<void>;
12554    getReader(): ReadableStreamDefaultReader<R>;
12555    pipeThrough<T>(transform: ReadableWritablePair<T, R>, options?: StreamPipeOptions): ReadableStream<T>;
12556    pipeTo(dest: WritableStream<R>, options?: StreamPipeOptions): Promise<void>;
12557    tee(): [ReadableStream<R>, ReadableStream<R>];
12558}
12559
12560declare var ReadableStream: {
12561    prototype: ReadableStream;
12562    new<R = any>(underlyingSource?: UnderlyingSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;
12563};
12564
12565interface ReadableStreamDefaultController<R = any> {
12566    readonly desiredSize: number | null;
12567    close(): void;
12568    enqueue(chunk: R): void;
12569    error(e?: any): void;
12570}
12571
12572declare var ReadableStreamDefaultController: {
12573    prototype: ReadableStreamDefaultController;
12574    new(): ReadableStreamDefaultController;
12575};
12576
12577interface ReadableStreamDefaultReader<R = any> extends ReadableStreamGenericReader {
12578    read(): Promise<ReadableStreamDefaultReadResult<R>>;
12579    releaseLock(): void;
12580}
12581
12582declare var ReadableStreamDefaultReader: {
12583    prototype: ReadableStreamDefaultReader;
12584    new<R = any>(stream: ReadableStream<R>): ReadableStreamDefaultReader<R>;
12585};
12586
12587interface ReadableStreamGenericReader {
12588    readonly closed: Promise<undefined>;
12589    cancel(reason?: any): Promise<void>;
12590}
12591
12592/** This Fetch API interface represents a resource request. */
12593interface Request extends Body {
12594    /**
12595     * Returns the cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching.
12596     */
12597    readonly cache: RequestCache;
12598    /**
12599     * 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.
12600     */
12601    readonly credentials: RequestCredentials;
12602    /**
12603     * Returns the kind of resource requested by request, e.g., "document" or "script".
12604     */
12605    readonly destination: RequestDestination;
12606    /**
12607     * 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.
12608     */
12609    readonly headers: Headers;
12610    /**
12611     * 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]
12612     */
12613    readonly integrity: string;
12614    /**
12615     * Returns a boolean indicating whether or not request is for a history navigation (a.k.a. back-foward navigation).
12616     */
12617    readonly isHistoryNavigation: boolean;
12618    /**
12619     * Returns a boolean indicating whether or not request is for a reload navigation.
12620     */
12621    readonly isReloadNavigation: boolean;
12622    /**
12623     * Returns a boolean indicating whether or not request can outlive the global in which it was created.
12624     */
12625    readonly keepalive: boolean;
12626    /**
12627     * Returns request's HTTP method, which is "GET" by default.
12628     */
12629    readonly method: string;
12630    /**
12631     * 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.
12632     */
12633    readonly mode: RequestMode;
12634    /**
12635     * 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.
12636     */
12637    readonly redirect: RequestRedirect;
12638    /**
12639     * 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.
12640     */
12641    readonly referrer: string;
12642    /**
12643     * Returns the referrer policy associated with request. This is used during fetching to compute the value of the request's referrer.
12644     */
12645    readonly referrerPolicy: ReferrerPolicy;
12646    /**
12647     * Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler.
12648     */
12649    readonly signal: AbortSignal;
12650    /**
12651     * Returns the URL of request as a string.
12652     */
12653    readonly url: string;
12654    clone(): Request;
12655}
12656
12657declare var Request: {
12658    prototype: Request;
12659    new(input: RequestInfo, init?: RequestInit): Request;
12660};
12661
12662interface ResizeObserver {
12663    disconnect(): void;
12664    observe(target: Element, options?: ResizeObserverOptions): void;
12665    unobserve(target: Element): void;
12666}
12667
12668declare var ResizeObserver: {
12669    prototype: ResizeObserver;
12670    new(callback: ResizeObserverCallback): ResizeObserver;
12671};
12672
12673interface ResizeObserverEntry {
12674    readonly borderBoxSize: ReadonlyArray<ResizeObserverSize>;
12675    readonly contentBoxSize: ReadonlyArray<ResizeObserverSize>;
12676    readonly contentRect: DOMRectReadOnly;
12677    readonly target: Element;
12678}
12679
12680declare var ResizeObserverEntry: {
12681    prototype: ResizeObserverEntry;
12682    new(): ResizeObserverEntry;
12683};
12684
12685interface ResizeObserverSize {
12686    readonly blockSize: number;
12687    readonly inlineSize: number;
12688}
12689
12690declare var ResizeObserverSize: {
12691    prototype: ResizeObserverSize;
12692    new(): ResizeObserverSize;
12693};
12694
12695/** This Fetch API interface represents the response to a request. */
12696interface Response extends Body {
12697    readonly headers: Headers;
12698    readonly ok: boolean;
12699    readonly redirected: boolean;
12700    readonly status: number;
12701    readonly statusText: string;
12702    readonly trailer: Promise<Headers>;
12703    readonly type: ResponseType;
12704    readonly url: string;
12705    clone(): Response;
12706}
12707
12708declare var Response: {
12709    prototype: Response;
12710    new(body?: BodyInit | null, init?: ResponseInit): Response;
12711    error(): Response;
12712    redirect(url: string, status?: number): Response;
12713};
12714
12715/** Provides access to the properties of <a> element, as well as methods to manipulate them. */
12716interface SVGAElement extends SVGGraphicsElement, SVGURIReference {
12717    readonly target: SVGAnimatedString;
12718    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12719    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12720    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12721    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12722}
12723
12724declare var SVGAElement: {
12725    prototype: SVGAElement;
12726    new(): SVGAElement;
12727};
12728
12729/** Used to represent a value that can be an <angle> or <number> value. An SVGAngle reflected through the animVal attribute is always read only. */
12730interface SVGAngle {
12731    readonly unitType: number;
12732    value: number;
12733    valueAsString: string;
12734    valueInSpecifiedUnits: number;
12735    convertToSpecifiedUnits(unitType: number): void;
12736    newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void;
12737    readonly SVG_ANGLETYPE_DEG: number;
12738    readonly SVG_ANGLETYPE_GRAD: number;
12739    readonly SVG_ANGLETYPE_RAD: number;
12740    readonly SVG_ANGLETYPE_UNKNOWN: number;
12741    readonly SVG_ANGLETYPE_UNSPECIFIED: number;
12742}
12743
12744declare var SVGAngle: {
12745    prototype: SVGAngle;
12746    new(): SVGAngle;
12747    readonly SVG_ANGLETYPE_DEG: number;
12748    readonly SVG_ANGLETYPE_GRAD: number;
12749    readonly SVG_ANGLETYPE_RAD: number;
12750    readonly SVG_ANGLETYPE_UNKNOWN: number;
12751    readonly SVG_ANGLETYPE_UNSPECIFIED: number;
12752};
12753
12754interface SVGAnimateElement extends SVGAnimationElement {
12755    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12756    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12757    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12758    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12759}
12760
12761declare var SVGAnimateElement: {
12762    prototype: SVGAnimateElement;
12763    new(): SVGAnimateElement;
12764};
12765
12766interface SVGAnimateMotionElement extends SVGAnimationElement {
12767    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateMotionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12768    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12769    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateMotionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12770    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12771}
12772
12773declare var SVGAnimateMotionElement: {
12774    prototype: SVGAnimateMotionElement;
12775    new(): SVGAnimateMotionElement;
12776};
12777
12778interface SVGAnimateTransformElement extends SVGAnimationElement {
12779    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateTransformElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12780    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12781    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateTransformElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12782    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12783}
12784
12785declare var SVGAnimateTransformElement: {
12786    prototype: SVGAnimateTransformElement;
12787    new(): SVGAnimateTransformElement;
12788};
12789
12790/** Used for attributes of basic type <angle> which can be animated. */
12791interface SVGAnimatedAngle {
12792    readonly animVal: SVGAngle;
12793    readonly baseVal: SVGAngle;
12794}
12795
12796declare var SVGAnimatedAngle: {
12797    prototype: SVGAnimatedAngle;
12798    new(): SVGAnimatedAngle;
12799};
12800
12801/** Used for attributes of type boolean which can be animated. */
12802interface SVGAnimatedBoolean {
12803    readonly animVal: boolean;
12804    baseVal: boolean;
12805}
12806
12807declare var SVGAnimatedBoolean: {
12808    prototype: SVGAnimatedBoolean;
12809    new(): SVGAnimatedBoolean;
12810};
12811
12812/** Used for attributes whose value must be a constant from a particular enumeration and which can be animated. */
12813interface SVGAnimatedEnumeration {
12814    readonly animVal: number;
12815    baseVal: number;
12816}
12817
12818declare var SVGAnimatedEnumeration: {
12819    prototype: SVGAnimatedEnumeration;
12820    new(): SVGAnimatedEnumeration;
12821};
12822
12823/** Used for attributes of basic type <integer> which can be animated. */
12824interface SVGAnimatedInteger {
12825    readonly animVal: number;
12826    baseVal: number;
12827}
12828
12829declare var SVGAnimatedInteger: {
12830    prototype: SVGAnimatedInteger;
12831    new(): SVGAnimatedInteger;
12832};
12833
12834/** Used for attributes of basic type <length> which can be animated. */
12835interface SVGAnimatedLength {
12836    readonly animVal: SVGLength;
12837    readonly baseVal: SVGLength;
12838}
12839
12840declare var SVGAnimatedLength: {
12841    prototype: SVGAnimatedLength;
12842    new(): SVGAnimatedLength;
12843};
12844
12845/** Used for attributes of type SVGLengthList which can be animated. */
12846interface SVGAnimatedLengthList {
12847    readonly animVal: SVGLengthList;
12848    readonly baseVal: SVGLengthList;
12849}
12850
12851declare var SVGAnimatedLengthList: {
12852    prototype: SVGAnimatedLengthList;
12853    new(): SVGAnimatedLengthList;
12854};
12855
12856/** Used for attributes of basic type <Number> which can be animated. */
12857interface SVGAnimatedNumber {
12858    readonly animVal: number;
12859    baseVal: number;
12860}
12861
12862declare var SVGAnimatedNumber: {
12863    prototype: SVGAnimatedNumber;
12864    new(): SVGAnimatedNumber;
12865};
12866
12867/** The SVGAnimatedNumber interface is used for attributes which take a list of numbers and which can be animated. */
12868interface SVGAnimatedNumberList {
12869    readonly animVal: SVGNumberList;
12870    readonly baseVal: SVGNumberList;
12871}
12872
12873declare var SVGAnimatedNumberList: {
12874    prototype: SVGAnimatedNumberList;
12875    new(): SVGAnimatedNumberList;
12876};
12877
12878interface SVGAnimatedPoints {
12879    readonly animatedPoints: SVGPointList;
12880    readonly points: SVGPointList;
12881}
12882
12883/** Used for attributes of type SVGPreserveAspectRatio which can be animated. */
12884interface SVGAnimatedPreserveAspectRatio {
12885    readonly animVal: SVGPreserveAspectRatio;
12886    readonly baseVal: SVGPreserveAspectRatio;
12887}
12888
12889declare var SVGAnimatedPreserveAspectRatio: {
12890    prototype: SVGAnimatedPreserveAspectRatio;
12891    new(): SVGAnimatedPreserveAspectRatio;
12892};
12893
12894/** Used for attributes of basic SVGRect which can be animated. */
12895interface SVGAnimatedRect {
12896    readonly animVal: DOMRectReadOnly;
12897    readonly baseVal: DOMRect;
12898}
12899
12900declare var SVGAnimatedRect: {
12901    prototype: SVGAnimatedRect;
12902    new(): SVGAnimatedRect;
12903};
12904
12905/** 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. */
12906interface SVGAnimatedString {
12907    readonly animVal: string;
12908    baseVal: string;
12909}
12910
12911declare var SVGAnimatedString: {
12912    prototype: SVGAnimatedString;
12913    new(): SVGAnimatedString;
12914};
12915
12916/** Used for attributes which take a list of numbers and which can be animated. */
12917interface SVGAnimatedTransformList {
12918    readonly animVal: SVGTransformList;
12919    readonly baseVal: SVGTransformList;
12920}
12921
12922declare var SVGAnimatedTransformList: {
12923    prototype: SVGAnimatedTransformList;
12924    new(): SVGAnimatedTransformList;
12925};
12926
12927interface SVGAnimationElement extends SVGElement {
12928    readonly targetElement: SVGElement;
12929    getCurrentTime(): number;
12930    getSimpleDuration(): number;
12931    getStartTime(): number;
12932    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimationElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12933    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12934    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimationElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12935    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12936}
12937
12938declare var SVGAnimationElement: {
12939    prototype: SVGAnimationElement;
12940    new(): SVGAnimationElement;
12941};
12942
12943/** 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. */
12944interface SVGCircleElement extends SVGGeometryElement {
12945    readonly cx: SVGAnimatedLength;
12946    readonly cy: SVGAnimatedLength;
12947    readonly r: SVGAnimatedLength;
12948    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGCircleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12949    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12950    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGCircleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12951    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12952}
12953
12954declare var SVGCircleElement: {
12955    prototype: SVGCircleElement;
12956    new(): SVGCircleElement;
12957};
12958
12959/** Provides access to the properties of <clipPath> elements, as well as methods to manipulate them. */
12960interface SVGClipPathElement extends SVGElement {
12961    readonly clipPathUnits: SVGAnimatedEnumeration;
12962    readonly transform: SVGAnimatedTransformList;
12963    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGClipPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12964    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12965    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGClipPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12966    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12967}
12968
12969declare var SVGClipPathElement: {
12970    prototype: SVGClipPathElement;
12971    new(): SVGClipPathElement;
12972};
12973
12974/** A base interface used by the component transfer function interfaces. */
12975interface SVGComponentTransferFunctionElement extends SVGElement {
12976    readonly amplitude: SVGAnimatedNumber;
12977    readonly exponent: SVGAnimatedNumber;
12978    readonly intercept: SVGAnimatedNumber;
12979    readonly offset: SVGAnimatedNumber;
12980    readonly slope: SVGAnimatedNumber;
12981    readonly tableValues: SVGAnimatedNumberList;
12982    readonly type: SVGAnimatedEnumeration;
12983    readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number;
12984    readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number;
12985    readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number;
12986    readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number;
12987    readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number;
12988    readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number;
12989    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGComponentTransferFunctionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12990    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12991    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGComponentTransferFunctionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12992    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12993}
12994
12995declare var SVGComponentTransferFunctionElement: {
12996    prototype: SVGComponentTransferFunctionElement;
12997    new(): SVGComponentTransferFunctionElement;
12998    readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number;
12999    readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number;
13000    readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number;
13001    readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number;
13002    readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number;
13003    readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number;
13004};
13005
13006interface SVGCursorElement extends SVGElement {
13007    readonly x: SVGAnimatedLength;
13008    readonly y: SVGAnimatedLength;
13009    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGCursorElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13010    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13011    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGCursorElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13012    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13013}
13014
13015declare var SVGCursorElement: {
13016    prototype: SVGCursorElement;
13017    new(): SVGCursorElement;
13018};
13019
13020/** Corresponds to the <defs> element. */
13021interface SVGDefsElement extends SVGGraphicsElement {
13022    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDefsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13023    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13024    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDefsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13025    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13026}
13027
13028declare var SVGDefsElement: {
13029    prototype: SVGDefsElement;
13030    new(): SVGDefsElement;
13031};
13032
13033/** Corresponds to the <desc> element. */
13034interface SVGDescElement extends SVGElement {
13035    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDescElement, 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: SVGDescElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13038    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13039}
13040
13041declare var SVGDescElement: {
13042    prototype: SVGDescElement;
13043    new(): SVGDescElement;
13044};
13045
13046interface SVGElementEventMap extends ElementEventMap, GlobalEventHandlersEventMap, DocumentAndElementEventHandlersEventMap {
13047}
13048
13049/** All of the SVG DOM interfaces that correspond directly to elements in the SVG language derive from the SVGElement interface. */
13050interface SVGElement extends Element, DocumentAndElementEventHandlers, DocumentAndElementEventHandlers, ElementCSSInlineStyle, GlobalEventHandlers, GlobalEventHandlers, HTMLOrSVGElement, SVGElementInstance {
13051    /** @deprecated */
13052    readonly className: any;
13053    readonly ownerSVGElement: SVGSVGElement | null;
13054    readonly viewportElement: SVGElement | null;
13055    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13056    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13057    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13058    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13059}
13060
13061declare var SVGElement: {
13062    prototype: SVGElement;
13063    new(): SVGElement;
13064};
13065
13066interface SVGElementInstance extends EventTarget {
13067    readonly correspondingElement: SVGElement;
13068    readonly correspondingUseElement: SVGUseElement;
13069}
13070
13071declare var SVGElementInstance: {
13072    prototype: SVGElementInstance;
13073    new(): SVGElementInstance;
13074};
13075
13076interface SVGElementInstanceList {
13077    /** @deprecated */
13078    readonly length: number;
13079    /** @deprecated */
13080    item(index: number): SVGElementInstance;
13081}
13082
13083declare var SVGElementInstanceList: {
13084    prototype: SVGElementInstanceList;
13085    new(): SVGElementInstanceList;
13086};
13087
13088/** Provides access to the properties of <ellipse> elements. */
13089interface SVGEllipseElement extends SVGGeometryElement {
13090    readonly cx: SVGAnimatedLength;
13091    readonly cy: SVGAnimatedLength;
13092    readonly rx: SVGAnimatedLength;
13093    readonly ry: SVGAnimatedLength;
13094    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGEllipseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13095    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13096    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGEllipseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13097    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13098}
13099
13100declare var SVGEllipseElement: {
13101    prototype: SVGEllipseElement;
13102    new(): SVGEllipseElement;
13103};
13104
13105/** Corresponds to the <feBlend> element. */
13106interface SVGFEBlendElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13107    readonly in1: SVGAnimatedString;
13108    readonly in2: SVGAnimatedString;
13109    readonly mode: SVGAnimatedEnumeration;
13110    readonly SVG_FEBLEND_MODE_COLOR: number;
13111    readonly SVG_FEBLEND_MODE_COLOR_BURN: number;
13112    readonly SVG_FEBLEND_MODE_COLOR_DODGE: number;
13113    readonly SVG_FEBLEND_MODE_DARKEN: number;
13114    readonly SVG_FEBLEND_MODE_DIFFERENCE: number;
13115    readonly SVG_FEBLEND_MODE_EXCLUSION: number;
13116    readonly SVG_FEBLEND_MODE_HARD_LIGHT: number;
13117    readonly SVG_FEBLEND_MODE_HUE: number;
13118    readonly SVG_FEBLEND_MODE_LIGHTEN: number;
13119    readonly SVG_FEBLEND_MODE_LUMINOSITY: number;
13120    readonly SVG_FEBLEND_MODE_MULTIPLY: number;
13121    readonly SVG_FEBLEND_MODE_NORMAL: number;
13122    readonly SVG_FEBLEND_MODE_OVERLAY: number;
13123    readonly SVG_FEBLEND_MODE_SATURATION: number;
13124    readonly SVG_FEBLEND_MODE_SCREEN: number;
13125    readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number;
13126    readonly SVG_FEBLEND_MODE_UNKNOWN: number;
13127    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEBlendElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13128    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13129    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEBlendElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13130    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13131}
13132
13133declare var SVGFEBlendElement: {
13134    prototype: SVGFEBlendElement;
13135    new(): SVGFEBlendElement;
13136    readonly SVG_FEBLEND_MODE_COLOR: number;
13137    readonly SVG_FEBLEND_MODE_COLOR_BURN: number;
13138    readonly SVG_FEBLEND_MODE_COLOR_DODGE: number;
13139    readonly SVG_FEBLEND_MODE_DARKEN: number;
13140    readonly SVG_FEBLEND_MODE_DIFFERENCE: number;
13141    readonly SVG_FEBLEND_MODE_EXCLUSION: number;
13142    readonly SVG_FEBLEND_MODE_HARD_LIGHT: number;
13143    readonly SVG_FEBLEND_MODE_HUE: number;
13144    readonly SVG_FEBLEND_MODE_LIGHTEN: number;
13145    readonly SVG_FEBLEND_MODE_LUMINOSITY: number;
13146    readonly SVG_FEBLEND_MODE_MULTIPLY: number;
13147    readonly SVG_FEBLEND_MODE_NORMAL: number;
13148    readonly SVG_FEBLEND_MODE_OVERLAY: number;
13149    readonly SVG_FEBLEND_MODE_SATURATION: number;
13150    readonly SVG_FEBLEND_MODE_SCREEN: number;
13151    readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number;
13152    readonly SVG_FEBLEND_MODE_UNKNOWN: number;
13153};
13154
13155/** Corresponds to the <feColorMatrix> element. */
13156interface SVGFEColorMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13157    readonly in1: SVGAnimatedString;
13158    readonly type: SVGAnimatedEnumeration;
13159    readonly values: SVGAnimatedNumberList;
13160    readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number;
13161    readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number;
13162    readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number;
13163    readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number;
13164    readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number;
13165    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEColorMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13166    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13167    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEColorMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13168    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13169}
13170
13171declare var SVGFEColorMatrixElement: {
13172    prototype: SVGFEColorMatrixElement;
13173    new(): SVGFEColorMatrixElement;
13174    readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number;
13175    readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number;
13176    readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number;
13177    readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number;
13178    readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number;
13179};
13180
13181/** Corresponds to the <feComponentTransfer> element. */
13182interface SVGFEComponentTransferElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13183    readonly in1: SVGAnimatedString;
13184    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEComponentTransferElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13185    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13186    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEComponentTransferElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13187    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13188}
13189
13190declare var SVGFEComponentTransferElement: {
13191    prototype: SVGFEComponentTransferElement;
13192    new(): SVGFEComponentTransferElement;
13193};
13194
13195/** Corresponds to the <feComposite> element. */
13196interface SVGFECompositeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13197    readonly in1: SVGAnimatedString;
13198    readonly in2: SVGAnimatedString;
13199    readonly k1: SVGAnimatedNumber;
13200    readonly k2: SVGAnimatedNumber;
13201    readonly k3: SVGAnimatedNumber;
13202    readonly k4: SVGAnimatedNumber;
13203    readonly operator: SVGAnimatedEnumeration;
13204    readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number;
13205    readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number;
13206    readonly SVG_FECOMPOSITE_OPERATOR_IN: number;
13207    readonly SVG_FECOMPOSITE_OPERATOR_OUT: number;
13208    readonly SVG_FECOMPOSITE_OPERATOR_OVER: number;
13209    readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number;
13210    readonly SVG_FECOMPOSITE_OPERATOR_XOR: number;
13211    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFECompositeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13212    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13213    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFECompositeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13214    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13215}
13216
13217declare var SVGFECompositeElement: {
13218    prototype: SVGFECompositeElement;
13219    new(): SVGFECompositeElement;
13220    readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number;
13221    readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number;
13222    readonly SVG_FECOMPOSITE_OPERATOR_IN: number;
13223    readonly SVG_FECOMPOSITE_OPERATOR_OUT: number;
13224    readonly SVG_FECOMPOSITE_OPERATOR_OVER: number;
13225    readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number;
13226    readonly SVG_FECOMPOSITE_OPERATOR_XOR: number;
13227};
13228
13229/** Corresponds to the <feConvolveMatrix> element. */
13230interface SVGFEConvolveMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13231    readonly bias: SVGAnimatedNumber;
13232    readonly divisor: SVGAnimatedNumber;
13233    readonly edgeMode: SVGAnimatedEnumeration;
13234    readonly in1: SVGAnimatedString;
13235    readonly kernelMatrix: SVGAnimatedNumberList;
13236    readonly kernelUnitLengthX: SVGAnimatedNumber;
13237    readonly kernelUnitLengthY: SVGAnimatedNumber;
13238    readonly orderX: SVGAnimatedInteger;
13239    readonly orderY: SVGAnimatedInteger;
13240    readonly preserveAlpha: SVGAnimatedBoolean;
13241    readonly targetX: SVGAnimatedInteger;
13242    readonly targetY: SVGAnimatedInteger;
13243    readonly SVG_EDGEMODE_DUPLICATE: number;
13244    readonly SVG_EDGEMODE_NONE: number;
13245    readonly SVG_EDGEMODE_UNKNOWN: number;
13246    readonly SVG_EDGEMODE_WRAP: number;
13247    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEConvolveMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13248    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13249    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEConvolveMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13250    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13251}
13252
13253declare var SVGFEConvolveMatrixElement: {
13254    prototype: SVGFEConvolveMatrixElement;
13255    new(): SVGFEConvolveMatrixElement;
13256    readonly SVG_EDGEMODE_DUPLICATE: number;
13257    readonly SVG_EDGEMODE_NONE: number;
13258    readonly SVG_EDGEMODE_UNKNOWN: number;
13259    readonly SVG_EDGEMODE_WRAP: number;
13260};
13261
13262/** Corresponds to the <feDiffuseLighting> element. */
13263interface SVGFEDiffuseLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13264    readonly diffuseConstant: SVGAnimatedNumber;
13265    readonly in1: SVGAnimatedString;
13266    readonly kernelUnitLengthX: SVGAnimatedNumber;
13267    readonly kernelUnitLengthY: SVGAnimatedNumber;
13268    readonly surfaceScale: SVGAnimatedNumber;
13269    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDiffuseLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13270    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13271    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDiffuseLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13272    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13273}
13274
13275declare var SVGFEDiffuseLightingElement: {
13276    prototype: SVGFEDiffuseLightingElement;
13277    new(): SVGFEDiffuseLightingElement;
13278};
13279
13280/** Corresponds to the <feDisplacementMap> element. */
13281interface SVGFEDisplacementMapElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13282    readonly in1: SVGAnimatedString;
13283    readonly in2: SVGAnimatedString;
13284    readonly scale: SVGAnimatedNumber;
13285    readonly xChannelSelector: SVGAnimatedEnumeration;
13286    readonly yChannelSelector: SVGAnimatedEnumeration;
13287    readonly SVG_CHANNEL_A: number;
13288    readonly SVG_CHANNEL_B: number;
13289    readonly SVG_CHANNEL_G: number;
13290    readonly SVG_CHANNEL_R: number;
13291    readonly SVG_CHANNEL_UNKNOWN: number;
13292    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDisplacementMapElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13293    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13294    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDisplacementMapElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13295    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13296}
13297
13298declare var SVGFEDisplacementMapElement: {
13299    prototype: SVGFEDisplacementMapElement;
13300    new(): SVGFEDisplacementMapElement;
13301    readonly SVG_CHANNEL_A: number;
13302    readonly SVG_CHANNEL_B: number;
13303    readonly SVG_CHANNEL_G: number;
13304    readonly SVG_CHANNEL_R: number;
13305    readonly SVG_CHANNEL_UNKNOWN: number;
13306};
13307
13308/** Corresponds to the <feDistantLight> element. */
13309interface SVGFEDistantLightElement extends SVGElement {
13310    readonly azimuth: SVGAnimatedNumber;
13311    readonly elevation: SVGAnimatedNumber;
13312    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDistantLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13313    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13314    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDistantLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13315    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13316}
13317
13318declare var SVGFEDistantLightElement: {
13319    prototype: SVGFEDistantLightElement;
13320    new(): SVGFEDistantLightElement;
13321};
13322
13323interface SVGFEDropShadowElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13324    readonly dx: SVGAnimatedNumber;
13325    readonly dy: SVGAnimatedNumber;
13326    readonly in1: SVGAnimatedString;
13327    readonly stdDeviationX: SVGAnimatedNumber;
13328    readonly stdDeviationY: SVGAnimatedNumber;
13329    setStdDeviation(stdDeviationX: number, stdDeviationY: number): void;
13330    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDropShadowElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13331    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13332    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDropShadowElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13333    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13334}
13335
13336declare var SVGFEDropShadowElement: {
13337    prototype: SVGFEDropShadowElement;
13338    new(): SVGFEDropShadowElement;
13339};
13340
13341/** Corresponds to the <feFlood> element. */
13342interface SVGFEFloodElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13343    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFloodElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13344    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13345    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFloodElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13346    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13347}
13348
13349declare var SVGFEFloodElement: {
13350    prototype: SVGFEFloodElement;
13351    new(): SVGFEFloodElement;
13352};
13353
13354/** Corresponds to the <feFuncA> element. */
13355interface SVGFEFuncAElement extends SVGComponentTransferFunctionElement {
13356    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13357    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13358    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13359    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13360}
13361
13362declare var SVGFEFuncAElement: {
13363    prototype: SVGFEFuncAElement;
13364    new(): SVGFEFuncAElement;
13365};
13366
13367/** Corresponds to the <feFuncB> element. */
13368interface SVGFEFuncBElement extends SVGComponentTransferFunctionElement {
13369    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncBElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13370    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13371    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncBElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13372    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13373}
13374
13375declare var SVGFEFuncBElement: {
13376    prototype: SVGFEFuncBElement;
13377    new(): SVGFEFuncBElement;
13378};
13379
13380/** Corresponds to the <feFuncG> element. */
13381interface SVGFEFuncGElement extends SVGComponentTransferFunctionElement {
13382    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13383    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13384    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13385    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13386}
13387
13388declare var SVGFEFuncGElement: {
13389    prototype: SVGFEFuncGElement;
13390    new(): SVGFEFuncGElement;
13391};
13392
13393/** Corresponds to the <feFuncR> element. */
13394interface SVGFEFuncRElement extends SVGComponentTransferFunctionElement {
13395    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncRElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13396    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13397    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncRElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13398    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13399}
13400
13401declare var SVGFEFuncRElement: {
13402    prototype: SVGFEFuncRElement;
13403    new(): SVGFEFuncRElement;
13404};
13405
13406/** Corresponds to the <feGaussianBlur> element. */
13407interface SVGFEGaussianBlurElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13408    readonly in1: SVGAnimatedString;
13409    readonly stdDeviationX: SVGAnimatedNumber;
13410    readonly stdDeviationY: SVGAnimatedNumber;
13411    setStdDeviation(stdDeviationX: number, stdDeviationY: number): void;
13412    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEGaussianBlurElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13413    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13414    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEGaussianBlurElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13415    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13416}
13417
13418declare var SVGFEGaussianBlurElement: {
13419    prototype: SVGFEGaussianBlurElement;
13420    new(): SVGFEGaussianBlurElement;
13421};
13422
13423/** Corresponds to the <feImage> element. */
13424interface SVGFEImageElement extends SVGElement, SVGFilterPrimitiveStandardAttributes, SVGURIReference {
13425    readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio;
13426    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13427    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13428    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13429    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13430}
13431
13432declare var SVGFEImageElement: {
13433    prototype: SVGFEImageElement;
13434    new(): SVGFEImageElement;
13435};
13436
13437/** Corresponds to the <feMerge> element. */
13438interface SVGFEMergeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13439    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13440    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13441    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13442    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13443}
13444
13445declare var SVGFEMergeElement: {
13446    prototype: SVGFEMergeElement;
13447    new(): SVGFEMergeElement;
13448};
13449
13450/** Corresponds to the <feMergeNode> element. */
13451interface SVGFEMergeNodeElement extends SVGElement {
13452    readonly in1: SVGAnimatedString;
13453    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeNodeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13454    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13455    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeNodeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13456    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13457}
13458
13459declare var SVGFEMergeNodeElement: {
13460    prototype: SVGFEMergeNodeElement;
13461    new(): SVGFEMergeNodeElement;
13462};
13463
13464/** Corresponds to the <feMorphology> element. */
13465interface SVGFEMorphologyElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13466    readonly in1: SVGAnimatedString;
13467    readonly operator: SVGAnimatedEnumeration;
13468    readonly radiusX: SVGAnimatedNumber;
13469    readonly radiusY: SVGAnimatedNumber;
13470    readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number;
13471    readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number;
13472    readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number;
13473    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMorphologyElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13474    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13475    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMorphologyElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13476    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13477}
13478
13479declare var SVGFEMorphologyElement: {
13480    prototype: SVGFEMorphologyElement;
13481    new(): SVGFEMorphologyElement;
13482    readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number;
13483    readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number;
13484    readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number;
13485};
13486
13487/** Corresponds to the <feOffset> element. */
13488interface SVGFEOffsetElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13489    readonly dx: SVGAnimatedNumber;
13490    readonly dy: SVGAnimatedNumber;
13491    readonly in1: SVGAnimatedString;
13492    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEOffsetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13493    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13494    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEOffsetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13495    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13496}
13497
13498declare var SVGFEOffsetElement: {
13499    prototype: SVGFEOffsetElement;
13500    new(): SVGFEOffsetElement;
13501};
13502
13503/** Corresponds to the <fePointLight> element. */
13504interface SVGFEPointLightElement extends SVGElement {
13505    readonly x: SVGAnimatedNumber;
13506    readonly y: SVGAnimatedNumber;
13507    readonly z: SVGAnimatedNumber;
13508    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEPointLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13509    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13510    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEPointLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13511    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13512}
13513
13514declare var SVGFEPointLightElement: {
13515    prototype: SVGFEPointLightElement;
13516    new(): SVGFEPointLightElement;
13517};
13518
13519/** Corresponds to the <feSpecularLighting> element. */
13520interface SVGFESpecularLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13521    readonly in1: SVGAnimatedString;
13522    readonly kernelUnitLengthX: SVGAnimatedNumber;
13523    readonly kernelUnitLengthY: SVGAnimatedNumber;
13524    readonly specularConstant: SVGAnimatedNumber;
13525    readonly specularExponent: SVGAnimatedNumber;
13526    readonly surfaceScale: SVGAnimatedNumber;
13527    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpecularLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13528    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13529    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpecularLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13530    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13531}
13532
13533declare var SVGFESpecularLightingElement: {
13534    prototype: SVGFESpecularLightingElement;
13535    new(): SVGFESpecularLightingElement;
13536};
13537
13538/** Corresponds to the <feSpotLight> element. */
13539interface SVGFESpotLightElement extends SVGElement {
13540    readonly limitingConeAngle: SVGAnimatedNumber;
13541    readonly pointsAtX: SVGAnimatedNumber;
13542    readonly pointsAtY: SVGAnimatedNumber;
13543    readonly pointsAtZ: SVGAnimatedNumber;
13544    readonly specularExponent: SVGAnimatedNumber;
13545    readonly x: SVGAnimatedNumber;
13546    readonly y: SVGAnimatedNumber;
13547    readonly z: SVGAnimatedNumber;
13548    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpotLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13549    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13550    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpotLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13551    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13552}
13553
13554declare var SVGFESpotLightElement: {
13555    prototype: SVGFESpotLightElement;
13556    new(): SVGFESpotLightElement;
13557};
13558
13559/** Corresponds to the <feTile> element. */
13560interface SVGFETileElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13561    readonly in1: SVGAnimatedString;
13562    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETileElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13563    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13564    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETileElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13565    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13566}
13567
13568declare var SVGFETileElement: {
13569    prototype: SVGFETileElement;
13570    new(): SVGFETileElement;
13571};
13572
13573/** Corresponds to the <feTurbulence> element. */
13574interface SVGFETurbulenceElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13575    readonly baseFrequencyX: SVGAnimatedNumber;
13576    readonly baseFrequencyY: SVGAnimatedNumber;
13577    readonly numOctaves: SVGAnimatedInteger;
13578    readonly seed: SVGAnimatedNumber;
13579    readonly stitchTiles: SVGAnimatedEnumeration;
13580    readonly type: SVGAnimatedEnumeration;
13581    readonly SVG_STITCHTYPE_NOSTITCH: number;
13582    readonly SVG_STITCHTYPE_STITCH: number;
13583    readonly SVG_STITCHTYPE_UNKNOWN: number;
13584    readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number;
13585    readonly SVG_TURBULENCE_TYPE_TURBULENCE: number;
13586    readonly SVG_TURBULENCE_TYPE_UNKNOWN: number;
13587    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETurbulenceElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13588    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13589    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETurbulenceElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13590    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13591}
13592
13593declare var SVGFETurbulenceElement: {
13594    prototype: SVGFETurbulenceElement;
13595    new(): SVGFETurbulenceElement;
13596    readonly SVG_STITCHTYPE_NOSTITCH: number;
13597    readonly SVG_STITCHTYPE_STITCH: number;
13598    readonly SVG_STITCHTYPE_UNKNOWN: number;
13599    readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number;
13600    readonly SVG_TURBULENCE_TYPE_TURBULENCE: number;
13601    readonly SVG_TURBULENCE_TYPE_UNKNOWN: number;
13602};
13603
13604/** Provides access to the properties of <filter> elements, as well as methods to manipulate them. */
13605interface SVGFilterElement extends SVGElement, SVGURIReference {
13606    readonly filterUnits: SVGAnimatedEnumeration;
13607    readonly height: SVGAnimatedLength;
13608    readonly primitiveUnits: SVGAnimatedEnumeration;
13609    readonly width: SVGAnimatedLength;
13610    readonly x: SVGAnimatedLength;
13611    readonly y: SVGAnimatedLength;
13612    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFilterElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13613    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13614    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFilterElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13615    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13616}
13617
13618declare var SVGFilterElement: {
13619    prototype: SVGFilterElement;
13620    new(): SVGFilterElement;
13621};
13622
13623interface SVGFilterPrimitiveStandardAttributes {
13624    readonly height: SVGAnimatedLength;
13625    readonly result: SVGAnimatedString;
13626    readonly width: SVGAnimatedLength;
13627    readonly x: SVGAnimatedLength;
13628    readonly y: SVGAnimatedLength;
13629}
13630
13631interface SVGFitToViewBox {
13632    readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio;
13633    readonly viewBox: SVGAnimatedRect;
13634}
13635
13636/** Provides access to the properties of <foreignObject> elements, as well as methods to manipulate them. */
13637interface SVGForeignObjectElement extends SVGGraphicsElement {
13638    readonly height: SVGAnimatedLength;
13639    readonly width: SVGAnimatedLength;
13640    readonly x: SVGAnimatedLength;
13641    readonly y: SVGAnimatedLength;
13642    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGForeignObjectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13643    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13644    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGForeignObjectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13645    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13646}
13647
13648declare var SVGForeignObjectElement: {
13649    prototype: SVGForeignObjectElement;
13650    new(): SVGForeignObjectElement;
13651};
13652
13653/** Corresponds to the <g> element. */
13654interface SVGGElement extends SVGGraphicsElement {
13655    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13656    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13657    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13658    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13659}
13660
13661declare var SVGGElement: {
13662    prototype: SVGGElement;
13663    new(): SVGGElement;
13664};
13665
13666interface SVGGeometryElement extends SVGGraphicsElement {
13667    readonly pathLength: SVGAnimatedNumber;
13668    getPointAtLength(distance: number): DOMPoint;
13669    getTotalLength(): number;
13670    isPointInFill(point?: DOMPointInit): boolean;
13671    isPointInStroke(point?: DOMPointInit): boolean;
13672    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGeometryElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13673    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13674    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGeometryElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13675    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13676}
13677
13678declare var SVGGeometryElement: {
13679    prototype: SVGGeometryElement;
13680    new(): SVGGeometryElement;
13681};
13682
13683/** The SVGGradient interface is a base interface used by SVGLinearGradientElement and SVGRadialGradientElement. */
13684interface SVGGradientElement extends SVGElement, SVGURIReference {
13685    readonly gradientTransform: SVGAnimatedTransformList;
13686    readonly gradientUnits: SVGAnimatedEnumeration;
13687    readonly spreadMethod: SVGAnimatedEnumeration;
13688    readonly SVG_SPREADMETHOD_PAD: number;
13689    readonly SVG_SPREADMETHOD_REFLECT: number;
13690    readonly SVG_SPREADMETHOD_REPEAT: number;
13691    readonly SVG_SPREADMETHOD_UNKNOWN: number;
13692    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13693    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13694    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13695    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13696}
13697
13698declare var SVGGradientElement: {
13699    prototype: SVGGradientElement;
13700    new(): SVGGradientElement;
13701    readonly SVG_SPREADMETHOD_PAD: number;
13702    readonly SVG_SPREADMETHOD_REFLECT: number;
13703    readonly SVG_SPREADMETHOD_REPEAT: number;
13704    readonly SVG_SPREADMETHOD_UNKNOWN: number;
13705};
13706
13707/** SVG elements whose primary purpose is to directly render graphics into a group. */
13708interface SVGGraphicsElement extends SVGElement, SVGTests {
13709    readonly transform: SVGAnimatedTransformList;
13710    getBBox(options?: SVGBoundingBoxOptions): DOMRect;
13711    getCTM(): DOMMatrix | null;
13712    getScreenCTM(): DOMMatrix | null;
13713    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGraphicsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13714    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13715    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGraphicsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13716    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13717}
13718
13719declare var SVGGraphicsElement: {
13720    prototype: SVGGraphicsElement;
13721    new(): SVGGraphicsElement;
13722};
13723
13724/** Corresponds to the <image> element. */
13725interface SVGImageElement extends SVGGraphicsElement, SVGURIReference {
13726    readonly height: SVGAnimatedLength;
13727    readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio;
13728    readonly width: SVGAnimatedLength;
13729    readonly x: SVGAnimatedLength;
13730    readonly y: SVGAnimatedLength;
13731    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13732    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13733    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13734    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13735}
13736
13737declare var SVGImageElement: {
13738    prototype: SVGImageElement;
13739    new(): SVGImageElement;
13740};
13741
13742/** Correspond to the <length> basic data type. */
13743interface SVGLength {
13744    readonly unitType: number;
13745    value: number;
13746    valueAsString: string;
13747    valueInSpecifiedUnits: number;
13748    convertToSpecifiedUnits(unitType: number): void;
13749    newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void;
13750    readonly SVG_LENGTHTYPE_CM: number;
13751    readonly SVG_LENGTHTYPE_EMS: number;
13752    readonly SVG_LENGTHTYPE_EXS: number;
13753    readonly SVG_LENGTHTYPE_IN: number;
13754    readonly SVG_LENGTHTYPE_MM: number;
13755    readonly SVG_LENGTHTYPE_NUMBER: number;
13756    readonly SVG_LENGTHTYPE_PC: number;
13757    readonly SVG_LENGTHTYPE_PERCENTAGE: number;
13758    readonly SVG_LENGTHTYPE_PT: number;
13759    readonly SVG_LENGTHTYPE_PX: number;
13760    readonly SVG_LENGTHTYPE_UNKNOWN: number;
13761}
13762
13763declare var SVGLength: {
13764    prototype: SVGLength;
13765    new(): SVGLength;
13766    readonly SVG_LENGTHTYPE_CM: number;
13767    readonly SVG_LENGTHTYPE_EMS: number;
13768    readonly SVG_LENGTHTYPE_EXS: number;
13769    readonly SVG_LENGTHTYPE_IN: number;
13770    readonly SVG_LENGTHTYPE_MM: number;
13771    readonly SVG_LENGTHTYPE_NUMBER: number;
13772    readonly SVG_LENGTHTYPE_PC: number;
13773    readonly SVG_LENGTHTYPE_PERCENTAGE: number;
13774    readonly SVG_LENGTHTYPE_PT: number;
13775    readonly SVG_LENGTHTYPE_PX: number;
13776    readonly SVG_LENGTHTYPE_UNKNOWN: number;
13777};
13778
13779/** The SVGLengthList defines a list of SVGLength objects. */
13780interface SVGLengthList {
13781    readonly length: number;
13782    readonly numberOfItems: number;
13783    appendItem(newItem: SVGLength): SVGLength;
13784    clear(): void;
13785    getItem(index: number): SVGLength;
13786    initialize(newItem: SVGLength): SVGLength;
13787    insertItemBefore(newItem: SVGLength, index: number): SVGLength;
13788    removeItem(index: number): SVGLength;
13789    replaceItem(newItem: SVGLength, index: number): SVGLength;
13790    [index: number]: SVGLength;
13791}
13792
13793declare var SVGLengthList: {
13794    prototype: SVGLengthList;
13795    new(): SVGLengthList;
13796};
13797
13798/** Provides access to the properties of <line> elements, as well as methods to manipulate them. */
13799interface SVGLineElement extends SVGGeometryElement {
13800    readonly x1: SVGAnimatedLength;
13801    readonly x2: SVGAnimatedLength;
13802    readonly y1: SVGAnimatedLength;
13803    readonly y2: SVGAnimatedLength;
13804    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13805    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13806    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13807    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13808}
13809
13810declare var SVGLineElement: {
13811    prototype: SVGLineElement;
13812    new(): SVGLineElement;
13813};
13814
13815/** Corresponds to the <linearGradient> element. */
13816interface SVGLinearGradientElement extends SVGGradientElement {
13817    readonly x1: SVGAnimatedLength;
13818    readonly x2: SVGAnimatedLength;
13819    readonly y1: SVGAnimatedLength;
13820    readonly y2: SVGAnimatedLength;
13821    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLinearGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13822    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13823    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLinearGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13824    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13825}
13826
13827declare var SVGLinearGradientElement: {
13828    prototype: SVGLinearGradientElement;
13829    new(): SVGLinearGradientElement;
13830};
13831
13832interface SVGMarkerElement extends SVGElement, SVGFitToViewBox {
13833    readonly markerHeight: SVGAnimatedLength;
13834    readonly markerUnits: SVGAnimatedEnumeration;
13835    readonly markerWidth: SVGAnimatedLength;
13836    readonly orientAngle: SVGAnimatedAngle;
13837    readonly orientType: SVGAnimatedEnumeration;
13838    readonly refX: SVGAnimatedLength;
13839    readonly refY: SVGAnimatedLength;
13840    setOrientToAngle(angle: SVGAngle): void;
13841    setOrientToAuto(): void;
13842    readonly SVG_MARKERUNITS_STROKEWIDTH: number;
13843    readonly SVG_MARKERUNITS_UNKNOWN: number;
13844    readonly SVG_MARKERUNITS_USERSPACEONUSE: number;
13845    readonly SVG_MARKER_ORIENT_ANGLE: number;
13846    readonly SVG_MARKER_ORIENT_AUTO: number;
13847    readonly SVG_MARKER_ORIENT_UNKNOWN: number;
13848    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMarkerElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13849    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13850    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMarkerElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13851    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13852}
13853
13854declare var SVGMarkerElement: {
13855    prototype: SVGMarkerElement;
13856    new(): SVGMarkerElement;
13857    readonly SVG_MARKERUNITS_STROKEWIDTH: number;
13858    readonly SVG_MARKERUNITS_UNKNOWN: number;
13859    readonly SVG_MARKERUNITS_USERSPACEONUSE: number;
13860    readonly SVG_MARKER_ORIENT_ANGLE: number;
13861    readonly SVG_MARKER_ORIENT_AUTO: number;
13862    readonly SVG_MARKER_ORIENT_UNKNOWN: number;
13863};
13864
13865/** Provides access to the properties of <mask> elements, as well as methods to manipulate them. */
13866interface SVGMaskElement extends SVGElement {
13867    readonly height: SVGAnimatedLength;
13868    readonly maskContentUnits: SVGAnimatedEnumeration;
13869    readonly maskUnits: SVGAnimatedEnumeration;
13870    readonly width: SVGAnimatedLength;
13871    readonly x: SVGAnimatedLength;
13872    readonly y: SVGAnimatedLength;
13873    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMaskElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13874    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13875    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMaskElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13876    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13877}
13878
13879declare var SVGMaskElement: {
13880    prototype: SVGMaskElement;
13881    new(): SVGMaskElement;
13882};
13883
13884/** Corresponds to the <metadata> element. */
13885interface SVGMetadataElement extends SVGElement {
13886    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMetadataElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13887    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13888    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMetadataElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13889    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13890}
13891
13892declare var SVGMetadataElement: {
13893    prototype: SVGMetadataElement;
13894    new(): SVGMetadataElement;
13895};
13896
13897/** Corresponds to the <number> basic data type. */
13898interface SVGNumber {
13899    value: number;
13900}
13901
13902declare var SVGNumber: {
13903    prototype: SVGNumber;
13904    new(): SVGNumber;
13905};
13906
13907/** The SVGNumberList defines a list of SVGNumber objects. */
13908interface SVGNumberList {
13909    readonly length: number;
13910    readonly numberOfItems: number;
13911    appendItem(newItem: SVGNumber): SVGNumber;
13912    clear(): void;
13913    getItem(index: number): SVGNumber;
13914    initialize(newItem: SVGNumber): SVGNumber;
13915    insertItemBefore(newItem: SVGNumber, index: number): SVGNumber;
13916    removeItem(index: number): SVGNumber;
13917    replaceItem(newItem: SVGNumber, index: number): SVGNumber;
13918    [index: number]: SVGNumber;
13919}
13920
13921declare var SVGNumberList: {
13922    prototype: SVGNumberList;
13923    new(): SVGNumberList;
13924};
13925
13926/** Corresponds to the <path> element. */
13927interface SVGPathElement extends SVGGraphicsElement {
13928    /** @deprecated */
13929    readonly pathSegList: SVGPathSegList;
13930    /** @deprecated */
13931    createSVGPathSegArcAbs(x: number, y: number, r1: number, r2: number, angle: number, largeArcFlag: boolean, sweepFlag: boolean): SVGPathSegArcAbs;
13932    /** @deprecated */
13933    createSVGPathSegArcRel(x: number, y: number, r1: number, r2: number, angle: number, largeArcFlag: boolean, sweepFlag: boolean): SVGPathSegArcRel;
13934    /** @deprecated */
13935    createSVGPathSegClosePath(): SVGPathSegClosePath;
13936    /** @deprecated */
13937    createSVGPathSegCurvetoCubicAbs(x: number, y: number, x1: number, y1: number, x2: number, y2: number): SVGPathSegCurvetoCubicAbs;
13938    /** @deprecated */
13939    createSVGPathSegCurvetoCubicRel(x: number, y: number, x1: number, y1: number, x2: number, y2: number): SVGPathSegCurvetoCubicRel;
13940    /** @deprecated */
13941    createSVGPathSegCurvetoCubicSmoothAbs(x: number, y: number, x2: number, y2: number): SVGPathSegCurvetoCubicSmoothAbs;
13942    /** @deprecated */
13943    createSVGPathSegCurvetoCubicSmoothRel(x: number, y: number, x2: number, y2: number): SVGPathSegCurvetoCubicSmoothRel;
13944    /** @deprecated */
13945    createSVGPathSegCurvetoQuadraticAbs(x: number, y: number, x1: number, y1: number): SVGPathSegCurvetoQuadraticAbs;
13946    /** @deprecated */
13947    createSVGPathSegCurvetoQuadraticRel(x: number, y: number, x1: number, y1: number): SVGPathSegCurvetoQuadraticRel;
13948    /** @deprecated */
13949    createSVGPathSegCurvetoQuadraticSmoothAbs(x: number, y: number): SVGPathSegCurvetoQuadraticSmoothAbs;
13950    /** @deprecated */
13951    createSVGPathSegCurvetoQuadraticSmoothRel(x: number, y: number): SVGPathSegCurvetoQuadraticSmoothRel;
13952    /** @deprecated */
13953    createSVGPathSegLinetoAbs(x: number, y: number): SVGPathSegLinetoAbs;
13954    /** @deprecated */
13955    createSVGPathSegLinetoHorizontalAbs(x: number): SVGPathSegLinetoHorizontalAbs;
13956    /** @deprecated */
13957    createSVGPathSegLinetoHorizontalRel(x: number): SVGPathSegLinetoHorizontalRel;
13958    /** @deprecated */
13959    createSVGPathSegLinetoRel(x: number, y: number): SVGPathSegLinetoRel;
13960    /** @deprecated */
13961    createSVGPathSegLinetoVerticalAbs(y: number): SVGPathSegLinetoVerticalAbs;
13962    /** @deprecated */
13963    createSVGPathSegLinetoVerticalRel(y: number): SVGPathSegLinetoVerticalRel;
13964    /** @deprecated */
13965    createSVGPathSegMovetoAbs(x: number, y: number): SVGPathSegMovetoAbs;
13966    /** @deprecated */
13967    createSVGPathSegMovetoRel(x: number, y: number): SVGPathSegMovetoRel;
13968    /** @deprecated */
13969    getPathSegAtLength(distance: number): number;
13970    getPointAtLength(distance: number): SVGPoint;
13971    getTotalLength(): number;
13972    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13973    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13974    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13975    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13976}
13977
13978declare var SVGPathElement: {
13979    prototype: SVGPathElement;
13980    new(): SVGPathElement;
13981};
13982
13983interface SVGPathSeg {
13984    readonly pathSegType: number;
13985    readonly pathSegTypeAsLetter: string;
13986    readonly PATHSEG_ARC_ABS: number;
13987    readonly PATHSEG_ARC_REL: number;
13988    readonly PATHSEG_CLOSEPATH: number;
13989    readonly PATHSEG_CURVETO_CUBIC_ABS: number;
13990    readonly PATHSEG_CURVETO_CUBIC_REL: number;
13991    readonly PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number;
13992    readonly PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number;
13993    readonly PATHSEG_CURVETO_QUADRATIC_ABS: number;
13994    readonly PATHSEG_CURVETO_QUADRATIC_REL: number;
13995    readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number;
13996    readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number;
13997    readonly PATHSEG_LINETO_ABS: number;
13998    readonly PATHSEG_LINETO_HORIZONTAL_ABS: number;
13999    readonly PATHSEG_LINETO_HORIZONTAL_REL: number;
14000    readonly PATHSEG_LINETO_REL: number;
14001    readonly PATHSEG_LINETO_VERTICAL_ABS: number;
14002    readonly PATHSEG_LINETO_VERTICAL_REL: number;
14003    readonly PATHSEG_MOVETO_ABS: number;
14004    readonly PATHSEG_MOVETO_REL: number;
14005    readonly PATHSEG_UNKNOWN: number;
14006}
14007
14008declare var SVGPathSeg: {
14009    prototype: SVGPathSeg;
14010    new(): SVGPathSeg;
14011    readonly PATHSEG_ARC_ABS: number;
14012    readonly PATHSEG_ARC_REL: number;
14013    readonly PATHSEG_CLOSEPATH: number;
14014    readonly PATHSEG_CURVETO_CUBIC_ABS: number;
14015    readonly PATHSEG_CURVETO_CUBIC_REL: number;
14016    readonly PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number;
14017    readonly PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number;
14018    readonly PATHSEG_CURVETO_QUADRATIC_ABS: number;
14019    readonly PATHSEG_CURVETO_QUADRATIC_REL: number;
14020    readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number;
14021    readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number;
14022    readonly PATHSEG_LINETO_ABS: number;
14023    readonly PATHSEG_LINETO_HORIZONTAL_ABS: number;
14024    readonly PATHSEG_LINETO_HORIZONTAL_REL: number;
14025    readonly PATHSEG_LINETO_REL: number;
14026    readonly PATHSEG_LINETO_VERTICAL_ABS: number;
14027    readonly PATHSEG_LINETO_VERTICAL_REL: number;
14028    readonly PATHSEG_MOVETO_ABS: number;
14029    readonly PATHSEG_MOVETO_REL: number;
14030    readonly PATHSEG_UNKNOWN: number;
14031};
14032
14033interface SVGPathSegArcAbs extends SVGPathSeg {
14034    angle: number;
14035    largeArcFlag: boolean;
14036    r1: number;
14037    r2: number;
14038    sweepFlag: boolean;
14039    x: number;
14040    y: number;
14041}
14042
14043declare var SVGPathSegArcAbs: {
14044    prototype: SVGPathSegArcAbs;
14045    new(): SVGPathSegArcAbs;
14046};
14047
14048interface SVGPathSegArcRel extends SVGPathSeg {
14049    angle: number;
14050    largeArcFlag: boolean;
14051    r1: number;
14052    r2: number;
14053    sweepFlag: boolean;
14054    x: number;
14055    y: number;
14056}
14057
14058declare var SVGPathSegArcRel: {
14059    prototype: SVGPathSegArcRel;
14060    new(): SVGPathSegArcRel;
14061};
14062
14063interface SVGPathSegClosePath extends SVGPathSeg {
14064}
14065
14066declare var SVGPathSegClosePath: {
14067    prototype: SVGPathSegClosePath;
14068    new(): SVGPathSegClosePath;
14069};
14070
14071interface SVGPathSegCurvetoCubicAbs extends SVGPathSeg {
14072    x: number;
14073    x1: number;
14074    x2: number;
14075    y: number;
14076    y1: number;
14077    y2: number;
14078}
14079
14080declare var SVGPathSegCurvetoCubicAbs: {
14081    prototype: SVGPathSegCurvetoCubicAbs;
14082    new(): SVGPathSegCurvetoCubicAbs;
14083};
14084
14085interface SVGPathSegCurvetoCubicRel extends SVGPathSeg {
14086    x: number;
14087    x1: number;
14088    x2: number;
14089    y: number;
14090    y1: number;
14091    y2: number;
14092}
14093
14094declare var SVGPathSegCurvetoCubicRel: {
14095    prototype: SVGPathSegCurvetoCubicRel;
14096    new(): SVGPathSegCurvetoCubicRel;
14097};
14098
14099interface SVGPathSegCurvetoCubicSmoothAbs extends SVGPathSeg {
14100    x: number;
14101    x2: number;
14102    y: number;
14103    y2: number;
14104}
14105
14106declare var SVGPathSegCurvetoCubicSmoothAbs: {
14107    prototype: SVGPathSegCurvetoCubicSmoothAbs;
14108    new(): SVGPathSegCurvetoCubicSmoothAbs;
14109};
14110
14111interface SVGPathSegCurvetoCubicSmoothRel extends SVGPathSeg {
14112    x: number;
14113    x2: number;
14114    y: number;
14115    y2: number;
14116}
14117
14118declare var SVGPathSegCurvetoCubicSmoothRel: {
14119    prototype: SVGPathSegCurvetoCubicSmoothRel;
14120    new(): SVGPathSegCurvetoCubicSmoothRel;
14121};
14122
14123interface SVGPathSegCurvetoQuadraticAbs extends SVGPathSeg {
14124    x: number;
14125    x1: number;
14126    y: number;
14127    y1: number;
14128}
14129
14130declare var SVGPathSegCurvetoQuadraticAbs: {
14131    prototype: SVGPathSegCurvetoQuadraticAbs;
14132    new(): SVGPathSegCurvetoQuadraticAbs;
14133};
14134
14135interface SVGPathSegCurvetoQuadraticRel extends SVGPathSeg {
14136    x: number;
14137    x1: number;
14138    y: number;
14139    y1: number;
14140}
14141
14142declare var SVGPathSegCurvetoQuadraticRel: {
14143    prototype: SVGPathSegCurvetoQuadraticRel;
14144    new(): SVGPathSegCurvetoQuadraticRel;
14145};
14146
14147interface SVGPathSegCurvetoQuadraticSmoothAbs extends SVGPathSeg {
14148    x: number;
14149    y: number;
14150}
14151
14152declare var SVGPathSegCurvetoQuadraticSmoothAbs: {
14153    prototype: SVGPathSegCurvetoQuadraticSmoothAbs;
14154    new(): SVGPathSegCurvetoQuadraticSmoothAbs;
14155};
14156
14157interface SVGPathSegCurvetoQuadraticSmoothRel extends SVGPathSeg {
14158    x: number;
14159    y: number;
14160}
14161
14162declare var SVGPathSegCurvetoQuadraticSmoothRel: {
14163    prototype: SVGPathSegCurvetoQuadraticSmoothRel;
14164    new(): SVGPathSegCurvetoQuadraticSmoothRel;
14165};
14166
14167interface SVGPathSegLinetoAbs extends SVGPathSeg {
14168    x: number;
14169    y: number;
14170}
14171
14172declare var SVGPathSegLinetoAbs: {
14173    prototype: SVGPathSegLinetoAbs;
14174    new(): SVGPathSegLinetoAbs;
14175};
14176
14177interface SVGPathSegLinetoHorizontalAbs extends SVGPathSeg {
14178    x: number;
14179}
14180
14181declare var SVGPathSegLinetoHorizontalAbs: {
14182    prototype: SVGPathSegLinetoHorizontalAbs;
14183    new(): SVGPathSegLinetoHorizontalAbs;
14184};
14185
14186interface SVGPathSegLinetoHorizontalRel extends SVGPathSeg {
14187    x: number;
14188}
14189
14190declare var SVGPathSegLinetoHorizontalRel: {
14191    prototype: SVGPathSegLinetoHorizontalRel;
14192    new(): SVGPathSegLinetoHorizontalRel;
14193};
14194
14195interface SVGPathSegLinetoRel extends SVGPathSeg {
14196    x: number;
14197    y: number;
14198}
14199
14200declare var SVGPathSegLinetoRel: {
14201    prototype: SVGPathSegLinetoRel;
14202    new(): SVGPathSegLinetoRel;
14203};
14204
14205interface SVGPathSegLinetoVerticalAbs extends SVGPathSeg {
14206    y: number;
14207}
14208
14209declare var SVGPathSegLinetoVerticalAbs: {
14210    prototype: SVGPathSegLinetoVerticalAbs;
14211    new(): SVGPathSegLinetoVerticalAbs;
14212};
14213
14214interface SVGPathSegLinetoVerticalRel extends SVGPathSeg {
14215    y: number;
14216}
14217
14218declare var SVGPathSegLinetoVerticalRel: {
14219    prototype: SVGPathSegLinetoVerticalRel;
14220    new(): SVGPathSegLinetoVerticalRel;
14221};
14222
14223interface SVGPathSegList {
14224    readonly numberOfItems: number;
14225    appendItem(newItem: SVGPathSeg): SVGPathSeg;
14226    clear(): void;
14227    getItem(index: number): SVGPathSeg;
14228    initialize(newItem: SVGPathSeg): SVGPathSeg;
14229    insertItemBefore(newItem: SVGPathSeg, index: number): SVGPathSeg;
14230    removeItem(index: number): SVGPathSeg;
14231    replaceItem(newItem: SVGPathSeg, index: number): SVGPathSeg;
14232}
14233
14234declare var SVGPathSegList: {
14235    prototype: SVGPathSegList;
14236    new(): SVGPathSegList;
14237};
14238
14239interface SVGPathSegMovetoAbs extends SVGPathSeg {
14240    x: number;
14241    y: number;
14242}
14243
14244declare var SVGPathSegMovetoAbs: {
14245    prototype: SVGPathSegMovetoAbs;
14246    new(): SVGPathSegMovetoAbs;
14247};
14248
14249interface SVGPathSegMovetoRel extends SVGPathSeg {
14250    x: number;
14251    y: number;
14252}
14253
14254declare var SVGPathSegMovetoRel: {
14255    prototype: SVGPathSegMovetoRel;
14256    new(): SVGPathSegMovetoRel;
14257};
14258
14259/** Corresponds to the <pattern> element. */
14260interface SVGPatternElement extends SVGElement, SVGFitToViewBox, SVGURIReference {
14261    readonly height: SVGAnimatedLength;
14262    readonly patternContentUnits: SVGAnimatedEnumeration;
14263    readonly patternTransform: SVGAnimatedTransformList;
14264    readonly patternUnits: SVGAnimatedEnumeration;
14265    readonly width: SVGAnimatedLength;
14266    readonly x: SVGAnimatedLength;
14267    readonly y: SVGAnimatedLength;
14268    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPatternElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14269    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14270    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPatternElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14271    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14272}
14273
14274declare var SVGPatternElement: {
14275    prototype: SVGPatternElement;
14276    new(): SVGPatternElement;
14277};
14278
14279interface SVGPointList {
14280    readonly length: number;
14281    readonly numberOfItems: number;
14282    appendItem(newItem: DOMPoint): DOMPoint;
14283    clear(): void;
14284    getItem(index: number): DOMPoint;
14285    initialize(newItem: DOMPoint): DOMPoint;
14286    insertItemBefore(newItem: DOMPoint, index: number): DOMPoint;
14287    removeItem(index: number): DOMPoint;
14288    replaceItem(newItem: DOMPoint, index: number): DOMPoint;
14289    [index: number]: DOMPoint;
14290}
14291
14292declare var SVGPointList: {
14293    prototype: SVGPointList;
14294    new(): SVGPointList;
14295};
14296
14297/** Provides access to the properties of <polygon> elements, as well as methods to manipulate them. */
14298interface SVGPolygonElement extends SVGGeometryElement, SVGAnimatedPoints {
14299    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolygonElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14300    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14301    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolygonElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14302    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14303}
14304
14305declare var SVGPolygonElement: {
14306    prototype: SVGPolygonElement;
14307    new(): SVGPolygonElement;
14308};
14309
14310/** Provides access to the properties of <polyline> elements, as well as methods to manipulate them. */
14311interface SVGPolylineElement extends SVGGeometryElement, SVGAnimatedPoints {
14312    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolylineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14313    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14314    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolylineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14315    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14316}
14317
14318declare var SVGPolylineElement: {
14319    prototype: SVGPolylineElement;
14320    new(): SVGPolylineElement;
14321};
14322
14323/** Corresponds to the preserveAspectRatio attribute, which is available for some of SVG's elements. */
14324interface SVGPreserveAspectRatio {
14325    align: number;
14326    meetOrSlice: number;
14327    readonly SVG_MEETORSLICE_MEET: number;
14328    readonly SVG_MEETORSLICE_SLICE: number;
14329    readonly SVG_MEETORSLICE_UNKNOWN: number;
14330    readonly SVG_PRESERVEASPECTRATIO_NONE: number;
14331    readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number;
14332    readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number;
14333    readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number;
14334    readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number;
14335    readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number;
14336    readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number;
14337    readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number;
14338    readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number;
14339    readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number;
14340    readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number;
14341}
14342
14343declare var SVGPreserveAspectRatio: {
14344    prototype: SVGPreserveAspectRatio;
14345    new(): SVGPreserveAspectRatio;
14346    readonly SVG_MEETORSLICE_MEET: number;
14347    readonly SVG_MEETORSLICE_SLICE: number;
14348    readonly SVG_MEETORSLICE_UNKNOWN: number;
14349    readonly SVG_PRESERVEASPECTRATIO_NONE: number;
14350    readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number;
14351    readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number;
14352    readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number;
14353    readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number;
14354    readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number;
14355    readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number;
14356    readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number;
14357    readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number;
14358    readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number;
14359    readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number;
14360};
14361
14362/** Corresponds to the <RadialGradient> element. */
14363interface SVGRadialGradientElement extends SVGGradientElement {
14364    readonly cx: SVGAnimatedLength;
14365    readonly cy: SVGAnimatedLength;
14366    readonly fr: SVGAnimatedLength;
14367    readonly fx: SVGAnimatedLength;
14368    readonly fy: SVGAnimatedLength;
14369    readonly r: SVGAnimatedLength;
14370    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRadialGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14371    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14372    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRadialGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14373    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14374}
14375
14376declare var SVGRadialGradientElement: {
14377    prototype: SVGRadialGradientElement;
14378    new(): SVGRadialGradientElement;
14379};
14380
14381/** Provides access to the properties of <rect> elements, as well as methods to manipulate them. */
14382interface SVGRectElement extends SVGGeometryElement {
14383    readonly height: SVGAnimatedLength;
14384    readonly rx: SVGAnimatedLength;
14385    readonly ry: SVGAnimatedLength;
14386    readonly width: SVGAnimatedLength;
14387    readonly x: SVGAnimatedLength;
14388    readonly y: SVGAnimatedLength;
14389    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14390    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14391    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14392    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14393}
14394
14395declare var SVGRectElement: {
14396    prototype: SVGRectElement;
14397    new(): SVGRectElement;
14398};
14399
14400interface SVGSVGElementEventMap extends SVGElementEventMap {
14401    "SVGUnload": Event;
14402    "SVGZoom": SVGZoomEvent;
14403}
14404
14405/** 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. */
14406interface SVGSVGElement extends SVGGraphicsElement, DocumentEvent, SVGFitToViewBox, SVGZoomAndPan {
14407    /** @deprecated */
14408    contentScriptType: string;
14409    /** @deprecated */
14410    contentStyleType: string;
14411    currentScale: number;
14412    readonly currentTranslate: SVGPoint;
14413    readonly height: SVGAnimatedLength;
14414    onunload: ((this: SVGSVGElement, ev: Event) => any) | null;
14415    onzoom: ((this: SVGSVGElement, ev: SVGZoomEvent) => any) | null;
14416    /** @deprecated */
14417    readonly pixelUnitToMillimeterX: number;
14418    /** @deprecated */
14419    readonly pixelUnitToMillimeterY: number;
14420    /** @deprecated */
14421    readonly screenPixelToMillimeterX: number;
14422    /** @deprecated */
14423    readonly screenPixelToMillimeterY: number;
14424    /** @deprecated */
14425    readonly viewport: SVGRect;
14426    readonly width: SVGAnimatedLength;
14427    readonly x: SVGAnimatedLength;
14428    readonly y: SVGAnimatedLength;
14429    animationsPaused(): boolean;
14430    checkEnclosure(element: SVGElement, rect: SVGRect): boolean;
14431    checkIntersection(element: SVGElement, rect: SVGRect): boolean;
14432    createSVGAngle(): SVGAngle;
14433    createSVGLength(): SVGLength;
14434    createSVGMatrix(): SVGMatrix;
14435    createSVGNumber(): SVGNumber;
14436    createSVGPoint(): SVGPoint;
14437    createSVGRect(): SVGRect;
14438    createSVGTransform(): SVGTransform;
14439    createSVGTransformFromMatrix(matrix: SVGMatrix): SVGTransform;
14440    deselectAll(): void;
14441    /** @deprecated */
14442    forceRedraw(): void;
14443    getComputedStyle(elt: Element, pseudoElt?: string | null): CSSStyleDeclaration;
14444    getCurrentTime(): number;
14445    getElementById(elementId: string): Element;
14446    getEnclosureList(rect: SVGRect, referenceElement: SVGElement | null): NodeListOf<SVGCircleElement | SVGEllipseElement | SVGImageElement | SVGLineElement | SVGPathElement | SVGPolygonElement | SVGPolylineElement | SVGRectElement | SVGTextElement | SVGUseElement>;
14447    getIntersectionList(rect: SVGRect, referenceElement: SVGElement | null): NodeListOf<SVGCircleElement | SVGEllipseElement | SVGImageElement | SVGLineElement | SVGPathElement | SVGPolygonElement | SVGPolylineElement | SVGRectElement | SVGTextElement | SVGUseElement>;
14448    pauseAnimations(): void;
14449    setCurrentTime(seconds: number): void;
14450    /** @deprecated */
14451    suspendRedraw(maxWaitMilliseconds: number): number;
14452    unpauseAnimations(): void;
14453    /** @deprecated */
14454    unsuspendRedraw(suspendHandleID: number): void;
14455    /** @deprecated */
14456    unsuspendRedrawAll(): void;
14457    addEventListener<K extends keyof SVGSVGElementEventMap>(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14458    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14459    removeEventListener<K extends keyof SVGSVGElementEventMap>(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14460    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14461}
14462
14463declare var SVGSVGElement: {
14464    prototype: SVGSVGElement;
14465    new(): SVGSVGElement;
14466    readonly SVG_ZOOMANDPAN_DISABLE: number;
14467    readonly SVG_ZOOMANDPAN_MAGNIFY: number;
14468    readonly SVG_ZOOMANDPAN_UNKNOWN: number;
14469};
14470
14471/** Corresponds to the SVG <script> element. */
14472interface SVGScriptElement extends SVGElement, SVGURIReference {
14473    type: string;
14474    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGScriptElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14475    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14476    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGScriptElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14477    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14478}
14479
14480declare var SVGScriptElement: {
14481    prototype: SVGScriptElement;
14482    new(): SVGScriptElement;
14483};
14484
14485/** Corresponds to the <stop> element. */
14486interface SVGStopElement extends SVGElement {
14487    readonly offset: SVGAnimatedNumber;
14488    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStopElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14489    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14490    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStopElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14491    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14492}
14493
14494declare var SVGStopElement: {
14495    prototype: SVGStopElement;
14496    new(): SVGStopElement;
14497};
14498
14499/** The SVGStringList defines a list of DOMString objects. */
14500interface SVGStringList {
14501    readonly length: number;
14502    readonly numberOfItems: number;
14503    appendItem(newItem: string): string;
14504    clear(): void;
14505    getItem(index: number): string;
14506    initialize(newItem: string): string;
14507    insertItemBefore(newItem: string, index: number): string;
14508    removeItem(index: number): string;
14509    replaceItem(newItem: string, index: number): string;
14510    [index: number]: string;
14511}
14512
14513declare var SVGStringList: {
14514    prototype: SVGStringList;
14515    new(): SVGStringList;
14516};
14517
14518/** Corresponds to the SVG <style> element. */
14519interface SVGStyleElement extends SVGElement, LinkStyle {
14520    disabled: boolean;
14521    media: string;
14522    title: string;
14523    type: string;
14524    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStyleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14525    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14526    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStyleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14527    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14528}
14529
14530declare var SVGStyleElement: {
14531    prototype: SVGStyleElement;
14532    new(): SVGStyleElement;
14533};
14534
14535/** Corresponds to the <switch> element. */
14536interface SVGSwitchElement extends SVGGraphicsElement {
14537    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSwitchElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14538    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14539    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSwitchElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14540    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14541}
14542
14543declare var SVGSwitchElement: {
14544    prototype: SVGSwitchElement;
14545    new(): SVGSwitchElement;
14546};
14547
14548/** Corresponds to the <symbol> element. */
14549interface SVGSymbolElement extends SVGElement, SVGFitToViewBox {
14550    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSymbolElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14551    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14552    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSymbolElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14553    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14554}
14555
14556declare var SVGSymbolElement: {
14557    prototype: SVGSymbolElement;
14558    new(): SVGSymbolElement;
14559};
14560
14561/** A <tspan> element. */
14562interface SVGTSpanElement extends SVGTextPositioningElement {
14563    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTSpanElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14564    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14565    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTSpanElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14566    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14567}
14568
14569declare var SVGTSpanElement: {
14570    prototype: SVGTSpanElement;
14571    new(): SVGTSpanElement;
14572};
14573
14574interface SVGTests {
14575    readonly requiredExtensions: SVGStringList;
14576    readonly systemLanguage: SVGStringList;
14577}
14578
14579/** 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. */
14580interface SVGTextContentElement extends SVGGraphicsElement {
14581    readonly lengthAdjust: SVGAnimatedEnumeration;
14582    readonly textLength: SVGAnimatedLength;
14583    getCharNumAtPosition(point?: DOMPointInit): number;
14584    getComputedTextLength(): number;
14585    getEndPositionOfChar(charnum: number): DOMPoint;
14586    getExtentOfChar(charnum: number): DOMRect;
14587    getNumberOfChars(): number;
14588    getRotationOfChar(charnum: number): number;
14589    getStartPositionOfChar(charnum: number): DOMPoint;
14590    getSubStringLength(charnum: number, nchars: number): number;
14591    selectSubString(charnum: number, nchars: number): void;
14592    readonly LENGTHADJUST_SPACING: number;
14593    readonly LENGTHADJUST_SPACINGANDGLYPHS: number;
14594    readonly LENGTHADJUST_UNKNOWN: number;
14595    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextContentElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14596    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14597    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextContentElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14598    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14599}
14600
14601declare var SVGTextContentElement: {
14602    prototype: SVGTextContentElement;
14603    new(): SVGTextContentElement;
14604    readonly LENGTHADJUST_SPACING: number;
14605    readonly LENGTHADJUST_SPACINGANDGLYPHS: number;
14606    readonly LENGTHADJUST_UNKNOWN: number;
14607};
14608
14609/** Corresponds to the <text> elements. */
14610interface SVGTextElement extends SVGTextPositioningElement {
14611    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14612    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14613    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14614    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14615}
14616
14617declare var SVGTextElement: {
14618    prototype: SVGTextElement;
14619    new(): SVGTextElement;
14620};
14621
14622/** Corresponds to the <textPath> element. */
14623interface SVGTextPathElement extends SVGTextContentElement, SVGURIReference {
14624    readonly method: SVGAnimatedEnumeration;
14625    readonly spacing: SVGAnimatedEnumeration;
14626    readonly startOffset: SVGAnimatedLength;
14627    readonly TEXTPATH_METHODTYPE_ALIGN: number;
14628    readonly TEXTPATH_METHODTYPE_STRETCH: number;
14629    readonly TEXTPATH_METHODTYPE_UNKNOWN: number;
14630    readonly TEXTPATH_SPACINGTYPE_AUTO: number;
14631    readonly TEXTPATH_SPACINGTYPE_EXACT: number;
14632    readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number;
14633    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14634    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14635    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14636    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14637}
14638
14639declare var SVGTextPathElement: {
14640    prototype: SVGTextPathElement;
14641    new(): SVGTextPathElement;
14642    readonly TEXTPATH_METHODTYPE_ALIGN: number;
14643    readonly TEXTPATH_METHODTYPE_STRETCH: number;
14644    readonly TEXTPATH_METHODTYPE_UNKNOWN: number;
14645    readonly TEXTPATH_SPACINGTYPE_AUTO: number;
14646    readonly TEXTPATH_SPACINGTYPE_EXACT: number;
14647    readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number;
14648};
14649
14650/** Implemented by elements that support attributes that position individual text glyphs. It is inherited by SVGTextElement, SVGTSpanElement, SVGTRefElement and SVGAltGlyphElement. */
14651interface SVGTextPositioningElement extends SVGTextContentElement {
14652    readonly dx: SVGAnimatedLengthList;
14653    readonly dy: SVGAnimatedLengthList;
14654    readonly rotate: SVGAnimatedNumberList;
14655    readonly x: SVGAnimatedLengthList;
14656    readonly y: SVGAnimatedLengthList;
14657    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPositioningElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14658    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14659    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPositioningElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14660    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14661}
14662
14663declare var SVGTextPositioningElement: {
14664    prototype: SVGTextPositioningElement;
14665    new(): SVGTextPositioningElement;
14666};
14667
14668/** Corresponds to the <title> element. */
14669interface SVGTitleElement extends SVGElement {
14670    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTitleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14671    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14672    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTitleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14673    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14674}
14675
14676declare var SVGTitleElement: {
14677    prototype: SVGTitleElement;
14678    new(): SVGTitleElement;
14679};
14680
14681/** 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. */
14682interface SVGTransform {
14683    readonly angle: number;
14684    readonly matrix: SVGMatrix;
14685    readonly type: number;
14686    setMatrix(matrix: SVGMatrix): void;
14687    setRotate(angle: number, cx: number, cy: number): void;
14688    setScale(sx: number, sy: number): void;
14689    setSkewX(angle: number): void;
14690    setSkewY(angle: number): void;
14691    setTranslate(tx: number, ty: number): void;
14692    readonly SVG_TRANSFORM_MATRIX: number;
14693    readonly SVG_TRANSFORM_ROTATE: number;
14694    readonly SVG_TRANSFORM_SCALE: number;
14695    readonly SVG_TRANSFORM_SKEWX: number;
14696    readonly SVG_TRANSFORM_SKEWY: number;
14697    readonly SVG_TRANSFORM_TRANSLATE: number;
14698    readonly SVG_TRANSFORM_UNKNOWN: number;
14699}
14700
14701declare var SVGTransform: {
14702    prototype: SVGTransform;
14703    new(): SVGTransform;
14704    readonly SVG_TRANSFORM_MATRIX: number;
14705    readonly SVG_TRANSFORM_ROTATE: number;
14706    readonly SVG_TRANSFORM_SCALE: number;
14707    readonly SVG_TRANSFORM_SKEWX: number;
14708    readonly SVG_TRANSFORM_SKEWY: number;
14709    readonly SVG_TRANSFORM_TRANSLATE: number;
14710    readonly SVG_TRANSFORM_UNKNOWN: number;
14711};
14712
14713/** The SVGTransformList defines a list of SVGTransform objects. */
14714interface SVGTransformList {
14715    readonly numberOfItems: number;
14716    appendItem(newItem: SVGTransform): SVGTransform;
14717    clear(): void;
14718    consolidate(): SVGTransform;
14719    createSVGTransformFromMatrix(matrix: SVGMatrix): SVGTransform;
14720    getItem(index: number): SVGTransform;
14721    initialize(newItem: SVGTransform): SVGTransform;
14722    insertItemBefore(newItem: SVGTransform, index: number): SVGTransform;
14723    removeItem(index: number): SVGTransform;
14724    replaceItem(newItem: SVGTransform, index: number): SVGTransform;
14725}
14726
14727declare var SVGTransformList: {
14728    prototype: SVGTransformList;
14729    new(): SVGTransformList;
14730};
14731
14732interface SVGURIReference {
14733    readonly href: SVGAnimatedString;
14734}
14735
14736/** A commonly used set of constants used for reflecting gradientUnits, patternContentUnits and other similar attributes. */
14737interface SVGUnitTypes {
14738    readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number;
14739    readonly SVG_UNIT_TYPE_UNKNOWN: number;
14740    readonly SVG_UNIT_TYPE_USERSPACEONUSE: number;
14741}
14742
14743declare var SVGUnitTypes: {
14744    prototype: SVGUnitTypes;
14745    new(): SVGUnitTypes;
14746    readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number;
14747    readonly SVG_UNIT_TYPE_UNKNOWN: number;
14748    readonly SVG_UNIT_TYPE_USERSPACEONUSE: number;
14749};
14750
14751/** Corresponds to the <use> element. */
14752interface SVGUseElement extends SVGGraphicsElement, SVGURIReference {
14753    readonly animatedInstanceRoot: SVGElementInstance | null;
14754    readonly height: SVGAnimatedLength;
14755    readonly instanceRoot: SVGElementInstance | null;
14756    readonly width: SVGAnimatedLength;
14757    readonly x: SVGAnimatedLength;
14758    readonly y: SVGAnimatedLength;
14759    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGUseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14760    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14761    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGUseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14762    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14763}
14764
14765declare var SVGUseElement: {
14766    prototype: SVGUseElement;
14767    new(): SVGUseElement;
14768};
14769
14770/** Provides access to the properties of <view> elements, as well as methods to manipulate them. */
14771interface SVGViewElement extends SVGElement, SVGFitToViewBox, SVGZoomAndPan {
14772    /** @deprecated */
14773    readonly viewTarget: SVGStringList;
14774    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGViewElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14775    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14776    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGViewElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14777    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14778}
14779
14780declare var SVGViewElement: {
14781    prototype: SVGViewElement;
14782    new(): SVGViewElement;
14783    readonly SVG_ZOOMANDPAN_DISABLE: number;
14784    readonly SVG_ZOOMANDPAN_MAGNIFY: number;
14785    readonly SVG_ZOOMANDPAN_UNKNOWN: number;
14786};
14787
14788/** Used to reflect the zoomAndPan attribute, and is mixed in to other interfaces for elements that support this attribute. */
14789interface SVGZoomAndPan {
14790    readonly zoomAndPan: number;
14791}
14792
14793declare var SVGZoomAndPan: {
14794    readonly SVG_ZOOMANDPAN_DISABLE: number;
14795    readonly SVG_ZOOMANDPAN_MAGNIFY: number;
14796    readonly SVG_ZOOMANDPAN_UNKNOWN: number;
14797};
14798
14799interface SVGZoomEvent extends UIEvent {
14800    readonly newScale: number;
14801    readonly newTranslate: SVGPoint;
14802    readonly previousScale: number;
14803    readonly previousTranslate: SVGPoint;
14804    readonly zoomRectScreen: SVGRect;
14805}
14806
14807declare var SVGZoomEvent: {
14808    prototype: SVGZoomEvent;
14809    new(): SVGZoomEvent;
14810};
14811
14812interface ScopedCredential {
14813    readonly id: ArrayBuffer;
14814    readonly type: ScopedCredentialType;
14815}
14816
14817declare var ScopedCredential: {
14818    prototype: ScopedCredential;
14819    new(): ScopedCredential;
14820};
14821
14822interface ScopedCredentialInfo {
14823    readonly credential: ScopedCredential;
14824    readonly publicKey: CryptoKey;
14825}
14826
14827declare var ScopedCredentialInfo: {
14828    prototype: ScopedCredentialInfo;
14829    new(): ScopedCredentialInfo;
14830};
14831
14832/** A screen, usually the one on which the current window is being rendered, and is obtained using window.screen. */
14833interface Screen {
14834    readonly availHeight: number;
14835    readonly availWidth: number;
14836    readonly colorDepth: number;
14837    readonly height: number;
14838    readonly orientation: ScreenOrientation;
14839    readonly pixelDepth: number;
14840    readonly width: number;
14841}
14842
14843declare var Screen: {
14844    prototype: Screen;
14845    new(): Screen;
14846};
14847
14848interface ScreenOrientationEventMap {
14849    "change": Event;
14850}
14851
14852interface ScreenOrientation extends EventTarget {
14853    readonly angle: number;
14854    onchange: ((this: ScreenOrientation, ev: Event) => any) | null;
14855    readonly type: OrientationType;
14856    lock(orientation: OrientationLockType): Promise<void>;
14857    unlock(): void;
14858    addEventListener<K extends keyof ScreenOrientationEventMap>(type: K, listener: (this: ScreenOrientation, ev: ScreenOrientationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14859    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14860    removeEventListener<K extends keyof ScreenOrientationEventMap>(type: K, listener: (this: ScreenOrientation, ev: ScreenOrientationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14861    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14862}
14863
14864declare var ScreenOrientation: {
14865    prototype: ScreenOrientation;
14866    new(): ScreenOrientation;
14867};
14868
14869interface ScriptProcessorNodeEventMap {
14870    "audioprocess": AudioProcessingEvent;
14871}
14872
14873/** Allows the generation, processing, or analyzing of audio using JavaScript.
14874 * @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).
14875 */
14876interface ScriptProcessorNode extends AudioNode {
14877    /** @deprecated */
14878    readonly bufferSize: number;
14879    /** @deprecated */
14880    onaudioprocess: ((this: ScriptProcessorNode, ev: AudioProcessingEvent) => any) | null;
14881    addEventListener<K extends keyof ScriptProcessorNodeEventMap>(type: K, listener: (this: ScriptProcessorNode, ev: ScriptProcessorNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14882    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14883    removeEventListener<K extends keyof ScriptProcessorNodeEventMap>(type: K, listener: (this: ScriptProcessorNode, ev: ScriptProcessorNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14884    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14885}
14886
14887declare var ScriptProcessorNode: {
14888    prototype: ScriptProcessorNode;
14889    new(): ScriptProcessorNode;
14890};
14891
14892/** Inherits from Event, and represents the event object of an event sent on a document or worker when its content security policy is violated. */
14893interface SecurityPolicyViolationEvent extends Event {
14894    readonly blockedURI: string;
14895    readonly columnNumber: number;
14896    readonly documentURI: string;
14897    readonly effectiveDirective: string;
14898    readonly lineNumber: number;
14899    readonly originalPolicy: string;
14900    readonly referrer: string;
14901    readonly sourceFile: string;
14902    readonly statusCode: number;
14903    readonly violatedDirective: string;
14904}
14905
14906declare var SecurityPolicyViolationEvent: {
14907    prototype: SecurityPolicyViolationEvent;
14908    new(type: string, eventInitDict?: SecurityPolicyViolationEventInit): SecurityPolicyViolationEvent;
14909};
14910
14911/** 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(). */
14912interface Selection {
14913    readonly anchorNode: Node | null;
14914    readonly anchorOffset: number;
14915    readonly focusNode: Node | null;
14916    readonly focusOffset: number;
14917    readonly isCollapsed: boolean;
14918    readonly rangeCount: number;
14919    readonly type: string;
14920    addRange(range: Range): void;
14921    collapse(node: Node | null, offset?: number): void;
14922    collapseToEnd(): void;
14923    collapseToStart(): void;
14924    containsNode(node: Node, allowPartialContainment?: boolean): boolean;
14925    deleteFromDocument(): void;
14926    empty(): void;
14927    extend(node: Node, offset?: number): void;
14928    getRangeAt(index: number): Range;
14929    removeAllRanges(): void;
14930    removeRange(range: Range): void;
14931    selectAllChildren(node: Node): void;
14932    setBaseAndExtent(anchorNode: Node, anchorOffset: number, focusNode: Node, focusOffset: number): void;
14933    setPosition(node: Node | null, offset?: number): void;
14934    toString(): string;
14935}
14936
14937declare var Selection: {
14938    prototype: Selection;
14939    new(): Selection;
14940    toString(): string;
14941};
14942
14943interface ServiceUIFrameContext {
14944    getCachedFrameMessage(key: string): string;
14945    postFrameMessage(key: string, data: string): void;
14946}
14947declare var ServiceUIFrameContext: ServiceUIFrameContext;
14948
14949interface ServiceWorkerEventMap extends AbstractWorkerEventMap {
14950    "statechange": Event;
14951}
14952
14953/** 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. */
14954interface ServiceWorker extends EventTarget, AbstractWorker {
14955    onstatechange: ((this: ServiceWorker, ev: Event) => any) | null;
14956    readonly scriptURL: string;
14957    readonly state: ServiceWorkerState;
14958    postMessage(message: any, transfer: Transferable[]): void;
14959    postMessage(message: any, options?: PostMessageOptions): void;
14960    addEventListener<K extends keyof ServiceWorkerEventMap>(type: K, listener: (this: ServiceWorker, ev: ServiceWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14961    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14962    removeEventListener<K extends keyof ServiceWorkerEventMap>(type: K, listener: (this: ServiceWorker, ev: ServiceWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14963    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14964}
14965
14966declare var ServiceWorker: {
14967    prototype: ServiceWorker;
14968    new(): ServiceWorker;
14969};
14970
14971interface ServiceWorkerContainerEventMap {
14972    "controllerchange": Event;
14973    "message": MessageEvent;
14974    "messageerror": MessageEvent;
14975}
14976
14977/** 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. */
14978interface ServiceWorkerContainer extends EventTarget {
14979    readonly controller: ServiceWorker | null;
14980    oncontrollerchange: ((this: ServiceWorkerContainer, ev: Event) => any) | null;
14981    onmessage: ((this: ServiceWorkerContainer, ev: MessageEvent) => any) | null;
14982    onmessageerror: ((this: ServiceWorkerContainer, ev: MessageEvent) => any) | null;
14983    readonly ready: Promise<ServiceWorkerRegistration>;
14984    getRegistration(clientURL?: string): Promise<ServiceWorkerRegistration | undefined>;
14985    getRegistrations(): Promise<ReadonlyArray<ServiceWorkerRegistration>>;
14986    register(scriptURL: string | URL, options?: RegistrationOptions): Promise<ServiceWorkerRegistration>;
14987    startMessages(): void;
14988    addEventListener<K extends keyof ServiceWorkerContainerEventMap>(type: K, listener: (this: ServiceWorkerContainer, ev: ServiceWorkerContainerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14989    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14990    removeEventListener<K extends keyof ServiceWorkerContainerEventMap>(type: K, listener: (this: ServiceWorkerContainer, ev: ServiceWorkerContainerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14991    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14992}
14993
14994declare var ServiceWorkerContainer: {
14995    prototype: ServiceWorkerContainer;
14996    new(): ServiceWorkerContainer;
14997};
14998
14999/** This ServiceWorker API interface contains information about an event sent to a ServiceWorkerContainer target. This extends the default message event to allow setting a ServiceWorker object as the source of a message. The event object is accessed via the handler function of a message event, when fired by a message received from a service worker.
15000 * @deprecated In modern browsers, this interface has been deprecated. Service worker messages will now use the MessageEvent interface, for consistency with other web messaging features.
15001 */
15002interface ServiceWorkerMessageEvent extends Event {
15003    readonly data: any;
15004    readonly lastEventId: string;
15005    readonly origin: string;
15006    readonly ports: ReadonlyArray<MessagePort> | null;
15007    readonly source: ServiceWorker | MessagePort | null;
15008}
15009
15010declare var ServiceWorkerMessageEvent: {
15011    prototype: ServiceWorkerMessageEvent;
15012    new(type: string, eventInitDict?: ServiceWorkerMessageEventInit): ServiceWorkerMessageEvent;
15013};
15014
15015interface ServiceWorkerRegistrationEventMap {
15016    "updatefound": Event;
15017}
15018
15019/** 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. */
15020interface ServiceWorkerRegistration extends EventTarget {
15021    readonly active: ServiceWorker | null;
15022    readonly installing: ServiceWorker | null;
15023    readonly navigationPreload: NavigationPreloadManager;
15024    onupdatefound: ((this: ServiceWorkerRegistration, ev: Event) => any) | null;
15025    readonly pushManager: PushManager;
15026    readonly scope: string;
15027    readonly sync: SyncManager;
15028    readonly updateViaCache: ServiceWorkerUpdateViaCache;
15029    readonly waiting: ServiceWorker | null;
15030    getNotifications(filter?: GetNotificationOptions): Promise<Notification[]>;
15031    showNotification(title: string, options?: NotificationOptions): Promise<void>;
15032    unregister(): Promise<boolean>;
15033    update(): Promise<void>;
15034    addEventListener<K extends keyof ServiceWorkerRegistrationEventMap>(type: K, listener: (this: ServiceWorkerRegistration, ev: ServiceWorkerRegistrationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
15035    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
15036    removeEventListener<K extends keyof ServiceWorkerRegistrationEventMap>(type: K, listener: (this: ServiceWorkerRegistration, ev: ServiceWorkerRegistrationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
15037    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
15038}
15039
15040declare var ServiceWorkerRegistration: {
15041    prototype: ServiceWorkerRegistration;
15042    new(): ServiceWorkerRegistration;
15043};
15044
15045interface ShadowRoot extends DocumentFragment, DocumentOrShadowRoot, InnerHTML {
15046    readonly host: Element;
15047    readonly mode: ShadowRootMode;
15048    /**
15049     * Throws a "NotSupportedError" DOMException if context object is a shadow root.
15050     */
15051}
15052
15053declare var ShadowRoot: {
15054    prototype: ShadowRoot;
15055    new(): ShadowRoot;
15056};
15057
15058interface SharedWorker extends EventTarget, AbstractWorker {
15059    /**
15060     * Returns sharedWorker's MessagePort object which can be used to communicate with the global environment.
15061     */
15062    readonly port: MessagePort;
15063    addEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: SharedWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
15064    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
15065    removeEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: SharedWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
15066    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
15067}
15068
15069declare var SharedWorker: {
15070    prototype: SharedWorker;
15071    new(scriptURL: string, options?: string | WorkerOptions): SharedWorker;
15072};
15073
15074interface Slottable {
15075    readonly assignedSlot: HTMLSlotElement | null;
15076}
15077
15078interface SourceBufferEventMap {
15079    "abort": Event;
15080    "error": Event;
15081    "update": Event;
15082    "updateend": Event;
15083    "updatestart": Event;
15084}
15085
15086/** 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. */
15087interface SourceBuffer extends EventTarget {
15088    appendWindowEnd: number;
15089    appendWindowStart: number;
15090    readonly buffered: TimeRanges;
15091    mode: AppendMode;
15092    onabort: ((this: SourceBuffer, ev: Event) => any) | null;
15093    onerror: ((this: SourceBuffer, ev: Event) => any) | null;
15094    onupdate: ((this: SourceBuffer, ev: Event) => any) | null;
15095    onupdateend: ((this: SourceBuffer, ev: Event) => any) | null;
15096    onupdatestart: ((this: SourceBuffer, ev: Event) => any) | null;
15097    timestampOffset: number;
15098    readonly updating: boolean;
15099    abort(): void;
15100    appendBuffer(data: BufferSource): void;
15101    remove(start: number, end: number): void;
15102    addEventListener<K extends keyof SourceBufferEventMap>(type: K, listener: (this: SourceBuffer, ev: SourceBufferEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
15103    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
15104    removeEventListener<K extends keyof SourceBufferEventMap>(type: K, listener: (this: SourceBuffer, ev: SourceBufferEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
15105    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
15106}
15107
15108declare var SourceBuffer: {
15109    prototype: SourceBuffer;
15110    new(): SourceBuffer;
15111};
15112
15113interface SourceBufferListEventMap {
15114    "addsourcebuffer": Event;
15115    "removesourcebuffer": Event;
15116}
15117
15118/** A simple container list for multiple SourceBuffer objects. */
15119interface SourceBufferList extends EventTarget {
15120    readonly length: number;
15121    onaddsourcebuffer: ((this: SourceBufferList, ev: Event) => any) | null;
15122    onremovesourcebuffer: ((this: SourceBufferList, ev: Event) => any) | null;
15123    addEventListener<K extends keyof SourceBufferListEventMap>(type: K, listener: (this: SourceBufferList, ev: SourceBufferListEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
15124    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
15125    removeEventListener<K extends keyof SourceBufferListEventMap>(type: K, listener: (this: SourceBufferList, ev: SourceBufferListEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
15126    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
15127    [index: number]: SourceBuffer;
15128}
15129
15130declare var SourceBufferList: {
15131    prototype: SourceBufferList;
15132    new(): SourceBufferList;
15133};
15134
15135interface SpeechGrammar {
15136    src: string;
15137    weight: number;
15138}
15139
15140declare var SpeechGrammar: {
15141    prototype: SpeechGrammar;
15142    new(): SpeechGrammar;
15143};
15144
15145interface SpeechGrammarList {
15146    readonly length: number;
15147    addFromString(string: string, weight?: number): void;
15148    addFromURI(src: string, weight?: number): void;
15149    item(index: number): SpeechGrammar;
15150    [index: number]: SpeechGrammar;
15151}
15152
15153declare var SpeechGrammarList: {
15154    prototype: SpeechGrammarList;
15155    new(): SpeechGrammarList;
15156};
15157
15158interface SpeechRecognitionEventMap {
15159    "audioend": Event;
15160    "audiostart": Event;
15161    "end": Event;
15162    "error": SpeechRecognitionErrorEvent;
15163    "nomatch": SpeechRecognitionEvent;
15164    "result": SpeechRecognitionEvent;
15165    "soundend": Event;
15166    "soundstart": Event;
15167    "speechend": Event;
15168    "speechstart": Event;
15169    "start": Event;
15170}
15171
15172interface SpeechRecognition extends EventTarget {
15173    continuous: boolean;
15174    grammars: SpeechGrammarList;
15175    interimResults: boolean;
15176    lang: string;
15177    maxAlternatives: number;
15178    onaudioend: ((this: SpeechRecognition, ev: Event) => any) | null;
15179    onaudiostart: ((this: SpeechRecognition, ev: Event) => any) | null;
15180    onend: ((this: SpeechRecognition, ev: Event) => any) | null;
15181    onerror: ((this: SpeechRecognition, ev: SpeechRecognitionErrorEvent) => any) | null;
15182    onnomatch: ((this: SpeechRecognition, ev: SpeechRecognitionEvent) => any) | null;
15183    onresult: ((this: SpeechRecognition, ev: SpeechRecognitionEvent) => any) | null;
15184    onsoundend: ((this: SpeechRecognition, ev: Event) => any) | null;
15185    onsoundstart: ((this: SpeechRecognition, ev: Event) => any) | null;
15186    onspeechend: ((this: SpeechRecognition, ev: Event) => any) | null;
15187    onspeechstart: ((this: SpeechRecognition, ev: Event) => any) | null;
15188    onstart: ((this: SpeechRecognition, ev: Event) => any) | null;
15189    abort(): void;
15190    start(): void;
15191    stop(): void;
15192    addEventListener<K extends keyof SpeechRecognitionEventMap>(type: K, listener: (this: SpeechRecognition, ev: SpeechRecognitionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
15193    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
15194    removeEventListener<K extends keyof SpeechRecognitionEventMap>(type: K, listener: (this: SpeechRecognition, ev: SpeechRecognitionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
15195    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
15196}
15197
15198declare var SpeechRecognition: {
15199    prototype: SpeechRecognition;
15200    new(): SpeechRecognition;
15201};
15202
15203interface SpeechRecognitionAlternative {
15204    readonly confidence: number;
15205    readonly transcript: string;
15206}
15207
15208declare var SpeechRecognitionAlternative: {
15209    prototype: SpeechRecognitionAlternative;
15210    new(): SpeechRecognitionAlternative;
15211};
15212
15213interface SpeechRecognitionErrorEvent extends Event {
15214    readonly error: SpeechRecognitionErrorCode;
15215    readonly message: string;
15216}
15217
15218declare var SpeechRecognitionErrorEvent: {
15219    prototype: SpeechRecognitionErrorEvent;
15220    new(type: string, eventInitDict: SpeechRecognitionErrorEventInit): SpeechRecognitionErrorEvent;
15221};
15222
15223interface SpeechRecognitionEvent extends Event {
15224    readonly resultIndex: number;
15225    readonly results: SpeechRecognitionResultList;
15226}
15227
15228declare var SpeechRecognitionEvent: {
15229    prototype: SpeechRecognitionEvent;
15230    new(type: string, eventInitDict: SpeechRecognitionEventInit): SpeechRecognitionEvent;
15231};
15232
15233interface SpeechRecognitionResult {
15234    readonly isFinal: boolean;
15235    readonly length: number;
15236    item(index: number): SpeechRecognitionAlternative;
15237    [index: number]: SpeechRecognitionAlternative;
15238}
15239
15240declare var SpeechRecognitionResult: {
15241    prototype: SpeechRecognitionResult;
15242    new(): SpeechRecognitionResult;
15243};
15244
15245interface SpeechRecognitionResultList {
15246    readonly length: number;
15247    item(index: number): SpeechRecognitionResult;
15248    [index: number]: SpeechRecognitionResult;
15249}
15250
15251declare var SpeechRecognitionResultList: {
15252    prototype: SpeechRecognitionResultList;
15253    new(): SpeechRecognitionResultList;
15254};
15255
15256interface SpeechSynthesisEventMap {
15257    "voiceschanged": Event;
15258}
15259
15260/** 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. */
15261interface SpeechSynthesis extends EventTarget {
15262    onvoiceschanged: ((this: SpeechSynthesis, ev: Event) => any) | null;
15263    readonly paused: boolean;
15264    readonly pending: boolean;
15265    readonly speaking: boolean;
15266    cancel(): void;
15267    getVoices(): SpeechSynthesisVoice[];
15268    pause(): void;
15269    resume(): void;
15270    speak(utterance: SpeechSynthesisUtterance): void;
15271    addEventListener<K extends keyof SpeechSynthesisEventMap>(type: K, listener: (this: SpeechSynthesis, ev: SpeechSynthesisEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
15272    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
15273    removeEventListener<K extends keyof SpeechSynthesisEventMap>(type: K, listener: (this: SpeechSynthesis, ev: SpeechSynthesisEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
15274    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
15275}
15276
15277declare var SpeechSynthesis: {
15278    prototype: SpeechSynthesis;
15279    new(): SpeechSynthesis;
15280};
15281
15282interface SpeechSynthesisErrorEvent extends SpeechSynthesisEvent {
15283    readonly error: SpeechSynthesisErrorCode;
15284}
15285
15286declare var SpeechSynthesisErrorEvent: {
15287    prototype: SpeechSynthesisErrorEvent;
15288    new(type: string, eventInitDict: SpeechSynthesisErrorEventInit): SpeechSynthesisErrorEvent;
15289};
15290
15291/** This Web Speech API interface contains information about the current state of SpeechSynthesisUtterance objects that have been processed in the speech service. */
15292interface SpeechSynthesisEvent extends Event {
15293    readonly charIndex: number;
15294    readonly charLength: number;
15295    readonly elapsedTime: number;
15296    readonly name: string;
15297    readonly utterance: SpeechSynthesisUtterance;
15298}
15299
15300declare var SpeechSynthesisEvent: {
15301    prototype: SpeechSynthesisEvent;
15302    new(type: string, eventInitDict: SpeechSynthesisEventInit): SpeechSynthesisEvent;
15303};
15304
15305interface SpeechSynthesisUtteranceEventMap {
15306    "boundary": SpeechSynthesisEvent;
15307    "end": SpeechSynthesisEvent;
15308    "error": SpeechSynthesisErrorEvent;
15309    "mark": SpeechSynthesisEvent;
15310    "pause": SpeechSynthesisEvent;
15311    "resume": SpeechSynthesisEvent;
15312    "start": SpeechSynthesisEvent;
15313}
15314
15315/** 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.) */
15316interface SpeechSynthesisUtterance extends EventTarget {
15317    lang: string;
15318    onboundary: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
15319    onend: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
15320    onerror: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisErrorEvent) => any) | null;
15321    onmark: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
15322    onpause: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
15323    onresume: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
15324    onstart: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
15325    pitch: number;
15326    rate: number;
15327    text: string;
15328    voice: SpeechSynthesisVoice | null;
15329    volume: number;
15330    addEventListener<K extends keyof SpeechSynthesisUtteranceEventMap>(type: K, listener: (this: SpeechSynthesisUtterance, ev: SpeechSynthesisUtteranceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
15331    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
15332    removeEventListener<K extends keyof SpeechSynthesisUtteranceEventMap>(type: K, listener: (this: SpeechSynthesisUtterance, ev: SpeechSynthesisUtteranceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
15333    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
15334}
15335
15336declare var SpeechSynthesisUtterance: {
15337    prototype: SpeechSynthesisUtterance;
15338    new(text?: string): SpeechSynthesisUtterance;
15339};
15340
15341/** 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. */
15342interface SpeechSynthesisVoice {
15343    readonly default: boolean;
15344    readonly lang: string;
15345    readonly localService: boolean;
15346    readonly name: string;
15347    readonly voiceURI: string;
15348}
15349
15350declare var SpeechSynthesisVoice: {
15351    prototype: SpeechSynthesisVoice;
15352    new(): SpeechSynthesisVoice;
15353};
15354
15355interface StaticRange extends AbstractRange {
15356}
15357
15358declare var StaticRange: {
15359    prototype: StaticRange;
15360    new(init: StaticRangeInit): StaticRange;
15361};
15362
15363/** 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. */
15364interface StereoPannerNode extends AudioNode {
15365    readonly pan: AudioParam;
15366}
15367
15368declare var StereoPannerNode: {
15369    prototype: StereoPannerNode;
15370    new(context: BaseAudioContext, options?: StereoPannerOptions): StereoPannerNode;
15371};
15372
15373/** 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. */
15374interface Storage {
15375    /**
15376     * Returns the number of key/value pairs currently present in the list associated with the object.
15377     */
15378    readonly length: number;
15379    /**
15380     * Empties the list associated with the object of all key/value pairs, if there are any.
15381     */
15382    clear(): void;
15383    /**
15384     * Returns the current value associated with the given key, or null if the given key does not exist in the list associated with the object.
15385     */
15386    getItem(key: string): string | null;
15387    /**
15388     * Returns the name of the nth key in the list, or null if n is greater than or equal to the number of key/value pairs in the object.
15389     */
15390    key(index: number): string | null;
15391    /**
15392     * Removes the key/value pair with the given key from the list associated with the object, if a key/value pair with the given key exists.
15393     */
15394    removeItem(key: string): void;
15395    /**
15396     * Sets the value of the pair identified by key to value, creating a new key/value pair if none existed for key previously.
15397     *
15398     * 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.)
15399     */
15400    setItem(key: string, value: string): void;
15401    [name: string]: any;
15402}
15403
15404declare var Storage: {
15405    prototype: Storage;
15406    new(): Storage;
15407};
15408
15409/** A StorageEvent is sent to a window when a storage area it has access to is changed within the context of another document. */
15410interface StorageEvent extends Event {
15411    /**
15412     * Returns the key of the storage item being changed.
15413     */
15414    readonly key: string | null;
15415    /**
15416     * Returns the new value of the key of the storage item whose value is being changed.
15417     */
15418    readonly newValue: string | null;
15419    /**
15420     * Returns the old value of the key of the storage item whose value is being changed.
15421     */
15422    readonly oldValue: string | null;
15423    /**
15424     * Returns the Storage object that was affected.
15425     */
15426    readonly storageArea: Storage | null;
15427    /**
15428     * Returns the URL of the document whose storage item changed.
15429     */
15430    readonly url: string;
15431}
15432
15433declare var StorageEvent: {
15434    prototype: StorageEvent;
15435    new(type: string, eventInitDict?: StorageEventInit): StorageEvent;
15436};
15437
15438interface StorageManager {
15439    estimate(): Promise<StorageEstimate>;
15440    persist(): Promise<boolean>;
15441    persisted(): Promise<boolean>;
15442}
15443
15444declare var StorageManager: {
15445    prototype: StorageManager;
15446    new(): StorageManager;
15447};
15448
15449interface StyleMedia {
15450    readonly type: string;
15451    matchMedium(mediaquery: string): boolean;
15452}
15453
15454declare var StyleMedia: {
15455    prototype: StyleMedia;
15456    new(): StyleMedia;
15457};
15458
15459/** A single style sheet. CSS style sheets will further implement the more specialized CSSStyleSheet interface. */
15460interface StyleSheet {
15461    disabled: boolean;
15462    readonly href: string | null;
15463    readonly media: MediaList;
15464    readonly ownerNode: Element | ProcessingInstruction | null;
15465    readonly parentStyleSheet: CSSStyleSheet | null;
15466    readonly title: string | null;
15467    readonly type: string;
15468}
15469
15470declare var StyleSheet: {
15471    prototype: StyleSheet;
15472    new(): StyleSheet;
15473};
15474
15475/** A list of StyleSheet. */
15476interface StyleSheetList {
15477    readonly length: number;
15478    item(index: number): CSSStyleSheet | null;
15479    [index: number]: CSSStyleSheet;
15480}
15481
15482declare var StyleSheetList: {
15483    prototype: StyleSheetList;
15484    new(): StyleSheetList;
15485};
15486
15487/** 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). */
15488interface SubtleCrypto {
15489    decrypt(algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesCmacParams | AesGcmParams | AesCfbParams, key: CryptoKey, data: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer): Promise<ArrayBuffer>;
15490    deriveBits(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | DhKeyDeriveParams | ConcatParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, length: number): Promise<ArrayBuffer>;
15491    deriveKey(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | DhKeyDeriveParams | ConcatParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, derivedKeyType: string | AesDerivedKeyParams | HmacImportParams | ConcatParams | HkdfParams | Pbkdf2Params, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
15492    digest(algorithm: AlgorithmIdentifier, data: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer): Promise<ArrayBuffer>;
15493    encrypt(algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesCmacParams | AesGcmParams | AesCfbParams, key: CryptoKey, data: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer): Promise<ArrayBuffer>;
15494    exportKey(format: "jwk", key: CryptoKey): Promise<JsonWebKey>;
15495    exportKey(format: "raw" | "pkcs8" | "spki", key: CryptoKey): Promise<ArrayBuffer>;
15496    exportKey(format: string, key: CryptoKey): Promise<JsonWebKey | ArrayBuffer>;
15497    generateKey(algorithm: RsaHashedKeyGenParams | EcKeyGenParams | DhKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair>;
15498    generateKey(algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
15499    generateKey(algorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair | CryptoKey>;
15500    importKey(format: "jwk", keyData: JsonWebKey, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | DhImportKeyParams | AesKeyAlgorithm, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
15501    importKey(format: "raw" | "pkcs8" | "spki", keyData: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | DhImportKeyParams | AesKeyAlgorithm, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
15502    importKey(format: string, keyData: JsonWebKey | Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | DhImportKeyParams | AesKeyAlgorithm, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
15503    sign(algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams | AesCmacParams, key: CryptoKey, data: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer): Promise<ArrayBuffer>;
15504    unwrapKey(format: "raw" | "pkcs8" | "spki" | "jwk" | string, wrappedKey: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer, unwrappingKey: CryptoKey, unwrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesCmacParams | AesGcmParams | AesCfbParams, unwrappedKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | DhImportKeyParams | AesKeyAlgorithm, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
15505    verify(algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams | AesCmacParams, key: CryptoKey, signature: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer, data: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer): Promise<boolean>;
15506    wrapKey(format: "raw" | "pkcs8" | "spki" | "jwk" | string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesCmacParams | AesGcmParams | AesCfbParams): Promise<ArrayBuffer>;
15507}
15508
15509declare var SubtleCrypto: {
15510    prototype: SubtleCrypto;
15511    new(): SubtleCrypto;
15512};
15513
15514/** This ServiceWorker API interface provides an interface for registering and listing sync registrations. */
15515interface SyncManager {
15516    getTags(): Promise<string[]>;
15517    register(tag: string): Promise<void>;
15518}
15519
15520declare var SyncManager: {
15521    prototype: SyncManager;
15522    new(): SyncManager;
15523};
15524
15525/** 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. */
15526interface Text extends CharacterData, Slottable {
15527    readonly assignedSlot: HTMLSlotElement | null;
15528    /**
15529     * Returns the combined data of all direct Text node siblings.
15530     */
15531    readonly wholeText: string;
15532    /**
15533     * Splits data at the given offset and returns the remainder as Text node.
15534     */
15535    splitText(offset: number): Text;
15536}
15537
15538declare var Text: {
15539    prototype: Text;
15540    new(data?: string): Text;
15541};
15542
15543/** 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. */
15544interface TextDecoder extends TextDecoderCommon {
15545    /**
15546     * 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.
15547     *
15548     * ```
15549     * var string = "", decoder = new TextDecoder(encoding), buffer;
15550     * while(buffer = next_chunk()) {
15551     *   string += decoder.decode(buffer, {stream:true});
15552     * }
15553     * string += decoder.decode(); // end-of-queue
15554     * ```
15555     *
15556     * If the error mode is "fatal" and encoding's decoder returns error, throws a TypeError.
15557     */
15558    decode(input?: BufferSource, options?: TextDecodeOptions): string;
15559}
15560
15561declare var TextDecoder: {
15562    prototype: TextDecoder;
15563    new(label?: string, options?: TextDecoderOptions): TextDecoder;
15564};
15565
15566interface TextDecoderCommon {
15567    /**
15568     * Returns encoding's name, lowercased.
15569     */
15570    readonly encoding: string;
15571    /**
15572     * Returns true if error mode is "fatal", otherwise false.
15573     */
15574    readonly fatal: boolean;
15575    /**
15576     * Returns the value of ignore BOM.
15577     */
15578    readonly ignoreBOM: boolean;
15579}
15580
15581interface TextDecoderStream extends GenericTransformStream, TextDecoderCommon {
15582    readonly readable: ReadableStream<string>;
15583    readonly writable: WritableStream<BufferSource>;
15584}
15585
15586declare var TextDecoderStream: {
15587    prototype: TextDecoderStream;
15588    new(label?: string, options?: TextDecoderOptions): TextDecoderStream;
15589};
15590
15591/** 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. */
15592interface TextEncoder extends TextEncoderCommon {
15593    /**
15594     * Returns the result of running UTF-8's encoder.
15595     */
15596    encode(input?: string): Uint8Array;
15597    /**
15598     * 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.
15599     */
15600    encodeInto(source: string, destination: Uint8Array): TextEncoderEncodeIntoResult;
15601}
15602
15603declare var TextEncoder: {
15604    prototype: TextEncoder;
15605    new(): TextEncoder;
15606};
15607
15608interface TextEncoderCommon {
15609    /**
15610     * Returns "utf-8".
15611     */
15612    readonly encoding: string;
15613}
15614
15615interface TextEncoderStream extends GenericTransformStream, TextEncoderCommon {
15616    readonly readable: ReadableStream<Uint8Array>;
15617    readonly writable: WritableStream<string>;
15618}
15619
15620declare var TextEncoderStream: {
15621    prototype: TextEncoderStream;
15622    new(): TextEncoderStream;
15623};
15624
15625interface TextEvent extends UIEvent {
15626    readonly data: string;
15627    initTextEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, inputMethod: number, locale: string): void;
15628    readonly DOM_INPUT_METHOD_DROP: number;
15629    readonly DOM_INPUT_METHOD_HANDWRITING: number;
15630    readonly DOM_INPUT_METHOD_IME: number;
15631    readonly DOM_INPUT_METHOD_KEYBOARD: number;
15632    readonly DOM_INPUT_METHOD_MULTIMODAL: number;
15633    readonly DOM_INPUT_METHOD_OPTION: number;
15634    readonly DOM_INPUT_METHOD_PASTE: number;
15635    readonly DOM_INPUT_METHOD_SCRIPT: number;
15636    readonly DOM_INPUT_METHOD_UNKNOWN: number;
15637    readonly DOM_INPUT_METHOD_VOICE: number;
15638}
15639
15640declare var TextEvent: {
15641    prototype: TextEvent;
15642    new(): TextEvent;
15643    readonly DOM_INPUT_METHOD_DROP: number;
15644    readonly DOM_INPUT_METHOD_HANDWRITING: number;
15645    readonly DOM_INPUT_METHOD_IME: number;
15646    readonly DOM_INPUT_METHOD_KEYBOARD: number;
15647    readonly DOM_INPUT_METHOD_MULTIMODAL: number;
15648    readonly DOM_INPUT_METHOD_OPTION: number;
15649    readonly DOM_INPUT_METHOD_PASTE: number;
15650    readonly DOM_INPUT_METHOD_SCRIPT: number;
15651    readonly DOM_INPUT_METHOD_UNKNOWN: number;
15652    readonly DOM_INPUT_METHOD_VOICE: number;
15653};
15654
15655/** The dimensions of a piece of text in the canvas, as created by the CanvasRenderingContext2D.measureText() method. */
15656interface TextMetrics {
15657    /**
15658     * Returns the measurement described below.
15659     */
15660    readonly actualBoundingBoxAscent: number;
15661    /**
15662     * Returns the measurement described below.
15663     */
15664    readonly actualBoundingBoxDescent: number;
15665    /**
15666     * Returns the measurement described below.
15667     */
15668    readonly actualBoundingBoxLeft: number;
15669    /**
15670     * Returns the measurement described below.
15671     */
15672    readonly actualBoundingBoxRight: number;
15673    /**
15674     * Returns the measurement described below.
15675     */
15676    readonly alphabeticBaseline: number;
15677    /**
15678     * Returns the measurement described below.
15679     */
15680    readonly emHeightAscent: number;
15681    /**
15682     * Returns the measurement described below.
15683     */
15684    readonly emHeightDescent: number;
15685    /**
15686     * Returns the measurement described below.
15687     */
15688    readonly fontBoundingBoxAscent: number;
15689    /**
15690     * Returns the measurement described below.
15691     */
15692    readonly fontBoundingBoxDescent: number;
15693    /**
15694     * Returns the measurement described below.
15695     */
15696    readonly hangingBaseline: number;
15697    /**
15698     * Returns the measurement described below.
15699     */
15700    readonly ideographicBaseline: number;
15701    /**
15702     * Returns the measurement described below.
15703     */
15704    readonly width: number;
15705}
15706
15707declare var TextMetrics: {
15708    prototype: TextMetrics;
15709    new(): TextMetrics;
15710};
15711
15712interface TextTrackEventMap {
15713    "cuechange": Event;
15714}
15715
15716/** This interface also inherits properties from EventTarget. */
15717interface TextTrack extends EventTarget {
15718    /**
15719     * 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.
15720     */
15721    readonly activeCues: TextTrackCueList | null;
15722    /**
15723     * Returns the text track list of cues, as a TextTrackCueList object.
15724     */
15725    readonly cues: TextTrackCueList | null;
15726    /**
15727     * Returns the ID of the given track.
15728     *
15729     * 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.
15730     *
15731     * For TextTrack objects corresponding to track elements, this is the ID of the track element.
15732     */
15733    readonly id: string;
15734    /**
15735     * Returns the text track in-band metadata track dispatch type string.
15736     */
15737    readonly inBandMetadataTrackDispatchType: string;
15738    /**
15739     * Returns the text track kind string.
15740     */
15741    readonly kind: TextTrackKind;
15742    /**
15743     * 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).
15744     */
15745    readonly label: string;
15746    /**
15747     * Returns the text track language string.
15748     */
15749    readonly language: string;
15750    /**
15751     * Returns the text track mode, represented by a string from the following list:
15752     *
15753     * Can be set, to change the mode.
15754     */
15755    mode: TextTrackMode;
15756    oncuechange: ((this: TextTrack, ev: Event) => any) | null;
15757    readonly sourceBuffer: SourceBuffer | null;
15758    /**
15759     * Adds the given cue to textTrack's text track list of cues.
15760     */
15761    addCue(cue: TextTrackCue): void;
15762    /**
15763     * Removes the given cue from textTrack's text track list of cues.
15764     */
15765    removeCue(cue: TextTrackCue): void;
15766    addEventListener<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
15767    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
15768    removeEventListener<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
15769    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
15770}
15771
15772declare var TextTrack: {
15773    prototype: TextTrack;
15774    new(): TextTrack;
15775};
15776
15777interface TextTrackCueEventMap {
15778    "enter": Event;
15779    "exit": Event;
15780}
15781
15782/** 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. */
15783interface TextTrackCue extends EventTarget {
15784    /**
15785     * Returns the text track cue end time, in seconds.
15786     *
15787     * Can be set.
15788     */
15789    endTime: number;
15790    /**
15791     * Returns the text track cue identifier.
15792     *
15793     * Can be set.
15794     */
15795    id: string;
15796    onenter: ((this: TextTrackCue, ev: Event) => any) | null;
15797    onexit: ((this: TextTrackCue, ev: Event) => any) | null;
15798    /**
15799     * Returns true if the text track cue pause-on-exit flag is set, false otherwise.
15800     *
15801     * Can be set.
15802     */
15803    pauseOnExit: boolean;
15804    /**
15805     * Returns the text track cue start time, in seconds.
15806     *
15807     * Can be set.
15808     */
15809    startTime: number;
15810    /**
15811     * Returns the TextTrack object to which this text track cue belongs, if any, or null otherwise.
15812     */
15813    readonly track: TextTrack | null;
15814    addEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
15815    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
15816    removeEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
15817    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
15818}
15819
15820declare var TextTrackCue: {
15821    prototype: TextTrackCue;
15822    new(): TextTrackCue;
15823};
15824
15825interface TextTrackCueList {
15826    /**
15827     * Returns the number of cues in the list.
15828     */
15829    readonly length: number;
15830    /**
15831     * Returns the first text track cue (in text track cue order) with text track cue identifier id.
15832     *
15833     * Returns null if none of the cues have the given identifier or if the argument is the empty string.
15834     */
15835    getCueById(id: string): TextTrackCue | null;
15836    [index: number]: TextTrackCue;
15837}
15838
15839declare var TextTrackCueList: {
15840    prototype: TextTrackCueList;
15841    new(): TextTrackCueList;
15842};
15843
15844interface TextTrackListEventMap {
15845    "addtrack": TrackEvent;
15846    "change": Event;
15847    "removetrack": TrackEvent;
15848}
15849
15850interface TextTrackList extends EventTarget {
15851    readonly length: number;
15852    onaddtrack: ((this: TextTrackList, ev: TrackEvent) => any) | null;
15853    onchange: ((this: TextTrackList, ev: Event) => any) | null;
15854    onremovetrack: ((this: TextTrackList, ev: TrackEvent) => any) | null;
15855    getTrackById(id: string): TextTrack | null;
15856    addEventListener<K extends keyof TextTrackListEventMap>(type: K, listener: (this: TextTrackList, ev: TextTrackListEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
15857    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
15858    removeEventListener<K extends keyof TextTrackListEventMap>(type: K, listener: (this: TextTrackList, ev: TextTrackListEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
15859    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
15860    [index: number]: TextTrack;
15861}
15862
15863declare var TextTrackList: {
15864    prototype: TextTrackList;
15865    new(): TextTrackList;
15866};
15867
15868/** 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. */
15869interface TimeRanges {
15870    /**
15871     * Returns the number of ranges in the object.
15872     */
15873    readonly length: number;
15874    /**
15875     * Returns the time for the end of the range with the given index.
15876     *
15877     * Throws an "IndexSizeError" DOMException if the index is out of range.
15878     */
15879    end(index: number): number;
15880    /**
15881     * Returns the time for the start of the range with the given index.
15882     *
15883     * Throws an "IndexSizeError" DOMException if the index is out of range.
15884     */
15885    start(index: number): number;
15886}
15887
15888declare var TimeRanges: {
15889    prototype: TimeRanges;
15890    new(): TimeRanges;
15891};
15892
15893/** 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. */
15894interface Touch {
15895    readonly altitudeAngle: number;
15896    readonly azimuthAngle: number;
15897    readonly clientX: number;
15898    readonly clientY: number;
15899    readonly force: number;
15900    readonly identifier: number;
15901    readonly pageX: number;
15902    readonly pageY: number;
15903    readonly radiusX: number;
15904    readonly radiusY: number;
15905    readonly rotationAngle: number;
15906    readonly screenX: number;
15907    readonly screenY: number;
15908    readonly target: EventTarget;
15909    readonly touchType: TouchType;
15910}
15911
15912declare var Touch: {
15913    prototype: Touch;
15914    new(touchInitDict: TouchInit): Touch;
15915};
15916
15917/** 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. */
15918interface TouchEvent extends UIEvent {
15919    readonly altKey: boolean;
15920    readonly changedTouches: TouchList;
15921    readonly ctrlKey: boolean;
15922    readonly metaKey: boolean;
15923    readonly shiftKey: boolean;
15924    readonly targetTouches: TouchList;
15925    readonly touches: TouchList;
15926}
15927
15928declare var TouchEvent: {
15929    prototype: TouchEvent;
15930    new(type: string, eventInitDict?: TouchEventInit): TouchEvent;
15931};
15932
15933/** 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. */
15934interface TouchList {
15935    readonly length: number;
15936    item(index: number): Touch | null;
15937    [index: number]: Touch;
15938}
15939
15940declare var TouchList: {
15941    prototype: TouchList;
15942    new(): TouchList;
15943};
15944
15945/** 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. */
15946interface TrackEvent extends Event {
15947    /**
15948     * Returns the track object (TextTrack, AudioTrack, or VideoTrack) to which the event relates.
15949     */
15950    readonly track: TextTrack | null;
15951}
15952
15953declare var TrackEvent: {
15954    prototype: TrackEvent;
15955    new(type: string, eventInitDict?: TrackEventInit): TrackEvent;
15956};
15957
15958interface TransformStream<I = any, O = any> {
15959    readonly readable: ReadableStream<O>;
15960    readonly writable: WritableStream<I>;
15961}
15962
15963declare var TransformStream: {
15964    prototype: TransformStream;
15965    new<I = any, O = any>(transformer?: Transformer<I, O>, writableStrategy?: QueuingStrategy<I>, readableStrategy?: QueuingStrategy<O>): TransformStream<I, O>;
15966};
15967
15968interface TransformStreamDefaultController<O = any> {
15969    readonly desiredSize: number | null;
15970    enqueue(chunk: O): void;
15971    error(reason?: any): void;
15972    terminate(): void;
15973}
15974
15975declare var TransformStreamDefaultController: {
15976    prototype: TransformStreamDefaultController;
15977    new(): TransformStreamDefaultController;
15978};
15979
15980/** Events providing information related to transitions. */
15981interface TransitionEvent extends Event {
15982    readonly elapsedTime: number;
15983    readonly propertyName: string;
15984    readonly pseudoElement: string;
15985}
15986
15987declare var TransitionEvent: {
15988    prototype: TransitionEvent;
15989    new(type: string, transitionEventInitDict?: TransitionEventInit): TransitionEvent;
15990};
15991
15992/** The nodes of a document subtree and a position within them. */
15993interface TreeWalker {
15994    currentNode: Node;
15995    readonly filter: NodeFilter | null;
15996    readonly root: Node;
15997    readonly whatToShow: number;
15998    firstChild(): Node | null;
15999    lastChild(): Node | null;
16000    nextNode(): Node | null;
16001    nextSibling(): Node | null;
16002    parentNode(): Node | null;
16003    previousNode(): Node | null;
16004    previousSibling(): Node | null;
16005}
16006
16007declare var TreeWalker: {
16008    prototype: TreeWalker;
16009    new(): TreeWalker;
16010};
16011
16012/** Simple user interface events. */
16013interface UIEvent extends Event {
16014    readonly detail: number;
16015    readonly view: Window | null;
16016    /** @deprecated */
16017    readonly which: number;
16018}
16019
16020declare var UIEvent: {
16021    prototype: UIEvent;
16022    new(type: string, eventInitDict?: UIEventInit): UIEvent;
16023};
16024
16025/** The URL interface represents an object providing static methods used for creating object URLs. */
16026interface URL {
16027    hash: string;
16028    host: string;
16029    hostname: string;
16030    href: string;
16031    toString(): string;
16032    readonly origin: string;
16033    password: string;
16034    pathname: string;
16035    port: string;
16036    protocol: string;
16037    search: string;
16038    readonly searchParams: URLSearchParams;
16039    username: string;
16040    toJSON(): string;
16041}
16042
16043declare var URL: {
16044    prototype: URL;
16045    new(url: string, base?: string | URL): URL;
16046    createObjectURL(object: any): string;
16047    revokeObjectURL(url: string): void;
16048};
16049
16050type webkitURL = URL;
16051declare var webkitURL: typeof URL;
16052
16053interface URLSearchParams {
16054    /**
16055     * Appends a specified key/value pair as a new search parameter.
16056     */
16057    append(name: string, value: string): void;
16058    /**
16059     * Deletes the given search parameter, and its associated value, from the list of all search parameters.
16060     */
16061    delete(name: string): void;
16062    /**
16063     * Returns the first value associated to the given search parameter.
16064     */
16065    get(name: string): string | null;
16066    /**
16067     * Returns all the values association with a given search parameter.
16068     */
16069    getAll(name: string): string[];
16070    /**
16071     * Returns a Boolean indicating if such a search parameter exists.
16072     */
16073    has(name: string): boolean;
16074    /**
16075     * Sets the value associated to a given search parameter to the given value. If there were several values, delete the others.
16076     */
16077    set(name: string, value: string): void;
16078    sort(): void;
16079    /**
16080     * Returns a string containing a query string suitable for use in a URL. Does not include the question mark.
16081     */
16082    toString(): string;
16083    forEach(callbackfn: (value: string, key: string, parent: URLSearchParams) => void, thisArg?: any): void;
16084}
16085
16086declare var URLSearchParams: {
16087    prototype: URLSearchParams;
16088    new(init?: string[][] | Record<string, string> | string | URLSearchParams): URLSearchParams;
16089    toString(): string;
16090};
16091
16092/** This WebVR API interface represents any VR device supported by this API. It includes generic information such as device IDs and descriptions, as well as methods for starting to present a VR scene, retrieving eye parameters and display capabilities, and other important functionality. */
16093interface VRDisplay extends EventTarget {
16094    readonly capabilities: VRDisplayCapabilities;
16095    depthFar: number;
16096    depthNear: number;
16097    readonly displayId: number;
16098    readonly displayName: string;
16099    readonly isConnected: boolean;
16100    readonly isPresenting: boolean;
16101    readonly stageParameters: VRStageParameters | null;
16102    cancelAnimationFrame(handle: number): void;
16103    exitPresent(): Promise<void>;
16104    getEyeParameters(whichEye: string): VREyeParameters;
16105    getFrameData(frameData: VRFrameData): boolean;
16106    getLayers(): VRLayer[];
16107    /** @deprecated */
16108    getPose(): VRPose;
16109    requestAnimationFrame(callback: FrameRequestCallback): number;
16110    requestPresent(layers: VRLayer[]): Promise<void>;
16111    resetPose(): void;
16112    submitFrame(pose?: VRPose): void;
16113}
16114
16115declare var VRDisplay: {
16116    prototype: VRDisplay;
16117    new(): VRDisplay;
16118};
16119
16120/** This WebVR API interface describes the capabilities of a VRDisplay — its features can be used to perform VR device capability tests, for example can it return position information. */
16121interface VRDisplayCapabilities {
16122    readonly canPresent: boolean;
16123    readonly hasExternalDisplay: boolean;
16124    readonly hasOrientation: boolean;
16125    readonly hasPosition: boolean;
16126    readonly maxLayers: number;
16127}
16128
16129declare var VRDisplayCapabilities: {
16130    prototype: VRDisplayCapabilities;
16131    new(): VRDisplayCapabilities;
16132};
16133
16134/** This WebVR API interface represents represents the event object of WebVR-related events (see the list of WebVR window extensions). */
16135interface VRDisplayEvent extends Event {
16136    readonly display: VRDisplay;
16137    readonly reason: VRDisplayEventReason | null;
16138}
16139
16140declare var VRDisplayEvent: {
16141    prototype: VRDisplayEvent;
16142    new(type: string, eventInitDict: VRDisplayEventInit): VRDisplayEvent;
16143};
16144
16145/** This WebVR API interface represents all the information required to correctly render a scene for a given eye, including field of view information. */
16146interface VREyeParameters {
16147    /** @deprecated */
16148    readonly fieldOfView: VRFieldOfView;
16149    readonly offset: Float32Array;
16150    readonly renderHeight: number;
16151    readonly renderWidth: number;
16152}
16153
16154declare var VREyeParameters: {
16155    prototype: VREyeParameters;
16156    new(): VREyeParameters;
16157};
16158
16159/** This WebVR API interface represents a field of view defined by 4 different degree values describing the view from a center point. */
16160interface VRFieldOfView {
16161    readonly downDegrees: number;
16162    readonly leftDegrees: number;
16163    readonly rightDegrees: number;
16164    readonly upDegrees: number;
16165}
16166
16167declare var VRFieldOfView: {
16168    prototype: VRFieldOfView;
16169    new(): VRFieldOfView;
16170};
16171
16172/** This WebVR API interface represents all the information needed to render a single frame of a VR scene; constructed by VRDisplay.getFrameData(). */
16173interface VRFrameData {
16174    readonly leftProjectionMatrix: Float32Array;
16175    readonly leftViewMatrix: Float32Array;
16176    readonly pose: VRPose;
16177    readonly rightProjectionMatrix: Float32Array;
16178    readonly rightViewMatrix: Float32Array;
16179    readonly timestamp: number;
16180}
16181
16182declare var VRFrameData: {
16183    prototype: VRFrameData;
16184    new(): VRFrameData;
16185};
16186
16187/** This WebVR API interface represents the state of a VR sensor at a given timestamp (which includes orientation, position, velocity, and acceleration information.) */
16188interface VRPose {
16189    readonly angularAcceleration: Float32Array | null;
16190    readonly angularVelocity: Float32Array | null;
16191    readonly linearAcceleration: Float32Array | null;
16192    readonly linearVelocity: Float32Array | null;
16193    readonly orientation: Float32Array | null;
16194    readonly position: Float32Array | null;
16195    readonly timestamp: number;
16196}
16197
16198declare var VRPose: {
16199    prototype: VRPose;
16200    new(): VRPose;
16201};
16202
16203interface VTTCue extends TextTrackCue {
16204    align: AlignSetting;
16205    line: LineAndPositionSetting;
16206    lineAlign: LineAlignSetting;
16207    position: LineAndPositionSetting;
16208    positionAlign: PositionAlignSetting;
16209    region: VTTRegion | null;
16210    size: number;
16211    snapToLines: boolean;
16212    text: string;
16213    vertical: DirectionSetting;
16214    getCueAsHTML(): DocumentFragment;
16215    addEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: VTTCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
16216    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
16217    removeEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: VTTCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
16218    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
16219}
16220
16221declare var VTTCue: {
16222    prototype: VTTCue;
16223    new(startTime: number, endTime: number, text: string): VTTCue;
16224};
16225
16226interface VTTRegion {
16227    id: string;
16228    lines: number;
16229    regionAnchorX: number;
16230    regionAnchorY: number;
16231    scroll: ScrollSetting;
16232    viewportAnchorX: number;
16233    viewportAnchorY: number;
16234    width: number;
16235}
16236
16237declare var VTTRegion: {
16238    prototype: VTTRegion;
16239    new(): VTTRegion;
16240};
16241
16242/** 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. */
16243interface ValidityState {
16244    readonly badInput: boolean;
16245    readonly customError: boolean;
16246    readonly patternMismatch: boolean;
16247    readonly rangeOverflow: boolean;
16248    readonly rangeUnderflow: boolean;
16249    readonly stepMismatch: boolean;
16250    readonly tooLong: boolean;
16251    readonly tooShort: boolean;
16252    readonly typeMismatch: boolean;
16253    readonly valid: boolean;
16254    readonly valueMissing: boolean;
16255}
16256
16257declare var ValidityState: {
16258    prototype: ValidityState;
16259    new(): ValidityState;
16260};
16261
16262/** Returned by the HTMLVideoElement.getVideoPlaybackQuality() method and contains metrics that can be used to determine the playback quality of a video. */
16263interface VideoPlaybackQuality {
16264    readonly creationTime: number;
16265    readonly droppedVideoFrames: number;
16266    readonly totalVideoFrames: number;
16267}
16268
16269declare var VideoPlaybackQuality: {
16270    prototype: VideoPlaybackQuality;
16271    new(): VideoPlaybackQuality;
16272};
16273
16274interface VisualViewportEventMap {
16275    "resize": UIEvent;
16276    "scroll": Event;
16277}
16278
16279interface VisualViewport extends EventTarget {
16280    readonly height: number;
16281    readonly offsetLeft: number;
16282    readonly offsetTop: number;
16283    onresize: ((this: VisualViewport, ev: UIEvent) => any) | null;
16284    onscroll: ((this: VisualViewport, ev: Event) => any) | null;
16285    readonly pageLeft: number;
16286    readonly pageTop: number;
16287    readonly scale: number;
16288    readonly width: number;
16289    addEventListener<K extends keyof VisualViewportEventMap>(type: K, listener: (this: VisualViewport, ev: VisualViewportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
16290    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
16291    removeEventListener<K extends keyof VisualViewportEventMap>(type: K, listener: (this: VisualViewport, ev: VisualViewportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
16292    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
16293}
16294
16295declare var VisualViewport: {
16296    prototype: VisualViewport;
16297    new(): VisualViewport;
16298};
16299
16300interface WEBGL_color_buffer_float {
16301    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: GLenum;
16302    readonly RGBA32F_EXT: GLenum;
16303    readonly UNSIGNED_NORMALIZED_EXT: GLenum;
16304}
16305
16306interface WEBGL_compressed_texture_astc {
16307    getSupportedProfiles(): string[];
16308    readonly COMPRESSED_RGBA_ASTC_10x10_KHR: GLenum;
16309    readonly COMPRESSED_RGBA_ASTC_10x5_KHR: GLenum;
16310    readonly COMPRESSED_RGBA_ASTC_10x6_KHR: GLenum;
16311    readonly COMPRESSED_RGBA_ASTC_10x8_KHR: GLenum;
16312    readonly COMPRESSED_RGBA_ASTC_12x10_KHR: GLenum;
16313    readonly COMPRESSED_RGBA_ASTC_12x12_KHR: GLenum;
16314    readonly COMPRESSED_RGBA_ASTC_4x4_KHR: GLenum;
16315    readonly COMPRESSED_RGBA_ASTC_5x4_KHR: GLenum;
16316    readonly COMPRESSED_RGBA_ASTC_5x5_KHR: GLenum;
16317    readonly COMPRESSED_RGBA_ASTC_6x5_KHR: GLenum;
16318    readonly COMPRESSED_RGBA_ASTC_6x6_KHR: GLenum;
16319    readonly COMPRESSED_RGBA_ASTC_8x5_KHR: GLenum;
16320    readonly COMPRESSED_RGBA_ASTC_8x6_KHR: GLenum;
16321    readonly COMPRESSED_RGBA_ASTC_8x8_KHR: GLenum;
16322    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: GLenum;
16323    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: GLenum;
16324    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: GLenum;
16325    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: GLenum;
16326    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: GLenum;
16327    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: GLenum;
16328    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: GLenum;
16329    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: GLenum;
16330    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: GLenum;
16331    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: GLenum;
16332    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: GLenum;
16333    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: GLenum;
16334    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: GLenum;
16335    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: GLenum;
16336}
16337
16338/** The WEBGL_compressed_texture_s3tc extension is part of the WebGL API and exposes four S3TC compressed texture formats. */
16339interface WEBGL_compressed_texture_s3tc {
16340    readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: GLenum;
16341    readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: GLenum;
16342    readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: GLenum;
16343    readonly COMPRESSED_RGB_S3TC_DXT1_EXT: GLenum;
16344}
16345
16346interface WEBGL_compressed_texture_s3tc_srgb {
16347    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: GLenum;
16348    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: GLenum;
16349    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: GLenum;
16350    readonly COMPRESSED_SRGB_S3TC_DXT1_EXT: GLenum;
16351}
16352
16353/** 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. */
16354interface WEBGL_debug_renderer_info {
16355    readonly UNMASKED_RENDERER_WEBGL: GLenum;
16356    readonly UNMASKED_VENDOR_WEBGL: GLenum;
16357}
16358
16359interface WEBGL_debug_shaders {
16360    getTranslatedShaderSource(shader: WebGLShader): string;
16361}
16362
16363/** The WEBGL_depth_texture extension is part of the WebGL API and defines 2D depth and depth-stencil textures. */
16364interface WEBGL_depth_texture {
16365    readonly UNSIGNED_INT_24_8_WEBGL: GLenum;
16366}
16367
16368interface WEBGL_draw_buffers {
16369    drawBuffersWEBGL(buffers: GLenum[]): void;
16370    readonly COLOR_ATTACHMENT0_WEBGL: GLenum;
16371    readonly COLOR_ATTACHMENT10_WEBGL: GLenum;
16372    readonly COLOR_ATTACHMENT11_WEBGL: GLenum;
16373    readonly COLOR_ATTACHMENT12_WEBGL: GLenum;
16374    readonly COLOR_ATTACHMENT13_WEBGL: GLenum;
16375    readonly COLOR_ATTACHMENT14_WEBGL: GLenum;
16376    readonly COLOR_ATTACHMENT15_WEBGL: GLenum;
16377    readonly COLOR_ATTACHMENT1_WEBGL: GLenum;
16378    readonly COLOR_ATTACHMENT2_WEBGL: GLenum;
16379    readonly COLOR_ATTACHMENT3_WEBGL: GLenum;
16380    readonly COLOR_ATTACHMENT4_WEBGL: GLenum;
16381    readonly COLOR_ATTACHMENT5_WEBGL: GLenum;
16382    readonly COLOR_ATTACHMENT6_WEBGL: GLenum;
16383    readonly COLOR_ATTACHMENT7_WEBGL: GLenum;
16384    readonly COLOR_ATTACHMENT8_WEBGL: GLenum;
16385    readonly COLOR_ATTACHMENT9_WEBGL: GLenum;
16386    readonly DRAW_BUFFER0_WEBGL: GLenum;
16387    readonly DRAW_BUFFER10_WEBGL: GLenum;
16388    readonly DRAW_BUFFER11_WEBGL: GLenum;
16389    readonly DRAW_BUFFER12_WEBGL: GLenum;
16390    readonly DRAW_BUFFER13_WEBGL: GLenum;
16391    readonly DRAW_BUFFER14_WEBGL: GLenum;
16392    readonly DRAW_BUFFER15_WEBGL: GLenum;
16393    readonly DRAW_BUFFER1_WEBGL: GLenum;
16394    readonly DRAW_BUFFER2_WEBGL: GLenum;
16395    readonly DRAW_BUFFER3_WEBGL: GLenum;
16396    readonly DRAW_BUFFER4_WEBGL: GLenum;
16397    readonly DRAW_BUFFER5_WEBGL: GLenum;
16398    readonly DRAW_BUFFER6_WEBGL: GLenum;
16399    readonly DRAW_BUFFER7_WEBGL: GLenum;
16400    readonly DRAW_BUFFER8_WEBGL: GLenum;
16401    readonly DRAW_BUFFER9_WEBGL: GLenum;
16402    readonly MAX_COLOR_ATTACHMENTS_WEBGL: GLenum;
16403    readonly MAX_DRAW_BUFFERS_WEBGL: GLenum;
16404}
16405
16406interface WEBGL_lose_context {
16407    loseContext(): void;
16408    restoreContext(): void;
16409}
16410
16411/** A WaveShaperNode always has exactly one input and one output. */
16412interface WaveShaperNode extends AudioNode {
16413    curve: Float32Array | null;
16414    oversample: OverSampleType;
16415}
16416
16417declare var WaveShaperNode: {
16418    prototype: WaveShaperNode;
16419    new(context: BaseAudioContext, options?: WaveShaperOptions): WaveShaperNode;
16420};
16421
16422interface WebAuthentication {
16423    getAssertion(assertionChallenge: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer | null, options?: AssertionOptions): Promise<WebAuthnAssertion>;
16424    makeCredential(accountInformation: Account, cryptoParameters: ScopedCredentialParameters[], attestationChallenge: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer | null, options?: ScopedCredentialOptions): Promise<ScopedCredentialInfo>;
16425}
16426
16427declare var WebAuthentication: {
16428    prototype: WebAuthentication;
16429    new(): WebAuthentication;
16430};
16431
16432interface WebAuthnAssertion {
16433    readonly authenticatorData: ArrayBuffer;
16434    readonly clientData: ArrayBuffer;
16435    readonly credential: ScopedCredential;
16436    readonly signature: ArrayBuffer;
16437}
16438
16439declare var WebAuthnAssertion: {
16440    prototype: WebAuthnAssertion;
16441    new(): WebAuthnAssertion;
16442};
16443
16444interface WebGL2RenderingContext extends WebGL2RenderingContextBase, WebGL2RenderingContextOverloads, WebGLRenderingContextBase {
16445}
16446
16447declare var WebGL2RenderingContext: {
16448    prototype: WebGL2RenderingContext;
16449    new(): WebGL2RenderingContext;
16450    readonly ACTIVE_ATTRIBUTES: GLenum;
16451    readonly ACTIVE_TEXTURE: GLenum;
16452    readonly ACTIVE_UNIFORMS: GLenum;
16453    readonly ALIASED_LINE_WIDTH_RANGE: GLenum;
16454    readonly ALIASED_POINT_SIZE_RANGE: GLenum;
16455    readonly ALPHA: GLenum;
16456    readonly ALPHA_BITS: GLenum;
16457    readonly ALWAYS: GLenum;
16458    readonly ARRAY_BUFFER: GLenum;
16459    readonly ARRAY_BUFFER_BINDING: GLenum;
16460    readonly ATTACHED_SHADERS: GLenum;
16461    readonly BACK: GLenum;
16462    readonly BLEND: GLenum;
16463    readonly BLEND_COLOR: GLenum;
16464    readonly BLEND_DST_ALPHA: GLenum;
16465    readonly BLEND_DST_RGB: GLenum;
16466    readonly BLEND_EQUATION: GLenum;
16467    readonly BLEND_EQUATION_ALPHA: GLenum;
16468    readonly BLEND_EQUATION_RGB: GLenum;
16469    readonly BLEND_SRC_ALPHA: GLenum;
16470    readonly BLEND_SRC_RGB: GLenum;
16471    readonly BLUE_BITS: GLenum;
16472    readonly BOOL: GLenum;
16473    readonly BOOL_VEC2: GLenum;
16474    readonly BOOL_VEC3: GLenum;
16475    readonly BOOL_VEC4: GLenum;
16476    readonly BROWSER_DEFAULT_WEBGL: GLenum;
16477    readonly BUFFER_SIZE: GLenum;
16478    readonly BUFFER_USAGE: GLenum;
16479    readonly BYTE: GLenum;
16480    readonly CCW: GLenum;
16481    readonly CLAMP_TO_EDGE: GLenum;
16482    readonly COLOR_ATTACHMENT0: GLenum;
16483    readonly COLOR_BUFFER_BIT: GLenum;
16484    readonly COLOR_CLEAR_VALUE: GLenum;
16485    readonly COLOR_WRITEMASK: GLenum;
16486    readonly COMPILE_STATUS: GLenum;
16487    readonly COMPRESSED_TEXTURE_FORMATS: GLenum;
16488    readonly CONSTANT_ALPHA: GLenum;
16489    readonly CONSTANT_COLOR: GLenum;
16490    readonly CONTEXT_LOST_WEBGL: GLenum;
16491    readonly CULL_FACE: GLenum;
16492    readonly CULL_FACE_MODE: GLenum;
16493    readonly CURRENT_PROGRAM: GLenum;
16494    readonly CURRENT_VERTEX_ATTRIB: GLenum;
16495    readonly CW: GLenum;
16496    readonly DECR: GLenum;
16497    readonly DECR_WRAP: GLenum;
16498    readonly DELETE_STATUS: GLenum;
16499    readonly DEPTH_ATTACHMENT: GLenum;
16500    readonly DEPTH_BITS: GLenum;
16501    readonly DEPTH_BUFFER_BIT: GLenum;
16502    readonly DEPTH_CLEAR_VALUE: GLenum;
16503    readonly DEPTH_COMPONENT: GLenum;
16504    readonly DEPTH_COMPONENT16: GLenum;
16505    readonly DEPTH_FUNC: GLenum;
16506    readonly DEPTH_RANGE: GLenum;
16507    readonly DEPTH_STENCIL: GLenum;
16508    readonly DEPTH_STENCIL_ATTACHMENT: GLenum;
16509    readonly DEPTH_TEST: GLenum;
16510    readonly DEPTH_WRITEMASK: GLenum;
16511    readonly DITHER: GLenum;
16512    readonly DONT_CARE: GLenum;
16513    readonly DST_ALPHA: GLenum;
16514    readonly DST_COLOR: GLenum;
16515    readonly DYNAMIC_DRAW: GLenum;
16516    readonly ELEMENT_ARRAY_BUFFER: GLenum;
16517    readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum;
16518    readonly EQUAL: GLenum;
16519    readonly FASTEST: GLenum;
16520    readonly FLOAT: GLenum;
16521    readonly FLOAT_MAT2: GLenum;
16522    readonly FLOAT_MAT3: GLenum;
16523    readonly FLOAT_MAT4: GLenum;
16524    readonly FLOAT_VEC2: GLenum;
16525    readonly FLOAT_VEC3: GLenum;
16526    readonly FLOAT_VEC4: GLenum;
16527    readonly FRAGMENT_SHADER: GLenum;
16528    readonly FRAMEBUFFER: GLenum;
16529    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum;
16530    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum;
16531    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum;
16532    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum;
16533    readonly FRAMEBUFFER_BINDING: GLenum;
16534    readonly FRAMEBUFFER_COMPLETE: GLenum;
16535    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum;
16536    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum;
16537    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum;
16538    readonly FRAMEBUFFER_UNSUPPORTED: GLenum;
16539    readonly FRONT: GLenum;
16540    readonly FRONT_AND_BACK: GLenum;
16541    readonly FRONT_FACE: GLenum;
16542    readonly FUNC_ADD: GLenum;
16543    readonly FUNC_REVERSE_SUBTRACT: GLenum;
16544    readonly FUNC_SUBTRACT: GLenum;
16545    readonly GENERATE_MIPMAP_HINT: GLenum;
16546    readonly GEQUAL: GLenum;
16547    readonly GREATER: GLenum;
16548    readonly GREEN_BITS: GLenum;
16549    readonly HIGH_FLOAT: GLenum;
16550    readonly HIGH_INT: GLenum;
16551    readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum;
16552    readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum;
16553    readonly INCR: GLenum;
16554    readonly INCR_WRAP: GLenum;
16555    readonly INT: GLenum;
16556    readonly INT_VEC2: GLenum;
16557    readonly INT_VEC3: GLenum;
16558    readonly INT_VEC4: GLenum;
16559    readonly INVALID_ENUM: GLenum;
16560    readonly INVALID_FRAMEBUFFER_OPERATION: GLenum;
16561    readonly INVALID_OPERATION: GLenum;
16562    readonly INVALID_VALUE: GLenum;
16563    readonly INVERT: GLenum;
16564    readonly KEEP: GLenum;
16565    readonly LEQUAL: GLenum;
16566    readonly LESS: GLenum;
16567    readonly LINEAR: GLenum;
16568    readonly LINEAR_MIPMAP_LINEAR: GLenum;
16569    readonly LINEAR_MIPMAP_NEAREST: GLenum;
16570    readonly LINES: GLenum;
16571    readonly LINE_LOOP: GLenum;
16572    readonly LINE_STRIP: GLenum;
16573    readonly LINE_WIDTH: GLenum;
16574    readonly LINK_STATUS: GLenum;
16575    readonly LOW_FLOAT: GLenum;
16576    readonly LOW_INT: GLenum;
16577    readonly LUMINANCE: GLenum;
16578    readonly LUMINANCE_ALPHA: GLenum;
16579    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum;
16580    readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum;
16581    readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum;
16582    readonly MAX_RENDERBUFFER_SIZE: GLenum;
16583    readonly MAX_TEXTURE_IMAGE_UNITS: GLenum;
16584    readonly MAX_TEXTURE_SIZE: GLenum;
16585    readonly MAX_VARYING_VECTORS: GLenum;
16586    readonly MAX_VERTEX_ATTRIBS: GLenum;
16587    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum;
16588    readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum;
16589    readonly MAX_VIEWPORT_DIMS: GLenum;
16590    readonly MEDIUM_FLOAT: GLenum;
16591    readonly MEDIUM_INT: GLenum;
16592    readonly MIRRORED_REPEAT: GLenum;
16593    readonly NEAREST: GLenum;
16594    readonly NEAREST_MIPMAP_LINEAR: GLenum;
16595    readonly NEAREST_MIPMAP_NEAREST: GLenum;
16596    readonly NEVER: GLenum;
16597    readonly NICEST: GLenum;
16598    readonly NONE: GLenum;
16599    readonly NOTEQUAL: GLenum;
16600    readonly NO_ERROR: GLenum;
16601    readonly ONE: GLenum;
16602    readonly ONE_MINUS_CONSTANT_ALPHA: GLenum;
16603    readonly ONE_MINUS_CONSTANT_COLOR: GLenum;
16604    readonly ONE_MINUS_DST_ALPHA: GLenum;
16605    readonly ONE_MINUS_DST_COLOR: GLenum;
16606    readonly ONE_MINUS_SRC_ALPHA: GLenum;
16607    readonly ONE_MINUS_SRC_COLOR: GLenum;
16608    readonly OUT_OF_MEMORY: GLenum;
16609    readonly PACK_ALIGNMENT: GLenum;
16610    readonly POINTS: GLenum;
16611    readonly POLYGON_OFFSET_FACTOR: GLenum;
16612    readonly POLYGON_OFFSET_FILL: GLenum;
16613    readonly POLYGON_OFFSET_UNITS: GLenum;
16614    readonly RED_BITS: GLenum;
16615    readonly RENDERBUFFER: GLenum;
16616    readonly RENDERBUFFER_ALPHA_SIZE: GLenum;
16617    readonly RENDERBUFFER_BINDING: GLenum;
16618    readonly RENDERBUFFER_BLUE_SIZE: GLenum;
16619    readonly RENDERBUFFER_DEPTH_SIZE: GLenum;
16620    readonly RENDERBUFFER_GREEN_SIZE: GLenum;
16621    readonly RENDERBUFFER_HEIGHT: GLenum;
16622    readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum;
16623    readonly RENDERBUFFER_RED_SIZE: GLenum;
16624    readonly RENDERBUFFER_STENCIL_SIZE: GLenum;
16625    readonly RENDERBUFFER_WIDTH: GLenum;
16626    readonly RENDERER: GLenum;
16627    readonly REPEAT: GLenum;
16628    readonly REPLACE: GLenum;
16629    readonly RGB: GLenum;
16630    readonly RGB565: GLenum;
16631    readonly RGB5_A1: GLenum;
16632    readonly RGBA: GLenum;
16633    readonly RGBA4: GLenum;
16634    readonly SAMPLER_2D: GLenum;
16635    readonly SAMPLER_CUBE: GLenum;
16636    readonly SAMPLES: GLenum;
16637    readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum;
16638    readonly SAMPLE_BUFFERS: GLenum;
16639    readonly SAMPLE_COVERAGE: GLenum;
16640    readonly SAMPLE_COVERAGE_INVERT: GLenum;
16641    readonly SAMPLE_COVERAGE_VALUE: GLenum;
16642    readonly SCISSOR_BOX: GLenum;
16643    readonly SCISSOR_TEST: GLenum;
16644    readonly SHADER_TYPE: GLenum;
16645    readonly SHADING_LANGUAGE_VERSION: GLenum;
16646    readonly SHORT: GLenum;
16647    readonly SRC_ALPHA: GLenum;
16648    readonly SRC_ALPHA_SATURATE: GLenum;
16649    readonly SRC_COLOR: GLenum;
16650    readonly STATIC_DRAW: GLenum;
16651    readonly STENCIL_ATTACHMENT: GLenum;
16652    readonly STENCIL_BACK_FAIL: GLenum;
16653    readonly STENCIL_BACK_FUNC: GLenum;
16654    readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum;
16655    readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum;
16656    readonly STENCIL_BACK_REF: GLenum;
16657    readonly STENCIL_BACK_VALUE_MASK: GLenum;
16658    readonly STENCIL_BACK_WRITEMASK: GLenum;
16659    readonly STENCIL_BITS: GLenum;
16660    readonly STENCIL_BUFFER_BIT: GLenum;
16661    readonly STENCIL_CLEAR_VALUE: GLenum;
16662    readonly STENCIL_FAIL: GLenum;
16663    readonly STENCIL_FUNC: GLenum;
16664    readonly STENCIL_INDEX8: GLenum;
16665    readonly STENCIL_PASS_DEPTH_FAIL: GLenum;
16666    readonly STENCIL_PASS_DEPTH_PASS: GLenum;
16667    readonly STENCIL_REF: GLenum;
16668    readonly STENCIL_TEST: GLenum;
16669    readonly STENCIL_VALUE_MASK: GLenum;
16670    readonly STENCIL_WRITEMASK: GLenum;
16671    readonly STREAM_DRAW: GLenum;
16672    readonly SUBPIXEL_BITS: GLenum;
16673    readonly TEXTURE: GLenum;
16674    readonly TEXTURE0: GLenum;
16675    readonly TEXTURE1: GLenum;
16676    readonly TEXTURE10: GLenum;
16677    readonly TEXTURE11: GLenum;
16678    readonly TEXTURE12: GLenum;
16679    readonly TEXTURE13: GLenum;
16680    readonly TEXTURE14: GLenum;
16681    readonly TEXTURE15: GLenum;
16682    readonly TEXTURE16: GLenum;
16683    readonly TEXTURE17: GLenum;
16684    readonly TEXTURE18: GLenum;
16685    readonly TEXTURE19: GLenum;
16686    readonly TEXTURE2: GLenum;
16687    readonly TEXTURE20: GLenum;
16688    readonly TEXTURE21: GLenum;
16689    readonly TEXTURE22: GLenum;
16690    readonly TEXTURE23: GLenum;
16691    readonly TEXTURE24: GLenum;
16692    readonly TEXTURE25: GLenum;
16693    readonly TEXTURE26: GLenum;
16694    readonly TEXTURE27: GLenum;
16695    readonly TEXTURE28: GLenum;
16696    readonly TEXTURE29: GLenum;
16697    readonly TEXTURE3: GLenum;
16698    readonly TEXTURE30: GLenum;
16699    readonly TEXTURE31: GLenum;
16700    readonly TEXTURE4: GLenum;
16701    readonly TEXTURE5: GLenum;
16702    readonly TEXTURE6: GLenum;
16703    readonly TEXTURE7: GLenum;
16704    readonly TEXTURE8: GLenum;
16705    readonly TEXTURE9: GLenum;
16706    readonly TEXTURE_2D: GLenum;
16707    readonly TEXTURE_BINDING_2D: GLenum;
16708    readonly TEXTURE_BINDING_CUBE_MAP: GLenum;
16709    readonly TEXTURE_CUBE_MAP: GLenum;
16710    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum;
16711    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum;
16712    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum;
16713    readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum;
16714    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum;
16715    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum;
16716    readonly TEXTURE_MAG_FILTER: GLenum;
16717    readonly TEXTURE_MIN_FILTER: GLenum;
16718    readonly TEXTURE_WRAP_S: GLenum;
16719    readonly TEXTURE_WRAP_T: GLenum;
16720    readonly TRIANGLES: GLenum;
16721    readonly TRIANGLE_FAN: GLenum;
16722    readonly TRIANGLE_STRIP: GLenum;
16723    readonly UNPACK_ALIGNMENT: GLenum;
16724    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum;
16725    readonly UNPACK_FLIP_Y_WEBGL: GLenum;
16726    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum;
16727    readonly UNSIGNED_BYTE: GLenum;
16728    readonly UNSIGNED_INT: GLenum;
16729    readonly UNSIGNED_SHORT: GLenum;
16730    readonly UNSIGNED_SHORT_4_4_4_4: GLenum;
16731    readonly UNSIGNED_SHORT_5_5_5_1: GLenum;
16732    readonly UNSIGNED_SHORT_5_6_5: GLenum;
16733    readonly VALIDATE_STATUS: GLenum;
16734    readonly VENDOR: GLenum;
16735    readonly VERSION: GLenum;
16736    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum;
16737    readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum;
16738    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum;
16739    readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum;
16740    readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum;
16741    readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum;
16742    readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum;
16743    readonly VERTEX_SHADER: GLenum;
16744    readonly VIEWPORT: GLenum;
16745    readonly ZERO: GLenum;
16746    readonly ACTIVE_UNIFORM_BLOCKS: GLenum;
16747    readonly ALREADY_SIGNALED: GLenum;
16748    readonly ANY_SAMPLES_PASSED: GLenum;
16749    readonly ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum;
16750    readonly COLOR: GLenum;
16751    readonly COLOR_ATTACHMENT1: GLenum;
16752    readonly COLOR_ATTACHMENT10: GLenum;
16753    readonly COLOR_ATTACHMENT11: GLenum;
16754    readonly COLOR_ATTACHMENT12: GLenum;
16755    readonly COLOR_ATTACHMENT13: GLenum;
16756    readonly COLOR_ATTACHMENT14: GLenum;
16757    readonly COLOR_ATTACHMENT15: GLenum;
16758    readonly COLOR_ATTACHMENT2: GLenum;
16759    readonly COLOR_ATTACHMENT3: GLenum;
16760    readonly COLOR_ATTACHMENT4: GLenum;
16761    readonly COLOR_ATTACHMENT5: GLenum;
16762    readonly COLOR_ATTACHMENT6: GLenum;
16763    readonly COLOR_ATTACHMENT7: GLenum;
16764    readonly COLOR_ATTACHMENT8: GLenum;
16765    readonly COLOR_ATTACHMENT9: GLenum;
16766    readonly COMPARE_REF_TO_TEXTURE: GLenum;
16767    readonly CONDITION_SATISFIED: GLenum;
16768    readonly COPY_READ_BUFFER: GLenum;
16769    readonly COPY_READ_BUFFER_BINDING: GLenum;
16770    readonly COPY_WRITE_BUFFER: GLenum;
16771    readonly COPY_WRITE_BUFFER_BINDING: GLenum;
16772    readonly CURRENT_QUERY: GLenum;
16773    readonly DEPTH: GLenum;
16774    readonly DEPTH24_STENCIL8: GLenum;
16775    readonly DEPTH32F_STENCIL8: GLenum;
16776    readonly DEPTH_COMPONENT24: GLenum;
16777    readonly DEPTH_COMPONENT32F: GLenum;
16778    readonly DRAW_BUFFER0: GLenum;
16779    readonly DRAW_BUFFER1: GLenum;
16780    readonly DRAW_BUFFER10: GLenum;
16781    readonly DRAW_BUFFER11: GLenum;
16782    readonly DRAW_BUFFER12: GLenum;
16783    readonly DRAW_BUFFER13: GLenum;
16784    readonly DRAW_BUFFER14: GLenum;
16785    readonly DRAW_BUFFER15: GLenum;
16786    readonly DRAW_BUFFER2: GLenum;
16787    readonly DRAW_BUFFER3: GLenum;
16788    readonly DRAW_BUFFER4: GLenum;
16789    readonly DRAW_BUFFER5: GLenum;
16790    readonly DRAW_BUFFER6: GLenum;
16791    readonly DRAW_BUFFER7: GLenum;
16792    readonly DRAW_BUFFER8: GLenum;
16793    readonly DRAW_BUFFER9: GLenum;
16794    readonly DRAW_FRAMEBUFFER: GLenum;
16795    readonly DRAW_FRAMEBUFFER_BINDING: GLenum;
16796    readonly DYNAMIC_COPY: GLenum;
16797    readonly DYNAMIC_READ: GLenum;
16798    readonly FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum;
16799    readonly FLOAT_MAT2x3: GLenum;
16800    readonly FLOAT_MAT2x4: GLenum;
16801    readonly FLOAT_MAT3x2: GLenum;
16802    readonly FLOAT_MAT3x4: GLenum;
16803    readonly FLOAT_MAT4x2: GLenum;
16804    readonly FLOAT_MAT4x3: GLenum;
16805    readonly FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum;
16806    readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum;
16807    readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum;
16808    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum;
16809    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum;
16810    readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum;
16811    readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum;
16812    readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum;
16813    readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum;
16814    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum;
16815    readonly FRAMEBUFFER_DEFAULT: GLenum;
16816    readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum;
16817    readonly HALF_FLOAT: GLenum;
16818    readonly INTERLEAVED_ATTRIBS: GLenum;
16819    readonly INT_2_10_10_10_REV: GLenum;
16820    readonly INT_SAMPLER_2D: GLenum;
16821    readonly INT_SAMPLER_2D_ARRAY: GLenum;
16822    readonly INT_SAMPLER_3D: GLenum;
16823    readonly INT_SAMPLER_CUBE: GLenum;
16824    readonly INVALID_INDEX: GLenum;
16825    readonly MAX: GLenum;
16826    readonly MAX_3D_TEXTURE_SIZE: GLenum;
16827    readonly MAX_ARRAY_TEXTURE_LAYERS: GLenum;
16828    readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: GLenum;
16829    readonly MAX_COLOR_ATTACHMENTS: GLenum;
16830    readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum;
16831    readonly MAX_COMBINED_UNIFORM_BLOCKS: GLenum;
16832    readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum;
16833    readonly MAX_DRAW_BUFFERS: GLenum;
16834    readonly MAX_ELEMENTS_INDICES: GLenum;
16835    readonly MAX_ELEMENTS_VERTICES: GLenum;
16836    readonly MAX_ELEMENT_INDEX: GLenum;
16837    readonly MAX_FRAGMENT_INPUT_COMPONENTS: GLenum;
16838    readonly MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum;
16839    readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum;
16840    readonly MAX_PROGRAM_TEXEL_OFFSET: GLenum;
16841    readonly MAX_SAMPLES: GLenum;
16842    readonly MAX_SERVER_WAIT_TIMEOUT: GLenum;
16843    readonly MAX_TEXTURE_LOD_BIAS: GLenum;
16844    readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum;
16845    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum;
16846    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum;
16847    readonly MAX_UNIFORM_BLOCK_SIZE: GLenum;
16848    readonly MAX_UNIFORM_BUFFER_BINDINGS: GLenum;
16849    readonly MAX_VARYING_COMPONENTS: GLenum;
16850    readonly MAX_VERTEX_OUTPUT_COMPONENTS: GLenum;
16851    readonly MAX_VERTEX_UNIFORM_BLOCKS: GLenum;
16852    readonly MAX_VERTEX_UNIFORM_COMPONENTS: GLenum;
16853    readonly MIN: GLenum;
16854    readonly MIN_PROGRAM_TEXEL_OFFSET: GLenum;
16855    readonly OBJECT_TYPE: GLenum;
16856    readonly PACK_ROW_LENGTH: GLenum;
16857    readonly PACK_SKIP_PIXELS: GLenum;
16858    readonly PACK_SKIP_ROWS: GLenum;
16859    readonly PIXEL_PACK_BUFFER: GLenum;
16860    readonly PIXEL_PACK_BUFFER_BINDING: GLenum;
16861    readonly PIXEL_UNPACK_BUFFER: GLenum;
16862    readonly PIXEL_UNPACK_BUFFER_BINDING: GLenum;
16863    readonly QUERY_RESULT: GLenum;
16864    readonly QUERY_RESULT_AVAILABLE: GLenum;
16865    readonly R11F_G11F_B10F: GLenum;
16866    readonly R16F: GLenum;
16867    readonly R16I: GLenum;
16868    readonly R16UI: GLenum;
16869    readonly R32F: GLenum;
16870    readonly R32I: GLenum;
16871    readonly R32UI: GLenum;
16872    readonly R8: GLenum;
16873    readonly R8I: GLenum;
16874    readonly R8UI: GLenum;
16875    readonly R8_SNORM: GLenum;
16876    readonly RASTERIZER_DISCARD: GLenum;
16877    readonly READ_BUFFER: GLenum;
16878    readonly READ_FRAMEBUFFER: GLenum;
16879    readonly READ_FRAMEBUFFER_BINDING: GLenum;
16880    readonly RED: GLenum;
16881    readonly RED_INTEGER: GLenum;
16882    readonly RENDERBUFFER_SAMPLES: GLenum;
16883    readonly RG: GLenum;
16884    readonly RG16F: GLenum;
16885    readonly RG16I: GLenum;
16886    readonly RG16UI: GLenum;
16887    readonly RG32F: GLenum;
16888    readonly RG32I: GLenum;
16889    readonly RG32UI: GLenum;
16890    readonly RG8: GLenum;
16891    readonly RG8I: GLenum;
16892    readonly RG8UI: GLenum;
16893    readonly RG8_SNORM: GLenum;
16894    readonly RGB10_A2: GLenum;
16895    readonly RGB10_A2UI: GLenum;
16896    readonly RGB16F: GLenum;
16897    readonly RGB16I: GLenum;
16898    readonly RGB16UI: GLenum;
16899    readonly RGB32F: GLenum;
16900    readonly RGB32I: GLenum;
16901    readonly RGB32UI: GLenum;
16902    readonly RGB8: GLenum;
16903    readonly RGB8I: GLenum;
16904    readonly RGB8UI: GLenum;
16905    readonly RGB8_SNORM: GLenum;
16906    readonly RGB9_E5: GLenum;
16907    readonly RGBA16F: GLenum;
16908    readonly RGBA16I: GLenum;
16909    readonly RGBA16UI: GLenum;
16910    readonly RGBA32F: GLenum;
16911    readonly RGBA32I: GLenum;
16912    readonly RGBA32UI: GLenum;
16913    readonly RGBA8: GLenum;
16914    readonly RGBA8I: GLenum;
16915    readonly RGBA8UI: GLenum;
16916    readonly RGBA8_SNORM: GLenum;
16917    readonly RGBA_INTEGER: GLenum;
16918    readonly RGB_INTEGER: GLenum;
16919    readonly RG_INTEGER: GLenum;
16920    readonly SAMPLER_2D_ARRAY: GLenum;
16921    readonly SAMPLER_2D_ARRAY_SHADOW: GLenum;
16922    readonly SAMPLER_2D_SHADOW: GLenum;
16923    readonly SAMPLER_3D: GLenum;
16924    readonly SAMPLER_BINDING: GLenum;
16925    readonly SAMPLER_CUBE_SHADOW: GLenum;
16926    readonly SEPARATE_ATTRIBS: GLenum;
16927    readonly SIGNALED: GLenum;
16928    readonly SIGNED_NORMALIZED: GLenum;
16929    readonly SRGB: GLenum;
16930    readonly SRGB8: GLenum;
16931    readonly SRGB8_ALPHA8: GLenum;
16932    readonly STATIC_COPY: GLenum;
16933    readonly STATIC_READ: GLenum;
16934    readonly STENCIL: GLenum;
16935    readonly STREAM_COPY: GLenum;
16936    readonly STREAM_READ: GLenum;
16937    readonly SYNC_CONDITION: GLenum;
16938    readonly SYNC_FENCE: GLenum;
16939    readonly SYNC_FLAGS: GLenum;
16940    readonly SYNC_FLUSH_COMMANDS_BIT: GLenum;
16941    readonly SYNC_GPU_COMMANDS_COMPLETE: GLenum;
16942    readonly SYNC_STATUS: GLenum;
16943    readonly TEXTURE_2D_ARRAY: GLenum;
16944    readonly TEXTURE_3D: GLenum;
16945    readonly TEXTURE_BASE_LEVEL: GLenum;
16946    readonly TEXTURE_BINDING_2D_ARRAY: GLenum;
16947    readonly TEXTURE_BINDING_3D: GLenum;
16948    readonly TEXTURE_COMPARE_FUNC: GLenum;
16949    readonly TEXTURE_COMPARE_MODE: GLenum;
16950    readonly TEXTURE_IMMUTABLE_FORMAT: GLenum;
16951    readonly TEXTURE_IMMUTABLE_LEVELS: GLenum;
16952    readonly TEXTURE_MAX_LEVEL: GLenum;
16953    readonly TEXTURE_MAX_LOD: GLenum;
16954    readonly TEXTURE_MIN_LOD: GLenum;
16955    readonly TEXTURE_WRAP_R: GLenum;
16956    readonly TIMEOUT_EXPIRED: GLenum;
16957    readonly TIMEOUT_IGNORED: GLint64;
16958    readonly TRANSFORM_FEEDBACK: GLenum;
16959    readonly TRANSFORM_FEEDBACK_ACTIVE: GLenum;
16960    readonly TRANSFORM_FEEDBACK_BINDING: GLenum;
16961    readonly TRANSFORM_FEEDBACK_BUFFER: GLenum;
16962    readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum;
16963    readonly TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum;
16964    readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum;
16965    readonly TRANSFORM_FEEDBACK_BUFFER_START: GLenum;
16966    readonly TRANSFORM_FEEDBACK_PAUSED: GLenum;
16967    readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum;
16968    readonly TRANSFORM_FEEDBACK_VARYINGS: GLenum;
16969    readonly UNIFORM_ARRAY_STRIDE: GLenum;
16970    readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum;
16971    readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum;
16972    readonly UNIFORM_BLOCK_BINDING: GLenum;
16973    readonly UNIFORM_BLOCK_DATA_SIZE: GLenum;
16974    readonly UNIFORM_BLOCK_INDEX: GLenum;
16975    readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum;
16976    readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum;
16977    readonly UNIFORM_BUFFER: GLenum;
16978    readonly UNIFORM_BUFFER_BINDING: GLenum;
16979    readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum;
16980    readonly UNIFORM_BUFFER_SIZE: GLenum;
16981    readonly UNIFORM_BUFFER_START: GLenum;
16982    readonly UNIFORM_IS_ROW_MAJOR: GLenum;
16983    readonly UNIFORM_MATRIX_STRIDE: GLenum;
16984    readonly UNIFORM_OFFSET: GLenum;
16985    readonly UNIFORM_SIZE: GLenum;
16986    readonly UNIFORM_TYPE: GLenum;
16987    readonly UNPACK_IMAGE_HEIGHT: GLenum;
16988    readonly UNPACK_ROW_LENGTH: GLenum;
16989    readonly UNPACK_SKIP_IMAGES: GLenum;
16990    readonly UNPACK_SKIP_PIXELS: GLenum;
16991    readonly UNPACK_SKIP_ROWS: GLenum;
16992    readonly UNSIGNALED: GLenum;
16993    readonly UNSIGNED_INT_10F_11F_11F_REV: GLenum;
16994    readonly UNSIGNED_INT_24_8: GLenum;
16995    readonly UNSIGNED_INT_2_10_10_10_REV: GLenum;
16996    readonly UNSIGNED_INT_5_9_9_9_REV: GLenum;
16997    readonly UNSIGNED_INT_SAMPLER_2D: GLenum;
16998    readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum;
16999    readonly UNSIGNED_INT_SAMPLER_3D: GLenum;
17000    readonly UNSIGNED_INT_SAMPLER_CUBE: GLenum;
17001    readonly UNSIGNED_INT_VEC2: GLenum;
17002    readonly UNSIGNED_INT_VEC3: GLenum;
17003    readonly UNSIGNED_INT_VEC4: GLenum;
17004    readonly UNSIGNED_NORMALIZED: GLenum;
17005    readonly VERTEX_ARRAY_BINDING: GLenum;
17006    readonly VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum;
17007    readonly VERTEX_ATTRIB_ARRAY_INTEGER: GLenum;
17008    readonly WAIT_FAILED: GLenum;
17009};
17010
17011interface WebGL2RenderingContextBase {
17012    beginQuery(target: GLenum, query: WebGLQuery): void;
17013    beginTransformFeedback(primitiveMode: GLenum): void;
17014    bindBufferBase(target: GLenum, index: GLuint, buffer: WebGLBuffer | null): void;
17015    bindBufferRange(target: GLenum, index: GLuint, buffer: WebGLBuffer | null, offset: GLintptr, size: GLsizeiptr): void;
17016    bindSampler(unit: GLuint, sampler: WebGLSampler | null): void;
17017    bindTransformFeedback(target: GLenum, tf: WebGLTransformFeedback | null): void;
17018    bindVertexArray(array: WebGLVertexArrayObject | null): void;
17019    blitFramebuffer(srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum): void;
17020    clearBufferfi(buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint): void;
17021    clearBufferfv(buffer: GLenum, drawbuffer: GLint, values: Float32List, srcOffset?: GLuint): void;
17022    clearBufferiv(buffer: GLenum, drawbuffer: GLint, values: Int32List, srcOffset?: GLuint): void;
17023    clearBufferuiv(buffer: GLenum, drawbuffer: GLint, values: Uint32List, srcOffset?: GLuint): void;
17024    clientWaitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLuint64): GLenum;
17025    compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr): void;
17026    compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;
17027    compressedTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr): void;
17028    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;
17029    copyBufferSubData(readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr): void;
17030    copyTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
17031    createQuery(): WebGLQuery | null;
17032    createSampler(): WebGLSampler | null;
17033    createTransformFeedback(): WebGLTransformFeedback | null;
17034    createVertexArray(): WebGLVertexArrayObject | null;
17035    deleteQuery(query: WebGLQuery | null): void;
17036    deleteSampler(sampler: WebGLSampler | null): void;
17037    deleteSync(sync: WebGLSync | null): void;
17038    deleteTransformFeedback(tf: WebGLTransformFeedback | null): void;
17039    deleteVertexArray(vertexArray: WebGLVertexArrayObject | null): void;
17040    drawArraysInstanced(mode: GLenum, first: GLint, count: GLsizei, instanceCount: GLsizei): void;
17041    drawBuffers(buffers: GLenum[]): void;
17042    drawElementsInstanced(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, instanceCount: GLsizei): void;
17043    drawRangeElements(mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type: GLenum, offset: GLintptr): void;
17044    endQuery(target: GLenum): void;
17045    endTransformFeedback(): void;
17046    fenceSync(condition: GLenum, flags: GLbitfield): WebGLSync | null;
17047    framebufferTextureLayer(target: GLenum, attachment: GLenum, texture: WebGLTexture | null, level: GLint, layer: GLint): void;
17048    getActiveUniformBlockName(program: WebGLProgram, uniformBlockIndex: GLuint): string | null;
17049    getActiveUniformBlockParameter(program: WebGLProgram, uniformBlockIndex: GLuint, pname: GLenum): any;
17050    getActiveUniforms(program: WebGLProgram, uniformIndices: GLuint[], pname: GLenum): any;
17051    getBufferSubData(target: GLenum, srcByteOffset: GLintptr, dstBuffer: ArrayBufferView, dstOffset?: GLuint, length?: GLuint): void;
17052    getFragDataLocation(program: WebGLProgram, name: string): GLint;
17053    getIndexedParameter(target: GLenum, index: GLuint): any;
17054    getInternalformatParameter(target: GLenum, internalformat: GLenum, pname: GLenum): any;
17055    getQuery(target: GLenum, pname: GLenum): WebGLQuery | null;
17056    getQueryParameter(query: WebGLQuery, pname: GLenum): any;
17057    getSamplerParameter(sampler: WebGLSampler, pname: GLenum): any;
17058    getSyncParameter(sync: WebGLSync, pname: GLenum): any;
17059    getTransformFeedbackVarying(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;
17060    getUniformBlockIndex(program: WebGLProgram, uniformBlockName: string): GLuint;
17061    getUniformIndices(program: WebGLProgram, uniformNames: string[]): GLuint[] | null;
17062    invalidateFramebuffer(target: GLenum, attachments: GLenum[]): void;
17063    invalidateSubFramebuffer(target: GLenum, attachments: GLenum[], x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
17064    isQuery(query: WebGLQuery | null): GLboolean;
17065    isSampler(sampler: WebGLSampler | null): GLboolean;
17066    isSync(sync: WebGLSync | null): GLboolean;
17067    isTransformFeedback(tf: WebGLTransformFeedback | null): GLboolean;
17068    isVertexArray(vertexArray: WebGLVertexArrayObject | null): GLboolean;
17069    pauseTransformFeedback(): void;
17070    readBuffer(src: GLenum): void;
17071    renderbufferStorageMultisample(target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei): void;
17072    resumeTransformFeedback(): void;
17073    samplerParameterf(sampler: WebGLSampler, pname: GLenum, param: GLfloat): void;
17074    samplerParameteri(sampler: WebGLSampler, pname: GLenum, param: GLint): void;
17075    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
17076    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
17077    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView | null): void;
17078    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;
17079    texStorage2D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei): void;
17080    texStorage3D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei): void;
17081    texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
17082    texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, source: TexImageSource): void;
17083    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;
17084    transformFeedbackVaryings(program: WebGLProgram, varyings: string[], bufferMode: GLenum): void;
17085    uniform1ui(location: WebGLUniformLocation | null, v0: GLuint): void;
17086    uniform1uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17087    uniform2ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint): void;
17088    uniform2uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17089    uniform3ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint, v2: GLuint): void;
17090    uniform3uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17091    uniform4ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint): void;
17092    uniform4uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17093    uniformBlockBinding(program: WebGLProgram, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint): void;
17094    uniformMatrix2x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17095    uniformMatrix2x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17096    uniformMatrix3x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17097    uniformMatrix3x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17098    uniformMatrix4x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17099    uniformMatrix4x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17100    vertexAttribDivisor(index: GLuint, divisor: GLuint): void;
17101    vertexAttribI4i(index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint): void;
17102    vertexAttribI4iv(index: GLuint, values: Int32List): void;
17103    vertexAttribI4ui(index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint): void;
17104    vertexAttribI4uiv(index: GLuint, values: Uint32List): void;
17105    vertexAttribIPointer(index: GLuint, size: GLint, type: GLenum, stride: GLsizei, offset: GLintptr): void;
17106    waitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLint64): void;
17107    readonly ACTIVE_UNIFORM_BLOCKS: GLenum;
17108    readonly ALREADY_SIGNALED: GLenum;
17109    readonly ANY_SAMPLES_PASSED: GLenum;
17110    readonly ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum;
17111    readonly COLOR: GLenum;
17112    readonly COLOR_ATTACHMENT1: GLenum;
17113    readonly COLOR_ATTACHMENT10: GLenum;
17114    readonly COLOR_ATTACHMENT11: GLenum;
17115    readonly COLOR_ATTACHMENT12: GLenum;
17116    readonly COLOR_ATTACHMENT13: GLenum;
17117    readonly COLOR_ATTACHMENT14: GLenum;
17118    readonly COLOR_ATTACHMENT15: GLenum;
17119    readonly COLOR_ATTACHMENT2: GLenum;
17120    readonly COLOR_ATTACHMENT3: GLenum;
17121    readonly COLOR_ATTACHMENT4: GLenum;
17122    readonly COLOR_ATTACHMENT5: GLenum;
17123    readonly COLOR_ATTACHMENT6: GLenum;
17124    readonly COLOR_ATTACHMENT7: GLenum;
17125    readonly COLOR_ATTACHMENT8: GLenum;
17126    readonly COLOR_ATTACHMENT9: GLenum;
17127    readonly COMPARE_REF_TO_TEXTURE: GLenum;
17128    readonly CONDITION_SATISFIED: GLenum;
17129    readonly COPY_READ_BUFFER: GLenum;
17130    readonly COPY_READ_BUFFER_BINDING: GLenum;
17131    readonly COPY_WRITE_BUFFER: GLenum;
17132    readonly COPY_WRITE_BUFFER_BINDING: GLenum;
17133    readonly CURRENT_QUERY: GLenum;
17134    readonly DEPTH: GLenum;
17135    readonly DEPTH24_STENCIL8: GLenum;
17136    readonly DEPTH32F_STENCIL8: GLenum;
17137    readonly DEPTH_COMPONENT24: GLenum;
17138    readonly DEPTH_COMPONENT32F: GLenum;
17139    readonly DRAW_BUFFER0: GLenum;
17140    readonly DRAW_BUFFER1: GLenum;
17141    readonly DRAW_BUFFER10: GLenum;
17142    readonly DRAW_BUFFER11: GLenum;
17143    readonly DRAW_BUFFER12: GLenum;
17144    readonly DRAW_BUFFER13: GLenum;
17145    readonly DRAW_BUFFER14: GLenum;
17146    readonly DRAW_BUFFER15: GLenum;
17147    readonly DRAW_BUFFER2: GLenum;
17148    readonly DRAW_BUFFER3: GLenum;
17149    readonly DRAW_BUFFER4: GLenum;
17150    readonly DRAW_BUFFER5: GLenum;
17151    readonly DRAW_BUFFER6: GLenum;
17152    readonly DRAW_BUFFER7: GLenum;
17153    readonly DRAW_BUFFER8: GLenum;
17154    readonly DRAW_BUFFER9: GLenum;
17155    readonly DRAW_FRAMEBUFFER: GLenum;
17156    readonly DRAW_FRAMEBUFFER_BINDING: GLenum;
17157    readonly DYNAMIC_COPY: GLenum;
17158    readonly DYNAMIC_READ: GLenum;
17159    readonly FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum;
17160    readonly FLOAT_MAT2x3: GLenum;
17161    readonly FLOAT_MAT2x4: GLenum;
17162    readonly FLOAT_MAT3x2: GLenum;
17163    readonly FLOAT_MAT3x4: GLenum;
17164    readonly FLOAT_MAT4x2: GLenum;
17165    readonly FLOAT_MAT4x3: GLenum;
17166    readonly FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum;
17167    readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum;
17168    readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum;
17169    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum;
17170    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum;
17171    readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum;
17172    readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum;
17173    readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum;
17174    readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum;
17175    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum;
17176    readonly FRAMEBUFFER_DEFAULT: GLenum;
17177    readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum;
17178    readonly HALF_FLOAT: GLenum;
17179    readonly INTERLEAVED_ATTRIBS: GLenum;
17180    readonly INT_2_10_10_10_REV: GLenum;
17181    readonly INT_SAMPLER_2D: GLenum;
17182    readonly INT_SAMPLER_2D_ARRAY: GLenum;
17183    readonly INT_SAMPLER_3D: GLenum;
17184    readonly INT_SAMPLER_CUBE: GLenum;
17185    readonly INVALID_INDEX: GLenum;
17186    readonly MAX: GLenum;
17187    readonly MAX_3D_TEXTURE_SIZE: GLenum;
17188    readonly MAX_ARRAY_TEXTURE_LAYERS: GLenum;
17189    readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: GLenum;
17190    readonly MAX_COLOR_ATTACHMENTS: GLenum;
17191    readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum;
17192    readonly MAX_COMBINED_UNIFORM_BLOCKS: GLenum;
17193    readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum;
17194    readonly MAX_DRAW_BUFFERS: GLenum;
17195    readonly MAX_ELEMENTS_INDICES: GLenum;
17196    readonly MAX_ELEMENTS_VERTICES: GLenum;
17197    readonly MAX_ELEMENT_INDEX: GLenum;
17198    readonly MAX_FRAGMENT_INPUT_COMPONENTS: GLenum;
17199    readonly MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum;
17200    readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum;
17201    readonly MAX_PROGRAM_TEXEL_OFFSET: GLenum;
17202    readonly MAX_SAMPLES: GLenum;
17203    readonly MAX_SERVER_WAIT_TIMEOUT: GLenum;
17204    readonly MAX_TEXTURE_LOD_BIAS: GLenum;
17205    readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum;
17206    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum;
17207    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum;
17208    readonly MAX_UNIFORM_BLOCK_SIZE: GLenum;
17209    readonly MAX_UNIFORM_BUFFER_BINDINGS: GLenum;
17210    readonly MAX_VARYING_COMPONENTS: GLenum;
17211    readonly MAX_VERTEX_OUTPUT_COMPONENTS: GLenum;
17212    readonly MAX_VERTEX_UNIFORM_BLOCKS: GLenum;
17213    readonly MAX_VERTEX_UNIFORM_COMPONENTS: GLenum;
17214    readonly MIN: GLenum;
17215    readonly MIN_PROGRAM_TEXEL_OFFSET: GLenum;
17216    readonly OBJECT_TYPE: GLenum;
17217    readonly PACK_ROW_LENGTH: GLenum;
17218    readonly PACK_SKIP_PIXELS: GLenum;
17219    readonly PACK_SKIP_ROWS: GLenum;
17220    readonly PIXEL_PACK_BUFFER: GLenum;
17221    readonly PIXEL_PACK_BUFFER_BINDING: GLenum;
17222    readonly PIXEL_UNPACK_BUFFER: GLenum;
17223    readonly PIXEL_UNPACK_BUFFER_BINDING: GLenum;
17224    readonly QUERY_RESULT: GLenum;
17225    readonly QUERY_RESULT_AVAILABLE: GLenum;
17226    readonly R11F_G11F_B10F: GLenum;
17227    readonly R16F: GLenum;
17228    readonly R16I: GLenum;
17229    readonly R16UI: GLenum;
17230    readonly R32F: GLenum;
17231    readonly R32I: GLenum;
17232    readonly R32UI: GLenum;
17233    readonly R8: GLenum;
17234    readonly R8I: GLenum;
17235    readonly R8UI: GLenum;
17236    readonly R8_SNORM: GLenum;
17237    readonly RASTERIZER_DISCARD: GLenum;
17238    readonly READ_BUFFER: GLenum;
17239    readonly READ_FRAMEBUFFER: GLenum;
17240    readonly READ_FRAMEBUFFER_BINDING: GLenum;
17241    readonly RED: GLenum;
17242    readonly RED_INTEGER: GLenum;
17243    readonly RENDERBUFFER_SAMPLES: GLenum;
17244    readonly RG: GLenum;
17245    readonly RG16F: GLenum;
17246    readonly RG16I: GLenum;
17247    readonly RG16UI: GLenum;
17248    readonly RG32F: GLenum;
17249    readonly RG32I: GLenum;
17250    readonly RG32UI: GLenum;
17251    readonly RG8: GLenum;
17252    readonly RG8I: GLenum;
17253    readonly RG8UI: GLenum;
17254    readonly RG8_SNORM: GLenum;
17255    readonly RGB10_A2: GLenum;
17256    readonly RGB10_A2UI: GLenum;
17257    readonly RGB16F: GLenum;
17258    readonly RGB16I: GLenum;
17259    readonly RGB16UI: GLenum;
17260    readonly RGB32F: GLenum;
17261    readonly RGB32I: GLenum;
17262    readonly RGB32UI: GLenum;
17263    readonly RGB8: GLenum;
17264    readonly RGB8I: GLenum;
17265    readonly RGB8UI: GLenum;
17266    readonly RGB8_SNORM: GLenum;
17267    readonly RGB9_E5: GLenum;
17268    readonly RGBA16F: GLenum;
17269    readonly RGBA16I: GLenum;
17270    readonly RGBA16UI: GLenum;
17271    readonly RGBA32F: GLenum;
17272    readonly RGBA32I: GLenum;
17273    readonly RGBA32UI: GLenum;
17274    readonly RGBA8: GLenum;
17275    readonly RGBA8I: GLenum;
17276    readonly RGBA8UI: GLenum;
17277    readonly RGBA8_SNORM: GLenum;
17278    readonly RGBA_INTEGER: GLenum;
17279    readonly RGB_INTEGER: GLenum;
17280    readonly RG_INTEGER: GLenum;
17281    readonly SAMPLER_2D_ARRAY: GLenum;
17282    readonly SAMPLER_2D_ARRAY_SHADOW: GLenum;
17283    readonly SAMPLER_2D_SHADOW: GLenum;
17284    readonly SAMPLER_3D: GLenum;
17285    readonly SAMPLER_BINDING: GLenum;
17286    readonly SAMPLER_CUBE_SHADOW: GLenum;
17287    readonly SEPARATE_ATTRIBS: GLenum;
17288    readonly SIGNALED: GLenum;
17289    readonly SIGNED_NORMALIZED: GLenum;
17290    readonly SRGB: GLenum;
17291    readonly SRGB8: GLenum;
17292    readonly SRGB8_ALPHA8: GLenum;
17293    readonly STATIC_COPY: GLenum;
17294    readonly STATIC_READ: GLenum;
17295    readonly STENCIL: GLenum;
17296    readonly STREAM_COPY: GLenum;
17297    readonly STREAM_READ: GLenum;
17298    readonly SYNC_CONDITION: GLenum;
17299    readonly SYNC_FENCE: GLenum;
17300    readonly SYNC_FLAGS: GLenum;
17301    readonly SYNC_FLUSH_COMMANDS_BIT: GLenum;
17302    readonly SYNC_GPU_COMMANDS_COMPLETE: GLenum;
17303    readonly SYNC_STATUS: GLenum;
17304    readonly TEXTURE_2D_ARRAY: GLenum;
17305    readonly TEXTURE_3D: GLenum;
17306    readonly TEXTURE_BASE_LEVEL: GLenum;
17307    readonly TEXTURE_BINDING_2D_ARRAY: GLenum;
17308    readonly TEXTURE_BINDING_3D: GLenum;
17309    readonly TEXTURE_COMPARE_FUNC: GLenum;
17310    readonly TEXTURE_COMPARE_MODE: GLenum;
17311    readonly TEXTURE_IMMUTABLE_FORMAT: GLenum;
17312    readonly TEXTURE_IMMUTABLE_LEVELS: GLenum;
17313    readonly TEXTURE_MAX_LEVEL: GLenum;
17314    readonly TEXTURE_MAX_LOD: GLenum;
17315    readonly TEXTURE_MIN_LOD: GLenum;
17316    readonly TEXTURE_WRAP_R: GLenum;
17317    readonly TIMEOUT_EXPIRED: GLenum;
17318    readonly TIMEOUT_IGNORED: GLint64;
17319    readonly TRANSFORM_FEEDBACK: GLenum;
17320    readonly TRANSFORM_FEEDBACK_ACTIVE: GLenum;
17321    readonly TRANSFORM_FEEDBACK_BINDING: GLenum;
17322    readonly TRANSFORM_FEEDBACK_BUFFER: GLenum;
17323    readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum;
17324    readonly TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum;
17325    readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum;
17326    readonly TRANSFORM_FEEDBACK_BUFFER_START: GLenum;
17327    readonly TRANSFORM_FEEDBACK_PAUSED: GLenum;
17328    readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum;
17329    readonly TRANSFORM_FEEDBACK_VARYINGS: GLenum;
17330    readonly UNIFORM_ARRAY_STRIDE: GLenum;
17331    readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum;
17332    readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum;
17333    readonly UNIFORM_BLOCK_BINDING: GLenum;
17334    readonly UNIFORM_BLOCK_DATA_SIZE: GLenum;
17335    readonly UNIFORM_BLOCK_INDEX: GLenum;
17336    readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum;
17337    readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum;
17338    readonly UNIFORM_BUFFER: GLenum;
17339    readonly UNIFORM_BUFFER_BINDING: GLenum;
17340    readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum;
17341    readonly UNIFORM_BUFFER_SIZE: GLenum;
17342    readonly UNIFORM_BUFFER_START: GLenum;
17343    readonly UNIFORM_IS_ROW_MAJOR: GLenum;
17344    readonly UNIFORM_MATRIX_STRIDE: GLenum;
17345    readonly UNIFORM_OFFSET: GLenum;
17346    readonly UNIFORM_SIZE: GLenum;
17347    readonly UNIFORM_TYPE: GLenum;
17348    readonly UNPACK_IMAGE_HEIGHT: GLenum;
17349    readonly UNPACK_ROW_LENGTH: GLenum;
17350    readonly UNPACK_SKIP_IMAGES: GLenum;
17351    readonly UNPACK_SKIP_PIXELS: GLenum;
17352    readonly UNPACK_SKIP_ROWS: GLenum;
17353    readonly UNSIGNALED: GLenum;
17354    readonly UNSIGNED_INT_10F_11F_11F_REV: GLenum;
17355    readonly UNSIGNED_INT_24_8: GLenum;
17356    readonly UNSIGNED_INT_2_10_10_10_REV: GLenum;
17357    readonly UNSIGNED_INT_5_9_9_9_REV: GLenum;
17358    readonly UNSIGNED_INT_SAMPLER_2D: GLenum;
17359    readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum;
17360    readonly UNSIGNED_INT_SAMPLER_3D: GLenum;
17361    readonly UNSIGNED_INT_SAMPLER_CUBE: GLenum;
17362    readonly UNSIGNED_INT_VEC2: GLenum;
17363    readonly UNSIGNED_INT_VEC3: GLenum;
17364    readonly UNSIGNED_INT_VEC4: GLenum;
17365    readonly UNSIGNED_NORMALIZED: GLenum;
17366    readonly VERTEX_ARRAY_BINDING: GLenum;
17367    readonly VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum;
17368    readonly VERTEX_ATTRIB_ARRAY_INTEGER: GLenum;
17369    readonly WAIT_FAILED: GLenum;
17370}
17371
17372interface WebGL2RenderingContextOverloads {
17373    bufferData(target: GLenum, size: GLsizeiptr, usage: GLenum): void;
17374    bufferData(target: GLenum, srcData: BufferSource | null, usage: GLenum): void;
17375    bufferData(target: GLenum, srcData: ArrayBufferView, usage: GLenum, srcOffset: GLuint, length?: GLuint): void;
17376    bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: BufferSource): void;
17377    bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: ArrayBufferView, srcOffset: GLuint, length?: GLuint): void;
17378    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr): void;
17379    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;
17380    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr): void;
17381    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;
17382    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView | null): void;
17383    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, offset: GLintptr): void;
17384    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView, dstOffset: GLuint): void;
17385    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
17386    texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
17387    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
17388    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
17389    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;
17390    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
17391    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
17392    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
17393    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, source: TexImageSource): void;
17394    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;
17395    uniform1fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17396    uniform1iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17397    uniform2fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17398    uniform2iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17399    uniform3fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17400    uniform3iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17401    uniform4fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17402    uniform4iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17403    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17404    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17405    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
17406}
17407
17408/** Part of the WebGL API and represents the information returned by calling the WebGLRenderingContext.getActiveAttrib() and WebGLRenderingContext.getActiveUniform() methods. */
17409interface WebGLActiveInfo {
17410    readonly name: string;
17411    readonly size: GLint;
17412    readonly type: GLenum;
17413}
17414
17415declare var WebGLActiveInfo: {
17416    prototype: WebGLActiveInfo;
17417    new(): WebGLActiveInfo;
17418};
17419
17420/** Part of the WebGL API and represents an opaque buffer object storing data such as vertices or colors. */
17421interface WebGLBuffer extends WebGLObject {
17422}
17423
17424declare var WebGLBuffer: {
17425    prototype: WebGLBuffer;
17426    new(): WebGLBuffer;
17427};
17428
17429/** 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. */
17430interface WebGLContextEvent extends Event {
17431    readonly statusMessage: string;
17432}
17433
17434declare var WebGLContextEvent: {
17435    prototype: WebGLContextEvent;
17436    new(type: string, eventInit?: WebGLContextEventInit): WebGLContextEvent;
17437};
17438
17439/** Part of the WebGL API and represents a collection of buffers that serve as a rendering destination. */
17440interface WebGLFramebuffer extends WebGLObject {
17441}
17442
17443declare var WebGLFramebuffer: {
17444    prototype: WebGLFramebuffer;
17445    new(): WebGLFramebuffer;
17446};
17447
17448interface WebGLObject {
17449}
17450
17451declare var WebGLObject: {
17452    prototype: WebGLObject;
17453    new(): WebGLObject;
17454};
17455
17456/** 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). */
17457interface WebGLProgram extends WebGLObject {
17458}
17459
17460declare var WebGLProgram: {
17461    prototype: WebGLProgram;
17462    new(): WebGLProgram;
17463};
17464
17465interface WebGLQuery extends WebGLObject {
17466}
17467
17468declare var WebGLQuery: {
17469    prototype: WebGLQuery;
17470    new(): WebGLQuery;
17471};
17472
17473/** Part of the WebGL API and represents a buffer that can contain an image, or can be source or target of an rendering operation. */
17474interface WebGLRenderbuffer extends WebGLObject {
17475}
17476
17477declare var WebGLRenderbuffer: {
17478    prototype: WebGLRenderbuffer;
17479    new(): WebGLRenderbuffer;
17480};
17481
17482/** Provides an interface to the OpenGL ES 2.0 graphics rendering context for the drawing surface of an HTML <canvas> element. */
17483interface WebGLRenderingContext extends WebGLRenderingContextBase, WebGLRenderingContextOverloads {
17484}
17485
17486declare var WebGLRenderingContext: {
17487    prototype: WebGLRenderingContext;
17488    new(): WebGLRenderingContext;
17489    readonly ACTIVE_ATTRIBUTES: GLenum;
17490    readonly ACTIVE_TEXTURE: GLenum;
17491    readonly ACTIVE_UNIFORMS: GLenum;
17492    readonly ALIASED_LINE_WIDTH_RANGE: GLenum;
17493    readonly ALIASED_POINT_SIZE_RANGE: GLenum;
17494    readonly ALPHA: GLenum;
17495    readonly ALPHA_BITS: GLenum;
17496    readonly ALWAYS: GLenum;
17497    readonly ARRAY_BUFFER: GLenum;
17498    readonly ARRAY_BUFFER_BINDING: GLenum;
17499    readonly ATTACHED_SHADERS: GLenum;
17500    readonly BACK: GLenum;
17501    readonly BLEND: GLenum;
17502    readonly BLEND_COLOR: GLenum;
17503    readonly BLEND_DST_ALPHA: GLenum;
17504    readonly BLEND_DST_RGB: GLenum;
17505    readonly BLEND_EQUATION: GLenum;
17506    readonly BLEND_EQUATION_ALPHA: GLenum;
17507    readonly BLEND_EQUATION_RGB: GLenum;
17508    readonly BLEND_SRC_ALPHA: GLenum;
17509    readonly BLEND_SRC_RGB: GLenum;
17510    readonly BLUE_BITS: GLenum;
17511    readonly BOOL: GLenum;
17512    readonly BOOL_VEC2: GLenum;
17513    readonly BOOL_VEC3: GLenum;
17514    readonly BOOL_VEC4: GLenum;
17515    readonly BROWSER_DEFAULT_WEBGL: GLenum;
17516    readonly BUFFER_SIZE: GLenum;
17517    readonly BUFFER_USAGE: GLenum;
17518    readonly BYTE: GLenum;
17519    readonly CCW: GLenum;
17520    readonly CLAMP_TO_EDGE: GLenum;
17521    readonly COLOR_ATTACHMENT0: GLenum;
17522    readonly COLOR_BUFFER_BIT: GLenum;
17523    readonly COLOR_CLEAR_VALUE: GLenum;
17524    readonly COLOR_WRITEMASK: GLenum;
17525    readonly COMPILE_STATUS: GLenum;
17526    readonly COMPRESSED_TEXTURE_FORMATS: GLenum;
17527    readonly CONSTANT_ALPHA: GLenum;
17528    readonly CONSTANT_COLOR: GLenum;
17529    readonly CONTEXT_LOST_WEBGL: GLenum;
17530    readonly CULL_FACE: GLenum;
17531    readonly CULL_FACE_MODE: GLenum;
17532    readonly CURRENT_PROGRAM: GLenum;
17533    readonly CURRENT_VERTEX_ATTRIB: GLenum;
17534    readonly CW: GLenum;
17535    readonly DECR: GLenum;
17536    readonly DECR_WRAP: GLenum;
17537    readonly DELETE_STATUS: GLenum;
17538    readonly DEPTH_ATTACHMENT: GLenum;
17539    readonly DEPTH_BITS: GLenum;
17540    readonly DEPTH_BUFFER_BIT: GLenum;
17541    readonly DEPTH_CLEAR_VALUE: GLenum;
17542    readonly DEPTH_COMPONENT: GLenum;
17543    readonly DEPTH_COMPONENT16: GLenum;
17544    readonly DEPTH_FUNC: GLenum;
17545    readonly DEPTH_RANGE: GLenum;
17546    readonly DEPTH_STENCIL: GLenum;
17547    readonly DEPTH_STENCIL_ATTACHMENT: GLenum;
17548    readonly DEPTH_TEST: GLenum;
17549    readonly DEPTH_WRITEMASK: GLenum;
17550    readonly DITHER: GLenum;
17551    readonly DONT_CARE: GLenum;
17552    readonly DST_ALPHA: GLenum;
17553    readonly DST_COLOR: GLenum;
17554    readonly DYNAMIC_DRAW: GLenum;
17555    readonly ELEMENT_ARRAY_BUFFER: GLenum;
17556    readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum;
17557    readonly EQUAL: GLenum;
17558    readonly FASTEST: GLenum;
17559    readonly FLOAT: GLenum;
17560    readonly FLOAT_MAT2: GLenum;
17561    readonly FLOAT_MAT3: GLenum;
17562    readonly FLOAT_MAT4: GLenum;
17563    readonly FLOAT_VEC2: GLenum;
17564    readonly FLOAT_VEC3: GLenum;
17565    readonly FLOAT_VEC4: GLenum;
17566    readonly FRAGMENT_SHADER: GLenum;
17567    readonly FRAMEBUFFER: GLenum;
17568    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum;
17569    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum;
17570    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum;
17571    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum;
17572    readonly FRAMEBUFFER_BINDING: GLenum;
17573    readonly FRAMEBUFFER_COMPLETE: GLenum;
17574    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum;
17575    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum;
17576    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum;
17577    readonly FRAMEBUFFER_UNSUPPORTED: GLenum;
17578    readonly FRONT: GLenum;
17579    readonly FRONT_AND_BACK: GLenum;
17580    readonly FRONT_FACE: GLenum;
17581    readonly FUNC_ADD: GLenum;
17582    readonly FUNC_REVERSE_SUBTRACT: GLenum;
17583    readonly FUNC_SUBTRACT: GLenum;
17584    readonly GENERATE_MIPMAP_HINT: GLenum;
17585    readonly GEQUAL: GLenum;
17586    readonly GREATER: GLenum;
17587    readonly GREEN_BITS: GLenum;
17588    readonly HIGH_FLOAT: GLenum;
17589    readonly HIGH_INT: GLenum;
17590    readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum;
17591    readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum;
17592    readonly INCR: GLenum;
17593    readonly INCR_WRAP: GLenum;
17594    readonly INT: GLenum;
17595    readonly INT_VEC2: GLenum;
17596    readonly INT_VEC3: GLenum;
17597    readonly INT_VEC4: GLenum;
17598    readonly INVALID_ENUM: GLenum;
17599    readonly INVALID_FRAMEBUFFER_OPERATION: GLenum;
17600    readonly INVALID_OPERATION: GLenum;
17601    readonly INVALID_VALUE: GLenum;
17602    readonly INVERT: GLenum;
17603    readonly KEEP: GLenum;
17604    readonly LEQUAL: GLenum;
17605    readonly LESS: GLenum;
17606    readonly LINEAR: GLenum;
17607    readonly LINEAR_MIPMAP_LINEAR: GLenum;
17608    readonly LINEAR_MIPMAP_NEAREST: GLenum;
17609    readonly LINES: GLenum;
17610    readonly LINE_LOOP: GLenum;
17611    readonly LINE_STRIP: GLenum;
17612    readonly LINE_WIDTH: GLenum;
17613    readonly LINK_STATUS: GLenum;
17614    readonly LOW_FLOAT: GLenum;
17615    readonly LOW_INT: GLenum;
17616    readonly LUMINANCE: GLenum;
17617    readonly LUMINANCE_ALPHA: GLenum;
17618    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum;
17619    readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum;
17620    readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum;
17621    readonly MAX_RENDERBUFFER_SIZE: GLenum;
17622    readonly MAX_TEXTURE_IMAGE_UNITS: GLenum;
17623    readonly MAX_TEXTURE_SIZE: GLenum;
17624    readonly MAX_VARYING_VECTORS: GLenum;
17625    readonly MAX_VERTEX_ATTRIBS: GLenum;
17626    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum;
17627    readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum;
17628    readonly MAX_VIEWPORT_DIMS: GLenum;
17629    readonly MEDIUM_FLOAT: GLenum;
17630    readonly MEDIUM_INT: GLenum;
17631    readonly MIRRORED_REPEAT: GLenum;
17632    readonly NEAREST: GLenum;
17633    readonly NEAREST_MIPMAP_LINEAR: GLenum;
17634    readonly NEAREST_MIPMAP_NEAREST: GLenum;
17635    readonly NEVER: GLenum;
17636    readonly NICEST: GLenum;
17637    readonly NONE: GLenum;
17638    readonly NOTEQUAL: GLenum;
17639    readonly NO_ERROR: GLenum;
17640    readonly ONE: GLenum;
17641    readonly ONE_MINUS_CONSTANT_ALPHA: GLenum;
17642    readonly ONE_MINUS_CONSTANT_COLOR: GLenum;
17643    readonly ONE_MINUS_DST_ALPHA: GLenum;
17644    readonly ONE_MINUS_DST_COLOR: GLenum;
17645    readonly ONE_MINUS_SRC_ALPHA: GLenum;
17646    readonly ONE_MINUS_SRC_COLOR: GLenum;
17647    readonly OUT_OF_MEMORY: GLenum;
17648    readonly PACK_ALIGNMENT: GLenum;
17649    readonly POINTS: GLenum;
17650    readonly POLYGON_OFFSET_FACTOR: GLenum;
17651    readonly POLYGON_OFFSET_FILL: GLenum;
17652    readonly POLYGON_OFFSET_UNITS: GLenum;
17653    readonly RED_BITS: GLenum;
17654    readonly RENDERBUFFER: GLenum;
17655    readonly RENDERBUFFER_ALPHA_SIZE: GLenum;
17656    readonly RENDERBUFFER_BINDING: GLenum;
17657    readonly RENDERBUFFER_BLUE_SIZE: GLenum;
17658    readonly RENDERBUFFER_DEPTH_SIZE: GLenum;
17659    readonly RENDERBUFFER_GREEN_SIZE: GLenum;
17660    readonly RENDERBUFFER_HEIGHT: GLenum;
17661    readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum;
17662    readonly RENDERBUFFER_RED_SIZE: GLenum;
17663    readonly RENDERBUFFER_STENCIL_SIZE: GLenum;
17664    readonly RENDERBUFFER_WIDTH: GLenum;
17665    readonly RENDERER: GLenum;
17666    readonly REPEAT: GLenum;
17667    readonly REPLACE: GLenum;
17668    readonly RGB: GLenum;
17669    readonly RGB565: GLenum;
17670    readonly RGB5_A1: GLenum;
17671    readonly RGBA: GLenum;
17672    readonly RGBA4: GLenum;
17673    readonly SAMPLER_2D: GLenum;
17674    readonly SAMPLER_CUBE: GLenum;
17675    readonly SAMPLES: GLenum;
17676    readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum;
17677    readonly SAMPLE_BUFFERS: GLenum;
17678    readonly SAMPLE_COVERAGE: GLenum;
17679    readonly SAMPLE_COVERAGE_INVERT: GLenum;
17680    readonly SAMPLE_COVERAGE_VALUE: GLenum;
17681    readonly SCISSOR_BOX: GLenum;
17682    readonly SCISSOR_TEST: GLenum;
17683    readonly SHADER_TYPE: GLenum;
17684    readonly SHADING_LANGUAGE_VERSION: GLenum;
17685    readonly SHORT: GLenum;
17686    readonly SRC_ALPHA: GLenum;
17687    readonly SRC_ALPHA_SATURATE: GLenum;
17688    readonly SRC_COLOR: GLenum;
17689    readonly STATIC_DRAW: GLenum;
17690    readonly STENCIL_ATTACHMENT: GLenum;
17691    readonly STENCIL_BACK_FAIL: GLenum;
17692    readonly STENCIL_BACK_FUNC: GLenum;
17693    readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum;
17694    readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum;
17695    readonly STENCIL_BACK_REF: GLenum;
17696    readonly STENCIL_BACK_VALUE_MASK: GLenum;
17697    readonly STENCIL_BACK_WRITEMASK: GLenum;
17698    readonly STENCIL_BITS: GLenum;
17699    readonly STENCIL_BUFFER_BIT: GLenum;
17700    readonly STENCIL_CLEAR_VALUE: GLenum;
17701    readonly STENCIL_FAIL: GLenum;
17702    readonly STENCIL_FUNC: GLenum;
17703    readonly STENCIL_INDEX8: GLenum;
17704    readonly STENCIL_PASS_DEPTH_FAIL: GLenum;
17705    readonly STENCIL_PASS_DEPTH_PASS: GLenum;
17706    readonly STENCIL_REF: GLenum;
17707    readonly STENCIL_TEST: GLenum;
17708    readonly STENCIL_VALUE_MASK: GLenum;
17709    readonly STENCIL_WRITEMASK: GLenum;
17710    readonly STREAM_DRAW: GLenum;
17711    readonly SUBPIXEL_BITS: GLenum;
17712    readonly TEXTURE: GLenum;
17713    readonly TEXTURE0: GLenum;
17714    readonly TEXTURE1: GLenum;
17715    readonly TEXTURE10: GLenum;
17716    readonly TEXTURE11: GLenum;
17717    readonly TEXTURE12: GLenum;
17718    readonly TEXTURE13: GLenum;
17719    readonly TEXTURE14: GLenum;
17720    readonly TEXTURE15: GLenum;
17721    readonly TEXTURE16: GLenum;
17722    readonly TEXTURE17: GLenum;
17723    readonly TEXTURE18: GLenum;
17724    readonly TEXTURE19: GLenum;
17725    readonly TEXTURE2: GLenum;
17726    readonly TEXTURE20: GLenum;
17727    readonly TEXTURE21: GLenum;
17728    readonly TEXTURE22: GLenum;
17729    readonly TEXTURE23: GLenum;
17730    readonly TEXTURE24: GLenum;
17731    readonly TEXTURE25: GLenum;
17732    readonly TEXTURE26: GLenum;
17733    readonly TEXTURE27: GLenum;
17734    readonly TEXTURE28: GLenum;
17735    readonly TEXTURE29: GLenum;
17736    readonly TEXTURE3: GLenum;
17737    readonly TEXTURE30: GLenum;
17738    readonly TEXTURE31: GLenum;
17739    readonly TEXTURE4: GLenum;
17740    readonly TEXTURE5: GLenum;
17741    readonly TEXTURE6: GLenum;
17742    readonly TEXTURE7: GLenum;
17743    readonly TEXTURE8: GLenum;
17744    readonly TEXTURE9: GLenum;
17745    readonly TEXTURE_2D: GLenum;
17746    readonly TEXTURE_BINDING_2D: GLenum;
17747    readonly TEXTURE_BINDING_CUBE_MAP: GLenum;
17748    readonly TEXTURE_CUBE_MAP: GLenum;
17749    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum;
17750    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum;
17751    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum;
17752    readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum;
17753    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum;
17754    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum;
17755    readonly TEXTURE_MAG_FILTER: GLenum;
17756    readonly TEXTURE_MIN_FILTER: GLenum;
17757    readonly TEXTURE_WRAP_S: GLenum;
17758    readonly TEXTURE_WRAP_T: GLenum;
17759    readonly TRIANGLES: GLenum;
17760    readonly TRIANGLE_FAN: GLenum;
17761    readonly TRIANGLE_STRIP: GLenum;
17762    readonly UNPACK_ALIGNMENT: GLenum;
17763    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum;
17764    readonly UNPACK_FLIP_Y_WEBGL: GLenum;
17765    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum;
17766    readonly UNSIGNED_BYTE: GLenum;
17767    readonly UNSIGNED_INT: GLenum;
17768    readonly UNSIGNED_SHORT: GLenum;
17769    readonly UNSIGNED_SHORT_4_4_4_4: GLenum;
17770    readonly UNSIGNED_SHORT_5_5_5_1: GLenum;
17771    readonly UNSIGNED_SHORT_5_6_5: GLenum;
17772    readonly VALIDATE_STATUS: GLenum;
17773    readonly VENDOR: GLenum;
17774    readonly VERSION: GLenum;
17775    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum;
17776    readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum;
17777    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum;
17778    readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum;
17779    readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum;
17780    readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum;
17781    readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum;
17782    readonly VERTEX_SHADER: GLenum;
17783    readonly VIEWPORT: GLenum;
17784    readonly ZERO: GLenum;
17785};
17786
17787interface WebGLRenderingContextBase {
17788    readonly canvas: HTMLCanvasElement | OffscreenCanvas;
17789    readonly drawingBufferHeight: GLsizei;
17790    readonly drawingBufferWidth: GLsizei;
17791    activeTexture(texture: GLenum): void;
17792    attachShader(program: WebGLProgram, shader: WebGLShader): void;
17793    bindAttribLocation(program: WebGLProgram, index: GLuint, name: string): void;
17794    bindBuffer(target: GLenum, buffer: WebGLBuffer | null): void;
17795    bindFramebuffer(target: GLenum, framebuffer: WebGLFramebuffer | null): void;
17796    bindRenderbuffer(target: GLenum, renderbuffer: WebGLRenderbuffer | null): void;
17797    bindTexture(target: GLenum, texture: WebGLTexture | null): void;
17798    blendColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;
17799    blendEquation(mode: GLenum): void;
17800    blendEquationSeparate(modeRGB: GLenum, modeAlpha: GLenum): void;
17801    blendFunc(sfactor: GLenum, dfactor: GLenum): void;
17802    blendFuncSeparate(srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum): void;
17803    checkFramebufferStatus(target: GLenum): GLenum;
17804    clear(mask: GLbitfield): void;
17805    clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;
17806    clearDepth(depth: GLclampf): void;
17807    clearStencil(s: GLint): void;
17808    colorMask(red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean): void;
17809    compileShader(shader: WebGLShader): void;
17810    copyTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint): void;
17811    copyTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
17812    createBuffer(): WebGLBuffer | null;
17813    createFramebuffer(): WebGLFramebuffer | null;
17814    createProgram(): WebGLProgram | null;
17815    createRenderbuffer(): WebGLRenderbuffer | null;
17816    createShader(type: GLenum): WebGLShader | null;
17817    createTexture(): WebGLTexture | null;
17818    cullFace(mode: GLenum): void;
17819    deleteBuffer(buffer: WebGLBuffer | null): void;
17820    deleteFramebuffer(framebuffer: WebGLFramebuffer | null): void;
17821    deleteProgram(program: WebGLProgram | null): void;
17822    deleteRenderbuffer(renderbuffer: WebGLRenderbuffer | null): void;
17823    deleteShader(shader: WebGLShader | null): void;
17824    deleteTexture(texture: WebGLTexture | null): void;
17825    depthFunc(func: GLenum): void;
17826    depthMask(flag: GLboolean): void;
17827    depthRange(zNear: GLclampf, zFar: GLclampf): void;
17828    detachShader(program: WebGLProgram, shader: WebGLShader): void;
17829    disable(cap: GLenum): void;
17830    disableVertexAttribArray(index: GLuint): void;
17831    drawArrays(mode: GLenum, first: GLint, count: GLsizei): void;
17832    drawElements(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr): void;
17833    enable(cap: GLenum): void;
17834    enableVertexAttribArray(index: GLuint): void;
17835    finish(): void;
17836    flush(): void;
17837    framebufferRenderbuffer(target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: WebGLRenderbuffer | null): void;
17838    framebufferTexture2D(target: GLenum, attachment: GLenum, textarget: GLenum, texture: WebGLTexture | null, level: GLint): void;
17839    frontFace(mode: GLenum): void;
17840    generateMipmap(target: GLenum): void;
17841    getActiveAttrib(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;
17842    getActiveUniform(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;
17843    getAttachedShaders(program: WebGLProgram): WebGLShader[] | null;
17844    getAttribLocation(program: WebGLProgram, name: string): GLint;
17845    getBufferParameter(target: GLenum, pname: GLenum): any;
17846    getContextAttributes(): WebGLContextAttributes | null;
17847    getError(): GLenum;
17848    getExtension(extensionName: "EXT_blend_minmax"): EXT_blend_minmax | null;
17849    getExtension(extensionName: "EXT_texture_filter_anisotropic"): EXT_texture_filter_anisotropic | null;
17850    getExtension(extensionName: "EXT_frag_depth"): EXT_frag_depth | null;
17851    getExtension(extensionName: "EXT_shader_texture_lod"): EXT_shader_texture_lod | null;
17852    getExtension(extensionName: "EXT_sRGB"): EXT_sRGB | null;
17853    getExtension(extensionName: "OES_vertex_array_object"): OES_vertex_array_object | null;
17854    getExtension(extensionName: "WEBGL_color_buffer_float"): WEBGL_color_buffer_float | null;
17855    getExtension(extensionName: "WEBGL_compressed_texture_astc"): WEBGL_compressed_texture_astc | null;
17856    getExtension(extensionName: "WEBGL_compressed_texture_s3tc_srgb"): WEBGL_compressed_texture_s3tc_srgb | null;
17857    getExtension(extensionName: "WEBGL_debug_shaders"): WEBGL_debug_shaders | null;
17858    getExtension(extensionName: "WEBGL_draw_buffers"): WEBGL_draw_buffers | null;
17859    getExtension(extensionName: "WEBGL_lose_context"): WEBGL_lose_context | null;
17860    getExtension(extensionName: "WEBGL_depth_texture"): WEBGL_depth_texture | null;
17861    getExtension(extensionName: "WEBGL_debug_renderer_info"): WEBGL_debug_renderer_info | null;
17862    getExtension(extensionName: "WEBGL_compressed_texture_s3tc"): WEBGL_compressed_texture_s3tc | null;
17863    getExtension(extensionName: "OES_texture_half_float_linear"): OES_texture_half_float_linear | null;
17864    getExtension(extensionName: "OES_texture_half_float"): OES_texture_half_float | null;
17865    getExtension(extensionName: "OES_texture_float_linear"): OES_texture_float_linear | null;
17866    getExtension(extensionName: "OES_texture_float"): OES_texture_float | null;
17867    getExtension(extensionName: "OES_standard_derivatives"): OES_standard_derivatives | null;
17868    getExtension(extensionName: "OES_element_index_uint"): OES_element_index_uint | null;
17869    getExtension(extensionName: "ANGLE_instanced_arrays"): ANGLE_instanced_arrays | null;
17870    getExtension(extensionName: string): any;
17871    getFramebufferAttachmentParameter(target: GLenum, attachment: GLenum, pname: GLenum): any;
17872    getParameter(pname: GLenum): any;
17873    getProgramInfoLog(program: WebGLProgram): string | null;
17874    getProgramParameter(program: WebGLProgram, pname: GLenum): any;
17875    getRenderbufferParameter(target: GLenum, pname: GLenum): any;
17876    getShaderInfoLog(shader: WebGLShader): string | null;
17877    getShaderParameter(shader: WebGLShader, pname: GLenum): any;
17878    getShaderPrecisionFormat(shadertype: GLenum, precisiontype: GLenum): WebGLShaderPrecisionFormat | null;
17879    getShaderSource(shader: WebGLShader): string | null;
17880    getSupportedExtensions(): string[] | null;
17881    getTexParameter(target: GLenum, pname: GLenum): any;
17882    getUniform(program: WebGLProgram, location: WebGLUniformLocation): any;
17883    getUniformLocation(program: WebGLProgram, name: string): WebGLUniformLocation | null;
17884    getVertexAttrib(index: GLuint, pname: GLenum): any;
17885    getVertexAttribOffset(index: GLuint, pname: GLenum): GLintptr;
17886    hint(target: GLenum, mode: GLenum): void;
17887    isBuffer(buffer: WebGLBuffer | null): GLboolean;
17888    isContextLost(): boolean;
17889    isEnabled(cap: GLenum): GLboolean;
17890    isFramebuffer(framebuffer: WebGLFramebuffer | null): GLboolean;
17891    isProgram(program: WebGLProgram | null): GLboolean;
17892    isRenderbuffer(renderbuffer: WebGLRenderbuffer | null): GLboolean;
17893    isShader(shader: WebGLShader | null): GLboolean;
17894    isTexture(texture: WebGLTexture | null): GLboolean;
17895    lineWidth(width: GLfloat): void;
17896    linkProgram(program: WebGLProgram): void;
17897    pixelStorei(pname: GLenum, param: GLint | GLboolean): void;
17898    polygonOffset(factor: GLfloat, units: GLfloat): void;
17899    renderbufferStorage(target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei): void;
17900    sampleCoverage(value: GLclampf, invert: GLboolean): void;
17901    scissor(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
17902    shaderSource(shader: WebGLShader, source: string): void;
17903    stencilFunc(func: GLenum, ref: GLint, mask: GLuint): void;
17904    stencilFuncSeparate(face: GLenum, func: GLenum, ref: GLint, mask: GLuint): void;
17905    stencilMask(mask: GLuint): void;
17906    stencilMaskSeparate(face: GLenum, mask: GLuint): void;
17907    stencilOp(fail: GLenum, zfail: GLenum, zpass: GLenum): void;
17908    stencilOpSeparate(face: GLenum, fail: GLenum, zfail: GLenum, zpass: GLenum): void;
17909    texParameterf(target: GLenum, pname: GLenum, param: GLfloat): void;
17910    texParameteri(target: GLenum, pname: GLenum, param: GLint): void;
17911    uniform1f(location: WebGLUniformLocation | null, x: GLfloat): void;
17912    uniform1i(location: WebGLUniformLocation | null, x: GLint): void;
17913    uniform2f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat): void;
17914    uniform2i(location: WebGLUniformLocation | null, x: GLint, y: GLint): void;
17915    uniform3f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat, z: GLfloat): void;
17916    uniform3i(location: WebGLUniformLocation | null, x: GLint, y: GLint, z: GLint): void;
17917    uniform4f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void;
17918    uniform4i(location: WebGLUniformLocation | null, x: GLint, y: GLint, z: GLint, w: GLint): void;
17919    useProgram(program: WebGLProgram | null): void;
17920    validateProgram(program: WebGLProgram): void;
17921    vertexAttrib1f(index: GLuint, x: GLfloat): void;
17922    vertexAttrib1fv(index: GLuint, values: Float32List): void;
17923    vertexAttrib2f(index: GLuint, x: GLfloat, y: GLfloat): void;
17924    vertexAttrib2fv(index: GLuint, values: Float32List): void;
17925    vertexAttrib3f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat): void;
17926    vertexAttrib3fv(index: GLuint, values: Float32List): void;
17927    vertexAttrib4f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void;
17928    vertexAttrib4fv(index: GLuint, values: Float32List): void;
17929    vertexAttribPointer(index: GLuint, size: GLint, type: GLenum, normalized: GLboolean, stride: GLsizei, offset: GLintptr): void;
17930    viewport(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
17931    readonly ACTIVE_ATTRIBUTES: GLenum;
17932    readonly ACTIVE_TEXTURE: GLenum;
17933    readonly ACTIVE_UNIFORMS: GLenum;
17934    readonly ALIASED_LINE_WIDTH_RANGE: GLenum;
17935    readonly ALIASED_POINT_SIZE_RANGE: GLenum;
17936    readonly ALPHA: GLenum;
17937    readonly ALPHA_BITS: GLenum;
17938    readonly ALWAYS: GLenum;
17939    readonly ARRAY_BUFFER: GLenum;
17940    readonly ARRAY_BUFFER_BINDING: GLenum;
17941    readonly ATTACHED_SHADERS: GLenum;
17942    readonly BACK: GLenum;
17943    readonly BLEND: GLenum;
17944    readonly BLEND_COLOR: GLenum;
17945    readonly BLEND_DST_ALPHA: GLenum;
17946    readonly BLEND_DST_RGB: GLenum;
17947    readonly BLEND_EQUATION: GLenum;
17948    readonly BLEND_EQUATION_ALPHA: GLenum;
17949    readonly BLEND_EQUATION_RGB: GLenum;
17950    readonly BLEND_SRC_ALPHA: GLenum;
17951    readonly BLEND_SRC_RGB: GLenum;
17952    readonly BLUE_BITS: GLenum;
17953    readonly BOOL: GLenum;
17954    readonly BOOL_VEC2: GLenum;
17955    readonly BOOL_VEC3: GLenum;
17956    readonly BOOL_VEC4: GLenum;
17957    readonly BROWSER_DEFAULT_WEBGL: GLenum;
17958    readonly BUFFER_SIZE: GLenum;
17959    readonly BUFFER_USAGE: GLenum;
17960    readonly BYTE: GLenum;
17961    readonly CCW: GLenum;
17962    readonly CLAMP_TO_EDGE: GLenum;
17963    readonly COLOR_ATTACHMENT0: GLenum;
17964    readonly COLOR_BUFFER_BIT: GLenum;
17965    readonly COLOR_CLEAR_VALUE: GLenum;
17966    readonly COLOR_WRITEMASK: GLenum;
17967    readonly COMPILE_STATUS: GLenum;
17968    readonly COMPRESSED_TEXTURE_FORMATS: GLenum;
17969    readonly CONSTANT_ALPHA: GLenum;
17970    readonly CONSTANT_COLOR: GLenum;
17971    readonly CONTEXT_LOST_WEBGL: GLenum;
17972    readonly CULL_FACE: GLenum;
17973    readonly CULL_FACE_MODE: GLenum;
17974    readonly CURRENT_PROGRAM: GLenum;
17975    readonly CURRENT_VERTEX_ATTRIB: GLenum;
17976    readonly CW: GLenum;
17977    readonly DECR: GLenum;
17978    readonly DECR_WRAP: GLenum;
17979    readonly DELETE_STATUS: GLenum;
17980    readonly DEPTH_ATTACHMENT: GLenum;
17981    readonly DEPTH_BITS: GLenum;
17982    readonly DEPTH_BUFFER_BIT: GLenum;
17983    readonly DEPTH_CLEAR_VALUE: GLenum;
17984    readonly DEPTH_COMPONENT: GLenum;
17985    readonly DEPTH_COMPONENT16: GLenum;
17986    readonly DEPTH_FUNC: GLenum;
17987    readonly DEPTH_RANGE: GLenum;
17988    readonly DEPTH_STENCIL: GLenum;
17989    readonly DEPTH_STENCIL_ATTACHMENT: GLenum;
17990    readonly DEPTH_TEST: GLenum;
17991    readonly DEPTH_WRITEMASK: GLenum;
17992    readonly DITHER: GLenum;
17993    readonly DONT_CARE: GLenum;
17994    readonly DST_ALPHA: GLenum;
17995    readonly DST_COLOR: GLenum;
17996    readonly DYNAMIC_DRAW: GLenum;
17997    readonly ELEMENT_ARRAY_BUFFER: GLenum;
17998    readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum;
17999    readonly EQUAL: GLenum;
18000    readonly FASTEST: GLenum;
18001    readonly FLOAT: GLenum;
18002    readonly FLOAT_MAT2: GLenum;
18003    readonly FLOAT_MAT3: GLenum;
18004    readonly FLOAT_MAT4: GLenum;
18005    readonly FLOAT_VEC2: GLenum;
18006    readonly FLOAT_VEC3: GLenum;
18007    readonly FLOAT_VEC4: GLenum;
18008    readonly FRAGMENT_SHADER: GLenum;
18009    readonly FRAMEBUFFER: GLenum;
18010    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum;
18011    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum;
18012    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum;
18013    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum;
18014    readonly FRAMEBUFFER_BINDING: GLenum;
18015    readonly FRAMEBUFFER_COMPLETE: GLenum;
18016    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum;
18017    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum;
18018    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum;
18019    readonly FRAMEBUFFER_UNSUPPORTED: GLenum;
18020    readonly FRONT: GLenum;
18021    readonly FRONT_AND_BACK: GLenum;
18022    readonly FRONT_FACE: GLenum;
18023    readonly FUNC_ADD: GLenum;
18024    readonly FUNC_REVERSE_SUBTRACT: GLenum;
18025    readonly FUNC_SUBTRACT: GLenum;
18026    readonly GENERATE_MIPMAP_HINT: GLenum;
18027    readonly GEQUAL: GLenum;
18028    readonly GREATER: GLenum;
18029    readonly GREEN_BITS: GLenum;
18030    readonly HIGH_FLOAT: GLenum;
18031    readonly HIGH_INT: GLenum;
18032    readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum;
18033    readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum;
18034    readonly INCR: GLenum;
18035    readonly INCR_WRAP: GLenum;
18036    readonly INT: GLenum;
18037    readonly INT_VEC2: GLenum;
18038    readonly INT_VEC3: GLenum;
18039    readonly INT_VEC4: GLenum;
18040    readonly INVALID_ENUM: GLenum;
18041    readonly INVALID_FRAMEBUFFER_OPERATION: GLenum;
18042    readonly INVALID_OPERATION: GLenum;
18043    readonly INVALID_VALUE: GLenum;
18044    readonly INVERT: GLenum;
18045    readonly KEEP: GLenum;
18046    readonly LEQUAL: GLenum;
18047    readonly LESS: GLenum;
18048    readonly LINEAR: GLenum;
18049    readonly LINEAR_MIPMAP_LINEAR: GLenum;
18050    readonly LINEAR_MIPMAP_NEAREST: GLenum;
18051    readonly LINES: GLenum;
18052    readonly LINE_LOOP: GLenum;
18053    readonly LINE_STRIP: GLenum;
18054    readonly LINE_WIDTH: GLenum;
18055    readonly LINK_STATUS: GLenum;
18056    readonly LOW_FLOAT: GLenum;
18057    readonly LOW_INT: GLenum;
18058    readonly LUMINANCE: GLenum;
18059    readonly LUMINANCE_ALPHA: GLenum;
18060    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum;
18061    readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum;
18062    readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum;
18063    readonly MAX_RENDERBUFFER_SIZE: GLenum;
18064    readonly MAX_TEXTURE_IMAGE_UNITS: GLenum;
18065    readonly MAX_TEXTURE_SIZE: GLenum;
18066    readonly MAX_VARYING_VECTORS: GLenum;
18067    readonly MAX_VERTEX_ATTRIBS: GLenum;
18068    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum;
18069    readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum;
18070    readonly MAX_VIEWPORT_DIMS: GLenum;
18071    readonly MEDIUM_FLOAT: GLenum;
18072    readonly MEDIUM_INT: GLenum;
18073    readonly MIRRORED_REPEAT: GLenum;
18074    readonly NEAREST: GLenum;
18075    readonly NEAREST_MIPMAP_LINEAR: GLenum;
18076    readonly NEAREST_MIPMAP_NEAREST: GLenum;
18077    readonly NEVER: GLenum;
18078    readonly NICEST: GLenum;
18079    readonly NONE: GLenum;
18080    readonly NOTEQUAL: GLenum;
18081    readonly NO_ERROR: GLenum;
18082    readonly ONE: GLenum;
18083    readonly ONE_MINUS_CONSTANT_ALPHA: GLenum;
18084    readonly ONE_MINUS_CONSTANT_COLOR: GLenum;
18085    readonly ONE_MINUS_DST_ALPHA: GLenum;
18086    readonly ONE_MINUS_DST_COLOR: GLenum;
18087    readonly ONE_MINUS_SRC_ALPHA: GLenum;
18088    readonly ONE_MINUS_SRC_COLOR: GLenum;
18089    readonly OUT_OF_MEMORY: GLenum;
18090    readonly PACK_ALIGNMENT: GLenum;
18091    readonly POINTS: GLenum;
18092    readonly POLYGON_OFFSET_FACTOR: GLenum;
18093    readonly POLYGON_OFFSET_FILL: GLenum;
18094    readonly POLYGON_OFFSET_UNITS: GLenum;
18095    readonly RED_BITS: GLenum;
18096    readonly RENDERBUFFER: GLenum;
18097    readonly RENDERBUFFER_ALPHA_SIZE: GLenum;
18098    readonly RENDERBUFFER_BINDING: GLenum;
18099    readonly RENDERBUFFER_BLUE_SIZE: GLenum;
18100    readonly RENDERBUFFER_DEPTH_SIZE: GLenum;
18101    readonly RENDERBUFFER_GREEN_SIZE: GLenum;
18102    readonly RENDERBUFFER_HEIGHT: GLenum;
18103    readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum;
18104    readonly RENDERBUFFER_RED_SIZE: GLenum;
18105    readonly RENDERBUFFER_STENCIL_SIZE: GLenum;
18106    readonly RENDERBUFFER_WIDTH: GLenum;
18107    readonly RENDERER: GLenum;
18108    readonly REPEAT: GLenum;
18109    readonly REPLACE: GLenum;
18110    readonly RGB: GLenum;
18111    readonly RGB565: GLenum;
18112    readonly RGB5_A1: GLenum;
18113    readonly RGBA: GLenum;
18114    readonly RGBA4: GLenum;
18115    readonly SAMPLER_2D: GLenum;
18116    readonly SAMPLER_CUBE: GLenum;
18117    readonly SAMPLES: GLenum;
18118    readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum;
18119    readonly SAMPLE_BUFFERS: GLenum;
18120    readonly SAMPLE_COVERAGE: GLenum;
18121    readonly SAMPLE_COVERAGE_INVERT: GLenum;
18122    readonly SAMPLE_COVERAGE_VALUE: GLenum;
18123    readonly SCISSOR_BOX: GLenum;
18124    readonly SCISSOR_TEST: GLenum;
18125    readonly SHADER_TYPE: GLenum;
18126    readonly SHADING_LANGUAGE_VERSION: GLenum;
18127    readonly SHORT: GLenum;
18128    readonly SRC_ALPHA: GLenum;
18129    readonly SRC_ALPHA_SATURATE: GLenum;
18130    readonly SRC_COLOR: GLenum;
18131    readonly STATIC_DRAW: GLenum;
18132    readonly STENCIL_ATTACHMENT: GLenum;
18133    readonly STENCIL_BACK_FAIL: GLenum;
18134    readonly STENCIL_BACK_FUNC: GLenum;
18135    readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum;
18136    readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum;
18137    readonly STENCIL_BACK_REF: GLenum;
18138    readonly STENCIL_BACK_VALUE_MASK: GLenum;
18139    readonly STENCIL_BACK_WRITEMASK: GLenum;
18140    readonly STENCIL_BITS: GLenum;
18141    readonly STENCIL_BUFFER_BIT: GLenum;
18142    readonly STENCIL_CLEAR_VALUE: GLenum;
18143    readonly STENCIL_FAIL: GLenum;
18144    readonly STENCIL_FUNC: GLenum;
18145    readonly STENCIL_INDEX8: GLenum;
18146    readonly STENCIL_PASS_DEPTH_FAIL: GLenum;
18147    readonly STENCIL_PASS_DEPTH_PASS: GLenum;
18148    readonly STENCIL_REF: GLenum;
18149    readonly STENCIL_TEST: GLenum;
18150    readonly STENCIL_VALUE_MASK: GLenum;
18151    readonly STENCIL_WRITEMASK: GLenum;
18152    readonly STREAM_DRAW: GLenum;
18153    readonly SUBPIXEL_BITS: GLenum;
18154    readonly TEXTURE: GLenum;
18155    readonly TEXTURE0: GLenum;
18156    readonly TEXTURE1: GLenum;
18157    readonly TEXTURE10: GLenum;
18158    readonly TEXTURE11: GLenum;
18159    readonly TEXTURE12: GLenum;
18160    readonly TEXTURE13: GLenum;
18161    readonly TEXTURE14: GLenum;
18162    readonly TEXTURE15: GLenum;
18163    readonly TEXTURE16: GLenum;
18164    readonly TEXTURE17: GLenum;
18165    readonly TEXTURE18: GLenum;
18166    readonly TEXTURE19: GLenum;
18167    readonly TEXTURE2: GLenum;
18168    readonly TEXTURE20: GLenum;
18169    readonly TEXTURE21: GLenum;
18170    readonly TEXTURE22: GLenum;
18171    readonly TEXTURE23: GLenum;
18172    readonly TEXTURE24: GLenum;
18173    readonly TEXTURE25: GLenum;
18174    readonly TEXTURE26: GLenum;
18175    readonly TEXTURE27: GLenum;
18176    readonly TEXTURE28: GLenum;
18177    readonly TEXTURE29: GLenum;
18178    readonly TEXTURE3: GLenum;
18179    readonly TEXTURE30: GLenum;
18180    readonly TEXTURE31: GLenum;
18181    readonly TEXTURE4: GLenum;
18182    readonly TEXTURE5: GLenum;
18183    readonly TEXTURE6: GLenum;
18184    readonly TEXTURE7: GLenum;
18185    readonly TEXTURE8: GLenum;
18186    readonly TEXTURE9: GLenum;
18187    readonly TEXTURE_2D: GLenum;
18188    readonly TEXTURE_BINDING_2D: GLenum;
18189    readonly TEXTURE_BINDING_CUBE_MAP: GLenum;
18190    readonly TEXTURE_CUBE_MAP: GLenum;
18191    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum;
18192    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum;
18193    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum;
18194    readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum;
18195    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum;
18196    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum;
18197    readonly TEXTURE_MAG_FILTER: GLenum;
18198    readonly TEXTURE_MIN_FILTER: GLenum;
18199    readonly TEXTURE_WRAP_S: GLenum;
18200    readonly TEXTURE_WRAP_T: GLenum;
18201    readonly TRIANGLES: GLenum;
18202    readonly TRIANGLE_FAN: GLenum;
18203    readonly TRIANGLE_STRIP: GLenum;
18204    readonly UNPACK_ALIGNMENT: GLenum;
18205    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum;
18206    readonly UNPACK_FLIP_Y_WEBGL: GLenum;
18207    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum;
18208    readonly UNSIGNED_BYTE: GLenum;
18209    readonly UNSIGNED_INT: GLenum;
18210    readonly UNSIGNED_SHORT: GLenum;
18211    readonly UNSIGNED_SHORT_4_4_4_4: GLenum;
18212    readonly UNSIGNED_SHORT_5_5_5_1: GLenum;
18213    readonly UNSIGNED_SHORT_5_6_5: GLenum;
18214    readonly VALIDATE_STATUS: GLenum;
18215    readonly VENDOR: GLenum;
18216    readonly VERSION: GLenum;
18217    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum;
18218    readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum;
18219    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum;
18220    readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum;
18221    readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum;
18222    readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum;
18223    readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum;
18224    readonly VERTEX_SHADER: GLenum;
18225    readonly VIEWPORT: GLenum;
18226    readonly ZERO: GLenum;
18227}
18228
18229interface WebGLRenderingContextOverloads {
18230    bufferData(target: GLenum, size: GLsizeiptr, usage: GLenum): void;
18231    bufferData(target: GLenum, data: BufferSource | null, usage: GLenum): void;
18232    bufferSubData(target: GLenum, offset: GLintptr, data: BufferSource): void;
18233    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, data: ArrayBufferView): void;
18234    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, data: ArrayBufferView): void;
18235    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
18236    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
18237    texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
18238    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
18239    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
18240    uniform1fv(location: WebGLUniformLocation | null, v: Float32List): void;
18241    uniform1iv(location: WebGLUniformLocation | null, v: Int32List): void;
18242    uniform2fv(location: WebGLUniformLocation | null, v: Float32List): void;
18243    uniform2iv(location: WebGLUniformLocation | null, v: Int32List): void;
18244    uniform3fv(location: WebGLUniformLocation | null, v: Float32List): void;
18245    uniform3iv(location: WebGLUniformLocation | null, v: Int32List): void;
18246    uniform4fv(location: WebGLUniformLocation | null, v: Float32List): void;
18247    uniform4iv(location: WebGLUniformLocation | null, v: Int32List): void;
18248    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;
18249    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;
18250    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;
18251}
18252
18253interface WebGLSampler extends WebGLObject {
18254}
18255
18256declare var WebGLSampler: {
18257    prototype: WebGLSampler;
18258    new(): WebGLSampler;
18259};
18260
18261/** 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. */
18262interface WebGLShader extends WebGLObject {
18263}
18264
18265declare var WebGLShader: {
18266    prototype: WebGLShader;
18267    new(): WebGLShader;
18268};
18269
18270/** Part of the WebGL API and represents the information returned by calling the WebGLRenderingContext.getShaderPrecisionFormat() method. */
18271interface WebGLShaderPrecisionFormat {
18272    readonly precision: GLint;
18273    readonly rangeMax: GLint;
18274    readonly rangeMin: GLint;
18275}
18276
18277declare var WebGLShaderPrecisionFormat: {
18278    prototype: WebGLShaderPrecisionFormat;
18279    new(): WebGLShaderPrecisionFormat;
18280};
18281
18282interface WebGLSync extends WebGLObject {
18283}
18284
18285declare var WebGLSync: {
18286    prototype: WebGLSync;
18287    new(): WebGLSync;
18288};
18289
18290/** Part of the WebGL API and represents an opaque texture object providing storage and state for texturing operations. */
18291interface WebGLTexture extends WebGLObject {
18292}
18293
18294declare var WebGLTexture: {
18295    prototype: WebGLTexture;
18296    new(): WebGLTexture;
18297};
18298
18299interface WebGLTransformFeedback extends WebGLObject {
18300}
18301
18302declare var WebGLTransformFeedback: {
18303    prototype: WebGLTransformFeedback;
18304    new(): WebGLTransformFeedback;
18305};
18306
18307/** Part of the WebGL API and represents the location of a uniform variable in a shader program. */
18308interface WebGLUniformLocation {
18309}
18310
18311declare var WebGLUniformLocation: {
18312    prototype: WebGLUniformLocation;
18313    new(): WebGLUniformLocation;
18314};
18315
18316interface WebGLVertexArrayObject extends WebGLObject {
18317}
18318
18319declare var WebGLVertexArrayObject: {
18320    prototype: WebGLVertexArrayObject;
18321    new(): WebGLVertexArrayObject;
18322};
18323
18324interface WebGLVertexArrayObjectOES extends WebGLObject {
18325}
18326
18327interface WebKitPoint {
18328    x: number;
18329    y: number;
18330}
18331
18332declare var WebKitPoint: {
18333    prototype: WebKitPoint;
18334    new(x?: number, y?: number): WebKitPoint;
18335};
18336
18337interface WebSocketEventMap {
18338    "close": CloseEvent;
18339    "error": Event;
18340    "message": MessageEvent;
18341    "open": Event;
18342}
18343
18344/** Provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. */
18345interface WebSocket extends EventTarget {
18346    /**
18347     * Returns a string that indicates how binary data from the WebSocket object is exposed to scripts:
18348     *
18349     * Can be set, to change how binary data is returned. The default is "blob".
18350     */
18351    binaryType: BinaryType;
18352    /**
18353     * 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.
18354     *
18355     * 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.)
18356     */
18357    readonly bufferedAmount: number;
18358    /**
18359     * Returns the extensions selected by the server, if any.
18360     */
18361    readonly extensions: string;
18362    onclose: ((this: WebSocket, ev: CloseEvent) => any) | null;
18363    onerror: ((this: WebSocket, ev: Event) => any) | null;
18364    onmessage: ((this: WebSocket, ev: MessageEvent) => any) | null;
18365    onopen: ((this: WebSocket, ev: Event) => any) | null;
18366    /**
18367     * 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.
18368     */
18369    readonly protocol: string;
18370    /**
18371     * Returns the state of the WebSocket object's connection. It can have the values described below.
18372     */
18373    readonly readyState: number;
18374    /**
18375     * Returns the URL that was used to establish the WebSocket connection.
18376     */
18377    readonly url: string;
18378    /**
18379     * Closes the WebSocket connection, optionally using code as the the WebSocket connection close code and reason as the the WebSocket connection close reason.
18380     */
18381    close(code?: number, reason?: string): void;
18382    /**
18383     * Transmits data using the WebSocket connection. data can be a string, a Blob, an ArrayBuffer, or an ArrayBufferView.
18384     */
18385    send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
18386    readonly CLOSED: number;
18387    readonly CLOSING: number;
18388    readonly CONNECTING: number;
18389    readonly OPEN: number;
18390    addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
18391    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
18392    removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
18393    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
18394}
18395
18396declare var WebSocket: {
18397    prototype: WebSocket;
18398    new(url: string, protocols?: string | string[]): WebSocket;
18399    readonly CLOSED: number;
18400    readonly CLOSING: number;
18401    readonly CONNECTING: number;
18402    readonly OPEN: number;
18403};
18404
18405/** Events that occur due to the user moving a mouse wheel or similar input device. */
18406interface WheelEvent extends MouseEvent {
18407    readonly deltaMode: number;
18408    readonly deltaX: number;
18409    readonly deltaY: number;
18410    readonly deltaZ: number;
18411    readonly DOM_DELTA_LINE: number;
18412    readonly DOM_DELTA_PAGE: number;
18413    readonly DOM_DELTA_PIXEL: number;
18414}
18415
18416declare var WheelEvent: {
18417    prototype: WheelEvent;
18418    new(type: string, eventInitDict?: WheelEventInit): WheelEvent;
18419    readonly DOM_DELTA_LINE: number;
18420    readonly DOM_DELTA_PAGE: number;
18421    readonly DOM_DELTA_PIXEL: number;
18422};
18423
18424interface WindowEventMap extends GlobalEventHandlersEventMap, WindowEventHandlersEventMap {
18425    "abort": UIEvent;
18426    "afterprint": Event;
18427    "beforeprint": Event;
18428    "beforeunload": BeforeUnloadEvent;
18429    "blur": FocusEvent;
18430    "canplay": Event;
18431    "canplaythrough": Event;
18432    "change": Event;
18433    "click": MouseEvent;
18434    "compassneedscalibration": Event;
18435    "contextmenu": MouseEvent;
18436    "dblclick": MouseEvent;
18437    "devicelight": DeviceLightEvent;
18438    "devicemotion": DeviceMotionEvent;
18439    "deviceorientation": DeviceOrientationEvent;
18440    "deviceorientationabsolute": DeviceOrientationEvent;
18441    "drag": DragEvent;
18442    "dragend": DragEvent;
18443    "dragenter": DragEvent;
18444    "dragleave": DragEvent;
18445    "dragover": DragEvent;
18446    "dragstart": DragEvent;
18447    "drop": DragEvent;
18448    "durationchange": Event;
18449    "emptied": Event;
18450    "ended": Event;
18451    "error": ErrorEvent;
18452    "focus": FocusEvent;
18453    "gamepadconnected": GamepadEvent;
18454    "gamepaddisconnected": GamepadEvent;
18455    "hashchange": HashChangeEvent;
18456    "input": Event;
18457    "invalid": Event;
18458    "keydown": KeyboardEvent;
18459    "keypress": KeyboardEvent;
18460    "keyup": KeyboardEvent;
18461    "load": Event;
18462    "loadeddata": Event;
18463    "loadedmetadata": Event;
18464    "loadstart": Event;
18465    "message": MessageEvent;
18466    "mousedown": MouseEvent;
18467    "mouseenter": MouseEvent;
18468    "mouseleave": MouseEvent;
18469    "mousemove": MouseEvent;
18470    "mouseout": MouseEvent;
18471    "mouseover": MouseEvent;
18472    "mouseup": MouseEvent;
18473    "mousewheel": Event;
18474    "MSGestureChange": Event;
18475    "MSGestureDoubleTap": Event;
18476    "MSGestureEnd": Event;
18477    "MSGestureHold": Event;
18478    "MSGestureStart": Event;
18479    "MSGestureTap": Event;
18480    "MSInertiaStart": Event;
18481    "MSPointerCancel": Event;
18482    "MSPointerDown": Event;
18483    "MSPointerEnter": Event;
18484    "MSPointerLeave": Event;
18485    "MSPointerMove": Event;
18486    "MSPointerOut": Event;
18487    "MSPointerOver": Event;
18488    "MSPointerUp": Event;
18489    "offline": Event;
18490    "online": Event;
18491    "orientationchange": Event;
18492    "pagehide": PageTransitionEvent;
18493    "pageshow": PageTransitionEvent;
18494    "pause": Event;
18495    "play": Event;
18496    "playing": Event;
18497    "popstate": PopStateEvent;
18498    "progress": ProgressEvent<Window>;
18499    "ratechange": Event;
18500    "readystatechange": ProgressEvent<Window>;
18501    "reset": Event;
18502    "resize": UIEvent;
18503    "scroll": Event;
18504    "seeked": Event;
18505    "seeking": Event;
18506    "select": Event;
18507    "stalled": Event;
18508    "storage": StorageEvent;
18509    "submit": Event;
18510    "suspend": Event;
18511    "timeupdate": Event;
18512    "unload": Event;
18513    "volumechange": Event;
18514    "vrdisplayactivate": Event;
18515    "vrdisplayblur": Event;
18516    "vrdisplayconnect": Event;
18517    "vrdisplaydeactivate": Event;
18518    "vrdisplaydisconnect": Event;
18519    "vrdisplayfocus": Event;
18520    "vrdisplaypointerrestricted": Event;
18521    "vrdisplaypointerunrestricted": Event;
18522    "vrdisplaypresentchange": Event;
18523    "waiting": Event;
18524}
18525
18526/** A window containing a DOM document; the document property points to the DOM document loaded in that window. */
18527interface Window extends EventTarget, AnimationFrameProvider, GlobalEventHandlers, WindowEventHandlers, WindowLocalStorage, WindowOrWorkerGlobalScope, WindowSessionStorage {
18528    readonly applicationCache: ApplicationCache;
18529    readonly clientInformation: Navigator;
18530    readonly closed: boolean;
18531    customElements: CustomElementRegistry;
18532    defaultStatus: string;
18533    readonly devicePixelRatio: number;
18534    readonly doNotTrack: string;
18535    readonly document: Document;
18536    /** @deprecated */
18537    readonly event: Event | undefined;
18538    /** @deprecated */
18539    readonly external: External;
18540    readonly frameElement: Element | null;
18541    readonly frames: Window;
18542    readonly history: History;
18543    readonly innerHeight: number;
18544    readonly innerWidth: number;
18545    readonly length: number;
18546    location: Location;
18547    readonly locationbar: BarProp;
18548    readonly menubar: BarProp;
18549    readonly msContentScript: ExtensionScriptApis;
18550    name: string;
18551    readonly navigator: Navigator;
18552    offscreenBuffering: string | boolean;
18553    oncompassneedscalibration: ((this: Window, ev: Event) => any) | null;
18554    ondevicelight: ((this: Window, ev: DeviceLightEvent) => any) | null;
18555    ondevicemotion: ((this: Window, ev: DeviceMotionEvent) => any) | null;
18556    ondeviceorientation: ((this: Window, ev: DeviceOrientationEvent) => any) | null;
18557    ondeviceorientationabsolute: ((this: Window, ev: DeviceOrientationEvent) => any) | null;
18558    ongamepadconnected: ((this: Window, ev: GamepadEvent) => any) | null;
18559    ongamepaddisconnected: ((this: Window, ev: GamepadEvent) => any) | null;
18560    onmousewheel: ((this: Window, ev: Event) => any) | null;
18561    onmsgesturechange: ((this: Window, ev: Event) => any) | null;
18562    onmsgesturedoubletap: ((this: Window, ev: Event) => any) | null;
18563    onmsgestureend: ((this: Window, ev: Event) => any) | null;
18564    onmsgesturehold: ((this: Window, ev: Event) => any) | null;
18565    onmsgesturestart: ((this: Window, ev: Event) => any) | null;
18566    onmsgesturetap: ((this: Window, ev: Event) => any) | null;
18567    onmsinertiastart: ((this: Window, ev: Event) => any) | null;
18568    onmspointercancel: ((this: Window, ev: Event) => any) | null;
18569    onmspointerdown: ((this: Window, ev: Event) => any) | null;
18570    onmspointerenter: ((this: Window, ev: Event) => any) | null;
18571    onmspointerleave: ((this: Window, ev: Event) => any) | null;
18572    onmspointermove: ((this: Window, ev: Event) => any) | null;
18573    onmspointerout: ((this: Window, ev: Event) => any) | null;
18574    onmspointerover: ((this: Window, ev: Event) => any) | null;
18575    onmspointerup: ((this: Window, ev: Event) => any) | null;
18576    /** @deprecated */
18577    onorientationchange: ((this: Window, ev: Event) => any) | null;
18578    onreadystatechange: ((this: Window, ev: ProgressEvent<Window>) => any) | null;
18579    onvrdisplayactivate: ((this: Window, ev: Event) => any) | null;
18580    onvrdisplayblur: ((this: Window, ev: Event) => any) | null;
18581    onvrdisplayconnect: ((this: Window, ev: Event) => any) | null;
18582    onvrdisplaydeactivate: ((this: Window, ev: Event) => any) | null;
18583    onvrdisplaydisconnect: ((this: Window, ev: Event) => any) | null;
18584    onvrdisplayfocus: ((this: Window, ev: Event) => any) | null;
18585    onvrdisplaypointerrestricted: ((this: Window, ev: Event) => any) | null;
18586    onvrdisplaypointerunrestricted: ((this: Window, ev: Event) => any) | null;
18587    onvrdisplaypresentchange: ((this: Window, ev: Event) => any) | null;
18588    opener: any;
18589    /** @deprecated */
18590    readonly orientation: string | number;
18591    readonly outerHeight: number;
18592    readonly outerWidth: number;
18593    readonly pageXOffset: number;
18594    readonly pageYOffset: number;
18595    readonly parent: Window;
18596    readonly personalbar: BarProp;
18597    readonly screen: Screen;
18598    readonly screenLeft: number;
18599    readonly screenTop: number;
18600    readonly screenX: number;
18601    readonly screenY: number;
18602    readonly scrollX: number;
18603    readonly scrollY: number;
18604    readonly scrollbars: BarProp;
18605    readonly self: Window & typeof globalThis;
18606    readonly speechSynthesis: SpeechSynthesis;
18607    status: string;
18608    readonly statusbar: BarProp;
18609    readonly styleMedia: StyleMedia;
18610    readonly toolbar: BarProp;
18611    readonly top: Window;
18612    readonly visualViewport: VisualViewport;
18613    readonly window: Window & typeof globalThis;
18614    alert(message?: any): void;
18615    blur(): void;
18616    /** @deprecated */
18617    captureEvents(): void;
18618    close(): void;
18619    confirm(message?: string): boolean;
18620    departFocus(navigationReason: NavigationReason, origin: FocusNavigationOrigin): void;
18621    focus(): void;
18622    getComputedStyle(elt: Element, pseudoElt?: string | null): CSSStyleDeclaration;
18623    getMatchedCSSRules(elt: Element, pseudoElt?: string | null): CSSRuleList;
18624    getSelection(): Selection | null;
18625    matchMedia(query: string): MediaQueryList;
18626    moveBy(x: number, y: number): void;
18627    moveTo(x: number, y: number): void;
18628    msWriteProfilerMark(profilerMarkName: string): void;
18629    open(url?: string, target?: string, features?: string, replace?: boolean): Window | null;
18630    postMessage(message: any, targetOrigin: string, transfer?: Transferable[]): void;
18631    print(): void;
18632    prompt(message?: string, _default?: string): string | null;
18633    /** @deprecated */
18634    releaseEvents(): void;
18635    resizeBy(x: number, y: number): void;
18636    resizeTo(width: number, height: number): void;
18637    scroll(options?: ScrollToOptions): void;
18638    scroll(x: number, y: number): void;
18639    scrollBy(options?: ScrollToOptions): void;
18640    scrollBy(x: number, y: number): void;
18641    scrollTo(options?: ScrollToOptions): void;
18642    scrollTo(x: number, y: number): void;
18643    stop(): void;
18644    webkitCancelAnimationFrame(handle: number): void;
18645    webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint;
18646    webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint;
18647    webkitRequestAnimationFrame(callback: FrameRequestCallback): number;
18648    addEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
18649    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
18650    removeEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
18651    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
18652    [index: number]: Window;
18653}
18654
18655declare var Window: {
18656    prototype: Window;
18657    new(): Window;
18658};
18659
18660interface WindowEventHandlersEventMap {
18661    "afterprint": Event;
18662    "beforeprint": Event;
18663    "beforeunload": BeforeUnloadEvent;
18664    "hashchange": HashChangeEvent;
18665    "languagechange": Event;
18666    "message": MessageEvent;
18667    "messageerror": MessageEvent;
18668    "offline": Event;
18669    "online": Event;
18670    "pagehide": PageTransitionEvent;
18671    "pageshow": PageTransitionEvent;
18672    "popstate": PopStateEvent;
18673    "rejectionhandled": PromiseRejectionEvent;
18674    "storage": StorageEvent;
18675    "unhandledrejection": PromiseRejectionEvent;
18676    "unload": Event;
18677}
18678
18679interface WindowEventHandlers {
18680    onafterprint: ((this: WindowEventHandlers, ev: Event) => any) | null;
18681    onbeforeprint: ((this: WindowEventHandlers, ev: Event) => any) | null;
18682    onbeforeunload: ((this: WindowEventHandlers, ev: BeforeUnloadEvent) => any) | null;
18683    onhashchange: ((this: WindowEventHandlers, ev: HashChangeEvent) => any) | null;
18684    onlanguagechange: ((this: WindowEventHandlers, ev: Event) => any) | null;
18685    onmessage: ((this: WindowEventHandlers, ev: MessageEvent) => any) | null;
18686    onmessageerror: ((this: WindowEventHandlers, ev: MessageEvent) => any) | null;
18687    onoffline: ((this: WindowEventHandlers, ev: Event) => any) | null;
18688    ononline: ((this: WindowEventHandlers, ev: Event) => any) | null;
18689    onpagehide: ((this: WindowEventHandlers, ev: PageTransitionEvent) => any) | null;
18690    onpageshow: ((this: WindowEventHandlers, ev: PageTransitionEvent) => any) | null;
18691    onpopstate: ((this: WindowEventHandlers, ev: PopStateEvent) => any) | null;
18692    onrejectionhandled: ((this: WindowEventHandlers, ev: PromiseRejectionEvent) => any) | null;
18693    onstorage: ((this: WindowEventHandlers, ev: StorageEvent) => any) | null;
18694    onunhandledrejection: ((this: WindowEventHandlers, ev: PromiseRejectionEvent) => any) | null;
18695    onunload: ((this: WindowEventHandlers, ev: Event) => any) | null;
18696    addEventListener<K extends keyof WindowEventHandlersEventMap>(type: K, listener: (this: WindowEventHandlers, ev: WindowEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
18697    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
18698    removeEventListener<K extends keyof WindowEventHandlersEventMap>(type: K, listener: (this: WindowEventHandlers, ev: WindowEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
18699    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
18700}
18701
18702interface WindowLocalStorage {
18703    readonly localStorage: Storage;
18704}
18705
18706interface WindowOrWorkerGlobalScope {
18707    readonly caches: CacheStorage;
18708    readonly crypto: Crypto;
18709    readonly indexedDB: IDBFactory;
18710    readonly isSecureContext: boolean;
18711    readonly origin: string;
18712    readonly performance: Performance;
18713    atob(data: string): string;
18714    btoa(data: string): string;
18715    clearInterval(handle?: number): void;
18716    clearTimeout(handle?: number): void;
18717    createImageBitmap(image: ImageBitmapSource, options?: ImageBitmapOptions): Promise<ImageBitmap>;
18718    createImageBitmap(image: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number, options?: ImageBitmapOptions): Promise<ImageBitmap>;
18719    fetch(input: RequestInfo, init?: RequestInit): Promise<Response>;
18720    queueMicrotask(callback: VoidFunction): void;
18721    setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
18722    setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
18723}
18724
18725interface WindowSessionStorage {
18726    readonly sessionStorage: Storage;
18727}
18728
18729interface WorkerEventMap extends AbstractWorkerEventMap {
18730    "message": MessageEvent;
18731    "messageerror": MessageEvent;
18732}
18733
18734/** 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. */
18735interface Worker extends EventTarget, AbstractWorker {
18736    onmessage: ((this: Worker, ev: MessageEvent) => any) | null;
18737    onmessageerror: ((this: Worker, ev: MessageEvent) => any) | null;
18738    /**
18739     * 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.
18740     */
18741    postMessage(message: any, transfer: Transferable[]): void;
18742    postMessage(message: any, options?: PostMessageOptions): void;
18743    /**
18744     * Aborts worker's associated global environment.
18745     */
18746    terminate(): void;
18747    addEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: Worker, ev: WorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
18748    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
18749    removeEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: Worker, ev: WorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
18750    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
18751}
18752
18753declare var Worker: {
18754    prototype: Worker;
18755    new(stringUrl: string | URL, options?: WorkerOptions): Worker;
18756};
18757
18758interface Worklet {
18759    addModule(moduleURL: string, options?: WorkletOptions): Promise<void>;
18760}
18761
18762declare var Worklet: {
18763    prototype: Worklet;
18764    new(): Worklet;
18765};
18766
18767/** 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. */
18768interface WritableStream<W = any> {
18769    readonly locked: boolean;
18770    abort(reason?: any): Promise<void>;
18771    getWriter(): WritableStreamDefaultWriter<W>;
18772}
18773
18774declare var WritableStream: {
18775    prototype: WritableStream;
18776    new<W = any>(underlyingSink?: UnderlyingSink<W>, strategy?: QueuingStrategy<W>): WritableStream<W>;
18777};
18778
18779/** 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. */
18780interface WritableStreamDefaultController {
18781    error(e?: any): void;
18782}
18783
18784declare var WritableStreamDefaultController: {
18785    prototype: WritableStreamDefaultController;
18786    new(): WritableStreamDefaultController;
18787};
18788
18789/** 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. */
18790interface WritableStreamDefaultWriter<W = any> {
18791    readonly closed: Promise<undefined>;
18792    readonly desiredSize: number | null;
18793    readonly ready: Promise<undefined>;
18794    abort(reason?: any): Promise<void>;
18795    close(): Promise<void>;
18796    releaseLock(): void;
18797    write(chunk: W): Promise<void>;
18798}
18799
18800declare var WritableStreamDefaultWriter: {
18801    prototype: WritableStreamDefaultWriter;
18802    new<W = any>(stream: WritableStream<W>): WritableStreamDefaultWriter<W>;
18803};
18804
18805/** 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. */
18806interface XMLDocument extends Document {
18807    addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: XMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
18808    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
18809    removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: XMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
18810    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
18811}
18812
18813declare var XMLDocument: {
18814    prototype: XMLDocument;
18815    new(): XMLDocument;
18816};
18817
18818interface XMLHttpRequestEventMap extends XMLHttpRequestEventTargetEventMap {
18819    "readystatechange": Event;
18820}
18821
18822/** 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. */
18823interface XMLHttpRequest extends XMLHttpRequestEventTarget {
18824    onreadystatechange: ((this: XMLHttpRequest, ev: Event) => any) | null;
18825    /**
18826     * Returns client's state.
18827     */
18828    readonly readyState: number;
18829    /**
18830     * Returns the response's body.
18831     */
18832    readonly response: any;
18833    /**
18834     * Returns the text response.
18835     *
18836     * Throws an "InvalidStateError" DOMException if responseType is not the empty string or "text".
18837     */
18838    readonly responseText: string;
18839    /**
18840     * Returns the response type.
18841     *
18842     * Can be set to change the response type. Values are: the empty string (default), "arraybuffer", "blob", "document", "json", and "text".
18843     *
18844     * When set: setting to "document" is ignored if current global object is not a Window object.
18845     *
18846     * When set: throws an "InvalidStateError" DOMException if state is loading or done.
18847     *
18848     * When set: throws an "InvalidAccessError" DOMException if the synchronous flag is set and current global object is a Window object.
18849     */
18850    responseType: XMLHttpRequestResponseType;
18851    readonly responseURL: string;
18852    /**
18853     * Returns the document response.
18854     *
18855     * Throws an "InvalidStateError" DOMException if responseType is not the empty string or "document".
18856     */
18857    readonly responseXML: Document | null;
18858    readonly status: number;
18859    readonly statusText: string;
18860    /**
18861     * 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 the synchronous flag is unset, a timeout event will then be dispatched, or a "TimeoutError" DOMException will be thrown otherwise (for the send() method).
18862     *
18863     * When set: throws an "InvalidAccessError" DOMException if the synchronous flag is set and current global object is a Window object.
18864     */
18865    timeout: number;
18866    /**
18867     * Returns the associated XMLHttpRequestUpload object. It can be used to gather transmission information when data is transferred to a server.
18868     */
18869    readonly upload: XMLHttpRequestUpload;
18870    /**
18871     * 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.
18872     *
18873     * When set: throws an "InvalidStateError" DOMException if state is not unsent or opened, or if the send() flag is set.
18874     */
18875    withCredentials: boolean;
18876    /**
18877     * Cancels any network activity.
18878     */
18879    abort(): void;
18880    getAllResponseHeaders(): string;
18881    getResponseHeader(name: string): string | null;
18882    /**
18883     * Sets the request method, request URL, and synchronous flag.
18884     *
18885     * Throws a "SyntaxError" DOMException if either method is not a valid HTTP method or url cannot be parsed.
18886     *
18887     * Throws a "SecurityError" DOMException if method is a case-insensitive match for `CONNECT`, `TRACE`, or `TRACK`.
18888     *
18889     * 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.
18890     */
18891    open(method: string, url: string): void;
18892    open(method: string, url: string, async: boolean, username?: string | null, password?: string | null): void;
18893    /**
18894     * Acts as if the `Content-Type` header value for response is mime. (It does not actually change the header though.)
18895     *
18896     * Throws an "InvalidStateError" DOMException if state is loading or done.
18897     */
18898    overrideMimeType(mime: string): void;
18899    /**
18900     * Initiates the request. The body argument provides the request body, if any, and is ignored if the request method is GET or HEAD.
18901     *
18902     * Throws an "InvalidStateError" DOMException if either state is not opened or the send() flag is set.
18903     */
18904    send(body?: Document | BodyInit | null): void;
18905    /**
18906     * Combines a header in author request headers.
18907     *
18908     * Throws an "InvalidStateError" DOMException if either state is not opened or the send() flag is set.
18909     *
18910     * Throws a "SyntaxError" DOMException if name is not a header name or if value is not a header value.
18911     */
18912    setRequestHeader(name: string, value: string): void;
18913    readonly DONE: number;
18914    readonly HEADERS_RECEIVED: number;
18915    readonly LOADING: number;
18916    readonly OPENED: number;
18917    readonly UNSENT: number;
18918    addEventListener<K extends keyof XMLHttpRequestEventMap>(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
18919    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
18920    removeEventListener<K extends keyof XMLHttpRequestEventMap>(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
18921    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
18922}
18923
18924declare var XMLHttpRequest: {
18925    prototype: XMLHttpRequest;
18926    new(): XMLHttpRequest;
18927    readonly DONE: number;
18928    readonly HEADERS_RECEIVED: number;
18929    readonly LOADING: number;
18930    readonly OPENED: number;
18931    readonly UNSENT: number;
18932};
18933
18934interface XMLHttpRequestEventTargetEventMap {
18935    "abort": ProgressEvent<XMLHttpRequestEventTarget>;
18936    "error": ProgressEvent<XMLHttpRequestEventTarget>;
18937    "load": ProgressEvent<XMLHttpRequestEventTarget>;
18938    "loadend": ProgressEvent<XMLHttpRequestEventTarget>;
18939    "loadstart": ProgressEvent<XMLHttpRequestEventTarget>;
18940    "progress": ProgressEvent<XMLHttpRequestEventTarget>;
18941    "timeout": ProgressEvent<XMLHttpRequestEventTarget>;
18942}
18943
18944interface XMLHttpRequestEventTarget extends EventTarget {
18945    onabort: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
18946    onerror: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
18947    onload: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
18948    onloadend: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
18949    onloadstart: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
18950    onprogress: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
18951    ontimeout: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
18952    addEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestEventTarget, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
18953    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
18954    removeEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestEventTarget, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
18955    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
18956}
18957
18958declare var XMLHttpRequestEventTarget: {
18959    prototype: XMLHttpRequestEventTarget;
18960    new(): XMLHttpRequestEventTarget;
18961};
18962
18963interface XMLHttpRequestUpload extends XMLHttpRequestEventTarget {
18964    addEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestUpload, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
18965    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
18966    removeEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestUpload, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
18967    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
18968}
18969
18970declare var XMLHttpRequestUpload: {
18971    prototype: XMLHttpRequestUpload;
18972    new(): XMLHttpRequestUpload;
18973};
18974
18975/** Provides the serializeToString() method to construct an XML string representing a DOM tree. */
18976interface XMLSerializer {
18977    serializeToString(root: Node): string;
18978}
18979
18980declare var XMLSerializer: {
18981    prototype: XMLSerializer;
18982    new(): XMLSerializer;
18983};
18984
18985/** The XPathEvaluator interface allows to compile and evaluate XPath expressions. */
18986interface XPathEvaluator extends XPathEvaluatorBase {
18987}
18988
18989declare var XPathEvaluator: {
18990    prototype: XPathEvaluator;
18991    new(): XPathEvaluator;
18992};
18993
18994interface XPathEvaluatorBase {
18995    createExpression(expression: string, resolver?: XPathNSResolver | null): XPathExpression;
18996    createNSResolver(nodeResolver: Node): XPathNSResolver;
18997    evaluate(expression: string, contextNode: Node, resolver?: XPathNSResolver | null, type?: number, result?: XPathResult | null): XPathResult;
18998}
18999
19000/** This interface is a compiled XPath expression that can be evaluated on a document or specific node to return information its DOM tree. */
19001interface XPathExpression {
19002    evaluate(contextNode: Node, type?: number, result?: XPathResult | null): XPathResult;
19003}
19004
19005declare var XPathExpression: {
19006    prototype: XPathExpression;
19007    new(): XPathExpression;
19008};
19009
19010/** The results generated by evaluating an XPath expression within the context of a given node. */
19011interface XPathResult {
19012    readonly booleanValue: boolean;
19013    readonly invalidIteratorState: boolean;
19014    readonly numberValue: number;
19015    readonly resultType: number;
19016    readonly singleNodeValue: Node | null;
19017    readonly snapshotLength: number;
19018    readonly stringValue: string;
19019    iterateNext(): Node | null;
19020    snapshotItem(index: number): Node | null;
19021    readonly ANY_TYPE: number;
19022    readonly ANY_UNORDERED_NODE_TYPE: number;
19023    readonly BOOLEAN_TYPE: number;
19024    readonly FIRST_ORDERED_NODE_TYPE: number;
19025    readonly NUMBER_TYPE: number;
19026    readonly ORDERED_NODE_ITERATOR_TYPE: number;
19027    readonly ORDERED_NODE_SNAPSHOT_TYPE: number;
19028    readonly STRING_TYPE: number;
19029    readonly UNORDERED_NODE_ITERATOR_TYPE: number;
19030    readonly UNORDERED_NODE_SNAPSHOT_TYPE: number;
19031}
19032
19033declare var XPathResult: {
19034    prototype: XPathResult;
19035    new(): XPathResult;
19036    readonly ANY_TYPE: number;
19037    readonly ANY_UNORDERED_NODE_TYPE: number;
19038    readonly BOOLEAN_TYPE: number;
19039    readonly FIRST_ORDERED_NODE_TYPE: number;
19040    readonly NUMBER_TYPE: number;
19041    readonly ORDERED_NODE_ITERATOR_TYPE: number;
19042    readonly ORDERED_NODE_SNAPSHOT_TYPE: number;
19043    readonly STRING_TYPE: number;
19044    readonly UNORDERED_NODE_ITERATOR_TYPE: number;
19045    readonly UNORDERED_NODE_SNAPSHOT_TYPE: number;
19046};
19047
19048/** 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. */
19049interface XSLTProcessor {
19050    clearParameters(): void;
19051    getParameter(namespaceURI: string, localName: string): any;
19052    importStylesheet(style: Node): void;
19053    removeParameter(namespaceURI: string, localName: string): void;
19054    reset(): void;
19055    setParameter(namespaceURI: string, localName: string, value: any): void;
19056    transformToDocument(source: Node): Document;
19057    transformToFragment(source: Node, document: Document): DocumentFragment;
19058}
19059
19060declare var XSLTProcessor: {
19061    prototype: XSLTProcessor;
19062    new(): XSLTProcessor;
19063};
19064
19065interface webkitRTCPeerConnection extends RTCPeerConnection {
19066    addEventListener<K extends keyof RTCPeerConnectionEventMap>(type: K, listener: (this: webkitRTCPeerConnection, ev: RTCPeerConnectionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
19067    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
19068    removeEventListener<K extends keyof RTCPeerConnectionEventMap>(type: K, listener: (this: webkitRTCPeerConnection, ev: RTCPeerConnectionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
19069    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
19070}
19071
19072declare var webkitRTCPeerConnection: {
19073    prototype: webkitRTCPeerConnection;
19074    new(configuration: RTCConfiguration): webkitRTCPeerConnection;
19075};
19076
19077declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject;
19078
19079interface Console {
19080    memory: any;
19081    assert(condition?: boolean, ...data: any[]): void;
19082    clear(): void;
19083    count(label?: string): void;
19084    countReset(label?: string): void;
19085    debug(...data: any[]): void;
19086    dir(item?: any, options?: any): void;
19087    dirxml(...data: any[]): void;
19088    error(...data: any[]): void;
19089    exception(message?: string, ...optionalParams: any[]): void;
19090    group(...data: any[]): void;
19091    groupCollapsed(...data: any[]): void;
19092    groupEnd(): void;
19093    info(...data: any[]): void;
19094    log(...data: any[]): void;
19095    table(tabularData?: any, properties?: string[]): void;
19096    time(label?: string): void;
19097    timeEnd(label?: string): void;
19098    timeLog(label?: string, ...data: any[]): void;
19099    timeStamp(label?: string): void;
19100    trace(...data: any[]): void;
19101    warn(...data: any[]): void;
19102}
19103
19104declare var console: Console;
19105
19106/** Holds useful CSS-related methods. No object with this interface are implemented: it contains only static methods and therefore is a utilitarian interface. */
19107declare namespace CSS {
19108    function escape(ident: string): string;
19109    function supports(property: string, value: string): boolean;
19110    function supports(conditionText: string): boolean;
19111}
19112
19113declare namespace WebAssembly {
19114    interface CompileError {
19115    }
19116
19117    var CompileError: {
19118        prototype: CompileError;
19119        new(): CompileError;
19120    };
19121
19122    interface Global {
19123        value: any;
19124        valueOf(): any;
19125    }
19126
19127    var Global: {
19128        prototype: Global;
19129        new(descriptor: GlobalDescriptor, v?: any): Global;
19130    };
19131
19132    interface Instance {
19133        readonly exports: Exports;
19134    }
19135
19136    var Instance: {
19137        prototype: Instance;
19138        new(module: Module, importObject?: Imports): Instance;
19139    };
19140
19141    interface LinkError {
19142    }
19143
19144    var LinkError: {
19145        prototype: LinkError;
19146        new(): LinkError;
19147    };
19148
19149    interface Memory {
19150        readonly buffer: ArrayBuffer;
19151        grow(delta: number): number;
19152    }
19153
19154    var Memory: {
19155        prototype: Memory;
19156        new(descriptor: MemoryDescriptor): Memory;
19157    };
19158
19159    interface Module {
19160    }
19161
19162    var Module: {
19163        prototype: Module;
19164        new(bytes: BufferSource): Module;
19165        customSections(moduleObject: Module, sectionName: string): ArrayBuffer[];
19166        exports(moduleObject: Module): ModuleExportDescriptor[];
19167        imports(moduleObject: Module): ModuleImportDescriptor[];
19168    };
19169
19170    interface RuntimeError {
19171    }
19172
19173    var RuntimeError: {
19174        prototype: RuntimeError;
19175        new(): RuntimeError;
19176    };
19177
19178    interface Table {
19179        readonly length: number;
19180        get(index: number): Function | null;
19181        grow(delta: number): number;
19182        set(index: number, value: Function | null): void;
19183    }
19184
19185    var Table: {
19186        prototype: Table;
19187        new(descriptor: TableDescriptor): Table;
19188    };
19189
19190    interface GlobalDescriptor {
19191        mutable?: boolean;
19192        value: ValueType;
19193    }
19194
19195    interface MemoryDescriptor {
19196        initial: number;
19197        maximum?: number;
19198    }
19199
19200    interface ModuleExportDescriptor {
19201        kind: ImportExportKind;
19202        name: string;
19203    }
19204
19205    interface ModuleImportDescriptor {
19206        kind: ImportExportKind;
19207        module: string;
19208        name: string;
19209    }
19210
19211    interface TableDescriptor {
19212        element: TableKind;
19213        initial: number;
19214        maximum?: number;
19215    }
19216
19217    interface WebAssemblyInstantiatedSource {
19218        instance: Instance;
19219        module: Module;
19220    }
19221
19222    type ImportExportKind = "function" | "global" | "memory" | "table";
19223    type TableKind = "anyfunc";
19224    type ValueType = "f32" | "f64" | "i32" | "i64";
19225    type ExportValue = Function | Global | Memory | Table;
19226    type Exports = Record<string, ExportValue>;
19227    type ImportValue = ExportValue | number;
19228    type ModuleImports = Record<string, ImportValue>;
19229    type Imports = Record<string, ModuleImports>;
19230    function compile(bytes: BufferSource): Promise<Module>;
19231    function compileStreaming(source: Response | Promise<Response>): Promise<Module>;
19232    function instantiate(bytes: BufferSource, importObject?: Imports): Promise<WebAssemblyInstantiatedSource>;
19233    function instantiate(moduleObject: Module, importObject?: Imports): Promise<Instance>;
19234    function instantiateStreaming(response: Response | PromiseLike<Response>, importObject?: Imports): Promise<WebAssemblyInstantiatedSource>;
19235    function validate(bytes: BufferSource): boolean;
19236}
19237
19238interface BlobCallback {
19239    (blob: Blob | null): void;
19240}
19241
19242interface CustomElementConstructor {
19243    new (...params: any[]): HTMLElement;
19244}
19245
19246interface DecodeErrorCallback {
19247    (error: DOMException): void;
19248}
19249
19250interface DecodeSuccessCallback {
19251    (decodedData: AudioBuffer): void;
19252}
19253
19254interface EventHandlerNonNull {
19255    (event: Event): any;
19256}
19257
19258interface ForEachCallback {
19259    (keyId: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer | null, status: MediaKeyStatus): void;
19260}
19261
19262interface FrameRequestCallback {
19263    (time: number): void;
19264}
19265
19266interface FunctionStringCallback {
19267    (data: string): void;
19268}
19269
19270interface IntersectionObserverCallback {
19271    (entries: IntersectionObserverEntry[], observer: IntersectionObserver): void;
19272}
19273
19274interface MSLaunchUriCallback {
19275    (): void;
19276}
19277
19278interface MutationCallback {
19279    (mutations: MutationRecord[], observer: MutationObserver): void;
19280}
19281
19282interface NavigatorUserMediaErrorCallback {
19283    (error: MediaStreamError): void;
19284}
19285
19286interface NavigatorUserMediaSuccessCallback {
19287    (stream: MediaStream): void;
19288}
19289
19290interface NotificationPermissionCallback {
19291    (permission: NotificationPermission): void;
19292}
19293
19294interface OnBeforeUnloadEventHandlerNonNull {
19295    (event: Event): string | null;
19296}
19297
19298interface OnErrorEventHandlerNonNull {
19299    (event: Event | string, source?: string, lineno?: number, colno?: number, error?: Error): any;
19300}
19301
19302interface PerformanceObserverCallback {
19303    (entries: PerformanceObserverEntryList, observer: PerformanceObserver): void;
19304}
19305
19306interface PositionCallback {
19307    (position: GeolocationPosition): void;
19308}
19309
19310interface PositionErrorCallback {
19311    (positionError: GeolocationPositionError): void;
19312}
19313
19314interface QueuingStrategySize<T = any> {
19315    (chunk: T): number;
19316}
19317
19318interface RTCPeerConnectionErrorCallback {
19319    (error: DOMException): void;
19320}
19321
19322interface RTCSessionDescriptionCallback {
19323    (description: RTCSessionDescriptionInit): void;
19324}
19325
19326interface RTCStatsCallback {
19327    (report: RTCStatsReport): void;
19328}
19329
19330interface ResizeObserverCallback {
19331    (entries: ResizeObserverEntry[], observer: ResizeObserver): void;
19332}
19333
19334interface TransformerFlushCallback<O> {
19335    (controller: TransformStreamDefaultController<O>): void | PromiseLike<void>;
19336}
19337
19338interface TransformerStartCallback<O> {
19339    (controller: TransformStreamDefaultController<O>): void | PromiseLike<void>;
19340}
19341
19342interface TransformerTransformCallback<I, O> {
19343    (chunk: I, controller: TransformStreamDefaultController<O>): void | PromiseLike<void>;
19344}
19345
19346interface UnderlyingSinkAbortCallback {
19347    (reason: any): void | PromiseLike<void>;
19348}
19349
19350interface UnderlyingSinkCloseCallback {
19351    (): void | PromiseLike<void>;
19352}
19353
19354interface UnderlyingSinkStartCallback {
19355    (controller: WritableStreamDefaultController): void | PromiseLike<void>;
19356}
19357
19358interface UnderlyingSinkWriteCallback<W> {
19359    (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike<void>;
19360}
19361
19362interface UnderlyingSourceCancelCallback {
19363    (reason: any): void | PromiseLike<void>;
19364}
19365
19366interface UnderlyingSourcePullCallback<R> {
19367    (controller: ReadableStreamController<R>): void | PromiseLike<void>;
19368}
19369
19370interface UnderlyingSourceStartCallback<R> {
19371    (controller: ReadableStreamController<R>): void | PromiseLike<void>;
19372}
19373
19374interface VoidFunction {
19375    (): void;
19376}
19377
19378interface HTMLElementTagNameMap {
19379    "a": HTMLAnchorElement;
19380    "abbr": HTMLElement;
19381    "address": HTMLElement;
19382    "applet": HTMLAppletElement;
19383    "area": HTMLAreaElement;
19384    "article": HTMLElement;
19385    "aside": HTMLElement;
19386    "audio": HTMLAudioElement;
19387    "b": HTMLElement;
19388    "base": HTMLBaseElement;
19389    "basefont": HTMLBaseFontElement;
19390    "bdi": HTMLElement;
19391    "bdo": HTMLElement;
19392    "blockquote": HTMLQuoteElement;
19393    "body": HTMLBodyElement;
19394    "br": HTMLBRElement;
19395    "button": HTMLButtonElement;
19396    "canvas": HTMLCanvasElement;
19397    "caption": HTMLTableCaptionElement;
19398    "cite": HTMLElement;
19399    "code": HTMLElement;
19400    "col": HTMLTableColElement;
19401    "colgroup": HTMLTableColElement;
19402    "data": HTMLDataElement;
19403    "datalist": HTMLDataListElement;
19404    "dd": HTMLElement;
19405    "del": HTMLModElement;
19406    "details": HTMLDetailsElement;
19407    "dfn": HTMLElement;
19408    "dialog": HTMLDialogElement;
19409    "dir": HTMLDirectoryElement;
19410    "div": HTMLDivElement;
19411    "dl": HTMLDListElement;
19412    "dt": HTMLElement;
19413    "em": HTMLElement;
19414    "embed": HTMLEmbedElement;
19415    "fieldset": HTMLFieldSetElement;
19416    "figcaption": HTMLElement;
19417    "figure": HTMLElement;
19418    "font": HTMLFontElement;
19419    "footer": HTMLElement;
19420    "form": HTMLFormElement;
19421    "frame": HTMLFrameElement;
19422    "frameset": HTMLFrameSetElement;
19423    "h1": HTMLHeadingElement;
19424    "h2": HTMLHeadingElement;
19425    "h3": HTMLHeadingElement;
19426    "h4": HTMLHeadingElement;
19427    "h5": HTMLHeadingElement;
19428    "h6": HTMLHeadingElement;
19429    "head": HTMLHeadElement;
19430    "header": HTMLElement;
19431    "hgroup": HTMLElement;
19432    "hr": HTMLHRElement;
19433    "html": HTMLHtmlElement;
19434    "i": HTMLElement;
19435    "iframe": HTMLIFrameElement;
19436    "img": HTMLImageElement;
19437    "input": HTMLInputElement;
19438    "ins": HTMLModElement;
19439    "kbd": HTMLElement;
19440    "label": HTMLLabelElement;
19441    "legend": HTMLLegendElement;
19442    "li": HTMLLIElement;
19443    "link": HTMLLinkElement;
19444    "main": HTMLElement;
19445    "map": HTMLMapElement;
19446    "mark": HTMLElement;
19447    "marquee": HTMLMarqueeElement;
19448    "menu": HTMLMenuElement;
19449    "meta": HTMLMetaElement;
19450    "meter": HTMLMeterElement;
19451    "nav": HTMLElement;
19452    "noscript": HTMLElement;
19453    "object": HTMLObjectElement;
19454    "ol": HTMLOListElement;
19455    "optgroup": HTMLOptGroupElement;
19456    "option": HTMLOptionElement;
19457    "output": HTMLOutputElement;
19458    "p": HTMLParagraphElement;
19459    "param": HTMLParamElement;
19460    "picture": HTMLPictureElement;
19461    "pre": HTMLPreElement;
19462    "progress": HTMLProgressElement;
19463    "q": HTMLQuoteElement;
19464    "rp": HTMLElement;
19465    "rt": HTMLElement;
19466    "ruby": HTMLElement;
19467    "s": HTMLElement;
19468    "samp": HTMLElement;
19469    "script": HTMLScriptElement;
19470    "section": HTMLElement;
19471    "select": HTMLSelectElement;
19472    "slot": HTMLSlotElement;
19473    "small": HTMLElement;
19474    "source": HTMLSourceElement;
19475    "span": HTMLSpanElement;
19476    "strong": HTMLElement;
19477    "style": HTMLStyleElement;
19478    "sub": HTMLElement;
19479    "summary": HTMLElement;
19480    "sup": HTMLElement;
19481    "table": HTMLTableElement;
19482    "tbody": HTMLTableSectionElement;
19483    "td": HTMLTableDataCellElement;
19484    "template": HTMLTemplateElement;
19485    "textarea": HTMLTextAreaElement;
19486    "tfoot": HTMLTableSectionElement;
19487    "th": HTMLTableHeaderCellElement;
19488    "thead": HTMLTableSectionElement;
19489    "time": HTMLTimeElement;
19490    "title": HTMLTitleElement;
19491    "tr": HTMLTableRowElement;
19492    "track": HTMLTrackElement;
19493    "u": HTMLElement;
19494    "ul": HTMLUListElement;
19495    "var": HTMLElement;
19496    "video": HTMLVideoElement;
19497    "wbr": HTMLElement;
19498}
19499
19500interface HTMLElementDeprecatedTagNameMap {
19501    "listing": HTMLPreElement;
19502    "xmp": HTMLPreElement;
19503}
19504
19505interface SVGElementTagNameMap {
19506    "a": SVGAElement;
19507    "circle": SVGCircleElement;
19508    "clipPath": SVGClipPathElement;
19509    "defs": SVGDefsElement;
19510    "desc": SVGDescElement;
19511    "ellipse": SVGEllipseElement;
19512    "feBlend": SVGFEBlendElement;
19513    "feColorMatrix": SVGFEColorMatrixElement;
19514    "feComponentTransfer": SVGFEComponentTransferElement;
19515    "feComposite": SVGFECompositeElement;
19516    "feConvolveMatrix": SVGFEConvolveMatrixElement;
19517    "feDiffuseLighting": SVGFEDiffuseLightingElement;
19518    "feDisplacementMap": SVGFEDisplacementMapElement;
19519    "feDistantLight": SVGFEDistantLightElement;
19520    "feFlood": SVGFEFloodElement;
19521    "feFuncA": SVGFEFuncAElement;
19522    "feFuncB": SVGFEFuncBElement;
19523    "feFuncG": SVGFEFuncGElement;
19524    "feFuncR": SVGFEFuncRElement;
19525    "feGaussianBlur": SVGFEGaussianBlurElement;
19526    "feImage": SVGFEImageElement;
19527    "feMerge": SVGFEMergeElement;
19528    "feMergeNode": SVGFEMergeNodeElement;
19529    "feMorphology": SVGFEMorphologyElement;
19530    "feOffset": SVGFEOffsetElement;
19531    "fePointLight": SVGFEPointLightElement;
19532    "feSpecularLighting": SVGFESpecularLightingElement;
19533    "feSpotLight": SVGFESpotLightElement;
19534    "feTile": SVGFETileElement;
19535    "feTurbulence": SVGFETurbulenceElement;
19536    "filter": SVGFilterElement;
19537    "foreignObject": SVGForeignObjectElement;
19538    "g": SVGGElement;
19539    "image": SVGImageElement;
19540    "line": SVGLineElement;
19541    "linearGradient": SVGLinearGradientElement;
19542    "marker": SVGMarkerElement;
19543    "mask": SVGMaskElement;
19544    "metadata": SVGMetadataElement;
19545    "path": SVGPathElement;
19546    "pattern": SVGPatternElement;
19547    "polygon": SVGPolygonElement;
19548    "polyline": SVGPolylineElement;
19549    "radialGradient": SVGRadialGradientElement;
19550    "rect": SVGRectElement;
19551    "script": SVGScriptElement;
19552    "stop": SVGStopElement;
19553    "style": SVGStyleElement;
19554    "svg": SVGSVGElement;
19555    "switch": SVGSwitchElement;
19556    "symbol": SVGSymbolElement;
19557    "text": SVGTextElement;
19558    "textPath": SVGTextPathElement;
19559    "title": SVGTitleElement;
19560    "tspan": SVGTSpanElement;
19561    "use": SVGUseElement;
19562    "view": SVGViewElement;
19563}
19564
19565/** @deprecated Directly use HTMLElementTagNameMap or SVGElementTagNameMap as appropriate, instead. */
19566type ElementTagNameMap = HTMLElementTagNameMap & Pick<SVGElementTagNameMap, Exclude<keyof SVGElementTagNameMap, keyof HTMLElementTagNameMap>>;
19567
19568declare var Audio: {
19569    new(src?: string): HTMLAudioElement;
19570};
19571declare var Image: {
19572    new(width?: number, height?: number): HTMLImageElement;
19573};
19574declare var Option: {
19575    new(text?: string, value?: string, defaultSelected?: boolean, selected?: boolean): HTMLOptionElement;
19576};
19577declare var applicationCache: ApplicationCache;
19578declare var clientInformation: Navigator;
19579declare var closed: boolean;
19580declare var customElements: CustomElementRegistry;
19581declare var defaultStatus: string;
19582declare var devicePixelRatio: number;
19583declare var doNotTrack: string;
19584declare var document: Document;
19585/** @deprecated */
19586declare var event: Event | undefined;
19587/** @deprecated */
19588declare var external: External;
19589declare var frameElement: Element | null;
19590declare var frames: Window;
19591declare var history: History;
19592declare var innerHeight: number;
19593declare var innerWidth: number;
19594declare var length: number;
19595declare var location: Location;
19596declare var locationbar: BarProp;
19597declare var menubar: BarProp;
19598declare var msContentScript: ExtensionScriptApis;
19599/** @deprecated */
19600declare const name: void;
19601declare var navigator: Navigator;
19602declare var offscreenBuffering: string | boolean;
19603declare var oncompassneedscalibration: ((this: Window, ev: Event) => any) | null;
19604declare var ondevicelight: ((this: Window, ev: DeviceLightEvent) => any) | null;
19605declare var ondevicemotion: ((this: Window, ev: DeviceMotionEvent) => any) | null;
19606declare var ondeviceorientation: ((this: Window, ev: DeviceOrientationEvent) => any) | null;
19607declare var ondeviceorientationabsolute: ((this: Window, ev: DeviceOrientationEvent) => any) | null;
19608declare var ongamepadconnected: ((this: Window, ev: GamepadEvent) => any) | null;
19609declare var ongamepaddisconnected: ((this: Window, ev: GamepadEvent) => any) | null;
19610declare var onmousewheel: ((this: Window, ev: Event) => any) | null;
19611declare var onmsgesturechange: ((this: Window, ev: Event) => any) | null;
19612declare var onmsgesturedoubletap: ((this: Window, ev: Event) => any) | null;
19613declare var onmsgestureend: ((this: Window, ev: Event) => any) | null;
19614declare var onmsgesturehold: ((this: Window, ev: Event) => any) | null;
19615declare var onmsgesturestart: ((this: Window, ev: Event) => any) | null;
19616declare var onmsgesturetap: ((this: Window, ev: Event) => any) | null;
19617declare var onmsinertiastart: ((this: Window, ev: Event) => any) | null;
19618declare var onmspointercancel: ((this: Window, ev: Event) => any) | null;
19619declare var onmspointerdown: ((this: Window, ev: Event) => any) | null;
19620declare var onmspointerenter: ((this: Window, ev: Event) => any) | null;
19621declare var onmspointerleave: ((this: Window, ev: Event) => any) | null;
19622declare var onmspointermove: ((this: Window, ev: Event) => any) | null;
19623declare var onmspointerout: ((this: Window, ev: Event) => any) | null;
19624declare var onmspointerover: ((this: Window, ev: Event) => any) | null;
19625declare var onmspointerup: ((this: Window, ev: Event) => any) | null;
19626/** @deprecated */
19627declare var onorientationchange: ((this: Window, ev: Event) => any) | null;
19628declare var onreadystatechange: ((this: Window, ev: ProgressEvent<Window>) => any) | null;
19629declare var onvrdisplayactivate: ((this: Window, ev: Event) => any) | null;
19630declare var onvrdisplayblur: ((this: Window, ev: Event) => any) | null;
19631declare var onvrdisplayconnect: ((this: Window, ev: Event) => any) | null;
19632declare var onvrdisplaydeactivate: ((this: Window, ev: Event) => any) | null;
19633declare var onvrdisplaydisconnect: ((this: Window, ev: Event) => any) | null;
19634declare var onvrdisplayfocus: ((this: Window, ev: Event) => any) | null;
19635declare var onvrdisplaypointerrestricted: ((this: Window, ev: Event) => any) | null;
19636declare var onvrdisplaypointerunrestricted: ((this: Window, ev: Event) => any) | null;
19637declare var onvrdisplaypresentchange: ((this: Window, ev: Event) => any) | null;
19638declare var opener: any;
19639/** @deprecated */
19640declare var orientation: string | number;
19641declare var outerHeight: number;
19642declare var outerWidth: number;
19643declare var pageXOffset: number;
19644declare var pageYOffset: number;
19645declare var parent: Window;
19646declare var personalbar: BarProp;
19647declare var screen: Screen;
19648declare var screenLeft: number;
19649declare var screenTop: number;
19650declare var screenX: number;
19651declare var screenY: number;
19652declare var scrollX: number;
19653declare var scrollY: number;
19654declare var scrollbars: BarProp;
19655declare var self: Window & typeof globalThis;
19656declare var speechSynthesis: SpeechSynthesis;
19657declare var status: string;
19658declare var statusbar: BarProp;
19659declare var styleMedia: StyleMedia;
19660declare var toolbar: BarProp;
19661declare var top: Window;
19662declare var visualViewport: VisualViewport;
19663declare var window: Window & typeof globalThis;
19664declare function alert(message?: any): void;
19665declare function blur(): void;
19666/** @deprecated */
19667declare function captureEvents(): void;
19668declare function close(): void;
19669declare function confirm(message?: string): boolean;
19670declare function departFocus(navigationReason: NavigationReason, origin: FocusNavigationOrigin): void;
19671declare function focus(): void;
19672declare function getComputedStyle(elt: Element, pseudoElt?: string | null): CSSStyleDeclaration;
19673declare function getMatchedCSSRules(elt: Element, pseudoElt?: string | null): CSSRuleList;
19674declare function getSelection(): Selection | null;
19675declare function matchMedia(query: string): MediaQueryList;
19676declare function moveBy(x: number, y: number): void;
19677declare function moveTo(x: number, y: number): void;
19678declare function msWriteProfilerMark(profilerMarkName: string): void;
19679declare function open(url?: string, target?: string, features?: string, replace?: boolean): Window | null;
19680declare function postMessage(message: any, targetOrigin: string, transfer?: Transferable[]): void;
19681declare function print(): void;
19682declare function prompt(message?: string, _default?: string): string | null;
19683/** @deprecated */
19684declare function releaseEvents(): void;
19685declare function resizeBy(x: number, y: number): void;
19686declare function resizeTo(width: number, height: number): void;
19687declare function scroll(options?: ScrollToOptions): void;
19688declare function scroll(x: number, y: number): void;
19689declare function scrollBy(options?: ScrollToOptions): void;
19690declare function scrollBy(x: number, y: number): void;
19691declare function scrollTo(options?: ScrollToOptions): void;
19692declare function scrollTo(x: number, y: number): void;
19693declare function stop(): void;
19694declare function webkitCancelAnimationFrame(handle: number): void;
19695declare function webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint;
19696declare function webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint;
19697declare function webkitRequestAnimationFrame(callback: FrameRequestCallback): number;
19698declare function toString(): string;
19699/**
19700 * 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.
19701 */
19702declare function dispatchEvent(event: Event): boolean;
19703declare var sessionStorage: Storage;
19704declare var localStorage: Storage;
19705/**
19706 * Fires when the user aborts the download.
19707 * @param ev The event.
19708 */
19709declare var onabort: ((this: Window, ev: UIEvent) => any) | null;
19710declare var onanimationcancel: ((this: Window, ev: AnimationEvent) => any) | null;
19711declare var onanimationend: ((this: Window, ev: AnimationEvent) => any) | null;
19712declare var onanimationiteration: ((this: Window, ev: AnimationEvent) => any) | null;
19713declare var onanimationstart: ((this: Window, ev: AnimationEvent) => any) | null;
19714declare var onauxclick: ((this: Window, ev: MouseEvent) => any) | null;
19715/**
19716 * Fires when the object loses the input focus.
19717 * @param ev The focus event.
19718 */
19719declare var onblur: ((this: Window, ev: FocusEvent) => any) | null;
19720declare var oncancel: ((this: Window, ev: Event) => any) | null;
19721/**
19722 * Occurs when playback is possible, but would require further buffering.
19723 * @param ev The event.
19724 */
19725declare var oncanplay: ((this: Window, ev: Event) => any) | null;
19726declare var oncanplaythrough: ((this: Window, ev: Event) => any) | null;
19727/**
19728 * Fires when the contents of the object or selection have changed.
19729 * @param ev The event.
19730 */
19731declare var onchange: ((this: Window, ev: Event) => any) | null;
19732/**
19733 * Fires when the user clicks the left mouse button on the object
19734 * @param ev The mouse event.
19735 */
19736declare var onclick: ((this: Window, ev: MouseEvent) => any) | null;
19737declare var onclose: ((this: Window, ev: Event) => any) | null;
19738/**
19739 * Fires when the user clicks the right mouse button in the client area, opening the context menu.
19740 * @param ev The mouse event.
19741 */
19742declare var oncontextmenu: ((this: Window, ev: MouseEvent) => any) | null;
19743declare var oncuechange: ((this: Window, ev: Event) => any) | null;
19744/**
19745 * Fires when the user double-clicks the object.
19746 * @param ev The mouse event.
19747 */
19748declare var ondblclick: ((this: Window, ev: MouseEvent) => any) | null;
19749/**
19750 * Fires on the source object continuously during a drag operation.
19751 * @param ev The event.
19752 */
19753declare var ondrag: ((this: Window, ev: DragEvent) => any) | null;
19754/**
19755 * Fires on the source object when the user releases the mouse at the close of a drag operation.
19756 * @param ev The event.
19757 */
19758declare var ondragend: ((this: Window, ev: DragEvent) => any) | null;
19759/**
19760 * Fires on the target element when the user drags the object to a valid drop target.
19761 * @param ev The drag event.
19762 */
19763declare var ondragenter: ((this: Window, ev: DragEvent) => any) | null;
19764declare var ondragexit: ((this: Window, ev: Event) => any) | null;
19765/**
19766 * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation.
19767 * @param ev The drag event.
19768 */
19769declare var ondragleave: ((this: Window, ev: DragEvent) => any) | null;
19770/**
19771 * Fires on the target element continuously while the user drags the object over a valid drop target.
19772 * @param ev The event.
19773 */
19774declare var ondragover: ((this: Window, ev: DragEvent) => any) | null;
19775/**
19776 * Fires on the source object when the user starts to drag a text selection or selected object.
19777 * @param ev The event.
19778 */
19779declare var ondragstart: ((this: Window, ev: DragEvent) => any) | null;
19780declare var ondrop: ((this: Window, ev: DragEvent) => any) | null;
19781/**
19782 * Occurs when the duration attribute is updated.
19783 * @param ev The event.
19784 */
19785declare var ondurationchange: ((this: Window, ev: Event) => any) | null;
19786/**
19787 * Occurs when the media element is reset to its initial state.
19788 * @param ev The event.
19789 */
19790declare var onemptied: ((this: Window, ev: Event) => any) | null;
19791/**
19792 * Occurs when the end of playback is reached.
19793 * @param ev The event
19794 */
19795declare var onended: ((this: Window, ev: Event) => any) | null;
19796/**
19797 * Fires when an error occurs during object loading.
19798 * @param ev The event.
19799 */
19800declare var onerror: OnErrorEventHandler;
19801/**
19802 * Fires when the object receives focus.
19803 * @param ev The event.
19804 */
19805declare var onfocus: ((this: Window, ev: FocusEvent) => any) | null;
19806declare var ongotpointercapture: ((this: Window, ev: PointerEvent) => any) | null;
19807declare var oninput: ((this: Window, ev: Event) => any) | null;
19808declare var oninvalid: ((this: Window, ev: Event) => any) | null;
19809/**
19810 * Fires when the user presses a key.
19811 * @param ev The keyboard event
19812 */
19813declare var onkeydown: ((this: Window, ev: KeyboardEvent) => any) | null;
19814/**
19815 * Fires when the user presses an alphanumeric key.
19816 * @param ev The event.
19817 */
19818declare var onkeypress: ((this: Window, ev: KeyboardEvent) => any) | null;
19819/**
19820 * Fires when the user releases a key.
19821 * @param ev The keyboard event
19822 */
19823declare var onkeyup: ((this: Window, ev: KeyboardEvent) => any) | null;
19824/**
19825 * Fires immediately after the browser loads the object.
19826 * @param ev The event.
19827 */
19828declare var onload: ((this: Window, ev: Event) => any) | null;
19829/**
19830 * Occurs when media data is loaded at the current playback position.
19831 * @param ev The event.
19832 */
19833declare var onloadeddata: ((this: Window, ev: Event) => any) | null;
19834/**
19835 * Occurs when the duration and dimensions of the media have been determined.
19836 * @param ev The event.
19837 */
19838declare var onloadedmetadata: ((this: Window, ev: Event) => any) | null;
19839/**
19840 * Occurs when Internet Explorer begins looking for media data.
19841 * @param ev The event.
19842 */
19843declare var onloadstart: ((this: Window, ev: Event) => any) | null;
19844declare var onlostpointercapture: ((this: Window, ev: PointerEvent) => any) | null;
19845/**
19846 * Fires when the user clicks the object with either mouse button.
19847 * @param ev The mouse event.
19848 */
19849declare var onmousedown: ((this: Window, ev: MouseEvent) => any) | null;
19850declare var onmouseenter: ((this: Window, ev: MouseEvent) => any) | null;
19851declare var onmouseleave: ((this: Window, ev: MouseEvent) => any) | null;
19852/**
19853 * Fires when the user moves the mouse over the object.
19854 * @param ev The mouse event.
19855 */
19856declare var onmousemove: ((this: Window, ev: MouseEvent) => any) | null;
19857/**
19858 * Fires when the user moves the mouse pointer outside the boundaries of the object.
19859 * @param ev The mouse event.
19860 */
19861declare var onmouseout: ((this: Window, ev: MouseEvent) => any) | null;
19862/**
19863 * Fires when the user moves the mouse pointer into the object.
19864 * @param ev The mouse event.
19865 */
19866declare var onmouseover: ((this: Window, ev: MouseEvent) => any) | null;
19867/**
19868 * Fires when the user releases a mouse button while the mouse is over the object.
19869 * @param ev The mouse event.
19870 */
19871declare var onmouseup: ((this: Window, ev: MouseEvent) => any) | null;
19872/**
19873 * Occurs when playback is paused.
19874 * @param ev The event.
19875 */
19876declare var onpause: ((this: Window, ev: Event) => any) | null;
19877/**
19878 * Occurs when the play method is requested.
19879 * @param ev The event.
19880 */
19881declare var onplay: ((this: Window, ev: Event) => any) | null;
19882/**
19883 * Occurs when the audio or video has started playing.
19884 * @param ev The event.
19885 */
19886declare var onplaying: ((this: Window, ev: Event) => any) | null;
19887declare var onpointercancel: ((this: Window, ev: PointerEvent) => any) | null;
19888declare var onpointerdown: ((this: Window, ev: PointerEvent) => any) | null;
19889declare var onpointerenter: ((this: Window, ev: PointerEvent) => any) | null;
19890declare var onpointerleave: ((this: Window, ev: PointerEvent) => any) | null;
19891declare var onpointermove: ((this: Window, ev: PointerEvent) => any) | null;
19892declare var onpointerout: ((this: Window, ev: PointerEvent) => any) | null;
19893declare var onpointerover: ((this: Window, ev: PointerEvent) => any) | null;
19894declare var onpointerup: ((this: Window, ev: PointerEvent) => any) | null;
19895/**
19896 * Occurs to indicate progress while downloading media data.
19897 * @param ev The event.
19898 */
19899declare var onprogress: ((this: Window, ev: ProgressEvent) => any) | null;
19900/**
19901 * Occurs when the playback rate is increased or decreased.
19902 * @param ev The event.
19903 */
19904declare var onratechange: ((this: Window, ev: Event) => any) | null;
19905/**
19906 * Fires when the user resets a form.
19907 * @param ev The event.
19908 */
19909declare var onreset: ((this: Window, ev: Event) => any) | null;
19910declare var onresize: ((this: Window, ev: UIEvent) => any) | null;
19911/**
19912 * Fires when the user repositions the scroll box in the scroll bar on the object.
19913 * @param ev The event.
19914 */
19915declare var onscroll: ((this: Window, ev: Event) => any) | null;
19916declare var onsecuritypolicyviolation: ((this: Window, ev: SecurityPolicyViolationEvent) => any) | null;
19917/**
19918 * Occurs when the seek operation ends.
19919 * @param ev The event.
19920 */
19921declare var onseeked: ((this: Window, ev: Event) => any) | null;
19922/**
19923 * Occurs when the current playback position is moved.
19924 * @param ev The event.
19925 */
19926declare var onseeking: ((this: Window, ev: Event) => any) | null;
19927/**
19928 * Fires when the current selection changes.
19929 * @param ev The event.
19930 */
19931declare var onselect: ((this: Window, ev: Event) => any) | null;
19932declare var onselectionchange: ((this: Window, ev: Event) => any) | null;
19933declare var onselectstart: ((this: Window, ev: Event) => any) | null;
19934/**
19935 * Occurs when the download has stopped.
19936 * @param ev The event.
19937 */
19938declare var onstalled: ((this: Window, ev: Event) => any) | null;
19939declare var onsubmit: ((this: Window, ev: Event) => any) | null;
19940/**
19941 * Occurs if the load operation has been intentionally halted.
19942 * @param ev The event.
19943 */
19944declare var onsuspend: ((this: Window, ev: Event) => any) | null;
19945/**
19946 * Occurs to indicate the current playback position.
19947 * @param ev The event.
19948 */
19949declare var ontimeupdate: ((this: Window, ev: Event) => any) | null;
19950declare var ontoggle: ((this: Window, ev: Event) => any) | null;
19951declare var ontouchcancel: ((this: Window, ev: TouchEvent) => any) | null | undefined;
19952declare var ontouchend: ((this: Window, ev: TouchEvent) => any) | null | undefined;
19953declare var ontouchmove: ((this: Window, ev: TouchEvent) => any) | null | undefined;
19954declare var ontouchstart: ((this: Window, ev: TouchEvent) => any) | null | undefined;
19955declare var ontransitioncancel: ((this: Window, ev: TransitionEvent) => any) | null;
19956declare var ontransitionend: ((this: Window, ev: TransitionEvent) => any) | null;
19957declare var ontransitionrun: ((this: Window, ev: TransitionEvent) => any) | null;
19958declare var ontransitionstart: ((this: Window, ev: TransitionEvent) => any) | null;
19959/**
19960 * Occurs when the volume is changed, or playback is muted or unmuted.
19961 * @param ev The event.
19962 */
19963declare var onvolumechange: ((this: Window, ev: Event) => any) | null;
19964/**
19965 * Occurs when playback stops because the next frame of a video resource is not available.
19966 * @param ev The event.
19967 */
19968declare var onwaiting: ((this: Window, ev: Event) => any) | null;
19969declare var onwheel: ((this: Window, ev: WheelEvent) => any) | null;
19970declare function cancelAnimationFrame(handle: number): void;
19971declare function requestAnimationFrame(callback: FrameRequestCallback): number;
19972declare var caches: CacheStorage;
19973declare var crypto: Crypto;
19974declare var indexedDB: IDBFactory;
19975declare var isSecureContext: boolean;
19976declare var origin: string;
19977declare var performance: Performance;
19978declare function atob(data: string): string;
19979declare function btoa(data: string): string;
19980declare function clearInterval(handle?: number): void;
19981declare function clearTimeout(handle?: number): void;
19982declare function createImageBitmap(image: ImageBitmapSource, options?: ImageBitmapOptions): Promise<ImageBitmap>;
19983declare function createImageBitmap(image: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number, options?: ImageBitmapOptions): Promise<ImageBitmap>;
19984declare function fetch(input: RequestInfo, init?: RequestInit): Promise<Response>;
19985declare function queueMicrotask(callback: VoidFunction): void;
19986declare function setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
19987declare function setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
19988declare var onafterprint: ((this: Window, ev: Event) => any) | null;
19989declare var onbeforeprint: ((this: Window, ev: Event) => any) | null;
19990declare var onbeforeunload: ((this: Window, ev: BeforeUnloadEvent) => any) | null;
19991declare var onhashchange: ((this: Window, ev: HashChangeEvent) => any) | null;
19992declare var onlanguagechange: ((this: Window, ev: Event) => any) | null;
19993declare var onmessage: ((this: Window, ev: MessageEvent) => any) | null;
19994declare var onmessageerror: ((this: Window, ev: MessageEvent) => any) | null;
19995declare var onoffline: ((this: Window, ev: Event) => any) | null;
19996declare var ononline: ((this: Window, ev: Event) => any) | null;
19997declare var onpagehide: ((this: Window, ev: PageTransitionEvent) => any) | null;
19998declare var onpageshow: ((this: Window, ev: PageTransitionEvent) => any) | null;
19999declare var onpopstate: ((this: Window, ev: PopStateEvent) => any) | null;
20000declare var onrejectionhandled: ((this: Window, ev: PromiseRejectionEvent) => any) | null;
20001declare var onstorage: ((this: Window, ev: StorageEvent) => any) | null;
20002declare var onunhandledrejection: ((this: Window, ev: PromiseRejectionEvent) => any) | null;
20003declare var onunload: ((this: Window, ev: Event) => any) | null;
20004declare function addEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
20005declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
20006declare function removeEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
20007declare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
20008type HeadersInit = Headers | string[][] | Record<string, string>;
20009type BodyInit = Blob | BufferSource | FormData | URLSearchParams | ReadableStream<Uint8Array> | string;
20010type RequestInfo = Request | string;
20011type BlobPart = BufferSource | Blob | string;
20012type DOMHighResTimeStamp = number;
20013type RenderingContext = CanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext;
20014type HTMLOrSVGImageElement = HTMLImageElement | SVGImageElement;
20015type CanvasImageSource = HTMLOrSVGImageElement | HTMLVideoElement | HTMLCanvasElement | ImageBitmap | OffscreenCanvas;
20016type OffscreenRenderingContext = OffscreenCanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext;
20017type MessageEventSource = WindowProxy | MessagePort | ServiceWorker;
20018type HTMLOrSVGScriptElement = HTMLScriptElement | SVGScriptElement;
20019type ImageBitmapSource = CanvasImageSource | Blob | ImageData;
20020type MediaProvider = MediaStream | MediaSource | Blob;
20021type OnErrorEventHandler = OnErrorEventHandlerNonNull | null;
20022type OnBeforeUnloadEventHandler = OnBeforeUnloadEventHandlerNonNull | null;
20023type TimerHandler = string | Function;
20024type ConstrainULong = number | ConstrainULongRange;
20025type ConstrainDouble = number | ConstrainDoubleRange;
20026type ConstrainBoolean = boolean | ConstrainBooleanParameters;
20027type ConstrainDOMString = string | string[] | ConstrainDOMStringParameters;
20028type PerformanceEntryList = PerformanceEntry[];
20029type ReadableStreamReader<T> = ReadableStreamDefaultReader<T>;
20030type ReadableStreamController<T> = ReadableStreamDefaultController<T>;
20031type VibratePattern = number | number[];
20032type COSEAlgorithmIdentifier = number;
20033type UvmEntry = number[];
20034type UvmEntries = UvmEntry[];
20035type AlgorithmIdentifier = string | Algorithm;
20036type HashAlgorithmIdentifier = AlgorithmIdentifier;
20037type BigInteger = Uint8Array;
20038type NamedCurve = string;
20039type GLenum = number;
20040type GLboolean = boolean;
20041type GLbitfield = number;
20042type GLint = number;
20043type GLsizei = number;
20044type GLintptr = number;
20045type GLsizeiptr = number;
20046type GLuint = number;
20047type GLfloat = number;
20048type GLclampf = number;
20049type TexImageSource = ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas;
20050type Float32List = Float32Array | GLfloat[];
20051type Int32List = Int32Array | GLint[];
20052type GLint64 = number;
20053type GLuint64 = number;
20054type Uint32List = Uint32Array | GLuint[];
20055type BufferSource = ArrayBufferView | ArrayBuffer;
20056type DOMTimeStamp = number;
20057type LineAndPositionSetting = number | AutoKeyword;
20058type FormDataEntryValue = File | string;
20059type InsertPosition = "beforebegin" | "afterbegin" | "beforeend" | "afterend";
20060type IDBValidKey = number | string | Date | BufferSource | IDBArrayKey;
20061type MutationRecordType = "attributes" | "characterData" | "childList";
20062type IDBKeyPath = string;
20063type Transferable = ArrayBuffer | MessagePort | ImageBitmap | OffscreenCanvas;
20064type RTCIceGatherCandidate = RTCIceCandidateDictionary | RTCIceCandidateComplete;
20065type RTCTransport = RTCDtlsTransport | RTCSrtpSdesTransport;
20066/** @deprecated */
20067type MouseWheelEvent = WheelEvent;
20068type WindowProxy = Window;
20069type ReadableStreamDefaultReadResult<T> = ReadableStreamDefaultReadValueResult<T> | ReadableStreamDefaultReadDoneResult;
20070type AlignSetting = "center" | "end" | "left" | "right" | "start";
20071type AnimationPlayState = "finished" | "idle" | "paused" | "running";
20072type AppendMode = "segments" | "sequence";
20073type AttestationConveyancePreference = "direct" | "enterprise" | "indirect" | "none";
20074type AudioContextLatencyCategory = "balanced" | "interactive" | "playback";
20075type AudioContextState = "closed" | "running" | "suspended";
20076type AuthenticatorAttachment = "cross-platform" | "platform";
20077type AuthenticatorTransport = "ble" | "internal" | "nfc" | "usb";
20078type AutoKeyword = "auto";
20079type AutomationRate = "a-rate" | "k-rate";
20080type BinaryType = "arraybuffer" | "blob";
20081type BiquadFilterType = "allpass" | "bandpass" | "highpass" | "highshelf" | "lowpass" | "lowshelf" | "notch" | "peaking";
20082type CanPlayTypeResult = "" | "maybe" | "probably";
20083type CanvasDirection = "inherit" | "ltr" | "rtl";
20084type CanvasFillRule = "evenodd" | "nonzero";
20085type CanvasLineCap = "butt" | "round" | "square";
20086type CanvasLineJoin = "bevel" | "miter" | "round";
20087type CanvasTextAlign = "center" | "end" | "left" | "right" | "start";
20088type CanvasTextBaseline = "alphabetic" | "bottom" | "hanging" | "ideographic" | "middle" | "top";
20089type ChannelCountMode = "clamped-max" | "explicit" | "max";
20090type ChannelInterpretation = "discrete" | "speakers";
20091type ClientTypes = "all" | "sharedworker" | "window" | "worker";
20092type ColorSpaceConversion = "default" | "none";
20093type CompositeOperation = "accumulate" | "add" | "replace";
20094type CompositeOperationOrAuto = "accumulate" | "add" | "auto" | "replace";
20095type CredentialMediationRequirement = "optional" | "required" | "silent";
20096type DOMParserSupportedType = "application/xhtml+xml" | "application/xml" | "image/svg+xml" | "text/html" | "text/xml";
20097type DirectionSetting = "" | "lr" | "rl";
20098type DisplayCaptureSurfaceType = "application" | "browser" | "monitor" | "window";
20099type DistanceModelType = "exponential" | "inverse" | "linear";
20100type DocumentReadyState = "complete" | "interactive" | "loading";
20101type EndOfStreamError = "decode" | "network";
20102type EndingType = "native" | "transparent";
20103type FillMode = "auto" | "backwards" | "both" | "forwards" | "none";
20104type FullscreenNavigationUI = "auto" | "hide" | "show";
20105type GamepadHand = "" | "left" | "right";
20106type GamepadHapticActuatorType = "vibration";
20107type GamepadMappingType = "" | "standard";
20108type IDBCursorDirection = "next" | "nextunique" | "prev" | "prevunique";
20109type IDBRequestReadyState = "done" | "pending";
20110type IDBTransactionMode = "readonly" | "readwrite" | "versionchange";
20111type ImageOrientation = "flipY" | "none";
20112type ImageSmoothingQuality = "high" | "low" | "medium";
20113type IterationCompositeOperation = "accumulate" | "replace";
20114type KeyFormat = "jwk" | "pkcs8" | "raw" | "spki";
20115type KeyType = "private" | "public" | "secret";
20116type KeyUsage = "decrypt" | "deriveBits" | "deriveKey" | "encrypt" | "sign" | "unwrapKey" | "verify" | "wrapKey";
20117type LineAlignSetting = "center" | "end" | "start";
20118type ListeningState = "active" | "disambiguation" | "inactive";
20119type MSCredentialType = "FIDO_2_0";
20120type MSTransportType = "BT" | "Embedded" | "NFC" | "USB";
20121type MSWebViewPermissionState = "allow" | "defer" | "deny" | "unknown";
20122type MSWebViewPermissionType = "geolocation" | "media" | "pointerlock" | "unlimitedIndexedDBQuota" | "webnotifications";
20123type MediaDeviceKind = "audioinput" | "audiooutput" | "videoinput";
20124type MediaKeyMessageType = "individualization-request" | "license-release" | "license-renewal" | "license-request";
20125type MediaKeySessionType = "persistent-license" | "temporary";
20126type MediaKeyStatus = "expired" | "internal-error" | "output-downscaled" | "output-restricted" | "released" | "status-pending" | "usable";
20127type MediaKeysRequirement = "not-allowed" | "optional" | "required";
20128type MediaStreamTrackState = "ended" | "live";
20129type NavigationReason = "down" | "left" | "right" | "up";
20130type NavigationType = "back_forward" | "navigate" | "prerender" | "reload";
20131type NotificationDirection = "auto" | "ltr" | "rtl";
20132type NotificationPermission = "default" | "denied" | "granted";
20133type OffscreenRenderingContextId = "2d" | "bitmaprenderer" | "webgl" | "webgl2";
20134type OrientationLockType = "any" | "landscape" | "landscape-primary" | "landscape-secondary" | "natural" | "portrait" | "portrait-primary" | "portrait-secondary";
20135type OrientationType = "landscape-primary" | "landscape-secondary" | "portrait-primary" | "portrait-secondary";
20136type OscillatorType = "custom" | "sawtooth" | "sine" | "square" | "triangle";
20137type OverSampleType = "2x" | "4x" | "none";
20138type PanningModelType = "HRTF" | "equalpower";
20139type PaymentComplete = "fail" | "success" | "unknown";
20140type PaymentShippingType = "delivery" | "pickup" | "shipping";
20141type PermissionName = "accelerometer" | "ambient-light-sensor" | "background-fetch" | "background-sync" | "bluetooth" | "camera" | "clipboard-read" | "clipboard-write" | "device-info" | "display-capture" | "geolocation" | "gyroscope" | "magnetometer" | "microphone" | "midi" | "nfc" | "notifications" | "persistent-storage" | "push" | "speaker";
20142type PermissionState = "denied" | "granted" | "prompt";
20143type PlaybackDirection = "alternate" | "alternate-reverse" | "normal" | "reverse";
20144type PositionAlignSetting = "auto" | "center" | "line-left" | "line-right";
20145type PremultiplyAlpha = "default" | "none" | "premultiply";
20146type PublicKeyCredentialType = "public-key";
20147type PushEncryptionKeyName = "auth" | "p256dh";
20148type PushPermissionState = "denied" | "granted" | "prompt";
20149type RTCBundlePolicy = "balanced" | "max-bundle" | "max-compat";
20150type RTCDataChannelState = "closed" | "closing" | "connecting" | "open";
20151type RTCDegradationPreference = "balanced" | "maintain-framerate" | "maintain-resolution";
20152type RTCDtlsRole = "auto" | "client" | "server";
20153type RTCDtlsTransportState = "closed" | "connected" | "connecting" | "failed" | "new";
20154type RTCDtxStatus = "disabled" | "enabled";
20155type RTCErrorDetailType = "data-channel-failure" | "dtls-failure" | "fingerprint-failure" | "hardware-encoder-error" | "hardware-encoder-not-available" | "idp-bad-script-failure" | "idp-execution-failure" | "idp-load-failure" | "idp-need-login" | "idp-timeout" | "idp-tls-failure" | "idp-token-expired" | "idp-token-invalid" | "sctp-failure" | "sdp-syntax-error";
20156type RTCIceCandidateType = "host" | "prflx" | "relay" | "srflx";
20157type RTCIceComponent = "rtcp" | "rtp";
20158type RTCIceConnectionState = "checking" | "closed" | "completed" | "connected" | "disconnected" | "failed" | "new";
20159type RTCIceCredentialType = "oauth" | "password";
20160type RTCIceGatherPolicy = "all" | "nohost" | "relay";
20161type RTCIceGathererState = "complete" | "gathering" | "new";
20162type RTCIceGatheringState = "complete" | "gathering" | "new";
20163type RTCIceProtocol = "tcp" | "udp";
20164type RTCIceRole = "controlled" | "controlling" | "unknown";
20165type RTCIceTcpCandidateType = "active" | "passive" | "so";
20166type RTCIceTransportPolicy = "all" | "relay";
20167type RTCIceTransportState = "checking" | "closed" | "completed" | "connected" | "disconnected" | "failed" | "new";
20168type RTCPeerConnectionState = "closed" | "connected" | "connecting" | "disconnected" | "failed" | "new";
20169type RTCPriorityType = "high" | "low" | "medium" | "very-low";
20170type RTCRtcpMuxPolicy = "negotiate" | "require";
20171type RTCRtpTransceiverDirection = "inactive" | "recvonly" | "sendonly" | "sendrecv" | "stopped";
20172type RTCSctpTransportState = "closed" | "connected" | "connecting";
20173type RTCSdpType = "answer" | "offer" | "pranswer" | "rollback";
20174type RTCSignalingState = "closed" | "have-local-offer" | "have-local-pranswer" | "have-remote-offer" | "have-remote-pranswer" | "stable";
20175type RTCStatsIceCandidatePairState = "failed" | "frozen" | "in-progress" | "succeeded" | "waiting";
20176type RTCStatsIceCandidateType = "host" | "peerreflexive" | "relayed" | "serverreflexive";
20177type RTCStatsType = "candidate-pair" | "certificate" | "codec" | "csrc" | "data-channel" | "ice-server" | "inbound-rtp" | "local-candidate" | "media-source" | "outbound-rtp" | "peer-connection" | "receiver" | "remote-candidate" | "remote-inbound-rtp" | "remote-outbound-rtp" | "sctp-transport" | "sender" | "stream" | "track" | "transceiver" | "transport";
20178type ReadyState = "closed" | "ended" | "open";
20179type ReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
20180type RequestCache = "default" | "force-cache" | "no-cache" | "no-store" | "only-if-cached" | "reload";
20181type RequestCredentials = "include" | "omit" | "same-origin";
20182type RequestDestination = "" | "audio" | "audioworklet" | "document" | "embed" | "font" | "image" | "manifest" | "object" | "paintworklet" | "report" | "script" | "sharedworker" | "style" | "track" | "video" | "worker" | "xslt";
20183type RequestMode = "cors" | "navigate" | "no-cors" | "same-origin";
20184type RequestRedirect = "error" | "follow" | "manual";
20185type ResidentKeyRequirement = "discouraged" | "preferred" | "required";
20186type ResizeObserverBoxOptions = "border-box" | "content-box" | "device-pixel-content-box";
20187type ResizeQuality = "high" | "low" | "medium" | "pixelated";
20188type ResponseType = "basic" | "cors" | "default" | "error" | "opaque" | "opaqueredirect";
20189type ScopedCredentialType = "ScopedCred";
20190type ScrollBehavior = "auto" | "smooth";
20191type ScrollLogicalPosition = "center" | "end" | "nearest" | "start";
20192type ScrollRestoration = "auto" | "manual";
20193type ScrollSetting = "" | "up";
20194type SelectionMode = "end" | "preserve" | "select" | "start";
20195type ServiceWorkerState = "activated" | "activating" | "installed" | "installing" | "parsed" | "redundant";
20196type ServiceWorkerUpdateViaCache = "all" | "imports" | "none";
20197type ShadowRootMode = "closed" | "open";
20198type SpeechRecognitionErrorCode = "aborted" | "audio-capture" | "bad-grammar" | "language-not-supported" | "network" | "no-speech" | "not-allowed" | "service-not-allowed";
20199type SpeechSynthesisErrorCode = "audio-busy" | "audio-hardware" | "canceled" | "interrupted" | "invalid-argument" | "language-unavailable" | "network" | "not-allowed" | "synthesis-failed" | "synthesis-unavailable" | "text-too-long" | "voice-unavailable";
20200type TextTrackKind = "captions" | "chapters" | "descriptions" | "metadata" | "subtitles";
20201type TextTrackMode = "disabled" | "hidden" | "showing";
20202type TouchType = "direct" | "stylus";
20203type Transport = "ble" | "nfc" | "usb";
20204type UserVerificationRequirement = "discouraged" | "preferred" | "required";
20205type VRDisplayEventReason = "mounted" | "navigation" | "requested" | "unmounted";
20206type VideoFacingModeEnum = "environment" | "left" | "right" | "user";
20207type VisibilityState = "hidden" | "visible";
20208type WebGLPowerPreference = "default" | "high-performance" | "low-power";
20209type WorkerType = "classic" | "module";
20210type XMLHttpRequestResponseType = "" | "arraybuffer" | "blob" | "document" | "json" | "text";
20211