1/////////////////////////////
2/// Window APIs
3/////////////////////////////
4
5interface AddEventListenerOptions extends EventListenerOptions {
6    once?: boolean;
7    passive?: boolean;
8    signal?: AbortSignal;
9}
10
11interface AesCbcParams extends Algorithm {
12    iv: BufferSource;
13}
14
15interface AesCtrParams extends Algorithm {
16    counter: BufferSource;
17    length: number;
18}
19
20interface AesDerivedKeyParams extends Algorithm {
21    length: number;
22}
23
24interface AesGcmParams extends Algorithm {
25    additionalData?: BufferSource;
26    iv: BufferSource;
27    tagLength?: number;
28}
29
30interface AesKeyAlgorithm extends KeyAlgorithm {
31    length: number;
32}
33
34interface AesKeyGenParams extends Algorithm {
35    length: number;
36}
37
38interface Algorithm {
39    name: string;
40}
41
42interface AnalyserOptions extends AudioNodeOptions {
43    fftSize?: number;
44    maxDecibels?: number;
45    minDecibels?: number;
46    smoothingTimeConstant?: number;
47}
48
49interface AnimationEventInit extends EventInit {
50    animationName?: string;
51    elapsedTime?: number;
52    pseudoElement?: string;
53}
54
55interface AnimationPlaybackEventInit extends EventInit {
56    currentTime?: CSSNumberish | null;
57    timelineTime?: CSSNumberish | null;
58}
59
60interface AssignedNodesOptions {
61    flatten?: boolean;
62}
63
64interface AudioBufferOptions {
65    length: number;
66    numberOfChannels?: number;
67    sampleRate: number;
68}
69
70interface AudioBufferSourceOptions {
71    buffer?: AudioBuffer | null;
72    detune?: number;
73    loop?: boolean;
74    loopEnd?: number;
75    loopStart?: number;
76    playbackRate?: number;
77}
78
79interface AudioConfiguration {
80    bitrate?: number;
81    channels?: string;
82    contentType: string;
83    samplerate?: number;
84    spatialRendering?: boolean;
85}
86
87interface AudioContextOptions {
88    latencyHint?: AudioContextLatencyCategory | number;
89    sampleRate?: number;
90}
91
92interface AudioNodeOptions {
93    channelCount?: number;
94    channelCountMode?: ChannelCountMode;
95    channelInterpretation?: ChannelInterpretation;
96}
97
98interface AudioProcessingEventInit extends EventInit {
99    inputBuffer: AudioBuffer;
100    outputBuffer: AudioBuffer;
101    playbackTime: number;
102}
103
104interface AudioTimestamp {
105    contextTime?: number;
106    performanceTime?: DOMHighResTimeStamp;
107}
108
109interface AudioWorkletNodeOptions extends AudioNodeOptions {
110    numberOfInputs?: number;
111    numberOfOutputs?: number;
112    outputChannelCount?: number[];
113    parameterData?: Record<string, number>;
114    processorOptions?: any;
115}
116
117interface AuthenticationExtensionsClientInputs {
118    appid?: string;
119    credProps?: boolean;
120    hmacCreateSecret?: boolean;
121}
122
123interface AuthenticationExtensionsClientOutputs {
124    appid?: boolean;
125    credProps?: CredentialPropertiesOutput;
126    hmacCreateSecret?: boolean;
127}
128
129interface AuthenticatorSelectionCriteria {
130    authenticatorAttachment?: AuthenticatorAttachment;
131    requireResidentKey?: boolean;
132    residentKey?: ResidentKeyRequirement;
133    userVerification?: UserVerificationRequirement;
134}
135
136interface BiquadFilterOptions extends AudioNodeOptions {
137    Q?: number;
138    detune?: number;
139    frequency?: number;
140    gain?: number;
141    type?: BiquadFilterType;
142}
143
144interface BlobEventInit {
145    data: Blob;
146    timecode?: DOMHighResTimeStamp;
147}
148
149interface BlobPropertyBag {
150    endings?: EndingType;
151    type?: string;
152}
153
154interface CSSStyleSheetInit {
155    baseURL?: string;
156    disabled?: boolean;
157    media?: MediaList | string;
158}
159
160interface CacheQueryOptions {
161    ignoreMethod?: boolean;
162    ignoreSearch?: boolean;
163    ignoreVary?: boolean;
164}
165
166interface CanvasRenderingContext2DSettings {
167    alpha?: boolean;
168    colorSpace?: PredefinedColorSpace;
169    desynchronized?: boolean;
170    willReadFrequently?: boolean;
171}
172
173interface ChannelMergerOptions extends AudioNodeOptions {
174    numberOfInputs?: number;
175}
176
177interface ChannelSplitterOptions extends AudioNodeOptions {
178    numberOfOutputs?: number;
179}
180
181interface ClientQueryOptions {
182    includeUncontrolled?: boolean;
183    type?: ClientTypes;
184}
185
186interface ClipboardEventInit extends EventInit {
187    clipboardData?: DataTransfer | null;
188}
189
190interface ClipboardItemOptions {
191    presentationStyle?: PresentationStyle;
192}
193
194interface CloseEventInit extends EventInit {
195    code?: number;
196    reason?: string;
197    wasClean?: boolean;
198}
199
200interface CompositionEventInit extends UIEventInit {
201    data?: string;
202}
203
204interface ComputedEffectTiming extends EffectTiming {
205    activeDuration?: CSSNumberish;
206    currentIteration?: number | null;
207    endTime?: CSSNumberish;
208    localTime?: CSSNumberish | null;
209    progress?: number | null;
210    startTime?: CSSNumberish;
211}
212
213interface ComputedKeyframe {
214    composite: CompositeOperationOrAuto;
215    computedOffset: number;
216    easing: string;
217    offset: number | null;
218    [property: string]: string | number | null | undefined;
219}
220
221interface ConstantSourceOptions {
222    offset?: number;
223}
224
225interface ConstrainBooleanParameters {
226    exact?: boolean;
227    ideal?: boolean;
228}
229
230interface ConstrainDOMStringParameters {
231    exact?: string | string[];
232    ideal?: string | string[];
233}
234
235interface ConstrainDoubleRange extends DoubleRange {
236    exact?: number;
237    ideal?: number;
238}
239
240interface ConstrainULongRange extends ULongRange {
241    exact?: number;
242    ideal?: number;
243}
244
245interface ConvolverOptions extends AudioNodeOptions {
246    buffer?: AudioBuffer | null;
247    disableNormalization?: boolean;
248}
249
250interface CredentialCreationOptions {
251    publicKey?: PublicKeyCredentialCreationOptions;
252    signal?: AbortSignal;
253}
254
255interface CredentialPropertiesOutput {
256    rk?: boolean;
257}
258
259interface CredentialRequestOptions {
260    mediation?: CredentialMediationRequirement;
261    publicKey?: PublicKeyCredentialRequestOptions;
262    signal?: AbortSignal;
263}
264
265interface CryptoKeyPair {
266    privateKey: CryptoKey;
267    publicKey: CryptoKey;
268}
269
270interface CustomEventInit<T = any> extends EventInit {
271    detail?: T;
272}
273
274interface DOMMatrix2DInit {
275    a?: number;
276    b?: number;
277    c?: number;
278    d?: number;
279    e?: number;
280    f?: number;
281    m11?: number;
282    m12?: number;
283    m21?: number;
284    m22?: number;
285    m41?: number;
286    m42?: number;
287}
288
289interface DOMMatrixInit extends DOMMatrix2DInit {
290    is2D?: boolean;
291    m13?: number;
292    m14?: number;
293    m23?: number;
294    m24?: number;
295    m31?: number;
296    m32?: number;
297    m33?: number;
298    m34?: number;
299    m43?: number;
300    m44?: number;
301}
302
303interface DOMPointInit {
304    w?: number;
305    x?: number;
306    y?: number;
307    z?: number;
308}
309
310interface DOMQuadInit {
311    p1?: DOMPointInit;
312    p2?: DOMPointInit;
313    p3?: DOMPointInit;
314    p4?: DOMPointInit;
315}
316
317interface DOMRectInit {
318    height?: number;
319    width?: number;
320    x?: number;
321    y?: number;
322}
323
324interface DelayOptions extends AudioNodeOptions {
325    delayTime?: number;
326    maxDelayTime?: number;
327}
328
329interface DeviceMotionEventAccelerationInit {
330    x?: number | null;
331    y?: number | null;
332    z?: number | null;
333}
334
335interface DeviceMotionEventInit extends EventInit {
336    acceleration?: DeviceMotionEventAccelerationInit;
337    accelerationIncludingGravity?: DeviceMotionEventAccelerationInit;
338    interval?: number;
339    rotationRate?: DeviceMotionEventRotationRateInit;
340}
341
342interface DeviceMotionEventRotationRateInit {
343    alpha?: number | null;
344    beta?: number | null;
345    gamma?: number | null;
346}
347
348interface DeviceOrientationEventInit extends EventInit {
349    absolute?: boolean;
350    alpha?: number | null;
351    beta?: number | null;
352    gamma?: number | null;
353}
354
355interface DisplayMediaStreamOptions {
356    audio?: boolean | MediaTrackConstraints;
357    video?: boolean | MediaTrackConstraints;
358}
359
360interface DocumentTimelineOptions {
361    originTime?: DOMHighResTimeStamp;
362}
363
364interface DoubleRange {
365    max?: number;
366    min?: number;
367}
368
369interface DragEventInit extends MouseEventInit {
370    dataTransfer?: DataTransfer | null;
371}
372
373interface DynamicsCompressorOptions extends AudioNodeOptions {
374    attack?: number;
375    knee?: number;
376    ratio?: number;
377    release?: number;
378    threshold?: number;
379}
380
381interface EcKeyAlgorithm extends KeyAlgorithm {
382    namedCurve: NamedCurve;
383}
384
385interface EcKeyGenParams extends Algorithm {
386    namedCurve: NamedCurve;
387}
388
389interface EcKeyImportParams extends Algorithm {
390    namedCurve: NamedCurve;
391}
392
393interface EcdhKeyDeriveParams extends Algorithm {
394    public: CryptoKey;
395}
396
397interface EcdsaParams extends Algorithm {
398    hash: HashAlgorithmIdentifier;
399}
400
401interface EffectTiming {
402    delay?: number;
403    direction?: PlaybackDirection;
404    duration?: number | string;
405    easing?: string;
406    endDelay?: number;
407    fill?: FillMode;
408    iterationStart?: number;
409    iterations?: number;
410    playbackRate?: number;
411}
412
413interface ElementCreationOptions {
414    is?: string;
415}
416
417interface ElementDefinitionOptions {
418    extends?: string;
419}
420
421interface ErrorEventInit extends EventInit {
422    colno?: number;
423    error?: any;
424    filename?: string;
425    lineno?: number;
426    message?: string;
427}
428
429interface EventInit {
430    bubbles?: boolean;
431    cancelable?: boolean;
432    composed?: boolean;
433}
434
435interface EventListenerOptions {
436    capture?: boolean;
437}
438
439interface EventModifierInit extends UIEventInit {
440    altKey?: boolean;
441    ctrlKey?: boolean;
442    metaKey?: boolean;
443    modifierAltGraph?: boolean;
444    modifierCapsLock?: boolean;
445    modifierFn?: boolean;
446    modifierFnLock?: boolean;
447    modifierHyper?: boolean;
448    modifierNumLock?: boolean;
449    modifierScrollLock?: boolean;
450    modifierSuper?: boolean;
451    modifierSymbol?: boolean;
452    modifierSymbolLock?: boolean;
453    shiftKey?: boolean;
454}
455
456interface EventSourceInit {
457    withCredentials?: boolean;
458}
459
460interface FilePropertyBag extends BlobPropertyBag {
461    lastModified?: number;
462}
463
464interface FileSystemFlags {
465    create?: boolean;
466    exclusive?: boolean;
467}
468
469interface FileSystemGetDirectoryOptions {
470    create?: boolean;
471}
472
473interface FileSystemGetFileOptions {
474    create?: boolean;
475}
476
477interface FileSystemRemoveOptions {
478    recursive?: boolean;
479}
480
481interface FocusEventInit extends UIEventInit {
482    relatedTarget?: EventTarget | null;
483}
484
485interface FocusOptions {
486    preventScroll?: boolean;
487}
488
489interface FontFaceDescriptors {
490    display?: string;
491    featureSettings?: string;
492    stretch?: string;
493    style?: string;
494    unicodeRange?: string;
495    variant?: string;
496    weight?: string;
497}
498
499interface FontFaceSetLoadEventInit extends EventInit {
500    fontfaces?: FontFace[];
501}
502
503interface FormDataEventInit extends EventInit {
504    formData: FormData;
505}
506
507interface FullscreenOptions {
508    navigationUI?: FullscreenNavigationUI;
509}
510
511interface GainOptions extends AudioNodeOptions {
512    gain?: number;
513}
514
515interface GamepadEventInit extends EventInit {
516    gamepad: Gamepad;
517}
518
519interface GetAnimationsOptions {
520    subtree?: boolean;
521}
522
523interface GetNotificationOptions {
524    tag?: string;
525}
526
527interface GetRootNodeOptions {
528    composed?: boolean;
529}
530
531interface HashChangeEventInit extends EventInit {
532    newURL?: string;
533    oldURL?: string;
534}
535
536interface HkdfParams extends Algorithm {
537    hash: HashAlgorithmIdentifier;
538    info: BufferSource;
539    salt: BufferSource;
540}
541
542interface HmacImportParams extends Algorithm {
543    hash: HashAlgorithmIdentifier;
544    length?: number;
545}
546
547interface HmacKeyAlgorithm extends KeyAlgorithm {
548    hash: KeyAlgorithm;
549    length: number;
550}
551
552interface HmacKeyGenParams extends Algorithm {
553    hash: HashAlgorithmIdentifier;
554    length?: number;
555}
556
557interface IDBDatabaseInfo {
558    name?: string;
559    version?: number;
560}
561
562interface IDBIndexParameters {
563    multiEntry?: boolean;
564    unique?: boolean;
565}
566
567interface IDBObjectStoreParameters {
568    autoIncrement?: boolean;
569    keyPath?: string | string[] | null;
570}
571
572interface IDBTransactionOptions {
573    durability?: IDBTransactionDurability;
574}
575
576interface IDBVersionChangeEventInit extends EventInit {
577    newVersion?: number | null;
578    oldVersion?: number;
579}
580
581interface IIRFilterOptions extends AudioNodeOptions {
582    feedback: number[];
583    feedforward: number[];
584}
585
586interface IdleRequestOptions {
587    timeout?: number;
588}
589
590interface ImageBitmapOptions {
591    colorSpaceConversion?: ColorSpaceConversion;
592    imageOrientation?: ImageOrientation;
593    premultiplyAlpha?: PremultiplyAlpha;
594    resizeHeight?: number;
595    resizeQuality?: ResizeQuality;
596    resizeWidth?: number;
597}
598
599interface ImageBitmapRenderingContextSettings {
600    alpha?: boolean;
601}
602
603interface ImageDataSettings {
604    colorSpace?: PredefinedColorSpace;
605}
606
607interface ImportMeta {
608    url: string;
609}
610
611interface InputEventInit extends UIEventInit {
612    data?: string | null;
613    dataTransfer?: DataTransfer | null;
614    inputType?: string;
615    isComposing?: boolean;
616    targetRanges?: StaticRange[];
617}
618
619interface IntersectionObserverEntryInit {
620    boundingClientRect: DOMRectInit;
621    intersectionRatio: number;
622    intersectionRect: DOMRectInit;
623    isIntersecting: boolean;
624    rootBounds: DOMRectInit | null;
625    target: Element;
626    time: DOMHighResTimeStamp;
627}
628
629interface IntersectionObserverInit {
630    root?: Element | Document | null;
631    rootMargin?: string;
632    threshold?: number | number[];
633}
634
635interface JsonWebKey {
636    alg?: string;
637    crv?: string;
638    d?: string;
639    dp?: string;
640    dq?: string;
641    e?: string;
642    ext?: boolean;
643    k?: string;
644    key_ops?: string[];
645    kty?: string;
646    n?: string;
647    oth?: RsaOtherPrimesInfo[];
648    p?: string;
649    q?: string;
650    qi?: string;
651    use?: string;
652    x?: string;
653    y?: string;
654}
655
656interface KeyAlgorithm {
657    name: string;
658}
659
660interface KeyboardEventInit extends EventModifierInit {
661    /** @deprecated */
662    charCode?: number;
663    code?: string;
664    isComposing?: boolean;
665    key?: string;
666    /** @deprecated */
667    keyCode?: number;
668    location?: number;
669    repeat?: boolean;
670}
671
672interface Keyframe {
673    composite?: CompositeOperationOrAuto;
674    easing?: string;
675    offset?: number | null;
676    [property: string]: string | number | null | undefined;
677}
678
679interface KeyframeAnimationOptions extends KeyframeEffectOptions {
680    id?: string;
681}
682
683interface KeyframeEffectOptions extends EffectTiming {
684    composite?: CompositeOperation;
685    iterationComposite?: IterationCompositeOperation;
686    pseudoElement?: string | null;
687}
688
689interface LockInfo {
690    clientId?: string;
691    mode?: LockMode;
692    name?: string;
693}
694
695interface LockManagerSnapshot {
696    held?: LockInfo[];
697    pending?: LockInfo[];
698}
699
700interface LockOptions {
701    ifAvailable?: boolean;
702    mode?: LockMode;
703    signal?: AbortSignal;
704    steal?: boolean;
705}
706
707interface MediaCapabilitiesDecodingInfo extends MediaCapabilitiesInfo {
708    configuration?: MediaDecodingConfiguration;
709}
710
711interface MediaCapabilitiesEncodingInfo extends MediaCapabilitiesInfo {
712    configuration?: MediaEncodingConfiguration;
713}
714
715interface MediaCapabilitiesInfo {
716    powerEfficient: boolean;
717    smooth: boolean;
718    supported: boolean;
719}
720
721interface MediaConfiguration {
722    audio?: AudioConfiguration;
723    video?: VideoConfiguration;
724}
725
726interface MediaDecodingConfiguration extends MediaConfiguration {
727    type: MediaDecodingType;
728}
729
730interface MediaElementAudioSourceOptions {
731    mediaElement: HTMLMediaElement;
732}
733
734interface MediaEncodingConfiguration extends MediaConfiguration {
735    type: MediaEncodingType;
736}
737
738interface MediaEncryptedEventInit extends EventInit {
739    initData?: ArrayBuffer | null;
740    initDataType?: string;
741}
742
743interface MediaImage {
744    sizes?: string;
745    src: string;
746    type?: string;
747}
748
749interface MediaKeyMessageEventInit extends EventInit {
750    message: ArrayBuffer;
751    messageType: MediaKeyMessageType;
752}
753
754interface MediaKeySystemConfiguration {
755    audioCapabilities?: MediaKeySystemMediaCapability[];
756    distinctiveIdentifier?: MediaKeysRequirement;
757    initDataTypes?: string[];
758    label?: string;
759    persistentState?: MediaKeysRequirement;
760    sessionTypes?: string[];
761    videoCapabilities?: MediaKeySystemMediaCapability[];
762}
763
764interface MediaKeySystemMediaCapability {
765    contentType?: string;
766    encryptionScheme?: string | null;
767    robustness?: string;
768}
769
770interface MediaMetadataInit {
771    album?: string;
772    artist?: string;
773    artwork?: MediaImage[];
774    title?: string;
775}
776
777interface MediaPositionState {
778    duration?: number;
779    playbackRate?: number;
780    position?: number;
781}
782
783interface MediaQueryListEventInit extends EventInit {
784    matches?: boolean;
785    media?: string;
786}
787
788interface MediaRecorderOptions {
789    audioBitsPerSecond?: number;
790    bitsPerSecond?: number;
791    mimeType?: string;
792    videoBitsPerSecond?: number;
793}
794
795interface MediaSessionActionDetails {
796    action: MediaSessionAction;
797    fastSeek?: boolean;
798    seekOffset?: number;
799    seekTime?: number;
800}
801
802interface MediaStreamAudioSourceOptions {
803    mediaStream: MediaStream;
804}
805
806interface MediaStreamConstraints {
807    audio?: boolean | MediaTrackConstraints;
808    peerIdentity?: string;
809    preferCurrentTab?: boolean;
810    video?: boolean | MediaTrackConstraints;
811}
812
813interface MediaStreamTrackEventInit extends EventInit {
814    track: MediaStreamTrack;
815}
816
817interface MediaTrackCapabilities {
818    aspectRatio?: DoubleRange;
819    autoGainControl?: boolean[];
820    channelCount?: ULongRange;
821    cursor?: string[];
822    deviceId?: string;
823    displaySurface?: string;
824    echoCancellation?: boolean[];
825    facingMode?: string[];
826    frameRate?: DoubleRange;
827    groupId?: string;
828    height?: ULongRange;
829    latency?: DoubleRange;
830    logicalSurface?: boolean;
831    noiseSuppression?: boolean[];
832    resizeMode?: string[];
833    sampleRate?: ULongRange;
834    sampleSize?: ULongRange;
835    width?: ULongRange;
836}
837
838interface MediaTrackConstraintSet {
839    aspectRatio?: ConstrainDouble;
840    autoGainControl?: ConstrainBoolean;
841    channelCount?: ConstrainULong;
842    deviceId?: ConstrainDOMString;
843    echoCancellation?: ConstrainBoolean;
844    facingMode?: ConstrainDOMString;
845    frameRate?: ConstrainDouble;
846    groupId?: ConstrainDOMString;
847    height?: ConstrainULong;
848    latency?: ConstrainDouble;
849    noiseSuppression?: ConstrainBoolean;
850    sampleRate?: ConstrainULong;
851    sampleSize?: ConstrainULong;
852    suppressLocalAudioPlayback?: ConstrainBoolean;
853    width?: ConstrainULong;
854}
855
856interface MediaTrackConstraints extends MediaTrackConstraintSet {
857    advanced?: MediaTrackConstraintSet[];
858}
859
860interface MediaTrackSettings {
861    aspectRatio?: number;
862    autoGainControl?: boolean;
863    deviceId?: string;
864    echoCancellation?: boolean;
865    facingMode?: string;
866    frameRate?: number;
867    groupId?: string;
868    height?: number;
869    noiseSuppression?: boolean;
870    restrictOwnAudio?: boolean;
871    sampleRate?: number;
872    sampleSize?: number;
873    width?: number;
874}
875
876interface MediaTrackSupportedConstraints {
877    aspectRatio?: boolean;
878    autoGainControl?: boolean;
879    deviceId?: boolean;
880    echoCancellation?: boolean;
881    facingMode?: boolean;
882    frameRate?: boolean;
883    groupId?: boolean;
884    height?: boolean;
885    noiseSuppression?: boolean;
886    sampleRate?: boolean;
887    sampleSize?: boolean;
888    suppressLocalAudioPlayback?: boolean;
889    width?: boolean;
890}
891
892interface MessageEventInit<T = any> extends EventInit {
893    data?: T;
894    lastEventId?: string;
895    origin?: string;
896    ports?: MessagePort[];
897    source?: MessageEventSource | null;
898}
899
900interface MouseEventInit extends EventModifierInit {
901    button?: number;
902    buttons?: number;
903    clientX?: number;
904    clientY?: number;
905    movementX?: number;
906    movementY?: number;
907    relatedTarget?: EventTarget | null;
908    screenX?: number;
909    screenY?: number;
910}
911
912interface MultiCacheQueryOptions extends CacheQueryOptions {
913    cacheName?: string;
914}
915
916interface MutationObserverInit {
917    /** 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. */
918    attributeFilter?: string[];
919    /** Set to true if attributes is true or omitted and target's attribute value before the mutation needs to be recorded. */
920    attributeOldValue?: boolean;
921    /** Set to true if mutations to target's attributes are to be observed. Can be omitted if attributeOldValue or attributeFilter is specified. */
922    attributes?: boolean;
923    /** Set to true if mutations to target's data are to be observed. Can be omitted if characterDataOldValue is specified. */
924    characterData?: boolean;
925    /** Set to true if characterData is set to true or omitted and target's data before the mutation needs to be recorded. */
926    characterDataOldValue?: boolean;
927    /** Set to true if mutations to target's children are to be observed. */
928    childList?: boolean;
929    /** Set to true if mutations to not just target, but also target's descendants are to be observed. */
930    subtree?: boolean;
931}
932
933interface NavigationPreloadState {
934    enabled?: boolean;
935    headerValue?: string;
936}
937
938interface NotificationAction {
939    action: string;
940    icon?: string;
941    title: string;
942}
943
944interface NotificationOptions {
945    actions?: NotificationAction[];
946    badge?: string;
947    body?: string;
948    data?: any;
949    dir?: NotificationDirection;
950    icon?: string;
951    image?: string;
952    lang?: string;
953    renotify?: boolean;
954    requireInteraction?: boolean;
955    silent?: boolean;
956    tag?: string;
957    timestamp?: EpochTimeStamp;
958    vibrate?: VibratePattern;
959}
960
961interface OfflineAudioCompletionEventInit extends EventInit {
962    renderedBuffer: AudioBuffer;
963}
964
965interface OfflineAudioContextOptions {
966    length: number;
967    numberOfChannels?: number;
968    sampleRate: number;
969}
970
971interface OptionalEffectTiming {
972    delay?: number;
973    direction?: PlaybackDirection;
974    duration?: number | string;
975    easing?: string;
976    endDelay?: number;
977    fill?: FillMode;
978    iterationStart?: number;
979    iterations?: number;
980    playbackRate?: number;
981}
982
983interface OscillatorOptions extends AudioNodeOptions {
984    detune?: number;
985    frequency?: number;
986    periodicWave?: PeriodicWave;
987    type?: OscillatorType;
988}
989
990interface PageTransitionEventInit extends EventInit {
991    persisted?: boolean;
992}
993
994interface PannerOptions extends AudioNodeOptions {
995    coneInnerAngle?: number;
996    coneOuterAngle?: number;
997    coneOuterGain?: number;
998    distanceModel?: DistanceModelType;
999    maxDistance?: number;
1000    orientationX?: number;
1001    orientationY?: number;
1002    orientationZ?: number;
1003    panningModel?: PanningModelType;
1004    positionX?: number;
1005    positionY?: number;
1006    positionZ?: number;
1007    refDistance?: number;
1008    rolloffFactor?: number;
1009}
1010
1011interface PaymentCurrencyAmount {
1012    currency: string;
1013    value: string;
1014}
1015
1016interface PaymentDetailsBase {
1017    displayItems?: PaymentItem[];
1018    modifiers?: PaymentDetailsModifier[];
1019}
1020
1021interface PaymentDetailsInit extends PaymentDetailsBase {
1022    id?: string;
1023    total: PaymentItem;
1024}
1025
1026interface PaymentDetailsModifier {
1027    additionalDisplayItems?: PaymentItem[];
1028    data?: any;
1029    supportedMethods: string;
1030    total?: PaymentItem;
1031}
1032
1033interface PaymentDetailsUpdate extends PaymentDetailsBase {
1034    paymentMethodErrors?: any;
1035    total?: PaymentItem;
1036}
1037
1038interface PaymentItem {
1039    amount: PaymentCurrencyAmount;
1040    label: string;
1041    pending?: boolean;
1042}
1043
1044interface PaymentMethodChangeEventInit extends PaymentRequestUpdateEventInit {
1045    methodDetails?: any;
1046    methodName?: string;
1047}
1048
1049interface PaymentMethodData {
1050    data?: any;
1051    supportedMethods: string;
1052}
1053
1054interface PaymentRequestUpdateEventInit extends EventInit {
1055}
1056
1057interface PaymentValidationErrors {
1058    error?: string;
1059    paymentMethod?: any;
1060}
1061
1062interface Pbkdf2Params extends Algorithm {
1063    hash: HashAlgorithmIdentifier;
1064    iterations: number;
1065    salt: BufferSource;
1066}
1067
1068interface PerformanceMarkOptions {
1069    detail?: any;
1070    startTime?: DOMHighResTimeStamp;
1071}
1072
1073interface PerformanceMeasureOptions {
1074    detail?: any;
1075    duration?: DOMHighResTimeStamp;
1076    end?: string | DOMHighResTimeStamp;
1077    start?: string | DOMHighResTimeStamp;
1078}
1079
1080interface PerformanceObserverInit {
1081    buffered?: boolean;
1082    entryTypes?: string[];
1083    type?: string;
1084}
1085
1086interface PeriodicWaveConstraints {
1087    disableNormalization?: boolean;
1088}
1089
1090interface PeriodicWaveOptions extends PeriodicWaveConstraints {
1091    imag?: number[] | Float32Array;
1092    real?: number[] | Float32Array;
1093}
1094
1095interface PermissionDescriptor {
1096    name: PermissionName;
1097}
1098
1099interface PictureInPictureEventInit extends EventInit {
1100    pictureInPictureWindow: PictureInPictureWindow;
1101}
1102
1103interface PointerEventInit extends MouseEventInit {
1104    coalescedEvents?: PointerEvent[];
1105    height?: number;
1106    isPrimary?: boolean;
1107    pointerId?: number;
1108    pointerType?: string;
1109    predictedEvents?: PointerEvent[];
1110    pressure?: number;
1111    tangentialPressure?: number;
1112    tiltX?: number;
1113    tiltY?: number;
1114    twist?: number;
1115    width?: number;
1116}
1117
1118interface PopStateEventInit extends EventInit {
1119    state?: any;
1120}
1121
1122interface PositionOptions {
1123    enableHighAccuracy?: boolean;
1124    maximumAge?: number;
1125    timeout?: number;
1126}
1127
1128interface ProgressEventInit extends EventInit {
1129    lengthComputable?: boolean;
1130    loaded?: number;
1131    total?: number;
1132}
1133
1134interface PromiseRejectionEventInit extends EventInit {
1135    promise: Promise<any>;
1136    reason?: any;
1137}
1138
1139interface PropertyIndexedKeyframes {
1140    composite?: CompositeOperationOrAuto | CompositeOperationOrAuto[];
1141    easing?: string | string[];
1142    offset?: number | (number | null)[];
1143    [property: string]: string | string[] | number | null | (number | null)[] | undefined;
1144}
1145
1146interface PublicKeyCredentialCreationOptions {
1147    attestation?: AttestationConveyancePreference;
1148    authenticatorSelection?: AuthenticatorSelectionCriteria;
1149    challenge: BufferSource;
1150    excludeCredentials?: PublicKeyCredentialDescriptor[];
1151    extensions?: AuthenticationExtensionsClientInputs;
1152    pubKeyCredParams: PublicKeyCredentialParameters[];
1153    rp: PublicKeyCredentialRpEntity;
1154    timeout?: number;
1155    user: PublicKeyCredentialUserEntity;
1156}
1157
1158interface PublicKeyCredentialDescriptor {
1159    id: BufferSource;
1160    transports?: AuthenticatorTransport[];
1161    type: PublicKeyCredentialType;
1162}
1163
1164interface PublicKeyCredentialEntity {
1165    name: string;
1166}
1167
1168interface PublicKeyCredentialParameters {
1169    alg: COSEAlgorithmIdentifier;
1170    type: PublicKeyCredentialType;
1171}
1172
1173interface PublicKeyCredentialRequestOptions {
1174    allowCredentials?: PublicKeyCredentialDescriptor[];
1175    challenge: BufferSource;
1176    extensions?: AuthenticationExtensionsClientInputs;
1177    rpId?: string;
1178    timeout?: number;
1179    userVerification?: UserVerificationRequirement;
1180}
1181
1182interface PublicKeyCredentialRpEntity extends PublicKeyCredentialEntity {
1183    id?: string;
1184}
1185
1186interface PublicKeyCredentialUserEntity extends PublicKeyCredentialEntity {
1187    displayName: string;
1188    id: BufferSource;
1189}
1190
1191interface PushSubscriptionJSON {
1192    endpoint?: string;
1193    expirationTime?: EpochTimeStamp | null;
1194    keys?: Record<string, string>;
1195}
1196
1197interface PushSubscriptionOptionsInit {
1198    applicationServerKey?: BufferSource | string | null;
1199    userVisibleOnly?: boolean;
1200}
1201
1202interface QueuingStrategy<T = any> {
1203    highWaterMark?: number;
1204    size?: QueuingStrategySize<T>;
1205}
1206
1207interface QueuingStrategyInit {
1208    /**
1209     * Creates a new ByteLengthQueuingStrategy with the provided high water mark.
1210     *
1211     * 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.
1212     */
1213    highWaterMark: number;
1214}
1215
1216interface RTCAnswerOptions extends RTCOfferAnswerOptions {
1217}
1218
1219interface RTCCertificateExpiration {
1220    expires?: number;
1221}
1222
1223interface RTCConfiguration {
1224    bundlePolicy?: RTCBundlePolicy;
1225    certificates?: RTCCertificate[];
1226    iceCandidatePoolSize?: number;
1227    iceServers?: RTCIceServer[];
1228    iceTransportPolicy?: RTCIceTransportPolicy;
1229    rtcpMuxPolicy?: RTCRtcpMuxPolicy;
1230}
1231
1232interface RTCDTMFToneChangeEventInit extends EventInit {
1233    tone?: string;
1234}
1235
1236interface RTCDataChannelEventInit extends EventInit {
1237    channel: RTCDataChannel;
1238}
1239
1240interface RTCDataChannelInit {
1241    id?: number;
1242    maxPacketLifeTime?: number;
1243    maxRetransmits?: number;
1244    negotiated?: boolean;
1245    ordered?: boolean;
1246    protocol?: string;
1247}
1248
1249interface RTCDtlsFingerprint {
1250    algorithm?: string;
1251    value?: string;
1252}
1253
1254interface RTCEncodedAudioFrameMetadata {
1255    contributingSources?: number[];
1256    synchronizationSource?: number;
1257}
1258
1259interface RTCEncodedVideoFrameMetadata {
1260    contributingSources?: number[];
1261    dependencies?: number[];
1262    frameId?: number;
1263    height?: number;
1264    spatialIndex?: number;
1265    synchronizationSource?: number;
1266    temporalIndex?: number;
1267    width?: number;
1268}
1269
1270interface RTCErrorEventInit extends EventInit {
1271    error: RTCError;
1272}
1273
1274interface RTCErrorInit {
1275    errorDetail: RTCErrorDetailType;
1276    httpRequestStatusCode?: number;
1277    receivedAlert?: number;
1278    sctpCauseCode?: number;
1279    sdpLineNumber?: number;
1280    sentAlert?: number;
1281}
1282
1283interface RTCIceCandidateInit {
1284    candidate?: string;
1285    sdpMLineIndex?: number | null;
1286    sdpMid?: string | null;
1287    usernameFragment?: string | null;
1288}
1289
1290interface RTCIceCandidatePairStats extends RTCStats {
1291    availableIncomingBitrate?: number;
1292    availableOutgoingBitrate?: number;
1293    bytesReceived?: number;
1294    bytesSent?: number;
1295    currentRoundTripTime?: number;
1296    lastPacketReceivedTimestamp?: DOMHighResTimeStamp;
1297    lastPacketSentTimestamp?: DOMHighResTimeStamp;
1298    localCandidateId: string;
1299    nominated?: boolean;
1300    remoteCandidateId: string;
1301    requestsReceived?: number;
1302    requestsSent?: number;
1303    responsesReceived?: number;
1304    responsesSent?: number;
1305    state: RTCStatsIceCandidatePairState;
1306    totalRoundTripTime?: number;
1307    transportId: string;
1308}
1309
1310interface RTCIceServer {
1311    credential?: string;
1312    urls: string | string[];
1313    username?: string;
1314}
1315
1316interface RTCInboundRtpStreamStats extends RTCReceivedRtpStreamStats {
1317    audioLevel?: number;
1318    bytesReceived?: number;
1319    concealedSamples?: number;
1320    concealmentEvents?: number;
1321    decoderImplementation?: string;
1322    estimatedPlayoutTimestamp?: DOMHighResTimeStamp;
1323    fecPacketsDiscarded?: number;
1324    fecPacketsReceived?: number;
1325    firCount?: number;
1326    frameHeight?: number;
1327    frameWidth?: number;
1328    framesDecoded?: number;
1329    framesDropped?: number;
1330    framesPerSecond?: number;
1331    framesReceived?: number;
1332    headerBytesReceived?: number;
1333    insertedSamplesForDeceleration?: number;
1334    jitterBufferDelay?: number;
1335    jitterBufferEmittedCount?: number;
1336    keyFramesDecoded?: number;
1337    kind: string;
1338    lastPacketReceivedTimestamp?: DOMHighResTimeStamp;
1339    nackCount?: number;
1340    packetsDiscarded?: number;
1341    pliCount?: number;
1342    qpSum?: number;
1343    remoteId?: string;
1344    removedSamplesForAcceleration?: number;
1345    silentConcealedSamples?: number;
1346    totalAudioEnergy?: number;
1347    totalDecodeTime?: number;
1348    totalInterFrameDelay?: number;
1349    totalProcessingDelay?: number;
1350    totalSamplesDuration?: number;
1351    totalSamplesReceived?: number;
1352    totalSquaredInterFrameDelay?: number;
1353}
1354
1355interface RTCLocalSessionDescriptionInit {
1356    sdp?: string;
1357    type?: RTCSdpType;
1358}
1359
1360interface RTCOfferAnswerOptions {
1361}
1362
1363interface RTCOfferOptions extends RTCOfferAnswerOptions {
1364    iceRestart?: boolean;
1365    offerToReceiveAudio?: boolean;
1366    offerToReceiveVideo?: boolean;
1367}
1368
1369interface RTCOutboundRtpStreamStats extends RTCSentRtpStreamStats {
1370    firCount?: number;
1371    frameHeight?: number;
1372    frameWidth?: number;
1373    framesEncoded?: number;
1374    framesPerSecond?: number;
1375    framesSent?: number;
1376    headerBytesSent?: number;
1377    hugeFramesSent?: number;
1378    keyFramesEncoded?: number;
1379    mediaSourceId?: string;
1380    nackCount?: number;
1381    pliCount?: number;
1382    qpSum?: number;
1383    qualityLimitationResolutionChanges?: number;
1384    remoteId?: string;
1385    retransmittedBytesSent?: number;
1386    retransmittedPacketsSent?: number;
1387    rid?: string;
1388    targetBitrate?: number;
1389    totalEncodeTime?: number;
1390    totalEncodedBytesTarget?: number;
1391    totalPacketSendDelay?: number;
1392}
1393
1394interface RTCPeerConnectionIceErrorEventInit extends EventInit {
1395    address?: string | null;
1396    errorCode: number;
1397    errorText?: string;
1398    port?: number | null;
1399    url?: string;
1400}
1401
1402interface RTCPeerConnectionIceEventInit extends EventInit {
1403    candidate?: RTCIceCandidate | null;
1404    url?: string | null;
1405}
1406
1407interface RTCReceivedRtpStreamStats extends RTCRtpStreamStats {
1408    jitter?: number;
1409    packetsLost?: number;
1410    packetsReceived?: number;
1411}
1412
1413interface RTCRtcpParameters {
1414    cname?: string;
1415    reducedSize?: boolean;
1416}
1417
1418interface RTCRtpCapabilities {
1419    codecs: RTCRtpCodecCapability[];
1420    headerExtensions: RTCRtpHeaderExtensionCapability[];
1421}
1422
1423interface RTCRtpCodecCapability {
1424    channels?: number;
1425    clockRate: number;
1426    mimeType: string;
1427    sdpFmtpLine?: string;
1428}
1429
1430interface RTCRtpCodecParameters {
1431    channels?: number;
1432    clockRate: number;
1433    mimeType: string;
1434    payloadType: number;
1435    sdpFmtpLine?: string;
1436}
1437
1438interface RTCRtpCodingParameters {
1439    rid?: string;
1440}
1441
1442interface RTCRtpContributingSource {
1443    audioLevel?: number;
1444    rtpTimestamp: number;
1445    source: number;
1446    timestamp: DOMHighResTimeStamp;
1447}
1448
1449interface RTCRtpEncodingParameters extends RTCRtpCodingParameters {
1450    active?: boolean;
1451    maxBitrate?: number;
1452    maxFramerate?: number;
1453    networkPriority?: RTCPriorityType;
1454    priority?: RTCPriorityType;
1455    scaleResolutionDownBy?: number;
1456}
1457
1458interface RTCRtpHeaderExtensionCapability {
1459    uri?: string;
1460}
1461
1462interface RTCRtpHeaderExtensionParameters {
1463    encrypted?: boolean;
1464    id: number;
1465    uri: string;
1466}
1467
1468interface RTCRtpParameters {
1469    codecs: RTCRtpCodecParameters[];
1470    headerExtensions: RTCRtpHeaderExtensionParameters[];
1471    rtcp: RTCRtcpParameters;
1472}
1473
1474interface RTCRtpReceiveParameters extends RTCRtpParameters {
1475}
1476
1477interface RTCRtpSendParameters extends RTCRtpParameters {
1478    degradationPreference?: RTCDegradationPreference;
1479    encodings: RTCRtpEncodingParameters[];
1480    transactionId: string;
1481}
1482
1483interface RTCRtpStreamStats extends RTCStats {
1484    codecId?: string;
1485    kind: string;
1486    ssrc: number;
1487    transportId?: string;
1488}
1489
1490interface RTCRtpSynchronizationSource extends RTCRtpContributingSource {
1491}
1492
1493interface RTCRtpTransceiverInit {
1494    direction?: RTCRtpTransceiverDirection;
1495    sendEncodings?: RTCRtpEncodingParameters[];
1496    streams?: MediaStream[];
1497}
1498
1499interface RTCSentRtpStreamStats extends RTCRtpStreamStats {
1500    bytesSent?: number;
1501    packetsSent?: number;
1502}
1503
1504interface RTCSessionDescriptionInit {
1505    sdp?: string;
1506    type: RTCSdpType;
1507}
1508
1509interface RTCStats {
1510    id: string;
1511    timestamp: DOMHighResTimeStamp;
1512    type: RTCStatsType;
1513}
1514
1515interface RTCTrackEventInit extends EventInit {
1516    receiver: RTCRtpReceiver;
1517    streams?: MediaStream[];
1518    track: MediaStreamTrack;
1519    transceiver: RTCRtpTransceiver;
1520}
1521
1522interface RTCTransportStats extends RTCStats {
1523    bytesReceived?: number;
1524    bytesSent?: number;
1525    dtlsCipher?: string;
1526    dtlsState: RTCDtlsTransportState;
1527    localCertificateId?: string;
1528    remoteCertificateId?: string;
1529    selectedCandidatePairId?: string;
1530    srtpCipher?: string;
1531    tlsVersion?: string;
1532}
1533
1534interface ReadableStreamGetReaderOptions {
1535    /**
1536     * Creates a ReadableStreamBYOBReader and locks the stream to the new reader.
1537     *
1538     * This call behaves the same way as the no-argument variant, except that it only works on readable byte streams, i.e. streams which were constructed specifically with the ability to handle "bring your own buffer" reading. The returned BYOB reader provides the ability to directly read individual chunks from the stream via its read() method, into developer-supplied buffers, allowing more precise control over allocation.
1539     */
1540    mode?: ReadableStreamReaderMode;
1541}
1542
1543interface ReadableStreamReadDoneResult<T> {
1544    done: true;
1545    value?: T;
1546}
1547
1548interface ReadableStreamReadValueResult<T> {
1549    done: false;
1550    value: T;
1551}
1552
1553interface ReadableWritablePair<R = any, W = any> {
1554    readable: ReadableStream<R>;
1555    /**
1556     * 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.
1557     *
1558     * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.
1559     */
1560    writable: WritableStream<W>;
1561}
1562
1563interface RegistrationOptions {
1564    scope?: string;
1565    type?: WorkerType;
1566    updateViaCache?: ServiceWorkerUpdateViaCache;
1567}
1568
1569interface RequestInit {
1570    /** A BodyInit object or null to set request's body. */
1571    body?: BodyInit | null;
1572    /** A string indicating how the request will interact with the browser's cache to set request's cache. */
1573    cache?: RequestCache;
1574    /** 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. */
1575    credentials?: RequestCredentials;
1576    /** A Headers object, an object literal, or an array of two-item arrays to set request's headers. */
1577    headers?: HeadersInit;
1578    /** A cryptographic hash of the resource to be fetched by request. Sets request's integrity. */
1579    integrity?: string;
1580    /** A boolean to set request's keepalive. */
1581    keepalive?: boolean;
1582    /** A string to set request's method. */
1583    method?: string;
1584    /** A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode. */
1585    mode?: RequestMode;
1586    /** 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. */
1587    redirect?: RequestRedirect;
1588    /** A string whose value is a same-origin URL, "about:client", or the empty string, to set request's referrer. */
1589    referrer?: string;
1590    /** A referrer policy to set request's referrerPolicy. */
1591    referrerPolicy?: ReferrerPolicy;
1592    /** An AbortSignal to set request's signal. */
1593    signal?: AbortSignal | null;
1594    /** Can only be null. Used to disassociate request from any Window. */
1595    window?: null;
1596}
1597
1598interface ResizeObserverOptions {
1599    box?: ResizeObserverBoxOptions;
1600}
1601
1602interface ResponseInit {
1603    headers?: HeadersInit;
1604    status?: number;
1605    statusText?: string;
1606}
1607
1608interface RsaHashedImportParams extends Algorithm {
1609    hash: HashAlgorithmIdentifier;
1610}
1611
1612interface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm {
1613    hash: KeyAlgorithm;
1614}
1615
1616interface RsaHashedKeyGenParams extends RsaKeyGenParams {
1617    hash: HashAlgorithmIdentifier;
1618}
1619
1620interface RsaKeyAlgorithm extends KeyAlgorithm {
1621    modulusLength: number;
1622    publicExponent: BigInteger;
1623}
1624
1625interface RsaKeyGenParams extends Algorithm {
1626    modulusLength: number;
1627    publicExponent: BigInteger;
1628}
1629
1630interface RsaOaepParams extends Algorithm {
1631    label?: BufferSource;
1632}
1633
1634interface RsaOtherPrimesInfo {
1635    d?: string;
1636    r?: string;
1637    t?: string;
1638}
1639
1640interface RsaPssParams extends Algorithm {
1641    saltLength: number;
1642}
1643
1644interface SVGBoundingBoxOptions {
1645    clipped?: boolean;
1646    fill?: boolean;
1647    markers?: boolean;
1648    stroke?: boolean;
1649}
1650
1651interface ScrollIntoViewOptions extends ScrollOptions {
1652    block?: ScrollLogicalPosition;
1653    inline?: ScrollLogicalPosition;
1654}
1655
1656interface ScrollOptions {
1657    behavior?: ScrollBehavior;
1658}
1659
1660interface ScrollToOptions extends ScrollOptions {
1661    left?: number;
1662    top?: number;
1663}
1664
1665interface SecurityPolicyViolationEventInit extends EventInit {
1666    blockedURI?: string;
1667    columnNumber?: number;
1668    disposition: SecurityPolicyViolationEventDisposition;
1669    documentURI: string;
1670    effectiveDirective: string;
1671    lineNumber?: number;
1672    originalPolicy: string;
1673    referrer?: string;
1674    sample?: string;
1675    sourceFile?: string;
1676    statusCode: number;
1677    violatedDirective: string;
1678}
1679
1680interface ShadowRootInit {
1681    delegatesFocus?: boolean;
1682    mode: ShadowRootMode;
1683    slotAssignment?: SlotAssignmentMode;
1684}
1685
1686interface ShareData {
1687    files?: File[];
1688    text?: string;
1689    title?: string;
1690    url?: string;
1691}
1692
1693interface SpeechSynthesisErrorEventInit extends SpeechSynthesisEventInit {
1694    error: SpeechSynthesisErrorCode;
1695}
1696
1697interface SpeechSynthesisEventInit extends EventInit {
1698    charIndex?: number;
1699    charLength?: number;
1700    elapsedTime?: number;
1701    name?: string;
1702    utterance: SpeechSynthesisUtterance;
1703}
1704
1705interface StaticRangeInit {
1706    endContainer: Node;
1707    endOffset: number;
1708    startContainer: Node;
1709    startOffset: number;
1710}
1711
1712interface StereoPannerOptions extends AudioNodeOptions {
1713    pan?: number;
1714}
1715
1716interface StorageEstimate {
1717    quota?: number;
1718    usage?: number;
1719}
1720
1721interface StorageEventInit extends EventInit {
1722    key?: string | null;
1723    newValue?: string | null;
1724    oldValue?: string | null;
1725    storageArea?: Storage | null;
1726    url?: string;
1727}
1728
1729interface StreamPipeOptions {
1730    preventAbort?: boolean;
1731    preventCancel?: boolean;
1732    /**
1733     * 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.
1734     *
1735     * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.
1736     *
1737     * Errors and closures of the source and destination streams propagate as follows:
1738     *
1739     * 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.
1740     *
1741     * 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.
1742     *
1743     * 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.
1744     *
1745     * 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.
1746     *
1747     * 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.
1748     */
1749    preventClose?: boolean;
1750    signal?: AbortSignal;
1751}
1752
1753interface StructuredSerializeOptions {
1754    transfer?: Transferable[];
1755}
1756
1757interface SubmitEventInit extends EventInit {
1758    submitter?: HTMLElement | null;
1759}
1760
1761interface TextDecodeOptions {
1762    stream?: boolean;
1763}
1764
1765interface TextDecoderOptions {
1766    fatal?: boolean;
1767    ignoreBOM?: boolean;
1768}
1769
1770interface TextEncoderEncodeIntoResult {
1771    read?: number;
1772    written?: number;
1773}
1774
1775interface TouchEventInit extends EventModifierInit {
1776    changedTouches?: Touch[];
1777    targetTouches?: Touch[];
1778    touches?: Touch[];
1779}
1780
1781interface TouchInit {
1782    altitudeAngle?: number;
1783    azimuthAngle?: number;
1784    clientX?: number;
1785    clientY?: number;
1786    force?: number;
1787    identifier: number;
1788    pageX?: number;
1789    pageY?: number;
1790    radiusX?: number;
1791    radiusY?: number;
1792    rotationAngle?: number;
1793    screenX?: number;
1794    screenY?: number;
1795    target: EventTarget;
1796    touchType?: TouchType;
1797}
1798
1799interface TrackEventInit extends EventInit {
1800    track?: TextTrack | null;
1801}
1802
1803interface Transformer<I = any, O = any> {
1804    flush?: TransformerFlushCallback<O>;
1805    readableType?: undefined;
1806    start?: TransformerStartCallback<O>;
1807    transform?: TransformerTransformCallback<I, O>;
1808    writableType?: undefined;
1809}
1810
1811interface TransitionEventInit extends EventInit {
1812    elapsedTime?: number;
1813    propertyName?: string;
1814    pseudoElement?: string;
1815}
1816
1817interface UIEventInit extends EventInit {
1818    detail?: number;
1819    view?: Window | null;
1820    /** @deprecated */
1821    which?: number;
1822}
1823
1824interface ULongRange {
1825    max?: number;
1826    min?: number;
1827}
1828
1829interface UnderlyingByteSource {
1830    autoAllocateChunkSize?: number;
1831    cancel?: UnderlyingSourceCancelCallback;
1832    pull?: (controller: ReadableByteStreamController) => void | PromiseLike<void>;
1833    start?: (controller: ReadableByteStreamController) => any;
1834    type: "bytes";
1835}
1836
1837interface UnderlyingDefaultSource<R = any> {
1838    cancel?: UnderlyingSourceCancelCallback;
1839    pull?: (controller: ReadableStreamDefaultController<R>) => void | PromiseLike<void>;
1840    start?: (controller: ReadableStreamDefaultController<R>) => any;
1841    type?: undefined;
1842}
1843
1844interface UnderlyingSink<W = any> {
1845    abort?: UnderlyingSinkAbortCallback;
1846    close?: UnderlyingSinkCloseCallback;
1847    start?: UnderlyingSinkStartCallback;
1848    type?: undefined;
1849    write?: UnderlyingSinkWriteCallback<W>;
1850}
1851
1852interface UnderlyingSource<R = any> {
1853    autoAllocateChunkSize?: number;
1854    cancel?: UnderlyingSourceCancelCallback;
1855    pull?: UnderlyingSourcePullCallback<R>;
1856    start?: UnderlyingSourceStartCallback<R>;
1857    type?: ReadableStreamType;
1858}
1859
1860interface ValidityStateFlags {
1861    badInput?: boolean;
1862    customError?: boolean;
1863    patternMismatch?: boolean;
1864    rangeOverflow?: boolean;
1865    rangeUnderflow?: boolean;
1866    stepMismatch?: boolean;
1867    tooLong?: boolean;
1868    tooShort?: boolean;
1869    typeMismatch?: boolean;
1870    valueMissing?: boolean;
1871}
1872
1873interface VideoColorSpaceInit {
1874    fullRange?: boolean | null;
1875    matrix?: VideoMatrixCoefficients | null;
1876    primaries?: VideoColorPrimaries | null;
1877    transfer?: VideoTransferCharacteristics | null;
1878}
1879
1880interface VideoConfiguration {
1881    bitrate: number;
1882    colorGamut?: ColorGamut;
1883    contentType: string;
1884    framerate: number;
1885    hdrMetadataType?: HdrMetadataType;
1886    height: number;
1887    scalabilityMode?: string;
1888    transferFunction?: TransferFunction;
1889    width: number;
1890}
1891
1892interface VideoFrameCallbackMetadata {
1893    captureTime?: DOMHighResTimeStamp;
1894    expectedDisplayTime: DOMHighResTimeStamp;
1895    height: number;
1896    mediaTime: number;
1897    presentationTime: DOMHighResTimeStamp;
1898    presentedFrames: number;
1899    processingDuration?: number;
1900    receiveTime?: DOMHighResTimeStamp;
1901    rtpTimestamp?: number;
1902    width: number;
1903}
1904
1905interface WaveShaperOptions extends AudioNodeOptions {
1906    curve?: number[] | Float32Array;
1907    oversample?: OverSampleType;
1908}
1909
1910interface WebGLContextAttributes {
1911    alpha?: boolean;
1912    antialias?: boolean;
1913    depth?: boolean;
1914    desynchronized?: boolean;
1915    failIfMajorPerformanceCaveat?: boolean;
1916    powerPreference?: WebGLPowerPreference;
1917    premultipliedAlpha?: boolean;
1918    preserveDrawingBuffer?: boolean;
1919    stencil?: boolean;
1920}
1921
1922interface WebGLContextEventInit extends EventInit {
1923    statusMessage?: string;
1924}
1925
1926interface WheelEventInit extends MouseEventInit {
1927    deltaMode?: number;
1928    deltaX?: number;
1929    deltaY?: number;
1930    deltaZ?: number;
1931}
1932
1933interface WindowPostMessageOptions extends StructuredSerializeOptions {
1934    targetOrigin?: string;
1935}
1936
1937interface WorkerOptions {
1938    credentials?: RequestCredentials;
1939    name?: string;
1940    type?: WorkerType;
1941}
1942
1943interface WorkletOptions {
1944    credentials?: RequestCredentials;
1945}
1946
1947type NodeFilter = ((node: Node) => number) | { acceptNode(node: Node): number; };
1948
1949declare var NodeFilter: {
1950    readonly FILTER_ACCEPT: number;
1951    readonly FILTER_REJECT: number;
1952    readonly FILTER_SKIP: number;
1953    readonly SHOW_ALL: number;
1954    readonly SHOW_ATTRIBUTE: number;
1955    readonly SHOW_CDATA_SECTION: number;
1956    readonly SHOW_COMMENT: number;
1957    readonly SHOW_DOCUMENT: number;
1958    readonly SHOW_DOCUMENT_FRAGMENT: number;
1959    readonly SHOW_DOCUMENT_TYPE: number;
1960    readonly SHOW_ELEMENT: number;
1961    readonly SHOW_ENTITY: number;
1962    readonly SHOW_ENTITY_REFERENCE: number;
1963    readonly SHOW_NOTATION: number;
1964    readonly SHOW_PROCESSING_INSTRUCTION: number;
1965    readonly SHOW_TEXT: number;
1966};
1967
1968type XPathNSResolver = ((prefix: string | null) => string | null) | { lookupNamespaceURI(prefix: string | null): string | null; };
1969
1970/** 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. */
1971interface ANGLE_instanced_arrays {
1972    drawArraysInstancedANGLE(mode: GLenum, first: GLint, count: GLsizei, primcount: GLsizei): void;
1973    drawElementsInstancedANGLE(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, primcount: GLsizei): void;
1974    vertexAttribDivisorANGLE(index: GLuint, divisor: GLuint): void;
1975    readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: GLenum;
1976}
1977
1978interface ARIAMixin {
1979    ariaAtomic: string | null;
1980    ariaAutoComplete: string | null;
1981    ariaBusy: string | null;
1982    ariaChecked: string | null;
1983    ariaColCount: string | null;
1984    ariaColIndex: string | null;
1985    ariaColIndexText: string | null;
1986    ariaColSpan: string | null;
1987    ariaCurrent: string | null;
1988    ariaDisabled: string | null;
1989    ariaExpanded: string | null;
1990    ariaHasPopup: string | null;
1991    ariaHidden: string | null;
1992    ariaInvalid: string | null;
1993    ariaKeyShortcuts: string | null;
1994    ariaLabel: string | null;
1995    ariaLevel: string | null;
1996    ariaLive: string | null;
1997    ariaModal: string | null;
1998    ariaMultiLine: string | null;
1999    ariaMultiSelectable: string | null;
2000    ariaOrientation: string | null;
2001    ariaPlaceholder: string | null;
2002    ariaPosInSet: string | null;
2003    ariaPressed: string | null;
2004    ariaReadOnly: string | null;
2005    ariaRequired: string | null;
2006    ariaRoleDescription: string | null;
2007    ariaRowCount: string | null;
2008    ariaRowIndex: string | null;
2009    ariaRowIndexText: string | null;
2010    ariaRowSpan: string | null;
2011    ariaSelected: string | null;
2012    ariaSetSize: string | null;
2013    ariaSort: string | null;
2014    ariaValueMax: string | null;
2015    ariaValueMin: string | null;
2016    ariaValueNow: string | null;
2017    ariaValueText: string | null;
2018    role: string | null;
2019}
2020
2021/** A controller object that allows you to abort one or more DOM requests as and when desired. */
2022interface AbortController {
2023    /** Returns the AbortSignal object associated with this object. */
2024    readonly signal: AbortSignal;
2025    /** 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. */
2026    abort(reason?: any): void;
2027}
2028
2029declare var AbortController: {
2030    prototype: AbortController;
2031    new(): AbortController;
2032};
2033
2034interface AbortSignalEventMap {
2035    "abort": Event;
2036}
2037
2038/** 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. */
2039interface AbortSignal extends EventTarget {
2040    /** Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise. */
2041    readonly aborted: boolean;
2042    onabort: ((this: AbortSignal, ev: Event) => any) | null;
2043    readonly reason: any;
2044    throwIfAborted(): void;
2045    addEventListener<K extends keyof AbortSignalEventMap>(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2046    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2047    removeEventListener<K extends keyof AbortSignalEventMap>(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2048    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2049}
2050
2051declare var AbortSignal: {
2052    prototype: AbortSignal;
2053    new(): AbortSignal;
2054    abort(reason?: any): AbortSignal;
2055    timeout(milliseconds: number): AbortSignal;
2056};
2057
2058interface AbstractRange {
2059    /** Returns true if range is collapsed, and false otherwise. */
2060    readonly collapsed: boolean;
2061    /** Returns range's end node. */
2062    readonly endContainer: Node;
2063    /** Returns range's end offset. */
2064    readonly endOffset: number;
2065    /** Returns range's start node. */
2066    readonly startContainer: Node;
2067    /** Returns range's start offset. */
2068    readonly startOffset: number;
2069}
2070
2071declare var AbstractRange: {
2072    prototype: AbstractRange;
2073    new(): AbstractRange;
2074};
2075
2076interface AbstractWorkerEventMap {
2077    "error": ErrorEvent;
2078}
2079
2080interface AbstractWorker {
2081    onerror: ((this: AbstractWorker, ev: ErrorEvent) => any) | null;
2082    addEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2083    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2084    removeEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2085    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2086}
2087
2088/** 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. */
2089interface AnalyserNode extends AudioNode {
2090    fftSize: number;
2091    readonly frequencyBinCount: number;
2092    maxDecibels: number;
2093    minDecibels: number;
2094    smoothingTimeConstant: number;
2095    getByteFrequencyData(array: Uint8Array): void;
2096    getByteTimeDomainData(array: Uint8Array): void;
2097    getFloatFrequencyData(array: Float32Array): void;
2098    getFloatTimeDomainData(array: Float32Array): void;
2099}
2100
2101declare var AnalyserNode: {
2102    prototype: AnalyserNode;
2103    new(context: BaseAudioContext, options?: AnalyserOptions): AnalyserNode;
2104};
2105
2106interface Animatable {
2107    animate(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions): Animation;
2108    getAnimations(options?: GetAnimationsOptions): Animation[];
2109}
2110
2111interface AnimationEventMap {
2112    "cancel": AnimationPlaybackEvent;
2113    "finish": AnimationPlaybackEvent;
2114    "remove": Event;
2115}
2116
2117interface Animation extends EventTarget {
2118    currentTime: CSSNumberish | null;
2119    effect: AnimationEffect | null;
2120    readonly finished: Promise<Animation>;
2121    id: string;
2122    oncancel: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;
2123    onfinish: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;
2124    onremove: ((this: Animation, ev: Event) => any) | null;
2125    readonly pending: boolean;
2126    readonly playState: AnimationPlayState;
2127    playbackRate: number;
2128    readonly ready: Promise<Animation>;
2129    readonly replaceState: AnimationReplaceState;
2130    startTime: CSSNumberish | null;
2131    timeline: AnimationTimeline | null;
2132    cancel(): void;
2133    commitStyles(): void;
2134    finish(): void;
2135    pause(): void;
2136    persist(): void;
2137    play(): void;
2138    reverse(): void;
2139    updatePlaybackRate(playbackRate: number): void;
2140    addEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2141    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2142    removeEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2143    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2144}
2145
2146declare var Animation: {
2147    prototype: Animation;
2148    new(effect?: AnimationEffect | null, timeline?: AnimationTimeline | null): Animation;
2149};
2150
2151interface AnimationEffect {
2152    getComputedTiming(): ComputedEffectTiming;
2153    getTiming(): EffectTiming;
2154    updateTiming(timing?: OptionalEffectTiming): void;
2155}
2156
2157declare var AnimationEffect: {
2158    prototype: AnimationEffect;
2159    new(): AnimationEffect;
2160};
2161
2162/** Events providing information related to animations. */
2163interface AnimationEvent extends Event {
2164    readonly animationName: string;
2165    readonly elapsedTime: number;
2166    readonly pseudoElement: string;
2167}
2168
2169declare var AnimationEvent: {
2170    prototype: AnimationEvent;
2171    new(type: string, animationEventInitDict?: AnimationEventInit): AnimationEvent;
2172};
2173
2174interface AnimationFrameProvider {
2175    cancelAnimationFrame(handle: number): void;
2176    requestAnimationFrame(callback: FrameRequestCallback): number;
2177}
2178
2179interface AnimationPlaybackEvent extends Event {
2180    readonly currentTime: CSSNumberish | null;
2181    readonly timelineTime: CSSNumberish | null;
2182}
2183
2184declare var AnimationPlaybackEvent: {
2185    prototype: AnimationPlaybackEvent;
2186    new(type: string, eventInitDict?: AnimationPlaybackEventInit): AnimationPlaybackEvent;
2187};
2188
2189interface AnimationTimeline {
2190    readonly currentTime: CSSNumberish | null;
2191}
2192
2193declare var AnimationTimeline: {
2194    prototype: AnimationTimeline;
2195    new(): AnimationTimeline;
2196};
2197
2198/** 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. */
2199interface Attr extends Node {
2200    readonly localName: string;
2201    readonly name: string;
2202    readonly namespaceURI: string | null;
2203    readonly ownerDocument: Document;
2204    readonly ownerElement: Element | null;
2205    readonly prefix: string | null;
2206    /** @deprecated */
2207    readonly specified: boolean;
2208    value: string;
2209}
2210
2211declare var Attr: {
2212    prototype: Attr;
2213    new(): Attr;
2214};
2215
2216/** 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. */
2217interface AudioBuffer {
2218    readonly duration: number;
2219    readonly length: number;
2220    readonly numberOfChannels: number;
2221    readonly sampleRate: number;
2222    copyFromChannel(destination: Float32Array, channelNumber: number, bufferOffset?: number): void;
2223    copyToChannel(source: Float32Array, channelNumber: number, bufferOffset?: number): void;
2224    getChannelData(channel: number): Float32Array;
2225}
2226
2227declare var AudioBuffer: {
2228    prototype: AudioBuffer;
2229    new(options: AudioBufferOptions): AudioBuffer;
2230};
2231
2232/** 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. */
2233interface AudioBufferSourceNode extends AudioScheduledSourceNode {
2234    buffer: AudioBuffer | null;
2235    readonly detune: AudioParam;
2236    loop: boolean;
2237    loopEnd: number;
2238    loopStart: number;
2239    readonly playbackRate: AudioParam;
2240    start(when?: number, offset?: number, duration?: number): void;
2241    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2242    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2243    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2244    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2245}
2246
2247declare var AudioBufferSourceNode: {
2248    prototype: AudioBufferSourceNode;
2249    new(context: BaseAudioContext, options?: AudioBufferSourceOptions): AudioBufferSourceNode;
2250};
2251
2252/** An audio-processing graph built from audio modules linked together, each represented by an AudioNode. */
2253interface AudioContext extends BaseAudioContext {
2254    readonly baseLatency: number;
2255    readonly outputLatency: number;
2256    close(): Promise<void>;
2257    createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode;
2258    createMediaStreamDestination(): MediaStreamAudioDestinationNode;
2259    createMediaStreamSource(mediaStream: MediaStream): MediaStreamAudioSourceNode;
2260    getOutputTimestamp(): AudioTimestamp;
2261    resume(): Promise<void>;
2262    suspend(): Promise<void>;
2263    addEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2264    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2265    removeEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2266    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2267}
2268
2269declare var AudioContext: {
2270    prototype: AudioContext;
2271    new(contextOptions?: AudioContextOptions): AudioContext;
2272};
2273
2274/** 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. */
2275interface AudioDestinationNode extends AudioNode {
2276    readonly maxChannelCount: number;
2277}
2278
2279declare var AudioDestinationNode: {
2280    prototype: AudioDestinationNode;
2281    new(): AudioDestinationNode;
2282};
2283
2284/** 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. */
2285interface AudioListener {
2286    readonly forwardX: AudioParam;
2287    readonly forwardY: AudioParam;
2288    readonly forwardZ: AudioParam;
2289    readonly positionX: AudioParam;
2290    readonly positionY: AudioParam;
2291    readonly positionZ: AudioParam;
2292    readonly upX: AudioParam;
2293    readonly upY: AudioParam;
2294    readonly upZ: AudioParam;
2295    /** @deprecated */
2296    setOrientation(x: number, y: number, z: number, xUp: number, yUp: number, zUp: number): void;
2297    /** @deprecated */
2298    setPosition(x: number, y: number, z: number): void;
2299}
2300
2301declare var AudioListener: {
2302    prototype: AudioListener;
2303    new(): AudioListener;
2304};
2305
2306/** A generic interface for representing an audio processing module. Examples include: */
2307interface AudioNode extends EventTarget {
2308    channelCount: number;
2309    channelCountMode: ChannelCountMode;
2310    channelInterpretation: ChannelInterpretation;
2311    readonly context: BaseAudioContext;
2312    readonly numberOfInputs: number;
2313    readonly numberOfOutputs: number;
2314    connect(destinationNode: AudioNode, output?: number, input?: number): AudioNode;
2315    connect(destinationParam: AudioParam, output?: number): void;
2316    disconnect(): void;
2317    disconnect(output: number): void;
2318    disconnect(destinationNode: AudioNode): void;
2319    disconnect(destinationNode: AudioNode, output: number): void;
2320    disconnect(destinationNode: AudioNode, output: number, input: number): void;
2321    disconnect(destinationParam: AudioParam): void;
2322    disconnect(destinationParam: AudioParam, output: number): void;
2323}
2324
2325declare var AudioNode: {
2326    prototype: AudioNode;
2327    new(): AudioNode;
2328};
2329
2330/** The Web Audio API's AudioParam interface represents an audio-related parameter, usually a parameter of an AudioNode (such as GainNode.gain). */
2331interface AudioParam {
2332    automationRate: AutomationRate;
2333    readonly defaultValue: number;
2334    readonly maxValue: number;
2335    readonly minValue: number;
2336    value: number;
2337    cancelAndHoldAtTime(cancelTime: number): AudioParam;
2338    cancelScheduledValues(cancelTime: number): AudioParam;
2339    exponentialRampToValueAtTime(value: number, endTime: number): AudioParam;
2340    linearRampToValueAtTime(value: number, endTime: number): AudioParam;
2341    setTargetAtTime(target: number, startTime: number, timeConstant: number): AudioParam;
2342    setValueAtTime(value: number, startTime: number): AudioParam;
2343    setValueCurveAtTime(values: number[] | Float32Array, startTime: number, duration: number): AudioParam;
2344}
2345
2346declare var AudioParam: {
2347    prototype: AudioParam;
2348    new(): AudioParam;
2349};
2350
2351interface AudioParamMap {
2352    forEach(callbackfn: (value: AudioParam, key: string, parent: AudioParamMap) => void, thisArg?: any): void;
2353}
2354
2355declare var AudioParamMap: {
2356    prototype: AudioParamMap;
2357    new(): AudioParamMap;
2358};
2359
2360/**
2361 * The Web Audio API events that occur when a ScriptProcessorNode input buffer is ready to be processed.
2362 * @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.
2363 */
2364interface AudioProcessingEvent extends Event {
2365    /** @deprecated */
2366    readonly inputBuffer: AudioBuffer;
2367    /** @deprecated */
2368    readonly outputBuffer: AudioBuffer;
2369    /** @deprecated */
2370    readonly playbackTime: number;
2371}
2372
2373/** @deprecated */
2374declare var AudioProcessingEvent: {
2375    prototype: AudioProcessingEvent;
2376    new(type: string, eventInitDict: AudioProcessingEventInit): AudioProcessingEvent;
2377};
2378
2379interface AudioScheduledSourceNodeEventMap {
2380    "ended": Event;
2381}
2382
2383interface AudioScheduledSourceNode extends AudioNode {
2384    onended: ((this: AudioScheduledSourceNode, ev: Event) => any) | null;
2385    start(when?: number): void;
2386    stop(when?: number): void;
2387    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2388    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2389    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2390    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2391}
2392
2393declare var AudioScheduledSourceNode: {
2394    prototype: AudioScheduledSourceNode;
2395    new(): AudioScheduledSourceNode;
2396};
2397
2398/** Available only in secure contexts. */
2399interface AudioWorklet extends Worklet {
2400}
2401
2402declare var AudioWorklet: {
2403    prototype: AudioWorklet;
2404    new(): AudioWorklet;
2405};
2406
2407interface AudioWorkletNodeEventMap {
2408    "processorerror": Event;
2409}
2410
2411/** Available only in secure contexts. */
2412interface AudioWorkletNode extends AudioNode {
2413    onprocessorerror: ((this: AudioWorkletNode, ev: Event) => any) | null;
2414    readonly parameters: AudioParamMap;
2415    readonly port: MessagePort;
2416    addEventListener<K extends keyof AudioWorkletNodeEventMap>(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2417    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2418    removeEventListener<K extends keyof AudioWorkletNodeEventMap>(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2419    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2420}
2421
2422declare var AudioWorkletNode: {
2423    prototype: AudioWorkletNode;
2424    new(context: BaseAudioContext, name: string, options?: AudioWorkletNodeOptions): AudioWorkletNode;
2425};
2426
2427/** Available only in secure contexts. */
2428interface AuthenticatorAssertionResponse extends AuthenticatorResponse {
2429    readonly authenticatorData: ArrayBuffer;
2430    readonly signature: ArrayBuffer;
2431    readonly userHandle: ArrayBuffer | null;
2432}
2433
2434declare var AuthenticatorAssertionResponse: {
2435    prototype: AuthenticatorAssertionResponse;
2436    new(): AuthenticatorAssertionResponse;
2437};
2438
2439/** Available only in secure contexts. */
2440interface AuthenticatorAttestationResponse extends AuthenticatorResponse {
2441    readonly attestationObject: ArrayBuffer;
2442    getAuthenticatorData(): ArrayBuffer;
2443    getPublicKey(): ArrayBuffer | null;
2444    getPublicKeyAlgorithm(): COSEAlgorithmIdentifier;
2445    getTransports(): string[];
2446}
2447
2448declare var AuthenticatorAttestationResponse: {
2449    prototype: AuthenticatorAttestationResponse;
2450    new(): AuthenticatorAttestationResponse;
2451};
2452
2453/** Available only in secure contexts. */
2454interface AuthenticatorResponse {
2455    readonly clientDataJSON: ArrayBuffer;
2456}
2457
2458declare var AuthenticatorResponse: {
2459    prototype: AuthenticatorResponse;
2460    new(): AuthenticatorResponse;
2461};
2462
2463interface BarProp {
2464    readonly visible: boolean;
2465}
2466
2467declare var BarProp: {
2468    prototype: BarProp;
2469    new(): BarProp;
2470};
2471
2472interface BaseAudioContextEventMap {
2473    "statechange": Event;
2474}
2475
2476interface BaseAudioContext extends EventTarget {
2477    /** Available only in secure contexts. */
2478    readonly audioWorklet: AudioWorklet;
2479    readonly currentTime: number;
2480    readonly destination: AudioDestinationNode;
2481    readonly listener: AudioListener;
2482    onstatechange: ((this: BaseAudioContext, ev: Event) => any) | null;
2483    readonly sampleRate: number;
2484    readonly state: AudioContextState;
2485    createAnalyser(): AnalyserNode;
2486    createBiquadFilter(): BiquadFilterNode;
2487    createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer;
2488    createBufferSource(): AudioBufferSourceNode;
2489    createChannelMerger(numberOfInputs?: number): ChannelMergerNode;
2490    createChannelSplitter(numberOfOutputs?: number): ChannelSplitterNode;
2491    createConstantSource(): ConstantSourceNode;
2492    createConvolver(): ConvolverNode;
2493    createDelay(maxDelayTime?: number): DelayNode;
2494    createDynamicsCompressor(): DynamicsCompressorNode;
2495    createGain(): GainNode;
2496    createIIRFilter(feedforward: number[], feedback: number[]): IIRFilterNode;
2497    createOscillator(): OscillatorNode;
2498    createPanner(): PannerNode;
2499    createPeriodicWave(real: number[] | Float32Array, imag: number[] | Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave;
2500    /** @deprecated */
2501    createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode;
2502    createStereoPanner(): StereoPannerNode;
2503    createWaveShaper(): WaveShaperNode;
2504    decodeAudioData(audioData: ArrayBuffer, successCallback?: DecodeSuccessCallback | null, errorCallback?: DecodeErrorCallback | null): Promise<AudioBuffer>;
2505    addEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2506    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2507    removeEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2508    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2509}
2510
2511declare var BaseAudioContext: {
2512    prototype: BaseAudioContext;
2513    new(): BaseAudioContext;
2514};
2515
2516/** The beforeunload event is fired when the window, the document and its resources are about to be unloaded. */
2517interface BeforeUnloadEvent extends Event {
2518    returnValue: any;
2519}
2520
2521declare var BeforeUnloadEvent: {
2522    prototype: BeforeUnloadEvent;
2523    new(): BeforeUnloadEvent;
2524};
2525
2526/** 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. */
2527interface BiquadFilterNode extends AudioNode {
2528    readonly Q: AudioParam;
2529    readonly detune: AudioParam;
2530    readonly frequency: AudioParam;
2531    readonly gain: AudioParam;
2532    type: BiquadFilterType;
2533    getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;
2534}
2535
2536declare var BiquadFilterNode: {
2537    prototype: BiquadFilterNode;
2538    new(context: BaseAudioContext, options?: BiquadFilterOptions): BiquadFilterNode;
2539};
2540
2541/** 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. */
2542interface Blob {
2543    readonly size: number;
2544    readonly type: string;
2545    arrayBuffer(): Promise<ArrayBuffer>;
2546    slice(start?: number, end?: number, contentType?: string): Blob;
2547    stream(): ReadableStream<Uint8Array>;
2548    text(): Promise<string>;
2549}
2550
2551declare var Blob: {
2552    prototype: Blob;
2553    new(blobParts?: BlobPart[], options?: BlobPropertyBag): Blob;
2554};
2555
2556interface BlobEvent extends Event {
2557    readonly data: Blob;
2558    readonly timecode: DOMHighResTimeStamp;
2559}
2560
2561declare var BlobEvent: {
2562    prototype: BlobEvent;
2563    new(type: string, eventInitDict: BlobEventInit): BlobEvent;
2564};
2565
2566interface Body {
2567    readonly body: ReadableStream<Uint8Array> | null;
2568    readonly bodyUsed: boolean;
2569    arrayBuffer(): Promise<ArrayBuffer>;
2570    blob(): Promise<Blob>;
2571    formData(): Promise<FormData>;
2572    json(): Promise<any>;
2573    text(): Promise<string>;
2574}
2575
2576interface BroadcastChannelEventMap {
2577    "message": MessageEvent;
2578    "messageerror": MessageEvent;
2579}
2580
2581interface BroadcastChannel extends EventTarget {
2582    /** Returns the channel name (as passed to the constructor). */
2583    readonly name: string;
2584    onmessage: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;
2585    onmessageerror: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;
2586    /** Closes the BroadcastChannel object, opening it up to garbage collection. */
2587    close(): void;
2588    /** Sends the given message to other BroadcastChannel objects set up for this channel. Messages can be structured objects, e.g. nested objects and arrays. */
2589    postMessage(message: any): void;
2590    addEventListener<K extends keyof BroadcastChannelEventMap>(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2591    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2592    removeEventListener<K extends keyof BroadcastChannelEventMap>(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2593    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2594}
2595
2596declare var BroadcastChannel: {
2597    prototype: BroadcastChannel;
2598    new(name: string): BroadcastChannel;
2599};
2600
2601/** This Streams API interface provides a built-in byte length queuing strategy that can be used when constructing streams. */
2602interface ByteLengthQueuingStrategy extends QueuingStrategy<ArrayBufferView> {
2603    readonly highWaterMark: number;
2604    readonly size: QueuingStrategySize<ArrayBufferView>;
2605}
2606
2607declare var ByteLengthQueuingStrategy: {
2608    prototype: ByteLengthQueuingStrategy;
2609    new(init: QueuingStrategyInit): ByteLengthQueuingStrategy;
2610};
2611
2612/** 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. */
2613interface CDATASection extends Text {
2614}
2615
2616declare var CDATASection: {
2617    prototype: CDATASection;
2618    new(): CDATASection;
2619};
2620
2621interface CSSAnimation extends Animation {
2622    readonly animationName: string;
2623    addEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: CSSAnimation, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2624    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2625    removeEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: CSSAnimation, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2626    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2627}
2628
2629declare var CSSAnimation: {
2630    prototype: CSSAnimation;
2631    new(): CSSAnimation;
2632};
2633
2634/** A single condition CSS at-rule, which consists of a condition and a statement block. It is a child of CSSGroupingRule. */
2635interface CSSConditionRule extends CSSGroupingRule {
2636    readonly conditionText: string;
2637}
2638
2639declare var CSSConditionRule: {
2640    prototype: CSSConditionRule;
2641    new(): CSSConditionRule;
2642};
2643
2644interface CSSContainerRule extends CSSConditionRule {
2645}
2646
2647declare var CSSContainerRule: {
2648    prototype: CSSContainerRule;
2649    new(): CSSContainerRule;
2650};
2651
2652interface CSSCounterStyleRule extends CSSRule {
2653    additiveSymbols: string;
2654    fallback: string;
2655    name: string;
2656    negative: string;
2657    pad: string;
2658    prefix: string;
2659    range: string;
2660    speakAs: string;
2661    suffix: string;
2662    symbols: string;
2663    system: string;
2664}
2665
2666declare var CSSCounterStyleRule: {
2667    prototype: CSSCounterStyleRule;
2668    new(): CSSCounterStyleRule;
2669};
2670
2671interface CSSFontFaceRule extends CSSRule {
2672    readonly style: CSSStyleDeclaration;
2673}
2674
2675declare var CSSFontFaceRule: {
2676    prototype: CSSFontFaceRule;
2677    new(): CSSFontFaceRule;
2678};
2679
2680interface CSSFontPaletteValuesRule extends CSSRule {
2681    readonly basePalette: string;
2682    readonly fontFamily: string;
2683    readonly name: string;
2684    readonly overrideColors: string;
2685}
2686
2687declare var CSSFontPaletteValuesRule: {
2688    prototype: CSSFontPaletteValuesRule;
2689    new(): CSSFontPaletteValuesRule;
2690};
2691
2692/** Any CSS at-rule that contains other rules nested within it. */
2693interface CSSGroupingRule extends CSSRule {
2694    readonly cssRules: CSSRuleList;
2695    deleteRule(index: number): void;
2696    insertRule(rule: string, index?: number): number;
2697}
2698
2699declare var CSSGroupingRule: {
2700    prototype: CSSGroupingRule;
2701    new(): CSSGroupingRule;
2702};
2703
2704interface CSSImportRule extends CSSRule {
2705    readonly href: string;
2706    readonly layerName: string | null;
2707    readonly media: MediaList;
2708    readonly styleSheet: CSSStyleSheet;
2709}
2710
2711declare var CSSImportRule: {
2712    prototype: CSSImportRule;
2713    new(): CSSImportRule;
2714};
2715
2716/** 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). */
2717interface CSSKeyframeRule extends CSSRule {
2718    keyText: string;
2719    readonly style: CSSStyleDeclaration;
2720}
2721
2722declare var CSSKeyframeRule: {
2723    prototype: CSSKeyframeRule;
2724    new(): CSSKeyframeRule;
2725};
2726
2727/** 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). */
2728interface CSSKeyframesRule extends CSSRule {
2729    readonly cssRules: CSSRuleList;
2730    name: string;
2731    appendRule(rule: string): void;
2732    deleteRule(select: string): void;
2733    findRule(select: string): CSSKeyframeRule | null;
2734}
2735
2736declare var CSSKeyframesRule: {
2737    prototype: CSSKeyframesRule;
2738    new(): CSSKeyframesRule;
2739};
2740
2741interface CSSLayerBlockRule extends CSSGroupingRule {
2742    readonly name: string;
2743}
2744
2745declare var CSSLayerBlockRule: {
2746    prototype: CSSLayerBlockRule;
2747    new(): CSSLayerBlockRule;
2748};
2749
2750interface CSSLayerStatementRule extends CSSRule {
2751    readonly nameList: ReadonlyArray<string>;
2752}
2753
2754declare var CSSLayerStatementRule: {
2755    prototype: CSSLayerStatementRule;
2756    new(): CSSLayerStatementRule;
2757};
2758
2759/** 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). */
2760interface CSSMediaRule extends CSSConditionRule {
2761    readonly media: MediaList;
2762}
2763
2764declare var CSSMediaRule: {
2765    prototype: CSSMediaRule;
2766    new(): CSSMediaRule;
2767};
2768
2769/** An object representing a single CSS @namespace at-rule. It implements the CSSRule interface, with a type value of 10 (CSSRule.NAMESPACE_RULE). */
2770interface CSSNamespaceRule extends CSSRule {
2771    readonly namespaceURI: string;
2772    readonly prefix: string;
2773}
2774
2775declare var CSSNamespaceRule: {
2776    prototype: CSSNamespaceRule;
2777    new(): CSSNamespaceRule;
2778};
2779
2780/** CSSPageRule is an interface representing a single CSS @page rule. It implements the CSSRule interface with a type value of 6 (CSSRule.PAGE_RULE). */
2781interface CSSPageRule extends CSSGroupingRule {
2782    selectorText: string;
2783    readonly style: CSSStyleDeclaration;
2784}
2785
2786declare var CSSPageRule: {
2787    prototype: CSSPageRule;
2788    new(): CSSPageRule;
2789};
2790
2791/** A single CSS rule. There are several types of rules, listed in the Type constants section below. */
2792interface CSSRule {
2793    cssText: string;
2794    readonly parentRule: CSSRule | null;
2795    readonly parentStyleSheet: CSSStyleSheet | null;
2796    /** @deprecated */
2797    readonly type: number;
2798    readonly CHARSET_RULE: number;
2799    readonly FONT_FACE_RULE: number;
2800    readonly IMPORT_RULE: number;
2801    readonly KEYFRAMES_RULE: number;
2802    readonly KEYFRAME_RULE: number;
2803    readonly MEDIA_RULE: number;
2804    readonly NAMESPACE_RULE: number;
2805    readonly PAGE_RULE: number;
2806    readonly STYLE_RULE: number;
2807    readonly SUPPORTS_RULE: number;
2808}
2809
2810declare var CSSRule: {
2811    prototype: CSSRule;
2812    new(): CSSRule;
2813    readonly CHARSET_RULE: number;
2814    readonly FONT_FACE_RULE: number;
2815    readonly IMPORT_RULE: number;
2816    readonly KEYFRAMES_RULE: number;
2817    readonly KEYFRAME_RULE: number;
2818    readonly MEDIA_RULE: number;
2819    readonly NAMESPACE_RULE: number;
2820    readonly PAGE_RULE: number;
2821    readonly STYLE_RULE: number;
2822    readonly SUPPORTS_RULE: number;
2823};
2824
2825/** A CSSRuleList is an (indirect-modify only) array-like object containing an ordered collection of CSSRule objects. */
2826interface CSSRuleList {
2827    readonly length: number;
2828    item(index: number): CSSRule | null;
2829    [index: number]: CSSRule;
2830}
2831
2832declare var CSSRuleList: {
2833    prototype: CSSRuleList;
2834    new(): CSSRuleList;
2835};
2836
2837/** An object that is a CSS declaration block, and exposes style information and various style-related methods and properties. */
2838interface CSSStyleDeclaration {
2839    accentColor: string;
2840    alignContent: string;
2841    alignItems: string;
2842    alignSelf: string;
2843    alignmentBaseline: string;
2844    all: string;
2845    animation: string;
2846    animationDelay: string;
2847    animationDirection: string;
2848    animationDuration: string;
2849    animationFillMode: string;
2850    animationIterationCount: string;
2851    animationName: string;
2852    animationPlayState: string;
2853    animationTimingFunction: string;
2854    appearance: string;
2855    aspectRatio: string;
2856    backdropFilter: string;
2857    backfaceVisibility: string;
2858    background: string;
2859    backgroundAttachment: string;
2860    backgroundBlendMode: string;
2861    backgroundClip: string;
2862    backgroundColor: string;
2863    backgroundImage: string;
2864    backgroundOrigin: string;
2865    backgroundPosition: string;
2866    backgroundPositionX: string;
2867    backgroundPositionY: string;
2868    backgroundRepeat: string;
2869    backgroundSize: string;
2870    baselineShift: string;
2871    blockSize: string;
2872    border: string;
2873    borderBlock: string;
2874    borderBlockColor: string;
2875    borderBlockEnd: string;
2876    borderBlockEndColor: string;
2877    borderBlockEndStyle: string;
2878    borderBlockEndWidth: string;
2879    borderBlockStart: string;
2880    borderBlockStartColor: string;
2881    borderBlockStartStyle: string;
2882    borderBlockStartWidth: string;
2883    borderBlockStyle: string;
2884    borderBlockWidth: string;
2885    borderBottom: string;
2886    borderBottomColor: string;
2887    borderBottomLeftRadius: string;
2888    borderBottomRightRadius: string;
2889    borderBottomStyle: string;
2890    borderBottomWidth: string;
2891    borderCollapse: string;
2892    borderColor: string;
2893    borderEndEndRadius: string;
2894    borderEndStartRadius: string;
2895    borderImage: string;
2896    borderImageOutset: string;
2897    borderImageRepeat: string;
2898    borderImageSlice: string;
2899    borderImageSource: string;
2900    borderImageWidth: string;
2901    borderInline: string;
2902    borderInlineColor: string;
2903    borderInlineEnd: string;
2904    borderInlineEndColor: string;
2905    borderInlineEndStyle: string;
2906    borderInlineEndWidth: string;
2907    borderInlineStart: string;
2908    borderInlineStartColor: string;
2909    borderInlineStartStyle: string;
2910    borderInlineStartWidth: string;
2911    borderInlineStyle: string;
2912    borderInlineWidth: string;
2913    borderLeft: string;
2914    borderLeftColor: string;
2915    borderLeftStyle: string;
2916    borderLeftWidth: string;
2917    borderRadius: string;
2918    borderRight: string;
2919    borderRightColor: string;
2920    borderRightStyle: string;
2921    borderRightWidth: string;
2922    borderSpacing: string;
2923    borderStartEndRadius: string;
2924    borderStartStartRadius: string;
2925    borderStyle: string;
2926    borderTop: string;
2927    borderTopColor: string;
2928    borderTopLeftRadius: string;
2929    borderTopRightRadius: string;
2930    borderTopStyle: string;
2931    borderTopWidth: string;
2932    borderWidth: string;
2933    bottom: string;
2934    boxShadow: string;
2935    boxSizing: string;
2936    breakAfter: string;
2937    breakBefore: string;
2938    breakInside: string;
2939    captionSide: string;
2940    caretColor: string;
2941    clear: string;
2942    /** @deprecated */
2943    clip: string;
2944    clipPath: string;
2945    clipRule: string;
2946    color: string;
2947    colorInterpolation: string;
2948    colorInterpolationFilters: string;
2949    colorScheme: string;
2950    columnCount: string;
2951    columnFill: string;
2952    columnGap: string;
2953    columnRule: string;
2954    columnRuleColor: string;
2955    columnRuleStyle: string;
2956    columnRuleWidth: string;
2957    columnSpan: string;
2958    columnWidth: string;
2959    columns: string;
2960    contain: string;
2961    container: string;
2962    containerName: string;
2963    containerType: string;
2964    content: string;
2965    counterIncrement: string;
2966    counterReset: string;
2967    counterSet: string;
2968    cssFloat: string;
2969    cssText: string;
2970    cursor: string;
2971    direction: string;
2972    display: string;
2973    dominantBaseline: string;
2974    emptyCells: string;
2975    fill: string;
2976    fillOpacity: string;
2977    fillRule: string;
2978    filter: string;
2979    flex: string;
2980    flexBasis: string;
2981    flexDirection: string;
2982    flexFlow: string;
2983    flexGrow: string;
2984    flexShrink: string;
2985    flexWrap: string;
2986    float: string;
2987    floodColor: string;
2988    floodOpacity: string;
2989    font: string;
2990    fontFamily: string;
2991    fontFeatureSettings: string;
2992    fontKerning: string;
2993    fontOpticalSizing: string;
2994    fontPalette: string;
2995    fontSize: string;
2996    fontSizeAdjust: string;
2997    fontStretch: string;
2998    fontStyle: string;
2999    fontSynthesis: string;
3000    fontVariant: string;
3001    fontVariantAlternates: string;
3002    fontVariantCaps: string;
3003    fontVariantEastAsian: string;
3004    fontVariantLigatures: string;
3005    fontVariantNumeric: string;
3006    fontVariantPosition: string;
3007    fontVariationSettings: string;
3008    fontWeight: string;
3009    gap: string;
3010    grid: string;
3011    gridArea: string;
3012    gridAutoColumns: string;
3013    gridAutoFlow: string;
3014    gridAutoRows: string;
3015    gridColumn: string;
3016    gridColumnEnd: string;
3017    /** @deprecated This is a legacy alias of `columnGap`. */
3018    gridColumnGap: string;
3019    gridColumnStart: string;
3020    /** @deprecated This is a legacy alias of `gap`. */
3021    gridGap: string;
3022    gridRow: string;
3023    gridRowEnd: string;
3024    /** @deprecated This is a legacy alias of `rowGap`. */
3025    gridRowGap: string;
3026    gridRowStart: string;
3027    gridTemplate: string;
3028    gridTemplateAreas: string;
3029    gridTemplateColumns: string;
3030    gridTemplateRows: string;
3031    height: string;
3032    hyphenateCharacter: string;
3033    hyphens: string;
3034    /** @deprecated */
3035    imageOrientation: string;
3036    imageRendering: string;
3037    inlineSize: string;
3038    inset: string;
3039    insetBlock: string;
3040    insetBlockEnd: string;
3041    insetBlockStart: string;
3042    insetInline: string;
3043    insetInlineEnd: string;
3044    insetInlineStart: string;
3045    isolation: string;
3046    justifyContent: string;
3047    justifyItems: string;
3048    justifySelf: string;
3049    left: string;
3050    readonly length: number;
3051    letterSpacing: string;
3052    lightingColor: string;
3053    lineBreak: string;
3054    lineHeight: string;
3055    listStyle: string;
3056    listStyleImage: string;
3057    listStylePosition: string;
3058    listStyleType: string;
3059    margin: string;
3060    marginBlock: string;
3061    marginBlockEnd: string;
3062    marginBlockStart: string;
3063    marginBottom: string;
3064    marginInline: string;
3065    marginInlineEnd: string;
3066    marginInlineStart: string;
3067    marginLeft: string;
3068    marginRight: string;
3069    marginTop: string;
3070    marker: string;
3071    markerEnd: string;
3072    markerMid: string;
3073    markerStart: string;
3074    mask: string;
3075    maskClip: string;
3076    maskComposite: string;
3077    maskImage: string;
3078    maskMode: string;
3079    maskOrigin: string;
3080    maskPosition: string;
3081    maskRepeat: string;
3082    maskSize: string;
3083    maskType: string;
3084    maxBlockSize: string;
3085    maxHeight: string;
3086    maxInlineSize: string;
3087    maxWidth: string;
3088    minBlockSize: string;
3089    minHeight: string;
3090    minInlineSize: string;
3091    minWidth: string;
3092    mixBlendMode: string;
3093    objectFit: string;
3094    objectPosition: string;
3095    offset: string;
3096    offsetDistance: string;
3097    offsetPath: string;
3098    offsetRotate: string;
3099    opacity: string;
3100    order: string;
3101    orphans: string;
3102    outline: string;
3103    outlineColor: string;
3104    outlineOffset: string;
3105    outlineStyle: string;
3106    outlineWidth: string;
3107    overflow: string;
3108    overflowAnchor: string;
3109    overflowClipMargin: string;
3110    overflowWrap: string;
3111    overflowX: string;
3112    overflowY: string;
3113    overscrollBehavior: string;
3114    overscrollBehaviorBlock: string;
3115    overscrollBehaviorInline: string;
3116    overscrollBehaviorX: string;
3117    overscrollBehaviorY: string;
3118    padding: string;
3119    paddingBlock: string;
3120    paddingBlockEnd: string;
3121    paddingBlockStart: string;
3122    paddingBottom: string;
3123    paddingInline: string;
3124    paddingInlineEnd: string;
3125    paddingInlineStart: string;
3126    paddingLeft: string;
3127    paddingRight: string;
3128    paddingTop: string;
3129    pageBreakAfter: string;
3130    pageBreakBefore: string;
3131    pageBreakInside: string;
3132    paintOrder: string;
3133    readonly parentRule: CSSRule | null;
3134    perspective: string;
3135    perspectiveOrigin: string;
3136    placeContent: string;
3137    placeItems: string;
3138    placeSelf: string;
3139    pointerEvents: string;
3140    position: string;
3141    printColorAdjust: string;
3142    quotes: string;
3143    resize: string;
3144    right: string;
3145    rotate: string;
3146    rowGap: string;
3147    rubyPosition: string;
3148    scale: string;
3149    scrollBehavior: string;
3150    scrollMargin: string;
3151    scrollMarginBlock: string;
3152    scrollMarginBlockEnd: string;
3153    scrollMarginBlockStart: string;
3154    scrollMarginBottom: string;
3155    scrollMarginInline: string;
3156    scrollMarginInlineEnd: string;
3157    scrollMarginInlineStart: string;
3158    scrollMarginLeft: string;
3159    scrollMarginRight: string;
3160    scrollMarginTop: string;
3161    scrollPadding: string;
3162    scrollPaddingBlock: string;
3163    scrollPaddingBlockEnd: string;
3164    scrollPaddingBlockStart: string;
3165    scrollPaddingBottom: string;
3166    scrollPaddingInline: string;
3167    scrollPaddingInlineEnd: string;
3168    scrollPaddingInlineStart: string;
3169    scrollPaddingLeft: string;
3170    scrollPaddingRight: string;
3171    scrollPaddingTop: string;
3172    scrollSnapAlign: string;
3173    scrollSnapStop: string;
3174    scrollSnapType: string;
3175    scrollbarGutter: string;
3176    shapeImageThreshold: string;
3177    shapeMargin: string;
3178    shapeOutside: string;
3179    shapeRendering: string;
3180    stopColor: string;
3181    stopOpacity: string;
3182    stroke: string;
3183    strokeDasharray: string;
3184    strokeDashoffset: string;
3185    strokeLinecap: string;
3186    strokeLinejoin: string;
3187    strokeMiterlimit: string;
3188    strokeOpacity: string;
3189    strokeWidth: string;
3190    tabSize: string;
3191    tableLayout: string;
3192    textAlign: string;
3193    textAlignLast: string;
3194    textAnchor: string;
3195    textCombineUpright: string;
3196    textDecoration: string;
3197    textDecorationColor: string;
3198    textDecorationLine: string;
3199    textDecorationSkipInk: string;
3200    textDecorationStyle: string;
3201    textDecorationThickness: string;
3202    textEmphasis: string;
3203    textEmphasisColor: string;
3204    textEmphasisPosition: string;
3205    textEmphasisStyle: string;
3206    textIndent: string;
3207    textOrientation: string;
3208    textOverflow: string;
3209    textRendering: string;
3210    textShadow: string;
3211    textTransform: string;
3212    textUnderlineOffset: string;
3213    textUnderlinePosition: string;
3214    top: string;
3215    touchAction: string;
3216    transform: string;
3217    transformBox: string;
3218    transformOrigin: string;
3219    transformStyle: string;
3220    transition: string;
3221    transitionDelay: string;
3222    transitionDuration: string;
3223    transitionProperty: string;
3224    transitionTimingFunction: string;
3225    translate: string;
3226    unicodeBidi: string;
3227    userSelect: string;
3228    verticalAlign: string;
3229    visibility: string;
3230    /** @deprecated This is a legacy alias of `alignContent`. */
3231    webkitAlignContent: string;
3232    /** @deprecated This is a legacy alias of `alignItems`. */
3233    webkitAlignItems: string;
3234    /** @deprecated This is a legacy alias of `alignSelf`. */
3235    webkitAlignSelf: string;
3236    /** @deprecated This is a legacy alias of `animation`. */
3237    webkitAnimation: string;
3238    /** @deprecated This is a legacy alias of `animationDelay`. */
3239    webkitAnimationDelay: string;
3240    /** @deprecated This is a legacy alias of `animationDirection`. */
3241    webkitAnimationDirection: string;
3242    /** @deprecated This is a legacy alias of `animationDuration`. */
3243    webkitAnimationDuration: string;
3244    /** @deprecated This is a legacy alias of `animationFillMode`. */
3245    webkitAnimationFillMode: string;
3246    /** @deprecated This is a legacy alias of `animationIterationCount`. */
3247    webkitAnimationIterationCount: string;
3248    /** @deprecated This is a legacy alias of `animationName`. */
3249    webkitAnimationName: string;
3250    /** @deprecated This is a legacy alias of `animationPlayState`. */
3251    webkitAnimationPlayState: string;
3252    /** @deprecated This is a legacy alias of `animationTimingFunction`. */
3253    webkitAnimationTimingFunction: string;
3254    /** @deprecated This is a legacy alias of `appearance`. */
3255    webkitAppearance: string;
3256    /** @deprecated This is a legacy alias of `backfaceVisibility`. */
3257    webkitBackfaceVisibility: string;
3258    /** @deprecated This is a legacy alias of `backgroundClip`. */
3259    webkitBackgroundClip: string;
3260    /** @deprecated This is a legacy alias of `backgroundOrigin`. */
3261    webkitBackgroundOrigin: string;
3262    /** @deprecated This is a legacy alias of `backgroundSize`. */
3263    webkitBackgroundSize: string;
3264    /** @deprecated This is a legacy alias of `borderBottomLeftRadius`. */
3265    webkitBorderBottomLeftRadius: string;
3266    /** @deprecated This is a legacy alias of `borderBottomRightRadius`. */
3267    webkitBorderBottomRightRadius: string;
3268    /** @deprecated This is a legacy alias of `borderRadius`. */
3269    webkitBorderRadius: string;
3270    /** @deprecated This is a legacy alias of `borderTopLeftRadius`. */
3271    webkitBorderTopLeftRadius: string;
3272    /** @deprecated This is a legacy alias of `borderTopRightRadius`. */
3273    webkitBorderTopRightRadius: string;
3274    /** @deprecated This is a legacy alias of `boxAlign`. */
3275    webkitBoxAlign: string;
3276    /** @deprecated This is a legacy alias of `boxFlex`. */
3277    webkitBoxFlex: string;
3278    /** @deprecated This is a legacy alias of `boxOrdinalGroup`. */
3279    webkitBoxOrdinalGroup: string;
3280    /** @deprecated This is a legacy alias of `boxOrient`. */
3281    webkitBoxOrient: string;
3282    /** @deprecated This is a legacy alias of `boxPack`. */
3283    webkitBoxPack: string;
3284    /** @deprecated This is a legacy alias of `boxShadow`. */
3285    webkitBoxShadow: string;
3286    /** @deprecated This is a legacy alias of `boxSizing`. */
3287    webkitBoxSizing: string;
3288    /** @deprecated This is a legacy alias of `filter`. */
3289    webkitFilter: string;
3290    /** @deprecated This is a legacy alias of `flex`. */
3291    webkitFlex: string;
3292    /** @deprecated This is a legacy alias of `flexBasis`. */
3293    webkitFlexBasis: string;
3294    /** @deprecated This is a legacy alias of `flexDirection`. */
3295    webkitFlexDirection: string;
3296    /** @deprecated This is a legacy alias of `flexFlow`. */
3297    webkitFlexFlow: string;
3298    /** @deprecated This is a legacy alias of `flexGrow`. */
3299    webkitFlexGrow: string;
3300    /** @deprecated This is a legacy alias of `flexShrink`. */
3301    webkitFlexShrink: string;
3302    /** @deprecated This is a legacy alias of `flexWrap`. */
3303    webkitFlexWrap: string;
3304    /** @deprecated This is a legacy alias of `justifyContent`. */
3305    webkitJustifyContent: string;
3306    webkitLineClamp: string;
3307    /** @deprecated This is a legacy alias of `mask`. */
3308    webkitMask: string;
3309    /** @deprecated This is a legacy alias of `maskBorder`. */
3310    webkitMaskBoxImage: string;
3311    /** @deprecated This is a legacy alias of `maskBorderOutset`. */
3312    webkitMaskBoxImageOutset: string;
3313    /** @deprecated This is a legacy alias of `maskBorderRepeat`. */
3314    webkitMaskBoxImageRepeat: string;
3315    /** @deprecated This is a legacy alias of `maskBorderSlice`. */
3316    webkitMaskBoxImageSlice: string;
3317    /** @deprecated This is a legacy alias of `maskBorderSource`. */
3318    webkitMaskBoxImageSource: string;
3319    /** @deprecated This is a legacy alias of `maskBorderWidth`. */
3320    webkitMaskBoxImageWidth: string;
3321    /** @deprecated This is a legacy alias of `maskClip`. */
3322    webkitMaskClip: string;
3323    webkitMaskComposite: string;
3324    /** @deprecated This is a legacy alias of `maskImage`. */
3325    webkitMaskImage: string;
3326    /** @deprecated This is a legacy alias of `maskOrigin`. */
3327    webkitMaskOrigin: string;
3328    /** @deprecated This is a legacy alias of `maskPosition`. */
3329    webkitMaskPosition: string;
3330    /** @deprecated This is a legacy alias of `maskRepeat`. */
3331    webkitMaskRepeat: string;
3332    /** @deprecated This is a legacy alias of `maskSize`. */
3333    webkitMaskSize: string;
3334    /** @deprecated This is a legacy alias of `order`. */
3335    webkitOrder: string;
3336    /** @deprecated This is a legacy alias of `perspective`. */
3337    webkitPerspective: string;
3338    /** @deprecated This is a legacy alias of `perspectiveOrigin`. */
3339    webkitPerspectiveOrigin: string;
3340    webkitTextFillColor: string;
3341    /** @deprecated This is a legacy alias of `textSizeAdjust`. */
3342    webkitTextSizeAdjust: string;
3343    webkitTextStroke: string;
3344    webkitTextStrokeColor: string;
3345    webkitTextStrokeWidth: string;
3346    /** @deprecated This is a legacy alias of `transform`. */
3347    webkitTransform: string;
3348    /** @deprecated This is a legacy alias of `transformOrigin`. */
3349    webkitTransformOrigin: string;
3350    /** @deprecated This is a legacy alias of `transformStyle`. */
3351    webkitTransformStyle: string;
3352    /** @deprecated This is a legacy alias of `transition`. */
3353    webkitTransition: string;
3354    /** @deprecated This is a legacy alias of `transitionDelay`. */
3355    webkitTransitionDelay: string;
3356    /** @deprecated This is a legacy alias of `transitionDuration`. */
3357    webkitTransitionDuration: string;
3358    /** @deprecated This is a legacy alias of `transitionProperty`. */
3359    webkitTransitionProperty: string;
3360    /** @deprecated This is a legacy alias of `transitionTimingFunction`. */
3361    webkitTransitionTimingFunction: string;
3362    /** @deprecated This is a legacy alias of `userSelect`. */
3363    webkitUserSelect: string;
3364    whiteSpace: string;
3365    widows: string;
3366    width: string;
3367    willChange: string;
3368    wordBreak: string;
3369    wordSpacing: string;
3370    /** @deprecated */
3371    wordWrap: string;
3372    writingMode: string;
3373    zIndex: string;
3374    getPropertyPriority(property: string): string;
3375    getPropertyValue(property: string): string;
3376    item(index: number): string;
3377    removeProperty(property: string): string;
3378    setProperty(property: string, value: string | null, priority?: string): void;
3379    [index: number]: string;
3380}
3381
3382declare var CSSStyleDeclaration: {
3383    prototype: CSSStyleDeclaration;
3384    new(): CSSStyleDeclaration;
3385};
3386
3387/** CSSStyleRule represents a single CSS style rule. It implements the CSSRule interface with a type value of 1 (CSSRule.STYLE_RULE). */
3388interface CSSStyleRule extends CSSRule {
3389    selectorText: string;
3390    readonly style: CSSStyleDeclaration;
3391}
3392
3393declare var CSSStyleRule: {
3394    prototype: CSSStyleRule;
3395    new(): CSSStyleRule;
3396};
3397
3398/** A single CSS style sheet. It inherits properties and methods from its parent, StyleSheet. */
3399interface CSSStyleSheet extends StyleSheet {
3400    readonly cssRules: CSSRuleList;
3401    readonly ownerRule: CSSRule | null;
3402    /** @deprecated */
3403    readonly rules: CSSRuleList;
3404    /** @deprecated */
3405    addRule(selector?: string, style?: string, index?: number): number;
3406    deleteRule(index: number): void;
3407    insertRule(rule: string, index?: number): number;
3408    /** @deprecated */
3409    removeRule(index?: number): void;
3410    replace(text: string): Promise<CSSStyleSheet>;
3411    replaceSync(text: string): void;
3412}
3413
3414declare var CSSStyleSheet: {
3415    prototype: CSSStyleSheet;
3416    new(options?: CSSStyleSheetInit): CSSStyleSheet;
3417};
3418
3419/** 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). */
3420interface CSSSupportsRule extends CSSConditionRule {
3421}
3422
3423declare var CSSSupportsRule: {
3424    prototype: CSSSupportsRule;
3425    new(): CSSSupportsRule;
3426};
3427
3428interface CSSTransition extends Animation {
3429    readonly transitionProperty: string;
3430    addEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: CSSTransition, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3431    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3432    removeEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: CSSTransition, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3433    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3434}
3435
3436declare var CSSTransition: {
3437    prototype: CSSTransition;
3438    new(): CSSTransition;
3439};
3440
3441/**
3442 * 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.
3443 * Available only in secure contexts.
3444 */
3445interface Cache {
3446    add(request: RequestInfo | URL): Promise<void>;
3447    addAll(requests: RequestInfo[]): Promise<void>;
3448    delete(request: RequestInfo | URL, options?: CacheQueryOptions): Promise<boolean>;
3449    keys(request?: RequestInfo | URL, options?: CacheQueryOptions): Promise<ReadonlyArray<Request>>;
3450    match(request: RequestInfo | URL, options?: CacheQueryOptions): Promise<Response | undefined>;
3451    matchAll(request?: RequestInfo | URL, options?: CacheQueryOptions): Promise<ReadonlyArray<Response>>;
3452    put(request: RequestInfo | URL, response: Response): Promise<void>;
3453}
3454
3455declare var Cache: {
3456    prototype: Cache;
3457    new(): Cache;
3458};
3459
3460/**
3461 * The storage for Cache objects.
3462 * Available only in secure contexts.
3463 */
3464interface CacheStorage {
3465    delete(cacheName: string): Promise<boolean>;
3466    has(cacheName: string): Promise<boolean>;
3467    keys(): Promise<string[]>;
3468    match(request: RequestInfo | URL, options?: MultiCacheQueryOptions): Promise<Response | undefined>;
3469    open(cacheName: string): Promise<Cache>;
3470}
3471
3472declare var CacheStorage: {
3473    prototype: CacheStorage;
3474    new(): CacheStorage;
3475};
3476
3477interface CanvasCaptureMediaStreamTrack extends MediaStreamTrack {
3478    readonly canvas: HTMLCanvasElement;
3479    requestFrame(): void;
3480    addEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: CanvasCaptureMediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3481    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3482    removeEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: CanvasCaptureMediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3483    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3484}
3485
3486declare var CanvasCaptureMediaStreamTrack: {
3487    prototype: CanvasCaptureMediaStreamTrack;
3488    new(): CanvasCaptureMediaStreamTrack;
3489};
3490
3491interface CanvasCompositing {
3492    globalAlpha: number;
3493    globalCompositeOperation: GlobalCompositeOperation;
3494}
3495
3496interface CanvasDrawImage {
3497    drawImage(image: CanvasImageSource, dx: number, dy: number): void;
3498    drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void;
3499    drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;
3500}
3501
3502interface CanvasDrawPath {
3503    beginPath(): void;
3504    clip(fillRule?: CanvasFillRule): void;
3505    clip(path: Path2D, fillRule?: CanvasFillRule): void;
3506    fill(fillRule?: CanvasFillRule): void;
3507    fill(path: Path2D, fillRule?: CanvasFillRule): void;
3508    isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean;
3509    isPointInPath(path: Path2D, x: number, y: number, fillRule?: CanvasFillRule): boolean;
3510    isPointInStroke(x: number, y: number): boolean;
3511    isPointInStroke(path: Path2D, x: number, y: number): boolean;
3512    stroke(): void;
3513    stroke(path: Path2D): void;
3514}
3515
3516interface CanvasFillStrokeStyles {
3517    fillStyle: string | CanvasGradient | CanvasPattern;
3518    strokeStyle: string | CanvasGradient | CanvasPattern;
3519    createConicGradient(startAngle: number, x: number, y: number): CanvasGradient;
3520    createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;
3521    createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null;
3522    createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;
3523}
3524
3525interface CanvasFilters {
3526    filter: string;
3527}
3528
3529/** An opaque object describing a gradient. It is returned by the methods CanvasRenderingContext2D.createLinearGradient() or CanvasRenderingContext2D.createRadialGradient(). */
3530interface CanvasGradient {
3531    /**
3532     * 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.
3533     *
3534     * Throws an "IndexSizeError" DOMException if the offset is out of range. Throws a "SyntaxError" DOMException if the color cannot be parsed.
3535     */
3536    addColorStop(offset: number, color: string): void;
3537}
3538
3539declare var CanvasGradient: {
3540    prototype: CanvasGradient;
3541    new(): CanvasGradient;
3542};
3543
3544interface CanvasImageData {
3545    createImageData(sw: number, sh: number, settings?: ImageDataSettings): ImageData;
3546    createImageData(imagedata: ImageData): ImageData;
3547    getImageData(sx: number, sy: number, sw: number, sh: number, settings?: ImageDataSettings): ImageData;
3548    putImageData(imagedata: ImageData, dx: number, dy: number): void;
3549    putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void;
3550}
3551
3552interface CanvasImageSmoothing {
3553    imageSmoothingEnabled: boolean;
3554    imageSmoothingQuality: ImageSmoothingQuality;
3555}
3556
3557interface CanvasPath {
3558    arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
3559    arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;
3560    bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
3561    closePath(): void;
3562    ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
3563    lineTo(x: number, y: number): void;
3564    moveTo(x: number, y: number): void;
3565    quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
3566    rect(x: number, y: number, w: number, h: number): void;
3567    roundRect(x: number, y: number, w: number, h: number, radii?: number | DOMPointInit | (number | DOMPointInit)[]): void;
3568}
3569
3570interface CanvasPathDrawingStyles {
3571    lineCap: CanvasLineCap;
3572    lineDashOffset: number;
3573    lineJoin: CanvasLineJoin;
3574    lineWidth: number;
3575    miterLimit: number;
3576    getLineDash(): number[];
3577    setLineDash(segments: number[]): void;
3578}
3579
3580/** An opaque object describing a pattern, based on an image, a canvas, or a video, created by the CanvasRenderingContext2D.createPattern() method. */
3581interface CanvasPattern {
3582    /** Sets the transformation matrix that will be used when rendering the pattern during a fill or stroke painting operation. */
3583    setTransform(transform?: DOMMatrix2DInit): void;
3584}
3585
3586declare var CanvasPattern: {
3587    prototype: CanvasPattern;
3588    new(): CanvasPattern;
3589};
3590
3591interface CanvasRect {
3592    clearRect(x: number, y: number, w: number, h: number): void;
3593    fillRect(x: number, y: number, w: number, h: number): void;
3594    strokeRect(x: number, y: number, w: number, h: number): void;
3595}
3596
3597/** 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. */
3598interface CanvasRenderingContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform, CanvasUserInterface {
3599    readonly canvas: HTMLCanvasElement;
3600    getContextAttributes(): CanvasRenderingContext2DSettings;
3601}
3602
3603declare var CanvasRenderingContext2D: {
3604    prototype: CanvasRenderingContext2D;
3605    new(): CanvasRenderingContext2D;
3606};
3607
3608interface CanvasShadowStyles {
3609    shadowBlur: number;
3610    shadowColor: string;
3611    shadowOffsetX: number;
3612    shadowOffsetY: number;
3613}
3614
3615interface CanvasState {
3616    restore(): void;
3617    save(): void;
3618}
3619
3620interface CanvasText {
3621    fillText(text: string, x: number, y: number, maxWidth?: number): void;
3622    measureText(text: string): TextMetrics;
3623    strokeText(text: string, x: number, y: number, maxWidth?: number): void;
3624}
3625
3626interface CanvasTextDrawingStyles {
3627    direction: CanvasDirection;
3628    font: string;
3629    fontKerning: CanvasFontKerning;
3630    textAlign: CanvasTextAlign;
3631    textBaseline: CanvasTextBaseline;
3632}
3633
3634interface CanvasTransform {
3635    getTransform(): DOMMatrix;
3636    resetTransform(): void;
3637    rotate(angle: number): void;
3638    scale(x: number, y: number): void;
3639    setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;
3640    setTransform(transform?: DOMMatrix2DInit): void;
3641    transform(a: number, b: number, c: number, d: number, e: number, f: number): void;
3642    translate(x: number, y: number): void;
3643}
3644
3645interface CanvasUserInterface {
3646    drawFocusIfNeeded(element: Element): void;
3647    drawFocusIfNeeded(path: Path2D, element: Element): void;
3648}
3649
3650/** 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. */
3651interface ChannelMergerNode extends AudioNode {
3652}
3653
3654declare var ChannelMergerNode: {
3655    prototype: ChannelMergerNode;
3656    new(context: BaseAudioContext, options?: ChannelMergerOptions): ChannelMergerNode;
3657};
3658
3659/** 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. */
3660interface ChannelSplitterNode extends AudioNode {
3661}
3662
3663declare var ChannelSplitterNode: {
3664    prototype: ChannelSplitterNode;
3665    new(context: BaseAudioContext, options?: ChannelSplitterOptions): ChannelSplitterNode;
3666};
3667
3668/** 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. */
3669interface CharacterData extends Node, ChildNode, NonDocumentTypeChildNode {
3670    data: string;
3671    readonly length: number;
3672    readonly ownerDocument: Document;
3673    appendData(data: string): void;
3674    deleteData(offset: number, count: number): void;
3675    insertData(offset: number, data: string): void;
3676    replaceData(offset: number, count: number, data: string): void;
3677    substringData(offset: number, count: number): string;
3678}
3679
3680declare var CharacterData: {
3681    prototype: CharacterData;
3682    new(): CharacterData;
3683};
3684
3685interface ChildNode extends Node {
3686    /**
3687     * Inserts nodes just after node, while replacing strings in nodes with equivalent Text nodes.
3688     *
3689     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
3690     */
3691    after(...nodes: (Node | string)[]): void;
3692    /**
3693     * Inserts nodes just before node, while replacing strings in nodes with equivalent Text nodes.
3694     *
3695     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
3696     */
3697    before(...nodes: (Node | string)[]): void;
3698    /** Removes node. */
3699    remove(): void;
3700    /**
3701     * Replaces node with nodes, while replacing strings in nodes with equivalent Text nodes.
3702     *
3703     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
3704     */
3705    replaceWith(...nodes: (Node | string)[]): void;
3706}
3707
3708/** @deprecated */
3709interface ClientRect extends DOMRect {
3710}
3711
3712/** Available only in secure contexts. */
3713interface Clipboard extends EventTarget {
3714    read(): Promise<ClipboardItems>;
3715    readText(): Promise<string>;
3716    write(data: ClipboardItems): Promise<void>;
3717    writeText(data: string): Promise<void>;
3718}
3719
3720declare var Clipboard: {
3721    prototype: Clipboard;
3722    new(): Clipboard;
3723};
3724
3725/** Events providing information related to modification of the clipboard, that is cut, copy, and paste events. */
3726interface ClipboardEvent extends Event {
3727    readonly clipboardData: DataTransfer | null;
3728}
3729
3730declare var ClipboardEvent: {
3731    prototype: ClipboardEvent;
3732    new(type: string, eventInitDict?: ClipboardEventInit): ClipboardEvent;
3733};
3734
3735/** Available only in secure contexts. */
3736interface ClipboardItem {
3737    readonly types: ReadonlyArray<string>;
3738    getType(type: string): Promise<Blob>;
3739}
3740
3741declare var ClipboardItem: {
3742    prototype: ClipboardItem;
3743    new(items: Record<string, string | Blob | PromiseLike<string | Blob>>, options?: ClipboardItemOptions): ClipboardItem;
3744};
3745
3746/** 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. */
3747interface CloseEvent extends Event {
3748    /** Returns the WebSocket connection close code provided by the server. */
3749    readonly code: number;
3750    /** Returns the WebSocket connection close reason provided by the server. */
3751    readonly reason: string;
3752    /** Returns true if the connection closed cleanly; false otherwise. */
3753    readonly wasClean: boolean;
3754}
3755
3756declare var CloseEvent: {
3757    prototype: CloseEvent;
3758    new(type: string, eventInitDict?: CloseEventInit): CloseEvent;
3759};
3760
3761/** Textual notations within markup; although it is generally not visually shown, such comments are available to be read in the source view. */
3762interface Comment extends CharacterData {
3763}
3764
3765declare var Comment: {
3766    prototype: Comment;
3767    new(data?: string): Comment;
3768};
3769
3770/** The DOM CompositionEvent represents events that occur due to the user indirectly entering text. */
3771interface CompositionEvent extends UIEvent {
3772    readonly data: string;
3773    /** @deprecated */
3774    initCompositionEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: WindowProxy | null, dataArg?: string): void;
3775}
3776
3777declare var CompositionEvent: {
3778    prototype: CompositionEvent;
3779    new(type: string, eventInitDict?: CompositionEventInit): CompositionEvent;
3780};
3781
3782interface ConstantSourceNode extends AudioScheduledSourceNode {
3783    readonly offset: AudioParam;
3784    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3785    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3786    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3787    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3788}
3789
3790declare var ConstantSourceNode: {
3791    prototype: ConstantSourceNode;
3792    new(context: BaseAudioContext, options?: ConstantSourceOptions): ConstantSourceNode;
3793};
3794
3795/** 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. */
3796interface ConvolverNode extends AudioNode {
3797    buffer: AudioBuffer | null;
3798    normalize: boolean;
3799}
3800
3801declare var ConvolverNode: {
3802    prototype: ConvolverNode;
3803    new(context: BaseAudioContext, options?: ConvolverOptions): ConvolverNode;
3804};
3805
3806/** This Streams API interface provides a built-in byte length queuing strategy that can be used when constructing streams. */
3807interface CountQueuingStrategy extends QueuingStrategy {
3808    readonly highWaterMark: number;
3809    readonly size: QueuingStrategySize;
3810}
3811
3812declare var CountQueuingStrategy: {
3813    prototype: CountQueuingStrategy;
3814    new(init: QueuingStrategyInit): CountQueuingStrategy;
3815};
3816
3817/** Available only in secure contexts. */
3818interface Credential {
3819    readonly id: string;
3820    readonly type: string;
3821}
3822
3823declare var Credential: {
3824    prototype: Credential;
3825    new(): Credential;
3826};
3827
3828/** Available only in secure contexts. */
3829interface CredentialsContainer {
3830    create(options?: CredentialCreationOptions): Promise<Credential | null>;
3831    get(options?: CredentialRequestOptions): Promise<Credential | null>;
3832    preventSilentAccess(): Promise<void>;
3833    store(credential: Credential): Promise<Credential>;
3834}
3835
3836declare var CredentialsContainer: {
3837    prototype: CredentialsContainer;
3838    new(): CredentialsContainer;
3839};
3840
3841/** Basic cryptography features available in the current context. It allows access to a cryptographically strong random number generator and to cryptographic primitives. */
3842interface Crypto {
3843    /** Available only in secure contexts. */
3844    readonly subtle: SubtleCrypto;
3845    getRandomValues<T extends ArrayBufferView | null>(array: T): T;
3846    /** Available only in secure contexts. */
3847    randomUUID(): string;
3848}
3849
3850declare var Crypto: {
3851    prototype: Crypto;
3852    new(): Crypto;
3853};
3854
3855/**
3856 * The CryptoKey dictionary of the Web Crypto API represents a cryptographic key.
3857 * Available only in secure contexts.
3858 */
3859interface CryptoKey {
3860    readonly algorithm: KeyAlgorithm;
3861    readonly extractable: boolean;
3862    readonly type: KeyType;
3863    readonly usages: KeyUsage[];
3864}
3865
3866declare var CryptoKey: {
3867    prototype: CryptoKey;
3868    new(): CryptoKey;
3869};
3870
3871interface CustomElementRegistry {
3872    define(name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions): void;
3873    get(name: string): CustomElementConstructor | undefined;
3874    upgrade(root: Node): void;
3875    whenDefined(name: string): Promise<CustomElementConstructor>;
3876}
3877
3878declare var CustomElementRegistry: {
3879    prototype: CustomElementRegistry;
3880    new(): CustomElementRegistry;
3881};
3882
3883interface CustomEvent<T = any> extends Event {
3884    /** Returns any custom data event was created with. Typically used for synthetic events. */
3885    readonly detail: T;
3886    /** @deprecated */
3887    initCustomEvent(type: string, bubbles?: boolean, cancelable?: boolean, detail?: T): void;
3888}
3889
3890declare var CustomEvent: {
3891    prototype: CustomEvent;
3892    new<T>(type: string, eventInitDict?: CustomEventInit<T>): CustomEvent<T>;
3893};
3894
3895/** An abnormal event (called an exception) which occurs as a result of calling a method or accessing a property of a web API. */
3896interface DOMException extends Error {
3897    /** @deprecated */
3898    readonly code: number;
3899    readonly message: string;
3900    readonly name: string;
3901    readonly ABORT_ERR: number;
3902    readonly DATA_CLONE_ERR: number;
3903    readonly DOMSTRING_SIZE_ERR: number;
3904    readonly HIERARCHY_REQUEST_ERR: number;
3905    readonly INDEX_SIZE_ERR: number;
3906    readonly INUSE_ATTRIBUTE_ERR: number;
3907    readonly INVALID_ACCESS_ERR: number;
3908    readonly INVALID_CHARACTER_ERR: number;
3909    readonly INVALID_MODIFICATION_ERR: number;
3910    readonly INVALID_NODE_TYPE_ERR: number;
3911    readonly INVALID_STATE_ERR: number;
3912    readonly NAMESPACE_ERR: number;
3913    readonly NETWORK_ERR: number;
3914    readonly NOT_FOUND_ERR: number;
3915    readonly NOT_SUPPORTED_ERR: number;
3916    readonly NO_DATA_ALLOWED_ERR: number;
3917    readonly NO_MODIFICATION_ALLOWED_ERR: number;
3918    readonly QUOTA_EXCEEDED_ERR: number;
3919    readonly SECURITY_ERR: number;
3920    readonly SYNTAX_ERR: number;
3921    readonly TIMEOUT_ERR: number;
3922    readonly TYPE_MISMATCH_ERR: number;
3923    readonly URL_MISMATCH_ERR: number;
3924    readonly VALIDATION_ERR: number;
3925    readonly WRONG_DOCUMENT_ERR: number;
3926}
3927
3928declare var DOMException: {
3929    prototype: DOMException;
3930    new(message?: string, name?: string): DOMException;
3931    readonly ABORT_ERR: number;
3932    readonly DATA_CLONE_ERR: number;
3933    readonly DOMSTRING_SIZE_ERR: number;
3934    readonly HIERARCHY_REQUEST_ERR: number;
3935    readonly INDEX_SIZE_ERR: number;
3936    readonly INUSE_ATTRIBUTE_ERR: number;
3937    readonly INVALID_ACCESS_ERR: number;
3938    readonly INVALID_CHARACTER_ERR: number;
3939    readonly INVALID_MODIFICATION_ERR: number;
3940    readonly INVALID_NODE_TYPE_ERR: number;
3941    readonly INVALID_STATE_ERR: number;
3942    readonly NAMESPACE_ERR: number;
3943    readonly NETWORK_ERR: number;
3944    readonly NOT_FOUND_ERR: number;
3945    readonly NOT_SUPPORTED_ERR: number;
3946    readonly NO_DATA_ALLOWED_ERR: number;
3947    readonly NO_MODIFICATION_ALLOWED_ERR: number;
3948    readonly QUOTA_EXCEEDED_ERR: number;
3949    readonly SECURITY_ERR: number;
3950    readonly SYNTAX_ERR: number;
3951    readonly TIMEOUT_ERR: number;
3952    readonly TYPE_MISMATCH_ERR: number;
3953    readonly URL_MISMATCH_ERR: number;
3954    readonly VALIDATION_ERR: number;
3955    readonly WRONG_DOCUMENT_ERR: number;
3956};
3957
3958/** An object providing methods which are not dependent on any particular document. Such an object is returned by the Document.implementation property. */
3959interface DOMImplementation {
3960    createDocument(namespace: string | null, qualifiedName: string | null, doctype?: DocumentType | null): XMLDocument;
3961    createDocumentType(qualifiedName: string, publicId: string, systemId: string): DocumentType;
3962    createHTMLDocument(title?: string): Document;
3963    /** @deprecated */
3964    hasFeature(...args: any[]): true;
3965}
3966
3967declare var DOMImplementation: {
3968    prototype: DOMImplementation;
3969    new(): DOMImplementation;
3970};
3971
3972interface DOMMatrix extends DOMMatrixReadOnly {
3973    a: number;
3974    b: number;
3975    c: number;
3976    d: number;
3977    e: number;
3978    f: number;
3979    m11: number;
3980    m12: number;
3981    m13: number;
3982    m14: number;
3983    m21: number;
3984    m22: number;
3985    m23: number;
3986    m24: number;
3987    m31: number;
3988    m32: number;
3989    m33: number;
3990    m34: number;
3991    m41: number;
3992    m42: number;
3993    m43: number;
3994    m44: number;
3995    invertSelf(): DOMMatrix;
3996    multiplySelf(other?: DOMMatrixInit): DOMMatrix;
3997    preMultiplySelf(other?: DOMMatrixInit): DOMMatrix;
3998    rotateAxisAngleSelf(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;
3999    rotateFromVectorSelf(x?: number, y?: number): DOMMatrix;
4000    rotateSelf(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;
4001    scale3dSelf(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
4002    scaleSelf(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
4003    setMatrixValue(transformList: string): DOMMatrix;
4004    skewXSelf(sx?: number): DOMMatrix;
4005    skewYSelf(sy?: number): DOMMatrix;
4006    translateSelf(tx?: number, ty?: number, tz?: number): DOMMatrix;
4007}
4008
4009declare var DOMMatrix: {
4010    prototype: DOMMatrix;
4011    new(init?: string | number[]): DOMMatrix;
4012    fromFloat32Array(array32: Float32Array): DOMMatrix;
4013    fromFloat64Array(array64: Float64Array): DOMMatrix;
4014    fromMatrix(other?: DOMMatrixInit): DOMMatrix;
4015};
4016
4017type SVGMatrix = DOMMatrix;
4018declare var SVGMatrix: typeof DOMMatrix;
4019
4020type WebKitCSSMatrix = DOMMatrix;
4021declare var WebKitCSSMatrix: typeof DOMMatrix;
4022
4023interface DOMMatrixReadOnly {
4024    readonly a: number;
4025    readonly b: number;
4026    readonly c: number;
4027    readonly d: number;
4028    readonly e: number;
4029    readonly f: number;
4030    readonly is2D: boolean;
4031    readonly isIdentity: boolean;
4032    readonly m11: number;
4033    readonly m12: number;
4034    readonly m13: number;
4035    readonly m14: number;
4036    readonly m21: number;
4037    readonly m22: number;
4038    readonly m23: number;
4039    readonly m24: number;
4040    readonly m31: number;
4041    readonly m32: number;
4042    readonly m33: number;
4043    readonly m34: number;
4044    readonly m41: number;
4045    readonly m42: number;
4046    readonly m43: number;
4047    readonly m44: number;
4048    flipX(): DOMMatrix;
4049    flipY(): DOMMatrix;
4050    inverse(): DOMMatrix;
4051    multiply(other?: DOMMatrixInit): DOMMatrix;
4052    rotate(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;
4053    rotateAxisAngle(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;
4054    rotateFromVector(x?: number, y?: number): DOMMatrix;
4055    scale(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
4056    scale3d(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
4057    /** @deprecated */
4058    scaleNonUniform(scaleX?: number, scaleY?: number): DOMMatrix;
4059    skewX(sx?: number): DOMMatrix;
4060    skewY(sy?: number): DOMMatrix;
4061    toFloat32Array(): Float32Array;
4062    toFloat64Array(): Float64Array;
4063    toJSON(): any;
4064    transformPoint(point?: DOMPointInit): DOMPoint;
4065    translate(tx?: number, ty?: number, tz?: number): DOMMatrix;
4066    toString(): string;
4067}
4068
4069declare var DOMMatrixReadOnly: {
4070    prototype: DOMMatrixReadOnly;
4071    new(init?: string | number[]): DOMMatrixReadOnly;
4072    fromFloat32Array(array32: Float32Array): DOMMatrixReadOnly;
4073    fromFloat64Array(array64: Float64Array): DOMMatrixReadOnly;
4074    fromMatrix(other?: DOMMatrixInit): DOMMatrixReadOnly;
4075    toString(): string;
4076};
4077
4078/** Provides the ability to parse XML or HTML source code from a string into a DOM Document. */
4079interface DOMParser {
4080    /**
4081     * 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).
4082     *
4083     * For the XML parser, if string cannot be parsed, then the returned Document will contain elements describing the resulting error.
4084     *
4085     * Note that script elements are not evaluated during parsing, and the resulting document's encoding will always be UTF-8.
4086     *
4087     * Values other than the above for type will cause a TypeError exception to be thrown.
4088     */
4089    parseFromString(string: string, type: DOMParserSupportedType): Document;
4090}
4091
4092declare var DOMParser: {
4093    prototype: DOMParser;
4094    new(): DOMParser;
4095};
4096
4097interface DOMPoint extends DOMPointReadOnly {
4098    w: number;
4099    x: number;
4100    y: number;
4101    z: number;
4102}
4103
4104declare var DOMPoint: {
4105    prototype: DOMPoint;
4106    new(x?: number, y?: number, z?: number, w?: number): DOMPoint;
4107    fromPoint(other?: DOMPointInit): DOMPoint;
4108};
4109
4110type SVGPoint = DOMPoint;
4111declare var SVGPoint: typeof DOMPoint;
4112
4113interface DOMPointReadOnly {
4114    readonly w: number;
4115    readonly x: number;
4116    readonly y: number;
4117    readonly z: number;
4118    matrixTransform(matrix?: DOMMatrixInit): DOMPoint;
4119    toJSON(): any;
4120}
4121
4122declare var DOMPointReadOnly: {
4123    prototype: DOMPointReadOnly;
4124    new(x?: number, y?: number, z?: number, w?: number): DOMPointReadOnly;
4125    fromPoint(other?: DOMPointInit): DOMPointReadOnly;
4126};
4127
4128interface DOMQuad {
4129    readonly p1: DOMPoint;
4130    readonly p2: DOMPoint;
4131    readonly p3: DOMPoint;
4132    readonly p4: DOMPoint;
4133    getBounds(): DOMRect;
4134    toJSON(): any;
4135}
4136
4137declare var DOMQuad: {
4138    prototype: DOMQuad;
4139    new(p1?: DOMPointInit, p2?: DOMPointInit, p3?: DOMPointInit, p4?: DOMPointInit): DOMQuad;
4140    fromQuad(other?: DOMQuadInit): DOMQuad;
4141    fromRect(other?: DOMRectInit): DOMQuad;
4142};
4143
4144interface DOMRect extends DOMRectReadOnly {
4145    height: number;
4146    width: number;
4147    x: number;
4148    y: number;
4149}
4150
4151declare var DOMRect: {
4152    prototype: DOMRect;
4153    new(x?: number, y?: number, width?: number, height?: number): DOMRect;
4154    fromRect(other?: DOMRectInit): DOMRect;
4155};
4156
4157type SVGRect = DOMRect;
4158declare var SVGRect: typeof DOMRect;
4159
4160interface DOMRectList {
4161    readonly length: number;
4162    item(index: number): DOMRect | null;
4163    [index: number]: DOMRect;
4164}
4165
4166declare var DOMRectList: {
4167    prototype: DOMRectList;
4168    new(): DOMRectList;
4169};
4170
4171interface DOMRectReadOnly {
4172    readonly bottom: number;
4173    readonly height: number;
4174    readonly left: number;
4175    readonly right: number;
4176    readonly top: number;
4177    readonly width: number;
4178    readonly x: number;
4179    readonly y: number;
4180    toJSON(): any;
4181}
4182
4183declare var DOMRectReadOnly: {
4184    prototype: DOMRectReadOnly;
4185    new(x?: number, y?: number, width?: number, height?: number): DOMRectReadOnly;
4186    fromRect(other?: DOMRectInit): DOMRectReadOnly;
4187};
4188
4189/** A type returned by some APIs which contains a list of DOMString (strings). */
4190interface DOMStringList {
4191    /** Returns the number of strings in strings. */
4192    readonly length: number;
4193    /** Returns true if strings contains string, and false otherwise. */
4194    contains(string: string): boolean;
4195    /** Returns the string with index index from strings. */
4196    item(index: number): string | null;
4197    [index: number]: string;
4198}
4199
4200declare var DOMStringList: {
4201    prototype: DOMStringList;
4202    new(): DOMStringList;
4203};
4204
4205/** Used by the dataset HTML attribute to represent data for custom attributes added to elements. */
4206interface DOMStringMap {
4207    [name: string]: string | undefined;
4208}
4209
4210declare var DOMStringMap: {
4211    prototype: DOMStringMap;
4212    new(): DOMStringMap;
4213};
4214
4215/** 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. */
4216interface DOMTokenList {
4217    /** Returns the number of tokens. */
4218    readonly length: number;
4219    /**
4220     * Returns the associated set as string.
4221     *
4222     * Can be set, to change the associated attribute.
4223     */
4224    value: string;
4225    toString(): string;
4226    /**
4227     * Adds all arguments passed, except those already present.
4228     *
4229     * Throws a "SyntaxError" DOMException if one of the arguments is the empty string.
4230     *
4231     * Throws an "InvalidCharacterError" DOMException if one of the arguments contains any ASCII whitespace.
4232     */
4233    add(...tokens: string[]): void;
4234    /** Returns true if token is present, and false otherwise. */
4235    contains(token: string): boolean;
4236    /** Returns the token with index index. */
4237    item(index: number): string | null;
4238    /**
4239     * Removes arguments passed, if they are present.
4240     *
4241     * Throws a "SyntaxError" DOMException if one of the arguments is the empty string.
4242     *
4243     * Throws an "InvalidCharacterError" DOMException if one of the arguments contains any ASCII whitespace.
4244     */
4245    remove(...tokens: string[]): void;
4246    /**
4247     * Replaces token with newToken.
4248     *
4249     * Returns true if token was replaced with newToken, and false otherwise.
4250     *
4251     * Throws a "SyntaxError" DOMException if one of the arguments is the empty string.
4252     *
4253     * Throws an "InvalidCharacterError" DOMException if one of the arguments contains any ASCII whitespace.
4254     */
4255    replace(token: string, newToken: string): boolean;
4256    /**
4257     * Returns true if token is in the associated attribute's supported tokens. Returns false otherwise.
4258     *
4259     * Throws a TypeError if the associated attribute has no supported tokens defined.
4260     */
4261    supports(token: string): boolean;
4262    /**
4263     * 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()).
4264     *
4265     * Returns true if token is now present, and false otherwise.
4266     *
4267     * Throws a "SyntaxError" DOMException if token is empty.
4268     *
4269     * Throws an "InvalidCharacterError" DOMException if token contains any spaces.
4270     */
4271    toggle(token: string, force?: boolean): boolean;
4272    forEach(callbackfn: (value: string, key: number, parent: DOMTokenList) => void, thisArg?: any): void;
4273    [index: number]: string;
4274}
4275
4276declare var DOMTokenList: {
4277    prototype: DOMTokenList;
4278    new(): DOMTokenList;
4279};
4280
4281/** 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. */
4282interface DataTransfer {
4283    /**
4284     * 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.
4285     *
4286     * Can be set, to change the selected operation.
4287     *
4288     * The possible values are "none", "copy", "link", and "move".
4289     */
4290    dropEffect: "none" | "copy" | "link" | "move";
4291    /**
4292     * Returns the kinds of operations that are to be allowed.
4293     *
4294     * Can be set (during the dragstart event), to change the allowed operations.
4295     *
4296     * The possible values are "none", "copy", "copyLink", "copyMove", "link", "linkMove", "move", "all", and "uninitialized",
4297     */
4298    effectAllowed: "none" | "copy" | "copyLink" | "copyMove" | "link" | "linkMove" | "move" | "all" | "uninitialized";
4299    /** Returns a FileList of the files being dragged, if any. */
4300    readonly files: FileList;
4301    /** Returns a DataTransferItemList object, with the drag data. */
4302    readonly items: DataTransferItemList;
4303    /** 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". */
4304    readonly types: ReadonlyArray<string>;
4305    /** Removes the data of the specified formats. Removes all data if the argument is omitted. */
4306    clearData(format?: string): void;
4307    /** Returns the specified data. If there is no such data, returns the empty string. */
4308    getData(format: string): string;
4309    /** Adds the specified data. */
4310    setData(format: string, data: string): void;
4311    /** Uses the given element to update the drag feedback, replacing any previously specified feedback. */
4312    setDragImage(image: Element, x: number, y: number): void;
4313}
4314
4315declare var DataTransfer: {
4316    prototype: DataTransfer;
4317    new(): DataTransfer;
4318};
4319
4320/** 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. */
4321interface DataTransferItem {
4322    /** Returns the drag data item kind, one of: "string", "file". */
4323    readonly kind: string;
4324    /** Returns the drag data item type string. */
4325    readonly type: string;
4326    /** Returns a File object, if the drag data item kind is File. */
4327    getAsFile(): File | null;
4328    /** Invokes the callback with the string data as the argument, if the drag data item kind is text. */
4329    getAsString(callback: FunctionStringCallback | null): void;
4330    webkitGetAsEntry(): FileSystemEntry | null;
4331}
4332
4333declare var DataTransferItem: {
4334    prototype: DataTransferItem;
4335    new(): DataTransferItem;
4336};
4337
4338/** 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. */
4339interface DataTransferItemList {
4340    /** Returns the number of items in the drag data store. */
4341    readonly length: number;
4342    /** 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. */
4343    add(data: string, type: string): DataTransferItem | null;
4344    add(data: File): DataTransferItem | null;
4345    /** Removes all the entries in the drag data store. */
4346    clear(): void;
4347    /** Removes the indexth entry in the drag data store. */
4348    remove(index: number): void;
4349    [index: number]: DataTransferItem;
4350}
4351
4352declare var DataTransferItemList: {
4353    prototype: DataTransferItemList;
4354    new(): DataTransferItemList;
4355};
4356
4357/** 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. */
4358interface DelayNode extends AudioNode {
4359    readonly delayTime: AudioParam;
4360}
4361
4362declare var DelayNode: {
4363    prototype: DelayNode;
4364    new(context: BaseAudioContext, options?: DelayOptions): DelayNode;
4365};
4366
4367/**
4368 * The DeviceMotionEvent provides web developers with information about the speed of changes for the device's position and orientation.
4369 * Available only in secure contexts.
4370 */
4371interface DeviceMotionEvent extends Event {
4372    readonly acceleration: DeviceMotionEventAcceleration | null;
4373    readonly accelerationIncludingGravity: DeviceMotionEventAcceleration | null;
4374    readonly interval: number;
4375    readonly rotationRate: DeviceMotionEventRotationRate | null;
4376}
4377
4378declare var DeviceMotionEvent: {
4379    prototype: DeviceMotionEvent;
4380    new(type: string, eventInitDict?: DeviceMotionEventInit): DeviceMotionEvent;
4381};
4382
4383/** Available only in secure contexts. */
4384interface DeviceMotionEventAcceleration {
4385    readonly x: number | null;
4386    readonly y: number | null;
4387    readonly z: number | null;
4388}
4389
4390/** Available only in secure contexts. */
4391interface DeviceMotionEventRotationRate {
4392    readonly alpha: number | null;
4393    readonly beta: number | null;
4394    readonly gamma: number | null;
4395}
4396
4397/**
4398 * The DeviceOrientationEvent provides web developers with information from the physical orientation of the device running the web page.
4399 * Available only in secure contexts.
4400 */
4401interface DeviceOrientationEvent extends Event {
4402    readonly absolute: boolean;
4403    readonly alpha: number | null;
4404    readonly beta: number | null;
4405    readonly gamma: number | null;
4406}
4407
4408declare var DeviceOrientationEvent: {
4409    prototype: DeviceOrientationEvent;
4410    new(type: string, eventInitDict?: DeviceOrientationEventInit): DeviceOrientationEvent;
4411};
4412
4413interface DocumentEventMap extends DocumentAndElementEventHandlersEventMap, GlobalEventHandlersEventMap {
4414    "DOMContentLoaded": Event;
4415    "fullscreenchange": Event;
4416    "fullscreenerror": Event;
4417    "pointerlockchange": Event;
4418    "pointerlockerror": Event;
4419    "readystatechange": Event;
4420    "visibilitychange": Event;
4421}
4422
4423/** Any web page loaded in the browser and serves as an entry point into the web page's content, which is the DOM tree. */
4424interface Document extends Node, DocumentAndElementEventHandlers, DocumentOrShadowRoot, FontFaceSource, GlobalEventHandlers, NonElementParentNode, ParentNode, XPathEvaluatorBase {
4425    /** Sets or gets the URL for the current document. */
4426    readonly URL: string;
4427    /**
4428     * Sets or gets the color of all active links in the document.
4429     * @deprecated
4430     */
4431    alinkColor: string;
4432    /**
4433     * Returns a reference to the collection of elements contained by the object.
4434     * @deprecated
4435     */
4436    readonly all: HTMLAllCollection;
4437    /**
4438     * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order.
4439     * @deprecated
4440     */
4441    readonly anchors: HTMLCollectionOf<HTMLAnchorElement>;
4442    /**
4443     * Retrieves a collection of all applet objects in the document.
4444     * @deprecated
4445     */
4446    readonly applets: HTMLCollection;
4447    /**
4448     * Deprecated. Sets or retrieves a value that indicates the background color behind the object.
4449     * @deprecated
4450     */
4451    bgColor: string;
4452    /** Specifies the beginning and end of the document body. */
4453    body: HTMLElement;
4454    /** Returns document's encoding. */
4455    readonly characterSet: string;
4456    /**
4457     * Gets or sets the character set used to encode the object.
4458     * @deprecated This is a legacy alias of `characterSet`.
4459     */
4460    readonly charset: string;
4461    /** Gets a value that indicates whether standards-compliant mode is switched on for the object. */
4462    readonly compatMode: string;
4463    /** Returns document's content type. */
4464    readonly contentType: string;
4465    /**
4466     * 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.
4467     *
4468     * Can be set, to add a new cookie to the element's set of HTTP cookies.
4469     *
4470     * 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.
4471     */
4472    cookie: string;
4473    /**
4474     * 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.
4475     *
4476     * 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.
4477     */
4478    readonly currentScript: HTMLOrSVGScriptElement | null;
4479    /** Returns the Window object of the active document. */
4480    readonly defaultView: (WindowProxy & typeof globalThis) | null;
4481    /** Sets or gets a value that indicates whether the document can be edited. */
4482    designMode: string;
4483    /** Sets or retrieves a value that indicates the reading order of the object. */
4484    dir: string;
4485    /** Gets an object representing the document type declaration associated with the current document. */
4486    readonly doctype: DocumentType | null;
4487    /** Gets a reference to the root node of the document. */
4488    readonly documentElement: HTMLElement;
4489    /** Returns document's URL. */
4490    readonly documentURI: string;
4491    /**
4492     * Sets or gets the security domain of the document.
4493     * @deprecated
4494     */
4495    domain: string;
4496    /** Retrieves a collection of all embed objects in the document. */
4497    readonly embeds: HTMLCollectionOf<HTMLEmbedElement>;
4498    /**
4499     * Sets or gets the foreground (text) color of the document.
4500     * @deprecated
4501     */
4502    fgColor: string;
4503    /** Retrieves a collection, in source order, of all form objects in the document. */
4504    readonly forms: HTMLCollectionOf<HTMLFormElement>;
4505    /** @deprecated */
4506    readonly fullscreen: boolean;
4507    /** Returns true if document has the ability to display elements fullscreen and fullscreen is supported, or false otherwise. */
4508    readonly fullscreenEnabled: boolean;
4509    /** Returns the head element. */
4510    readonly head: HTMLHeadElement;
4511    readonly hidden: boolean;
4512    /** Retrieves a collection, in source order, of img objects in the document. */
4513    readonly images: HTMLCollectionOf<HTMLImageElement>;
4514    /** Gets the implementation object of the current document. */
4515    readonly implementation: DOMImplementation;
4516    /**
4517     * Returns the character encoding used to create the webpage that is loaded into the document object.
4518     * @deprecated This is a legacy alias of `characterSet`.
4519     */
4520    readonly inputEncoding: string;
4521    /** Gets the date that the page was last modified, if the page supplies one. */
4522    readonly lastModified: string;
4523    /**
4524     * Sets or gets the color of the document links.
4525     * @deprecated
4526     */
4527    linkColor: string;
4528    /** Retrieves a collection of all a objects that specify the href property and all area objects in the document. */
4529    readonly links: HTMLCollectionOf<HTMLAnchorElement | HTMLAreaElement>;
4530    /** Contains information about the current URL. */
4531    get location(): Location;
4532    set location(href: string | Location);
4533    onfullscreenchange: ((this: Document, ev: Event) => any) | null;
4534    onfullscreenerror: ((this: Document, ev: Event) => any) | null;
4535    onpointerlockchange: ((this: Document, ev: Event) => any) | null;
4536    onpointerlockerror: ((this: Document, ev: Event) => any) | null;
4537    /**
4538     * Fires when the state of the object has changed.
4539     * @param ev The event
4540     */
4541    onreadystatechange: ((this: Document, ev: Event) => any) | null;
4542    onvisibilitychange: ((this: Document, ev: Event) => any) | null;
4543    readonly ownerDocument: null;
4544    readonly pictureInPictureEnabled: boolean;
4545    /** Return an HTMLCollection of the embed elements in the Document. */
4546    readonly plugins: HTMLCollectionOf<HTMLEmbedElement>;
4547    /** Retrieves a value that indicates the current state of the object. */
4548    readonly readyState: DocumentReadyState;
4549    /** Gets the URL of the location that referred the user to the current page. */
4550    readonly referrer: string;
4551    /** @deprecated */
4552    readonly rootElement: SVGSVGElement | null;
4553    /** Retrieves a collection of all script objects in the document. */
4554    readonly scripts: HTMLCollectionOf<HTMLScriptElement>;
4555    readonly scrollingElement: Element | null;
4556    readonly timeline: DocumentTimeline;
4557    /** Contains the title of the document. */
4558    title: string;
4559    readonly visibilityState: DocumentVisibilityState;
4560    /**
4561     * Sets or gets the color of the links that the user has visited.
4562     * @deprecated
4563     */
4564    vlinkColor: string;
4565    /**
4566     * Moves node from another document and returns it.
4567     *
4568     * If node is a document, throws a "NotSupportedError" DOMException or, if node is a shadow root, throws a "HierarchyRequestError" DOMException.
4569     */
4570    adoptNode<T extends Node>(node: T): T;
4571    /** @deprecated */
4572    captureEvents(): void;
4573    /** @deprecated */
4574    caretRangeFromPoint(x: number, y: number): Range | null;
4575    /** @deprecated */
4576    clear(): void;
4577    /** Closes an output stream and forces the sent data to display. */
4578    close(): void;
4579    /**
4580     * Creates an attribute object with a specified name.
4581     * @param name String that sets the attribute object's name.
4582     */
4583    createAttribute(localName: string): Attr;
4584    createAttributeNS(namespace: string | null, qualifiedName: string): Attr;
4585    /** Returns a CDATASection node whose data is data. */
4586    createCDATASection(data: string): CDATASection;
4587    /**
4588     * Creates a comment object with the specified data.
4589     * @param data Sets the comment object's data.
4590     */
4591    createComment(data: string): Comment;
4592    /** Creates a new document. */
4593    createDocumentFragment(): DocumentFragment;
4594    /**
4595     * Creates an instance of the element for the specified tag.
4596     * @param tagName The name of an element.
4597     */
4598    createElement<K extends keyof HTMLElementTagNameMap>(tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K];
4599    /** @deprecated */
4600    createElement<K extends keyof HTMLElementDeprecatedTagNameMap>(tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K];
4601    createElement(tagName: string, options?: ElementCreationOptions): HTMLElement;
4602    /**
4603     * 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.
4604     *
4605     * If localName does not match the Name production an "InvalidCharacterError" DOMException will be thrown.
4606     *
4607     * If one of the following conditions is true a "NamespaceError" DOMException will be thrown:
4608     *
4609     * localName does not match the QName production.
4610     * Namespace prefix is not null and namespace is the empty string.
4611     * Namespace prefix is "xml" and namespace is not the XML namespace.
4612     * qualifiedName or namespace prefix is "xmlns" and namespace is not the XMLNS namespace.
4613     * namespace is the XMLNS namespace and neither qualifiedName nor namespace prefix is "xmlns".
4614     *
4615     * When supplied, options's is can be used to create a customized built-in element.
4616     */
4617    createElementNS(namespaceURI: "http://www.w3.org/1999/xhtml", qualifiedName: string): HTMLElement;
4618    createElementNS<K extends keyof SVGElementTagNameMap>(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: K): SVGElementTagNameMap[K];
4619    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: string): SVGElement;
4620    createElementNS(namespaceURI: string | null, qualifiedName: string, options?: ElementCreationOptions): Element;
4621    createElementNS(namespace: string | null, qualifiedName: string, options?: string | ElementCreationOptions): Element;
4622    createEvent(eventInterface: "AnimationEvent"): AnimationEvent;
4623    createEvent(eventInterface: "AnimationPlaybackEvent"): AnimationPlaybackEvent;
4624    createEvent(eventInterface: "AudioProcessingEvent"): AudioProcessingEvent;
4625    createEvent(eventInterface: "BeforeUnloadEvent"): BeforeUnloadEvent;
4626    createEvent(eventInterface: "BlobEvent"): BlobEvent;
4627    createEvent(eventInterface: "ClipboardEvent"): ClipboardEvent;
4628    createEvent(eventInterface: "CloseEvent"): CloseEvent;
4629    createEvent(eventInterface: "CompositionEvent"): CompositionEvent;
4630    createEvent(eventInterface: "CustomEvent"): CustomEvent;
4631    createEvent(eventInterface: "DeviceMotionEvent"): DeviceMotionEvent;
4632    createEvent(eventInterface: "DeviceOrientationEvent"): DeviceOrientationEvent;
4633    createEvent(eventInterface: "DragEvent"): DragEvent;
4634    createEvent(eventInterface: "ErrorEvent"): ErrorEvent;
4635    createEvent(eventInterface: "Event"): Event;
4636    createEvent(eventInterface: "Events"): Event;
4637    createEvent(eventInterface: "FocusEvent"): FocusEvent;
4638    createEvent(eventInterface: "FontFaceSetLoadEvent"): FontFaceSetLoadEvent;
4639    createEvent(eventInterface: "FormDataEvent"): FormDataEvent;
4640    createEvent(eventInterface: "GamepadEvent"): GamepadEvent;
4641    createEvent(eventInterface: "HashChangeEvent"): HashChangeEvent;
4642    createEvent(eventInterface: "IDBVersionChangeEvent"): IDBVersionChangeEvent;
4643    createEvent(eventInterface: "InputEvent"): InputEvent;
4644    createEvent(eventInterface: "KeyboardEvent"): KeyboardEvent;
4645    createEvent(eventInterface: "MediaEncryptedEvent"): MediaEncryptedEvent;
4646    createEvent(eventInterface: "MediaKeyMessageEvent"): MediaKeyMessageEvent;
4647    createEvent(eventInterface: "MediaQueryListEvent"): MediaQueryListEvent;
4648    createEvent(eventInterface: "MediaStreamTrackEvent"): MediaStreamTrackEvent;
4649    createEvent(eventInterface: "MessageEvent"): MessageEvent;
4650    createEvent(eventInterface: "MouseEvent"): MouseEvent;
4651    createEvent(eventInterface: "MouseEvents"): MouseEvent;
4652    createEvent(eventInterface: "MutationEvent"): MutationEvent;
4653    createEvent(eventInterface: "MutationEvents"): MutationEvent;
4654    createEvent(eventInterface: "OfflineAudioCompletionEvent"): OfflineAudioCompletionEvent;
4655    createEvent(eventInterface: "PageTransitionEvent"): PageTransitionEvent;
4656    createEvent(eventInterface: "PaymentMethodChangeEvent"): PaymentMethodChangeEvent;
4657    createEvent(eventInterface: "PaymentRequestUpdateEvent"): PaymentRequestUpdateEvent;
4658    createEvent(eventInterface: "PictureInPictureEvent"): PictureInPictureEvent;
4659    createEvent(eventInterface: "PointerEvent"): PointerEvent;
4660    createEvent(eventInterface: "PopStateEvent"): PopStateEvent;
4661    createEvent(eventInterface: "ProgressEvent"): ProgressEvent;
4662    createEvent(eventInterface: "PromiseRejectionEvent"): PromiseRejectionEvent;
4663    createEvent(eventInterface: "RTCDTMFToneChangeEvent"): RTCDTMFToneChangeEvent;
4664    createEvent(eventInterface: "RTCDataChannelEvent"): RTCDataChannelEvent;
4665    createEvent(eventInterface: "RTCErrorEvent"): RTCErrorEvent;
4666    createEvent(eventInterface: "RTCPeerConnectionIceErrorEvent"): RTCPeerConnectionIceErrorEvent;
4667    createEvent(eventInterface: "RTCPeerConnectionIceEvent"): RTCPeerConnectionIceEvent;
4668    createEvent(eventInterface: "RTCTrackEvent"): RTCTrackEvent;
4669    createEvent(eventInterface: "SecurityPolicyViolationEvent"): SecurityPolicyViolationEvent;
4670    createEvent(eventInterface: "SpeechSynthesisErrorEvent"): SpeechSynthesisErrorEvent;
4671    createEvent(eventInterface: "SpeechSynthesisEvent"): SpeechSynthesisEvent;
4672    createEvent(eventInterface: "StorageEvent"): StorageEvent;
4673    createEvent(eventInterface: "SubmitEvent"): SubmitEvent;
4674    createEvent(eventInterface: "TouchEvent"): TouchEvent;
4675    createEvent(eventInterface: "TrackEvent"): TrackEvent;
4676    createEvent(eventInterface: "TransitionEvent"): TransitionEvent;
4677    createEvent(eventInterface: "UIEvent"): UIEvent;
4678    createEvent(eventInterface: "UIEvents"): UIEvent;
4679    createEvent(eventInterface: "WebGLContextEvent"): WebGLContextEvent;
4680    createEvent(eventInterface: "WheelEvent"): WheelEvent;
4681    createEvent(eventInterface: string): Event;
4682    /**
4683     * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.
4684     * @param root The root element or node to start traversing on.
4685     * @param whatToShow The type of nodes or elements to appear in the node list
4686     * @param filter A custom NodeFilter function to use. For more information, see filter. Use null for no filter.
4687     */
4688    createNodeIterator(root: Node, whatToShow?: number, filter?: NodeFilter | null): NodeIterator;
4689    /** 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. */
4690    createProcessingInstruction(target: string, data: string): ProcessingInstruction;
4691    /**  Returns an empty range object that has both of its boundary points positioned at the beginning of the document. */
4692    createRange(): Range;
4693    /**
4694     * Creates a text string from the specified value.
4695     * @param data String that specifies the nodeValue property of the text node.
4696     */
4697    createTextNode(data: string): Text;
4698    /**
4699     * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document.
4700     * @param root The root element or node to start traversing on.
4701     * @param whatToShow The type of nodes or elements to appear in the node list. For more information, see whatToShow.
4702     * @param filter A custom NodeFilter function to use.
4703     */
4704    createTreeWalker(root: Node, whatToShow?: number, filter?: NodeFilter | null): TreeWalker;
4705    /**
4706     * Executes a command on the current document, current selection, or the given range.
4707     * @param commandId String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
4708     * @param showUI Display the user interface, defaults to false.
4709     * @param value Value to assign.
4710     * @deprecated
4711     */
4712    execCommand(commandId: string, showUI?: boolean, value?: string): boolean;
4713    /** Stops document's fullscreen element from being displayed fullscreen and resolves promise when done. */
4714    exitFullscreen(): Promise<void>;
4715    exitPictureInPicture(): Promise<void>;
4716    exitPointerLock(): void;
4717    /**
4718     * Returns a reference to the first object with the specified value of the ID attribute.
4719     * @param elementId String that specifies the ID value.
4720     */
4721    getElementById(elementId: string): HTMLElement | null;
4722    /** 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. */
4723    getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;
4724    /**
4725     * Gets a collection of objects based on the value of the NAME or ID attribute.
4726     * @param elementName Gets a collection of objects based on the value of the NAME or ID attribute.
4727     */
4728    getElementsByName(elementName: string): NodeListOf<HTMLElement>;
4729    /**
4730     * Retrieves a collection of objects based on the specified element name.
4731     * @param name Specifies the name of an element.
4732     */
4733    getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;
4734    getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;
4735    getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;
4736    /**
4737     * If namespace and localName are "*" returns a HTMLCollection of all descendant elements.
4738     *
4739     * If only namespace is "*" returns a HTMLCollection of all descendant elements whose local name is localName.
4740     *
4741     * If only localName is "*" returns a HTMLCollection of all descendant elements whose namespace is namespace.
4742     *
4743     * Otherwise, returns a HTMLCollection of all descendant elements whose namespace is namespace and local name is localName.
4744     */
4745    getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf<HTMLElement>;
4746    getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf<SVGElement>;
4747    getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf<Element>;
4748    /** Returns an object representing the current selection of the document that is loaded into the object displaying a webpage. */
4749    getSelection(): Selection | null;
4750    /** Gets a value indicating whether the object currently has focus. */
4751    hasFocus(): boolean;
4752    hasStorageAccess(): Promise<boolean>;
4753    /**
4754     * Returns a copy of node. If deep is true, the copy also includes the node's descendants.
4755     *
4756     * If node is a document or a shadow root, throws a "NotSupportedError" DOMException.
4757     */
4758    importNode<T extends Node>(node: T, deep?: boolean): T;
4759    /**
4760     * 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.
4761     * @param url Specifies a MIME type for the document.
4762     * @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.
4763     * @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.
4764     * @param replace Specifies whether the existing entry for the document is replaced in the history list.
4765     */
4766    open(unused1?: string, unused2?: string): Document;
4767    open(url: string | URL, name: string, features: string): WindowProxy | null;
4768    /**
4769     * Returns a Boolean value that indicates whether a specified command can be successfully executed using execCommand, given the current state of the document.
4770     * @param commandId Specifies a command identifier.
4771     * @deprecated
4772     */
4773    queryCommandEnabled(commandId: string): boolean;
4774    /**
4775     * Returns a Boolean value that indicates whether the specified command is in the indeterminate state.
4776     * @param commandId String that specifies a command identifier.
4777     * @deprecated
4778     */
4779    queryCommandIndeterm(commandId: string): boolean;
4780    /**
4781     * Returns a Boolean value that indicates the current state of the command.
4782     * @param commandId String that specifies a command identifier.
4783     * @deprecated
4784     */
4785    queryCommandState(commandId: string): boolean;
4786    /**
4787     * Returns a Boolean value that indicates whether the current command is supported on the current range.
4788     * @param commandId Specifies a command identifier.
4789     * @deprecated
4790     */
4791    queryCommandSupported(commandId: string): boolean;
4792    /**
4793     * Returns the current value of the document, range, or current selection for the given command.
4794     * @param commandId String that specifies a command identifier.
4795     * @deprecated
4796     */
4797    queryCommandValue(commandId: string): string;
4798    /** @deprecated */
4799    releaseEvents(): void;
4800    requestStorageAccess(): Promise<void>;
4801    /**
4802     * Writes one or more HTML expressions to a document in the specified window.
4803     * @param content Specifies the text and HTML tags to write.
4804     */
4805    write(...text: string[]): void;
4806    /**
4807     * Writes one or more HTML expressions, followed by a carriage return, to a document in the specified window.
4808     * @param content The text and HTML tags to write.
4809     */
4810    writeln(...text: string[]): void;
4811    addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4812    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4813    removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4814    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
4815}
4816
4817declare var Document: {
4818    prototype: Document;
4819    new(): Document;
4820};
4821
4822interface DocumentAndElementEventHandlersEventMap {
4823    "copy": ClipboardEvent;
4824    "cut": ClipboardEvent;
4825    "paste": ClipboardEvent;
4826}
4827
4828interface DocumentAndElementEventHandlers {
4829    oncopy: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;
4830    oncut: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;
4831    onpaste: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;
4832    addEventListener<K extends keyof DocumentAndElementEventHandlersEventMap>(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4833    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4834    removeEventListener<K extends keyof DocumentAndElementEventHandlersEventMap>(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4835    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
4836}
4837
4838/** 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. */
4839interface DocumentFragment extends Node, NonElementParentNode, ParentNode {
4840    readonly ownerDocument: Document;
4841    getElementById(elementId: string): HTMLElement | null;
4842}
4843
4844declare var DocumentFragment: {
4845    prototype: DocumentFragment;
4846    new(): DocumentFragment;
4847};
4848
4849interface DocumentOrShadowRoot {
4850    /**
4851     * Returns the deepest element in the document through which or to which key events are being routed. This is, roughly speaking, the focused element in the document.
4852     *
4853     * For the purposes of this API, when a child browsing context is focused, its container is focused in the parent browsing context. For example, if the user moves the focus to a text control in an iframe, the iframe is the element returned by the activeElement API in the iframe's node document.
4854     *
4855     * Similarly, when the focused element is in a different node tree than documentOrShadowRoot, the element returned will be the host that's located in the same node tree as documentOrShadowRoot if documentOrShadowRoot is a shadow-including inclusive ancestor of the focused element, and null if not.
4856     */
4857    readonly activeElement: Element | null;
4858    adoptedStyleSheets: CSSStyleSheet[];
4859    /** Returns document's fullscreen element. */
4860    readonly fullscreenElement: Element | null;
4861    readonly pictureInPictureElement: Element | null;
4862    readonly pointerLockElement: Element | null;
4863    /** Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document. */
4864    readonly styleSheets: StyleSheetList;
4865    /**
4866     * Returns the element for the specified x coordinate and the specified y coordinate.
4867     * @param x The x-offset
4868     * @param y The y-offset
4869     */
4870    elementFromPoint(x: number, y: number): Element | null;
4871    elementsFromPoint(x: number, y: number): Element[];
4872    getAnimations(): Animation[];
4873}
4874
4875interface DocumentTimeline extends AnimationTimeline {
4876}
4877
4878declare var DocumentTimeline: {
4879    prototype: DocumentTimeline;
4880    new(options?: DocumentTimelineOptions): DocumentTimeline;
4881};
4882
4883/** A Node containing a doctype. */
4884interface DocumentType extends Node, ChildNode {
4885    readonly name: string;
4886    readonly ownerDocument: Document;
4887    readonly publicId: string;
4888    readonly systemId: string;
4889}
4890
4891declare var DocumentType: {
4892    prototype: DocumentType;
4893    new(): DocumentType;
4894};
4895
4896/** 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. */
4897interface DragEvent extends MouseEvent {
4898    /** Returns the DataTransfer object for the event. */
4899    readonly dataTransfer: DataTransfer | null;
4900}
4901
4902declare var DragEvent: {
4903    prototype: DragEvent;
4904    new(type: string, eventInitDict?: DragEventInit): DragEvent;
4905};
4906
4907/** Inherits properties from its parent, AudioNode. */
4908interface DynamicsCompressorNode extends AudioNode {
4909    readonly attack: AudioParam;
4910    readonly knee: AudioParam;
4911    readonly ratio: AudioParam;
4912    readonly reduction: number;
4913    readonly release: AudioParam;
4914    readonly threshold: AudioParam;
4915}
4916
4917declare var DynamicsCompressorNode: {
4918    prototype: DynamicsCompressorNode;
4919    new(context: BaseAudioContext, options?: DynamicsCompressorOptions): DynamicsCompressorNode;
4920};
4921
4922interface EXT_blend_minmax {
4923    readonly MAX_EXT: GLenum;
4924    readonly MIN_EXT: GLenum;
4925}
4926
4927interface EXT_color_buffer_float {
4928}
4929
4930interface EXT_color_buffer_half_float {
4931    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: GLenum;
4932    readonly RGB16F_EXT: GLenum;
4933    readonly RGBA16F_EXT: GLenum;
4934    readonly UNSIGNED_NORMALIZED_EXT: GLenum;
4935}
4936
4937interface EXT_float_blend {
4938}
4939
4940/** 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. */
4941interface EXT_frag_depth {
4942}
4943
4944interface EXT_sRGB {
4945    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: GLenum;
4946    readonly SRGB8_ALPHA8_EXT: GLenum;
4947    readonly SRGB_ALPHA_EXT: GLenum;
4948    readonly SRGB_EXT: GLenum;
4949}
4950
4951interface EXT_shader_texture_lod {
4952}
4953
4954interface EXT_texture_compression_bptc {
4955    readonly COMPRESSED_RGBA_BPTC_UNORM_EXT: GLenum;
4956    readonly COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: GLenum;
4957    readonly COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: GLenum;
4958    readonly COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: GLenum;
4959}
4960
4961interface EXT_texture_compression_rgtc {
4962    readonly COMPRESSED_RED_GREEN_RGTC2_EXT: GLenum;
4963    readonly COMPRESSED_RED_RGTC1_EXT: GLenum;
4964    readonly COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: GLenum;
4965    readonly COMPRESSED_SIGNED_RED_RGTC1_EXT: GLenum;
4966}
4967
4968/** The EXT_texture_filter_anisotropic extension is part of the WebGL API and exposes two constants for anisotropic filtering (AF). */
4969interface EXT_texture_filter_anisotropic {
4970    readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: GLenum;
4971    readonly TEXTURE_MAX_ANISOTROPY_EXT: GLenum;
4972}
4973
4974interface EXT_texture_norm16 {
4975    readonly R16_EXT: GLenum;
4976    readonly R16_SNORM_EXT: GLenum;
4977    readonly RG16_EXT: GLenum;
4978    readonly RG16_SNORM_EXT: GLenum;
4979    readonly RGB16_EXT: GLenum;
4980    readonly RGB16_SNORM_EXT: GLenum;
4981    readonly RGBA16_EXT: GLenum;
4982    readonly RGBA16_SNORM_EXT: GLenum;
4983}
4984
4985interface ElementEventMap {
4986    "fullscreenchange": Event;
4987    "fullscreenerror": Event;
4988}
4989
4990/** 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. */
4991interface Element extends Node, ARIAMixin, Animatable, ChildNode, InnerHTML, NonDocumentTypeChildNode, ParentNode, Slottable {
4992    readonly attributes: NamedNodeMap;
4993    /** Allows for manipulation of element's class content attribute as a set of whitespace-separated tokens through a DOMTokenList object. */
4994    readonly classList: DOMTokenList;
4995    /** Returns the value of element's class content attribute. Can be set to change it. */
4996    className: string;
4997    readonly clientHeight: number;
4998    readonly clientLeft: number;
4999    readonly clientTop: number;
5000    readonly clientWidth: number;
5001    /** Returns the value of element's id content attribute. Can be set to change it. */
5002    id: string;
5003    /** Returns the local name. */
5004    readonly localName: string;
5005    /** Returns the namespace. */
5006    readonly namespaceURI: string | null;
5007    onfullscreenchange: ((this: Element, ev: Event) => any) | null;
5008    onfullscreenerror: ((this: Element, ev: Event) => any) | null;
5009    outerHTML: string;
5010    readonly ownerDocument: Document;
5011    readonly part: DOMTokenList;
5012    /** Returns the namespace prefix. */
5013    readonly prefix: string | null;
5014    readonly scrollHeight: number;
5015    scrollLeft: number;
5016    scrollTop: number;
5017    readonly scrollWidth: number;
5018    /** Returns element's shadow root, if any, and if shadow root's mode is "open", and null otherwise. */
5019    readonly shadowRoot: ShadowRoot | null;
5020    /** Returns the value of element's slot content attribute. Can be set to change it. */
5021    slot: string;
5022    /** Returns the HTML-uppercased qualified name. */
5023    readonly tagName: string;
5024    /** Creates a shadow root for element and returns it. */
5025    attachShadow(init: ShadowRootInit): ShadowRoot;
5026    /** Returns the first (starting at element) inclusive ancestor that matches selectors, and null otherwise. */
5027    closest<K extends keyof HTMLElementTagNameMap>(selector: K): HTMLElementTagNameMap[K] | null;
5028    closest<K extends keyof SVGElementTagNameMap>(selector: K): SVGElementTagNameMap[K] | null;
5029    closest<E extends Element = Element>(selectors: string): E | null;
5030    /** Returns element's first attribute whose qualified name is qualifiedName, and null if there is no such attribute otherwise. */
5031    getAttribute(qualifiedName: string): string | null;
5032    /** Returns element's attribute whose namespace is namespace and local name is localName, and null if there is no such attribute otherwise. */
5033    getAttributeNS(namespace: string | null, localName: string): string | null;
5034    /** Returns the qualified names of all element's attributes. Can contain duplicates. */
5035    getAttributeNames(): string[];
5036    getAttributeNode(qualifiedName: string): Attr | null;
5037    getAttributeNodeNS(namespace: string | null, localName: string): Attr | null;
5038    getBoundingClientRect(): DOMRect;
5039    getClientRects(): DOMRectList;
5040    /** 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. */
5041    getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;
5042    getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;
5043    getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;
5044    getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;
5045    getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf<HTMLElement>;
5046    getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf<SVGElement>;
5047    getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf<Element>;
5048    /** Returns true if element has an attribute whose qualified name is qualifiedName, and false otherwise. */
5049    hasAttribute(qualifiedName: string): boolean;
5050    /** Returns true if element has an attribute whose namespace is namespace and local name is localName. */
5051    hasAttributeNS(namespace: string | null, localName: string): boolean;
5052    /** Returns true if element has attributes, and false otherwise. */
5053    hasAttributes(): boolean;
5054    hasPointerCapture(pointerId: number): boolean;
5055    insertAdjacentElement(where: InsertPosition, element: Element): Element | null;
5056    insertAdjacentHTML(position: InsertPosition, text: string): void;
5057    insertAdjacentText(where: InsertPosition, data: string): void;
5058    /** Returns true if matching selectors against element's root yields element, and false otherwise. */
5059    matches(selectors: string): boolean;
5060    releasePointerCapture(pointerId: number): void;
5061    /** Removes element's first attribute whose qualified name is qualifiedName. */
5062    removeAttribute(qualifiedName: string): void;
5063    /** Removes element's attribute whose namespace is namespace and local name is localName. */
5064    removeAttributeNS(namespace: string | null, localName: string): void;
5065    removeAttributeNode(attr: Attr): Attr;
5066    /**
5067     * Displays element fullscreen and resolves promise when done.
5068     *
5069     * 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.
5070     */
5071    requestFullscreen(options?: FullscreenOptions): Promise<void>;
5072    requestPointerLock(): void;
5073    scroll(options?: ScrollToOptions): void;
5074    scroll(x: number, y: number): void;
5075    scrollBy(options?: ScrollToOptions): void;
5076    scrollBy(x: number, y: number): void;
5077    scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void;
5078    scrollTo(options?: ScrollToOptions): void;
5079    scrollTo(x: number, y: number): void;
5080    /** Sets the value of element's first attribute whose qualified name is qualifiedName to value. */
5081    setAttribute(qualifiedName: string, value: string): void;
5082    /** Sets the value of element's attribute whose namespace is namespace and local name is localName to value. */
5083    setAttributeNS(namespace: string | null, qualifiedName: string, value: string): void;
5084    setAttributeNode(attr: Attr): Attr | null;
5085    setAttributeNodeNS(attr: Attr): Attr | null;
5086    setPointerCapture(pointerId: number): void;
5087    /**
5088     * 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.
5089     *
5090     * Returns true if qualifiedName is now present, and false otherwise.
5091     */
5092    toggleAttribute(qualifiedName: string, force?: boolean): boolean;
5093    /** @deprecated This is a legacy alias of `matches`. */
5094    webkitMatchesSelector(selectors: string): boolean;
5095    addEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5096    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5097    removeEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5098    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5099}
5100
5101declare var Element: {
5102    prototype: Element;
5103    new(): Element;
5104};
5105
5106interface ElementCSSInlineStyle {
5107    readonly style: CSSStyleDeclaration;
5108}
5109
5110interface ElementContentEditable {
5111    contentEditable: string;
5112    enterKeyHint: string;
5113    inputMode: string;
5114    readonly isContentEditable: boolean;
5115}
5116
5117interface ElementInternals extends ARIAMixin {
5118    /** Returns the form owner of internals's target element. */
5119    readonly form: HTMLFormElement | null;
5120    /** Returns a NodeList of all the label elements that internals's target element is associated with. */
5121    readonly labels: NodeList;
5122    /** Returns the ShadowRoot for internals's target element, if the target element is a shadow host, or null otherwise. */
5123    readonly shadowRoot: ShadowRoot | null;
5124    /** Returns the error message that would be shown to the user if internals's target element was to be checked for validity. */
5125    readonly validationMessage: string;
5126    /** Returns the ValidityState object for internals's target element. */
5127    readonly validity: ValidityState;
5128    /** Returns true if internals's target element will be validated when the form is submitted; false otherwise. */
5129    readonly willValidate: boolean;
5130    /** Returns true if internals's target element has no validity problems; false otherwise. Fires an invalid event at the element in the latter case. */
5131    checkValidity(): boolean;
5132    /** Returns true if internals's target element has no validity problems; otherwise, returns false, fires an invalid event at the element, and (if the event isn't canceled) reports the problem to the user. */
5133    reportValidity(): boolean;
5134    /**
5135     * Sets both the state and submission value of internals's target element to value.
5136     *
5137     * If value is null, the element won't participate in form submission.
5138     */
5139    setFormValue(value: File | string | FormData | null, state?: File | string | FormData | null): void;
5140    /** Marks internals's target element as suffering from the constraints indicated by the flags argument, and sets the element's validation message to message. If anchor is specified, the user agent might use it to indicate problems with the constraints of internals's target element when the form owner is validated interactively or reportValidity() is called. */
5141    setValidity(flags?: ValidityStateFlags, message?: string, anchor?: HTMLElement): void;
5142}
5143
5144declare var ElementInternals: {
5145    prototype: ElementInternals;
5146    new(): ElementInternals;
5147};
5148
5149/** Events providing information related to errors in scripts or in files. */
5150interface ErrorEvent extends Event {
5151    readonly colno: number;
5152    readonly error: any;
5153    readonly filename: string;
5154    readonly lineno: number;
5155    readonly message: string;
5156}
5157
5158declare var ErrorEvent: {
5159    prototype: ErrorEvent;
5160    new(type: string, eventInitDict?: ErrorEventInit): ErrorEvent;
5161};
5162
5163/** An event which takes place in the DOM. */
5164interface Event {
5165    /** 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. */
5166    readonly bubbles: boolean;
5167    /** @deprecated */
5168    cancelBubble: boolean;
5169    /** 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. */
5170    readonly cancelable: boolean;
5171    /** 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. */
5172    readonly composed: boolean;
5173    /** Returns the object whose event listener's callback is currently being invoked. */
5174    readonly currentTarget: EventTarget | null;
5175    /** Returns true if preventDefault() was invoked successfully to indicate cancelation, and false otherwise. */
5176    readonly defaultPrevented: boolean;
5177    /** Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET, and BUBBLING_PHASE. */
5178    readonly eventPhase: number;
5179    /** Returns true if event was dispatched by the user agent, and false otherwise. */
5180    readonly isTrusted: boolean;
5181    /** @deprecated */
5182    returnValue: boolean;
5183    /** @deprecated */
5184    readonly srcElement: EventTarget | null;
5185    /** Returns the object to which event is dispatched (its target). */
5186    readonly target: EventTarget | null;
5187    /** Returns the event's timestamp as the number of milliseconds measured relative to the time origin. */
5188    readonly timeStamp: DOMHighResTimeStamp;
5189    /** Returns the type of event, e.g. "click", "hashchange", or "submit". */
5190    readonly type: string;
5191    /** 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. */
5192    composedPath(): EventTarget[];
5193    /** @deprecated */
5194    initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;
5195    /** 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. */
5196    preventDefault(): void;
5197    /** 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. */
5198    stopImmediatePropagation(): void;
5199    /** When dispatched in a tree, invoking this method prevents event from reaching any objects other than the current object. */
5200    stopPropagation(): void;
5201    readonly AT_TARGET: number;
5202    readonly BUBBLING_PHASE: number;
5203    readonly CAPTURING_PHASE: number;
5204    readonly NONE: number;
5205}
5206
5207declare var Event: {
5208    prototype: Event;
5209    new(type: string, eventInitDict?: EventInit): Event;
5210    readonly AT_TARGET: number;
5211    readonly BUBBLING_PHASE: number;
5212    readonly CAPTURING_PHASE: number;
5213    readonly NONE: number;
5214};
5215
5216interface EventCounts {
5217    forEach(callbackfn: (value: number, key: string, parent: EventCounts) => void, thisArg?: any): void;
5218}
5219
5220declare var EventCounts: {
5221    prototype: EventCounts;
5222    new(): EventCounts;
5223};
5224
5225interface EventListener {
5226    (evt: Event): void;
5227}
5228
5229interface EventListenerObject {
5230    handleEvent(object: Event): void;
5231}
5232
5233interface EventSourceEventMap {
5234    "error": Event;
5235    "message": MessageEvent;
5236    "open": Event;
5237}
5238
5239interface EventSource extends EventTarget {
5240    onerror: ((this: EventSource, ev: Event) => any) | null;
5241    onmessage: ((this: EventSource, ev: MessageEvent) => any) | null;
5242    onopen: ((this: EventSource, ev: Event) => any) | null;
5243    /** Returns the state of this EventSource object's connection. It can have the values described below. */
5244    readonly readyState: number;
5245    /** Returns the URL providing the event stream. */
5246    readonly url: string;
5247    /** Returns true if the credentials mode for connection requests to the URL providing the event stream is set to "include", and false otherwise. */
5248    readonly withCredentials: boolean;
5249    /** Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED. */
5250    close(): void;
5251    readonly CLOSED: number;
5252    readonly CONNECTING: number;
5253    readonly OPEN: number;
5254    addEventListener<K extends keyof EventSourceEventMap>(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5255    addEventListener(type: string, listener: (this: EventSource, event: MessageEvent) => any, options?: boolean | AddEventListenerOptions): void;
5256    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5257    removeEventListener<K extends keyof EventSourceEventMap>(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5258    removeEventListener(type: string, listener: (this: EventSource, event: MessageEvent) => any, options?: boolean | EventListenerOptions): void;
5259    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5260}
5261
5262declare var EventSource: {
5263    prototype: EventSource;
5264    new(url: string | URL, eventSourceInitDict?: EventSourceInit): EventSource;
5265    readonly CLOSED: number;
5266    readonly CONNECTING: number;
5267    readonly OPEN: number;
5268};
5269
5270/** EventTarget is a DOM interface implemented by objects that can receive events and may have listeners for them. */
5271interface EventTarget {
5272    /**
5273     * 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.
5274     *
5275     * 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.
5276     *
5277     * 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.
5278     *
5279     * 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.
5280     *
5281     * When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.
5282     *
5283     * If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.
5284     *
5285     * The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
5286     */
5287    addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: AddEventListenerOptions | boolean): void;
5288    /** 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. */
5289    dispatchEvent(event: Event): boolean;
5290    /** Removes the event listener in target's event listener list with the same type, callback, and options. */
5291    removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;
5292}
5293
5294declare var EventTarget: {
5295    prototype: EventTarget;
5296    new(): EventTarget;
5297};
5298
5299/** @deprecated */
5300interface External {
5301    /** @deprecated */
5302    AddSearchProvider(): void;
5303    /** @deprecated */
5304    IsSearchProviderInstalled(): void;
5305}
5306
5307/** @deprecated */
5308declare var External: {
5309    prototype: External;
5310    new(): External;
5311};
5312
5313/** Provides information about files and allows JavaScript in a web page to access their content. */
5314interface File extends Blob {
5315    readonly lastModified: number;
5316    readonly name: string;
5317    readonly webkitRelativePath: string;
5318}
5319
5320declare var File: {
5321    prototype: File;
5322    new(fileBits: BlobPart[], fileName: string, options?: FilePropertyBag): File;
5323};
5324
5325/** 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. */
5326interface FileList {
5327    readonly length: number;
5328    item(index: number): File | null;
5329    [index: number]: File;
5330}
5331
5332declare var FileList: {
5333    prototype: FileList;
5334    new(): FileList;
5335};
5336
5337interface FileReaderEventMap {
5338    "abort": ProgressEvent<FileReader>;
5339    "error": ProgressEvent<FileReader>;
5340    "load": ProgressEvent<FileReader>;
5341    "loadend": ProgressEvent<FileReader>;
5342    "loadstart": ProgressEvent<FileReader>;
5343    "progress": ProgressEvent<FileReader>;
5344}
5345
5346/** 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. */
5347interface FileReader extends EventTarget {
5348    readonly error: DOMException | null;
5349    onabort: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5350    onerror: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5351    onload: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5352    onloadend: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5353    onloadstart: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5354    onprogress: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5355    readonly readyState: number;
5356    readonly result: string | ArrayBuffer | null;
5357    abort(): void;
5358    readAsArrayBuffer(blob: Blob): void;
5359    readAsBinaryString(blob: Blob): void;
5360    readAsDataURL(blob: Blob): void;
5361    readAsText(blob: Blob, encoding?: string): void;
5362    readonly DONE: number;
5363    readonly EMPTY: number;
5364    readonly LOADING: number;
5365    addEventListener<K extends keyof FileReaderEventMap>(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5366    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5367    removeEventListener<K extends keyof FileReaderEventMap>(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5368    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5369}
5370
5371declare var FileReader: {
5372    prototype: FileReader;
5373    new(): FileReader;
5374    readonly DONE: number;
5375    readonly EMPTY: number;
5376    readonly LOADING: number;
5377};
5378
5379interface FileSystem {
5380    readonly name: string;
5381    readonly root: FileSystemDirectoryEntry;
5382}
5383
5384declare var FileSystem: {
5385    prototype: FileSystem;
5386    new(): FileSystem;
5387};
5388
5389interface FileSystemDirectoryEntry extends FileSystemEntry {
5390    createReader(): FileSystemDirectoryReader;
5391    getDirectory(path?: string | null, options?: FileSystemFlags, successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;
5392    getFile(path?: string | null, options?: FileSystemFlags, successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;
5393}
5394
5395declare var FileSystemDirectoryEntry: {
5396    prototype: FileSystemDirectoryEntry;
5397    new(): FileSystemDirectoryEntry;
5398};
5399
5400/** Available only in secure contexts. */
5401interface FileSystemDirectoryHandle extends FileSystemHandle {
5402    readonly kind: "directory";
5403    getDirectoryHandle(name: string, options?: FileSystemGetDirectoryOptions): Promise<FileSystemDirectoryHandle>;
5404    getFileHandle(name: string, options?: FileSystemGetFileOptions): Promise<FileSystemFileHandle>;
5405    removeEntry(name: string, options?: FileSystemRemoveOptions): Promise<void>;
5406    resolve(possibleDescendant: FileSystemHandle): Promise<string[] | null>;
5407}
5408
5409declare var FileSystemDirectoryHandle: {
5410    prototype: FileSystemDirectoryHandle;
5411    new(): FileSystemDirectoryHandle;
5412};
5413
5414interface FileSystemDirectoryReader {
5415    readEntries(successCallback: FileSystemEntriesCallback, errorCallback?: ErrorCallback): void;
5416}
5417
5418declare var FileSystemDirectoryReader: {
5419    prototype: FileSystemDirectoryReader;
5420    new(): FileSystemDirectoryReader;
5421};
5422
5423interface FileSystemEntry {
5424    readonly filesystem: FileSystem;
5425    readonly fullPath: string;
5426    readonly isDirectory: boolean;
5427    readonly isFile: boolean;
5428    readonly name: string;
5429    getParent(successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;
5430}
5431
5432declare var FileSystemEntry: {
5433    prototype: FileSystemEntry;
5434    new(): FileSystemEntry;
5435};
5436
5437interface FileSystemFileEntry extends FileSystemEntry {
5438    file(successCallback: FileCallback, errorCallback?: ErrorCallback): void;
5439}
5440
5441declare var FileSystemFileEntry: {
5442    prototype: FileSystemFileEntry;
5443    new(): FileSystemFileEntry;
5444};
5445
5446/** Available only in secure contexts. */
5447interface FileSystemFileHandle extends FileSystemHandle {
5448    readonly kind: "file";
5449    getFile(): Promise<File>;
5450}
5451
5452declare var FileSystemFileHandle: {
5453    prototype: FileSystemFileHandle;
5454    new(): FileSystemFileHandle;
5455};
5456
5457/** Available only in secure contexts. */
5458interface FileSystemHandle {
5459    readonly kind: FileSystemHandleKind;
5460    readonly name: string;
5461    isSameEntry(other: FileSystemHandle): Promise<boolean>;
5462}
5463
5464declare var FileSystemHandle: {
5465    prototype: FileSystemHandle;
5466    new(): FileSystemHandle;
5467};
5468
5469/** Focus-related events like focus, blur, focusin, or focusout. */
5470interface FocusEvent extends UIEvent {
5471    readonly relatedTarget: EventTarget | null;
5472}
5473
5474declare var FocusEvent: {
5475    prototype: FocusEvent;
5476    new(type: string, eventInitDict?: FocusEventInit): FocusEvent;
5477};
5478
5479interface FontFace {
5480    ascentOverride: string;
5481    descentOverride: string;
5482    display: string;
5483    family: string;
5484    featureSettings: string;
5485    lineGapOverride: string;
5486    readonly loaded: Promise<FontFace>;
5487    readonly status: FontFaceLoadStatus;
5488    stretch: string;
5489    style: string;
5490    unicodeRange: string;
5491    variant: string;
5492    variationSettings: string;
5493    weight: string;
5494    load(): Promise<FontFace>;
5495}
5496
5497declare var FontFace: {
5498    prototype: FontFace;
5499    new(family: string, source: string | BinaryData, descriptors?: FontFaceDescriptors): FontFace;
5500};
5501
5502interface FontFaceSetEventMap {
5503    "loading": Event;
5504    "loadingdone": Event;
5505    "loadingerror": Event;
5506}
5507
5508interface FontFaceSet extends EventTarget {
5509    onloading: ((this: FontFaceSet, ev: Event) => any) | null;
5510    onloadingdone: ((this: FontFaceSet, ev: Event) => any) | null;
5511    onloadingerror: ((this: FontFaceSet, ev: Event) => any) | null;
5512    readonly ready: Promise<FontFaceSet>;
5513    readonly status: FontFaceSetLoadStatus;
5514    check(font: string, text?: string): boolean;
5515    load(font: string, text?: string): Promise<FontFace[]>;
5516    forEach(callbackfn: (value: FontFace, key: FontFace, parent: FontFaceSet) => void, thisArg?: any): void;
5517    addEventListener<K extends keyof FontFaceSetEventMap>(type: K, listener: (this: FontFaceSet, ev: FontFaceSetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5518    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5519    removeEventListener<K extends keyof FontFaceSetEventMap>(type: K, listener: (this: FontFaceSet, ev: FontFaceSetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5520    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5521}
5522
5523declare var FontFaceSet: {
5524    prototype: FontFaceSet;
5525    new(initialFaces: FontFace[]): FontFaceSet;
5526};
5527
5528interface FontFaceSetLoadEvent extends Event {
5529    readonly fontfaces: ReadonlyArray<FontFace>;
5530}
5531
5532declare var FontFaceSetLoadEvent: {
5533    prototype: FontFaceSetLoadEvent;
5534    new(type: string, eventInitDict?: FontFaceSetLoadEventInit): FontFaceSetLoadEvent;
5535};
5536
5537interface FontFaceSource {
5538    readonly fonts: FontFaceSet;
5539}
5540
5541/** 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". */
5542interface FormData {
5543    append(name: string, value: string | Blob, fileName?: string): void;
5544    delete(name: string): void;
5545    get(name: string): FormDataEntryValue | null;
5546    getAll(name: string): FormDataEntryValue[];
5547    has(name: string): boolean;
5548    set(name: string, value: string | Blob, fileName?: string): void;
5549    forEach(callbackfn: (value: FormDataEntryValue, key: string, parent: FormData) => void, thisArg?: any): void;
5550}
5551
5552declare var FormData: {
5553    prototype: FormData;
5554    new(form?: HTMLFormElement): FormData;
5555};
5556
5557interface FormDataEvent extends Event {
5558    /** Returns a FormData object representing names and values of elements associated to the target form. Operations on the FormData object will affect form data to be submitted. */
5559    readonly formData: FormData;
5560}
5561
5562declare var FormDataEvent: {
5563    prototype: FormDataEvent;
5564    new(type: string, eventInitDict: FormDataEventInit): FormDataEvent;
5565};
5566
5567/** 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. */
5568interface GainNode extends AudioNode {
5569    readonly gain: AudioParam;
5570}
5571
5572declare var GainNode: {
5573    prototype: GainNode;
5574    new(context: BaseAudioContext, options?: GainOptions): GainNode;
5575};
5576
5577/**
5578 * This Gamepad API interface defines an individual gamepad or other controller, allowing access to information such as button presses, axis positions, and id.
5579 * Available only in secure contexts.
5580 */
5581interface Gamepad {
5582    readonly axes: ReadonlyArray<number>;
5583    readonly buttons: ReadonlyArray<GamepadButton>;
5584    readonly connected: boolean;
5585    readonly hapticActuators: ReadonlyArray<GamepadHapticActuator>;
5586    readonly id: string;
5587    readonly index: number;
5588    readonly mapping: GamepadMappingType;
5589    readonly timestamp: DOMHighResTimeStamp;
5590}
5591
5592declare var Gamepad: {
5593    prototype: Gamepad;
5594    new(): Gamepad;
5595};
5596
5597/**
5598 * 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.
5599 * Available only in secure contexts.
5600 */
5601interface GamepadButton {
5602    readonly pressed: boolean;
5603    readonly touched: boolean;
5604    readonly value: number;
5605}
5606
5607declare var GamepadButton: {
5608    prototype: GamepadButton;
5609    new(): GamepadButton;
5610};
5611
5612/**
5613 * 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.
5614 * Available only in secure contexts.
5615 */
5616interface GamepadEvent extends Event {
5617    readonly gamepad: Gamepad;
5618}
5619
5620declare var GamepadEvent: {
5621    prototype: GamepadEvent;
5622    new(type: string, eventInitDict: GamepadEventInit): GamepadEvent;
5623};
5624
5625/** This Gamepad API interface represents hardware in the controller designed to provide haptic feedback to the user (if available), most commonly vibration hardware. */
5626interface GamepadHapticActuator {
5627    readonly type: GamepadHapticActuatorType;
5628}
5629
5630declare var GamepadHapticActuator: {
5631    prototype: GamepadHapticActuator;
5632    new(): GamepadHapticActuator;
5633};
5634
5635interface GenericTransformStream {
5636    readonly readable: ReadableStream;
5637    readonly writable: WritableStream;
5638}
5639
5640/** 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. */
5641interface Geolocation {
5642    clearWatch(watchId: number): void;
5643    getCurrentPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback | null, options?: PositionOptions): void;
5644    watchPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback | null, options?: PositionOptions): number;
5645}
5646
5647declare var Geolocation: {
5648    prototype: Geolocation;
5649    new(): Geolocation;
5650};
5651
5652/** Available only in secure contexts. */
5653interface GeolocationCoordinates {
5654    readonly accuracy: number;
5655    readonly altitude: number | null;
5656    readonly altitudeAccuracy: number | null;
5657    readonly heading: number | null;
5658    readonly latitude: number;
5659    readonly longitude: number;
5660    readonly speed: number | null;
5661}
5662
5663declare var GeolocationCoordinates: {
5664    prototype: GeolocationCoordinates;
5665    new(): GeolocationCoordinates;
5666};
5667
5668/** Available only in secure contexts. */
5669interface GeolocationPosition {
5670    readonly coords: GeolocationCoordinates;
5671    readonly timestamp: EpochTimeStamp;
5672}
5673
5674declare var GeolocationPosition: {
5675    prototype: GeolocationPosition;
5676    new(): GeolocationPosition;
5677};
5678
5679interface GeolocationPositionError {
5680    readonly code: number;
5681    readonly message: string;
5682    readonly PERMISSION_DENIED: number;
5683    readonly POSITION_UNAVAILABLE: number;
5684    readonly TIMEOUT: number;
5685}
5686
5687declare var GeolocationPositionError: {
5688    prototype: GeolocationPositionError;
5689    new(): GeolocationPositionError;
5690    readonly PERMISSION_DENIED: number;
5691    readonly POSITION_UNAVAILABLE: number;
5692    readonly TIMEOUT: number;
5693};
5694
5695interface GlobalEventHandlersEventMap {
5696    "abort": UIEvent;
5697    "animationcancel": AnimationEvent;
5698    "animationend": AnimationEvent;
5699    "animationiteration": AnimationEvent;
5700    "animationstart": AnimationEvent;
5701    "auxclick": MouseEvent;
5702    "beforeinput": InputEvent;
5703    "blur": FocusEvent;
5704    "cancel": Event;
5705    "canplay": Event;
5706    "canplaythrough": Event;
5707    "change": Event;
5708    "click": MouseEvent;
5709    "close": Event;
5710    "compositionend": CompositionEvent;
5711    "compositionstart": CompositionEvent;
5712    "compositionupdate": CompositionEvent;
5713    "contextmenu": MouseEvent;
5714    "cuechange": Event;
5715    "dblclick": MouseEvent;
5716    "drag": DragEvent;
5717    "dragend": DragEvent;
5718    "dragenter": DragEvent;
5719    "dragleave": DragEvent;
5720    "dragover": DragEvent;
5721    "dragstart": DragEvent;
5722    "drop": DragEvent;
5723    "durationchange": Event;
5724    "emptied": Event;
5725    "ended": Event;
5726    "error": ErrorEvent;
5727    "focus": FocusEvent;
5728    "focusin": FocusEvent;
5729    "focusout": FocusEvent;
5730    "formdata": FormDataEvent;
5731    "gotpointercapture": PointerEvent;
5732    "input": Event;
5733    "invalid": Event;
5734    "keydown": KeyboardEvent;
5735    "keypress": KeyboardEvent;
5736    "keyup": KeyboardEvent;
5737    "load": Event;
5738    "loadeddata": Event;
5739    "loadedmetadata": Event;
5740    "loadstart": Event;
5741    "lostpointercapture": PointerEvent;
5742    "mousedown": MouseEvent;
5743    "mouseenter": MouseEvent;
5744    "mouseleave": MouseEvent;
5745    "mousemove": MouseEvent;
5746    "mouseout": MouseEvent;
5747    "mouseover": MouseEvent;
5748    "mouseup": MouseEvent;
5749    "pause": Event;
5750    "play": Event;
5751    "playing": Event;
5752    "pointercancel": PointerEvent;
5753    "pointerdown": PointerEvent;
5754    "pointerenter": PointerEvent;
5755    "pointerleave": PointerEvent;
5756    "pointermove": PointerEvent;
5757    "pointerout": PointerEvent;
5758    "pointerover": PointerEvent;
5759    "pointerup": PointerEvent;
5760    "progress": ProgressEvent;
5761    "ratechange": Event;
5762    "reset": Event;
5763    "resize": UIEvent;
5764    "scroll": Event;
5765    "securitypolicyviolation": SecurityPolicyViolationEvent;
5766    "seeked": Event;
5767    "seeking": Event;
5768    "select": Event;
5769    "selectionchange": Event;
5770    "selectstart": Event;
5771    "slotchange": Event;
5772    "stalled": Event;
5773    "submit": SubmitEvent;
5774    "suspend": Event;
5775    "timeupdate": Event;
5776    "toggle": Event;
5777    "touchcancel": TouchEvent;
5778    "touchend": TouchEvent;
5779    "touchmove": TouchEvent;
5780    "touchstart": TouchEvent;
5781    "transitioncancel": TransitionEvent;
5782    "transitionend": TransitionEvent;
5783    "transitionrun": TransitionEvent;
5784    "transitionstart": TransitionEvent;
5785    "volumechange": Event;
5786    "waiting": Event;
5787    "webkitanimationend": Event;
5788    "webkitanimationiteration": Event;
5789    "webkitanimationstart": Event;
5790    "webkittransitionend": Event;
5791    "wheel": WheelEvent;
5792}
5793
5794interface GlobalEventHandlers {
5795    /**
5796     * Fires when the user aborts the download.
5797     * @param ev The event.
5798     */
5799    onabort: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
5800    onanimationcancel: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
5801    onanimationend: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
5802    onanimationiteration: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
5803    onanimationstart: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
5804    onauxclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5805    onbeforeinput: ((this: GlobalEventHandlers, ev: InputEvent) => any) | null;
5806    /**
5807     * Fires when the object loses the input focus.
5808     * @param ev The focus event.
5809     */
5810    onblur: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
5811    oncancel: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5812    /**
5813     * Occurs when playback is possible, but would require further buffering.
5814     * @param ev The event.
5815     */
5816    oncanplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5817    oncanplaythrough: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5818    /**
5819     * Fires when the contents of the object or selection have changed.
5820     * @param ev The event.
5821     */
5822    onchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5823    /**
5824     * Fires when the user clicks the left mouse button on the object
5825     * @param ev The mouse event.
5826     */
5827    onclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5828    onclose: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5829    /**
5830     * Fires when the user clicks the right mouse button in the client area, opening the context menu.
5831     * @param ev The mouse event.
5832     */
5833    oncontextmenu: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5834    oncuechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5835    /**
5836     * Fires when the user double-clicks the object.
5837     * @param ev The mouse event.
5838     */
5839    ondblclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5840    /**
5841     * Fires on the source object continuously during a drag operation.
5842     * @param ev The event.
5843     */
5844    ondrag: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5845    /**
5846     * Fires on the source object when the user releases the mouse at the close of a drag operation.
5847     * @param ev The event.
5848     */
5849    ondragend: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5850    /**
5851     * Fires on the target element when the user drags the object to a valid drop target.
5852     * @param ev The drag event.
5853     */
5854    ondragenter: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5855    /**
5856     * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation.
5857     * @param ev The drag event.
5858     */
5859    ondragleave: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5860    /**
5861     * Fires on the target element continuously while the user drags the object over a valid drop target.
5862     * @param ev The event.
5863     */
5864    ondragover: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5865    /**
5866     * Fires on the source object when the user starts to drag a text selection or selected object.
5867     * @param ev The event.
5868     */
5869    ondragstart: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5870    ondrop: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
5871    /**
5872     * Occurs when the duration attribute is updated.
5873     * @param ev The event.
5874     */
5875    ondurationchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5876    /**
5877     * Occurs when the media element is reset to its initial state.
5878     * @param ev The event.
5879     */
5880    onemptied: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5881    /**
5882     * Occurs when the end of playback is reached.
5883     * @param ev The event
5884     */
5885    onended: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5886    /**
5887     * Fires when an error occurs during object loading.
5888     * @param ev The event.
5889     */
5890    onerror: OnErrorEventHandler;
5891    /**
5892     * Fires when the object receives focus.
5893     * @param ev The event.
5894     */
5895    onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
5896    onformdata: ((this: GlobalEventHandlers, ev: FormDataEvent) => any) | null;
5897    ongotpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5898    oninput: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5899    oninvalid: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5900    /**
5901     * Fires when the user presses a key.
5902     * @param ev The keyboard event
5903     */
5904    onkeydown: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
5905    /**
5906     * Fires when the user presses an alphanumeric key.
5907     * @param ev The event.
5908     * @deprecated
5909     */
5910    onkeypress: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
5911    /**
5912     * Fires when the user releases a key.
5913     * @param ev The keyboard event
5914     */
5915    onkeyup: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
5916    /**
5917     * Fires immediately after the browser loads the object.
5918     * @param ev The event.
5919     */
5920    onload: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5921    /**
5922     * Occurs when media data is loaded at the current playback position.
5923     * @param ev The event.
5924     */
5925    onloadeddata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5926    /**
5927     * Occurs when the duration and dimensions of the media have been determined.
5928     * @param ev The event.
5929     */
5930    onloadedmetadata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5931    /**
5932     * Occurs when Internet Explorer begins looking for media data.
5933     * @param ev The event.
5934     */
5935    onloadstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5936    onlostpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5937    /**
5938     * Fires when the user clicks the object with either mouse button.
5939     * @param ev The mouse event.
5940     */
5941    onmousedown: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5942    onmouseenter: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5943    onmouseleave: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5944    /**
5945     * Fires when the user moves the mouse over the object.
5946     * @param ev The mouse event.
5947     */
5948    onmousemove: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5949    /**
5950     * Fires when the user moves the mouse pointer outside the boundaries of the object.
5951     * @param ev The mouse event.
5952     */
5953    onmouseout: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5954    /**
5955     * Fires when the user moves the mouse pointer into the object.
5956     * @param ev The mouse event.
5957     */
5958    onmouseover: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5959    /**
5960     * Fires when the user releases a mouse button while the mouse is over the object.
5961     * @param ev The mouse event.
5962     */
5963    onmouseup: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
5964    /**
5965     * Occurs when playback is paused.
5966     * @param ev The event.
5967     */
5968    onpause: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5969    /**
5970     * Occurs when the play method is requested.
5971     * @param ev The event.
5972     */
5973    onplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5974    /**
5975     * Occurs when the audio or video has started playing.
5976     * @param ev The event.
5977     */
5978    onplaying: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5979    onpointercancel: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5980    onpointerdown: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5981    onpointerenter: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5982    onpointerleave: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5983    onpointermove: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5984    onpointerout: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5985    onpointerover: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5986    onpointerup: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
5987    /**
5988     * Occurs to indicate progress while downloading media data.
5989     * @param ev The event.
5990     */
5991    onprogress: ((this: GlobalEventHandlers, ev: ProgressEvent) => any) | null;
5992    /**
5993     * Occurs when the playback rate is increased or decreased.
5994     * @param ev The event.
5995     */
5996    onratechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
5997    /**
5998     * Fires when the user resets a form.
5999     * @param ev The event.
6000     */
6001    onreset: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6002    onresize: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
6003    /**
6004     * Fires when the user repositions the scroll box in the scroll bar on the object.
6005     * @param ev The event.
6006     */
6007    onscroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6008    onsecuritypolicyviolation: ((this: GlobalEventHandlers, ev: SecurityPolicyViolationEvent) => any) | null;
6009    /**
6010     * Occurs when the seek operation ends.
6011     * @param ev The event.
6012     */
6013    onseeked: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6014    /**
6015     * Occurs when the current playback position is moved.
6016     * @param ev The event.
6017     */
6018    onseeking: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6019    /**
6020     * Fires when the current selection changes.
6021     * @param ev The event.
6022     */
6023    onselect: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6024    onselectionchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6025    onselectstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6026    onslotchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6027    /**
6028     * Occurs when the download has stopped.
6029     * @param ev The event.
6030     */
6031    onstalled: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6032    onsubmit: ((this: GlobalEventHandlers, ev: SubmitEvent) => any) | null;
6033    /**
6034     * Occurs if the load operation has been intentionally halted.
6035     * @param ev The event.
6036     */
6037    onsuspend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6038    /**
6039     * Occurs to indicate the current playback position.
6040     * @param ev The event.
6041     */
6042    ontimeupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6043    ontoggle: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6044    ontouchcancel?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
6045    ontouchend?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
6046    ontouchmove?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
6047    ontouchstart?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
6048    ontransitioncancel: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
6049    ontransitionend: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
6050    ontransitionrun: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
6051    ontransitionstart: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
6052    /**
6053     * Occurs when the volume is changed, or playback is muted or unmuted.
6054     * @param ev The event.
6055     */
6056    onvolumechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6057    /**
6058     * Occurs when playback stops because the next frame of a video resource is not available.
6059     * @param ev The event.
6060     */
6061    onwaiting: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6062    /** @deprecated This is a legacy alias of `onanimationend`. */
6063    onwebkitanimationend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6064    /** @deprecated This is a legacy alias of `onanimationiteration`. */
6065    onwebkitanimationiteration: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6066    /** @deprecated This is a legacy alias of `onanimationstart`. */
6067    onwebkitanimationstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6068    /** @deprecated This is a legacy alias of `ontransitionend`. */
6069    onwebkittransitionend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
6070    onwheel: ((this: GlobalEventHandlers, ev: WheelEvent) => any) | null;
6071    addEventListener<K extends keyof GlobalEventHandlersEventMap>(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6072    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6073    removeEventListener<K extends keyof GlobalEventHandlersEventMap>(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6074    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6075}
6076
6077interface HTMLAllCollection {
6078    /** Returns the number of elements in the collection. */
6079    readonly length: number;
6080    /** Returns the item with index index from the collection (determined by tree order). */
6081    item(nameOrIndex?: string): HTMLCollection | Element | null;
6082    /**
6083     * Returns the item with ID or name name from the collection.
6084     *
6085     * If there are multiple matching items, then an HTMLCollection object containing all those elements is returned.
6086     *
6087     * 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.
6088     */
6089    namedItem(name: string): HTMLCollection | Element | null;
6090    [index: number]: Element;
6091}
6092
6093declare var HTMLAllCollection: {
6094    prototype: HTMLAllCollection;
6095    new(): HTMLAllCollection;
6096};
6097
6098/** 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. */
6099interface HTMLAnchorElement extends HTMLElement, HTMLHyperlinkElementUtils {
6100    /**
6101     * Sets or retrieves the character set used to encode the object.
6102     * @deprecated
6103     */
6104    charset: string;
6105    /**
6106     * Sets or retrieves the coordinates of the object.
6107     * @deprecated
6108     */
6109    coords: string;
6110    download: string;
6111    /** Sets or retrieves the language code of the object. */
6112    hreflang: string;
6113    /**
6114     * Sets or retrieves the shape of the object.
6115     * @deprecated
6116     */
6117    name: string;
6118    ping: string;
6119    referrerPolicy: string;
6120    /** Sets or retrieves the relationship between the object and the destination of the link. */
6121    rel: string;
6122    readonly relList: DOMTokenList;
6123    /**
6124     * Sets or retrieves the relationship between the object and the destination of the link.
6125     * @deprecated
6126     */
6127    rev: string;
6128    /**
6129     * Sets or retrieves the shape of the object.
6130     * @deprecated
6131     */
6132    shape: string;
6133    /** Sets or retrieves the window or frame at which to target content. */
6134    target: string;
6135    /** Retrieves or sets the text of the object as a string. */
6136    text: string;
6137    type: string;
6138    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6139    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6140    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6141    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6142}
6143
6144declare var HTMLAnchorElement: {
6145    prototype: HTMLAnchorElement;
6146    new(): HTMLAnchorElement;
6147};
6148
6149/** 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. */
6150interface HTMLAreaElement extends HTMLElement, HTMLHyperlinkElementUtils {
6151    /** Sets or retrieves a text alternative to the graphic. */
6152    alt: string;
6153    /** Sets or retrieves the coordinates of the object. */
6154    coords: string;
6155    download: string;
6156    /**
6157     * Sets or gets whether clicks in this region cause action.
6158     * @deprecated
6159     */
6160    noHref: boolean;
6161    ping: string;
6162    referrerPolicy: string;
6163    rel: string;
6164    readonly relList: DOMTokenList;
6165    /** Sets or retrieves the shape of the object. */
6166    shape: string;
6167    /** Sets or retrieves the window or frame at which to target content. */
6168    target: string;
6169    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6170    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6171    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6172    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6173}
6174
6175declare var HTMLAreaElement: {
6176    prototype: HTMLAreaElement;
6177    new(): HTMLAreaElement;
6178};
6179
6180/** Provides access to the properties of <audio> elements, as well as methods to manipulate them. It derives from the HTMLMediaElement interface. */
6181interface HTMLAudioElement extends HTMLMediaElement {
6182    addEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLAudioElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6183    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6184    removeEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLAudioElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6185    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6186}
6187
6188declare var HTMLAudioElement: {
6189    prototype: HTMLAudioElement;
6190    new(): HTMLAudioElement;
6191};
6192
6193/** A HTML line break element (<br>). It inherits from HTMLElement. */
6194interface HTMLBRElement extends HTMLElement {
6195    /**
6196     * Sets or retrieves the side on which floating objects are not to be positioned when any IHTMLBlockElement is inserted into the document.
6197     * @deprecated
6198     */
6199    clear: string;
6200    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6201    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6202    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6203    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6204}
6205
6206declare var HTMLBRElement: {
6207    prototype: HTMLBRElement;
6208    new(): HTMLBRElement;
6209};
6210
6211/** Contains the base URI for a document. This object inherits all of the properties and methods as described in the HTMLElement interface. */
6212interface HTMLBaseElement extends HTMLElement {
6213    /** Gets or sets the baseline URL on which relative links are based. */
6214    href: string;
6215    /** Sets or retrieves the window or frame at which to target content. */
6216    target: string;
6217    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBaseElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6218    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6219    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBaseElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6220    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6221}
6222
6223declare var HTMLBaseElement: {
6224    prototype: HTMLBaseElement;
6225    new(): HTMLBaseElement;
6226};
6227
6228interface HTMLBodyElementEventMap extends HTMLElementEventMap, WindowEventHandlersEventMap {
6229}
6230
6231/** Provides special properties (beyond those inherited from the regular HTMLElement interface) for manipulating <body> elements. */
6232interface HTMLBodyElement extends HTMLElement, WindowEventHandlers {
6233    /** @deprecated */
6234    aLink: string;
6235    /** @deprecated */
6236    background: string;
6237    /** @deprecated */
6238    bgColor: string;
6239    /** @deprecated */
6240    link: string;
6241    /** @deprecated */
6242    text: string;
6243    /** @deprecated */
6244    vLink: string;
6245    addEventListener<K extends keyof HTMLBodyElementEventMap>(type: K, listener: (this: HTMLBodyElement, ev: HTMLBodyElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6246    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6247    removeEventListener<K extends keyof HTMLBodyElementEventMap>(type: K, listener: (this: HTMLBodyElement, ev: HTMLBodyElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6248    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6249}
6250
6251declare var HTMLBodyElement: {
6252    prototype: HTMLBodyElement;
6253    new(): HTMLBodyElement;
6254};
6255
6256/** Provides properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <button> elements. */
6257interface HTMLButtonElement extends HTMLElement {
6258    disabled: boolean;
6259    /** Retrieves a reference to the form that the object is embedded in. */
6260    readonly form: HTMLFormElement | null;
6261    /** Overrides the action attribute (where the data on a form is sent) on the parent form element. */
6262    formAction: string;
6263    /** Used to override the encoding (formEnctype attribute) specified on the form element. */
6264    formEnctype: string;
6265    /** Overrides the submit method attribute previously specified on a form element. */
6266    formMethod: string;
6267    /** 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. */
6268    formNoValidate: boolean;
6269    /** Overrides the target attribute on a form element. */
6270    formTarget: string;
6271    readonly labels: NodeListOf<HTMLLabelElement>;
6272    /** Sets or retrieves the name of the object. */
6273    name: string;
6274    /** Gets the classification and default behavior of the button. */
6275    type: string;
6276    /** 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. */
6277    readonly validationMessage: string;
6278    /** Returns a  ValidityState object that represents the validity states of an element. */
6279    readonly validity: ValidityState;
6280    /** Sets or retrieves the default or selected value of the control. */
6281    value: string;
6282    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */
6283    readonly willValidate: boolean;
6284    /** Returns whether a form will validate when it is submitted, without having to submit it. */
6285    checkValidity(): boolean;
6286    reportValidity(): boolean;
6287    /**
6288     * Sets a custom error message that is displayed when a form is submitted.
6289     * @param error Sets a custom error message that is displayed when a form is submitted.
6290     */
6291    setCustomValidity(error: string): void;
6292    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLButtonElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6293    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6294    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLButtonElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6295    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6296}
6297
6298declare var HTMLButtonElement: {
6299    prototype: HTMLButtonElement;
6300    new(): HTMLButtonElement;
6301};
6302
6303/** 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. */
6304interface HTMLCanvasElement extends HTMLElement {
6305    /** Gets or sets the height of a canvas element on a document. */
6306    height: number;
6307    /** Gets or sets the width of a canvas element on a document. */
6308    width: number;
6309    captureStream(frameRequestRate?: number): MediaStream;
6310    /**
6311     * 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.
6312     * @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");
6313     */
6314    getContext(contextId: "2d", options?: CanvasRenderingContext2DSettings): CanvasRenderingContext2D | null;
6315    getContext(contextId: "bitmaprenderer", options?: ImageBitmapRenderingContextSettings): ImageBitmapRenderingContext | null;
6316    getContext(contextId: "webgl", options?: WebGLContextAttributes): WebGLRenderingContext | null;
6317    getContext(contextId: "webgl2", options?: WebGLContextAttributes): WebGL2RenderingContext | null;
6318    getContext(contextId: string, options?: any): RenderingContext | null;
6319    toBlob(callback: BlobCallback, type?: string, quality?: any): void;
6320    /**
6321     * Returns the content of the current canvas as an image that you can use as a source for another canvas or an HTML element.
6322     * @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.
6323     */
6324    toDataURL(type?: string, quality?: any): string;
6325    transferControlToOffscreen(): OffscreenCanvas;
6326    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6327    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6328    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6329    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6330}
6331
6332declare var HTMLCanvasElement: {
6333    prototype: HTMLCanvasElement;
6334    new(): HTMLCanvasElement;
6335};
6336
6337/** A generic collection (array-like object similar to arguments) of elements (in document order) and offers methods and properties for selecting from the list. */
6338interface HTMLCollectionBase {
6339    /** Sets or retrieves the number of objects in a collection. */
6340    readonly length: number;
6341    /** Retrieves an object from various collections. */
6342    item(index: number): Element | null;
6343    [index: number]: Element;
6344}
6345
6346interface HTMLCollection extends HTMLCollectionBase {
6347    /** Retrieves a select object or an object from an options collection. */
6348    namedItem(name: string): Element | null;
6349}
6350
6351declare var HTMLCollection: {
6352    prototype: HTMLCollection;
6353    new(): HTMLCollection;
6354};
6355
6356interface HTMLCollectionOf<T extends Element> extends HTMLCollectionBase {
6357    item(index: number): T | null;
6358    namedItem(name: string): T | null;
6359    [index: number]: T;
6360}
6361
6362/** Provides special properties (beyond those of the regular HTMLElement interface it also has available to it by inheritance) for manipulating definition list (<dl>) elements. */
6363interface HTMLDListElement extends HTMLElement {
6364    /** @deprecated */
6365    compact: boolean;
6366    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6367    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6368    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6369    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6370}
6371
6372declare var HTMLDListElement: {
6373    prototype: HTMLDListElement;
6374    new(): HTMLDListElement;
6375};
6376
6377/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <data> elements. */
6378interface HTMLDataElement extends HTMLElement {
6379    value: string;
6380    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6381    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6382    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6383    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6384}
6385
6386declare var HTMLDataElement: {
6387    prototype: HTMLDataElement;
6388    new(): HTMLDataElement;
6389};
6390
6391/** Provides special properties (beyond the HTMLElement object interface it also has available to it by inheritance) to manipulate <datalist> elements and their content. */
6392interface HTMLDataListElement extends HTMLElement {
6393    /** Returns an HTMLCollection of the option elements of the datalist element. */
6394    readonly options: HTMLCollectionOf<HTMLOptionElement>;
6395    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6396    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6397    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6398    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6399}
6400
6401declare var HTMLDataListElement: {
6402    prototype: HTMLDataListElement;
6403    new(): HTMLDataListElement;
6404};
6405
6406interface HTMLDetailsElement extends HTMLElement {
6407    open: boolean;
6408    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDetailsElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6409    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6410    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDetailsElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6411    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6412}
6413
6414declare var HTMLDetailsElement: {
6415    prototype: HTMLDetailsElement;
6416    new(): HTMLDetailsElement;
6417};
6418
6419interface HTMLDialogElement extends HTMLElement {
6420    open: boolean;
6421    returnValue: string;
6422    /**
6423     * Closes the dialog element.
6424     *
6425     * The argument, if provided, provides a return value.
6426     */
6427    close(returnValue?: string): void;
6428    /** Displays the dialog element. */
6429    show(): void;
6430    showModal(): void;
6431    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDialogElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6432    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6433    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDialogElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6434    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6435}
6436
6437declare var HTMLDialogElement: {
6438    prototype: HTMLDialogElement;
6439    new(): HTMLDialogElement;
6440};
6441
6442/** @deprecated */
6443interface HTMLDirectoryElement extends HTMLElement {
6444    /** @deprecated */
6445    compact: boolean;
6446    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDirectoryElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6447    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6448    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDirectoryElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6449    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6450}
6451
6452/** @deprecated */
6453declare var HTMLDirectoryElement: {
6454    prototype: HTMLDirectoryElement;
6455    new(): HTMLDirectoryElement;
6456};
6457
6458/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <div> elements. */
6459interface HTMLDivElement extends HTMLElement {
6460    /**
6461     * Sets or retrieves how the object is aligned with adjacent text.
6462     * @deprecated
6463     */
6464    align: string;
6465    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6466    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6467    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6468    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6469}
6470
6471declare var HTMLDivElement: {
6472    prototype: HTMLDivElement;
6473    new(): HTMLDivElement;
6474};
6475
6476/** @deprecated use Document */
6477interface HTMLDocument extends Document {
6478    addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: HTMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6479    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6480    removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: HTMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6481    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6482}
6483
6484/** @deprecated */
6485declare var HTMLDocument: {
6486    prototype: HTMLDocument;
6487    new(): HTMLDocument;
6488};
6489
6490interface HTMLElementEventMap extends ElementEventMap, DocumentAndElementEventHandlersEventMap, GlobalEventHandlersEventMap {
6491}
6492
6493/** Any HTML element. Some elements directly implement this interface, while others implement it via an interface that inherits it. */
6494interface HTMLElement extends Element, DocumentAndElementEventHandlers, ElementCSSInlineStyle, ElementContentEditable, GlobalEventHandlers, HTMLOrSVGElement {
6495    accessKey: string;
6496    readonly accessKeyLabel: string;
6497    autocapitalize: string;
6498    dir: string;
6499    draggable: boolean;
6500    hidden: boolean;
6501    inert: boolean;
6502    innerText: string;
6503    lang: string;
6504    readonly offsetHeight: number;
6505    readonly offsetLeft: number;
6506    readonly offsetParent: Element | null;
6507    readonly offsetTop: number;
6508    readonly offsetWidth: number;
6509    outerText: string;
6510    spellcheck: boolean;
6511    title: string;
6512    translate: boolean;
6513    attachInternals(): ElementInternals;
6514    click(): void;
6515    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6516    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6517    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6518    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6519}
6520
6521declare var HTMLElement: {
6522    prototype: HTMLElement;
6523    new(): HTMLElement;
6524};
6525
6526/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <embed> elements. */
6527interface HTMLEmbedElement extends HTMLElement {
6528    /** @deprecated */
6529    align: string;
6530    /** Sets or retrieves the height of the object. */
6531    height: string;
6532    /**
6533     * Sets or retrieves the name of the object.
6534     * @deprecated
6535     */
6536    name: string;
6537    /** Sets or retrieves a URL to be loaded by the object. */
6538    src: string;
6539    type: string;
6540    /** Sets or retrieves the width of the object. */
6541    width: string;
6542    getSVGDocument(): Document | null;
6543    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLEmbedElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6544    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6545    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLEmbedElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6546    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6547}
6548
6549declare var HTMLEmbedElement: {
6550    prototype: HTMLEmbedElement;
6551    new(): HTMLEmbedElement;
6552};
6553
6554/** 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. */
6555interface HTMLFieldSetElement extends HTMLElement {
6556    disabled: boolean;
6557    /** Returns an HTMLCollection of the form controls in the element. */
6558    readonly elements: HTMLCollection;
6559    /** Retrieves a reference to the form that the object is embedded in. */
6560    readonly form: HTMLFormElement | null;
6561    name: string;
6562    /** Returns the string "fieldset". */
6563    readonly type: string;
6564    /** 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. */
6565    readonly validationMessage: string;
6566    /** Returns a  ValidityState object that represents the validity states of an element. */
6567    readonly validity: ValidityState;
6568    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */
6569    readonly willValidate: boolean;
6570    /** Returns whether a form will validate when it is submitted, without having to submit it. */
6571    checkValidity(): boolean;
6572    reportValidity(): boolean;
6573    /**
6574     * Sets a custom error message that is displayed when a form is submitted.
6575     * @param error Sets a custom error message that is displayed when a form is submitted.
6576     */
6577    setCustomValidity(error: string): void;
6578    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFieldSetElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6579    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6580    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFieldSetElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6581    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6582}
6583
6584declare var HTMLFieldSetElement: {
6585    prototype: HTMLFieldSetElement;
6586    new(): HTMLFieldSetElement;
6587};
6588
6589/**
6590 * 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.
6591 * @deprecated
6592 */
6593interface HTMLFontElement extends HTMLElement {
6594    /** @deprecated */
6595    color: string;
6596    /**
6597     * Sets or retrieves the current typeface family.
6598     * @deprecated
6599     */
6600    face: string;
6601    /** @deprecated */
6602    size: string;
6603    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFontElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6604    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6605    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFontElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6606    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6607}
6608
6609/** @deprecated */
6610declare var HTMLFontElement: {
6611    prototype: HTMLFontElement;
6612    new(): HTMLFontElement;
6613};
6614
6615/** A collection of HTML form control elements.  */
6616interface HTMLFormControlsCollection extends HTMLCollectionBase {
6617    /**
6618     * Returns the item with ID or name name from the collection.
6619     *
6620     * If there are multiple matching items, then a RadioNodeList object containing all those elements is returned.
6621     */
6622    namedItem(name: string): RadioNodeList | Element | null;
6623}
6624
6625declare var HTMLFormControlsCollection: {
6626    prototype: HTMLFormControlsCollection;
6627    new(): HTMLFormControlsCollection;
6628};
6629
6630/** 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. */
6631interface HTMLFormElement extends HTMLElement {
6632    /** Sets or retrieves a list of character encodings for input data that must be accepted by the server processing the form. */
6633    acceptCharset: string;
6634    /** Sets or retrieves the URL to which the form content is sent for processing. */
6635    action: string;
6636    /** Specifies whether autocomplete is applied to an editable text field. */
6637    autocomplete: string;
6638    /** Retrieves a collection, in source order, of all controls in a given form. */
6639    readonly elements: HTMLFormControlsCollection;
6640    /** Sets or retrieves the MIME encoding for the form. */
6641    encoding: string;
6642    /** Sets or retrieves the encoding type for the form. */
6643    enctype: string;
6644    /** Sets or retrieves the number of objects in a collection. */
6645    readonly length: number;
6646    /** Sets or retrieves how to send the form data to the server. */
6647    method: string;
6648    /** Sets or retrieves the name of the object. */
6649    name: string;
6650    /** Designates a form that is not validated when submitted. */
6651    noValidate: boolean;
6652    /** Sets or retrieves the window or frame at which to target content. */
6653    target: string;
6654    /** Returns whether a form will validate when it is submitted, without having to submit it. */
6655    checkValidity(): boolean;
6656    reportValidity(): boolean;
6657    requestSubmit(submitter?: HTMLElement | null): void;
6658    /** Fires when the user resets a form. */
6659    reset(): void;
6660    /** Fires when a FORM is about to be submitted. */
6661    submit(): void;
6662    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFormElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6663    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6664    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFormElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6665    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6666    [index: number]: Element;
6667    [name: string]: any;
6668}
6669
6670declare var HTMLFormElement: {
6671    prototype: HTMLFormElement;
6672    new(): HTMLFormElement;
6673};
6674
6675/** @deprecated */
6676interface HTMLFrameElement extends HTMLElement {
6677    /**
6678     * Retrieves the document object of the page or frame.
6679     * @deprecated
6680     */
6681    readonly contentDocument: Document | null;
6682    /**
6683     * Retrieves the object of the specified.
6684     * @deprecated
6685     */
6686    readonly contentWindow: WindowProxy | null;
6687    /**
6688     * Sets or retrieves whether to display a border for the frame.
6689     * @deprecated
6690     */
6691    frameBorder: string;
6692    /**
6693     * Sets or retrieves a URI to a long description of the object.
6694     * @deprecated
6695     */
6696    longDesc: string;
6697    /**
6698     * Sets or retrieves the top and bottom margin heights before displaying the text in a frame.
6699     * @deprecated
6700     */
6701    marginHeight: string;
6702    /**
6703     * Sets or retrieves the left and right margin widths before displaying the text in a frame.
6704     * @deprecated
6705     */
6706    marginWidth: string;
6707    /**
6708     * Sets or retrieves the frame name.
6709     * @deprecated
6710     */
6711    name: string;
6712    /**
6713     * Sets or retrieves whether the user can resize the frame.
6714     * @deprecated
6715     */
6716    noResize: boolean;
6717    /**
6718     * Sets or retrieves whether the frame can be scrolled.
6719     * @deprecated
6720     */
6721    scrolling: string;
6722    /**
6723     * Sets or retrieves a URL to be loaded by the object.
6724     * @deprecated
6725     */
6726    src: string;
6727    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6728    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6729    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6730    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6731}
6732
6733/** @deprecated */
6734declare var HTMLFrameElement: {
6735    prototype: HTMLFrameElement;
6736    new(): HTMLFrameElement;
6737};
6738
6739interface HTMLFrameSetElementEventMap extends HTMLElementEventMap, WindowEventHandlersEventMap {
6740}
6741
6742/**
6743 * Provides special properties (beyond those of the regular HTMLElement interface they also inherit) for manipulating <frameset> elements.
6744 * @deprecated
6745 */
6746interface HTMLFrameSetElement extends HTMLElement, WindowEventHandlers {
6747    /**
6748     * Sets or retrieves the frame widths of the object.
6749     * @deprecated
6750     */
6751    cols: string;
6752    /**
6753     * Sets or retrieves the frame heights of the object.
6754     * @deprecated
6755     */
6756    rows: string;
6757    addEventListener<K extends keyof HTMLFrameSetElementEventMap>(type: K, listener: (this: HTMLFrameSetElement, ev: HTMLFrameSetElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6758    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6759    removeEventListener<K extends keyof HTMLFrameSetElementEventMap>(type: K, listener: (this: HTMLFrameSetElement, ev: HTMLFrameSetElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6760    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6761}
6762
6763/** @deprecated */
6764declare var HTMLFrameSetElement: {
6765    prototype: HTMLFrameSetElement;
6766    new(): HTMLFrameSetElement;
6767};
6768
6769/** Provides special properties (beyond those of the HTMLElement interface it also has available to it by inheritance) for manipulating <hr> elements. */
6770interface HTMLHRElement extends HTMLElement {
6771    /**
6772     * Sets or retrieves how the object is aligned with adjacent text.
6773     * @deprecated
6774     */
6775    align: string;
6776    /** @deprecated */
6777    color: string;
6778    /**
6779     * Sets or retrieves whether the horizontal rule is drawn with 3-D shading.
6780     * @deprecated
6781     */
6782    noShade: boolean;
6783    /** @deprecated */
6784    size: string;
6785    /**
6786     * Sets or retrieves the width of the object.
6787     * @deprecated
6788     */
6789    width: string;
6790    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6791    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6792    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6793    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6794}
6795
6796declare var HTMLHRElement: {
6797    prototype: HTMLHRElement;
6798    new(): HTMLHRElement;
6799};
6800
6801/** Contains the descriptive information, or metadata, for a document. This object inherits all of the properties and methods described in the HTMLElement interface. */
6802interface HTMLHeadElement extends HTMLElement {
6803    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6804    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6805    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6806    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6807}
6808
6809declare var HTMLHeadElement: {
6810    prototype: HTMLHeadElement;
6811    new(): HTMLHeadElement;
6812};
6813
6814/** The different heading elements. It inherits methods and properties from the HTMLElement interface. */
6815interface HTMLHeadingElement extends HTMLElement {
6816    /**
6817     * Sets or retrieves a value that indicates the table alignment.
6818     * @deprecated
6819     */
6820    align: string;
6821    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadingElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6822    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6823    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadingElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6824    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6825}
6826
6827declare var HTMLHeadingElement: {
6828    prototype: HTMLHeadingElement;
6829    new(): HTMLHeadingElement;
6830};
6831
6832/** Serves as the root node for a given HTML document. This object inherits the properties and methods described in the HTMLElement interface. */
6833interface HTMLHtmlElement extends HTMLElement {
6834    /**
6835     * Sets or retrieves the DTD version that governs the current document.
6836     * @deprecated
6837     */
6838    version: string;
6839    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHtmlElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6840    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6841    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHtmlElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6842    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6843}
6844
6845declare var HTMLHtmlElement: {
6846    prototype: HTMLHtmlElement;
6847    new(): HTMLHtmlElement;
6848};
6849
6850interface HTMLHyperlinkElementUtils {
6851    /**
6852     * Returns the hyperlink's URL's fragment (includes leading "#" if non-empty).
6853     *
6854     * Can be set, to change the URL's fragment (ignores leading "#").
6855     */
6856    hash: string;
6857    /**
6858     * Returns the hyperlink's URL's host and port (if different from the default port for the scheme).
6859     *
6860     * Can be set, to change the URL's host and port.
6861     */
6862    host: string;
6863    /**
6864     * Returns the hyperlink's URL's host.
6865     *
6866     * Can be set, to change the URL's host.
6867     */
6868    hostname: string;
6869    /**
6870     * Returns the hyperlink's URL.
6871     *
6872     * Can be set, to change the URL.
6873     */
6874    href: string;
6875    toString(): string;
6876    /** Returns the hyperlink's URL's origin. */
6877    readonly origin: string;
6878    /**
6879     * Returns the hyperlink's URL's password.
6880     *
6881     * Can be set, to change the URL's password.
6882     */
6883    password: string;
6884    /**
6885     * Returns the hyperlink's URL's path.
6886     *
6887     * Can be set, to change the URL's path.
6888     */
6889    pathname: string;
6890    /**
6891     * Returns the hyperlink's URL's port.
6892     *
6893     * Can be set, to change the URL's port.
6894     */
6895    port: string;
6896    /**
6897     * Returns the hyperlink's URL's scheme.
6898     *
6899     * Can be set, to change the URL's scheme.
6900     */
6901    protocol: string;
6902    /**
6903     * Returns the hyperlink's URL's query (includes leading "?" if non-empty).
6904     *
6905     * Can be set, to change the URL's query (ignores leading "?").
6906     */
6907    search: string;
6908    /**
6909     * Returns the hyperlink's URL's username.
6910     *
6911     * Can be set, to change the URL's username.
6912     */
6913    username: string;
6914}
6915
6916/** 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. */
6917interface HTMLIFrameElement extends HTMLElement {
6918    /**
6919     * Sets or retrieves how the object is aligned with adjacent text.
6920     * @deprecated
6921     */
6922    align: string;
6923    allow: string;
6924    allowFullscreen: boolean;
6925    /** Retrieves the document object of the page or frame. */
6926    readonly contentDocument: Document | null;
6927    /** Retrieves the object of the specified. */
6928    readonly contentWindow: WindowProxy | null;
6929    /**
6930     * Sets or retrieves whether to display a border for the frame.
6931     * @deprecated
6932     */
6933    frameBorder: string;
6934    /** Sets or retrieves the height of the object. */
6935    height: string;
6936    /**
6937     * Sets or retrieves a URI to a long description of the object.
6938     * @deprecated
6939     */
6940    longDesc: string;
6941    /**
6942     * Sets or retrieves the top and bottom margin heights before displaying the text in a frame.
6943     * @deprecated
6944     */
6945    marginHeight: string;
6946    /**
6947     * Sets or retrieves the left and right margin widths before displaying the text in a frame.
6948     * @deprecated
6949     */
6950    marginWidth: string;
6951    /** Sets or retrieves the frame name. */
6952    name: string;
6953    referrerPolicy: ReferrerPolicy;
6954    readonly sandbox: DOMTokenList;
6955    /**
6956     * Sets or retrieves whether the frame can be scrolled.
6957     * @deprecated
6958     */
6959    scrolling: string;
6960    /** Sets or retrieves a URL to be loaded by the object. */
6961    src: string;
6962    /** Sets or retrives the content of the page that is to contain. */
6963    srcdoc: string;
6964    /** Sets or retrieves the width of the object. */
6965    width: string;
6966    getSVGDocument(): Document | null;
6967    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLIFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6968    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6969    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLIFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6970    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6971}
6972
6973declare var HTMLIFrameElement: {
6974    prototype: HTMLIFrameElement;
6975    new(): HTMLIFrameElement;
6976};
6977
6978/** Provides special properties and methods for manipulating <img> elements. */
6979interface HTMLImageElement extends HTMLElement {
6980    /**
6981     * Sets or retrieves how the object is aligned with adjacent text.
6982     * @deprecated
6983     */
6984    align: string;
6985    /** Sets or retrieves a text alternative to the graphic. */
6986    alt: string;
6987    /**
6988     * Specifies the properties of a border drawn around an object.
6989     * @deprecated
6990     */
6991    border: string;
6992    /** Retrieves whether the object is fully loaded. */
6993    readonly complete: boolean;
6994    crossOrigin: string | null;
6995    readonly currentSrc: string;
6996    decoding: "async" | "sync" | "auto";
6997    /** Sets or retrieves the height of the object. */
6998    height: number;
6999    /**
7000     * Sets or retrieves the width of the border to draw around the object.
7001     * @deprecated
7002     */
7003    hspace: number;
7004    /** Sets or retrieves whether the image is a server-side image map. */
7005    isMap: boolean;
7006    /** Sets or retrieves the policy for loading image elements that are outside the viewport. */
7007    loading: "eager" | "lazy";
7008    /**
7009     * Sets or retrieves a Uniform Resource Identifier (URI) to a long description of the object.
7010     * @deprecated
7011     */
7012    longDesc: string;
7013    /** @deprecated */
7014    lowsrc: string;
7015    /**
7016     * Sets or retrieves the name of the object.
7017     * @deprecated
7018     */
7019    name: string;
7020    /** The original height of the image resource before sizing. */
7021    readonly naturalHeight: number;
7022    /** The original width of the image resource before sizing. */
7023    readonly naturalWidth: number;
7024    referrerPolicy: string;
7025    sizes: string;
7026    /** The address or URL of the a media resource that is to be considered. */
7027    src: string;
7028    srcset: string;
7029    /** Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map. */
7030    useMap: string;
7031    /**
7032     * Sets or retrieves the vertical margin for the object.
7033     * @deprecated
7034     */
7035    vspace: number;
7036    /** Sets or retrieves the width of the object. */
7037    width: number;
7038    readonly x: number;
7039    readonly y: number;
7040    decode(): Promise<void>;
7041    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLImageElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7042    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7043    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLImageElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7044    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7045}
7046
7047declare var HTMLImageElement: {
7048    prototype: HTMLImageElement;
7049    new(): HTMLImageElement;
7050};
7051
7052/** Provides special properties and methods for manipulating the options, layout, and presentation of <input> elements. */
7053interface HTMLInputElement extends HTMLElement {
7054    /** Sets or retrieves a comma-separated list of content types. */
7055    accept: string;
7056    /**
7057     * Sets or retrieves how the object is aligned with adjacent text.
7058     * @deprecated
7059     */
7060    align: string;
7061    /** Sets or retrieves a text alternative to the graphic. */
7062    alt: string;
7063    /** Specifies whether autocomplete is applied to an editable text field. */
7064    autocomplete: string;
7065    capture: string;
7066    /** Sets or retrieves the state of the check box or radio button. */
7067    checked: boolean;
7068    /** Sets or retrieves the state of the check box or radio button. */
7069    defaultChecked: boolean;
7070    /** Sets or retrieves the initial contents of the object. */
7071    defaultValue: string;
7072    dirName: string;
7073    disabled: boolean;
7074    /** Returns a FileList object on a file type input object. */
7075    files: FileList | null;
7076    /** Retrieves a reference to the form that the object is embedded in. */
7077    readonly form: HTMLFormElement | null;
7078    /** Overrides the action attribute (where the data on a form is sent) on the parent form element. */
7079    formAction: string;
7080    /** Used to override the encoding (formEnctype attribute) specified on the form element. */
7081    formEnctype: string;
7082    /** Overrides the submit method attribute previously specified on a form element. */
7083    formMethod: string;
7084    /** 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. */
7085    formNoValidate: boolean;
7086    /** Overrides the target attribute on a form element. */
7087    formTarget: string;
7088    /** Sets or retrieves the height of the object. */
7089    height: number;
7090    /** When set, overrides the rendering of checkbox controls so that the current value is not visible. */
7091    indeterminate: boolean;
7092    readonly labels: NodeListOf<HTMLLabelElement> | null;
7093    /** Specifies the ID of a pre-defined datalist of options for an input element. */
7094    readonly list: HTMLElement | null;
7095    /** 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. */
7096    max: string;
7097    /** Sets or retrieves the maximum number of characters that the user can enter in a text control. */
7098    maxLength: number;
7099    /** 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. */
7100    min: string;
7101    minLength: number;
7102    /** Sets or retrieves the Boolean value indicating whether multiple items can be selected from a list. */
7103    multiple: boolean;
7104    /** Sets or retrieves the name of the object. */
7105    name: string;
7106    /** Gets or sets a string containing a regular expression that the user's input must match. */
7107    pattern: string;
7108    /** 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. */
7109    placeholder: string;
7110    readOnly: boolean;
7111    /** When present, marks an element that can't be submitted without a value. */
7112    required: boolean;
7113    selectionDirection: "forward" | "backward" | "none" | null;
7114    /** Gets or sets the end position or offset of a text selection. */
7115    selectionEnd: number | null;
7116    /** Gets or sets the starting position or offset of a text selection. */
7117    selectionStart: number | null;
7118    size: number;
7119    /** The address or URL of the a media resource that is to be considered. */
7120    src: string;
7121    /** 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. */
7122    step: string;
7123    /** Returns the content type of the object. */
7124    type: string;
7125    /**
7126     * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map.
7127     * @deprecated
7128     */
7129    useMap: string;
7130    /** 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. */
7131    readonly validationMessage: string;
7132    /** Returns a  ValidityState object that represents the validity states of an element. */
7133    readonly validity: ValidityState;
7134    /** Returns the value of the data at the cursor's current position. */
7135    value: string;
7136    /** 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. */
7137    valueAsDate: Date | null;
7138    /** Returns the input field value as a number. */
7139    valueAsNumber: number;
7140    readonly webkitEntries: ReadonlyArray<FileSystemEntry>;
7141    webkitdirectory: boolean;
7142    /** Sets or retrieves the width of the object. */
7143    width: number;
7144    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */
7145    readonly willValidate: boolean;
7146    /** Returns whether a form will validate when it is submitted, without having to submit it. */
7147    checkValidity(): boolean;
7148    reportValidity(): boolean;
7149    /** Makes the selection equal to the current object. */
7150    select(): void;
7151    /**
7152     * Sets a custom error message that is displayed when a form is submitted.
7153     * @param error Sets a custom error message that is displayed when a form is submitted.
7154     */
7155    setCustomValidity(error: string): void;
7156    setRangeText(replacement: string): void;
7157    setRangeText(replacement: string, start: number, end: number, selectionMode?: SelectionMode): void;
7158    /**
7159     * Sets the start and end positions of a selection in a text field.
7160     * @param start The offset into the text field for the start of the selection.
7161     * @param end The offset into the text field for the end of the selection.
7162     * @param direction The direction in which the selection is performed.
7163     */
7164    setSelectionRange(start: number | null, end: number | null, direction?: "forward" | "backward" | "none"): void;
7165    showPicker(): void;
7166    /**
7167     * 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.
7168     * @param n Value to decrement the value by.
7169     */
7170    stepDown(n?: number): void;
7171    /**
7172     * 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.
7173     * @param n Value to increment the value by.
7174     */
7175    stepUp(n?: number): void;
7176    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLInputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7177    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7178    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLInputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7179    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7180}
7181
7182declare var HTMLInputElement: {
7183    prototype: HTMLInputElement;
7184    new(): HTMLInputElement;
7185};
7186
7187/** Exposes specific properties and methods (beyond those defined by regular HTMLElement interface it also has available to it by inheritance) for manipulating list elements. */
7188interface HTMLLIElement extends HTMLElement {
7189    /** @deprecated */
7190    type: string;
7191    /** Sets or retrieves the value of a list item. */
7192    value: number;
7193    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLIElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7194    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7195    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLIElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7196    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7197}
7198
7199declare var HTMLLIElement: {
7200    prototype: HTMLLIElement;
7201    new(): HTMLLIElement;
7202};
7203
7204/** Gives access to properties specific to <label> elements. It inherits methods and properties from the base HTMLElement interface. */
7205interface HTMLLabelElement extends HTMLElement {
7206    /** Returns the form control that is associated with this element. */
7207    readonly control: HTMLElement | null;
7208    /** Retrieves a reference to the form that the object is embedded in. */
7209    readonly form: HTMLFormElement | null;
7210    /** Sets or retrieves the object to which the given label object is assigned. */
7211    htmlFor: string;
7212    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLabelElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7213    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7214    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLabelElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7215    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7216}
7217
7218declare var HTMLLabelElement: {
7219    prototype: HTMLLabelElement;
7220    new(): HTMLLabelElement;
7221};
7222
7223/** The HTMLLegendElement is an interface allowing to access properties of the <legend> elements. It inherits properties and methods from the HTMLElement interface. */
7224interface HTMLLegendElement extends HTMLElement {
7225    /** @deprecated */
7226    align: string;
7227    /** Retrieves a reference to the form that the object is embedded in. */
7228    readonly form: HTMLFormElement | null;
7229    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLegendElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7230    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7231    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLegendElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7232    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7233}
7234
7235declare var HTMLLegendElement: {
7236    prototype: HTMLLegendElement;
7237    new(): HTMLLegendElement;
7238};
7239
7240/** 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. */
7241interface HTMLLinkElement extends HTMLElement, LinkStyle {
7242    as: string;
7243    /**
7244     * Sets or retrieves the character set used to encode the object.
7245     * @deprecated
7246     */
7247    charset: string;
7248    crossOrigin: string | null;
7249    disabled: boolean;
7250    /** Sets or retrieves a destination URL or an anchor point. */
7251    href: string;
7252    /** Sets or retrieves the language code of the object. */
7253    hreflang: string;
7254    imageSizes: string;
7255    imageSrcset: string;
7256    integrity: string;
7257    /** Sets or retrieves the media type. */
7258    media: string;
7259    referrerPolicy: string;
7260    /** Sets or retrieves the relationship between the object and the destination of the link. */
7261    rel: string;
7262    readonly relList: DOMTokenList;
7263    /**
7264     * Sets or retrieves the relationship between the object and the destination of the link.
7265     * @deprecated
7266     */
7267    rev: string;
7268    readonly sizes: DOMTokenList;
7269    /**
7270     * Sets or retrieves the window or frame at which to target content.
7271     * @deprecated
7272     */
7273    target: string;
7274    /** Sets or retrieves the MIME type of the object. */
7275    type: string;
7276    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLinkElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7277    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7278    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLinkElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7279    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7280}
7281
7282declare var HTMLLinkElement: {
7283    prototype: HTMLLinkElement;
7284    new(): HTMLLinkElement;
7285};
7286
7287/** 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. */
7288interface HTMLMapElement extends HTMLElement {
7289    /** Retrieves a collection of the area objects defined for the given map object. */
7290    readonly areas: HTMLCollection;
7291    /** Sets or retrieves the name of the object. */
7292    name: string;
7293    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMapElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7294    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7295    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMapElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7296    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7297}
7298
7299declare var HTMLMapElement: {
7300    prototype: HTMLMapElement;
7301    new(): HTMLMapElement;
7302};
7303
7304/**
7305 * Provides methods to manipulate <marquee> elements.
7306 * @deprecated
7307 */
7308interface HTMLMarqueeElement extends HTMLElement {
7309    /** @deprecated */
7310    behavior: string;
7311    /** @deprecated */
7312    bgColor: string;
7313    /** @deprecated */
7314    direction: string;
7315    /** @deprecated */
7316    height: string;
7317    /** @deprecated */
7318    hspace: number;
7319    /** @deprecated */
7320    loop: number;
7321    /** @deprecated */
7322    scrollAmount: number;
7323    /** @deprecated */
7324    scrollDelay: number;
7325    /** @deprecated */
7326    trueSpeed: boolean;
7327    /** @deprecated */
7328    vspace: number;
7329    /** @deprecated */
7330    width: string;
7331    /** @deprecated */
7332    start(): void;
7333    /** @deprecated */
7334    stop(): void;
7335    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMarqueeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7336    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7337    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMarqueeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7338    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7339}
7340
7341/** @deprecated */
7342declare var HTMLMarqueeElement: {
7343    prototype: HTMLMarqueeElement;
7344    new(): HTMLMarqueeElement;
7345};
7346
7347interface HTMLMediaElementEventMap extends HTMLElementEventMap {
7348    "encrypted": MediaEncryptedEvent;
7349    "waitingforkey": Event;
7350}
7351
7352/** Adds to HTMLElement the properties and methods needed to support basic media-related capabilities that are common to audio and video. */
7353interface HTMLMediaElement extends HTMLElement {
7354    /** Gets or sets a value that indicates whether to start playing the media automatically. */
7355    autoplay: boolean;
7356    /** Gets a collection of buffered time ranges. */
7357    readonly buffered: TimeRanges;
7358    /** 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). */
7359    controls: boolean;
7360    crossOrigin: string | null;
7361    /** Gets the address or URL of the current media resource that is selected by IHTMLMediaElement. */
7362    readonly currentSrc: string;
7363    /** Gets or sets the current playback position, in seconds. */
7364    currentTime: number;
7365    defaultMuted: boolean;
7366    /** Gets or sets the default playback rate when the user is not using fast forward or reverse for a video or audio resource. */
7367    defaultPlaybackRate: number;
7368    disableRemotePlayback: boolean;
7369    /** 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. */
7370    readonly duration: number;
7371    /** Gets information about whether the playback has ended or not. */
7372    readonly ended: boolean;
7373    /** Returns an object representing the current error state of the audio or video element. */
7374    readonly error: MediaError | null;
7375    /** Gets or sets a flag to specify whether playback should restart after it completes. */
7376    loop: boolean;
7377    /** Available only in secure contexts. */
7378    readonly mediaKeys: MediaKeys | null;
7379    /** Gets or sets a flag that indicates whether the audio (either audio or the audio track on video media) is muted. */
7380    muted: boolean;
7381    /** Gets the current network activity for the element. */
7382    readonly networkState: number;
7383    onencrypted: ((this: HTMLMediaElement, ev: MediaEncryptedEvent) => any) | null;
7384    onwaitingforkey: ((this: HTMLMediaElement, ev: Event) => any) | null;
7385    /** Gets a flag that specifies whether playback is paused. */
7386    readonly paused: boolean;
7387    /** 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. */
7388    playbackRate: number;
7389    /** Gets TimeRanges for the current media resource that has been played. */
7390    readonly played: TimeRanges;
7391    /** Gets or sets a value indicating what data should be preloaded, if any. */
7392    preload: "none" | "metadata" | "auto" | "";
7393    preservesPitch: boolean;
7394    readonly readyState: number;
7395    readonly remote: RemotePlayback;
7396    /** Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked. */
7397    readonly seekable: TimeRanges;
7398    /** Gets a flag that indicates whether the client is currently moving to a new playback position in the media resource. */
7399    readonly seeking: boolean;
7400    /** The address or URL of the a media resource that is to be considered. */
7401    src: string;
7402    srcObject: MediaProvider | null;
7403    readonly textTracks: TextTrackList;
7404    /** Gets or sets the volume level for audio portions of the media element. */
7405    volume: number;
7406    addTextTrack(kind: TextTrackKind, label?: string, language?: string): TextTrack;
7407    /** Returns a string that specifies whether the client can play a given media resource type. */
7408    canPlayType(type: string): CanPlayTypeResult;
7409    fastSeek(time: number): void;
7410    /** Resets the audio or video object and loads a new media resource. */
7411    load(): void;
7412    /** 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. */
7413    pause(): void;
7414    /** Loads and starts playback of a media resource. */
7415    play(): Promise<void>;
7416    /** Available only in secure contexts. */
7417    setMediaKeys(mediaKeys: MediaKeys | null): Promise<void>;
7418    readonly HAVE_CURRENT_DATA: number;
7419    readonly HAVE_ENOUGH_DATA: number;
7420    readonly HAVE_FUTURE_DATA: number;
7421    readonly HAVE_METADATA: number;
7422    readonly HAVE_NOTHING: number;
7423    readonly NETWORK_EMPTY: number;
7424    readonly NETWORK_IDLE: number;
7425    readonly NETWORK_LOADING: number;
7426    readonly NETWORK_NO_SOURCE: number;
7427    addEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLMediaElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7428    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7429    removeEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLMediaElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7430    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7431}
7432
7433declare var HTMLMediaElement: {
7434    prototype: HTMLMediaElement;
7435    new(): HTMLMediaElement;
7436    readonly HAVE_CURRENT_DATA: number;
7437    readonly HAVE_ENOUGH_DATA: number;
7438    readonly HAVE_FUTURE_DATA: number;
7439    readonly HAVE_METADATA: number;
7440    readonly HAVE_NOTHING: number;
7441    readonly NETWORK_EMPTY: number;
7442    readonly NETWORK_IDLE: number;
7443    readonly NETWORK_LOADING: number;
7444    readonly NETWORK_NO_SOURCE: number;
7445};
7446
7447interface HTMLMenuElement extends HTMLElement {
7448    /** @deprecated */
7449    compact: boolean;
7450    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMenuElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7451    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7452    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMenuElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7453    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7454}
7455
7456declare var HTMLMenuElement: {
7457    prototype: HTMLMenuElement;
7458    new(): HTMLMenuElement;
7459};
7460
7461/** Contains descriptive metadata about a document. It inherits all of the properties and methods described in the HTMLElement interface. */
7462interface HTMLMetaElement extends HTMLElement {
7463    /** Gets or sets meta-information to associate with httpEquiv or name. */
7464    content: string;
7465    /** Gets or sets information used to bind the value of a content attribute of a meta element to an HTTP response header. */
7466    httpEquiv: string;
7467    media: string;
7468    /** Sets or retrieves the value specified in the content attribute of the meta object. */
7469    name: string;
7470    /**
7471     * Sets or retrieves a scheme to be used in interpreting the value of a property specified for the object.
7472     * @deprecated
7473     */
7474    scheme: string;
7475    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMetaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7476    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7477    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMetaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7478    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7479}
7480
7481declare var HTMLMetaElement: {
7482    prototype: HTMLMetaElement;
7483    new(): HTMLMetaElement;
7484};
7485
7486/** 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. */
7487interface HTMLMeterElement extends HTMLElement {
7488    high: number;
7489    readonly labels: NodeListOf<HTMLLabelElement>;
7490    low: number;
7491    max: number;
7492    min: number;
7493    optimum: number;
7494    value: number;
7495    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMeterElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7496    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7497    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMeterElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7498    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7499}
7500
7501declare var HTMLMeterElement: {
7502    prototype: HTMLMeterElement;
7503    new(): HTMLMeterElement;
7504};
7505
7506/** 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>. */
7507interface HTMLModElement extends HTMLElement {
7508    /** Sets or retrieves reference information about the object. */
7509    cite: string;
7510    /** Sets or retrieves the date and time of a modification to the object. */
7511    dateTime: string;
7512    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLModElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7513    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7514    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLModElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7515    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7516}
7517
7518declare var HTMLModElement: {
7519    prototype: HTMLModElement;
7520    new(): HTMLModElement;
7521};
7522
7523/** Provides special properties (beyond those defined on the regular HTMLElement interface it also has available to it by inheritance) for manipulating ordered list elements. */
7524interface HTMLOListElement extends HTMLElement {
7525    /** @deprecated */
7526    compact: boolean;
7527    reversed: boolean;
7528    /** The starting number. */
7529    start: number;
7530    type: string;
7531    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7532    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7533    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7534    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7535}
7536
7537declare var HTMLOListElement: {
7538    prototype: HTMLOListElement;
7539    new(): HTMLOListElement;
7540};
7541
7542/** 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. */
7543interface HTMLObjectElement extends HTMLElement {
7544    /** @deprecated */
7545    align: string;
7546    /**
7547     * Sets or retrieves a character string that can be used to implement your own archive functionality for the object.
7548     * @deprecated
7549     */
7550    archive: string;
7551    /** @deprecated */
7552    border: string;
7553    /**
7554     * Sets or retrieves the URL of the file containing the compiled Java class.
7555     * @deprecated
7556     */
7557    code: string;
7558    /**
7559     * Sets or retrieves the URL of the component.
7560     * @deprecated
7561     */
7562    codeBase: string;
7563    /**
7564     * Sets or retrieves the Internet media type for the code associated with the object.
7565     * @deprecated
7566     */
7567    codeType: string;
7568    /** Retrieves the document object of the page or frame. */
7569    readonly contentDocument: Document | null;
7570    readonly contentWindow: WindowProxy | null;
7571    /** Sets or retrieves the URL that references the data of the object. */
7572    data: string;
7573    /** @deprecated */
7574    declare: boolean;
7575    /** Retrieves a reference to the form that the object is embedded in. */
7576    readonly form: HTMLFormElement | null;
7577    /** Sets or retrieves the height of the object. */
7578    height: string;
7579    /** @deprecated */
7580    hspace: number;
7581    /** Sets or retrieves the name of the object. */
7582    name: string;
7583    /**
7584     * Sets or retrieves a message to be displayed while an object is loading.
7585     * @deprecated
7586     */
7587    standby: string;
7588    /** Sets or retrieves the MIME type of the object. */
7589    type: string;
7590    /** Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map. */
7591    useMap: string;
7592    /** 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. */
7593    readonly validationMessage: string;
7594    /** Returns a  ValidityState object that represents the validity states of an element. */
7595    readonly validity: ValidityState;
7596    /** @deprecated */
7597    vspace: number;
7598    /** Sets or retrieves the width of the object. */
7599    width: string;
7600    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */
7601    readonly willValidate: boolean;
7602    /** Returns whether a form will validate when it is submitted, without having to submit it. */
7603    checkValidity(): boolean;
7604    getSVGDocument(): Document | null;
7605    reportValidity(): boolean;
7606    /**
7607     * Sets a custom error message that is displayed when a form is submitted.
7608     * @param error Sets a custom error message that is displayed when a form is submitted.
7609     */
7610    setCustomValidity(error: string): void;
7611    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLObjectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7612    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7613    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLObjectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7614    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7615}
7616
7617declare var HTMLObjectElement: {
7618    prototype: HTMLObjectElement;
7619    new(): HTMLObjectElement;
7620};
7621
7622/** 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. */
7623interface HTMLOptGroupElement extends HTMLElement {
7624    disabled: boolean;
7625    /** Sets or retrieves a value that you can use to implement your own label functionality for the object. */
7626    label: string;
7627    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptGroupElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7628    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7629    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptGroupElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7630    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7631}
7632
7633declare var HTMLOptGroupElement: {
7634    prototype: HTMLOptGroupElement;
7635    new(): HTMLOptGroupElement;
7636};
7637
7638/** <option> elements and inherits all classes and methods of the HTMLElement interface. */
7639interface HTMLOptionElement extends HTMLElement {
7640    /** Sets or retrieves the status of an option. */
7641    defaultSelected: boolean;
7642    disabled: boolean;
7643    /** Retrieves a reference to the form that the object is embedded in. */
7644    readonly form: HTMLFormElement | null;
7645    /** Sets or retrieves the ordinal position of an option in a list box. */
7646    readonly index: number;
7647    /** Sets or retrieves a value that you can use to implement your own label functionality for the object. */
7648    label: string;
7649    /** Sets or retrieves whether the option in the list box is the default item. */
7650    selected: boolean;
7651    /** Sets or retrieves the text string specified by the option tag. */
7652    text: string;
7653    /** Sets or retrieves the value which is returned to the server when the form control is submitted. */
7654    value: string;
7655    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7656    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7657    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7658    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7659}
7660
7661declare var HTMLOptionElement: {
7662    prototype: HTMLOptionElement;
7663    new(): HTMLOptionElement;
7664};
7665
7666/** 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. */
7667interface HTMLOptionsCollection extends HTMLCollectionOf<HTMLOptionElement> {
7668    /**
7669     * Returns the number of elements in the collection.
7670     *
7671     * When set to a smaller number, truncates the number of option elements in the corresponding container.
7672     *
7673     * When set to a greater number, adds new blank option elements to that container.
7674     */
7675    length: number;
7676    /**
7677     * Returns the index of the first selected item, if any, or −1 if there is no selected item.
7678     *
7679     * Can be set, to change the selection.
7680     */
7681    selectedIndex: number;
7682    /**
7683     * Inserts element before the node given by before.
7684     *
7685     * 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.
7686     *
7687     * If before is omitted, null, or a number out of range, then element will be added at the end of the list.
7688     *
7689     * This method will throw a "HierarchyRequestError" DOMException if element is an ancestor of the element into which it is to be inserted.
7690     */
7691    add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number | null): void;
7692    /** Removes the item with index index from the collection. */
7693    remove(index: number): void;
7694}
7695
7696declare var HTMLOptionsCollection: {
7697    prototype: HTMLOptionsCollection;
7698    new(): HTMLOptionsCollection;
7699};
7700
7701interface HTMLOrSVGElement {
7702    autofocus: boolean;
7703    readonly dataset: DOMStringMap;
7704    nonce?: string;
7705    tabIndex: number;
7706    blur(): void;
7707    focus(options?: FocusOptions): void;
7708}
7709
7710/** Provides properties and methods (beyond those inherited from HTMLElement) for manipulating the layout and presentation of <output> elements. */
7711interface HTMLOutputElement extends HTMLElement {
7712    defaultValue: string;
7713    readonly form: HTMLFormElement | null;
7714    readonly htmlFor: DOMTokenList;
7715    readonly labels: NodeListOf<HTMLLabelElement>;
7716    name: string;
7717    /** Returns the string "output". */
7718    readonly type: string;
7719    readonly validationMessage: string;
7720    readonly validity: ValidityState;
7721    /**
7722     * Returns the element's current value.
7723     *
7724     * Can be set, to change the value.
7725     */
7726    value: string;
7727    readonly willValidate: boolean;
7728    checkValidity(): boolean;
7729    reportValidity(): boolean;
7730    setCustomValidity(error: string): void;
7731    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOutputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7732    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7733    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOutputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7734    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7735}
7736
7737declare var HTMLOutputElement: {
7738    prototype: HTMLOutputElement;
7739    new(): HTMLOutputElement;
7740};
7741
7742/** Provides special properties (beyond those of the regular HTMLElement object interface it inherits) for manipulating <p> elements. */
7743interface HTMLParagraphElement extends HTMLElement {
7744    /**
7745     * Sets or retrieves how the object is aligned with adjacent text.
7746     * @deprecated
7747     */
7748    align: string;
7749    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParagraphElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7750    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7751    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParagraphElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7752    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7753}
7754
7755declare var HTMLParagraphElement: {
7756    prototype: HTMLParagraphElement;
7757    new(): HTMLParagraphElement;
7758};
7759
7760/**
7761 * 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.
7762 * @deprecated
7763 */
7764interface HTMLParamElement extends HTMLElement {
7765    /**
7766     * Sets or retrieves the name of an input parameter for an element.
7767     * @deprecated
7768     */
7769    name: string;
7770    /**
7771     * Sets or retrieves the content type of the resource designated by the value attribute.
7772     * @deprecated
7773     */
7774    type: string;
7775    /**
7776     * Sets or retrieves the value of an input parameter for an element.
7777     * @deprecated
7778     */
7779    value: string;
7780    /**
7781     * Sets or retrieves the data type of the value attribute.
7782     * @deprecated
7783     */
7784    valueType: string;
7785    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParamElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7786    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7787    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParamElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7788    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7789}
7790
7791/** @deprecated */
7792declare var HTMLParamElement: {
7793    prototype: HTMLParamElement;
7794    new(): HTMLParamElement;
7795};
7796
7797/** A <picture> HTML element. It doesn't implement specific properties or methods. */
7798interface HTMLPictureElement extends HTMLElement {
7799    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPictureElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7800    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7801    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPictureElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7802    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7803}
7804
7805declare var HTMLPictureElement: {
7806    prototype: HTMLPictureElement;
7807    new(): HTMLPictureElement;
7808};
7809
7810/** 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>). */
7811interface HTMLPreElement extends HTMLElement {
7812    /**
7813     * Sets or gets a value that you can use to implement your own width functionality for the object.
7814     * @deprecated
7815     */
7816    width: number;
7817    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPreElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7818    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7819    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPreElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7820    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7821}
7822
7823declare var HTMLPreElement: {
7824    prototype: HTMLPreElement;
7825    new(): HTMLPreElement;
7826};
7827
7828/** 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. */
7829interface HTMLProgressElement extends HTMLElement {
7830    readonly labels: NodeListOf<HTMLLabelElement>;
7831    /** Defines the maximum, or "done" value for a progress element. */
7832    max: number;
7833    /** 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). */
7834    readonly position: number;
7835    /** Sets or gets the current value of a progress element. The value must be a non-negative number between 0 and the max value. */
7836    value: number;
7837    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLProgressElement, 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: HTMLProgressElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7840    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7841}
7842
7843declare var HTMLProgressElement: {
7844    prototype: HTMLProgressElement;
7845    new(): HTMLProgressElement;
7846};
7847
7848/** 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. */
7849interface HTMLQuoteElement extends HTMLElement {
7850    /** Sets or retrieves reference information about the object. */
7851    cite: string;
7852    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLQuoteElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7853    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7854    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLQuoteElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7855    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7856}
7857
7858declare var HTMLQuoteElement: {
7859    prototype: HTMLQuoteElement;
7860    new(): HTMLQuoteElement;
7861};
7862
7863/** 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). */
7864interface HTMLScriptElement extends HTMLElement {
7865    async: boolean;
7866    /**
7867     * Sets or retrieves the character set used to encode the object.
7868     * @deprecated
7869     */
7870    charset: string;
7871    crossOrigin: string | null;
7872    /** Sets or retrieves the status of the script. */
7873    defer: boolean;
7874    /**
7875     * Sets or retrieves the event for which the script is written.
7876     * @deprecated
7877     */
7878    event: string;
7879    /**
7880     * Sets or retrieves the object that is bound to the event script.
7881     * @deprecated
7882     */
7883    htmlFor: string;
7884    integrity: string;
7885    noModule: boolean;
7886    referrerPolicy: string;
7887    /** Retrieves the URL to an external file that contains the source code or data. */
7888    src: string;
7889    /** Retrieves or sets the text of the object as a string. */
7890    text: string;
7891    /** Sets or retrieves the MIME type for the associated scripting engine. */
7892    type: string;
7893    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLScriptElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7894    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7895    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLScriptElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7896    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7897}
7898
7899declare var HTMLScriptElement: {
7900    prototype: HTMLScriptElement;
7901    new(): HTMLScriptElement;
7902    supports(type: string): boolean;
7903};
7904
7905/** A <select> HTML Element. These elements also share all of the properties and methods of other HTML elements via the HTMLElement interface. */
7906interface HTMLSelectElement extends HTMLElement {
7907    autocomplete: string;
7908    disabled: boolean;
7909    /** Retrieves a reference to the form that the object is embedded in. */
7910    readonly form: HTMLFormElement | null;
7911    readonly labels: NodeListOf<HTMLLabelElement>;
7912    /** Sets or retrieves the number of objects in a collection. */
7913    length: number;
7914    /** Sets or retrieves the Boolean value indicating whether multiple items can be selected from a list. */
7915    multiple: boolean;
7916    /** Sets or retrieves the name of the object. */
7917    name: string;
7918    /** Returns an HTMLOptionsCollection of the list of options. */
7919    readonly options: HTMLOptionsCollection;
7920    /** When present, marks an element that can't be submitted without a value. */
7921    required: boolean;
7922    /** Sets or retrieves the index of the selected option in a select object. */
7923    selectedIndex: number;
7924    readonly selectedOptions: HTMLCollectionOf<HTMLOptionElement>;
7925    /** Sets or retrieves the number of rows in the list box. */
7926    size: number;
7927    /** Retrieves the type of select control based on the value of the MULTIPLE attribute. */
7928    readonly type: string;
7929    /** 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. */
7930    readonly validationMessage: string;
7931    /** Returns a  ValidityState object that represents the validity states of an element. */
7932    readonly validity: ValidityState;
7933    /** Sets or retrieves the value which is returned to the server when the form control is submitted. */
7934    value: string;
7935    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */
7936    readonly willValidate: boolean;
7937    /**
7938     * Adds an element to the areas, controlRange, or options collection.
7939     * @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.
7940     * @param before Variant of type Object that specifies an element to insert before, or null to append the object to the collection.
7941     */
7942    add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number | null): void;
7943    /** Returns whether a form will validate when it is submitted, without having to submit it. */
7944    checkValidity(): boolean;
7945    /**
7946     * Retrieves a select object or an object from an options collection.
7947     * @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.
7948     * @param index Variant of type Number that specifies the zero-based index of the object to retrieve when a collection is returned.
7949     */
7950    item(index: number): HTMLOptionElement | null;
7951    /**
7952     * Retrieves a select object or an object from an options collection.
7953     * @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.
7954     */
7955    namedItem(name: string): HTMLOptionElement | null;
7956    /**
7957     * Removes an element from the collection.
7958     * @param index Number that specifies the zero-based index of the element to remove from the collection.
7959     */
7960    remove(): void;
7961    remove(index: number): void;
7962    reportValidity(): boolean;
7963    /**
7964     * Sets a custom error message that is displayed when a form is submitted.
7965     * @param error Sets a custom error message that is displayed when a form is submitted.
7966     */
7967    setCustomValidity(error: string): void;
7968    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSelectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7969    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7970    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSelectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7971    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7972    [name: number]: HTMLOptionElement | HTMLOptGroupElement;
7973}
7974
7975declare var HTMLSelectElement: {
7976    prototype: HTMLSelectElement;
7977    new(): HTMLSelectElement;
7978};
7979
7980interface HTMLSlotElement extends HTMLElement {
7981    name: string;
7982    assign(...nodes: (Element | Text)[]): void;
7983    assignedElements(options?: AssignedNodesOptions): Element[];
7984    assignedNodes(options?: AssignedNodesOptions): Node[];
7985    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSlotElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7986    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7987    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSlotElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7988    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7989}
7990
7991declare var HTMLSlotElement: {
7992    prototype: HTMLSlotElement;
7993    new(): HTMLSlotElement;
7994};
7995
7996/** Provides special properties (beyond the regular HTMLElement object interface it also has available to it by inheritance) for manipulating <source> elements. */
7997interface HTMLSourceElement extends HTMLElement {
7998    height: number;
7999    /** Gets or sets the intended media type of the media source. */
8000    media: string;
8001    sizes: string;
8002    /** The address or URL of the a media resource that is to be considered. */
8003    src: string;
8004    srcset: string;
8005    /** Gets or sets the MIME type of a media resource. */
8006    type: string;
8007    width: number;
8008    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSourceElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8009    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8010    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSourceElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8011    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8012}
8013
8014declare var HTMLSourceElement: {
8015    prototype: HTMLSourceElement;
8016    new(): HTMLSourceElement;
8017};
8018
8019/** A <span> element and derives from the HTMLElement interface, but without implementing any additional properties or methods. */
8020interface HTMLSpanElement extends HTMLElement {
8021    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSpanElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8022    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8023    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSpanElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8024    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8025}
8026
8027declare var HTMLSpanElement: {
8028    prototype: HTMLSpanElement;
8029    new(): HTMLSpanElement;
8030};
8031
8032/** A <style> element. It inherits properties and methods from its parent, HTMLElement, and from LinkStyle. */
8033interface HTMLStyleElement extends HTMLElement, LinkStyle {
8034    /** Enables or disables the style sheet. */
8035    disabled: boolean;
8036    /** Sets or retrieves the media type. */
8037    media: string;
8038    /**
8039     * Retrieves the CSS language in which the style sheet is written.
8040     * @deprecated
8041     */
8042    type: string;
8043    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLStyleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8044    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8045    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLStyleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8046    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8047}
8048
8049declare var HTMLStyleElement: {
8050    prototype: HTMLStyleElement;
8051    new(): HTMLStyleElement;
8052};
8053
8054/** Special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating table caption elements. */
8055interface HTMLTableCaptionElement extends HTMLElement {
8056    /**
8057     * Sets or retrieves the alignment of the caption or legend.
8058     * @deprecated
8059     */
8060    align: string;
8061    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCaptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8062    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8063    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCaptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8064    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8065}
8066
8067declare var HTMLTableCaptionElement: {
8068    prototype: HTMLTableCaptionElement;
8069    new(): HTMLTableCaptionElement;
8070};
8071
8072/** 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. */
8073interface HTMLTableCellElement extends HTMLElement {
8074    /** Sets or retrieves abbreviated text for the object. */
8075    abbr: string;
8076    /**
8077     * Sets or retrieves how the object is aligned with adjacent text.
8078     * @deprecated
8079     */
8080    align: string;
8081    /**
8082     * Sets or retrieves a comma-delimited list of conceptual categories associated with the object.
8083     * @deprecated
8084     */
8085    axis: string;
8086    /** @deprecated */
8087    bgColor: string;
8088    /** Retrieves the position of the object in the cells collection of a row. */
8089    readonly cellIndex: number;
8090    /** @deprecated */
8091    ch: string;
8092    /** @deprecated */
8093    chOff: string;
8094    /** Sets or retrieves the number columns in the table that the object should span. */
8095    colSpan: number;
8096    /** Sets or retrieves a list of header cells that provide information for the object. */
8097    headers: string;
8098    /**
8099     * Sets or retrieves the height of the object.
8100     * @deprecated
8101     */
8102    height: string;
8103    /**
8104     * Sets or retrieves whether the browser automatically performs wordwrap.
8105     * @deprecated
8106     */
8107    noWrap: boolean;
8108    /** Sets or retrieves how many rows in a table the cell should span. */
8109    rowSpan: number;
8110    /** Sets or retrieves the group of cells in a table to which the object's information applies. */
8111    scope: string;
8112    /** @deprecated */
8113    vAlign: string;
8114    /**
8115     * Sets or retrieves the width of the object.
8116     * @deprecated
8117     */
8118    width: string;
8119    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8120    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8121    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8122    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8123}
8124
8125declare var HTMLTableCellElement: {
8126    prototype: HTMLTableCellElement;
8127    new(): HTMLTableCellElement;
8128};
8129
8130/** Provides special properties (beyond the HTMLElement interface it also has available to it inheritance) for manipulating single or grouped table column elements. */
8131interface HTMLTableColElement extends HTMLElement {
8132    /**
8133     * Sets or retrieves the alignment of the object relative to the display or table.
8134     * @deprecated
8135     */
8136    align: string;
8137    /** @deprecated */
8138    ch: string;
8139    /** @deprecated */
8140    chOff: string;
8141    /** Sets or retrieves the number of columns in the group. */
8142    span: number;
8143    /** @deprecated */
8144    vAlign: string;
8145    /**
8146     * Sets or retrieves the width of the object.
8147     * @deprecated
8148     */
8149    width: string;
8150    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableColElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8151    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8152    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableColElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8153    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8154}
8155
8156declare var HTMLTableColElement: {
8157    prototype: HTMLTableColElement;
8158    new(): HTMLTableColElement;
8159};
8160
8161/** @deprecated prefer HTMLTableCellElement */
8162interface HTMLTableDataCellElement extends HTMLTableCellElement {
8163    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableDataCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8164    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8165    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableDataCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8166    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8167}
8168
8169/** 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. */
8170interface HTMLTableElement extends HTMLElement {
8171    /**
8172     * Sets or retrieves a value that indicates the table alignment.
8173     * @deprecated
8174     */
8175    align: string;
8176    /** @deprecated */
8177    bgColor: string;
8178    /**
8179     * Sets or retrieves the width of the border to draw around the object.
8180     * @deprecated
8181     */
8182    border: string;
8183    /** Retrieves the caption object of a table. */
8184    caption: HTMLTableCaptionElement | null;
8185    /**
8186     * Sets or retrieves the amount of space between the border of the cell and the content of the cell.
8187     * @deprecated
8188     */
8189    cellPadding: string;
8190    /**
8191     * Sets or retrieves the amount of space between cells in a table.
8192     * @deprecated
8193     */
8194    cellSpacing: string;
8195    /**
8196     * Sets or retrieves the way the border frame around the table is displayed.
8197     * @deprecated
8198     */
8199    frame: string;
8200    /** Sets or retrieves the number of horizontal rows contained in the object. */
8201    readonly rows: HTMLCollectionOf<HTMLTableRowElement>;
8202    /**
8203     * Sets or retrieves which dividing lines (inner borders) are displayed.
8204     * @deprecated
8205     */
8206    rules: string;
8207    /**
8208     * Sets or retrieves a description and/or structure of the object.
8209     * @deprecated
8210     */
8211    summary: string;
8212    /** Retrieves a collection of all tBody objects in the table. Objects in this collection are in source order. */
8213    readonly tBodies: HTMLCollectionOf<HTMLTableSectionElement>;
8214    /** Retrieves the tFoot object of the table. */
8215    tFoot: HTMLTableSectionElement | null;
8216    /** Retrieves the tHead object of the table. */
8217    tHead: HTMLTableSectionElement | null;
8218    /**
8219     * Sets or retrieves the width of the object.
8220     * @deprecated
8221     */
8222    width: string;
8223    /** Creates an empty caption element in the table. */
8224    createCaption(): HTMLTableCaptionElement;
8225    /** Creates an empty tBody element in the table. */
8226    createTBody(): HTMLTableSectionElement;
8227    /** Creates an empty tFoot element in the table. */
8228    createTFoot(): HTMLTableSectionElement;
8229    /** Returns the tHead element object if successful, or null otherwise. */
8230    createTHead(): HTMLTableSectionElement;
8231    /** Deletes the caption element and its contents from the table. */
8232    deleteCaption(): void;
8233    /**
8234     * Removes the specified row (tr) from the element and from the rows collection.
8235     * @param index Number that specifies the zero-based position in the rows collection of the row to remove.
8236     */
8237    deleteRow(index: number): void;
8238    /** Deletes the tFoot element and its contents from the table. */
8239    deleteTFoot(): void;
8240    /** Deletes the tHead element and its contents from the table. */
8241    deleteTHead(): void;
8242    /**
8243     * Creates a new row (tr) in the table, and adds the row to the rows collection.
8244     * @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.
8245     */
8246    insertRow(index?: number): HTMLTableRowElement;
8247    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8248    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8249    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8250    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8251}
8252
8253declare var HTMLTableElement: {
8254    prototype: HTMLTableElement;
8255    new(): HTMLTableElement;
8256};
8257
8258/** @deprecated prefer HTMLTableCellElement */
8259interface HTMLTableHeaderCellElement extends HTMLTableCellElement {
8260    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableHeaderCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8261    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8262    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableHeaderCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8263    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8264}
8265
8266/** 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. */
8267interface HTMLTableRowElement extends HTMLElement {
8268    /**
8269     * Sets or retrieves how the object is aligned with adjacent text.
8270     * @deprecated
8271     */
8272    align: string;
8273    /** @deprecated */
8274    bgColor: string;
8275    /** Retrieves a collection of all cells in the table row. */
8276    readonly cells: HTMLCollectionOf<HTMLTableCellElement>;
8277    /** @deprecated */
8278    ch: string;
8279    /** @deprecated */
8280    chOff: string;
8281    /** Retrieves the position of the object in the rows collection for the table. */
8282    readonly rowIndex: number;
8283    /** Retrieves the position of the object in the collection. */
8284    readonly sectionRowIndex: number;
8285    /** @deprecated */
8286    vAlign: string;
8287    /**
8288     * Removes the specified cell from the table row, as well as from the cells collection.
8289     * @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.
8290     */
8291    deleteCell(index: number): void;
8292    /**
8293     * Creates a new cell in the table row, and adds the cell to the cells collection.
8294     * @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.
8295     */
8296    insertCell(index?: number): HTMLTableCellElement;
8297    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableRowElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8298    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8299    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableRowElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8300    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8301}
8302
8303declare var HTMLTableRowElement: {
8304    prototype: HTMLTableRowElement;
8305    new(): HTMLTableRowElement;
8306};
8307
8308/** 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. */
8309interface HTMLTableSectionElement extends HTMLElement {
8310    /**
8311     * Sets or retrieves a value that indicates the table alignment.
8312     * @deprecated
8313     */
8314    align: string;
8315    /** @deprecated */
8316    ch: string;
8317    /** @deprecated */
8318    chOff: string;
8319    /** Sets or retrieves the number of horizontal rows contained in the object. */
8320    readonly rows: HTMLCollectionOf<HTMLTableRowElement>;
8321    /** @deprecated */
8322    vAlign: string;
8323    /**
8324     * Removes the specified row (tr) from the element and from the rows collection.
8325     * @param index Number that specifies the zero-based position in the rows collection of the row to remove.
8326     */
8327    deleteRow(index: number): void;
8328    /**
8329     * Creates a new row (tr) in the table, and adds the row to the rows collection.
8330     * @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.
8331     */
8332    insertRow(index?: number): HTMLTableRowElement;
8333    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableSectionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8334    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8335    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableSectionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8336    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8337}
8338
8339declare var HTMLTableSectionElement: {
8340    prototype: HTMLTableSectionElement;
8341    new(): HTMLTableSectionElement;
8342};
8343
8344/** Enables access to the contents of an HTML <template> element. */
8345interface HTMLTemplateElement extends HTMLElement {
8346    /** Returns the template contents (a DocumentFragment). */
8347    readonly content: DocumentFragment;
8348    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTemplateElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8349    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8350    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTemplateElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8351    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8352}
8353
8354declare var HTMLTemplateElement: {
8355    prototype: HTMLTemplateElement;
8356    new(): HTMLTemplateElement;
8357};
8358
8359/** Provides special properties and methods for manipulating the layout and presentation of <textarea> elements. */
8360interface HTMLTextAreaElement extends HTMLElement {
8361    autocomplete: string;
8362    /** Sets or retrieves the width of the object. */
8363    cols: number;
8364    /** Sets or retrieves the initial contents of the object. */
8365    defaultValue: string;
8366    dirName: string;
8367    disabled: boolean;
8368    /** Retrieves a reference to the form that the object is embedded in. */
8369    readonly form: HTMLFormElement | null;
8370    readonly labels: NodeListOf<HTMLLabelElement>;
8371    /** Sets or retrieves the maximum number of characters that the user can enter in a text control. */
8372    maxLength: number;
8373    minLength: number;
8374    /** Sets or retrieves the name of the object. */
8375    name: string;
8376    /** 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. */
8377    placeholder: string;
8378    /** Sets or retrieves the value indicated whether the content of the object is read-only. */
8379    readOnly: boolean;
8380    /** When present, marks an element that can't be submitted without a value. */
8381    required: boolean;
8382    /** Sets or retrieves the number of horizontal rows contained in the object. */
8383    rows: number;
8384    selectionDirection: "forward" | "backward" | "none";
8385    /** Gets or sets the end position or offset of a text selection. */
8386    selectionEnd: number;
8387    /** Gets or sets the starting position or offset of a text selection. */
8388    selectionStart: number;
8389    readonly textLength: number;
8390    /** Retrieves the type of control. */
8391    readonly type: string;
8392    /** 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. */
8393    readonly validationMessage: string;
8394    /** Returns a  ValidityState object that represents the validity states of an element. */
8395    readonly validity: ValidityState;
8396    /** Retrieves or sets the text in the entry field of the textArea element. */
8397    value: string;
8398    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */
8399    readonly willValidate: boolean;
8400    /** Sets or retrieves how to handle wordwrapping in the object. */
8401    wrap: string;
8402    /** Returns whether a form will validate when it is submitted, without having to submit it. */
8403    checkValidity(): boolean;
8404    reportValidity(): boolean;
8405    /** Highlights the input area of a form element. */
8406    select(): void;
8407    /**
8408     * Sets a custom error message that is displayed when a form is submitted.
8409     * @param error Sets a custom error message that is displayed when a form is submitted.
8410     */
8411    setCustomValidity(error: string): void;
8412    setRangeText(replacement: string): void;
8413    setRangeText(replacement: string, start: number, end: number, selectionMode?: SelectionMode): void;
8414    /**
8415     * Sets the start and end positions of a selection in a text field.
8416     * @param start The offset into the text field for the start of the selection.
8417     * @param end The offset into the text field for the end of the selection.
8418     * @param direction The direction in which the selection is performed.
8419     */
8420    setSelectionRange(start: number | null, end: number | null, direction?: "forward" | "backward" | "none"): void;
8421    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTextAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8422    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8423    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTextAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8424    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8425}
8426
8427declare var HTMLTextAreaElement: {
8428    prototype: HTMLTextAreaElement;
8429    new(): HTMLTextAreaElement;
8430};
8431
8432/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <time> elements. */
8433interface HTMLTimeElement extends HTMLElement {
8434    dateTime: string;
8435    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTimeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8436    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8437    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTimeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8438    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8439}
8440
8441declare var HTMLTimeElement: {
8442    prototype: HTMLTimeElement;
8443    new(): HTMLTimeElement;
8444};
8445
8446/** Contains the title for a document. This element inherits all of the properties and methods of the HTMLElement interface. */
8447interface HTMLTitleElement extends HTMLElement {
8448    /** Retrieves or sets the text of the object as a string. */
8449    text: string;
8450    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTitleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8451    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8452    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTitleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8453    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8454}
8455
8456declare var HTMLTitleElement: {
8457    prototype: HTMLTitleElement;
8458    new(): HTMLTitleElement;
8459};
8460
8461/** The HTMLTrackElement */
8462interface HTMLTrackElement extends HTMLElement {
8463    default: boolean;
8464    kind: string;
8465    label: string;
8466    readonly readyState: number;
8467    src: string;
8468    srclang: string;
8469    /** Returns the TextTrack object corresponding to the text track of the track element. */
8470    readonly track: TextTrack;
8471    readonly ERROR: number;
8472    readonly LOADED: number;
8473    readonly LOADING: number;
8474    readonly NONE: number;
8475    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTrackElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8476    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8477    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTrackElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8478    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8479}
8480
8481declare var HTMLTrackElement: {
8482    prototype: HTMLTrackElement;
8483    new(): HTMLTrackElement;
8484    readonly ERROR: number;
8485    readonly LOADED: number;
8486    readonly LOADING: number;
8487    readonly NONE: number;
8488};
8489
8490/** Provides special properties (beyond those defined on the regular HTMLElement interface it also has available to it by inheritance) for manipulating unordered list elements. */
8491interface HTMLUListElement extends HTMLElement {
8492    /** @deprecated */
8493    compact: boolean;
8494    /** @deprecated */
8495    type: string;
8496    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8497    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8498    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8499    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8500}
8501
8502declare var HTMLUListElement: {
8503    prototype: HTMLUListElement;
8504    new(): HTMLUListElement;
8505};
8506
8507/** An invalid HTML element and derives from the HTMLElement interface, but without implementing any additional properties or methods. */
8508interface HTMLUnknownElement extends HTMLElement {
8509    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUnknownElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8510    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8511    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUnknownElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8512    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8513}
8514
8515declare var HTMLUnknownElement: {
8516    prototype: HTMLUnknownElement;
8517    new(): HTMLUnknownElement;
8518};
8519
8520interface HTMLVideoElementEventMap extends HTMLMediaElementEventMap {
8521    "enterpictureinpicture": Event;
8522    "leavepictureinpicture": Event;
8523}
8524
8525/** Provides special properties and methods for manipulating video objects. It also inherits properties and methods of HTMLMediaElement and HTMLElement. */
8526interface HTMLVideoElement extends HTMLMediaElement {
8527    disablePictureInPicture: boolean;
8528    /** Gets or sets the height of the video element. */
8529    height: number;
8530    onenterpictureinpicture: ((this: HTMLVideoElement, ev: Event) => any) | null;
8531    onleavepictureinpicture: ((this: HTMLVideoElement, ev: Event) => any) | null;
8532    /** 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. */
8533    playsInline: boolean;
8534    /** 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. */
8535    poster: string;
8536    /** Gets the intrinsic height of a video in CSS pixels, or zero if the dimensions are not known. */
8537    readonly videoHeight: number;
8538    /** Gets the intrinsic width of a video in CSS pixels, or zero if the dimensions are not known. */
8539    readonly videoWidth: number;
8540    /** Gets or sets the width of the video element. */
8541    width: number;
8542    cancelVideoFrameCallback(handle: number): void;
8543    getVideoPlaybackQuality(): VideoPlaybackQuality;
8544    requestPictureInPicture(): Promise<PictureInPictureWindow>;
8545    requestVideoFrameCallback(callback: VideoFrameRequestCallback): number;
8546    addEventListener<K extends keyof HTMLVideoElementEventMap>(type: K, listener: (this: HTMLVideoElement, ev: HTMLVideoElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8547    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8548    removeEventListener<K extends keyof HTMLVideoElementEventMap>(type: K, listener: (this: HTMLVideoElement, ev: HTMLVideoElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8549    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8550}
8551
8552declare var HTMLVideoElement: {
8553    prototype: HTMLVideoElement;
8554    new(): HTMLVideoElement;
8555};
8556
8557/** Events that fire when the fragment identifier of the URL has changed. */
8558interface HashChangeEvent extends Event {
8559    /** Returns the URL of the session history entry that is now current. */
8560    readonly newURL: string;
8561    /** Returns the URL of the session history entry that was previously current. */
8562    readonly oldURL: string;
8563}
8564
8565declare var HashChangeEvent: {
8566    prototype: HashChangeEvent;
8567    new(type: string, eventInitDict?: HashChangeEventInit): HashChangeEvent;
8568};
8569
8570/** 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. */
8571interface Headers {
8572    append(name: string, value: string): void;
8573    delete(name: string): void;
8574    get(name: string): string | null;
8575    has(name: string): boolean;
8576    set(name: string, value: string): void;
8577    forEach(callbackfn: (value: string, key: string, parent: Headers) => void, thisArg?: any): void;
8578}
8579
8580declare var Headers: {
8581    prototype: Headers;
8582    new(init?: HeadersInit): Headers;
8583};
8584
8585/** Allows manipulation of the browser session history, that is the pages visited in the tab or frame that the current page is loaded in. */
8586interface History {
8587    readonly length: number;
8588    scrollRestoration: ScrollRestoration;
8589    readonly state: any;
8590    back(): void;
8591    forward(): void;
8592    go(delta?: number): void;
8593    pushState(data: any, unused: string, url?: string | URL | null): void;
8594    replaceState(data: any, unused: string, url?: string | URL | null): void;
8595}
8596
8597declare var History: {
8598    prototype: History;
8599    new(): History;
8600};
8601
8602/** This IndexedDB API interface represents a cursor for traversing or iterating over multiple records in a database. */
8603interface IDBCursor {
8604    /** Returns the direction ("next", "nextunique", "prev" or "prevunique") of the cursor. */
8605    readonly direction: IDBCursorDirection;
8606    /** Returns the key of the cursor. Throws a "InvalidStateError" DOMException if the cursor is advancing or is finished. */
8607    readonly key: IDBValidKey;
8608    /** Returns the effective key of the cursor. Throws a "InvalidStateError" DOMException if the cursor is advancing or is finished. */
8609    readonly primaryKey: IDBValidKey;
8610    readonly request: IDBRequest;
8611    /** Returns the IDBObjectStore or IDBIndex the cursor was opened from. */
8612    readonly source: IDBObjectStore | IDBIndex;
8613    /** Advances the cursor through the next count records in range. */
8614    advance(count: number): void;
8615    /** Advances the cursor to the next record in range. */
8616    continue(key?: IDBValidKey): void;
8617    /** 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. */
8618    continuePrimaryKey(key: IDBValidKey, primaryKey: IDBValidKey): void;
8619    /**
8620     * Delete the record pointed at by the cursor with a new value.
8621     *
8622     * If successful, request's result will be undefined.
8623     */
8624    delete(): IDBRequest<undefined>;
8625    /**
8626     * Updated the record pointed at by the cursor with a new value.
8627     *
8628     * Throws a "DataError" DOMException if the effective object store uses in-line keys and the key would have changed.
8629     *
8630     * If successful, request's result will be the record's key.
8631     */
8632    update(value: any): IDBRequest<IDBValidKey>;
8633}
8634
8635declare var IDBCursor: {
8636    prototype: IDBCursor;
8637    new(): IDBCursor;
8638};
8639
8640/** 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. */
8641interface IDBCursorWithValue extends IDBCursor {
8642    /** Returns the cursor's current value. */
8643    readonly value: any;
8644}
8645
8646declare var IDBCursorWithValue: {
8647    prototype: IDBCursorWithValue;
8648    new(): IDBCursorWithValue;
8649};
8650
8651interface IDBDatabaseEventMap {
8652    "abort": Event;
8653    "close": Event;
8654    "error": Event;
8655    "versionchange": IDBVersionChangeEvent;
8656}
8657
8658/** 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. */
8659interface IDBDatabase extends EventTarget {
8660    /** Returns the name of the database. */
8661    readonly name: string;
8662    /** Returns a list of the names of object stores in the database. */
8663    readonly objectStoreNames: DOMStringList;
8664    onabort: ((this: IDBDatabase, ev: Event) => any) | null;
8665    onclose: ((this: IDBDatabase, ev: Event) => any) | null;
8666    onerror: ((this: IDBDatabase, ev: Event) => any) | null;
8667    onversionchange: ((this: IDBDatabase, ev: IDBVersionChangeEvent) => any) | null;
8668    /** Returns the version of the database. */
8669    readonly version: number;
8670    /** Closes the connection once all running transactions have finished. */
8671    close(): void;
8672    /**
8673     * Creates a new object store with the given name and options and returns a new IDBObjectStore.
8674     *
8675     * Throws a "InvalidStateError" DOMException if not called within an upgrade transaction.
8676     */
8677    createObjectStore(name: string, options?: IDBObjectStoreParameters): IDBObjectStore;
8678    /**
8679     * Deletes the object store with the given name.
8680     *
8681     * Throws a "InvalidStateError" DOMException if not called within an upgrade transaction.
8682     */
8683    deleteObjectStore(name: string): void;
8684    /** 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. */
8685    transaction(storeNames: string | string[], mode?: IDBTransactionMode, options?: IDBTransactionOptions): IDBTransaction;
8686    addEventListener<K extends keyof IDBDatabaseEventMap>(type: K, listener: (this: IDBDatabase, ev: IDBDatabaseEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8687    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8688    removeEventListener<K extends keyof IDBDatabaseEventMap>(type: K, listener: (this: IDBDatabase, ev: IDBDatabaseEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8689    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8690}
8691
8692declare var IDBDatabase: {
8693    prototype: IDBDatabase;
8694    new(): IDBDatabase;
8695};
8696
8697/** 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.) */
8698interface IDBFactory {
8699    /**
8700     * Compares two values as keys. Returns -1 if key1 precedes key2, 1 if key2 precedes key1, and 0 if the keys are equal.
8701     *
8702     * Throws a "DataError" DOMException if either input is not a valid key.
8703     */
8704    cmp(first: any, second: any): number;
8705    databases(): Promise<IDBDatabaseInfo[]>;
8706    /** 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. */
8707    deleteDatabase(name: string): IDBOpenDBRequest;
8708    /** 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. */
8709    open(name: string, version?: number): IDBOpenDBRequest;
8710}
8711
8712declare var IDBFactory: {
8713    prototype: IDBFactory;
8714    new(): IDBFactory;
8715};
8716
8717/** 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. */
8718interface IDBIndex {
8719    readonly keyPath: string | string[];
8720    readonly multiEntry: boolean;
8721    /** Returns the name of the index. */
8722    name: string;
8723    /** Returns the IDBObjectStore the index belongs to. */
8724    readonly objectStore: IDBObjectStore;
8725    readonly unique: boolean;
8726    /**
8727     * Retrieves the number of records matching the given key or key range in query.
8728     *
8729     * If successful, request's result will be the count.
8730     */
8731    count(query?: IDBValidKey | IDBKeyRange): IDBRequest<number>;
8732    /**
8733     * Retrieves the value of the first record matching the given key or key range in query.
8734     *
8735     * If successful, request's result will be the value, or undefined if there was no matching record.
8736     */
8737    get(query: IDBValidKey | IDBKeyRange): IDBRequest<any>;
8738    /**
8739     * Retrieves the values of the records matching the given key or key range in query (up to count if given).
8740     *
8741     * If successful, request's result will be an Array of the values.
8742     */
8743    getAll(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<any[]>;
8744    /**
8745     * Retrieves the keys of records matching the given key or key range in query (up to count if given).
8746     *
8747     * If successful, request's result will be an Array of the keys.
8748     */
8749    getAllKeys(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<IDBValidKey[]>;
8750    /**
8751     * Retrieves the key of the first record matching the given key or key range in query.
8752     *
8753     * If successful, request's result will be the key, or undefined if there was no matching record.
8754     */
8755    getKey(query: IDBValidKey | IDBKeyRange): IDBRequest<IDBValidKey | undefined>;
8756    /**
8757     * Opens a cursor over the records matching query, ordered by direction. If query is null, all records in index are matched.
8758     *
8759     * If successful, request's result will be an IDBCursorWithValue, or null if there were no matching records.
8760     */
8761    openCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursorWithValue | null>;
8762    /**
8763     * 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.
8764     *
8765     * If successful, request's result will be an IDBCursor, or null if there were no matching records.
8766     */
8767    openKeyCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursor | null>;
8768}
8769
8770declare var IDBIndex: {
8771    prototype: IDBIndex;
8772    new(): IDBIndex;
8773};
8774
8775/** 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: */
8776interface IDBKeyRange {
8777    /** Returns lower bound, or undefined if none. */
8778    readonly lower: any;
8779    /** Returns true if the lower open flag is set, and false otherwise. */
8780    readonly lowerOpen: boolean;
8781    /** Returns upper bound, or undefined if none. */
8782    readonly upper: any;
8783    /** Returns true if the upper open flag is set, and false otherwise. */
8784    readonly upperOpen: boolean;
8785    /** Returns true if key is included in the range, and false otherwise. */
8786    includes(key: any): boolean;
8787}
8788
8789declare var IDBKeyRange: {
8790    prototype: IDBKeyRange;
8791    new(): IDBKeyRange;
8792    /** 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. */
8793    bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange;
8794    /** Returns a new IDBKeyRange starting at key with no upper bound. If open is true, key is not included in the range. */
8795    lowerBound(lower: any, open?: boolean): IDBKeyRange;
8796    /** Returns a new IDBKeyRange spanning only key. */
8797    only(value: any): IDBKeyRange;
8798    /** Returns a new IDBKeyRange with no lower bound and ending at key. If open is true, key is not included in the range. */
8799    upperBound(upper: any, open?: boolean): IDBKeyRange;
8800};
8801
8802/** 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.) */
8803interface IDBObjectStore {
8804    /** Returns true if the store has a key generator, and false otherwise. */
8805    readonly autoIncrement: boolean;
8806    /** Returns a list of the names of indexes in the store. */
8807    readonly indexNames: DOMStringList;
8808    /** Returns the key path of the store, or null if none. */
8809    readonly keyPath: string | string[];
8810    /** Returns the name of the store. */
8811    name: string;
8812    /** Returns the associated transaction. */
8813    readonly transaction: IDBTransaction;
8814    /**
8815     * Adds or updates a record in store with the given value and key.
8816     *
8817     * If the store uses in-line keys and key is specified a "DataError" DOMException will be thrown.
8818     *
8819     * 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.
8820     *
8821     * If successful, request's result will be the record's key.
8822     */
8823    add(value: any, key?: IDBValidKey): IDBRequest<IDBValidKey>;
8824    /**
8825     * Deletes all records in store.
8826     *
8827     * If successful, request's result will be undefined.
8828     */
8829    clear(): IDBRequest<undefined>;
8830    /**
8831     * Retrieves the number of records matching the given key or key range in query.
8832     *
8833     * If successful, request's result will be the count.
8834     */
8835    count(query?: IDBValidKey | IDBKeyRange): IDBRequest<number>;
8836    /**
8837     * 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.
8838     *
8839     * Throws an "InvalidStateError" DOMException if not called within an upgrade transaction.
8840     */
8841    createIndex(name: string, keyPath: string | string[], options?: IDBIndexParameters): IDBIndex;
8842    /**
8843     * Deletes records in store with the given key or in the given key range in query.
8844     *
8845     * If successful, request's result will be undefined.
8846     */
8847    delete(query: IDBValidKey | IDBKeyRange): IDBRequest<undefined>;
8848    /**
8849     * Deletes the index in store with the given name.
8850     *
8851     * Throws an "InvalidStateError" DOMException if not called within an upgrade transaction.
8852     */
8853    deleteIndex(name: string): void;
8854    /**
8855     * Retrieves the value of the first record matching the given key or key range in query.
8856     *
8857     * If successful, request's result will be the value, or undefined if there was no matching record.
8858     */
8859    get(query: IDBValidKey | IDBKeyRange): IDBRequest<any>;
8860    /**
8861     * Retrieves the values of the records matching the given key or key range in query (up to count if given).
8862     *
8863     * If successful, request's result will be an Array of the values.
8864     */
8865    getAll(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<any[]>;
8866    /**
8867     * Retrieves the keys of records matching the given key or key range in query (up to count if given).
8868     *
8869     * If successful, request's result will be an Array of the keys.
8870     */
8871    getAllKeys(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<IDBValidKey[]>;
8872    /**
8873     * Retrieves the key of the first record matching the given key or key range in query.
8874     *
8875     * If successful, request's result will be the key, or undefined if there was no matching record.
8876     */
8877    getKey(query: IDBValidKey | IDBKeyRange): IDBRequest<IDBValidKey | undefined>;
8878    index(name: string): IDBIndex;
8879    /**
8880     * Opens a cursor over the records matching query, ordered by direction. If query is null, all records in store are matched.
8881     *
8882     * If successful, request's result will be an IDBCursorWithValue pointing at the first matching record, or null if there were no matching records.
8883     */
8884    openCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursorWithValue | null>;
8885    /**
8886     * 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.
8887     *
8888     * If successful, request's result will be an IDBCursor pointing at the first matching record, or null if there were no matching records.
8889     */
8890    openKeyCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursor | null>;
8891    /**
8892     * Adds or updates a record in store with the given value and key.
8893     *
8894     * If the store uses in-line keys and key is specified a "DataError" DOMException will be thrown.
8895     *
8896     * 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.
8897     *
8898     * If successful, request's result will be the record's key.
8899     */
8900    put(value: any, key?: IDBValidKey): IDBRequest<IDBValidKey>;
8901}
8902
8903declare var IDBObjectStore: {
8904    prototype: IDBObjectStore;
8905    new(): IDBObjectStore;
8906};
8907
8908interface IDBOpenDBRequestEventMap extends IDBRequestEventMap {
8909    "blocked": IDBVersionChangeEvent;
8910    "upgradeneeded": IDBVersionChangeEvent;
8911}
8912
8913/** Also inherits methods from its parents IDBRequest and EventTarget. */
8914interface IDBOpenDBRequest extends IDBRequest<IDBDatabase> {
8915    onblocked: ((this: IDBOpenDBRequest, ev: IDBVersionChangeEvent) => any) | null;
8916    onupgradeneeded: ((this: IDBOpenDBRequest, ev: IDBVersionChangeEvent) => any) | null;
8917    addEventListener<K extends keyof IDBOpenDBRequestEventMap>(type: K, listener: (this: IDBOpenDBRequest, ev: IDBOpenDBRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8918    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8919    removeEventListener<K extends keyof IDBOpenDBRequestEventMap>(type: K, listener: (this: IDBOpenDBRequest, ev: IDBOpenDBRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8920    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8921}
8922
8923declare var IDBOpenDBRequest: {
8924    prototype: IDBOpenDBRequest;
8925    new(): IDBOpenDBRequest;
8926};
8927
8928interface IDBRequestEventMap {
8929    "error": Event;
8930    "success": Event;
8931}
8932
8933/** 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. */
8934interface IDBRequest<T = any> extends EventTarget {
8935    /** 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. */
8936    readonly error: DOMException | null;
8937    onerror: ((this: IDBRequest<T>, ev: Event) => any) | null;
8938    onsuccess: ((this: IDBRequest<T>, ev: Event) => any) | null;
8939    /** Returns "pending" until a request is complete, then returns "done". */
8940    readonly readyState: IDBRequestReadyState;
8941    /** When a request is completed, returns the result, or undefined if the request failed. Throws a "InvalidStateError" DOMException if the request is still pending. */
8942    readonly result: T;
8943    /** Returns the IDBObjectStore, IDBIndex, or IDBCursor the request was made against, or null if is was an open request. */
8944    readonly source: IDBObjectStore | IDBIndex | IDBCursor;
8945    /** 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. */
8946    readonly transaction: IDBTransaction | null;
8947    addEventListener<K extends keyof IDBRequestEventMap>(type: K, listener: (this: IDBRequest<T>, ev: IDBRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8948    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8949    removeEventListener<K extends keyof IDBRequestEventMap>(type: K, listener: (this: IDBRequest<T>, ev: IDBRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8950    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8951}
8952
8953declare var IDBRequest: {
8954    prototype: IDBRequest;
8955    new(): IDBRequest;
8956};
8957
8958interface IDBTransactionEventMap {
8959    "abort": Event;
8960    "complete": Event;
8961    "error": Event;
8962}
8963
8964interface IDBTransaction extends EventTarget {
8965    /** Returns the transaction's connection. */
8966    readonly db: IDBDatabase;
8967    readonly durability: IDBTransactionDurability;
8968    /** If the transaction was aborted, returns the error (a DOMException) providing the reason. */
8969    readonly error: DOMException | null;
8970    /** Returns the mode the transaction was created with ("readonly" or "readwrite"), or "versionchange" for an upgrade transaction. */
8971    readonly mode: IDBTransactionMode;
8972    /** 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. */
8973    readonly objectStoreNames: DOMStringList;
8974    onabort: ((this: IDBTransaction, ev: Event) => any) | null;
8975    oncomplete: ((this: IDBTransaction, ev: Event) => any) | null;
8976    onerror: ((this: IDBTransaction, ev: Event) => any) | null;
8977    /** Aborts the transaction. All pending requests will fail with a "AbortError" DOMException and all changes made to the database will be reverted. */
8978    abort(): void;
8979    commit(): void;
8980    /** Returns an IDBObjectStore in the transaction's scope. */
8981    objectStore(name: string): IDBObjectStore;
8982    addEventListener<K extends keyof IDBTransactionEventMap>(type: K, listener: (this: IDBTransaction, ev: IDBTransactionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8983    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8984    removeEventListener<K extends keyof IDBTransactionEventMap>(type: K, listener: (this: IDBTransaction, ev: IDBTransactionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8985    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8986}
8987
8988declare var IDBTransaction: {
8989    prototype: IDBTransaction;
8990    new(): IDBTransaction;
8991};
8992
8993/** This IndexedDB API interface indicates that the version of the database has changed, as the result of an IDBOpenDBRequest.onupgradeneeded event handler function. */
8994interface IDBVersionChangeEvent extends Event {
8995    readonly newVersion: number | null;
8996    readonly oldVersion: number;
8997}
8998
8999declare var IDBVersionChangeEvent: {
9000    prototype: IDBVersionChangeEvent;
9001    new(type: string, eventInitDict?: IDBVersionChangeEventInit): IDBVersionChangeEvent;
9002};
9003
9004/** 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. */
9005interface IIRFilterNode extends AudioNode {
9006    getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;
9007}
9008
9009declare var IIRFilterNode: {
9010    prototype: IIRFilterNode;
9011    new(context: BaseAudioContext, options: IIRFilterOptions): IIRFilterNode;
9012};
9013
9014interface IdleDeadline {
9015    readonly didTimeout: boolean;
9016    timeRemaining(): DOMHighResTimeStamp;
9017}
9018
9019declare var IdleDeadline: {
9020    prototype: IdleDeadline;
9021    new(): IdleDeadline;
9022};
9023
9024interface ImageBitmap {
9025    /** Returns the intrinsic height of the image, in CSS pixels. */
9026    readonly height: number;
9027    /** Returns the intrinsic width of the image, in CSS pixels. */
9028    readonly width: number;
9029    /** Releases imageBitmap's underlying bitmap data. */
9030    close(): void;
9031}
9032
9033declare var ImageBitmap: {
9034    prototype: ImageBitmap;
9035    new(): ImageBitmap;
9036};
9037
9038interface ImageBitmapRenderingContext {
9039    /** Returns the canvas element that the context is bound to. */
9040    readonly canvas: HTMLCanvasElement | OffscreenCanvas;
9041    /** Transfers the underlying bitmap data from imageBitmap to context, and the bitmap becomes the contents of the canvas element to which context is bound. */
9042    transferFromImageBitmap(bitmap: ImageBitmap | null): void;
9043}
9044
9045declare var ImageBitmapRenderingContext: {
9046    prototype: ImageBitmapRenderingContext;
9047    new(): ImageBitmapRenderingContext;
9048};
9049
9050/** 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(). */
9051interface ImageData {
9052    readonly colorSpace: PredefinedColorSpace;
9053    /** Returns the one-dimensional array containing the data in RGBA order, as integers in the range 0 to 255. */
9054    readonly data: Uint8ClampedArray;
9055    /** Returns the actual dimensions of the data in the ImageData object, in pixels. */
9056    readonly height: number;
9057    /** Returns the actual dimensions of the data in the ImageData object, in pixels. */
9058    readonly width: number;
9059}
9060
9061declare var ImageData: {
9062    prototype: ImageData;
9063    new(sw: number, sh: number, settings?: ImageDataSettings): ImageData;
9064    new(data: Uint8ClampedArray, sw: number, sh?: number, settings?: ImageDataSettings): ImageData;
9065};
9066
9067interface InnerHTML {
9068    innerHTML: string;
9069}
9070
9071/** Available only in secure contexts. */
9072interface InputDeviceInfo extends MediaDeviceInfo {
9073}
9074
9075declare var InputDeviceInfo: {
9076    prototype: InputDeviceInfo;
9077    new(): InputDeviceInfo;
9078};
9079
9080interface InputEvent extends UIEvent {
9081    readonly data: string | null;
9082    readonly dataTransfer: DataTransfer | null;
9083    readonly inputType: string;
9084    readonly isComposing: boolean;
9085    getTargetRanges(): StaticRange[];
9086}
9087
9088declare var InputEvent: {
9089    prototype: InputEvent;
9090    new(type: string, eventInitDict?: InputEventInit): InputEvent;
9091};
9092
9093/** 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. */
9094interface IntersectionObserver {
9095    readonly root: Element | Document | null;
9096    readonly rootMargin: string;
9097    readonly thresholds: ReadonlyArray<number>;
9098    disconnect(): void;
9099    observe(target: Element): void;
9100    takeRecords(): IntersectionObserverEntry[];
9101    unobserve(target: Element): void;
9102}
9103
9104declare var IntersectionObserver: {
9105    prototype: IntersectionObserver;
9106    new(callback: IntersectionObserverCallback, options?: IntersectionObserverInit): IntersectionObserver;
9107};
9108
9109/** This Intersection Observer API interface describes the intersection between the target element and its root container at a specific moment of transition. */
9110interface IntersectionObserverEntry {
9111    readonly boundingClientRect: DOMRectReadOnly;
9112    readonly intersectionRatio: number;
9113    readonly intersectionRect: DOMRectReadOnly;
9114    readonly isIntersecting: boolean;
9115    readonly rootBounds: DOMRectReadOnly | null;
9116    readonly target: Element;
9117    readonly time: DOMHighResTimeStamp;
9118}
9119
9120declare var IntersectionObserverEntry: {
9121    prototype: IntersectionObserverEntry;
9122    new(intersectionObserverEntryInit: IntersectionObserverEntryInit): IntersectionObserverEntry;
9123};
9124
9125interface KHR_parallel_shader_compile {
9126    readonly COMPLETION_STATUS_KHR: GLenum;
9127}
9128
9129/** 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. */
9130interface KeyboardEvent extends UIEvent {
9131    readonly altKey: boolean;
9132    /** @deprecated */
9133    readonly charCode: number;
9134    readonly code: string;
9135    readonly ctrlKey: boolean;
9136    readonly isComposing: boolean;
9137    readonly key: string;
9138    /** @deprecated */
9139    readonly keyCode: number;
9140    readonly location: number;
9141    readonly metaKey: boolean;
9142    readonly repeat: boolean;
9143    readonly shiftKey: boolean;
9144    getModifierState(keyArg: string): boolean;
9145    /** @deprecated */
9146    initKeyboardEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: Window | null, keyArg?: string, locationArg?: number, ctrlKey?: boolean, altKey?: boolean, shiftKey?: boolean, metaKey?: boolean): void;
9147    readonly DOM_KEY_LOCATION_LEFT: number;
9148    readonly DOM_KEY_LOCATION_NUMPAD: number;
9149    readonly DOM_KEY_LOCATION_RIGHT: number;
9150    readonly DOM_KEY_LOCATION_STANDARD: number;
9151}
9152
9153declare var KeyboardEvent: {
9154    prototype: KeyboardEvent;
9155    new(type: string, eventInitDict?: KeyboardEventInit): KeyboardEvent;
9156    readonly DOM_KEY_LOCATION_LEFT: number;
9157    readonly DOM_KEY_LOCATION_NUMPAD: number;
9158    readonly DOM_KEY_LOCATION_RIGHT: number;
9159    readonly DOM_KEY_LOCATION_STANDARD: number;
9160};
9161
9162interface KeyframeEffect extends AnimationEffect {
9163    composite: CompositeOperation;
9164    iterationComposite: IterationCompositeOperation;
9165    pseudoElement: string | null;
9166    target: Element | null;
9167    getKeyframes(): ComputedKeyframe[];
9168    setKeyframes(keyframes: Keyframe[] | PropertyIndexedKeyframes | null): void;
9169}
9170
9171declare var KeyframeEffect: {
9172    prototype: KeyframeEffect;
9173    new(target: Element | null, keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeEffectOptions): KeyframeEffect;
9174    new(source: KeyframeEffect): KeyframeEffect;
9175};
9176
9177interface LinkStyle {
9178    readonly sheet: CSSStyleSheet | null;
9179}
9180
9181/** 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. */
9182interface Location {
9183    /** Returns a DOMStringList object listing the origins of the ancestor browsing contexts, from the parent browsing context to the top-level browsing context. */
9184    readonly ancestorOrigins: DOMStringList;
9185    /**
9186     * Returns the Location object's URL's fragment (includes leading "#" if non-empty).
9187     *
9188     * Can be set, to navigate to the same URL with a changed fragment (ignores leading "#").
9189     */
9190    hash: string;
9191    /**
9192     * Returns the Location object's URL's host and port (if different from the default port for the scheme).
9193     *
9194     * Can be set, to navigate to the same URL with a changed host and port.
9195     */
9196    host: string;
9197    /**
9198     * Returns the Location object's URL's host.
9199     *
9200     * Can be set, to navigate to the same URL with a changed host.
9201     */
9202    hostname: string;
9203    /**
9204     * Returns the Location object's URL.
9205     *
9206     * Can be set, to navigate to the given URL.
9207     */
9208    href: string;
9209    toString(): string;
9210    /** Returns the Location object's URL's origin. */
9211    readonly origin: string;
9212    /**
9213     * Returns the Location object's URL's path.
9214     *
9215     * Can be set, to navigate to the same URL with a changed path.
9216     */
9217    pathname: string;
9218    /**
9219     * Returns the Location object's URL's port.
9220     *
9221     * Can be set, to navigate to the same URL with a changed port.
9222     */
9223    port: string;
9224    /**
9225     * Returns the Location object's URL's scheme.
9226     *
9227     * Can be set, to navigate to the same URL with a changed scheme.
9228     */
9229    protocol: string;
9230    /**
9231     * Returns the Location object's URL's query (includes leading "?" if non-empty).
9232     *
9233     * Can be set, to navigate to the same URL with a changed query (ignores leading "?").
9234     */
9235    search: string;
9236    /** Navigates to the given URL. */
9237    assign(url: string | URL): void;
9238    /** Reloads the current page. */
9239    reload(): void;
9240    /** Removes the current page from the session history and navigates to the given URL. */
9241    replace(url: string | URL): void;
9242}
9243
9244declare var Location: {
9245    prototype: Location;
9246    new(): Location;
9247};
9248
9249/** Available only in secure contexts. */
9250interface Lock {
9251    readonly mode: LockMode;
9252    readonly name: string;
9253}
9254
9255declare var Lock: {
9256    prototype: Lock;
9257    new(): Lock;
9258};
9259
9260/** Available only in secure contexts. */
9261interface LockManager {
9262    query(): Promise<LockManagerSnapshot>;
9263    request(name: string, callback: LockGrantedCallback): Promise<any>;
9264    request(name: string, options: LockOptions, callback: LockGrantedCallback): Promise<any>;
9265}
9266
9267declare var LockManager: {
9268    prototype: LockManager;
9269    new(): LockManager;
9270};
9271
9272interface MathMLElementEventMap extends ElementEventMap, DocumentAndElementEventHandlersEventMap, GlobalEventHandlersEventMap {
9273}
9274
9275interface MathMLElement extends Element, DocumentAndElementEventHandlers, ElementCSSInlineStyle, GlobalEventHandlers, HTMLOrSVGElement {
9276    addEventListener<K extends keyof MathMLElementEventMap>(type: K, listener: (this: MathMLElement, ev: MathMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9277    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9278    removeEventListener<K extends keyof MathMLElementEventMap>(type: K, listener: (this: MathMLElement, ev: MathMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9279    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9280}
9281
9282declare var MathMLElement: {
9283    prototype: MathMLElement;
9284    new(): MathMLElement;
9285};
9286
9287interface MediaCapabilities {
9288    decodingInfo(configuration: MediaDecodingConfiguration): Promise<MediaCapabilitiesDecodingInfo>;
9289    encodingInfo(configuration: MediaEncodingConfiguration): Promise<MediaCapabilitiesEncodingInfo>;
9290}
9291
9292declare var MediaCapabilities: {
9293    prototype: MediaCapabilities;
9294    new(): MediaCapabilities;
9295};
9296
9297/**
9298 * The MediaDevicesInfo interface contains information that describes a single media input or output device.
9299 * Available only in secure contexts.
9300 */
9301interface MediaDeviceInfo {
9302    readonly deviceId: string;
9303    readonly groupId: string;
9304    readonly kind: MediaDeviceKind;
9305    readonly label: string;
9306    toJSON(): any;
9307}
9308
9309declare var MediaDeviceInfo: {
9310    prototype: MediaDeviceInfo;
9311    new(): MediaDeviceInfo;
9312};
9313
9314interface MediaDevicesEventMap {
9315    "devicechange": Event;
9316}
9317
9318/**
9319 * 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.
9320 * Available only in secure contexts.
9321 */
9322interface MediaDevices extends EventTarget {
9323    ondevicechange: ((this: MediaDevices, ev: Event) => any) | null;
9324    enumerateDevices(): Promise<MediaDeviceInfo[]>;
9325    getDisplayMedia(options?: DisplayMediaStreamOptions): Promise<MediaStream>;
9326    getSupportedConstraints(): MediaTrackSupportedConstraints;
9327    getUserMedia(constraints?: MediaStreamConstraints): Promise<MediaStream>;
9328    addEventListener<K extends keyof MediaDevicesEventMap>(type: K, listener: (this: MediaDevices, ev: MediaDevicesEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9329    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9330    removeEventListener<K extends keyof MediaDevicesEventMap>(type: K, listener: (this: MediaDevices, ev: MediaDevicesEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9331    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9332}
9333
9334declare var MediaDevices: {
9335    prototype: MediaDevices;
9336    new(): MediaDevices;
9337};
9338
9339/** 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. */
9340interface MediaElementAudioSourceNode extends AudioNode {
9341    readonly mediaElement: HTMLMediaElement;
9342}
9343
9344declare var MediaElementAudioSourceNode: {
9345    prototype: MediaElementAudioSourceNode;
9346    new(context: AudioContext, options: MediaElementAudioSourceOptions): MediaElementAudioSourceNode;
9347};
9348
9349interface MediaEncryptedEvent extends Event {
9350    readonly initData: ArrayBuffer | null;
9351    readonly initDataType: string;
9352}
9353
9354declare var MediaEncryptedEvent: {
9355    prototype: MediaEncryptedEvent;
9356    new(type: string, eventInitDict?: MediaEncryptedEventInit): MediaEncryptedEvent;
9357};
9358
9359/** An error which occurred while handling media in an HTML media element based on HTMLMediaElement, such as <audio> or <video>. */
9360interface MediaError {
9361    readonly code: number;
9362    readonly message: string;
9363    readonly MEDIA_ERR_ABORTED: number;
9364    readonly MEDIA_ERR_DECODE: number;
9365    readonly MEDIA_ERR_NETWORK: number;
9366    readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number;
9367}
9368
9369declare var MediaError: {
9370    prototype: MediaError;
9371    new(): MediaError;
9372    readonly MEDIA_ERR_ABORTED: number;
9373    readonly MEDIA_ERR_DECODE: number;
9374    readonly MEDIA_ERR_NETWORK: number;
9375    readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number;
9376};
9377
9378/**
9379 * This EncryptedMediaExtensions API interface contains the content and related data when the content decryption module generates a message for the session.
9380 * Available only in secure contexts.
9381 */
9382interface MediaKeyMessageEvent extends Event {
9383    readonly message: ArrayBuffer;
9384    readonly messageType: MediaKeyMessageType;
9385}
9386
9387declare var MediaKeyMessageEvent: {
9388    prototype: MediaKeyMessageEvent;
9389    new(type: string, eventInitDict: MediaKeyMessageEventInit): MediaKeyMessageEvent;
9390};
9391
9392interface MediaKeySessionEventMap {
9393    "keystatuseschange": Event;
9394    "message": MediaKeyMessageEvent;
9395}
9396
9397/**
9398 * This EncryptedMediaExtensions API interface represents a context for message exchange with a content decryption module (CDM).
9399 * Available only in secure contexts.
9400 */
9401interface MediaKeySession extends EventTarget {
9402    readonly closed: Promise<MediaKeySessionClosedReason>;
9403    readonly expiration: number;
9404    readonly keyStatuses: MediaKeyStatusMap;
9405    onkeystatuseschange: ((this: MediaKeySession, ev: Event) => any) | null;
9406    onmessage: ((this: MediaKeySession, ev: MediaKeyMessageEvent) => any) | null;
9407    readonly sessionId: string;
9408    close(): Promise<void>;
9409    generateRequest(initDataType: string, initData: BufferSource): Promise<void>;
9410    load(sessionId: string): Promise<boolean>;
9411    remove(): Promise<void>;
9412    update(response: BufferSource): Promise<void>;
9413    addEventListener<K extends keyof MediaKeySessionEventMap>(type: K, listener: (this: MediaKeySession, ev: MediaKeySessionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9414    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9415    removeEventListener<K extends keyof MediaKeySessionEventMap>(type: K, listener: (this: MediaKeySession, ev: MediaKeySessionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9416    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9417}
9418
9419declare var MediaKeySession: {
9420    prototype: MediaKeySession;
9421    new(): MediaKeySession;
9422};
9423
9424/**
9425 * This EncryptedMediaExtensions API interface is a read-only map of media key statuses by key IDs.
9426 * Available only in secure contexts.
9427 */
9428interface MediaKeyStatusMap {
9429    readonly size: number;
9430    get(keyId: BufferSource): MediaKeyStatus | undefined;
9431    has(keyId: BufferSource): boolean;
9432    forEach(callbackfn: (value: MediaKeyStatus, key: BufferSource, parent: MediaKeyStatusMap) => void, thisArg?: any): void;
9433}
9434
9435declare var MediaKeyStatusMap: {
9436    prototype: MediaKeyStatusMap;
9437    new(): MediaKeyStatusMap;
9438};
9439
9440/**
9441 * 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.
9442 * Available only in secure contexts.
9443 */
9444interface MediaKeySystemAccess {
9445    readonly keySystem: string;
9446    createMediaKeys(): Promise<MediaKeys>;
9447    getConfiguration(): MediaKeySystemConfiguration;
9448}
9449
9450declare var MediaKeySystemAccess: {
9451    prototype: MediaKeySystemAccess;
9452    new(): MediaKeySystemAccess;
9453};
9454
9455/**
9456 * This EncryptedMediaExtensions API interface the represents a set of keys that an associated HTMLMediaElement can use for decryption of media data during playback.
9457 * Available only in secure contexts.
9458 */
9459interface MediaKeys {
9460    createSession(sessionType?: MediaKeySessionType): MediaKeySession;
9461    setServerCertificate(serverCertificate: BufferSource): Promise<boolean>;
9462}
9463
9464declare var MediaKeys: {
9465    prototype: MediaKeys;
9466    new(): MediaKeys;
9467};
9468
9469interface MediaList {
9470    readonly length: number;
9471    mediaText: string;
9472    toString(): string;
9473    appendMedium(medium: string): void;
9474    deleteMedium(medium: string): void;
9475    item(index: number): string | null;
9476    [index: number]: string;
9477}
9478
9479declare var MediaList: {
9480    prototype: MediaList;
9481    new(): MediaList;
9482};
9483
9484interface MediaMetadata {
9485    album: string;
9486    artist: string;
9487    artwork: ReadonlyArray<MediaImage>;
9488    title: string;
9489}
9490
9491declare var MediaMetadata: {
9492    prototype: MediaMetadata;
9493    new(init?: MediaMetadataInit): MediaMetadata;
9494};
9495
9496interface MediaQueryListEventMap {
9497    "change": MediaQueryListEvent;
9498}
9499
9500/** 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). */
9501interface MediaQueryList extends EventTarget {
9502    readonly matches: boolean;
9503    readonly media: string;
9504    onchange: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null;
9505    /** @deprecated */
9506    addListener(callback: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null): void;
9507    /** @deprecated */
9508    removeListener(callback: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null): void;
9509    addEventListener<K extends keyof MediaQueryListEventMap>(type: K, listener: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9510    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9511    removeEventListener<K extends keyof MediaQueryListEventMap>(type: K, listener: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9512    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9513}
9514
9515declare var MediaQueryList: {
9516    prototype: MediaQueryList;
9517    new(): MediaQueryList;
9518};
9519
9520interface MediaQueryListEvent extends Event {
9521    readonly matches: boolean;
9522    readonly media: string;
9523}
9524
9525declare var MediaQueryListEvent: {
9526    prototype: MediaQueryListEvent;
9527    new(type: string, eventInitDict?: MediaQueryListEventInit): MediaQueryListEvent;
9528};
9529
9530interface MediaRecorderEventMap {
9531    "dataavailable": BlobEvent;
9532    "error": Event;
9533    "pause": Event;
9534    "resume": Event;
9535    "start": Event;
9536    "stop": Event;
9537}
9538
9539interface MediaRecorder extends EventTarget {
9540    readonly audioBitsPerSecond: number;
9541    readonly mimeType: string;
9542    ondataavailable: ((this: MediaRecorder, ev: BlobEvent) => any) | null;
9543    onerror: ((this: MediaRecorder, ev: Event) => any) | null;
9544    onpause: ((this: MediaRecorder, ev: Event) => any) | null;
9545    onresume: ((this: MediaRecorder, ev: Event) => any) | null;
9546    onstart: ((this: MediaRecorder, ev: Event) => any) | null;
9547    onstop: ((this: MediaRecorder, ev: Event) => any) | null;
9548    readonly state: RecordingState;
9549    readonly stream: MediaStream;
9550    readonly videoBitsPerSecond: number;
9551    pause(): void;
9552    requestData(): void;
9553    resume(): void;
9554    start(timeslice?: number): void;
9555    stop(): void;
9556    addEventListener<K extends keyof MediaRecorderEventMap>(type: K, listener: (this: MediaRecorder, ev: MediaRecorderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9557    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9558    removeEventListener<K extends keyof MediaRecorderEventMap>(type: K, listener: (this: MediaRecorder, ev: MediaRecorderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9559    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9560}
9561
9562declare var MediaRecorder: {
9563    prototype: MediaRecorder;
9564    new(stream: MediaStream, options?: MediaRecorderOptions): MediaRecorder;
9565    isTypeSupported(type: string): boolean;
9566};
9567
9568interface MediaSession {
9569    metadata: MediaMetadata | null;
9570    playbackState: MediaSessionPlaybackState;
9571    setActionHandler(action: MediaSessionAction, handler: MediaSessionActionHandler | null): void;
9572    setPositionState(state?: MediaPositionState): void;
9573}
9574
9575declare var MediaSession: {
9576    prototype: MediaSession;
9577    new(): MediaSession;
9578};
9579
9580interface MediaSourceEventMap {
9581    "sourceclose": Event;
9582    "sourceended": Event;
9583    "sourceopen": Event;
9584}
9585
9586/** 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. */
9587interface MediaSource extends EventTarget {
9588    readonly activeSourceBuffers: SourceBufferList;
9589    duration: number;
9590    onsourceclose: ((this: MediaSource, ev: Event) => any) | null;
9591    onsourceended: ((this: MediaSource, ev: Event) => any) | null;
9592    onsourceopen: ((this: MediaSource, ev: Event) => any) | null;
9593    readonly readyState: ReadyState;
9594    readonly sourceBuffers: SourceBufferList;
9595    addSourceBuffer(type: string): SourceBuffer;
9596    clearLiveSeekableRange(): void;
9597    endOfStream(error?: EndOfStreamError): void;
9598    removeSourceBuffer(sourceBuffer: SourceBuffer): void;
9599    setLiveSeekableRange(start: number, end: number): void;
9600    addEventListener<K extends keyof MediaSourceEventMap>(type: K, listener: (this: MediaSource, ev: MediaSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9601    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9602    removeEventListener<K extends keyof MediaSourceEventMap>(type: K, listener: (this: MediaSource, ev: MediaSourceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9603    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9604}
9605
9606declare var MediaSource: {
9607    prototype: MediaSource;
9608    new(): MediaSource;
9609    isTypeSupported(type: string): boolean;
9610};
9611
9612interface MediaStreamEventMap {
9613    "addtrack": MediaStreamTrackEvent;
9614    "removetrack": MediaStreamTrackEvent;
9615}
9616
9617/** 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. */
9618interface MediaStream extends EventTarget {
9619    readonly active: boolean;
9620    readonly id: string;
9621    onaddtrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
9622    onremovetrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
9623    addTrack(track: MediaStreamTrack): void;
9624    clone(): MediaStream;
9625    getAudioTracks(): MediaStreamTrack[];
9626    getTrackById(trackId: string): MediaStreamTrack | null;
9627    getTracks(): MediaStreamTrack[];
9628    getVideoTracks(): MediaStreamTrack[];
9629    removeTrack(track: MediaStreamTrack): void;
9630    addEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9631    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9632    removeEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9633    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9634}
9635
9636declare var MediaStream: {
9637    prototype: MediaStream;
9638    new(): MediaStream;
9639    new(stream: MediaStream): MediaStream;
9640    new(tracks: MediaStreamTrack[]): MediaStream;
9641};
9642
9643interface MediaStreamAudioDestinationNode extends AudioNode {
9644    readonly stream: MediaStream;
9645}
9646
9647declare var MediaStreamAudioDestinationNode: {
9648    prototype: MediaStreamAudioDestinationNode;
9649    new(context: AudioContext, options?: AudioNodeOptions): MediaStreamAudioDestinationNode;
9650};
9651
9652/** 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. */
9653interface MediaStreamAudioSourceNode extends AudioNode {
9654    readonly mediaStream: MediaStream;
9655}
9656
9657declare var MediaStreamAudioSourceNode: {
9658    prototype: MediaStreamAudioSourceNode;
9659    new(context: AudioContext, options: MediaStreamAudioSourceOptions): MediaStreamAudioSourceNode;
9660};
9661
9662interface MediaStreamTrackEventMap {
9663    "ended": Event;
9664    "mute": Event;
9665    "unmute": Event;
9666}
9667
9668/** A single media track within a stream; typically, these are audio or video tracks, but other track types may exist as well. */
9669interface MediaStreamTrack extends EventTarget {
9670    contentHint: string;
9671    enabled: boolean;
9672    readonly id: string;
9673    readonly kind: string;
9674    readonly label: string;
9675    readonly muted: boolean;
9676    onended: ((this: MediaStreamTrack, ev: Event) => any) | null;
9677    onmute: ((this: MediaStreamTrack, ev: Event) => any) | null;
9678    onunmute: ((this: MediaStreamTrack, ev: Event) => any) | null;
9679    readonly readyState: MediaStreamTrackState;
9680    applyConstraints(constraints?: MediaTrackConstraints): Promise<void>;
9681    clone(): MediaStreamTrack;
9682    getCapabilities(): MediaTrackCapabilities;
9683    getConstraints(): MediaTrackConstraints;
9684    getSettings(): MediaTrackSettings;
9685    stop(): void;
9686    addEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: MediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9687    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9688    removeEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: MediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9689    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9690}
9691
9692declare var MediaStreamTrack: {
9693    prototype: MediaStreamTrack;
9694    new(): MediaStreamTrack;
9695};
9696
9697/** 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. */
9698interface MediaStreamTrackEvent extends Event {
9699    readonly track: MediaStreamTrack;
9700}
9701
9702declare var MediaStreamTrackEvent: {
9703    prototype: MediaStreamTrackEvent;
9704    new(type: string, eventInitDict: MediaStreamTrackEventInit): MediaStreamTrackEvent;
9705};
9706
9707/** This Channel Messaging API interface allows us to create a new message channel and send data through it via its two MessagePort properties. */
9708interface MessageChannel {
9709    /** Returns the first MessagePort object. */
9710    readonly port1: MessagePort;
9711    /** Returns the second MessagePort object. */
9712    readonly port2: MessagePort;
9713}
9714
9715declare var MessageChannel: {
9716    prototype: MessageChannel;
9717    new(): MessageChannel;
9718};
9719
9720/** A message received by a target object. */
9721interface MessageEvent<T = any> extends Event {
9722    /** Returns the data of the message. */
9723    readonly data: T;
9724    /** Returns the last event ID string, for server-sent events. */
9725    readonly lastEventId: string;
9726    /** Returns the origin of the message, for server-sent events and cross-document messaging. */
9727    readonly origin: string;
9728    /** Returns the MessagePort array sent with the message, for cross-document messaging and channel messaging. */
9729    readonly ports: ReadonlyArray<MessagePort>;
9730    /** Returns the WindowProxy of the source window, for cross-document messaging, and the MessagePort being attached, in the connect event fired at SharedWorkerGlobalScope objects. */
9731    readonly source: MessageEventSource | null;
9732    /** @deprecated */
9733    initMessageEvent(type: string, bubbles?: boolean, cancelable?: boolean, data?: any, origin?: string, lastEventId?: string, source?: MessageEventSource | null, ports?: MessagePort[]): void;
9734}
9735
9736declare var MessageEvent: {
9737    prototype: MessageEvent;
9738    new<T>(type: string, eventInitDict?: MessageEventInit<T>): MessageEvent<T>;
9739};
9740
9741interface MessagePortEventMap {
9742    "message": MessageEvent;
9743    "messageerror": MessageEvent;
9744}
9745
9746/** 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. */
9747interface MessagePort extends EventTarget {
9748    onmessage: ((this: MessagePort, ev: MessageEvent) => any) | null;
9749    onmessageerror: ((this: MessagePort, ev: MessageEvent) => any) | null;
9750    /** Disconnects the port, so that it is no longer active. */
9751    close(): void;
9752    /**
9753     * 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.
9754     *
9755     * Throws a "DataCloneError" DOMException if transfer contains duplicate objects or port, or if message could not be cloned.
9756     */
9757    postMessage(message: any, transfer: Transferable[]): void;
9758    postMessage(message: any, options?: StructuredSerializeOptions): void;
9759    /** Begins dispatching messages received on the port. */
9760    start(): void;
9761    addEventListener<K extends keyof MessagePortEventMap>(type: K, listener: (this: MessagePort, ev: MessagePortEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9762    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9763    removeEventListener<K extends keyof MessagePortEventMap>(type: K, listener: (this: MessagePort, ev: MessagePortEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9764    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9765}
9766
9767declare var MessagePort: {
9768    prototype: MessagePort;
9769    new(): MessagePort;
9770};
9771
9772/**
9773 * Provides contains information about a MIME type associated with a particular plugin. NavigatorPlugins.mimeTypes returns an array of this object.
9774 * @deprecated
9775 */
9776interface MimeType {
9777    /**
9778     * Returns the MIME type's description.
9779     * @deprecated
9780     */
9781    readonly description: string;
9782    /**
9783     * Returns the Plugin object that implements this MIME type.
9784     * @deprecated
9785     */
9786    readonly enabledPlugin: Plugin;
9787    /**
9788     * Returns the MIME type's typical file extensions, in a comma-separated list.
9789     * @deprecated
9790     */
9791    readonly suffixes: string;
9792    /**
9793     * Returns the MIME type.
9794     * @deprecated
9795     */
9796    readonly type: string;
9797}
9798
9799/** @deprecated */
9800declare var MimeType: {
9801    prototype: MimeType;
9802    new(): MimeType;
9803};
9804
9805/**
9806 * Returns an array of MimeType instances, each of which contains information about a supported browser plugins. This object is returned by NavigatorPlugins.mimeTypes.
9807 * @deprecated
9808 */
9809interface MimeTypeArray {
9810    /** @deprecated */
9811    readonly length: number;
9812    /** @deprecated */
9813    item(index: number): MimeType | null;
9814    /** @deprecated */
9815    namedItem(name: string): MimeType | null;
9816    [index: number]: MimeType;
9817}
9818
9819/** @deprecated */
9820declare var MimeTypeArray: {
9821    prototype: MimeTypeArray;
9822    new(): MimeTypeArray;
9823};
9824
9825/** 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. */
9826interface MouseEvent extends UIEvent {
9827    readonly altKey: boolean;
9828    readonly button: number;
9829    readonly buttons: number;
9830    readonly clientX: number;
9831    readonly clientY: number;
9832    readonly ctrlKey: boolean;
9833    readonly metaKey: boolean;
9834    readonly movementX: number;
9835    readonly movementY: number;
9836    readonly offsetX: number;
9837    readonly offsetY: number;
9838    readonly pageX: number;
9839    readonly pageY: number;
9840    readonly relatedTarget: EventTarget | null;
9841    readonly screenX: number;
9842    readonly screenY: number;
9843    readonly shiftKey: boolean;
9844    readonly x: number;
9845    readonly y: number;
9846    getModifierState(keyArg: string): boolean;
9847    /** @deprecated */
9848    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;
9849}
9850
9851declare var MouseEvent: {
9852    prototype: MouseEvent;
9853    new(type: string, eventInitDict?: MouseEventInit): MouseEvent;
9854};
9855
9856/**
9857 * Provides event properties that are specific to modifications to the Document Object Model (DOM) hierarchy and nodes.
9858 * @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.
9859 */
9860interface MutationEvent extends Event {
9861    /** @deprecated */
9862    readonly attrChange: number;
9863    /** @deprecated */
9864    readonly attrName: string;
9865    /** @deprecated */
9866    readonly newValue: string;
9867    /** @deprecated */
9868    readonly prevValue: string;
9869    /** @deprecated */
9870    readonly relatedNode: Node | null;
9871    /** @deprecated */
9872    initMutationEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, relatedNodeArg?: Node | null, prevValueArg?: string, newValueArg?: string, attrNameArg?: string, attrChangeArg?: number): void;
9873    readonly ADDITION: number;
9874    readonly MODIFICATION: number;
9875    readonly REMOVAL: number;
9876}
9877
9878/** @deprecated */
9879declare var MutationEvent: {
9880    prototype: MutationEvent;
9881    new(): MutationEvent;
9882    readonly ADDITION: number;
9883    readonly MODIFICATION: number;
9884    readonly REMOVAL: number;
9885};
9886
9887/** 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. */
9888interface MutationObserver {
9889    /** Stops observer from observing any mutations. Until the observe() method is used again, observer's callback will not be invoked. */
9890    disconnect(): void;
9891    /**
9892     * Instructs the user agent to observe a given target (a node) and report any mutations based on the criteria given by options (an object).
9893     *
9894     * The options argument allows for setting mutation observation options via object members.
9895     */
9896    observe(target: Node, options?: MutationObserverInit): void;
9897    /** Empties the record queue and returns what was in there. */
9898    takeRecords(): MutationRecord[];
9899}
9900
9901declare var MutationObserver: {
9902    prototype: MutationObserver;
9903    new(callback: MutationCallback): MutationObserver;
9904};
9905
9906/** A MutationRecord represents an individual DOM mutation. It is the object that is passed to MutationObserver's callback. */
9907interface MutationRecord {
9908    /** Return the nodes added and removed respectively. */
9909    readonly addedNodes: NodeList;
9910    /** Returns the local name of the changed attribute, and null otherwise. */
9911    readonly attributeName: string | null;
9912    /** Returns the namespace of the changed attribute, and null otherwise. */
9913    readonly attributeNamespace: string | null;
9914    /** Return the previous and next sibling respectively of the added or removed nodes, and null otherwise. */
9915    readonly nextSibling: Node | null;
9916    /** 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. */
9917    readonly oldValue: string | null;
9918    /** Return the previous and next sibling respectively of the added or removed nodes, and null otherwise. */
9919    readonly previousSibling: Node | null;
9920    /** Return the nodes added and removed respectively. */
9921    readonly removedNodes: NodeList;
9922    /** 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. */
9923    readonly target: Node;
9924    /** 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. */
9925    readonly type: MutationRecordType;
9926}
9927
9928declare var MutationRecord: {
9929    prototype: MutationRecord;
9930    new(): MutationRecord;
9931};
9932
9933/** 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. */
9934interface NamedNodeMap {
9935    readonly length: number;
9936    getNamedItem(qualifiedName: string): Attr | null;
9937    getNamedItemNS(namespace: string | null, localName: string): Attr | null;
9938    item(index: number): Attr | null;
9939    removeNamedItem(qualifiedName: string): Attr;
9940    removeNamedItemNS(namespace: string | null, localName: string): Attr;
9941    setNamedItem(attr: Attr): Attr | null;
9942    setNamedItemNS(attr: Attr): Attr | null;
9943    [index: number]: Attr;
9944}
9945
9946declare var NamedNodeMap: {
9947    prototype: NamedNodeMap;
9948    new(): NamedNodeMap;
9949};
9950
9951/** Available only in secure contexts. */
9952interface NavigationPreloadManager {
9953    disable(): Promise<void>;
9954    enable(): Promise<void>;
9955    getState(): Promise<NavigationPreloadState>;
9956    setHeaderValue(value: string): Promise<void>;
9957}
9958
9959declare var NavigationPreloadManager: {
9960    prototype: NavigationPreloadManager;
9961    new(): NavigationPreloadManager;
9962};
9963
9964/** The state and the identity of the user agent. It allows scripts to query it and to register themselves to carry on some activities. */
9965interface Navigator extends NavigatorAutomationInformation, NavigatorConcurrentHardware, NavigatorContentUtils, NavigatorCookies, NavigatorID, NavigatorLanguage, NavigatorLocks, NavigatorOnLine, NavigatorPlugins, NavigatorStorage {
9966    /** Available only in secure contexts. */
9967    readonly clipboard: Clipboard;
9968    /** Available only in secure contexts. */
9969    readonly credentials: CredentialsContainer;
9970    readonly doNotTrack: string | null;
9971    readonly geolocation: Geolocation;
9972    readonly maxTouchPoints: number;
9973    readonly mediaCapabilities: MediaCapabilities;
9974    /** Available only in secure contexts. */
9975    readonly mediaDevices: MediaDevices;
9976    readonly mediaSession: MediaSession;
9977    readonly permissions: Permissions;
9978    /** Available only in secure contexts. */
9979    readonly serviceWorker: ServiceWorkerContainer;
9980    /** Available only in secure contexts. */
9981    canShare(data?: ShareData): boolean;
9982    getGamepads(): (Gamepad | null)[];
9983    /** Available only in secure contexts. */
9984    requestMediaKeySystemAccess(keySystem: string, supportedConfigurations: MediaKeySystemConfiguration[]): Promise<MediaKeySystemAccess>;
9985    sendBeacon(url: string | URL, data?: BodyInit | null): boolean;
9986    /** Available only in secure contexts. */
9987    share(data?: ShareData): Promise<void>;
9988    vibrate(pattern: VibratePattern): boolean;
9989}
9990
9991declare var Navigator: {
9992    prototype: Navigator;
9993    new(): Navigator;
9994};
9995
9996interface NavigatorAutomationInformation {
9997    readonly webdriver: boolean;
9998}
9999
10000interface NavigatorConcurrentHardware {
10001    readonly hardwareConcurrency: number;
10002}
10003
10004interface NavigatorContentUtils {
10005    /** Available only in secure contexts. */
10006    registerProtocolHandler(scheme: string, url: string | URL): void;
10007}
10008
10009interface NavigatorCookies {
10010    readonly cookieEnabled: boolean;
10011}
10012
10013interface NavigatorID {
10014    /** @deprecated */
10015    readonly appCodeName: string;
10016    /** @deprecated */
10017    readonly appName: string;
10018    /** @deprecated */
10019    readonly appVersion: string;
10020    /** @deprecated */
10021    readonly platform: string;
10022    /** @deprecated */
10023    readonly product: string;
10024    /** @deprecated */
10025    readonly productSub: string;
10026    readonly userAgent: string;
10027    /** @deprecated */
10028    readonly vendor: string;
10029    /** @deprecated */
10030    readonly vendorSub: string;
10031}
10032
10033interface NavigatorLanguage {
10034    readonly language: string;
10035    readonly languages: ReadonlyArray<string>;
10036}
10037
10038/** Available only in secure contexts. */
10039interface NavigatorLocks {
10040    readonly locks: LockManager;
10041}
10042
10043interface NavigatorOnLine {
10044    readonly onLine: boolean;
10045}
10046
10047interface NavigatorPlugins {
10048    /** @deprecated */
10049    readonly mimeTypes: MimeTypeArray;
10050    readonly pdfViewerEnabled: boolean;
10051    /** @deprecated */
10052    readonly plugins: PluginArray;
10053    /** @deprecated */
10054    javaEnabled(): boolean;
10055}
10056
10057/** Available only in secure contexts. */
10058interface NavigatorStorage {
10059    readonly storage: StorageManager;
10060}
10061
10062/** 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. */
10063interface Node extends EventTarget {
10064    /** Returns node's node document's document base URL. */
10065    readonly baseURI: string;
10066    /** Returns the children. */
10067    readonly childNodes: NodeListOf<ChildNode>;
10068    /** Returns the first child. */
10069    readonly firstChild: ChildNode | null;
10070    /** Returns true if node is connected and false otherwise. */
10071    readonly isConnected: boolean;
10072    /** Returns the last child. */
10073    readonly lastChild: ChildNode | null;
10074    /** Returns the next sibling. */
10075    readonly nextSibling: ChildNode | null;
10076    /** Returns a string appropriate for the type of node. */
10077    readonly nodeName: string;
10078    /** Returns the type of node. */
10079    readonly nodeType: number;
10080    nodeValue: string | null;
10081    /** Returns the node document. Returns null for documents. */
10082    readonly ownerDocument: Document | null;
10083    /** Returns the parent element. */
10084    readonly parentElement: HTMLElement | null;
10085    /** Returns the parent. */
10086    readonly parentNode: ParentNode | null;
10087    /** Returns the previous sibling. */
10088    readonly previousSibling: ChildNode | null;
10089    textContent: string | null;
10090    appendChild<T extends Node>(node: T): T;
10091    /** Returns a copy of node. If deep is true, the copy also includes the node's descendants. */
10092    cloneNode(deep?: boolean): Node;
10093    /** Returns a bitmask indicating the position of other relative to node. */
10094    compareDocumentPosition(other: Node): number;
10095    /** Returns true if other is an inclusive descendant of node, and false otherwise. */
10096    contains(other: Node | null): boolean;
10097    /** Returns node's root. */
10098    getRootNode(options?: GetRootNodeOptions): Node;
10099    /** Returns whether node has children. */
10100    hasChildNodes(): boolean;
10101    insertBefore<T extends Node>(node: T, child: Node | null): T;
10102    isDefaultNamespace(namespace: string | null): boolean;
10103    /** Returns whether node and otherNode have the same properties. */
10104    isEqualNode(otherNode: Node | null): boolean;
10105    isSameNode(otherNode: Node | null): boolean;
10106    lookupNamespaceURI(prefix: string | null): string | null;
10107    lookupPrefix(namespace: string | null): string | null;
10108    /** Removes empty exclusive Text nodes and concatenates the data of remaining contiguous exclusive Text nodes into the first of their nodes. */
10109    normalize(): void;
10110    removeChild<T extends Node>(child: T): T;
10111    replaceChild<T extends Node>(node: Node, child: T): T;
10112    readonly ATTRIBUTE_NODE: number;
10113    /** node is a CDATASection node. */
10114    readonly CDATA_SECTION_NODE: number;
10115    /** node is a Comment node. */
10116    readonly COMMENT_NODE: number;
10117    /** node is a DocumentFragment node. */
10118    readonly DOCUMENT_FRAGMENT_NODE: number;
10119    /** node is a document. */
10120    readonly DOCUMENT_NODE: number;
10121    /** Set when other is a descendant of node. */
10122    readonly DOCUMENT_POSITION_CONTAINED_BY: number;
10123    /** Set when other is an ancestor of node. */
10124    readonly DOCUMENT_POSITION_CONTAINS: number;
10125    /** Set when node and other are not in the same tree. */
10126    readonly DOCUMENT_POSITION_DISCONNECTED: number;
10127    /** Set when other is following node. */
10128    readonly DOCUMENT_POSITION_FOLLOWING: number;
10129    readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number;
10130    /** Set when other is preceding node. */
10131    readonly DOCUMENT_POSITION_PRECEDING: number;
10132    /** node is a doctype. */
10133    readonly DOCUMENT_TYPE_NODE: number;
10134    /** node is an element. */
10135    readonly ELEMENT_NODE: number;
10136    readonly ENTITY_NODE: number;
10137    readonly ENTITY_REFERENCE_NODE: number;
10138    readonly NOTATION_NODE: number;
10139    /** node is a ProcessingInstruction node. */
10140    readonly PROCESSING_INSTRUCTION_NODE: number;
10141    /** node is a Text node. */
10142    readonly TEXT_NODE: number;
10143}
10144
10145declare var Node: {
10146    prototype: Node;
10147    new(): Node;
10148    readonly ATTRIBUTE_NODE: number;
10149    /** node is a CDATASection node. */
10150    readonly CDATA_SECTION_NODE: number;
10151    /** node is a Comment node. */
10152    readonly COMMENT_NODE: number;
10153    /** node is a DocumentFragment node. */
10154    readonly DOCUMENT_FRAGMENT_NODE: number;
10155    /** node is a document. */
10156    readonly DOCUMENT_NODE: number;
10157    /** Set when other is a descendant of node. */
10158    readonly DOCUMENT_POSITION_CONTAINED_BY: number;
10159    /** Set when other is an ancestor of node. */
10160    readonly DOCUMENT_POSITION_CONTAINS: number;
10161    /** Set when node and other are not in the same tree. */
10162    readonly DOCUMENT_POSITION_DISCONNECTED: number;
10163    /** Set when other is following node. */
10164    readonly DOCUMENT_POSITION_FOLLOWING: number;
10165    readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number;
10166    /** Set when other is preceding node. */
10167    readonly DOCUMENT_POSITION_PRECEDING: number;
10168    /** node is a doctype. */
10169    readonly DOCUMENT_TYPE_NODE: number;
10170    /** node is an element. */
10171    readonly ELEMENT_NODE: number;
10172    readonly ENTITY_NODE: number;
10173    readonly ENTITY_REFERENCE_NODE: number;
10174    readonly NOTATION_NODE: number;
10175    /** node is a ProcessingInstruction node. */
10176    readonly PROCESSING_INSTRUCTION_NODE: number;
10177    /** node is a Text node. */
10178    readonly TEXT_NODE: number;
10179};
10180
10181/** 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. */
10182interface NodeIterator {
10183    readonly filter: NodeFilter | null;
10184    readonly pointerBeforeReferenceNode: boolean;
10185    readonly referenceNode: Node;
10186    readonly root: Node;
10187    readonly whatToShow: number;
10188    /** @deprecated */
10189    detach(): void;
10190    nextNode(): Node | null;
10191    previousNode(): Node | null;
10192}
10193
10194declare var NodeIterator: {
10195    prototype: NodeIterator;
10196    new(): NodeIterator;
10197};
10198
10199/** NodeList objects are collections of nodes, usually returned by properties such as Node.childNodes and methods such as document.querySelectorAll(). */
10200interface NodeList {
10201    /** Returns the number of nodes in the collection. */
10202    readonly length: number;
10203    /** Returns the node with index index from the collection. The nodes are sorted in tree order. */
10204    item(index: number): Node | null;
10205    /**
10206     * Performs the specified action for each node in an list.
10207     * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the list.
10208     * @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.
10209     */
10210    forEach(callbackfn: (value: Node, key: number, parent: NodeList) => void, thisArg?: any): void;
10211    [index: number]: Node;
10212}
10213
10214declare var NodeList: {
10215    prototype: NodeList;
10216    new(): NodeList;
10217};
10218
10219interface NodeListOf<TNode extends Node> extends NodeList {
10220    item(index: number): TNode;
10221    /**
10222     * Performs the specified action for each node in an list.
10223     * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the list.
10224     * @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.
10225     */
10226    forEach(callbackfn: (value: TNode, key: number, parent: NodeListOf<TNode>) => void, thisArg?: any): void;
10227    [index: number]: TNode;
10228}
10229
10230interface NonDocumentTypeChildNode {
10231    /** Returns the first following sibling that is an element, and null otherwise. */
10232    readonly nextElementSibling: Element | null;
10233    /** Returns the first preceding sibling that is an element, and null otherwise. */
10234    readonly previousElementSibling: Element | null;
10235}
10236
10237interface NonElementParentNode {
10238    /** Returns the first element within node's descendants whose ID is elementId. */
10239    getElementById(elementId: string): Element | null;
10240}
10241
10242interface NotificationEventMap {
10243    "click": Event;
10244    "close": Event;
10245    "error": Event;
10246    "show": Event;
10247}
10248
10249/** This Notifications API interface is used to configure and display desktop notifications to the user. */
10250interface Notification extends EventTarget {
10251    readonly body: string;
10252    readonly data: any;
10253    readonly dir: NotificationDirection;
10254    readonly icon: string;
10255    readonly lang: string;
10256    onclick: ((this: Notification, ev: Event) => any) | null;
10257    onclose: ((this: Notification, ev: Event) => any) | null;
10258    onerror: ((this: Notification, ev: Event) => any) | null;
10259    onshow: ((this: Notification, ev: Event) => any) | null;
10260    readonly tag: string;
10261    readonly title: string;
10262    close(): void;
10263    addEventListener<K extends keyof NotificationEventMap>(type: K, listener: (this: Notification, ev: NotificationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10264    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10265    removeEventListener<K extends keyof NotificationEventMap>(type: K, listener: (this: Notification, ev: NotificationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10266    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10267}
10268
10269declare var Notification: {
10270    prototype: Notification;
10271    new(title: string, options?: NotificationOptions): Notification;
10272    readonly permission: NotificationPermission;
10273    requestPermission(deprecatedCallback?: NotificationPermissionCallback): Promise<NotificationPermission>;
10274};
10275
10276interface OES_draw_buffers_indexed {
10277    blendEquationSeparateiOES(buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum): void;
10278    blendEquationiOES(buf: GLuint, mode: GLenum): void;
10279    blendFuncSeparateiOES(buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum): void;
10280    blendFunciOES(buf: GLuint, src: GLenum, dst: GLenum): void;
10281    colorMaskiOES(buf: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean): void;
10282    disableiOES(target: GLenum, index: GLuint): void;
10283    enableiOES(target: GLenum, index: GLuint): void;
10284}
10285
10286/** The OES_element_index_uint extension is part of the WebGL API and adds support for gl.UNSIGNED_INT types to WebGLRenderingContext.drawElements(). */
10287interface OES_element_index_uint {
10288}
10289
10290interface OES_fbo_render_mipmap {
10291}
10292
10293/** The OES_standard_derivatives extension is part of the WebGL API and adds the GLSL derivative functions dFdx, dFdy, and fwidth. */
10294interface OES_standard_derivatives {
10295    readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: GLenum;
10296}
10297
10298/** The OES_texture_float extension is part of the WebGL API and exposes floating-point pixel types for textures. */
10299interface OES_texture_float {
10300}
10301
10302/** The OES_texture_float_linear extension is part of the WebGL API and allows linear filtering with floating-point pixel types for textures. */
10303interface OES_texture_float_linear {
10304}
10305
10306/** 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. */
10307interface OES_texture_half_float {
10308    readonly HALF_FLOAT_OES: GLenum;
10309}
10310
10311/** 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. */
10312interface OES_texture_half_float_linear {
10313}
10314
10315interface OES_vertex_array_object {
10316    bindVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void;
10317    createVertexArrayOES(): WebGLVertexArrayObjectOES | null;
10318    deleteVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void;
10319    isVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): GLboolean;
10320    readonly VERTEX_ARRAY_BINDING_OES: GLenum;
10321}
10322
10323interface OVR_multiview2 {
10324    framebufferTextureMultiviewOVR(target: GLenum, attachment: GLenum, texture: WebGLTexture | null, level: GLint, baseViewIndex: GLint, numViews: GLsizei): void;
10325    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR: GLenum;
10326    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR: GLenum;
10327    readonly FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: GLenum;
10328    readonly MAX_VIEWS_OVR: GLenum;
10329}
10330
10331/** The Web Audio API OfflineAudioCompletionEvent interface represents events that occur when the processing of an OfflineAudioContext is terminated. The complete event implements this interface. */
10332interface OfflineAudioCompletionEvent extends Event {
10333    readonly renderedBuffer: AudioBuffer;
10334}
10335
10336declare var OfflineAudioCompletionEvent: {
10337    prototype: OfflineAudioCompletionEvent;
10338    new(type: string, eventInitDict: OfflineAudioCompletionEventInit): OfflineAudioCompletionEvent;
10339};
10340
10341interface OfflineAudioContextEventMap extends BaseAudioContextEventMap {
10342    "complete": OfflineAudioCompletionEvent;
10343}
10344
10345/** 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. */
10346interface OfflineAudioContext extends BaseAudioContext {
10347    readonly length: number;
10348    oncomplete: ((this: OfflineAudioContext, ev: OfflineAudioCompletionEvent) => any) | null;
10349    resume(): Promise<void>;
10350    startRendering(): Promise<AudioBuffer>;
10351    suspend(suspendTime: number): Promise<void>;
10352    addEventListener<K extends keyof OfflineAudioContextEventMap>(type: K, listener: (this: OfflineAudioContext, ev: OfflineAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10353    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10354    removeEventListener<K extends keyof OfflineAudioContextEventMap>(type: K, listener: (this: OfflineAudioContext, ev: OfflineAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10355    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10356}
10357
10358declare var OfflineAudioContext: {
10359    prototype: OfflineAudioContext;
10360    new(contextOptions: OfflineAudioContextOptions): OfflineAudioContext;
10361    new(numberOfChannels: number, length: number, sampleRate: number): OfflineAudioContext;
10362};
10363
10364interface OffscreenCanvasEventMap {
10365    "contextlost": Event;
10366    "contextrestored": Event;
10367}
10368
10369interface OffscreenCanvas extends EventTarget {
10370    /**
10371     * These attributes return the dimensions of the OffscreenCanvas object's bitmap.
10372     *
10373     * They can be set, to replace the bitmap with a new, transparent black bitmap of the specified dimensions (effectively resizing it).
10374     */
10375    height: number;
10376    oncontextlost: ((this: OffscreenCanvas, ev: Event) => any) | null;
10377    oncontextrestored: ((this: OffscreenCanvas, ev: Event) => any) | null;
10378    /**
10379     * These attributes return the dimensions of the OffscreenCanvas object's bitmap.
10380     *
10381     * They can be set, to replace the bitmap with a new, transparent black bitmap of the specified dimensions (effectively resizing it).
10382     */
10383    width: number;
10384    /**
10385     * 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.
10386     *
10387     * 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]
10388     *
10389     * 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).
10390     */
10391    getContext(contextId: OffscreenRenderingContextId, options?: any): OffscreenRenderingContext | null;
10392    /** 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. */
10393    transferToImageBitmap(): ImageBitmap;
10394    addEventListener<K extends keyof OffscreenCanvasEventMap>(type: K, listener: (this: OffscreenCanvas, ev: OffscreenCanvasEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10395    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10396    removeEventListener<K extends keyof OffscreenCanvasEventMap>(type: K, listener: (this: OffscreenCanvas, ev: OffscreenCanvasEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10397    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10398}
10399
10400declare var OffscreenCanvas: {
10401    prototype: OffscreenCanvas;
10402    new(width: number, height: number): OffscreenCanvas;
10403};
10404
10405interface OffscreenCanvasRenderingContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform {
10406    readonly canvas: OffscreenCanvas;
10407    commit(): void;
10408}
10409
10410declare var OffscreenCanvasRenderingContext2D: {
10411    prototype: OffscreenCanvasRenderingContext2D;
10412    new(): OffscreenCanvasRenderingContext2D;
10413};
10414
10415/** 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. */
10416interface OscillatorNode extends AudioScheduledSourceNode {
10417    readonly detune: AudioParam;
10418    readonly frequency: AudioParam;
10419    type: OscillatorType;
10420    setPeriodicWave(periodicWave: PeriodicWave): void;
10421    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: OscillatorNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10422    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10423    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: OscillatorNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10424    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10425}
10426
10427declare var OscillatorNode: {
10428    prototype: OscillatorNode;
10429    new(context: BaseAudioContext, options?: OscillatorOptions): OscillatorNode;
10430};
10431
10432interface OverconstrainedError extends Error {
10433    readonly constraint: string;
10434}
10435
10436declare var OverconstrainedError: {
10437    prototype: OverconstrainedError;
10438    new(constraint: string, message?: string): OverconstrainedError;
10439};
10440
10441/** The PageTransitionEvent is fired when a document is being loaded or unloaded. */
10442interface PageTransitionEvent extends Event {
10443    /**
10444     * For the pageshow event, returns false if the page is newly being loaded (and the load event will fire). Otherwise, returns true.
10445     *
10446     * 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.
10447     *
10448     * Things that can cause the page to be unsalvageable include:
10449     *
10450     * The user agent decided to not keep the Document alive in a session history entry after unload
10451     * Having iframes that are not salvageable
10452     * Active WebSocket objects
10453     * Aborting a Document
10454     */
10455    readonly persisted: boolean;
10456}
10457
10458declare var PageTransitionEvent: {
10459    prototype: PageTransitionEvent;
10460    new(type: string, eventInitDict?: PageTransitionEventInit): PageTransitionEvent;
10461};
10462
10463/** 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! */
10464interface PannerNode extends AudioNode {
10465    coneInnerAngle: number;
10466    coneOuterAngle: number;
10467    coneOuterGain: number;
10468    distanceModel: DistanceModelType;
10469    maxDistance: number;
10470    readonly orientationX: AudioParam;
10471    readonly orientationY: AudioParam;
10472    readonly orientationZ: AudioParam;
10473    panningModel: PanningModelType;
10474    readonly positionX: AudioParam;
10475    readonly positionY: AudioParam;
10476    readonly positionZ: AudioParam;
10477    refDistance: number;
10478    rolloffFactor: number;
10479    /** @deprecated */
10480    setOrientation(x: number, y: number, z: number): void;
10481    /** @deprecated */
10482    setPosition(x: number, y: number, z: number): void;
10483}
10484
10485declare var PannerNode: {
10486    prototype: PannerNode;
10487    new(context: BaseAudioContext, options?: PannerOptions): PannerNode;
10488};
10489
10490interface ParentNode extends Node {
10491    readonly childElementCount: number;
10492    /** Returns the child elements. */
10493    readonly children: HTMLCollection;
10494    /** Returns the first child that is an element, and null otherwise. */
10495    readonly firstElementChild: Element | null;
10496    /** Returns the last child that is an element, and null otherwise. */
10497    readonly lastElementChild: Element | null;
10498    /**
10499     * Inserts nodes after the last child of node, while replacing strings in nodes with equivalent Text nodes.
10500     *
10501     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
10502     */
10503    append(...nodes: (Node | string)[]): void;
10504    /**
10505     * Inserts nodes before the first child of node, while replacing strings in nodes with equivalent Text nodes.
10506     *
10507     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
10508     */
10509    prepend(...nodes: (Node | string)[]): void;
10510    /** Returns the first element that is a descendant of node that matches selectors. */
10511    querySelector<K extends keyof HTMLElementTagNameMap>(selectors: K): HTMLElementTagNameMap[K] | null;
10512    querySelector<K extends keyof SVGElementTagNameMap>(selectors: K): SVGElementTagNameMap[K] | null;
10513    querySelector<E extends Element = Element>(selectors: string): E | null;
10514    /** Returns all element descendants of node that match selectors. */
10515    querySelectorAll<K extends keyof HTMLElementTagNameMap>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;
10516    querySelectorAll<K extends keyof SVGElementTagNameMap>(selectors: K): NodeListOf<SVGElementTagNameMap[K]>;
10517    querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;
10518    /**
10519     * Replace all children of node with nodes, while replacing strings in nodes with equivalent Text nodes.
10520     *
10521     * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
10522     */
10523    replaceChildren(...nodes: (Node | string)[]): void;
10524}
10525
10526/** 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. */
10527interface Path2D extends CanvasPath {
10528    /** Adds to the path the path given by the argument. */
10529    addPath(path: Path2D, transform?: DOMMatrix2DInit): void;
10530}
10531
10532declare var Path2D: {
10533    prototype: Path2D;
10534    new(path?: Path2D | string): Path2D;
10535};
10536
10537/** Available only in secure contexts. */
10538interface PaymentMethodChangeEvent extends PaymentRequestUpdateEvent {
10539    readonly methodDetails: any;
10540    readonly methodName: string;
10541}
10542
10543declare var PaymentMethodChangeEvent: {
10544    prototype: PaymentMethodChangeEvent;
10545    new(type: string, eventInitDict?: PaymentMethodChangeEventInit): PaymentMethodChangeEvent;
10546};
10547
10548interface PaymentRequestEventMap {
10549    "paymentmethodchange": Event;
10550}
10551
10552/**
10553 * 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.
10554 * Available only in secure contexts.
10555 */
10556interface PaymentRequest extends EventTarget {
10557    readonly id: string;
10558    onpaymentmethodchange: ((this: PaymentRequest, ev: Event) => any) | null;
10559    abort(): Promise<void>;
10560    canMakePayment(): Promise<boolean>;
10561    show(detailsPromise?: PaymentDetailsUpdate | PromiseLike<PaymentDetailsUpdate>): Promise<PaymentResponse>;
10562    addEventListener<K extends keyof PaymentRequestEventMap>(type: K, listener: (this: PaymentRequest, ev: PaymentRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10563    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10564    removeEventListener<K extends keyof PaymentRequestEventMap>(type: K, listener: (this: PaymentRequest, ev: PaymentRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10565    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10566}
10567
10568declare var PaymentRequest: {
10569    prototype: PaymentRequest;
10570    new(methodData: PaymentMethodData[], details: PaymentDetailsInit): PaymentRequest;
10571};
10572
10573/**
10574 * This Payment Request API interface enables a web page to update the details of a PaymentRequest in response to a user action.
10575 * Available only in secure contexts.
10576 */
10577interface PaymentRequestUpdateEvent extends Event {
10578    updateWith(detailsPromise: PaymentDetailsUpdate | PromiseLike<PaymentDetailsUpdate>): void;
10579}
10580
10581declare var PaymentRequestUpdateEvent: {
10582    prototype: PaymentRequestUpdateEvent;
10583    new(type: string, eventInitDict?: PaymentRequestUpdateEventInit): PaymentRequestUpdateEvent;
10584};
10585
10586/**
10587 * This Payment Request API interface is returned after a user selects a payment method and approves a payment request.
10588 * Available only in secure contexts.
10589 */
10590interface PaymentResponse extends EventTarget {
10591    readonly details: any;
10592    readonly methodName: string;
10593    readonly requestId: string;
10594    complete(result?: PaymentComplete): Promise<void>;
10595    retry(errorFields?: PaymentValidationErrors): Promise<void>;
10596    toJSON(): any;
10597}
10598
10599declare var PaymentResponse: {
10600    prototype: PaymentResponse;
10601    new(): PaymentResponse;
10602};
10603
10604interface PerformanceEventMap {
10605    "resourcetimingbufferfull": Event;
10606}
10607
10608/** 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. */
10609interface Performance extends EventTarget {
10610    readonly eventCounts: EventCounts;
10611    /** @deprecated */
10612    readonly navigation: PerformanceNavigation;
10613    onresourcetimingbufferfull: ((this: Performance, ev: Event) => any) | null;
10614    readonly timeOrigin: DOMHighResTimeStamp;
10615    /** @deprecated */
10616    readonly timing: PerformanceTiming;
10617    clearMarks(markName?: string): void;
10618    clearMeasures(measureName?: string): void;
10619    clearResourceTimings(): void;
10620    getEntries(): PerformanceEntryList;
10621    getEntriesByName(name: string, type?: string): PerformanceEntryList;
10622    getEntriesByType(type: string): PerformanceEntryList;
10623    mark(markName: string, markOptions?: PerformanceMarkOptions): PerformanceMark;
10624    measure(measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string): PerformanceMeasure;
10625    now(): DOMHighResTimeStamp;
10626    setResourceTimingBufferSize(maxSize: number): void;
10627    toJSON(): any;
10628    addEventListener<K extends keyof PerformanceEventMap>(type: K, listener: (this: Performance, ev: PerformanceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10629    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10630    removeEventListener<K extends keyof PerformanceEventMap>(type: K, listener: (this: Performance, ev: PerformanceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10631    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10632}
10633
10634declare var Performance: {
10635    prototype: Performance;
10636    new(): Performance;
10637};
10638
10639/** 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). */
10640interface PerformanceEntry {
10641    readonly duration: DOMHighResTimeStamp;
10642    readonly entryType: string;
10643    readonly name: string;
10644    readonly startTime: DOMHighResTimeStamp;
10645    toJSON(): any;
10646}
10647
10648declare var PerformanceEntry: {
10649    prototype: PerformanceEntry;
10650    new(): PerformanceEntry;
10651};
10652
10653interface PerformanceEventTiming extends PerformanceEntry {
10654    readonly cancelable: boolean;
10655    readonly processingEnd: DOMHighResTimeStamp;
10656    readonly processingStart: DOMHighResTimeStamp;
10657    readonly target: Node | null;
10658    toJSON(): any;
10659}
10660
10661declare var PerformanceEventTiming: {
10662    prototype: PerformanceEventTiming;
10663    new(): PerformanceEventTiming;
10664};
10665
10666/** 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. */
10667interface PerformanceMark extends PerformanceEntry {
10668    readonly detail: any;
10669}
10670
10671declare var PerformanceMark: {
10672    prototype: PerformanceMark;
10673    new(markName: string, markOptions?: PerformanceMarkOptions): PerformanceMark;
10674};
10675
10676/** 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. */
10677interface PerformanceMeasure extends PerformanceEntry {
10678    readonly detail: any;
10679}
10680
10681declare var PerformanceMeasure: {
10682    prototype: PerformanceMeasure;
10683    new(): PerformanceMeasure;
10684};
10685
10686/**
10687 * The legacy PerformanceNavigation interface represents information about how the navigation to the current document was done.
10688 * @deprecated This interface is deprecated in the Navigation Timing Level 2 specification. Please use the PerformanceNavigationTiming interface instead.
10689 */
10690interface PerformanceNavigation {
10691    /** @deprecated */
10692    readonly redirectCount: number;
10693    /** @deprecated */
10694    readonly type: number;
10695    /** @deprecated */
10696    toJSON(): any;
10697    readonly TYPE_BACK_FORWARD: number;
10698    readonly TYPE_NAVIGATE: number;
10699    readonly TYPE_RELOAD: number;
10700    readonly TYPE_RESERVED: number;
10701}
10702
10703/** @deprecated */
10704declare var PerformanceNavigation: {
10705    prototype: PerformanceNavigation;
10706    new(): PerformanceNavigation;
10707    readonly TYPE_BACK_FORWARD: number;
10708    readonly TYPE_NAVIGATE: number;
10709    readonly TYPE_RELOAD: number;
10710    readonly TYPE_RESERVED: number;
10711};
10712
10713/** 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. */
10714interface PerformanceNavigationTiming extends PerformanceResourceTiming {
10715    readonly domComplete: DOMHighResTimeStamp;
10716    readonly domContentLoadedEventEnd: DOMHighResTimeStamp;
10717    readonly domContentLoadedEventStart: DOMHighResTimeStamp;
10718    readonly domInteractive: DOMHighResTimeStamp;
10719    readonly loadEventEnd: DOMHighResTimeStamp;
10720    readonly loadEventStart: DOMHighResTimeStamp;
10721    readonly redirectCount: number;
10722    readonly type: NavigationTimingType;
10723    readonly unloadEventEnd: DOMHighResTimeStamp;
10724    readonly unloadEventStart: DOMHighResTimeStamp;
10725    toJSON(): any;
10726}
10727
10728declare var PerformanceNavigationTiming: {
10729    prototype: PerformanceNavigationTiming;
10730    new(): PerformanceNavigationTiming;
10731};
10732
10733interface PerformanceObserver {
10734    disconnect(): void;
10735    observe(options?: PerformanceObserverInit): void;
10736    takeRecords(): PerformanceEntryList;
10737}
10738
10739declare var PerformanceObserver: {
10740    prototype: PerformanceObserver;
10741    new(callback: PerformanceObserverCallback): PerformanceObserver;
10742    readonly supportedEntryTypes: ReadonlyArray<string>;
10743};
10744
10745interface PerformanceObserverEntryList {
10746    getEntries(): PerformanceEntryList;
10747    getEntriesByName(name: string, type?: string): PerformanceEntryList;
10748    getEntriesByType(type: string): PerformanceEntryList;
10749}
10750
10751declare var PerformanceObserverEntryList: {
10752    prototype: PerformanceObserverEntryList;
10753    new(): PerformanceObserverEntryList;
10754};
10755
10756interface PerformancePaintTiming extends PerformanceEntry {
10757}
10758
10759declare var PerformancePaintTiming: {
10760    prototype: PerformancePaintTiming;
10761    new(): PerformancePaintTiming;
10762};
10763
10764/** 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. */
10765interface PerformanceResourceTiming extends PerformanceEntry {
10766    readonly connectEnd: DOMHighResTimeStamp;
10767    readonly connectStart: DOMHighResTimeStamp;
10768    readonly decodedBodySize: number;
10769    readonly domainLookupEnd: DOMHighResTimeStamp;
10770    readonly domainLookupStart: DOMHighResTimeStamp;
10771    readonly encodedBodySize: number;
10772    readonly fetchStart: DOMHighResTimeStamp;
10773    readonly initiatorType: string;
10774    readonly nextHopProtocol: string;
10775    readonly redirectEnd: DOMHighResTimeStamp;
10776    readonly redirectStart: DOMHighResTimeStamp;
10777    readonly requestStart: DOMHighResTimeStamp;
10778    readonly responseEnd: DOMHighResTimeStamp;
10779    readonly responseStart: DOMHighResTimeStamp;
10780    readonly secureConnectionStart: DOMHighResTimeStamp;
10781    readonly serverTiming: ReadonlyArray<PerformanceServerTiming>;
10782    readonly transferSize: number;
10783    readonly workerStart: DOMHighResTimeStamp;
10784    toJSON(): any;
10785}
10786
10787declare var PerformanceResourceTiming: {
10788    prototype: PerformanceResourceTiming;
10789    new(): PerformanceResourceTiming;
10790};
10791
10792interface PerformanceServerTiming {
10793    readonly description: string;
10794    readonly duration: DOMHighResTimeStamp;
10795    readonly name: string;
10796    toJSON(): any;
10797}
10798
10799declare var PerformanceServerTiming: {
10800    prototype: PerformanceServerTiming;
10801    new(): PerformanceServerTiming;
10802};
10803
10804/**
10805 * 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.
10806 * @deprecated This interface is deprecated in the Navigation Timing Level 2 specification. Please use the PerformanceNavigationTiming interface instead.
10807 */
10808interface PerformanceTiming {
10809    /** @deprecated */
10810    readonly connectEnd: number;
10811    /** @deprecated */
10812    readonly connectStart: number;
10813    /** @deprecated */
10814    readonly domComplete: number;
10815    /** @deprecated */
10816    readonly domContentLoadedEventEnd: number;
10817    /** @deprecated */
10818    readonly domContentLoadedEventStart: number;
10819    /** @deprecated */
10820    readonly domInteractive: number;
10821    /** @deprecated */
10822    readonly domLoading: number;
10823    /** @deprecated */
10824    readonly domainLookupEnd: number;
10825    /** @deprecated */
10826    readonly domainLookupStart: number;
10827    /** @deprecated */
10828    readonly fetchStart: number;
10829    /** @deprecated */
10830    readonly loadEventEnd: number;
10831    /** @deprecated */
10832    readonly loadEventStart: number;
10833    /** @deprecated */
10834    readonly navigationStart: number;
10835    /** @deprecated */
10836    readonly redirectEnd: number;
10837    /** @deprecated */
10838    readonly redirectStart: number;
10839    /** @deprecated */
10840    readonly requestStart: number;
10841    /** @deprecated */
10842    readonly responseEnd: number;
10843    /** @deprecated */
10844    readonly responseStart: number;
10845    /** @deprecated */
10846    readonly secureConnectionStart: number;
10847    /** @deprecated */
10848    readonly unloadEventEnd: number;
10849    /** @deprecated */
10850    readonly unloadEventStart: number;
10851    /** @deprecated */
10852    toJSON(): any;
10853}
10854
10855/** @deprecated */
10856declare var PerformanceTiming: {
10857    prototype: PerformanceTiming;
10858    new(): PerformanceTiming;
10859};
10860
10861/** 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(). */
10862interface PeriodicWave {
10863}
10864
10865declare var PeriodicWave: {
10866    prototype: PeriodicWave;
10867    new(context: BaseAudioContext, options?: PeriodicWaveOptions): PeriodicWave;
10868};
10869
10870interface PermissionStatusEventMap {
10871    "change": Event;
10872}
10873
10874interface PermissionStatus extends EventTarget {
10875    readonly name: string;
10876    onchange: ((this: PermissionStatus, ev: Event) => any) | null;
10877    readonly state: PermissionState;
10878    addEventListener<K extends keyof PermissionStatusEventMap>(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10879    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10880    removeEventListener<K extends keyof PermissionStatusEventMap>(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10881    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10882}
10883
10884declare var PermissionStatus: {
10885    prototype: PermissionStatus;
10886    new(): PermissionStatus;
10887};
10888
10889interface Permissions {
10890    query(permissionDesc: PermissionDescriptor): Promise<PermissionStatus>;
10891}
10892
10893declare var Permissions: {
10894    prototype: Permissions;
10895    new(): Permissions;
10896};
10897
10898interface PictureInPictureEvent extends Event {
10899    readonly pictureInPictureWindow: PictureInPictureWindow;
10900}
10901
10902declare var PictureInPictureEvent: {
10903    prototype: PictureInPictureEvent;
10904    new(type: string, eventInitDict: PictureInPictureEventInit): PictureInPictureEvent;
10905};
10906
10907interface PictureInPictureWindowEventMap {
10908    "resize": Event;
10909}
10910
10911interface PictureInPictureWindow extends EventTarget {
10912    readonly height: number;
10913    onresize: ((this: PictureInPictureWindow, ev: Event) => any) | null;
10914    readonly width: number;
10915    addEventListener<K extends keyof PictureInPictureWindowEventMap>(type: K, listener: (this: PictureInPictureWindow, ev: PictureInPictureWindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10916    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10917    removeEventListener<K extends keyof PictureInPictureWindowEventMap>(type: K, listener: (this: PictureInPictureWindow, ev: PictureInPictureWindowEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10918    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10919}
10920
10921declare var PictureInPictureWindow: {
10922    prototype: PictureInPictureWindow;
10923    new(): PictureInPictureWindow;
10924};
10925
10926/**
10927 * Provides information about a browser plugin.
10928 * @deprecated
10929 */
10930interface Plugin {
10931    /**
10932     * Returns the plugin's description.
10933     * @deprecated
10934     */
10935    readonly description: string;
10936    /**
10937     * Returns the plugin library's filename, if applicable on the current platform.
10938     * @deprecated
10939     */
10940    readonly filename: string;
10941    /**
10942     * Returns the number of MIME types, represented by MimeType objects, supported by the plugin.
10943     * @deprecated
10944     */
10945    readonly length: number;
10946    /**
10947     * Returns the plugin's name.
10948     * @deprecated
10949     */
10950    readonly name: string;
10951    /**
10952     * Returns the specified MimeType object.
10953     * @deprecated
10954     */
10955    item(index: number): MimeType | null;
10956    /** @deprecated */
10957    namedItem(name: string): MimeType | null;
10958    [index: number]: MimeType;
10959}
10960
10961/** @deprecated */
10962declare var Plugin: {
10963    prototype: Plugin;
10964    new(): Plugin;
10965};
10966
10967/**
10968 * 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.
10969 * @deprecated
10970 */
10971interface PluginArray {
10972    /** @deprecated */
10973    readonly length: number;
10974    /** @deprecated */
10975    item(index: number): Plugin | null;
10976    /** @deprecated */
10977    namedItem(name: string): Plugin | null;
10978    /** @deprecated */
10979    refresh(): void;
10980    [index: number]: Plugin;
10981}
10982
10983/** @deprecated */
10984declare var PluginArray: {
10985    prototype: PluginArray;
10986    new(): PluginArray;
10987};
10988
10989/** 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. */
10990interface PointerEvent extends MouseEvent {
10991    readonly height: number;
10992    readonly isPrimary: boolean;
10993    readonly pointerId: number;
10994    readonly pointerType: string;
10995    readonly pressure: number;
10996    readonly tangentialPressure: number;
10997    readonly tiltX: number;
10998    readonly tiltY: number;
10999    readonly twist: number;
11000    readonly width: number;
11001    /** Available only in secure contexts. */
11002    getCoalescedEvents(): PointerEvent[];
11003    getPredictedEvents(): PointerEvent[];
11004}
11005
11006declare var PointerEvent: {
11007    prototype: PointerEvent;
11008    new(type: string, eventInitDict?: PointerEventInit): PointerEvent;
11009};
11010
11011/** PopStateEvent is an event handler for the popstate event on the window. */
11012interface PopStateEvent extends Event {
11013    /** Returns a copy of the information that was provided to pushState() or replaceState(). */
11014    readonly state: any;
11015}
11016
11017declare var PopStateEvent: {
11018    prototype: PopStateEvent;
11019    new(type: string, eventInitDict?: PopStateEventInit): PopStateEvent;
11020};
11021
11022/** A processing instruction embeds application-specific instructions in XML which can be ignored by other applications that don't recognize them. */
11023interface ProcessingInstruction extends CharacterData, LinkStyle {
11024    readonly ownerDocument: Document;
11025    readonly target: string;
11026}
11027
11028declare var ProcessingInstruction: {
11029    prototype: ProcessingInstruction;
11030    new(): ProcessingInstruction;
11031};
11032
11033/** 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>). */
11034interface ProgressEvent<T extends EventTarget = EventTarget> extends Event {
11035    readonly lengthComputable: boolean;
11036    readonly loaded: number;
11037    readonly target: T | null;
11038    readonly total: number;
11039}
11040
11041declare var ProgressEvent: {
11042    prototype: ProgressEvent;
11043    new(type: string, eventInitDict?: ProgressEventInit): ProgressEvent;
11044};
11045
11046interface PromiseRejectionEvent extends Event {
11047    readonly promise: Promise<any>;
11048    readonly reason: any;
11049}
11050
11051declare var PromiseRejectionEvent: {
11052    prototype: PromiseRejectionEvent;
11053    new(type: string, eventInitDict: PromiseRejectionEventInit): PromiseRejectionEvent;
11054};
11055
11056/** Available only in secure contexts. */
11057interface PublicKeyCredential extends Credential {
11058    readonly authenticatorAttachment: string | null;
11059    readonly rawId: ArrayBuffer;
11060    readonly response: AuthenticatorResponse;
11061    getClientExtensionResults(): AuthenticationExtensionsClientOutputs;
11062}
11063
11064declare var PublicKeyCredential: {
11065    prototype: PublicKeyCredential;
11066    new(): PublicKeyCredential;
11067    isUserVerifyingPlatformAuthenticatorAvailable(): Promise<boolean>;
11068};
11069
11070/**
11071 * This Push API interface provides a way to receive notifications from third-party servers as well as request URLs for push notifications.
11072 * Available only in secure contexts.
11073 */
11074interface PushManager {
11075    getSubscription(): Promise<PushSubscription | null>;
11076    permissionState(options?: PushSubscriptionOptionsInit): Promise<PermissionState>;
11077    subscribe(options?: PushSubscriptionOptionsInit): Promise<PushSubscription>;
11078}
11079
11080declare var PushManager: {
11081    prototype: PushManager;
11082    new(): PushManager;
11083    readonly supportedContentEncodings: ReadonlyArray<string>;
11084};
11085
11086/**
11087 * This Push API interface provides a subcription's URL endpoint and allows unsubscription from a push service.
11088 * Available only in secure contexts.
11089 */
11090interface PushSubscription {
11091    readonly endpoint: string;
11092    readonly expirationTime: EpochTimeStamp | null;
11093    readonly options: PushSubscriptionOptions;
11094    getKey(name: PushEncryptionKeyName): ArrayBuffer | null;
11095    toJSON(): PushSubscriptionJSON;
11096    unsubscribe(): Promise<boolean>;
11097}
11098
11099declare var PushSubscription: {
11100    prototype: PushSubscription;
11101    new(): PushSubscription;
11102};
11103
11104/** Available only in secure contexts. */
11105interface PushSubscriptionOptions {
11106    readonly applicationServerKey: ArrayBuffer | null;
11107    readonly userVisibleOnly: boolean;
11108}
11109
11110declare var PushSubscriptionOptions: {
11111    prototype: PushSubscriptionOptions;
11112    new(): PushSubscriptionOptions;
11113};
11114
11115interface RTCCertificate {
11116    readonly expires: EpochTimeStamp;
11117    getFingerprints(): RTCDtlsFingerprint[];
11118}
11119
11120declare var RTCCertificate: {
11121    prototype: RTCCertificate;
11122    new(): RTCCertificate;
11123};
11124
11125interface RTCDTMFSenderEventMap {
11126    "tonechange": RTCDTMFToneChangeEvent;
11127}
11128
11129interface RTCDTMFSender extends EventTarget {
11130    readonly canInsertDTMF: boolean;
11131    ontonechange: ((this: RTCDTMFSender, ev: RTCDTMFToneChangeEvent) => any) | null;
11132    readonly toneBuffer: string;
11133    insertDTMF(tones: string, duration?: number, interToneGap?: number): void;
11134    addEventListener<K extends keyof RTCDTMFSenderEventMap>(type: K, listener: (this: RTCDTMFSender, ev: RTCDTMFSenderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11135    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11136    removeEventListener<K extends keyof RTCDTMFSenderEventMap>(type: K, listener: (this: RTCDTMFSender, ev: RTCDTMFSenderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11137    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11138}
11139
11140declare var RTCDTMFSender: {
11141    prototype: RTCDTMFSender;
11142    new(): RTCDTMFSender;
11143};
11144
11145/** Events sent to indicate that DTMF tones have started or finished playing. This interface is used by the tonechange event. */
11146interface RTCDTMFToneChangeEvent extends Event {
11147    readonly tone: string;
11148}
11149
11150declare var RTCDTMFToneChangeEvent: {
11151    prototype: RTCDTMFToneChangeEvent;
11152    new(type: string, eventInitDict?: RTCDTMFToneChangeEventInit): RTCDTMFToneChangeEvent;
11153};
11154
11155interface RTCDataChannelEventMap {
11156    "bufferedamountlow": Event;
11157    "close": Event;
11158    "closing": Event;
11159    "error": Event;
11160    "message": MessageEvent;
11161    "open": Event;
11162}
11163
11164interface RTCDataChannel extends EventTarget {
11165    binaryType: BinaryType;
11166    readonly bufferedAmount: number;
11167    bufferedAmountLowThreshold: number;
11168    readonly id: number | null;
11169    readonly label: string;
11170    readonly maxPacketLifeTime: number | null;
11171    readonly maxRetransmits: number | null;
11172    readonly negotiated: boolean;
11173    onbufferedamountlow: ((this: RTCDataChannel, ev: Event) => any) | null;
11174    onclose: ((this: RTCDataChannel, ev: Event) => any) | null;
11175    onclosing: ((this: RTCDataChannel, ev: Event) => any) | null;
11176    onerror: ((this: RTCDataChannel, ev: Event) => any) | null;
11177    onmessage: ((this: RTCDataChannel, ev: MessageEvent) => any) | null;
11178    onopen: ((this: RTCDataChannel, ev: Event) => any) | null;
11179    readonly ordered: boolean;
11180    readonly protocol: string;
11181    readonly readyState: RTCDataChannelState;
11182    close(): void;
11183    send(data: string): void;
11184    send(data: Blob): void;
11185    send(data: ArrayBuffer): void;
11186    send(data: ArrayBufferView): void;
11187    addEventListener<K extends keyof RTCDataChannelEventMap>(type: K, listener: (this: RTCDataChannel, ev: RTCDataChannelEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11188    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11189    removeEventListener<K extends keyof RTCDataChannelEventMap>(type: K, listener: (this: RTCDataChannel, ev: RTCDataChannelEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11190    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11191}
11192
11193declare var RTCDataChannel: {
11194    prototype: RTCDataChannel;
11195    new(): RTCDataChannel;
11196};
11197
11198interface RTCDataChannelEvent extends Event {
11199    readonly channel: RTCDataChannel;
11200}
11201
11202declare var RTCDataChannelEvent: {
11203    prototype: RTCDataChannelEvent;
11204    new(type: string, eventInitDict: RTCDataChannelEventInit): RTCDataChannelEvent;
11205};
11206
11207interface RTCDtlsTransportEventMap {
11208    "error": Event;
11209    "statechange": Event;
11210}
11211
11212interface RTCDtlsTransport extends EventTarget {
11213    readonly iceTransport: RTCIceTransport;
11214    onerror: ((this: RTCDtlsTransport, ev: Event) => any) | null;
11215    onstatechange: ((this: RTCDtlsTransport, ev: Event) => any) | null;
11216    readonly state: RTCDtlsTransportState;
11217    getRemoteCertificates(): ArrayBuffer[];
11218    addEventListener<K extends keyof RTCDtlsTransportEventMap>(type: K, listener: (this: RTCDtlsTransport, ev: RTCDtlsTransportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11219    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11220    removeEventListener<K extends keyof RTCDtlsTransportEventMap>(type: K, listener: (this: RTCDtlsTransport, ev: RTCDtlsTransportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11221    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11222}
11223
11224declare var RTCDtlsTransport: {
11225    prototype: RTCDtlsTransport;
11226    new(): RTCDtlsTransport;
11227};
11228
11229interface RTCEncodedAudioFrame {
11230    data: ArrayBuffer;
11231    readonly timestamp: number;
11232    getMetadata(): RTCEncodedAudioFrameMetadata;
11233}
11234
11235declare var RTCEncodedAudioFrame: {
11236    prototype: RTCEncodedAudioFrame;
11237    new(): RTCEncodedAudioFrame;
11238};
11239
11240interface RTCEncodedVideoFrame {
11241    data: ArrayBuffer;
11242    readonly timestamp: number;
11243    readonly type: RTCEncodedVideoFrameType;
11244    getMetadata(): RTCEncodedVideoFrameMetadata;
11245}
11246
11247declare var RTCEncodedVideoFrame: {
11248    prototype: RTCEncodedVideoFrame;
11249    new(): RTCEncodedVideoFrame;
11250};
11251
11252interface RTCError extends DOMException {
11253    readonly errorDetail: RTCErrorDetailType;
11254    readonly receivedAlert: number | null;
11255    readonly sctpCauseCode: number | null;
11256    readonly sdpLineNumber: number | null;
11257    readonly sentAlert: number | null;
11258}
11259
11260declare var RTCError: {
11261    prototype: RTCError;
11262    new(init: RTCErrorInit, message?: string): RTCError;
11263};
11264
11265interface RTCErrorEvent extends Event {
11266    readonly error: RTCError;
11267}
11268
11269declare var RTCErrorEvent: {
11270    prototype: RTCErrorEvent;
11271    new(type: string, eventInitDict: RTCErrorEventInit): RTCErrorEvent;
11272};
11273
11274/** The RTCIceCandidate interface—part of the WebRTC API—represents a candidate Internet Connectivity Establishment (ICE) configuration which may be used to establish an RTCPeerConnection. */
11275interface RTCIceCandidate {
11276    readonly address: string | null;
11277    readonly candidate: string;
11278    readonly component: RTCIceComponent | null;
11279    readonly foundation: string | null;
11280    readonly port: number | null;
11281    readonly priority: number | null;
11282    readonly protocol: RTCIceProtocol | null;
11283    readonly relatedAddress: string | null;
11284    readonly relatedPort: number | null;
11285    readonly sdpMLineIndex: number | null;
11286    readonly sdpMid: string | null;
11287    readonly tcpType: RTCIceTcpCandidateType | null;
11288    readonly type: RTCIceCandidateType | null;
11289    readonly usernameFragment: string | null;
11290    toJSON(): RTCIceCandidateInit;
11291}
11292
11293declare var RTCIceCandidate: {
11294    prototype: RTCIceCandidate;
11295    new(candidateInitDict?: RTCIceCandidateInit): RTCIceCandidate;
11296};
11297
11298interface RTCIceTransportEventMap {
11299    "gatheringstatechange": Event;
11300    "statechange": Event;
11301}
11302
11303/** Provides access to information about the ICE transport layer over which the data is being sent and received. */
11304interface RTCIceTransport extends EventTarget {
11305    readonly gatheringState: RTCIceGathererState;
11306    ongatheringstatechange: ((this: RTCIceTransport, ev: Event) => any) | null;
11307    onstatechange: ((this: RTCIceTransport, ev: Event) => any) | null;
11308    readonly state: RTCIceTransportState;
11309    addEventListener<K extends keyof RTCIceTransportEventMap>(type: K, listener: (this: RTCIceTransport, ev: RTCIceTransportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11310    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11311    removeEventListener<K extends keyof RTCIceTransportEventMap>(type: K, listener: (this: RTCIceTransport, ev: RTCIceTransportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11312    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11313}
11314
11315declare var RTCIceTransport: {
11316    prototype: RTCIceTransport;
11317    new(): RTCIceTransport;
11318};
11319
11320interface RTCPeerConnectionEventMap {
11321    "connectionstatechange": Event;
11322    "datachannel": RTCDataChannelEvent;
11323    "icecandidate": RTCPeerConnectionIceEvent;
11324    "icecandidateerror": Event;
11325    "iceconnectionstatechange": Event;
11326    "icegatheringstatechange": Event;
11327    "negotiationneeded": Event;
11328    "signalingstatechange": Event;
11329    "track": RTCTrackEvent;
11330}
11331
11332/** 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. */
11333interface RTCPeerConnection extends EventTarget {
11334    readonly canTrickleIceCandidates: boolean | null;
11335    readonly connectionState: RTCPeerConnectionState;
11336    readonly currentLocalDescription: RTCSessionDescription | null;
11337    readonly currentRemoteDescription: RTCSessionDescription | null;
11338    readonly iceConnectionState: RTCIceConnectionState;
11339    readonly iceGatheringState: RTCIceGatheringState;
11340    readonly localDescription: RTCSessionDescription | null;
11341    onconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
11342    ondatachannel: ((this: RTCPeerConnection, ev: RTCDataChannelEvent) => any) | null;
11343    onicecandidate: ((this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => any) | null;
11344    onicecandidateerror: ((this: RTCPeerConnection, ev: Event) => any) | null;
11345    oniceconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
11346    onicegatheringstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
11347    onnegotiationneeded: ((this: RTCPeerConnection, ev: Event) => any) | null;
11348    onsignalingstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
11349    ontrack: ((this: RTCPeerConnection, ev: RTCTrackEvent) => any) | null;
11350    readonly pendingLocalDescription: RTCSessionDescription | null;
11351    readonly pendingRemoteDescription: RTCSessionDescription | null;
11352    readonly remoteDescription: RTCSessionDescription | null;
11353    readonly sctp: RTCSctpTransport | null;
11354    readonly signalingState: RTCSignalingState;
11355    addIceCandidate(candidate?: RTCIceCandidateInit): Promise<void>;
11356    /** @deprecated */
11357    addIceCandidate(candidate: RTCIceCandidateInit, successCallback: VoidFunction, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;
11358    addTrack(track: MediaStreamTrack, ...streams: MediaStream[]): RTCRtpSender;
11359    addTransceiver(trackOrKind: MediaStreamTrack | string, init?: RTCRtpTransceiverInit): RTCRtpTransceiver;
11360    close(): void;
11361    createAnswer(options?: RTCAnswerOptions): Promise<RTCSessionDescriptionInit>;
11362    /** @deprecated */
11363    createAnswer(successCallback: RTCSessionDescriptionCallback, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;
11364    createDataChannel(label: string, dataChannelDict?: RTCDataChannelInit): RTCDataChannel;
11365    createOffer(options?: RTCOfferOptions): Promise<RTCSessionDescriptionInit>;
11366    /** @deprecated */
11367    createOffer(successCallback: RTCSessionDescriptionCallback, failureCallback: RTCPeerConnectionErrorCallback, options?: RTCOfferOptions): Promise<void>;
11368    getConfiguration(): RTCConfiguration;
11369    getReceivers(): RTCRtpReceiver[];
11370    getSenders(): RTCRtpSender[];
11371    getStats(selector?: MediaStreamTrack | null): Promise<RTCStatsReport>;
11372    getTransceivers(): RTCRtpTransceiver[];
11373    removeTrack(sender: RTCRtpSender): void;
11374    restartIce(): void;
11375    setConfiguration(configuration?: RTCConfiguration): void;
11376    setLocalDescription(description?: RTCLocalSessionDescriptionInit): Promise<void>;
11377    /** @deprecated */
11378    setLocalDescription(description: RTCLocalSessionDescriptionInit, successCallback: VoidFunction, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;
11379    setRemoteDescription(description: RTCSessionDescriptionInit): Promise<void>;
11380    /** @deprecated */
11381    setRemoteDescription(description: RTCSessionDescriptionInit, successCallback: VoidFunction, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;
11382    addEventListener<K extends keyof RTCPeerConnectionEventMap>(type: K, listener: (this: RTCPeerConnection, ev: RTCPeerConnectionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11383    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11384    removeEventListener<K extends keyof RTCPeerConnectionEventMap>(type: K, listener: (this: RTCPeerConnection, ev: RTCPeerConnectionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11385    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11386}
11387
11388declare var RTCPeerConnection: {
11389    prototype: RTCPeerConnection;
11390    new(configuration?: RTCConfiguration): RTCPeerConnection;
11391    generateCertificate(keygenAlgorithm: AlgorithmIdentifier): Promise<RTCCertificate>;
11392};
11393
11394interface RTCPeerConnectionIceErrorEvent extends Event {
11395    readonly address: string | null;
11396    readonly errorCode: number;
11397    readonly errorText: string;
11398    readonly port: number | null;
11399    readonly url: string;
11400}
11401
11402declare var RTCPeerConnectionIceErrorEvent: {
11403    prototype: RTCPeerConnectionIceErrorEvent;
11404    new(type: string, eventInitDict: RTCPeerConnectionIceErrorEventInit): RTCPeerConnectionIceErrorEvent;
11405};
11406
11407/** Events that occurs in relation to ICE candidates with the target, usually an RTCPeerConnection. Only one event is of this type: icecandidate. */
11408interface RTCPeerConnectionIceEvent extends Event {
11409    readonly candidate: RTCIceCandidate | null;
11410}
11411
11412declare var RTCPeerConnectionIceEvent: {
11413    prototype: RTCPeerConnectionIceEvent;
11414    new(type: string, eventInitDict?: RTCPeerConnectionIceEventInit): RTCPeerConnectionIceEvent;
11415};
11416
11417/** This WebRTC API interface manages the reception and decoding of data for a MediaStreamTrack on an RTCPeerConnection. */
11418interface RTCRtpReceiver {
11419    readonly track: MediaStreamTrack;
11420    readonly transport: RTCDtlsTransport | null;
11421    getContributingSources(): RTCRtpContributingSource[];
11422    getParameters(): RTCRtpReceiveParameters;
11423    getStats(): Promise<RTCStatsReport>;
11424    getSynchronizationSources(): RTCRtpSynchronizationSource[];
11425}
11426
11427declare var RTCRtpReceiver: {
11428    prototype: RTCRtpReceiver;
11429    new(): RTCRtpReceiver;
11430    getCapabilities(kind: string): RTCRtpCapabilities | null;
11431};
11432
11433/** Provides the ability to control and obtain details about how a particular MediaStreamTrack is encoded and sent to a remote peer. */
11434interface RTCRtpSender {
11435    readonly dtmf: RTCDTMFSender | null;
11436    readonly track: MediaStreamTrack | null;
11437    readonly transport: RTCDtlsTransport | null;
11438    getParameters(): RTCRtpSendParameters;
11439    getStats(): Promise<RTCStatsReport>;
11440    replaceTrack(withTrack: MediaStreamTrack | null): Promise<void>;
11441    setParameters(parameters: RTCRtpSendParameters): Promise<void>;
11442    setStreams(...streams: MediaStream[]): void;
11443}
11444
11445declare var RTCRtpSender: {
11446    prototype: RTCRtpSender;
11447    new(): RTCRtpSender;
11448    getCapabilities(kind: string): RTCRtpCapabilities | null;
11449};
11450
11451interface RTCRtpTransceiver {
11452    readonly currentDirection: RTCRtpTransceiverDirection | null;
11453    direction: RTCRtpTransceiverDirection;
11454    readonly mid: string | null;
11455    readonly receiver: RTCRtpReceiver;
11456    readonly sender: RTCRtpSender;
11457    setCodecPreferences(codecs: RTCRtpCodecCapability[]): void;
11458    stop(): void;
11459}
11460
11461declare var RTCRtpTransceiver: {
11462    prototype: RTCRtpTransceiver;
11463    new(): RTCRtpTransceiver;
11464};
11465
11466interface RTCSctpTransportEventMap {
11467    "statechange": Event;
11468}
11469
11470interface RTCSctpTransport extends EventTarget {
11471    readonly maxChannels: number | null;
11472    readonly maxMessageSize: number;
11473    onstatechange: ((this: RTCSctpTransport, ev: Event) => any) | null;
11474    readonly state: RTCSctpTransportState;
11475    readonly transport: RTCDtlsTransport;
11476    addEventListener<K extends keyof RTCSctpTransportEventMap>(type: K, listener: (this: RTCSctpTransport, ev: RTCSctpTransportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11477    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11478    removeEventListener<K extends keyof RTCSctpTransportEventMap>(type: K, listener: (this: RTCSctpTransport, ev: RTCSctpTransportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11479    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11480}
11481
11482declare var RTCSctpTransport: {
11483    prototype: RTCSctpTransport;
11484    new(): RTCSctpTransport;
11485};
11486
11487/** 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. */
11488interface RTCSessionDescription {
11489    readonly sdp: string;
11490    readonly type: RTCSdpType;
11491    toJSON(): any;
11492}
11493
11494declare var RTCSessionDescription: {
11495    prototype: RTCSessionDescription;
11496    new(descriptionInitDict: RTCSessionDescriptionInit): RTCSessionDescription;
11497};
11498
11499interface RTCStatsReport {
11500    forEach(callbackfn: (value: any, key: string, parent: RTCStatsReport) => void, thisArg?: any): void;
11501}
11502
11503declare var RTCStatsReport: {
11504    prototype: RTCStatsReport;
11505    new(): RTCStatsReport;
11506};
11507
11508interface RTCTrackEvent extends Event {
11509    readonly receiver: RTCRtpReceiver;
11510    readonly streams: ReadonlyArray<MediaStream>;
11511    readonly track: MediaStreamTrack;
11512    readonly transceiver: RTCRtpTransceiver;
11513}
11514
11515declare var RTCTrackEvent: {
11516    prototype: RTCTrackEvent;
11517    new(type: string, eventInitDict: RTCTrackEventInit): RTCTrackEvent;
11518};
11519
11520interface RadioNodeList extends NodeList {
11521    value: string;
11522}
11523
11524declare var RadioNodeList: {
11525    prototype: RadioNodeList;
11526    new(): RadioNodeList;
11527};
11528
11529/** A fragment of a document that can contain nodes and parts of text nodes. */
11530interface Range extends AbstractRange {
11531    /** Returns the node, furthest away from the document, that is an ancestor of both range's start node and end node. */
11532    readonly commonAncestorContainer: Node;
11533    cloneContents(): DocumentFragment;
11534    cloneRange(): Range;
11535    collapse(toStart?: boolean): void;
11536    compareBoundaryPoints(how: number, sourceRange: Range): number;
11537    /** 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. */
11538    comparePoint(node: Node, offset: number): number;
11539    createContextualFragment(fragment: string): DocumentFragment;
11540    deleteContents(): void;
11541    detach(): void;
11542    extractContents(): DocumentFragment;
11543    getBoundingClientRect(): DOMRect;
11544    getClientRects(): DOMRectList;
11545    insertNode(node: Node): void;
11546    /** Returns whether range intersects node. */
11547    intersectsNode(node: Node): boolean;
11548    isPointInRange(node: Node, offset: number): boolean;
11549    selectNode(node: Node): void;
11550    selectNodeContents(node: Node): void;
11551    setEnd(node: Node, offset: number): void;
11552    setEndAfter(node: Node): void;
11553    setEndBefore(node: Node): void;
11554    setStart(node: Node, offset: number): void;
11555    setStartAfter(node: Node): void;
11556    setStartBefore(node: Node): void;
11557    surroundContents(newParent: Node): void;
11558    toString(): string;
11559    readonly END_TO_END: number;
11560    readonly END_TO_START: number;
11561    readonly START_TO_END: number;
11562    readonly START_TO_START: number;
11563}
11564
11565declare var Range: {
11566    prototype: Range;
11567    new(): Range;
11568    readonly END_TO_END: number;
11569    readonly END_TO_START: number;
11570    readonly START_TO_END: number;
11571    readonly START_TO_START: number;
11572    toString(): string;
11573};
11574
11575interface ReadableByteStreamController {
11576    readonly byobRequest: ReadableStreamBYOBRequest | null;
11577    readonly desiredSize: number | null;
11578    close(): void;
11579    enqueue(chunk: ArrayBufferView): void;
11580    error(e?: any): void;
11581}
11582
11583declare var ReadableByteStreamController: {
11584    prototype: ReadableByteStreamController;
11585    new(): ReadableByteStreamController;
11586};
11587
11588/** 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. */
11589interface ReadableStream<R = any> {
11590    readonly locked: boolean;
11591    cancel(reason?: any): Promise<void>;
11592    getReader(options: { mode: "byob" }): ReadableStreamBYOBReader;
11593    getReader(): ReadableStreamDefaultReader<R>;
11594    getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader<R>;
11595    pipeThrough<T>(transform: ReadableWritablePair<T, R>, options?: StreamPipeOptions): ReadableStream<T>;
11596    pipeTo(destination: WritableStream<R>, options?: StreamPipeOptions): Promise<void>;
11597    tee(): [ReadableStream<R>, ReadableStream<R>];
11598}
11599
11600declare var ReadableStream: {
11601    prototype: ReadableStream;
11602    new(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number }): ReadableStream<Uint8Array>;
11603    new<R = any>(underlyingSource: UnderlyingDefaultSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;
11604    new<R = any>(underlyingSource?: UnderlyingSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;
11605};
11606
11607interface ReadableStreamBYOBReader extends ReadableStreamGenericReader {
11608    read<T extends ArrayBufferView>(view: T): Promise<ReadableStreamReadResult<T>>;
11609    releaseLock(): void;
11610}
11611
11612declare var ReadableStreamBYOBReader: {
11613    prototype: ReadableStreamBYOBReader;
11614    new(stream: ReadableStream): ReadableStreamBYOBReader;
11615};
11616
11617interface ReadableStreamBYOBRequest {
11618    readonly view: ArrayBufferView | null;
11619    respond(bytesWritten: number): void;
11620    respondWithNewView(view: ArrayBufferView): void;
11621}
11622
11623declare var ReadableStreamBYOBRequest: {
11624    prototype: ReadableStreamBYOBRequest;
11625    new(): ReadableStreamBYOBRequest;
11626};
11627
11628interface ReadableStreamDefaultController<R = any> {
11629    readonly desiredSize: number | null;
11630    close(): void;
11631    enqueue(chunk?: R): void;
11632    error(e?: any): void;
11633}
11634
11635declare var ReadableStreamDefaultController: {
11636    prototype: ReadableStreamDefaultController;
11637    new(): ReadableStreamDefaultController;
11638};
11639
11640interface ReadableStreamDefaultReader<R = any> extends ReadableStreamGenericReader {
11641    read(): Promise<ReadableStreamReadResult<R>>;
11642    releaseLock(): void;
11643}
11644
11645declare var ReadableStreamDefaultReader: {
11646    prototype: ReadableStreamDefaultReader;
11647    new<R = any>(stream: ReadableStream<R>): ReadableStreamDefaultReader<R>;
11648};
11649
11650interface ReadableStreamGenericReader {
11651    readonly closed: Promise<undefined>;
11652    cancel(reason?: any): Promise<void>;
11653}
11654
11655interface RemotePlaybackEventMap {
11656    "connect": Event;
11657    "connecting": Event;
11658    "disconnect": Event;
11659}
11660
11661interface RemotePlayback extends EventTarget {
11662    onconnect: ((this: RemotePlayback, ev: Event) => any) | null;
11663    onconnecting: ((this: RemotePlayback, ev: Event) => any) | null;
11664    ondisconnect: ((this: RemotePlayback, ev: Event) => any) | null;
11665    readonly state: RemotePlaybackState;
11666    cancelWatchAvailability(id?: number): Promise<void>;
11667    prompt(): Promise<void>;
11668    watchAvailability(callback: RemotePlaybackAvailabilityCallback): Promise<number>;
11669    addEventListener<K extends keyof RemotePlaybackEventMap>(type: K, listener: (this: RemotePlayback, ev: RemotePlaybackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11670    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11671    removeEventListener<K extends keyof RemotePlaybackEventMap>(type: K, listener: (this: RemotePlayback, ev: RemotePlaybackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11672    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11673}
11674
11675declare var RemotePlayback: {
11676    prototype: RemotePlayback;
11677    new(): RemotePlayback;
11678};
11679
11680/** This Fetch API interface represents a resource request. */
11681interface Request extends Body {
11682    /** Returns the cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. */
11683    readonly cache: RequestCache;
11684    /** 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. */
11685    readonly credentials: RequestCredentials;
11686    /** Returns the kind of resource requested by request, e.g., "document" or "script". */
11687    readonly destination: RequestDestination;
11688    /** 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. */
11689    readonly headers: Headers;
11690    /** 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] */
11691    readonly integrity: string;
11692    /** Returns a boolean indicating whether or not request can outlive the global in which it was created. */
11693    readonly keepalive: boolean;
11694    /** Returns request's HTTP method, which is "GET" by default. */
11695    readonly method: string;
11696    /** 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. */
11697    readonly mode: RequestMode;
11698    /** 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. */
11699    readonly redirect: RequestRedirect;
11700    /** 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. */
11701    readonly referrer: string;
11702    /** Returns the referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. */
11703    readonly referrerPolicy: ReferrerPolicy;
11704    /** Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. */
11705    readonly signal: AbortSignal;
11706    /** Returns the URL of request as a string. */
11707    readonly url: string;
11708    clone(): Request;
11709}
11710
11711declare var Request: {
11712    prototype: Request;
11713    new(input: RequestInfo | URL, init?: RequestInit): Request;
11714};
11715
11716interface ResizeObserver {
11717    disconnect(): void;
11718    observe(target: Element, options?: ResizeObserverOptions): void;
11719    unobserve(target: Element): void;
11720}
11721
11722declare var ResizeObserver: {
11723    prototype: ResizeObserver;
11724    new(callback: ResizeObserverCallback): ResizeObserver;
11725};
11726
11727interface ResizeObserverEntry {
11728    readonly borderBoxSize: ReadonlyArray<ResizeObserverSize>;
11729    readonly contentBoxSize: ReadonlyArray<ResizeObserverSize>;
11730    readonly contentRect: DOMRectReadOnly;
11731    readonly devicePixelContentBoxSize: ReadonlyArray<ResizeObserverSize>;
11732    readonly target: Element;
11733}
11734
11735declare var ResizeObserverEntry: {
11736    prototype: ResizeObserverEntry;
11737    new(): ResizeObserverEntry;
11738};
11739
11740interface ResizeObserverSize {
11741    readonly blockSize: number;
11742    readonly inlineSize: number;
11743}
11744
11745declare var ResizeObserverSize: {
11746    prototype: ResizeObserverSize;
11747    new(): ResizeObserverSize;
11748};
11749
11750/** This Fetch API interface represents the response to a request. */
11751interface Response extends Body {
11752    readonly headers: Headers;
11753    readonly ok: boolean;
11754    readonly redirected: boolean;
11755    readonly status: number;
11756    readonly statusText: string;
11757    readonly type: ResponseType;
11758    readonly url: string;
11759    clone(): Response;
11760}
11761
11762declare var Response: {
11763    prototype: Response;
11764    new(body?: BodyInit | null, init?: ResponseInit): Response;
11765    error(): Response;
11766    redirect(url: string | URL, status?: number): Response;
11767};
11768
11769/** Provides access to the properties of <a> element, as well as methods to manipulate them. */
11770interface SVGAElement extends SVGGraphicsElement, SVGURIReference {
11771    rel: string;
11772    readonly relList: DOMTokenList;
11773    readonly target: SVGAnimatedString;
11774    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11775    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11776    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11777    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11778}
11779
11780declare var SVGAElement: {
11781    prototype: SVGAElement;
11782    new(): SVGAElement;
11783};
11784
11785/** Used to represent a value that can be an <angle> or <number> value. An SVGAngle reflected through the animVal attribute is always read only. */
11786interface SVGAngle {
11787    readonly unitType: number;
11788    value: number;
11789    valueAsString: string;
11790    valueInSpecifiedUnits: number;
11791    convertToSpecifiedUnits(unitType: number): void;
11792    newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void;
11793    readonly SVG_ANGLETYPE_DEG: number;
11794    readonly SVG_ANGLETYPE_GRAD: number;
11795    readonly SVG_ANGLETYPE_RAD: number;
11796    readonly SVG_ANGLETYPE_UNKNOWN: number;
11797    readonly SVG_ANGLETYPE_UNSPECIFIED: number;
11798}
11799
11800declare var SVGAngle: {
11801    prototype: SVGAngle;
11802    new(): SVGAngle;
11803    readonly SVG_ANGLETYPE_DEG: number;
11804    readonly SVG_ANGLETYPE_GRAD: number;
11805    readonly SVG_ANGLETYPE_RAD: number;
11806    readonly SVG_ANGLETYPE_UNKNOWN: number;
11807    readonly SVG_ANGLETYPE_UNSPECIFIED: number;
11808};
11809
11810interface SVGAnimateElement extends SVGAnimationElement {
11811    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11812    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11813    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11814    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11815}
11816
11817declare var SVGAnimateElement: {
11818    prototype: SVGAnimateElement;
11819    new(): SVGAnimateElement;
11820};
11821
11822interface SVGAnimateMotionElement extends SVGAnimationElement {
11823    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateMotionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11824    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11825    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateMotionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11826    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11827}
11828
11829declare var SVGAnimateMotionElement: {
11830    prototype: SVGAnimateMotionElement;
11831    new(): SVGAnimateMotionElement;
11832};
11833
11834interface SVGAnimateTransformElement extends SVGAnimationElement {
11835    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateTransformElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11836    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11837    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateTransformElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11838    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11839}
11840
11841declare var SVGAnimateTransformElement: {
11842    prototype: SVGAnimateTransformElement;
11843    new(): SVGAnimateTransformElement;
11844};
11845
11846/** Used for attributes of basic type <angle> which can be animated. */
11847interface SVGAnimatedAngle {
11848    readonly animVal: SVGAngle;
11849    readonly baseVal: SVGAngle;
11850}
11851
11852declare var SVGAnimatedAngle: {
11853    prototype: SVGAnimatedAngle;
11854    new(): SVGAnimatedAngle;
11855};
11856
11857/** Used for attributes of type boolean which can be animated. */
11858interface SVGAnimatedBoolean {
11859    readonly animVal: boolean;
11860    baseVal: boolean;
11861}
11862
11863declare var SVGAnimatedBoolean: {
11864    prototype: SVGAnimatedBoolean;
11865    new(): SVGAnimatedBoolean;
11866};
11867
11868/** Used for attributes whose value must be a constant from a particular enumeration and which can be animated. */
11869interface SVGAnimatedEnumeration {
11870    readonly animVal: number;
11871    baseVal: number;
11872}
11873
11874declare var SVGAnimatedEnumeration: {
11875    prototype: SVGAnimatedEnumeration;
11876    new(): SVGAnimatedEnumeration;
11877};
11878
11879/** Used for attributes of basic type <integer> which can be animated. */
11880interface SVGAnimatedInteger {
11881    readonly animVal: number;
11882    baseVal: number;
11883}
11884
11885declare var SVGAnimatedInteger: {
11886    prototype: SVGAnimatedInteger;
11887    new(): SVGAnimatedInteger;
11888};
11889
11890/** Used for attributes of basic type <length> which can be animated. */
11891interface SVGAnimatedLength {
11892    readonly animVal: SVGLength;
11893    readonly baseVal: SVGLength;
11894}
11895
11896declare var SVGAnimatedLength: {
11897    prototype: SVGAnimatedLength;
11898    new(): SVGAnimatedLength;
11899};
11900
11901/** Used for attributes of type SVGLengthList which can be animated. */
11902interface SVGAnimatedLengthList {
11903    readonly animVal: SVGLengthList;
11904    readonly baseVal: SVGLengthList;
11905}
11906
11907declare var SVGAnimatedLengthList: {
11908    prototype: SVGAnimatedLengthList;
11909    new(): SVGAnimatedLengthList;
11910};
11911
11912/** Used for attributes of basic type <Number> which can be animated. */
11913interface SVGAnimatedNumber {
11914    readonly animVal: number;
11915    baseVal: number;
11916}
11917
11918declare var SVGAnimatedNumber: {
11919    prototype: SVGAnimatedNumber;
11920    new(): SVGAnimatedNumber;
11921};
11922
11923/** The SVGAnimatedNumber interface is used for attributes which take a list of numbers and which can be animated. */
11924interface SVGAnimatedNumberList {
11925    readonly animVal: SVGNumberList;
11926    readonly baseVal: SVGNumberList;
11927}
11928
11929declare var SVGAnimatedNumberList: {
11930    prototype: SVGAnimatedNumberList;
11931    new(): SVGAnimatedNumberList;
11932};
11933
11934interface SVGAnimatedPoints {
11935    readonly animatedPoints: SVGPointList;
11936    readonly points: SVGPointList;
11937}
11938
11939/** Used for attributes of type SVGPreserveAspectRatio which can be animated. */
11940interface SVGAnimatedPreserveAspectRatio {
11941    readonly animVal: SVGPreserveAspectRatio;
11942    readonly baseVal: SVGPreserveAspectRatio;
11943}
11944
11945declare var SVGAnimatedPreserveAspectRatio: {
11946    prototype: SVGAnimatedPreserveAspectRatio;
11947    new(): SVGAnimatedPreserveAspectRatio;
11948};
11949
11950/** Used for attributes of basic SVGRect which can be animated. */
11951interface SVGAnimatedRect {
11952    readonly animVal: DOMRectReadOnly;
11953    readonly baseVal: DOMRect;
11954}
11955
11956declare var SVGAnimatedRect: {
11957    prototype: SVGAnimatedRect;
11958    new(): SVGAnimatedRect;
11959};
11960
11961/** 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. */
11962interface SVGAnimatedString {
11963    readonly animVal: string;
11964    baseVal: string;
11965}
11966
11967declare var SVGAnimatedString: {
11968    prototype: SVGAnimatedString;
11969    new(): SVGAnimatedString;
11970};
11971
11972/** Used for attributes which take a list of numbers and which can be animated. */
11973interface SVGAnimatedTransformList {
11974    readonly animVal: SVGTransformList;
11975    readonly baseVal: SVGTransformList;
11976}
11977
11978declare var SVGAnimatedTransformList: {
11979    prototype: SVGAnimatedTransformList;
11980    new(): SVGAnimatedTransformList;
11981};
11982
11983interface SVGAnimationElement extends SVGElement, SVGTests {
11984    readonly targetElement: SVGElement | null;
11985    beginElement(): void;
11986    beginElementAt(offset: number): void;
11987    endElement(): void;
11988    endElementAt(offset: number): void;
11989    getCurrentTime(): number;
11990    getSimpleDuration(): number;
11991    getStartTime(): number;
11992    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimationElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
11993    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11994    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimationElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
11995    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11996}
11997
11998declare var SVGAnimationElement: {
11999    prototype: SVGAnimationElement;
12000    new(): SVGAnimationElement;
12001};
12002
12003/** 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. */
12004interface SVGCircleElement extends SVGGeometryElement {
12005    readonly cx: SVGAnimatedLength;
12006    readonly cy: SVGAnimatedLength;
12007    readonly r: SVGAnimatedLength;
12008    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGCircleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12009    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12010    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGCircleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12011    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12012}
12013
12014declare var SVGCircleElement: {
12015    prototype: SVGCircleElement;
12016    new(): SVGCircleElement;
12017};
12018
12019/** Provides access to the properties of <clipPath> elements, as well as methods to manipulate them. */
12020interface SVGClipPathElement extends SVGElement {
12021    readonly clipPathUnits: SVGAnimatedEnumeration;
12022    readonly transform: SVGAnimatedTransformList;
12023    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGClipPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12024    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12025    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGClipPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12026    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12027}
12028
12029declare var SVGClipPathElement: {
12030    prototype: SVGClipPathElement;
12031    new(): SVGClipPathElement;
12032};
12033
12034/** A base interface used by the component transfer function interfaces. */
12035interface SVGComponentTransferFunctionElement extends SVGElement {
12036    readonly amplitude: SVGAnimatedNumber;
12037    readonly exponent: SVGAnimatedNumber;
12038    readonly intercept: SVGAnimatedNumber;
12039    readonly offset: SVGAnimatedNumber;
12040    readonly slope: SVGAnimatedNumber;
12041    readonly tableValues: SVGAnimatedNumberList;
12042    readonly type: SVGAnimatedEnumeration;
12043    readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number;
12044    readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number;
12045    readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number;
12046    readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number;
12047    readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number;
12048    readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number;
12049    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGComponentTransferFunctionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12050    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12051    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGComponentTransferFunctionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12052    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12053}
12054
12055declare var SVGComponentTransferFunctionElement: {
12056    prototype: SVGComponentTransferFunctionElement;
12057    new(): SVGComponentTransferFunctionElement;
12058    readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number;
12059    readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number;
12060    readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number;
12061    readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number;
12062    readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number;
12063    readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number;
12064};
12065
12066/** Corresponds to the <defs> element. */
12067interface SVGDefsElement extends SVGGraphicsElement {
12068    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDefsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12069    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12070    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDefsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12071    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12072}
12073
12074declare var SVGDefsElement: {
12075    prototype: SVGDefsElement;
12076    new(): SVGDefsElement;
12077};
12078
12079/** Corresponds to the <desc> element. */
12080interface SVGDescElement extends SVGElement {
12081    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDescElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12082    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12083    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDescElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12084    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12085}
12086
12087declare var SVGDescElement: {
12088    prototype: SVGDescElement;
12089    new(): SVGDescElement;
12090};
12091
12092interface SVGElementEventMap extends ElementEventMap, DocumentAndElementEventHandlersEventMap, GlobalEventHandlersEventMap {
12093}
12094
12095/** All of the SVG DOM interfaces that correspond directly to elements in the SVG language derive from the SVGElement interface. */
12096interface SVGElement extends Element, DocumentAndElementEventHandlers, ElementCSSInlineStyle, GlobalEventHandlers, HTMLOrSVGElement {
12097    /** @deprecated */
12098    readonly className: any;
12099    readonly ownerSVGElement: SVGSVGElement | null;
12100    readonly viewportElement: SVGElement | null;
12101    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12102    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12103    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12104    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12105}
12106
12107declare var SVGElement: {
12108    prototype: SVGElement;
12109    new(): SVGElement;
12110};
12111
12112/** Provides access to the properties of <ellipse> elements. */
12113interface SVGEllipseElement extends SVGGeometryElement {
12114    readonly cx: SVGAnimatedLength;
12115    readonly cy: SVGAnimatedLength;
12116    readonly rx: SVGAnimatedLength;
12117    readonly ry: SVGAnimatedLength;
12118    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGEllipseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12119    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12120    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGEllipseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12121    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12122}
12123
12124declare var SVGEllipseElement: {
12125    prototype: SVGEllipseElement;
12126    new(): SVGEllipseElement;
12127};
12128
12129/** Corresponds to the <feBlend> element. */
12130interface SVGFEBlendElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12131    readonly in1: SVGAnimatedString;
12132    readonly in2: SVGAnimatedString;
12133    readonly mode: SVGAnimatedEnumeration;
12134    readonly SVG_FEBLEND_MODE_COLOR: number;
12135    readonly SVG_FEBLEND_MODE_COLOR_BURN: number;
12136    readonly SVG_FEBLEND_MODE_COLOR_DODGE: number;
12137    readonly SVG_FEBLEND_MODE_DARKEN: number;
12138    readonly SVG_FEBLEND_MODE_DIFFERENCE: number;
12139    readonly SVG_FEBLEND_MODE_EXCLUSION: number;
12140    readonly SVG_FEBLEND_MODE_HARD_LIGHT: number;
12141    readonly SVG_FEBLEND_MODE_HUE: number;
12142    readonly SVG_FEBLEND_MODE_LIGHTEN: number;
12143    readonly SVG_FEBLEND_MODE_LUMINOSITY: number;
12144    readonly SVG_FEBLEND_MODE_MULTIPLY: number;
12145    readonly SVG_FEBLEND_MODE_NORMAL: number;
12146    readonly SVG_FEBLEND_MODE_OVERLAY: number;
12147    readonly SVG_FEBLEND_MODE_SATURATION: number;
12148    readonly SVG_FEBLEND_MODE_SCREEN: number;
12149    readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number;
12150    readonly SVG_FEBLEND_MODE_UNKNOWN: number;
12151    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEBlendElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12152    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12153    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEBlendElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12154    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12155}
12156
12157declare var SVGFEBlendElement: {
12158    prototype: SVGFEBlendElement;
12159    new(): SVGFEBlendElement;
12160    readonly SVG_FEBLEND_MODE_COLOR: number;
12161    readonly SVG_FEBLEND_MODE_COLOR_BURN: number;
12162    readonly SVG_FEBLEND_MODE_COLOR_DODGE: number;
12163    readonly SVG_FEBLEND_MODE_DARKEN: number;
12164    readonly SVG_FEBLEND_MODE_DIFFERENCE: number;
12165    readonly SVG_FEBLEND_MODE_EXCLUSION: number;
12166    readonly SVG_FEBLEND_MODE_HARD_LIGHT: number;
12167    readonly SVG_FEBLEND_MODE_HUE: number;
12168    readonly SVG_FEBLEND_MODE_LIGHTEN: number;
12169    readonly SVG_FEBLEND_MODE_LUMINOSITY: number;
12170    readonly SVG_FEBLEND_MODE_MULTIPLY: number;
12171    readonly SVG_FEBLEND_MODE_NORMAL: number;
12172    readonly SVG_FEBLEND_MODE_OVERLAY: number;
12173    readonly SVG_FEBLEND_MODE_SATURATION: number;
12174    readonly SVG_FEBLEND_MODE_SCREEN: number;
12175    readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number;
12176    readonly SVG_FEBLEND_MODE_UNKNOWN: number;
12177};
12178
12179/** Corresponds to the <feColorMatrix> element. */
12180interface SVGFEColorMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12181    readonly in1: SVGAnimatedString;
12182    readonly type: SVGAnimatedEnumeration;
12183    readonly values: SVGAnimatedNumberList;
12184    readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number;
12185    readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number;
12186    readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number;
12187    readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number;
12188    readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number;
12189    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEColorMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12190    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12191    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEColorMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12192    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12193}
12194
12195declare var SVGFEColorMatrixElement: {
12196    prototype: SVGFEColorMatrixElement;
12197    new(): SVGFEColorMatrixElement;
12198    readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number;
12199    readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number;
12200    readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number;
12201    readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number;
12202    readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number;
12203};
12204
12205/** Corresponds to the <feComponentTransfer> element. */
12206interface SVGFEComponentTransferElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12207    readonly in1: SVGAnimatedString;
12208    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEComponentTransferElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12209    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12210    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEComponentTransferElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12211    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12212}
12213
12214declare var SVGFEComponentTransferElement: {
12215    prototype: SVGFEComponentTransferElement;
12216    new(): SVGFEComponentTransferElement;
12217};
12218
12219/** Corresponds to the <feComposite> element. */
12220interface SVGFECompositeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12221    readonly in1: SVGAnimatedString;
12222    readonly in2: SVGAnimatedString;
12223    readonly k1: SVGAnimatedNumber;
12224    readonly k2: SVGAnimatedNumber;
12225    readonly k3: SVGAnimatedNumber;
12226    readonly k4: SVGAnimatedNumber;
12227    readonly operator: SVGAnimatedEnumeration;
12228    readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number;
12229    readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number;
12230    readonly SVG_FECOMPOSITE_OPERATOR_IN: number;
12231    readonly SVG_FECOMPOSITE_OPERATOR_OUT: number;
12232    readonly SVG_FECOMPOSITE_OPERATOR_OVER: number;
12233    readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number;
12234    readonly SVG_FECOMPOSITE_OPERATOR_XOR: number;
12235    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFECompositeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12236    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12237    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFECompositeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12238    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12239}
12240
12241declare var SVGFECompositeElement: {
12242    prototype: SVGFECompositeElement;
12243    new(): SVGFECompositeElement;
12244    readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number;
12245    readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number;
12246    readonly SVG_FECOMPOSITE_OPERATOR_IN: number;
12247    readonly SVG_FECOMPOSITE_OPERATOR_OUT: number;
12248    readonly SVG_FECOMPOSITE_OPERATOR_OVER: number;
12249    readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number;
12250    readonly SVG_FECOMPOSITE_OPERATOR_XOR: number;
12251};
12252
12253/** Corresponds to the <feConvolveMatrix> element. */
12254interface SVGFEConvolveMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12255    readonly bias: SVGAnimatedNumber;
12256    readonly divisor: SVGAnimatedNumber;
12257    readonly edgeMode: SVGAnimatedEnumeration;
12258    readonly in1: SVGAnimatedString;
12259    readonly kernelMatrix: SVGAnimatedNumberList;
12260    readonly kernelUnitLengthX: SVGAnimatedNumber;
12261    readonly kernelUnitLengthY: SVGAnimatedNumber;
12262    readonly orderX: SVGAnimatedInteger;
12263    readonly orderY: SVGAnimatedInteger;
12264    readonly preserveAlpha: SVGAnimatedBoolean;
12265    readonly targetX: SVGAnimatedInteger;
12266    readonly targetY: SVGAnimatedInteger;
12267    readonly SVG_EDGEMODE_DUPLICATE: number;
12268    readonly SVG_EDGEMODE_NONE: number;
12269    readonly SVG_EDGEMODE_UNKNOWN: number;
12270    readonly SVG_EDGEMODE_WRAP: number;
12271    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEConvolveMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12272    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12273    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEConvolveMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12274    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12275}
12276
12277declare var SVGFEConvolveMatrixElement: {
12278    prototype: SVGFEConvolveMatrixElement;
12279    new(): SVGFEConvolveMatrixElement;
12280    readonly SVG_EDGEMODE_DUPLICATE: number;
12281    readonly SVG_EDGEMODE_NONE: number;
12282    readonly SVG_EDGEMODE_UNKNOWN: number;
12283    readonly SVG_EDGEMODE_WRAP: number;
12284};
12285
12286/** Corresponds to the <feDiffuseLighting> element. */
12287interface SVGFEDiffuseLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12288    readonly diffuseConstant: SVGAnimatedNumber;
12289    readonly in1: SVGAnimatedString;
12290    readonly kernelUnitLengthX: SVGAnimatedNumber;
12291    readonly kernelUnitLengthY: SVGAnimatedNumber;
12292    readonly surfaceScale: SVGAnimatedNumber;
12293    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDiffuseLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12294    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12295    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDiffuseLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12296    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12297}
12298
12299declare var SVGFEDiffuseLightingElement: {
12300    prototype: SVGFEDiffuseLightingElement;
12301    new(): SVGFEDiffuseLightingElement;
12302};
12303
12304/** Corresponds to the <feDisplacementMap> element. */
12305interface SVGFEDisplacementMapElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12306    readonly in1: SVGAnimatedString;
12307    readonly in2: SVGAnimatedString;
12308    readonly scale: SVGAnimatedNumber;
12309    readonly xChannelSelector: SVGAnimatedEnumeration;
12310    readonly yChannelSelector: SVGAnimatedEnumeration;
12311    readonly SVG_CHANNEL_A: number;
12312    readonly SVG_CHANNEL_B: number;
12313    readonly SVG_CHANNEL_G: number;
12314    readonly SVG_CHANNEL_R: number;
12315    readonly SVG_CHANNEL_UNKNOWN: number;
12316    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDisplacementMapElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12317    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12318    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDisplacementMapElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12319    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12320}
12321
12322declare var SVGFEDisplacementMapElement: {
12323    prototype: SVGFEDisplacementMapElement;
12324    new(): SVGFEDisplacementMapElement;
12325    readonly SVG_CHANNEL_A: number;
12326    readonly SVG_CHANNEL_B: number;
12327    readonly SVG_CHANNEL_G: number;
12328    readonly SVG_CHANNEL_R: number;
12329    readonly SVG_CHANNEL_UNKNOWN: number;
12330};
12331
12332/** Corresponds to the <feDistantLight> element. */
12333interface SVGFEDistantLightElement extends SVGElement {
12334    readonly azimuth: SVGAnimatedNumber;
12335    readonly elevation: SVGAnimatedNumber;
12336    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDistantLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12337    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12338    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDistantLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12339    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12340}
12341
12342declare var SVGFEDistantLightElement: {
12343    prototype: SVGFEDistantLightElement;
12344    new(): SVGFEDistantLightElement;
12345};
12346
12347interface SVGFEDropShadowElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12348    readonly dx: SVGAnimatedNumber;
12349    readonly dy: SVGAnimatedNumber;
12350    readonly in1: SVGAnimatedString;
12351    readonly stdDeviationX: SVGAnimatedNumber;
12352    readonly stdDeviationY: SVGAnimatedNumber;
12353    setStdDeviation(stdDeviationX: number, stdDeviationY: number): void;
12354    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDropShadowElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12355    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12356    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDropShadowElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12357    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12358}
12359
12360declare var SVGFEDropShadowElement: {
12361    prototype: SVGFEDropShadowElement;
12362    new(): SVGFEDropShadowElement;
12363};
12364
12365/** Corresponds to the <feFlood> element. */
12366interface SVGFEFloodElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12367    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFloodElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12368    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12369    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFloodElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12370    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12371}
12372
12373declare var SVGFEFloodElement: {
12374    prototype: SVGFEFloodElement;
12375    new(): SVGFEFloodElement;
12376};
12377
12378/** Corresponds to the <feFuncA> element. */
12379interface SVGFEFuncAElement extends SVGComponentTransferFunctionElement {
12380    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12381    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12382    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12383    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12384}
12385
12386declare var SVGFEFuncAElement: {
12387    prototype: SVGFEFuncAElement;
12388    new(): SVGFEFuncAElement;
12389};
12390
12391/** Corresponds to the <feFuncB> element. */
12392interface SVGFEFuncBElement extends SVGComponentTransferFunctionElement {
12393    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncBElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12394    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12395    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncBElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12396    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12397}
12398
12399declare var SVGFEFuncBElement: {
12400    prototype: SVGFEFuncBElement;
12401    new(): SVGFEFuncBElement;
12402};
12403
12404/** Corresponds to the <feFuncG> element. */
12405interface SVGFEFuncGElement extends SVGComponentTransferFunctionElement {
12406    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12407    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12408    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12409    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12410}
12411
12412declare var SVGFEFuncGElement: {
12413    prototype: SVGFEFuncGElement;
12414    new(): SVGFEFuncGElement;
12415};
12416
12417/** Corresponds to the <feFuncR> element. */
12418interface SVGFEFuncRElement extends SVGComponentTransferFunctionElement {
12419    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncRElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12420    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12421    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncRElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12422    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12423}
12424
12425declare var SVGFEFuncRElement: {
12426    prototype: SVGFEFuncRElement;
12427    new(): SVGFEFuncRElement;
12428};
12429
12430/** Corresponds to the <feGaussianBlur> element. */
12431interface SVGFEGaussianBlurElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12432    readonly in1: SVGAnimatedString;
12433    readonly stdDeviationX: SVGAnimatedNumber;
12434    readonly stdDeviationY: SVGAnimatedNumber;
12435    setStdDeviation(stdDeviationX: number, stdDeviationY: number): void;
12436    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEGaussianBlurElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12437    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12438    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEGaussianBlurElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12439    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12440}
12441
12442declare var SVGFEGaussianBlurElement: {
12443    prototype: SVGFEGaussianBlurElement;
12444    new(): SVGFEGaussianBlurElement;
12445};
12446
12447/** Corresponds to the <feImage> element. */
12448interface SVGFEImageElement extends SVGElement, SVGFilterPrimitiveStandardAttributes, SVGURIReference {
12449    readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio;
12450    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12451    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12452    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12453    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12454}
12455
12456declare var SVGFEImageElement: {
12457    prototype: SVGFEImageElement;
12458    new(): SVGFEImageElement;
12459};
12460
12461/** Corresponds to the <feMerge> element. */
12462interface SVGFEMergeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12463    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12464    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12465    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12466    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12467}
12468
12469declare var SVGFEMergeElement: {
12470    prototype: SVGFEMergeElement;
12471    new(): SVGFEMergeElement;
12472};
12473
12474/** Corresponds to the <feMergeNode> element. */
12475interface SVGFEMergeNodeElement extends SVGElement {
12476    readonly in1: SVGAnimatedString;
12477    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeNodeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12478    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12479    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeNodeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12480    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12481}
12482
12483declare var SVGFEMergeNodeElement: {
12484    prototype: SVGFEMergeNodeElement;
12485    new(): SVGFEMergeNodeElement;
12486};
12487
12488/** Corresponds to the <feMorphology> element. */
12489interface SVGFEMorphologyElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12490    readonly in1: SVGAnimatedString;
12491    readonly operator: SVGAnimatedEnumeration;
12492    readonly radiusX: SVGAnimatedNumber;
12493    readonly radiusY: SVGAnimatedNumber;
12494    readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number;
12495    readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number;
12496    readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number;
12497    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMorphologyElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12498    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12499    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMorphologyElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12500    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12501}
12502
12503declare var SVGFEMorphologyElement: {
12504    prototype: SVGFEMorphologyElement;
12505    new(): SVGFEMorphologyElement;
12506    readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number;
12507    readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number;
12508    readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number;
12509};
12510
12511/** Corresponds to the <feOffset> element. */
12512interface SVGFEOffsetElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12513    readonly dx: SVGAnimatedNumber;
12514    readonly dy: SVGAnimatedNumber;
12515    readonly in1: SVGAnimatedString;
12516    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEOffsetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12517    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12518    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEOffsetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12519    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12520}
12521
12522declare var SVGFEOffsetElement: {
12523    prototype: SVGFEOffsetElement;
12524    new(): SVGFEOffsetElement;
12525};
12526
12527/** Corresponds to the <fePointLight> element. */
12528interface SVGFEPointLightElement extends SVGElement {
12529    readonly x: SVGAnimatedNumber;
12530    readonly y: SVGAnimatedNumber;
12531    readonly z: SVGAnimatedNumber;
12532    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEPointLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12533    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12534    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEPointLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12535    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12536}
12537
12538declare var SVGFEPointLightElement: {
12539    prototype: SVGFEPointLightElement;
12540    new(): SVGFEPointLightElement;
12541};
12542
12543/** Corresponds to the <feSpecularLighting> element. */
12544interface SVGFESpecularLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12545    readonly in1: SVGAnimatedString;
12546    readonly kernelUnitLengthX: SVGAnimatedNumber;
12547    readonly kernelUnitLengthY: SVGAnimatedNumber;
12548    readonly specularConstant: SVGAnimatedNumber;
12549    readonly specularExponent: SVGAnimatedNumber;
12550    readonly surfaceScale: SVGAnimatedNumber;
12551    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpecularLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12552    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12553    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpecularLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12554    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12555}
12556
12557declare var SVGFESpecularLightingElement: {
12558    prototype: SVGFESpecularLightingElement;
12559    new(): SVGFESpecularLightingElement;
12560};
12561
12562/** Corresponds to the <feSpotLight> element. */
12563interface SVGFESpotLightElement extends SVGElement {
12564    readonly limitingConeAngle: SVGAnimatedNumber;
12565    readonly pointsAtX: SVGAnimatedNumber;
12566    readonly pointsAtY: SVGAnimatedNumber;
12567    readonly pointsAtZ: SVGAnimatedNumber;
12568    readonly specularExponent: SVGAnimatedNumber;
12569    readonly x: SVGAnimatedNumber;
12570    readonly y: SVGAnimatedNumber;
12571    readonly z: SVGAnimatedNumber;
12572    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpotLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12573    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12574    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpotLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12575    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12576}
12577
12578declare var SVGFESpotLightElement: {
12579    prototype: SVGFESpotLightElement;
12580    new(): SVGFESpotLightElement;
12581};
12582
12583/** Corresponds to the <feTile> element. */
12584interface SVGFETileElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12585    readonly in1: SVGAnimatedString;
12586    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETileElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12587    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12588    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETileElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12589    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12590}
12591
12592declare var SVGFETileElement: {
12593    prototype: SVGFETileElement;
12594    new(): SVGFETileElement;
12595};
12596
12597/** Corresponds to the <feTurbulence> element. */
12598interface SVGFETurbulenceElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12599    readonly baseFrequencyX: SVGAnimatedNumber;
12600    readonly baseFrequencyY: SVGAnimatedNumber;
12601    readonly numOctaves: SVGAnimatedInteger;
12602    readonly seed: SVGAnimatedNumber;
12603    readonly stitchTiles: SVGAnimatedEnumeration;
12604    readonly type: SVGAnimatedEnumeration;
12605    readonly SVG_STITCHTYPE_NOSTITCH: number;
12606    readonly SVG_STITCHTYPE_STITCH: number;
12607    readonly SVG_STITCHTYPE_UNKNOWN: number;
12608    readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number;
12609    readonly SVG_TURBULENCE_TYPE_TURBULENCE: number;
12610    readonly SVG_TURBULENCE_TYPE_UNKNOWN: number;
12611    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETurbulenceElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12612    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12613    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETurbulenceElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12614    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12615}
12616
12617declare var SVGFETurbulenceElement: {
12618    prototype: SVGFETurbulenceElement;
12619    new(): SVGFETurbulenceElement;
12620    readonly SVG_STITCHTYPE_NOSTITCH: number;
12621    readonly SVG_STITCHTYPE_STITCH: number;
12622    readonly SVG_STITCHTYPE_UNKNOWN: number;
12623    readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number;
12624    readonly SVG_TURBULENCE_TYPE_TURBULENCE: number;
12625    readonly SVG_TURBULENCE_TYPE_UNKNOWN: number;
12626};
12627
12628/** Provides access to the properties of <filter> elements, as well as methods to manipulate them. */
12629interface SVGFilterElement extends SVGElement, SVGURIReference {
12630    readonly filterUnits: SVGAnimatedEnumeration;
12631    readonly height: SVGAnimatedLength;
12632    readonly primitiveUnits: SVGAnimatedEnumeration;
12633    readonly width: SVGAnimatedLength;
12634    readonly x: SVGAnimatedLength;
12635    readonly y: SVGAnimatedLength;
12636    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFilterElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12637    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12638    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFilterElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12639    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12640}
12641
12642declare var SVGFilterElement: {
12643    prototype: SVGFilterElement;
12644    new(): SVGFilterElement;
12645};
12646
12647interface SVGFilterPrimitiveStandardAttributes {
12648    readonly height: SVGAnimatedLength;
12649    readonly result: SVGAnimatedString;
12650    readonly width: SVGAnimatedLength;
12651    readonly x: SVGAnimatedLength;
12652    readonly y: SVGAnimatedLength;
12653}
12654
12655interface SVGFitToViewBox {
12656    readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio;
12657    readonly viewBox: SVGAnimatedRect;
12658}
12659
12660/** Provides access to the properties of <foreignObject> elements, as well as methods to manipulate them. */
12661interface SVGForeignObjectElement extends SVGGraphicsElement {
12662    readonly height: SVGAnimatedLength;
12663    readonly width: SVGAnimatedLength;
12664    readonly x: SVGAnimatedLength;
12665    readonly y: SVGAnimatedLength;
12666    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGForeignObjectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12667    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12668    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGForeignObjectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12669    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12670}
12671
12672declare var SVGForeignObjectElement: {
12673    prototype: SVGForeignObjectElement;
12674    new(): SVGForeignObjectElement;
12675};
12676
12677/** Corresponds to the <g> element. */
12678interface SVGGElement extends SVGGraphicsElement {
12679    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12680    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12681    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12682    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12683}
12684
12685declare var SVGGElement: {
12686    prototype: SVGGElement;
12687    new(): SVGGElement;
12688};
12689
12690interface SVGGeometryElement extends SVGGraphicsElement {
12691    readonly pathLength: SVGAnimatedNumber;
12692    getPointAtLength(distance: number): DOMPoint;
12693    getTotalLength(): number;
12694    isPointInFill(point?: DOMPointInit): boolean;
12695    isPointInStroke(point?: DOMPointInit): boolean;
12696    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGeometryElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12697    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12698    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGeometryElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12699    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12700}
12701
12702declare var SVGGeometryElement: {
12703    prototype: SVGGeometryElement;
12704    new(): SVGGeometryElement;
12705};
12706
12707/** The SVGGradient interface is a base interface used by SVGLinearGradientElement and SVGRadialGradientElement. */
12708interface SVGGradientElement extends SVGElement, SVGURIReference {
12709    readonly gradientTransform: SVGAnimatedTransformList;
12710    readonly gradientUnits: SVGAnimatedEnumeration;
12711    readonly spreadMethod: SVGAnimatedEnumeration;
12712    readonly SVG_SPREADMETHOD_PAD: number;
12713    readonly SVG_SPREADMETHOD_REFLECT: number;
12714    readonly SVG_SPREADMETHOD_REPEAT: number;
12715    readonly SVG_SPREADMETHOD_UNKNOWN: number;
12716    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12717    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12718    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12719    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12720}
12721
12722declare var SVGGradientElement: {
12723    prototype: SVGGradientElement;
12724    new(): SVGGradientElement;
12725    readonly SVG_SPREADMETHOD_PAD: number;
12726    readonly SVG_SPREADMETHOD_REFLECT: number;
12727    readonly SVG_SPREADMETHOD_REPEAT: number;
12728    readonly SVG_SPREADMETHOD_UNKNOWN: number;
12729};
12730
12731/** SVG elements whose primary purpose is to directly render graphics into a group. */
12732interface SVGGraphicsElement extends SVGElement, SVGTests {
12733    readonly transform: SVGAnimatedTransformList;
12734    getBBox(options?: SVGBoundingBoxOptions): DOMRect;
12735    getCTM(): DOMMatrix | null;
12736    getScreenCTM(): DOMMatrix | null;
12737    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGraphicsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12738    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12739    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGraphicsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12740    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12741}
12742
12743declare var SVGGraphicsElement: {
12744    prototype: SVGGraphicsElement;
12745    new(): SVGGraphicsElement;
12746};
12747
12748/** Corresponds to the <image> element. */
12749interface SVGImageElement extends SVGGraphicsElement, SVGURIReference {
12750    readonly height: SVGAnimatedLength;
12751    readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio;
12752    readonly width: SVGAnimatedLength;
12753    readonly x: SVGAnimatedLength;
12754    readonly y: SVGAnimatedLength;
12755    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGImageElement, 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: SVGImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12758    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12759}
12760
12761declare var SVGImageElement: {
12762    prototype: SVGImageElement;
12763    new(): SVGImageElement;
12764};
12765
12766/** Correspond to the <length> basic data type. */
12767interface SVGLength {
12768    readonly unitType: number;
12769    value: number;
12770    valueAsString: string;
12771    valueInSpecifiedUnits: number;
12772    convertToSpecifiedUnits(unitType: number): void;
12773    newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void;
12774    readonly SVG_LENGTHTYPE_CM: number;
12775    readonly SVG_LENGTHTYPE_EMS: number;
12776    readonly SVG_LENGTHTYPE_EXS: number;
12777    readonly SVG_LENGTHTYPE_IN: number;
12778    readonly SVG_LENGTHTYPE_MM: number;
12779    readonly SVG_LENGTHTYPE_NUMBER: number;
12780    readonly SVG_LENGTHTYPE_PC: number;
12781    readonly SVG_LENGTHTYPE_PERCENTAGE: number;
12782    readonly SVG_LENGTHTYPE_PT: number;
12783    readonly SVG_LENGTHTYPE_PX: number;
12784    readonly SVG_LENGTHTYPE_UNKNOWN: number;
12785}
12786
12787declare var SVGLength: {
12788    prototype: SVGLength;
12789    new(): SVGLength;
12790    readonly SVG_LENGTHTYPE_CM: number;
12791    readonly SVG_LENGTHTYPE_EMS: number;
12792    readonly SVG_LENGTHTYPE_EXS: number;
12793    readonly SVG_LENGTHTYPE_IN: number;
12794    readonly SVG_LENGTHTYPE_MM: number;
12795    readonly SVG_LENGTHTYPE_NUMBER: number;
12796    readonly SVG_LENGTHTYPE_PC: number;
12797    readonly SVG_LENGTHTYPE_PERCENTAGE: number;
12798    readonly SVG_LENGTHTYPE_PT: number;
12799    readonly SVG_LENGTHTYPE_PX: number;
12800    readonly SVG_LENGTHTYPE_UNKNOWN: number;
12801};
12802
12803/** The SVGLengthList defines a list of SVGLength objects. */
12804interface SVGLengthList {
12805    readonly length: number;
12806    readonly numberOfItems: number;
12807    appendItem(newItem: SVGLength): SVGLength;
12808    clear(): void;
12809    getItem(index: number): SVGLength;
12810    initialize(newItem: SVGLength): SVGLength;
12811    insertItemBefore(newItem: SVGLength, index: number): SVGLength;
12812    removeItem(index: number): SVGLength;
12813    replaceItem(newItem: SVGLength, index: number): SVGLength;
12814    [index: number]: SVGLength;
12815}
12816
12817declare var SVGLengthList: {
12818    prototype: SVGLengthList;
12819    new(): SVGLengthList;
12820};
12821
12822/** Provides access to the properties of <line> elements, as well as methods to manipulate them. */
12823interface SVGLineElement extends SVGGeometryElement {
12824    readonly x1: SVGAnimatedLength;
12825    readonly x2: SVGAnimatedLength;
12826    readonly y1: SVGAnimatedLength;
12827    readonly y2: SVGAnimatedLength;
12828    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12829    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12830    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12831    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12832}
12833
12834declare var SVGLineElement: {
12835    prototype: SVGLineElement;
12836    new(): SVGLineElement;
12837};
12838
12839/** Corresponds to the <linearGradient> element. */
12840interface SVGLinearGradientElement extends SVGGradientElement {
12841    readonly x1: SVGAnimatedLength;
12842    readonly x2: SVGAnimatedLength;
12843    readonly y1: SVGAnimatedLength;
12844    readonly y2: SVGAnimatedLength;
12845    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLinearGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12846    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12847    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLinearGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12848    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12849}
12850
12851declare var SVGLinearGradientElement: {
12852    prototype: SVGLinearGradientElement;
12853    new(): SVGLinearGradientElement;
12854};
12855
12856interface SVGMPathElement extends SVGElement, SVGURIReference {
12857    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12858    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12859    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12860    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12861}
12862
12863declare var SVGMPathElement: {
12864    prototype: SVGMPathElement;
12865    new(): SVGMPathElement;
12866};
12867
12868interface SVGMarkerElement extends SVGElement, SVGFitToViewBox {
12869    readonly markerHeight: SVGAnimatedLength;
12870    readonly markerUnits: SVGAnimatedEnumeration;
12871    readonly markerWidth: SVGAnimatedLength;
12872    readonly orientAngle: SVGAnimatedAngle;
12873    readonly orientType: SVGAnimatedEnumeration;
12874    readonly refX: SVGAnimatedLength;
12875    readonly refY: SVGAnimatedLength;
12876    setOrientToAngle(angle: SVGAngle): void;
12877    setOrientToAuto(): void;
12878    readonly SVG_MARKERUNITS_STROKEWIDTH: number;
12879    readonly SVG_MARKERUNITS_UNKNOWN: number;
12880    readonly SVG_MARKERUNITS_USERSPACEONUSE: number;
12881    readonly SVG_MARKER_ORIENT_ANGLE: number;
12882    readonly SVG_MARKER_ORIENT_AUTO: number;
12883    readonly SVG_MARKER_ORIENT_UNKNOWN: number;
12884    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMarkerElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12885    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12886    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMarkerElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12887    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12888}
12889
12890declare var SVGMarkerElement: {
12891    prototype: SVGMarkerElement;
12892    new(): SVGMarkerElement;
12893    readonly SVG_MARKERUNITS_STROKEWIDTH: number;
12894    readonly SVG_MARKERUNITS_UNKNOWN: number;
12895    readonly SVG_MARKERUNITS_USERSPACEONUSE: number;
12896    readonly SVG_MARKER_ORIENT_ANGLE: number;
12897    readonly SVG_MARKER_ORIENT_AUTO: number;
12898    readonly SVG_MARKER_ORIENT_UNKNOWN: number;
12899};
12900
12901/** Provides access to the properties of <mask> elements, as well as methods to manipulate them. */
12902interface SVGMaskElement extends SVGElement {
12903    readonly height: SVGAnimatedLength;
12904    readonly maskContentUnits: SVGAnimatedEnumeration;
12905    readonly maskUnits: SVGAnimatedEnumeration;
12906    readonly width: SVGAnimatedLength;
12907    readonly x: SVGAnimatedLength;
12908    readonly y: SVGAnimatedLength;
12909    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMaskElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12910    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12911    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMaskElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12912    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12913}
12914
12915declare var SVGMaskElement: {
12916    prototype: SVGMaskElement;
12917    new(): SVGMaskElement;
12918};
12919
12920/** Corresponds to the <metadata> element. */
12921interface SVGMetadataElement extends SVGElement {
12922    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMetadataElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12923    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12924    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMetadataElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12925    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12926}
12927
12928declare var SVGMetadataElement: {
12929    prototype: SVGMetadataElement;
12930    new(): SVGMetadataElement;
12931};
12932
12933/** Corresponds to the <number> basic data type. */
12934interface SVGNumber {
12935    value: number;
12936}
12937
12938declare var SVGNumber: {
12939    prototype: SVGNumber;
12940    new(): SVGNumber;
12941};
12942
12943/** The SVGNumberList defines a list of SVGNumber objects. */
12944interface SVGNumberList {
12945    readonly length: number;
12946    readonly numberOfItems: number;
12947    appendItem(newItem: SVGNumber): SVGNumber;
12948    clear(): void;
12949    getItem(index: number): SVGNumber;
12950    initialize(newItem: SVGNumber): SVGNumber;
12951    insertItemBefore(newItem: SVGNumber, index: number): SVGNumber;
12952    removeItem(index: number): SVGNumber;
12953    replaceItem(newItem: SVGNumber, index: number): SVGNumber;
12954    [index: number]: SVGNumber;
12955}
12956
12957declare var SVGNumberList: {
12958    prototype: SVGNumberList;
12959    new(): SVGNumberList;
12960};
12961
12962/** Corresponds to the <path> element. */
12963interface SVGPathElement extends SVGGeometryElement {
12964    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12965    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12966    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12967    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12968}
12969
12970declare var SVGPathElement: {
12971    prototype: SVGPathElement;
12972    new(): SVGPathElement;
12973};
12974
12975/** Corresponds to the <pattern> element. */
12976interface SVGPatternElement extends SVGElement, SVGFitToViewBox, SVGURIReference {
12977    readonly height: SVGAnimatedLength;
12978    readonly patternContentUnits: SVGAnimatedEnumeration;
12979    readonly patternTransform: SVGAnimatedTransformList;
12980    readonly patternUnits: SVGAnimatedEnumeration;
12981    readonly width: SVGAnimatedLength;
12982    readonly x: SVGAnimatedLength;
12983    readonly y: SVGAnimatedLength;
12984    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPatternElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
12985    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
12986    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPatternElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
12987    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12988}
12989
12990declare var SVGPatternElement: {
12991    prototype: SVGPatternElement;
12992    new(): SVGPatternElement;
12993};
12994
12995interface SVGPointList {
12996    readonly length: number;
12997    readonly numberOfItems: number;
12998    appendItem(newItem: DOMPoint): DOMPoint;
12999    clear(): void;
13000    getItem(index: number): DOMPoint;
13001    initialize(newItem: DOMPoint): DOMPoint;
13002    insertItemBefore(newItem: DOMPoint, index: number): DOMPoint;
13003    removeItem(index: number): DOMPoint;
13004    replaceItem(newItem: DOMPoint, index: number): DOMPoint;
13005    [index: number]: DOMPoint;
13006}
13007
13008declare var SVGPointList: {
13009    prototype: SVGPointList;
13010    new(): SVGPointList;
13011};
13012
13013/** Provides access to the properties of <polygon> elements, as well as methods to manipulate them. */
13014interface SVGPolygonElement extends SVGGeometryElement, SVGAnimatedPoints {
13015    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolygonElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13016    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13017    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolygonElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13018    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13019}
13020
13021declare var SVGPolygonElement: {
13022    prototype: SVGPolygonElement;
13023    new(): SVGPolygonElement;
13024};
13025
13026/** Provides access to the properties of <polyline> elements, as well as methods to manipulate them. */
13027interface SVGPolylineElement extends SVGGeometryElement, SVGAnimatedPoints {
13028    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolylineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13029    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13030    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolylineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13031    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13032}
13033
13034declare var SVGPolylineElement: {
13035    prototype: SVGPolylineElement;
13036    new(): SVGPolylineElement;
13037};
13038
13039/** Corresponds to the preserveAspectRatio attribute, which is available for some of SVG's elements. */
13040interface SVGPreserveAspectRatio {
13041    align: number;
13042    meetOrSlice: number;
13043    readonly SVG_MEETORSLICE_MEET: number;
13044    readonly SVG_MEETORSLICE_SLICE: number;
13045    readonly SVG_MEETORSLICE_UNKNOWN: number;
13046    readonly SVG_PRESERVEASPECTRATIO_NONE: number;
13047    readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number;
13048    readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number;
13049    readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number;
13050    readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number;
13051    readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number;
13052    readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number;
13053    readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number;
13054    readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number;
13055    readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number;
13056    readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number;
13057}
13058
13059declare var SVGPreserveAspectRatio: {
13060    prototype: SVGPreserveAspectRatio;
13061    new(): SVGPreserveAspectRatio;
13062    readonly SVG_MEETORSLICE_MEET: number;
13063    readonly SVG_MEETORSLICE_SLICE: number;
13064    readonly SVG_MEETORSLICE_UNKNOWN: number;
13065    readonly SVG_PRESERVEASPECTRATIO_NONE: number;
13066    readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number;
13067    readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number;
13068    readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number;
13069    readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number;
13070    readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number;
13071    readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number;
13072    readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number;
13073    readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number;
13074    readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number;
13075    readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number;
13076};
13077
13078/** Corresponds to the <RadialGradient> element. */
13079interface SVGRadialGradientElement extends SVGGradientElement {
13080    readonly cx: SVGAnimatedLength;
13081    readonly cy: SVGAnimatedLength;
13082    readonly fr: SVGAnimatedLength;
13083    readonly fx: SVGAnimatedLength;
13084    readonly fy: SVGAnimatedLength;
13085    readonly r: SVGAnimatedLength;
13086    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRadialGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13087    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13088    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRadialGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13089    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13090}
13091
13092declare var SVGRadialGradientElement: {
13093    prototype: SVGRadialGradientElement;
13094    new(): SVGRadialGradientElement;
13095};
13096
13097/** Provides access to the properties of <rect> elements, as well as methods to manipulate them. */
13098interface SVGRectElement extends SVGGeometryElement {
13099    readonly height: SVGAnimatedLength;
13100    readonly rx: SVGAnimatedLength;
13101    readonly ry: SVGAnimatedLength;
13102    readonly width: SVGAnimatedLength;
13103    readonly x: SVGAnimatedLength;
13104    readonly y: SVGAnimatedLength;
13105    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13106    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13107    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13108    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13109}
13110
13111declare var SVGRectElement: {
13112    prototype: SVGRectElement;
13113    new(): SVGRectElement;
13114};
13115
13116interface SVGSVGElementEventMap extends SVGElementEventMap, WindowEventHandlersEventMap {
13117}
13118
13119/** 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. */
13120interface SVGSVGElement extends SVGGraphicsElement, SVGFitToViewBox, WindowEventHandlers {
13121    currentScale: number;
13122    readonly currentTranslate: DOMPointReadOnly;
13123    readonly height: SVGAnimatedLength;
13124    readonly width: SVGAnimatedLength;
13125    readonly x: SVGAnimatedLength;
13126    readonly y: SVGAnimatedLength;
13127    animationsPaused(): boolean;
13128    checkEnclosure(element: SVGElement, rect: DOMRectReadOnly): boolean;
13129    checkIntersection(element: SVGElement, rect: DOMRectReadOnly): boolean;
13130    createSVGAngle(): SVGAngle;
13131    createSVGLength(): SVGLength;
13132    createSVGMatrix(): DOMMatrix;
13133    createSVGNumber(): SVGNumber;
13134    createSVGPoint(): DOMPoint;
13135    createSVGRect(): DOMRect;
13136    createSVGTransform(): SVGTransform;
13137    createSVGTransformFromMatrix(matrix?: DOMMatrix2DInit): SVGTransform;
13138    deselectAll(): void;
13139    /** @deprecated */
13140    forceRedraw(): void;
13141    getCurrentTime(): number;
13142    getElementById(elementId: string): Element;
13143    getEnclosureList(rect: DOMRectReadOnly, referenceElement: SVGElement | null): NodeListOf<SVGCircleElement | SVGEllipseElement | SVGImageElement | SVGLineElement | SVGPathElement | SVGPolygonElement | SVGPolylineElement | SVGRectElement | SVGTextElement | SVGUseElement>;
13144    getIntersectionList(rect: DOMRectReadOnly, referenceElement: SVGElement | null): NodeListOf<SVGCircleElement | SVGEllipseElement | SVGImageElement | SVGLineElement | SVGPathElement | SVGPolygonElement | SVGPolylineElement | SVGRectElement | SVGTextElement | SVGUseElement>;
13145    pauseAnimations(): void;
13146    setCurrentTime(seconds: number): void;
13147    /** @deprecated */
13148    suspendRedraw(maxWaitMilliseconds: number): number;
13149    unpauseAnimations(): void;
13150    /** @deprecated */
13151    unsuspendRedraw(suspendHandleID: number): void;
13152    /** @deprecated */
13153    unsuspendRedrawAll(): void;
13154    addEventListener<K extends keyof SVGSVGElementEventMap>(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13155    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13156    removeEventListener<K extends keyof SVGSVGElementEventMap>(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13157    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13158}
13159
13160declare var SVGSVGElement: {
13161    prototype: SVGSVGElement;
13162    new(): SVGSVGElement;
13163};
13164
13165/** Corresponds to the SVG <script> element. */
13166interface SVGScriptElement extends SVGElement, SVGURIReference {
13167    type: string;
13168    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGScriptElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13169    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13170    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGScriptElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13171    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13172}
13173
13174declare var SVGScriptElement: {
13175    prototype: SVGScriptElement;
13176    new(): SVGScriptElement;
13177};
13178
13179interface SVGSetElement extends SVGAnimationElement {
13180    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13181    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13182    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13183    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13184}
13185
13186declare var SVGSetElement: {
13187    prototype: SVGSetElement;
13188    new(): SVGSetElement;
13189};
13190
13191/** Corresponds to the <stop> element. */
13192interface SVGStopElement extends SVGElement {
13193    readonly offset: SVGAnimatedNumber;
13194    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStopElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13195    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13196    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStopElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13197    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13198}
13199
13200declare var SVGStopElement: {
13201    prototype: SVGStopElement;
13202    new(): SVGStopElement;
13203};
13204
13205/** The SVGStringList defines a list of DOMString objects. */
13206interface SVGStringList {
13207    readonly length: number;
13208    readonly numberOfItems: number;
13209    appendItem(newItem: string): string;
13210    clear(): void;
13211    getItem(index: number): string;
13212    initialize(newItem: string): string;
13213    insertItemBefore(newItem: string, index: number): string;
13214    removeItem(index: number): string;
13215    replaceItem(newItem: string, index: number): string;
13216    [index: number]: string;
13217}
13218
13219declare var SVGStringList: {
13220    prototype: SVGStringList;
13221    new(): SVGStringList;
13222};
13223
13224/** Corresponds to the SVG <style> element. */
13225interface SVGStyleElement extends SVGElement, LinkStyle {
13226    disabled: boolean;
13227    media: string;
13228    title: string;
13229    /** @deprecated */
13230    type: string;
13231    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStyleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13232    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13233    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStyleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13234    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13235}
13236
13237declare var SVGStyleElement: {
13238    prototype: SVGStyleElement;
13239    new(): SVGStyleElement;
13240};
13241
13242/** Corresponds to the <switch> element. */
13243interface SVGSwitchElement extends SVGGraphicsElement {
13244    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSwitchElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13245    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13246    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSwitchElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13247    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13248}
13249
13250declare var SVGSwitchElement: {
13251    prototype: SVGSwitchElement;
13252    new(): SVGSwitchElement;
13253};
13254
13255/** Corresponds to the <symbol> element. */
13256interface SVGSymbolElement extends SVGElement, SVGFitToViewBox {
13257    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSymbolElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13258    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13259    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSymbolElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13260    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13261}
13262
13263declare var SVGSymbolElement: {
13264    prototype: SVGSymbolElement;
13265    new(): SVGSymbolElement;
13266};
13267
13268/** A <tspan> element. */
13269interface SVGTSpanElement extends SVGTextPositioningElement {
13270    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTSpanElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13271    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13272    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTSpanElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13273    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13274}
13275
13276declare var SVGTSpanElement: {
13277    prototype: SVGTSpanElement;
13278    new(): SVGTSpanElement;
13279};
13280
13281interface SVGTests {
13282    readonly requiredExtensions: SVGStringList;
13283    readonly systemLanguage: SVGStringList;
13284}
13285
13286/** 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. */
13287interface SVGTextContentElement extends SVGGraphicsElement {
13288    readonly lengthAdjust: SVGAnimatedEnumeration;
13289    readonly textLength: SVGAnimatedLength;
13290    getCharNumAtPosition(point?: DOMPointInit): number;
13291    getComputedTextLength(): number;
13292    getEndPositionOfChar(charnum: number): DOMPoint;
13293    getExtentOfChar(charnum: number): DOMRect;
13294    getNumberOfChars(): number;
13295    getRotationOfChar(charnum: number): number;
13296    getStartPositionOfChar(charnum: number): DOMPoint;
13297    getSubStringLength(charnum: number, nchars: number): number;
13298    /** @deprecated */
13299    selectSubString(charnum: number, nchars: number): void;
13300    readonly LENGTHADJUST_SPACING: number;
13301    readonly LENGTHADJUST_SPACINGANDGLYPHS: number;
13302    readonly LENGTHADJUST_UNKNOWN: number;
13303    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextContentElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13304    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13305    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextContentElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13306    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13307}
13308
13309declare var SVGTextContentElement: {
13310    prototype: SVGTextContentElement;
13311    new(): SVGTextContentElement;
13312    readonly LENGTHADJUST_SPACING: number;
13313    readonly LENGTHADJUST_SPACINGANDGLYPHS: number;
13314    readonly LENGTHADJUST_UNKNOWN: number;
13315};
13316
13317/** Corresponds to the <text> elements. */
13318interface SVGTextElement extends SVGTextPositioningElement {
13319    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13320    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13321    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13322    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13323}
13324
13325declare var SVGTextElement: {
13326    prototype: SVGTextElement;
13327    new(): SVGTextElement;
13328};
13329
13330/** Corresponds to the <textPath> element. */
13331interface SVGTextPathElement extends SVGTextContentElement, SVGURIReference {
13332    readonly method: SVGAnimatedEnumeration;
13333    readonly spacing: SVGAnimatedEnumeration;
13334    readonly startOffset: SVGAnimatedLength;
13335    readonly TEXTPATH_METHODTYPE_ALIGN: number;
13336    readonly TEXTPATH_METHODTYPE_STRETCH: number;
13337    readonly TEXTPATH_METHODTYPE_UNKNOWN: number;
13338    readonly TEXTPATH_SPACINGTYPE_AUTO: number;
13339    readonly TEXTPATH_SPACINGTYPE_EXACT: number;
13340    readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number;
13341    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13342    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13343    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13344    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13345}
13346
13347declare var SVGTextPathElement: {
13348    prototype: SVGTextPathElement;
13349    new(): SVGTextPathElement;
13350    readonly TEXTPATH_METHODTYPE_ALIGN: number;
13351    readonly TEXTPATH_METHODTYPE_STRETCH: number;
13352    readonly TEXTPATH_METHODTYPE_UNKNOWN: number;
13353    readonly TEXTPATH_SPACINGTYPE_AUTO: number;
13354    readonly TEXTPATH_SPACINGTYPE_EXACT: number;
13355    readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number;
13356};
13357
13358/** Implemented by elements that support attributes that position individual text glyphs. It is inherited by SVGTextElement, SVGTSpanElement, SVGTRefElement and SVGAltGlyphElement. */
13359interface SVGTextPositioningElement extends SVGTextContentElement {
13360    readonly dx: SVGAnimatedLengthList;
13361    readonly dy: SVGAnimatedLengthList;
13362    readonly rotate: SVGAnimatedNumberList;
13363    readonly x: SVGAnimatedLengthList;
13364    readonly y: SVGAnimatedLengthList;
13365    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPositioningElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13366    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13367    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPositioningElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13368    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13369}
13370
13371declare var SVGTextPositioningElement: {
13372    prototype: SVGTextPositioningElement;
13373    new(): SVGTextPositioningElement;
13374};
13375
13376/** Corresponds to the <title> element. */
13377interface SVGTitleElement extends SVGElement {
13378    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTitleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13379    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13380    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTitleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13381    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13382}
13383
13384declare var SVGTitleElement: {
13385    prototype: SVGTitleElement;
13386    new(): SVGTitleElement;
13387};
13388
13389/** 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. */
13390interface SVGTransform {
13391    readonly angle: number;
13392    readonly matrix: DOMMatrix;
13393    readonly type: number;
13394    setMatrix(matrix?: DOMMatrix2DInit): void;
13395    setRotate(angle: number, cx: number, cy: number): void;
13396    setScale(sx: number, sy: number): void;
13397    setSkewX(angle: number): void;
13398    setSkewY(angle: number): void;
13399    setTranslate(tx: number, ty: number): void;
13400    readonly SVG_TRANSFORM_MATRIX: number;
13401    readonly SVG_TRANSFORM_ROTATE: number;
13402    readonly SVG_TRANSFORM_SCALE: number;
13403    readonly SVG_TRANSFORM_SKEWX: number;
13404    readonly SVG_TRANSFORM_SKEWY: number;
13405    readonly SVG_TRANSFORM_TRANSLATE: number;
13406    readonly SVG_TRANSFORM_UNKNOWN: number;
13407}
13408
13409declare var SVGTransform: {
13410    prototype: SVGTransform;
13411    new(): SVGTransform;
13412    readonly SVG_TRANSFORM_MATRIX: number;
13413    readonly SVG_TRANSFORM_ROTATE: number;
13414    readonly SVG_TRANSFORM_SCALE: number;
13415    readonly SVG_TRANSFORM_SKEWX: number;
13416    readonly SVG_TRANSFORM_SKEWY: number;
13417    readonly SVG_TRANSFORM_TRANSLATE: number;
13418    readonly SVG_TRANSFORM_UNKNOWN: number;
13419};
13420
13421/** The SVGTransformList defines a list of SVGTransform objects. */
13422interface SVGTransformList {
13423    readonly length: number;
13424    readonly numberOfItems: number;
13425    appendItem(newItem: SVGTransform): SVGTransform;
13426    clear(): void;
13427    consolidate(): SVGTransform | null;
13428    createSVGTransformFromMatrix(matrix?: DOMMatrix2DInit): SVGTransform;
13429    getItem(index: number): SVGTransform;
13430    initialize(newItem: SVGTransform): SVGTransform;
13431    insertItemBefore(newItem: SVGTransform, index: number): SVGTransform;
13432    removeItem(index: number): SVGTransform;
13433    replaceItem(newItem: SVGTransform, index: number): SVGTransform;
13434    [index: number]: SVGTransform;
13435}
13436
13437declare var SVGTransformList: {
13438    prototype: SVGTransformList;
13439    new(): SVGTransformList;
13440};
13441
13442interface SVGURIReference {
13443    readonly href: SVGAnimatedString;
13444}
13445
13446/** A commonly used set of constants used for reflecting gradientUnits, patternContentUnits and other similar attributes. */
13447interface SVGUnitTypes {
13448    readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number;
13449    readonly SVG_UNIT_TYPE_UNKNOWN: number;
13450    readonly SVG_UNIT_TYPE_USERSPACEONUSE: number;
13451}
13452
13453declare var SVGUnitTypes: {
13454    prototype: SVGUnitTypes;
13455    new(): SVGUnitTypes;
13456    readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number;
13457    readonly SVG_UNIT_TYPE_UNKNOWN: number;
13458    readonly SVG_UNIT_TYPE_USERSPACEONUSE: number;
13459};
13460
13461/** Corresponds to the <use> element. */
13462interface SVGUseElement extends SVGGraphicsElement, SVGURIReference {
13463    readonly height: SVGAnimatedLength;
13464    readonly width: SVGAnimatedLength;
13465    readonly x: SVGAnimatedLength;
13466    readonly y: SVGAnimatedLength;
13467    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGUseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13468    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13469    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGUseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13470    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13471}
13472
13473declare var SVGUseElement: {
13474    prototype: SVGUseElement;
13475    new(): SVGUseElement;
13476};
13477
13478/** Provides access to the properties of <view> elements, as well as methods to manipulate them. */
13479interface SVGViewElement extends SVGElement, SVGFitToViewBox {
13480    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGViewElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13481    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13482    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGViewElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13483    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13484}
13485
13486declare var SVGViewElement: {
13487    prototype: SVGViewElement;
13488    new(): SVGViewElement;
13489};
13490
13491/** A screen, usually the one on which the current window is being rendered, and is obtained using window.screen. */
13492interface Screen {
13493    readonly availHeight: number;
13494    readonly availWidth: number;
13495    readonly colorDepth: number;
13496    readonly height: number;
13497    readonly orientation: ScreenOrientation;
13498    readonly pixelDepth: number;
13499    readonly width: number;
13500}
13501
13502declare var Screen: {
13503    prototype: Screen;
13504    new(): Screen;
13505};
13506
13507interface ScreenOrientationEventMap {
13508    "change": Event;
13509}
13510
13511interface ScreenOrientation extends EventTarget {
13512    readonly angle: number;
13513    onchange: ((this: ScreenOrientation, ev: Event) => any) | null;
13514    readonly type: OrientationType;
13515    lock(orientation: OrientationLockType): Promise<void>;
13516    unlock(): void;
13517    addEventListener<K extends keyof ScreenOrientationEventMap>(type: K, listener: (this: ScreenOrientation, ev: ScreenOrientationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13518    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13519    removeEventListener<K extends keyof ScreenOrientationEventMap>(type: K, listener: (this: ScreenOrientation, ev: ScreenOrientationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13520    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13521}
13522
13523declare var ScreenOrientation: {
13524    prototype: ScreenOrientation;
13525    new(): ScreenOrientation;
13526};
13527
13528interface ScriptProcessorNodeEventMap {
13529    "audioprocess": AudioProcessingEvent;
13530}
13531
13532/**
13533 * Allows the generation, processing, or analyzing of audio using JavaScript.
13534 * @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).
13535 */
13536interface ScriptProcessorNode extends AudioNode {
13537    /** @deprecated */
13538    readonly bufferSize: number;
13539    /** @deprecated */
13540    onaudioprocess: ((this: ScriptProcessorNode, ev: AudioProcessingEvent) => any) | null;
13541    addEventListener<K extends keyof ScriptProcessorNodeEventMap>(type: K, listener: (this: ScriptProcessorNode, ev: ScriptProcessorNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13542    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13543    removeEventListener<K extends keyof ScriptProcessorNodeEventMap>(type: K, listener: (this: ScriptProcessorNode, ev: ScriptProcessorNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13544    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13545}
13546
13547/** @deprecated */
13548declare var ScriptProcessorNode: {
13549    prototype: ScriptProcessorNode;
13550    new(): ScriptProcessorNode;
13551};
13552
13553/** Inherits from Event, and represents the event object of an event sent on a document or worker when its content security policy is violated. */
13554interface SecurityPolicyViolationEvent extends Event {
13555    readonly blockedURI: string;
13556    readonly columnNumber: number;
13557    readonly disposition: SecurityPolicyViolationEventDisposition;
13558    readonly documentURI: string;
13559    readonly effectiveDirective: string;
13560    readonly lineNumber: number;
13561    readonly originalPolicy: string;
13562    readonly referrer: string;
13563    readonly sample: string;
13564    readonly sourceFile: string;
13565    readonly statusCode: number;
13566    readonly violatedDirective: string;
13567}
13568
13569declare var SecurityPolicyViolationEvent: {
13570    prototype: SecurityPolicyViolationEvent;
13571    new(type: string, eventInitDict?: SecurityPolicyViolationEventInit): SecurityPolicyViolationEvent;
13572};
13573
13574/** 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(). */
13575interface Selection {
13576    readonly anchorNode: Node | null;
13577    readonly anchorOffset: number;
13578    readonly focusNode: Node | null;
13579    readonly focusOffset: number;
13580    readonly isCollapsed: boolean;
13581    readonly rangeCount: number;
13582    readonly type: string;
13583    addRange(range: Range): void;
13584    collapse(node: Node | null, offset?: number): void;
13585    collapseToEnd(): void;
13586    collapseToStart(): void;
13587    containsNode(node: Node, allowPartialContainment?: boolean): boolean;
13588    deleteFromDocument(): void;
13589    empty(): void;
13590    extend(node: Node, offset?: number): void;
13591    getRangeAt(index: number): Range;
13592    modify(alter?: string, direction?: string, granularity?: string): void;
13593    removeAllRanges(): void;
13594    removeRange(range: Range): void;
13595    selectAllChildren(node: Node): void;
13596    setBaseAndExtent(anchorNode: Node, anchorOffset: number, focusNode: Node, focusOffset: number): void;
13597    setPosition(node: Node | null, offset?: number): void;
13598    toString(): string;
13599}
13600
13601declare var Selection: {
13602    prototype: Selection;
13603    new(): Selection;
13604    toString(): string;
13605};
13606
13607interface ServiceWorkerEventMap extends AbstractWorkerEventMap {
13608    "statechange": Event;
13609}
13610
13611/**
13612 * 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.
13613 * Available only in secure contexts.
13614 */
13615interface ServiceWorker extends EventTarget, AbstractWorker {
13616    onstatechange: ((this: ServiceWorker, ev: Event) => any) | null;
13617    readonly scriptURL: string;
13618    readonly state: ServiceWorkerState;
13619    postMessage(message: any, transfer: Transferable[]): void;
13620    postMessage(message: any, options?: StructuredSerializeOptions): void;
13621    addEventListener<K extends keyof ServiceWorkerEventMap>(type: K, listener: (this: ServiceWorker, ev: ServiceWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13622    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13623    removeEventListener<K extends keyof ServiceWorkerEventMap>(type: K, listener: (this: ServiceWorker, ev: ServiceWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13624    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13625}
13626
13627declare var ServiceWorker: {
13628    prototype: ServiceWorker;
13629    new(): ServiceWorker;
13630};
13631
13632interface ServiceWorkerContainerEventMap {
13633    "controllerchange": Event;
13634    "message": MessageEvent;
13635    "messageerror": MessageEvent;
13636}
13637
13638/**
13639 * 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.
13640 * Available only in secure contexts.
13641 */
13642interface ServiceWorkerContainer extends EventTarget {
13643    readonly controller: ServiceWorker | null;
13644    oncontrollerchange: ((this: ServiceWorkerContainer, ev: Event) => any) | null;
13645    onmessage: ((this: ServiceWorkerContainer, ev: MessageEvent) => any) | null;
13646    onmessageerror: ((this: ServiceWorkerContainer, ev: MessageEvent) => any) | null;
13647    readonly ready: Promise<ServiceWorkerRegistration>;
13648    getRegistration(clientURL?: string | URL): Promise<ServiceWorkerRegistration | undefined>;
13649    getRegistrations(): Promise<ReadonlyArray<ServiceWorkerRegistration>>;
13650    register(scriptURL: string | URL, options?: RegistrationOptions): Promise<ServiceWorkerRegistration>;
13651    startMessages(): void;
13652    addEventListener<K extends keyof ServiceWorkerContainerEventMap>(type: K, listener: (this: ServiceWorkerContainer, ev: ServiceWorkerContainerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13653    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13654    removeEventListener<K extends keyof ServiceWorkerContainerEventMap>(type: K, listener: (this: ServiceWorkerContainer, ev: ServiceWorkerContainerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13655    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13656}
13657
13658declare var ServiceWorkerContainer: {
13659    prototype: ServiceWorkerContainer;
13660    new(): ServiceWorkerContainer;
13661};
13662
13663interface ServiceWorkerRegistrationEventMap {
13664    "updatefound": Event;
13665}
13666
13667/**
13668 * 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.
13669 * Available only in secure contexts.
13670 */
13671interface ServiceWorkerRegistration extends EventTarget {
13672    readonly active: ServiceWorker | null;
13673    readonly installing: ServiceWorker | null;
13674    readonly navigationPreload: NavigationPreloadManager;
13675    onupdatefound: ((this: ServiceWorkerRegistration, ev: Event) => any) | null;
13676    readonly pushManager: PushManager;
13677    readonly scope: string;
13678    readonly updateViaCache: ServiceWorkerUpdateViaCache;
13679    readonly waiting: ServiceWorker | null;
13680    getNotifications(filter?: GetNotificationOptions): Promise<Notification[]>;
13681    showNotification(title: string, options?: NotificationOptions): Promise<void>;
13682    unregister(): Promise<boolean>;
13683    update(): Promise<void>;
13684    addEventListener<K extends keyof ServiceWorkerRegistrationEventMap>(type: K, listener: (this: ServiceWorkerRegistration, ev: ServiceWorkerRegistrationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13685    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13686    removeEventListener<K extends keyof ServiceWorkerRegistrationEventMap>(type: K, listener: (this: ServiceWorkerRegistration, ev: ServiceWorkerRegistrationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13687    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13688}
13689
13690declare var ServiceWorkerRegistration: {
13691    prototype: ServiceWorkerRegistration;
13692    new(): ServiceWorkerRegistration;
13693};
13694
13695interface ShadowRootEventMap {
13696    "slotchange": Event;
13697}
13698
13699interface ShadowRoot extends DocumentFragment, DocumentOrShadowRoot, InnerHTML {
13700    readonly delegatesFocus: boolean;
13701    readonly host: Element;
13702    readonly mode: ShadowRootMode;
13703    onslotchange: ((this: ShadowRoot, ev: Event) => any) | null;
13704    readonly slotAssignment: SlotAssignmentMode;
13705    /** Throws a "NotSupportedError" DOMException if context object is a shadow root. */
13706    addEventListener<K extends keyof ShadowRootEventMap>(type: K, listener: (this: ShadowRoot, ev: ShadowRootEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13707    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13708    removeEventListener<K extends keyof ShadowRootEventMap>(type: K, listener: (this: ShadowRoot, ev: ShadowRootEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13709    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13710}
13711
13712declare var ShadowRoot: {
13713    prototype: ShadowRoot;
13714    new(): ShadowRoot;
13715};
13716
13717interface SharedWorker extends EventTarget, AbstractWorker {
13718    /** Returns sharedWorker's MessagePort object which can be used to communicate with the global environment. */
13719    readonly port: MessagePort;
13720    addEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: SharedWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13721    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13722    removeEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: SharedWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13723    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13724}
13725
13726declare var SharedWorker: {
13727    prototype: SharedWorker;
13728    new(scriptURL: string | URL, options?: string | WorkerOptions): SharedWorker;
13729};
13730
13731interface Slottable {
13732    readonly assignedSlot: HTMLSlotElement | null;
13733}
13734
13735interface SourceBufferEventMap {
13736    "abort": Event;
13737    "error": Event;
13738    "update": Event;
13739    "updateend": Event;
13740    "updatestart": Event;
13741}
13742
13743/** 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. */
13744interface SourceBuffer extends EventTarget {
13745    appendWindowEnd: number;
13746    appendWindowStart: number;
13747    readonly buffered: TimeRanges;
13748    mode: AppendMode;
13749    onabort: ((this: SourceBuffer, ev: Event) => any) | null;
13750    onerror: ((this: SourceBuffer, ev: Event) => any) | null;
13751    onupdate: ((this: SourceBuffer, ev: Event) => any) | null;
13752    onupdateend: ((this: SourceBuffer, ev: Event) => any) | null;
13753    onupdatestart: ((this: SourceBuffer, ev: Event) => any) | null;
13754    timestampOffset: number;
13755    readonly updating: boolean;
13756    abort(): void;
13757    appendBuffer(data: BufferSource): void;
13758    changeType(type: string): void;
13759    remove(start: number, end: number): void;
13760    addEventListener<K extends keyof SourceBufferEventMap>(type: K, listener: (this: SourceBuffer, ev: SourceBufferEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13761    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13762    removeEventListener<K extends keyof SourceBufferEventMap>(type: K, listener: (this: SourceBuffer, ev: SourceBufferEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13763    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13764}
13765
13766declare var SourceBuffer: {
13767    prototype: SourceBuffer;
13768    new(): SourceBuffer;
13769};
13770
13771interface SourceBufferListEventMap {
13772    "addsourcebuffer": Event;
13773    "removesourcebuffer": Event;
13774}
13775
13776/** A simple container list for multiple SourceBuffer objects. */
13777interface SourceBufferList extends EventTarget {
13778    readonly length: number;
13779    onaddsourcebuffer: ((this: SourceBufferList, ev: Event) => any) | null;
13780    onremovesourcebuffer: ((this: SourceBufferList, ev: Event) => any) | null;
13781    addEventListener<K extends keyof SourceBufferListEventMap>(type: K, listener: (this: SourceBufferList, ev: SourceBufferListEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13782    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13783    removeEventListener<K extends keyof SourceBufferListEventMap>(type: K, listener: (this: SourceBufferList, ev: SourceBufferListEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13784    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13785    [index: number]: SourceBuffer;
13786}
13787
13788declare var SourceBufferList: {
13789    prototype: SourceBufferList;
13790    new(): SourceBufferList;
13791};
13792
13793interface SpeechRecognitionAlternative {
13794    readonly confidence: number;
13795    readonly transcript: string;
13796}
13797
13798declare var SpeechRecognitionAlternative: {
13799    prototype: SpeechRecognitionAlternative;
13800    new(): SpeechRecognitionAlternative;
13801};
13802
13803interface SpeechRecognitionResult {
13804    readonly isFinal: boolean;
13805    readonly length: number;
13806    item(index: number): SpeechRecognitionAlternative;
13807    [index: number]: SpeechRecognitionAlternative;
13808}
13809
13810declare var SpeechRecognitionResult: {
13811    prototype: SpeechRecognitionResult;
13812    new(): SpeechRecognitionResult;
13813};
13814
13815interface SpeechRecognitionResultList {
13816    readonly length: number;
13817    item(index: number): SpeechRecognitionResult;
13818    [index: number]: SpeechRecognitionResult;
13819}
13820
13821declare var SpeechRecognitionResultList: {
13822    prototype: SpeechRecognitionResultList;
13823    new(): SpeechRecognitionResultList;
13824};
13825
13826interface SpeechSynthesisEventMap {
13827    "voiceschanged": Event;
13828}
13829
13830/** 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. */
13831interface SpeechSynthesis extends EventTarget {
13832    onvoiceschanged: ((this: SpeechSynthesis, ev: Event) => any) | null;
13833    readonly paused: boolean;
13834    readonly pending: boolean;
13835    readonly speaking: boolean;
13836    cancel(): void;
13837    getVoices(): SpeechSynthesisVoice[];
13838    pause(): void;
13839    resume(): void;
13840    speak(utterance: SpeechSynthesisUtterance): void;
13841    addEventListener<K extends keyof SpeechSynthesisEventMap>(type: K, listener: (this: SpeechSynthesis, ev: SpeechSynthesisEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13842    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13843    removeEventListener<K extends keyof SpeechSynthesisEventMap>(type: K, listener: (this: SpeechSynthesis, ev: SpeechSynthesisEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13844    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13845}
13846
13847declare var SpeechSynthesis: {
13848    prototype: SpeechSynthesis;
13849    new(): SpeechSynthesis;
13850};
13851
13852interface SpeechSynthesisErrorEvent extends SpeechSynthesisEvent {
13853    readonly error: SpeechSynthesisErrorCode;
13854}
13855
13856declare var SpeechSynthesisErrorEvent: {
13857    prototype: SpeechSynthesisErrorEvent;
13858    new(type: string, eventInitDict: SpeechSynthesisErrorEventInit): SpeechSynthesisErrorEvent;
13859};
13860
13861/** This Web Speech API interface contains information about the current state of SpeechSynthesisUtterance objects that have been processed in the speech service. */
13862interface SpeechSynthesisEvent extends Event {
13863    readonly charIndex: number;
13864    readonly charLength: number;
13865    readonly elapsedTime: number;
13866    readonly name: string;
13867    readonly utterance: SpeechSynthesisUtterance;
13868}
13869
13870declare var SpeechSynthesisEvent: {
13871    prototype: SpeechSynthesisEvent;
13872    new(type: string, eventInitDict: SpeechSynthesisEventInit): SpeechSynthesisEvent;
13873};
13874
13875interface SpeechSynthesisUtteranceEventMap {
13876    "boundary": SpeechSynthesisEvent;
13877    "end": SpeechSynthesisEvent;
13878    "error": SpeechSynthesisErrorEvent;
13879    "mark": SpeechSynthesisEvent;
13880    "pause": SpeechSynthesisEvent;
13881    "resume": SpeechSynthesisEvent;
13882    "start": SpeechSynthesisEvent;
13883}
13884
13885/** 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.) */
13886interface SpeechSynthesisUtterance extends EventTarget {
13887    lang: string;
13888    onboundary: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
13889    onend: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
13890    onerror: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisErrorEvent) => any) | null;
13891    onmark: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
13892    onpause: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
13893    onresume: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
13894    onstart: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;
13895    pitch: number;
13896    rate: number;
13897    text: string;
13898    voice: SpeechSynthesisVoice | null;
13899    volume: number;
13900    addEventListener<K extends keyof SpeechSynthesisUtteranceEventMap>(type: K, listener: (this: SpeechSynthesisUtterance, ev: SpeechSynthesisUtteranceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
13901    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
13902    removeEventListener<K extends keyof SpeechSynthesisUtteranceEventMap>(type: K, listener: (this: SpeechSynthesisUtterance, ev: SpeechSynthesisUtteranceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
13903    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
13904}
13905
13906declare var SpeechSynthesisUtterance: {
13907    prototype: SpeechSynthesisUtterance;
13908    new(text?: string): SpeechSynthesisUtterance;
13909};
13910
13911/** 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. */
13912interface SpeechSynthesisVoice {
13913    readonly default: boolean;
13914    readonly lang: string;
13915    readonly localService: boolean;
13916    readonly name: string;
13917    readonly voiceURI: string;
13918}
13919
13920declare var SpeechSynthesisVoice: {
13921    prototype: SpeechSynthesisVoice;
13922    new(): SpeechSynthesisVoice;
13923};
13924
13925interface StaticRange extends AbstractRange {
13926}
13927
13928declare var StaticRange: {
13929    prototype: StaticRange;
13930    new(init: StaticRangeInit): StaticRange;
13931};
13932
13933/** 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. */
13934interface StereoPannerNode extends AudioNode {
13935    readonly pan: AudioParam;
13936}
13937
13938declare var StereoPannerNode: {
13939    prototype: StereoPannerNode;
13940    new(context: BaseAudioContext, options?: StereoPannerOptions): StereoPannerNode;
13941};
13942
13943/** 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. */
13944interface Storage {
13945    /** Returns the number of key/value pairs. */
13946    readonly length: number;
13947    /**
13948     * Removes all key/value pairs, if there are any.
13949     *
13950     * Dispatches a storage event on Window objects holding an equivalent Storage object.
13951     */
13952    clear(): void;
13953    /** Returns the current value associated with the given key, or null if the given key does not exist. */
13954    getItem(key: string): string | null;
13955    /** Returns the name of the nth key, or null if n is greater than or equal to the number of key/value pairs. */
13956    key(index: number): string | null;
13957    /**
13958     * Removes the key/value pair with the given key, if a key/value pair with the given key exists.
13959     *
13960     * Dispatches a storage event on Window objects holding an equivalent Storage object.
13961     */
13962    removeItem(key: string): void;
13963    /**
13964     * Sets the value of the pair identified by key to value, creating a new key/value pair if none existed for key previously.
13965     *
13966     * 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.)
13967     *
13968     * Dispatches a storage event on Window objects holding an equivalent Storage object.
13969     */
13970    setItem(key: string, value: string): void;
13971    [name: string]: any;
13972}
13973
13974declare var Storage: {
13975    prototype: Storage;
13976    new(): Storage;
13977};
13978
13979/** A StorageEvent is sent to a window when a storage area it has access to is changed within the context of another document. */
13980interface StorageEvent extends Event {
13981    /** Returns the key of the storage item being changed. */
13982    readonly key: string | null;
13983    /** Returns the new value of the key of the storage item whose value is being changed. */
13984    readonly newValue: string | null;
13985    /** Returns the old value of the key of the storage item whose value is being changed. */
13986    readonly oldValue: string | null;
13987    /** Returns the Storage object that was affected. */
13988    readonly storageArea: Storage | null;
13989    /** Returns the URL of the document whose storage item changed. */
13990    readonly url: string;
13991    /** @deprecated */
13992    initStorageEvent(type: string, bubbles?: boolean, cancelable?: boolean, key?: string | null, oldValue?: string | null, newValue?: string | null, url?: string | URL, storageArea?: Storage | null): void;
13993}
13994
13995declare var StorageEvent: {
13996    prototype: StorageEvent;
13997    new(type: string, eventInitDict?: StorageEventInit): StorageEvent;
13998};
13999
14000/** Available only in secure contexts. */
14001interface StorageManager {
14002    estimate(): Promise<StorageEstimate>;
14003    getDirectory(): Promise<FileSystemDirectoryHandle>;
14004    persist(): Promise<boolean>;
14005    persisted(): Promise<boolean>;
14006}
14007
14008declare var StorageManager: {
14009    prototype: StorageManager;
14010    new(): StorageManager;
14011};
14012
14013/** @deprecated */
14014interface StyleMedia {
14015    type: string;
14016    matchMedium(mediaquery: string): boolean;
14017}
14018
14019/** A single style sheet. CSS style sheets will further implement the more specialized CSSStyleSheet interface. */
14020interface StyleSheet {
14021    disabled: boolean;
14022    readonly href: string | null;
14023    readonly media: MediaList;
14024    readonly ownerNode: Element | ProcessingInstruction | null;
14025    readonly parentStyleSheet: CSSStyleSheet | null;
14026    readonly title: string | null;
14027    readonly type: string;
14028}
14029
14030declare var StyleSheet: {
14031    prototype: StyleSheet;
14032    new(): StyleSheet;
14033};
14034
14035/** A list of StyleSheet. */
14036interface StyleSheetList {
14037    readonly length: number;
14038    item(index: number): CSSStyleSheet | null;
14039    [index: number]: CSSStyleSheet;
14040}
14041
14042declare var StyleSheetList: {
14043    prototype: StyleSheetList;
14044    new(): StyleSheetList;
14045};
14046
14047interface SubmitEvent extends Event {
14048    /** Returns the element representing the submit button that triggered the form submission, or null if the submission was not triggered by a button. */
14049    readonly submitter: HTMLElement | null;
14050}
14051
14052declare var SubmitEvent: {
14053    prototype: SubmitEvent;
14054    new(type: string, eventInitDict?: SubmitEventInit): SubmitEvent;
14055};
14056
14057/**
14058 * 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).
14059 * Available only in secure contexts.
14060 */
14061interface SubtleCrypto {
14062    decrypt(algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;
14063    deriveBits(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, length: number): Promise<ArrayBuffer>;
14064    deriveKey(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, derivedKeyType: AlgorithmIdentifier | AesDerivedKeyParams | HmacImportParams | HkdfParams | Pbkdf2Params, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
14065    digest(algorithm: AlgorithmIdentifier, data: BufferSource): Promise<ArrayBuffer>;
14066    encrypt(algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;
14067    exportKey(format: "jwk", key: CryptoKey): Promise<JsonWebKey>;
14068    exportKey(format: Exclude<KeyFormat, "jwk">, key: CryptoKey): Promise<ArrayBuffer>;
14069    generateKey(algorithm: RsaHashedKeyGenParams | EcKeyGenParams, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKeyPair>;
14070    generateKey(algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;
14071    generateKey(algorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair | CryptoKey>;
14072    importKey(format: "jwk", keyData: JsonWebKey, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;
14073    importKey(format: Exclude<KeyFormat, "jwk">, keyData: BufferSource, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
14074    sign(algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;
14075    unwrapKey(format: KeyFormat, wrappedKey: BufferSource, unwrappingKey: CryptoKey, unwrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, unwrappedKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
14076    verify(algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, key: CryptoKey, signature: BufferSource, data: BufferSource): Promise<boolean>;
14077    wrapKey(format: KeyFormat, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams): Promise<ArrayBuffer>;
14078}
14079
14080declare var SubtleCrypto: {
14081    prototype: SubtleCrypto;
14082    new(): SubtleCrypto;
14083};
14084
14085/** 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. */
14086interface Text extends CharacterData, Slottable {
14087    /** Returns the combined data of all direct Text node siblings. */
14088    readonly wholeText: string;
14089    /** Splits data at the given offset and returns the remainder as Text node. */
14090    splitText(offset: number): Text;
14091}
14092
14093declare var Text: {
14094    prototype: Text;
14095    new(data?: string): Text;
14096};
14097
14098/** 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. */
14099interface TextDecoder extends TextDecoderCommon {
14100    /**
14101     * 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.
14102     *
14103     * ```
14104     * var string = "", decoder = new TextDecoder(encoding), buffer;
14105     * while(buffer = next_chunk()) {
14106     *   string += decoder.decode(buffer, {stream:true});
14107     * }
14108     * string += decoder.decode(); // end-of-queue
14109     * ```
14110     *
14111     * If the error mode is "fatal" and encoding's decoder returns error, throws a TypeError.
14112     */
14113    decode(input?: BufferSource, options?: TextDecodeOptions): string;
14114}
14115
14116declare var TextDecoder: {
14117    prototype: TextDecoder;
14118    new(label?: string, options?: TextDecoderOptions): TextDecoder;
14119};
14120
14121interface TextDecoderCommon {
14122    /** Returns encoding's name, lowercased. */
14123    readonly encoding: string;
14124    /** Returns true if error mode is "fatal", otherwise false. */
14125    readonly fatal: boolean;
14126    /** Returns the value of ignore BOM. */
14127    readonly ignoreBOM: boolean;
14128}
14129
14130interface TextDecoderStream extends GenericTransformStream, TextDecoderCommon {
14131    readonly readable: ReadableStream<string>;
14132    readonly writable: WritableStream<BufferSource>;
14133}
14134
14135declare var TextDecoderStream: {
14136    prototype: TextDecoderStream;
14137    new(label?: string, options?: TextDecoderOptions): TextDecoderStream;
14138};
14139
14140/** 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. */
14141interface TextEncoder extends TextEncoderCommon {
14142    /** Returns the result of running UTF-8's encoder. */
14143    encode(input?: string): Uint8Array;
14144    /** 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. */
14145    encodeInto(source: string, destination: Uint8Array): TextEncoderEncodeIntoResult;
14146}
14147
14148declare var TextEncoder: {
14149    prototype: TextEncoder;
14150    new(): TextEncoder;
14151};
14152
14153interface TextEncoderCommon {
14154    /** Returns "utf-8". */
14155    readonly encoding: string;
14156}
14157
14158interface TextEncoderStream extends GenericTransformStream, TextEncoderCommon {
14159    readonly readable: ReadableStream<Uint8Array>;
14160    readonly writable: WritableStream<string>;
14161}
14162
14163declare var TextEncoderStream: {
14164    prototype: TextEncoderStream;
14165    new(): TextEncoderStream;
14166};
14167
14168/** The dimensions of a piece of text in the canvas, as created by the CanvasRenderingContext2D.measureText() method. */
14169interface TextMetrics {
14170    /** Returns the measurement described below. */
14171    readonly actualBoundingBoxAscent: number;
14172    /** Returns the measurement described below. */
14173    readonly actualBoundingBoxDescent: number;
14174    /** Returns the measurement described below. */
14175    readonly actualBoundingBoxLeft: number;
14176    /** Returns the measurement described below. */
14177    readonly actualBoundingBoxRight: number;
14178    /** Returns the measurement described below. */
14179    readonly fontBoundingBoxAscent: number;
14180    /** Returns the measurement described below. */
14181    readonly fontBoundingBoxDescent: number;
14182    /** Returns the measurement described below. */
14183    readonly width: number;
14184}
14185
14186declare var TextMetrics: {
14187    prototype: TextMetrics;
14188    new(): TextMetrics;
14189};
14190
14191interface TextTrackEventMap {
14192    "cuechange": Event;
14193}
14194
14195/** This interface also inherits properties from EventTarget. */
14196interface TextTrack extends EventTarget {
14197    /** 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. */
14198    readonly activeCues: TextTrackCueList | null;
14199    /** Returns the text track list of cues, as a TextTrackCueList object. */
14200    readonly cues: TextTrackCueList | null;
14201    /**
14202     * Returns the ID of the given track.
14203     *
14204     * 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.
14205     *
14206     * For TextTrack objects corresponding to track elements, this is the ID of the track element.
14207     */
14208    readonly id: string;
14209    /** Returns the text track in-band metadata track dispatch type string. */
14210    readonly inBandMetadataTrackDispatchType: string;
14211    /** Returns the text track kind string. */
14212    readonly kind: TextTrackKind;
14213    /** 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). */
14214    readonly label: string;
14215    /** Returns the text track language string. */
14216    readonly language: string;
14217    /**
14218     * Returns the text track mode, represented by a string from the following list:
14219     *
14220     * Can be set, to change the mode.
14221     */
14222    mode: TextTrackMode;
14223    oncuechange: ((this: TextTrack, ev: Event) => any) | null;
14224    /** Adds the given cue to textTrack's text track list of cues. */
14225    addCue(cue: TextTrackCue): void;
14226    /** Removes the given cue from textTrack's text track list of cues. */
14227    removeCue(cue: TextTrackCue): void;
14228    addEventListener<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14229    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14230    removeEventListener<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14231    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14232}
14233
14234declare var TextTrack: {
14235    prototype: TextTrack;
14236    new(): TextTrack;
14237};
14238
14239interface TextTrackCueEventMap {
14240    "enter": Event;
14241    "exit": Event;
14242}
14243
14244/** 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. */
14245interface TextTrackCue extends EventTarget {
14246    /**
14247     * Returns the text track cue end time, in seconds.
14248     *
14249     * Can be set.
14250     */
14251    endTime: number;
14252    /**
14253     * Returns the text track cue identifier.
14254     *
14255     * Can be set.
14256     */
14257    id: string;
14258    onenter: ((this: TextTrackCue, ev: Event) => any) | null;
14259    onexit: ((this: TextTrackCue, ev: Event) => any) | null;
14260    /**
14261     * Returns true if the text track cue pause-on-exit flag is set, false otherwise.
14262     *
14263     * Can be set.
14264     */
14265    pauseOnExit: boolean;
14266    /**
14267     * Returns the text track cue start time, in seconds.
14268     *
14269     * Can be set.
14270     */
14271    startTime: number;
14272    /** Returns the TextTrack object to which this text track cue belongs, if any, or null otherwise. */
14273    readonly track: TextTrack | null;
14274    addEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14275    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14276    removeEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14277    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14278}
14279
14280declare var TextTrackCue: {
14281    prototype: TextTrackCue;
14282    new(): TextTrackCue;
14283};
14284
14285interface TextTrackCueList {
14286    /** Returns the number of cues in the list. */
14287    readonly length: number;
14288    /**
14289     * Returns the first text track cue (in text track cue order) with text track cue identifier id.
14290     *
14291     * Returns null if none of the cues have the given identifier or if the argument is the empty string.
14292     */
14293    getCueById(id: string): TextTrackCue | null;
14294    [index: number]: TextTrackCue;
14295}
14296
14297declare var TextTrackCueList: {
14298    prototype: TextTrackCueList;
14299    new(): TextTrackCueList;
14300};
14301
14302interface TextTrackListEventMap {
14303    "addtrack": TrackEvent;
14304    "change": Event;
14305    "removetrack": TrackEvent;
14306}
14307
14308interface TextTrackList extends EventTarget {
14309    readonly length: number;
14310    onaddtrack: ((this: TextTrackList, ev: TrackEvent) => any) | null;
14311    onchange: ((this: TextTrackList, ev: Event) => any) | null;
14312    onremovetrack: ((this: TextTrackList, ev: TrackEvent) => any) | null;
14313    getTrackById(id: string): TextTrack | null;
14314    addEventListener<K extends keyof TextTrackListEventMap>(type: K, listener: (this: TextTrackList, ev: TextTrackListEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14315    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14316    removeEventListener<K extends keyof TextTrackListEventMap>(type: K, listener: (this: TextTrackList, ev: TextTrackListEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14317    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14318    [index: number]: TextTrack;
14319}
14320
14321declare var TextTrackList: {
14322    prototype: TextTrackList;
14323    new(): TextTrackList;
14324};
14325
14326/** 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. */
14327interface TimeRanges {
14328    /** Returns the number of ranges in the object. */
14329    readonly length: number;
14330    /**
14331     * Returns the time for the end of the range with the given index.
14332     *
14333     * Throws an "IndexSizeError" DOMException if the index is out of range.
14334     */
14335    end(index: number): number;
14336    /**
14337     * Returns the time for the start of the range with the given index.
14338     *
14339     * Throws an "IndexSizeError" DOMException if the index is out of range.
14340     */
14341    start(index: number): number;
14342}
14343
14344declare var TimeRanges: {
14345    prototype: TimeRanges;
14346    new(): TimeRanges;
14347};
14348
14349/** 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. */
14350interface Touch {
14351    readonly clientX: number;
14352    readonly clientY: number;
14353    readonly force: number;
14354    readonly identifier: number;
14355    readonly pageX: number;
14356    readonly pageY: number;
14357    readonly radiusX: number;
14358    readonly radiusY: number;
14359    readonly rotationAngle: number;
14360    readonly screenX: number;
14361    readonly screenY: number;
14362    readonly target: EventTarget;
14363}
14364
14365declare var Touch: {
14366    prototype: Touch;
14367    new(touchInitDict: TouchInit): Touch;
14368};
14369
14370/** 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. */
14371interface TouchEvent extends UIEvent {
14372    readonly altKey: boolean;
14373    readonly changedTouches: TouchList;
14374    readonly ctrlKey: boolean;
14375    readonly metaKey: boolean;
14376    readonly shiftKey: boolean;
14377    readonly targetTouches: TouchList;
14378    readonly touches: TouchList;
14379}
14380
14381declare var TouchEvent: {
14382    prototype: TouchEvent;
14383    new(type: string, eventInitDict?: TouchEventInit): TouchEvent;
14384};
14385
14386/** 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. */
14387interface TouchList {
14388    readonly length: number;
14389    item(index: number): Touch | null;
14390    [index: number]: Touch;
14391}
14392
14393declare var TouchList: {
14394    prototype: TouchList;
14395    new(): TouchList;
14396};
14397
14398/** 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. */
14399interface TrackEvent extends Event {
14400    /** Returns the track object (TextTrack, AudioTrack, or VideoTrack) to which the event relates. */
14401    readonly track: TextTrack | null;
14402}
14403
14404declare var TrackEvent: {
14405    prototype: TrackEvent;
14406    new(type: string, eventInitDict?: TrackEventInit): TrackEvent;
14407};
14408
14409interface TransformStream<I = any, O = any> {
14410    readonly readable: ReadableStream<O>;
14411    readonly writable: WritableStream<I>;
14412}
14413
14414declare var TransformStream: {
14415    prototype: TransformStream;
14416    new<I = any, O = any>(transformer?: Transformer<I, O>, writableStrategy?: QueuingStrategy<I>, readableStrategy?: QueuingStrategy<O>): TransformStream<I, O>;
14417};
14418
14419interface TransformStreamDefaultController<O = any> {
14420    readonly desiredSize: number | null;
14421    enqueue(chunk?: O): void;
14422    error(reason?: any): void;
14423    terminate(): void;
14424}
14425
14426declare var TransformStreamDefaultController: {
14427    prototype: TransformStreamDefaultController;
14428    new(): TransformStreamDefaultController;
14429};
14430
14431/** Events providing information related to transitions. */
14432interface TransitionEvent extends Event {
14433    readonly elapsedTime: number;
14434    readonly propertyName: string;
14435    readonly pseudoElement: string;
14436}
14437
14438declare var TransitionEvent: {
14439    prototype: TransitionEvent;
14440    new(type: string, transitionEventInitDict?: TransitionEventInit): TransitionEvent;
14441};
14442
14443/** The nodes of a document subtree and a position within them. */
14444interface TreeWalker {
14445    currentNode: Node;
14446    readonly filter: NodeFilter | null;
14447    readonly root: Node;
14448    readonly whatToShow: number;
14449    firstChild(): Node | null;
14450    lastChild(): Node | null;
14451    nextNode(): Node | null;
14452    nextSibling(): Node | null;
14453    parentNode(): Node | null;
14454    previousNode(): Node | null;
14455    previousSibling(): Node | null;
14456}
14457
14458declare var TreeWalker: {
14459    prototype: TreeWalker;
14460    new(): TreeWalker;
14461};
14462
14463/** Simple user interface events. */
14464interface UIEvent extends Event {
14465    readonly detail: number;
14466    readonly view: Window | null;
14467    /** @deprecated */
14468    readonly which: number;
14469    /** @deprecated */
14470    initUIEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: Window | null, detailArg?: number): void;
14471}
14472
14473declare var UIEvent: {
14474    prototype: UIEvent;
14475    new(type: string, eventInitDict?: UIEventInit): UIEvent;
14476};
14477
14478/** The URL interface represents an object providing static methods used for creating object URLs. */
14479interface URL {
14480    hash: string;
14481    host: string;
14482    hostname: string;
14483    href: string;
14484    toString(): string;
14485    readonly origin: string;
14486    password: string;
14487    pathname: string;
14488    port: string;
14489    protocol: string;
14490    search: string;
14491    readonly searchParams: URLSearchParams;
14492    username: string;
14493    toJSON(): string;
14494}
14495
14496declare var URL: {
14497    prototype: URL;
14498    new(url: string | URL, base?: string | URL): URL;
14499    createObjectURL(obj: Blob | MediaSource): string;
14500    revokeObjectURL(url: string): void;
14501};
14502
14503type webkitURL = URL;
14504declare var webkitURL: typeof URL;
14505
14506interface URLSearchParams {
14507    /** Appends a specified key/value pair as a new search parameter. */
14508    append(name: string, value: string): void;
14509    /** Deletes the given search parameter, and its associated value, from the list of all search parameters. */
14510    delete(name: string): void;
14511    /** Returns the first value associated to the given search parameter. */
14512    get(name: string): string | null;
14513    /** Returns all the values association with a given search parameter. */
14514    getAll(name: string): string[];
14515    /** Returns a Boolean indicating if such a search parameter exists. */
14516    has(name: string): boolean;
14517    /** Sets the value associated to a given search parameter to the given value. If there were several values, delete the others. */
14518    set(name: string, value: string): void;
14519    sort(): void;
14520    /** Returns a string containing a query string suitable for use in a URL. Does not include the question mark. */
14521    toString(): string;
14522    forEach(callbackfn: (value: string, key: string, parent: URLSearchParams) => void, thisArg?: any): void;
14523}
14524
14525declare var URLSearchParams: {
14526    prototype: URLSearchParams;
14527    new(init?: string[][] | Record<string, string> | string | URLSearchParams): URLSearchParams;
14528    toString(): string;
14529};
14530
14531interface VTTCue extends TextTrackCue {
14532    align: AlignSetting;
14533    line: LineAndPositionSetting;
14534    lineAlign: LineAlignSetting;
14535    position: LineAndPositionSetting;
14536    positionAlign: PositionAlignSetting;
14537    region: VTTRegion | null;
14538    size: number;
14539    snapToLines: boolean;
14540    text: string;
14541    vertical: DirectionSetting;
14542    getCueAsHTML(): DocumentFragment;
14543    addEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: VTTCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14544    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14545    removeEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: VTTCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14546    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14547}
14548
14549declare var VTTCue: {
14550    prototype: VTTCue;
14551    new(startTime: number, endTime: number, text: string): VTTCue;
14552};
14553
14554interface VTTRegion {
14555    id: string;
14556    lines: number;
14557    regionAnchorX: number;
14558    regionAnchorY: number;
14559    scroll: ScrollSetting;
14560    viewportAnchorX: number;
14561    viewportAnchorY: number;
14562    width: number;
14563}
14564
14565declare var VTTRegion: {
14566    prototype: VTTRegion;
14567    new(): VTTRegion;
14568};
14569
14570/** 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. */
14571interface ValidityState {
14572    readonly badInput: boolean;
14573    readonly customError: boolean;
14574    readonly patternMismatch: boolean;
14575    readonly rangeOverflow: boolean;
14576    readonly rangeUnderflow: boolean;
14577    readonly stepMismatch: boolean;
14578    readonly tooLong: boolean;
14579    readonly tooShort: boolean;
14580    readonly typeMismatch: boolean;
14581    readonly valid: boolean;
14582    readonly valueMissing: boolean;
14583}
14584
14585declare var ValidityState: {
14586    prototype: ValidityState;
14587    new(): ValidityState;
14588};
14589
14590interface VideoColorSpace {
14591    readonly fullRange: boolean | null;
14592    readonly matrix: VideoMatrixCoefficients | null;
14593    readonly primaries: VideoColorPrimaries | null;
14594    readonly transfer: VideoTransferCharacteristics | null;
14595    toJSON(): VideoColorSpaceInit;
14596}
14597
14598declare var VideoColorSpace: {
14599    prototype: VideoColorSpace;
14600    new(init?: VideoColorSpaceInit): VideoColorSpace;
14601};
14602
14603/** Returned by the HTMLVideoElement.getVideoPlaybackQuality() method and contains metrics that can be used to determine the playback quality of a video. */
14604interface VideoPlaybackQuality {
14605    /** @deprecated */
14606    readonly corruptedVideoFrames: number;
14607    readonly creationTime: DOMHighResTimeStamp;
14608    readonly droppedVideoFrames: number;
14609    readonly totalVideoFrames: number;
14610}
14611
14612declare var VideoPlaybackQuality: {
14613    prototype: VideoPlaybackQuality;
14614    new(): VideoPlaybackQuality;
14615};
14616
14617interface VisualViewportEventMap {
14618    "resize": Event;
14619    "scroll": Event;
14620}
14621
14622interface VisualViewport extends EventTarget {
14623    readonly height: number;
14624    readonly offsetLeft: number;
14625    readonly offsetTop: number;
14626    onresize: ((this: VisualViewport, ev: Event) => any) | null;
14627    onscroll: ((this: VisualViewport, ev: Event) => any) | null;
14628    readonly pageLeft: number;
14629    readonly pageTop: number;
14630    readonly scale: number;
14631    readonly width: number;
14632    addEventListener<K extends keyof VisualViewportEventMap>(type: K, listener: (this: VisualViewport, ev: VisualViewportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
14633    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
14634    removeEventListener<K extends keyof VisualViewportEventMap>(type: K, listener: (this: VisualViewport, ev: VisualViewportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
14635    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
14636}
14637
14638declare var VisualViewport: {
14639    prototype: VisualViewport;
14640    new(): VisualViewport;
14641};
14642
14643interface WEBGL_color_buffer_float {
14644    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: GLenum;
14645    readonly RGBA32F_EXT: GLenum;
14646    readonly UNSIGNED_NORMALIZED_EXT: GLenum;
14647}
14648
14649interface WEBGL_compressed_texture_astc {
14650    getSupportedProfiles(): string[];
14651    readonly COMPRESSED_RGBA_ASTC_10x10_KHR: GLenum;
14652    readonly COMPRESSED_RGBA_ASTC_10x5_KHR: GLenum;
14653    readonly COMPRESSED_RGBA_ASTC_10x6_KHR: GLenum;
14654    readonly COMPRESSED_RGBA_ASTC_10x8_KHR: GLenum;
14655    readonly COMPRESSED_RGBA_ASTC_12x10_KHR: GLenum;
14656    readonly COMPRESSED_RGBA_ASTC_12x12_KHR: GLenum;
14657    readonly COMPRESSED_RGBA_ASTC_4x4_KHR: GLenum;
14658    readonly COMPRESSED_RGBA_ASTC_5x4_KHR: GLenum;
14659    readonly COMPRESSED_RGBA_ASTC_5x5_KHR: GLenum;
14660    readonly COMPRESSED_RGBA_ASTC_6x5_KHR: GLenum;
14661    readonly COMPRESSED_RGBA_ASTC_6x6_KHR: GLenum;
14662    readonly COMPRESSED_RGBA_ASTC_8x5_KHR: GLenum;
14663    readonly COMPRESSED_RGBA_ASTC_8x6_KHR: GLenum;
14664    readonly COMPRESSED_RGBA_ASTC_8x8_KHR: GLenum;
14665    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: GLenum;
14666    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: GLenum;
14667    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: GLenum;
14668    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: GLenum;
14669    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: GLenum;
14670    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: GLenum;
14671    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: GLenum;
14672    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: GLenum;
14673    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: GLenum;
14674    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: GLenum;
14675    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: GLenum;
14676    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: GLenum;
14677    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: GLenum;
14678    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: GLenum;
14679}
14680
14681interface WEBGL_compressed_texture_etc {
14682    readonly COMPRESSED_R11_EAC: GLenum;
14683    readonly COMPRESSED_RG11_EAC: GLenum;
14684    readonly COMPRESSED_RGB8_ETC2: GLenum;
14685    readonly COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum;
14686    readonly COMPRESSED_RGBA8_ETC2_EAC: GLenum;
14687    readonly COMPRESSED_SIGNED_R11_EAC: GLenum;
14688    readonly COMPRESSED_SIGNED_RG11_EAC: GLenum;
14689    readonly COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: GLenum;
14690    readonly COMPRESSED_SRGB8_ETC2: GLenum;
14691    readonly COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum;
14692}
14693
14694interface WEBGL_compressed_texture_etc1 {
14695    readonly COMPRESSED_RGB_ETC1_WEBGL: GLenum;
14696}
14697
14698/** The WEBGL_compressed_texture_s3tc extension is part of the WebGL API and exposes four S3TC compressed texture formats. */
14699interface WEBGL_compressed_texture_s3tc {
14700    readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: GLenum;
14701    readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: GLenum;
14702    readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: GLenum;
14703    readonly COMPRESSED_RGB_S3TC_DXT1_EXT: GLenum;
14704}
14705
14706interface WEBGL_compressed_texture_s3tc_srgb {
14707    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: GLenum;
14708    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: GLenum;
14709    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: GLenum;
14710    readonly COMPRESSED_SRGB_S3TC_DXT1_EXT: GLenum;
14711}
14712
14713/** 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. */
14714interface WEBGL_debug_renderer_info {
14715    readonly UNMASKED_RENDERER_WEBGL: GLenum;
14716    readonly UNMASKED_VENDOR_WEBGL: GLenum;
14717}
14718
14719interface WEBGL_debug_shaders {
14720    getTranslatedShaderSource(shader: WebGLShader): string;
14721}
14722
14723/** The WEBGL_depth_texture extension is part of the WebGL API and defines 2D depth and depth-stencil textures. */
14724interface WEBGL_depth_texture {
14725    readonly UNSIGNED_INT_24_8_WEBGL: GLenum;
14726}
14727
14728interface WEBGL_draw_buffers {
14729    drawBuffersWEBGL(buffers: GLenum[]): void;
14730    readonly COLOR_ATTACHMENT0_WEBGL: GLenum;
14731    readonly COLOR_ATTACHMENT10_WEBGL: GLenum;
14732    readonly COLOR_ATTACHMENT11_WEBGL: GLenum;
14733    readonly COLOR_ATTACHMENT12_WEBGL: GLenum;
14734    readonly COLOR_ATTACHMENT13_WEBGL: GLenum;
14735    readonly COLOR_ATTACHMENT14_WEBGL: GLenum;
14736    readonly COLOR_ATTACHMENT15_WEBGL: GLenum;
14737    readonly COLOR_ATTACHMENT1_WEBGL: GLenum;
14738    readonly COLOR_ATTACHMENT2_WEBGL: GLenum;
14739    readonly COLOR_ATTACHMENT3_WEBGL: GLenum;
14740    readonly COLOR_ATTACHMENT4_WEBGL: GLenum;
14741    readonly COLOR_ATTACHMENT5_WEBGL: GLenum;
14742    readonly COLOR_ATTACHMENT6_WEBGL: GLenum;
14743    readonly COLOR_ATTACHMENT7_WEBGL: GLenum;
14744    readonly COLOR_ATTACHMENT8_WEBGL: GLenum;
14745    readonly COLOR_ATTACHMENT9_WEBGL: GLenum;
14746    readonly DRAW_BUFFER0_WEBGL: GLenum;
14747    readonly DRAW_BUFFER10_WEBGL: GLenum;
14748    readonly DRAW_BUFFER11_WEBGL: GLenum;
14749    readonly DRAW_BUFFER12_WEBGL: GLenum;
14750    readonly DRAW_BUFFER13_WEBGL: GLenum;
14751    readonly DRAW_BUFFER14_WEBGL: GLenum;
14752    readonly DRAW_BUFFER15_WEBGL: GLenum;
14753    readonly DRAW_BUFFER1_WEBGL: GLenum;
14754    readonly DRAW_BUFFER2_WEBGL: GLenum;
14755    readonly DRAW_BUFFER3_WEBGL: GLenum;
14756    readonly DRAW_BUFFER4_WEBGL: GLenum;
14757    readonly DRAW_BUFFER5_WEBGL: GLenum;
14758    readonly DRAW_BUFFER6_WEBGL: GLenum;
14759    readonly DRAW_BUFFER7_WEBGL: GLenum;
14760    readonly DRAW_BUFFER8_WEBGL: GLenum;
14761    readonly DRAW_BUFFER9_WEBGL: GLenum;
14762    readonly MAX_COLOR_ATTACHMENTS_WEBGL: GLenum;
14763    readonly MAX_DRAW_BUFFERS_WEBGL: GLenum;
14764}
14765
14766interface WEBGL_lose_context {
14767    loseContext(): void;
14768    restoreContext(): void;
14769}
14770
14771interface WEBGL_multi_draw {
14772    multiDrawArraysInstancedWEBGL(mode: GLenum, firstsList: Int32Array | GLint[], firstsOffset: GLuint, countsList: Int32Array | GLsizei[], countsOffset: GLuint, instanceCountsList: Int32Array | GLsizei[], instanceCountsOffset: GLuint, drawcount: GLsizei): void;
14773    multiDrawArraysWEBGL(mode: GLenum, firstsList: Int32Array | GLint[], firstsOffset: GLuint, countsList: Int32Array | GLsizei[], countsOffset: GLuint, drawcount: GLsizei): void;
14774    multiDrawElementsInstancedWEBGL(mode: GLenum, countsList: Int32Array | GLsizei[], countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | GLsizei[], offsetsOffset: GLuint, instanceCountsList: Int32Array | GLsizei[], instanceCountsOffset: GLuint, drawcount: GLsizei): void;
14775    multiDrawElementsWEBGL(mode: GLenum, countsList: Int32Array | GLsizei[], countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | GLsizei[], offsetsOffset: GLuint, drawcount: GLsizei): void;
14776}
14777
14778/** A WaveShaperNode always has exactly one input and one output. */
14779interface WaveShaperNode extends AudioNode {
14780    curve: Float32Array | null;
14781    oversample: OverSampleType;
14782}
14783
14784declare var WaveShaperNode: {
14785    prototype: WaveShaperNode;
14786    new(context: BaseAudioContext, options?: WaveShaperOptions): WaveShaperNode;
14787};
14788
14789interface WebGL2RenderingContext extends WebGL2RenderingContextBase, WebGL2RenderingContextOverloads, WebGLRenderingContextBase {
14790}
14791
14792declare var WebGL2RenderingContext: {
14793    prototype: WebGL2RenderingContext;
14794    new(): WebGL2RenderingContext;
14795    readonly ACTIVE_UNIFORM_BLOCKS: GLenum;
14796    readonly ALREADY_SIGNALED: GLenum;
14797    readonly ANY_SAMPLES_PASSED: GLenum;
14798    readonly ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum;
14799    readonly COLOR: GLenum;
14800    readonly COLOR_ATTACHMENT1: GLenum;
14801    readonly COLOR_ATTACHMENT10: GLenum;
14802    readonly COLOR_ATTACHMENT11: GLenum;
14803    readonly COLOR_ATTACHMENT12: GLenum;
14804    readonly COLOR_ATTACHMENT13: GLenum;
14805    readonly COLOR_ATTACHMENT14: GLenum;
14806    readonly COLOR_ATTACHMENT15: GLenum;
14807    readonly COLOR_ATTACHMENT2: GLenum;
14808    readonly COLOR_ATTACHMENT3: GLenum;
14809    readonly COLOR_ATTACHMENT4: GLenum;
14810    readonly COLOR_ATTACHMENT5: GLenum;
14811    readonly COLOR_ATTACHMENT6: GLenum;
14812    readonly COLOR_ATTACHMENT7: GLenum;
14813    readonly COLOR_ATTACHMENT8: GLenum;
14814    readonly COLOR_ATTACHMENT9: GLenum;
14815    readonly COMPARE_REF_TO_TEXTURE: GLenum;
14816    readonly CONDITION_SATISFIED: GLenum;
14817    readonly COPY_READ_BUFFER: GLenum;
14818    readonly COPY_READ_BUFFER_BINDING: GLenum;
14819    readonly COPY_WRITE_BUFFER: GLenum;
14820    readonly COPY_WRITE_BUFFER_BINDING: GLenum;
14821    readonly CURRENT_QUERY: GLenum;
14822    readonly DEPTH: GLenum;
14823    readonly DEPTH24_STENCIL8: GLenum;
14824    readonly DEPTH32F_STENCIL8: GLenum;
14825    readonly DEPTH_COMPONENT24: GLenum;
14826    readonly DEPTH_COMPONENT32F: GLenum;
14827    readonly DRAW_BUFFER0: GLenum;
14828    readonly DRAW_BUFFER1: GLenum;
14829    readonly DRAW_BUFFER10: GLenum;
14830    readonly DRAW_BUFFER11: GLenum;
14831    readonly DRAW_BUFFER12: GLenum;
14832    readonly DRAW_BUFFER13: GLenum;
14833    readonly DRAW_BUFFER14: GLenum;
14834    readonly DRAW_BUFFER15: GLenum;
14835    readonly DRAW_BUFFER2: GLenum;
14836    readonly DRAW_BUFFER3: GLenum;
14837    readonly DRAW_BUFFER4: GLenum;
14838    readonly DRAW_BUFFER5: GLenum;
14839    readonly DRAW_BUFFER6: GLenum;
14840    readonly DRAW_BUFFER7: GLenum;
14841    readonly DRAW_BUFFER8: GLenum;
14842    readonly DRAW_BUFFER9: GLenum;
14843    readonly DRAW_FRAMEBUFFER: GLenum;
14844    readonly DRAW_FRAMEBUFFER_BINDING: GLenum;
14845    readonly DYNAMIC_COPY: GLenum;
14846    readonly DYNAMIC_READ: GLenum;
14847    readonly FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum;
14848    readonly FLOAT_MAT2x3: GLenum;
14849    readonly FLOAT_MAT2x4: GLenum;
14850    readonly FLOAT_MAT3x2: GLenum;
14851    readonly FLOAT_MAT3x4: GLenum;
14852    readonly FLOAT_MAT4x2: GLenum;
14853    readonly FLOAT_MAT4x3: GLenum;
14854    readonly FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum;
14855    readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum;
14856    readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum;
14857    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum;
14858    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum;
14859    readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum;
14860    readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum;
14861    readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum;
14862    readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum;
14863    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum;
14864    readonly FRAMEBUFFER_DEFAULT: GLenum;
14865    readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum;
14866    readonly HALF_FLOAT: GLenum;
14867    readonly INTERLEAVED_ATTRIBS: GLenum;
14868    readonly INT_2_10_10_10_REV: GLenum;
14869    readonly INT_SAMPLER_2D: GLenum;
14870    readonly INT_SAMPLER_2D_ARRAY: GLenum;
14871    readonly INT_SAMPLER_3D: GLenum;
14872    readonly INT_SAMPLER_CUBE: GLenum;
14873    readonly INVALID_INDEX: GLenum;
14874    readonly MAX: GLenum;
14875    readonly MAX_3D_TEXTURE_SIZE: GLenum;
14876    readonly MAX_ARRAY_TEXTURE_LAYERS: GLenum;
14877    readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: GLenum;
14878    readonly MAX_COLOR_ATTACHMENTS: GLenum;
14879    readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum;
14880    readonly MAX_COMBINED_UNIFORM_BLOCKS: GLenum;
14881    readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum;
14882    readonly MAX_DRAW_BUFFERS: GLenum;
14883    readonly MAX_ELEMENTS_INDICES: GLenum;
14884    readonly MAX_ELEMENTS_VERTICES: GLenum;
14885    readonly MAX_ELEMENT_INDEX: GLenum;
14886    readonly MAX_FRAGMENT_INPUT_COMPONENTS: GLenum;
14887    readonly MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum;
14888    readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum;
14889    readonly MAX_PROGRAM_TEXEL_OFFSET: GLenum;
14890    readonly MAX_SAMPLES: GLenum;
14891    readonly MAX_SERVER_WAIT_TIMEOUT: GLenum;
14892    readonly MAX_TEXTURE_LOD_BIAS: GLenum;
14893    readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum;
14894    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum;
14895    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum;
14896    readonly MAX_UNIFORM_BLOCK_SIZE: GLenum;
14897    readonly MAX_UNIFORM_BUFFER_BINDINGS: GLenum;
14898    readonly MAX_VARYING_COMPONENTS: GLenum;
14899    readonly MAX_VERTEX_OUTPUT_COMPONENTS: GLenum;
14900    readonly MAX_VERTEX_UNIFORM_BLOCKS: GLenum;
14901    readonly MAX_VERTEX_UNIFORM_COMPONENTS: GLenum;
14902    readonly MIN: GLenum;
14903    readonly MIN_PROGRAM_TEXEL_OFFSET: GLenum;
14904    readonly OBJECT_TYPE: GLenum;
14905    readonly PACK_ROW_LENGTH: GLenum;
14906    readonly PACK_SKIP_PIXELS: GLenum;
14907    readonly PACK_SKIP_ROWS: GLenum;
14908    readonly PIXEL_PACK_BUFFER: GLenum;
14909    readonly PIXEL_PACK_BUFFER_BINDING: GLenum;
14910    readonly PIXEL_UNPACK_BUFFER: GLenum;
14911    readonly PIXEL_UNPACK_BUFFER_BINDING: GLenum;
14912    readonly QUERY_RESULT: GLenum;
14913    readonly QUERY_RESULT_AVAILABLE: GLenum;
14914    readonly R11F_G11F_B10F: GLenum;
14915    readonly R16F: GLenum;
14916    readonly R16I: GLenum;
14917    readonly R16UI: GLenum;
14918    readonly R32F: GLenum;
14919    readonly R32I: GLenum;
14920    readonly R32UI: GLenum;
14921    readonly R8: GLenum;
14922    readonly R8I: GLenum;
14923    readonly R8UI: GLenum;
14924    readonly R8_SNORM: GLenum;
14925    readonly RASTERIZER_DISCARD: GLenum;
14926    readonly READ_BUFFER: GLenum;
14927    readonly READ_FRAMEBUFFER: GLenum;
14928    readonly READ_FRAMEBUFFER_BINDING: GLenum;
14929    readonly RED: GLenum;
14930    readonly RED_INTEGER: GLenum;
14931    readonly RENDERBUFFER_SAMPLES: GLenum;
14932    readonly RG: GLenum;
14933    readonly RG16F: GLenum;
14934    readonly RG16I: GLenum;
14935    readonly RG16UI: GLenum;
14936    readonly RG32F: GLenum;
14937    readonly RG32I: GLenum;
14938    readonly RG32UI: GLenum;
14939    readonly RG8: GLenum;
14940    readonly RG8I: GLenum;
14941    readonly RG8UI: GLenum;
14942    readonly RG8_SNORM: GLenum;
14943    readonly RGB10_A2: GLenum;
14944    readonly RGB10_A2UI: GLenum;
14945    readonly RGB16F: GLenum;
14946    readonly RGB16I: GLenum;
14947    readonly RGB16UI: GLenum;
14948    readonly RGB32F: GLenum;
14949    readonly RGB32I: GLenum;
14950    readonly RGB32UI: GLenum;
14951    readonly RGB8: GLenum;
14952    readonly RGB8I: GLenum;
14953    readonly RGB8UI: GLenum;
14954    readonly RGB8_SNORM: GLenum;
14955    readonly RGB9_E5: GLenum;
14956    readonly RGBA16F: GLenum;
14957    readonly RGBA16I: GLenum;
14958    readonly RGBA16UI: GLenum;
14959    readonly RGBA32F: GLenum;
14960    readonly RGBA32I: GLenum;
14961    readonly RGBA32UI: GLenum;
14962    readonly RGBA8: GLenum;
14963    readonly RGBA8I: GLenum;
14964    readonly RGBA8UI: GLenum;
14965    readonly RGBA8_SNORM: GLenum;
14966    readonly RGBA_INTEGER: GLenum;
14967    readonly RGB_INTEGER: GLenum;
14968    readonly RG_INTEGER: GLenum;
14969    readonly SAMPLER_2D_ARRAY: GLenum;
14970    readonly SAMPLER_2D_ARRAY_SHADOW: GLenum;
14971    readonly SAMPLER_2D_SHADOW: GLenum;
14972    readonly SAMPLER_3D: GLenum;
14973    readonly SAMPLER_BINDING: GLenum;
14974    readonly SAMPLER_CUBE_SHADOW: GLenum;
14975    readonly SEPARATE_ATTRIBS: GLenum;
14976    readonly SIGNALED: GLenum;
14977    readonly SIGNED_NORMALIZED: GLenum;
14978    readonly SRGB: GLenum;
14979    readonly SRGB8: GLenum;
14980    readonly SRGB8_ALPHA8: GLenum;
14981    readonly STATIC_COPY: GLenum;
14982    readonly STATIC_READ: GLenum;
14983    readonly STENCIL: GLenum;
14984    readonly STREAM_COPY: GLenum;
14985    readonly STREAM_READ: GLenum;
14986    readonly SYNC_CONDITION: GLenum;
14987    readonly SYNC_FENCE: GLenum;
14988    readonly SYNC_FLAGS: GLenum;
14989    readonly SYNC_FLUSH_COMMANDS_BIT: GLenum;
14990    readonly SYNC_GPU_COMMANDS_COMPLETE: GLenum;
14991    readonly SYNC_STATUS: GLenum;
14992    readonly TEXTURE_2D_ARRAY: GLenum;
14993    readonly TEXTURE_3D: GLenum;
14994    readonly TEXTURE_BASE_LEVEL: GLenum;
14995    readonly TEXTURE_BINDING_2D_ARRAY: GLenum;
14996    readonly TEXTURE_BINDING_3D: GLenum;
14997    readonly TEXTURE_COMPARE_FUNC: GLenum;
14998    readonly TEXTURE_COMPARE_MODE: GLenum;
14999    readonly TEXTURE_IMMUTABLE_FORMAT: GLenum;
15000    readonly TEXTURE_IMMUTABLE_LEVELS: GLenum;
15001    readonly TEXTURE_MAX_LEVEL: GLenum;
15002    readonly TEXTURE_MAX_LOD: GLenum;
15003    readonly TEXTURE_MIN_LOD: GLenum;
15004    readonly TEXTURE_WRAP_R: GLenum;
15005    readonly TIMEOUT_EXPIRED: GLenum;
15006    readonly TIMEOUT_IGNORED: GLint64;
15007    readonly TRANSFORM_FEEDBACK: GLenum;
15008    readonly TRANSFORM_FEEDBACK_ACTIVE: GLenum;
15009    readonly TRANSFORM_FEEDBACK_BINDING: GLenum;
15010    readonly TRANSFORM_FEEDBACK_BUFFER: GLenum;
15011    readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum;
15012    readonly TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum;
15013    readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum;
15014    readonly TRANSFORM_FEEDBACK_BUFFER_START: GLenum;
15015    readonly TRANSFORM_FEEDBACK_PAUSED: GLenum;
15016    readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum;
15017    readonly TRANSFORM_FEEDBACK_VARYINGS: GLenum;
15018    readonly UNIFORM_ARRAY_STRIDE: GLenum;
15019    readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum;
15020    readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum;
15021    readonly UNIFORM_BLOCK_BINDING: GLenum;
15022    readonly UNIFORM_BLOCK_DATA_SIZE: GLenum;
15023    readonly UNIFORM_BLOCK_INDEX: GLenum;
15024    readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum;
15025    readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum;
15026    readonly UNIFORM_BUFFER: GLenum;
15027    readonly UNIFORM_BUFFER_BINDING: GLenum;
15028    readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum;
15029    readonly UNIFORM_BUFFER_SIZE: GLenum;
15030    readonly UNIFORM_BUFFER_START: GLenum;
15031    readonly UNIFORM_IS_ROW_MAJOR: GLenum;
15032    readonly UNIFORM_MATRIX_STRIDE: GLenum;
15033    readonly UNIFORM_OFFSET: GLenum;
15034    readonly UNIFORM_SIZE: GLenum;
15035    readonly UNIFORM_TYPE: GLenum;
15036    readonly UNPACK_IMAGE_HEIGHT: GLenum;
15037    readonly UNPACK_ROW_LENGTH: GLenum;
15038    readonly UNPACK_SKIP_IMAGES: GLenum;
15039    readonly UNPACK_SKIP_PIXELS: GLenum;
15040    readonly UNPACK_SKIP_ROWS: GLenum;
15041    readonly UNSIGNALED: GLenum;
15042    readonly UNSIGNED_INT_10F_11F_11F_REV: GLenum;
15043    readonly UNSIGNED_INT_24_8: GLenum;
15044    readonly UNSIGNED_INT_2_10_10_10_REV: GLenum;
15045    readonly UNSIGNED_INT_5_9_9_9_REV: GLenum;
15046    readonly UNSIGNED_INT_SAMPLER_2D: GLenum;
15047    readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum;
15048    readonly UNSIGNED_INT_SAMPLER_3D: GLenum;
15049    readonly UNSIGNED_INT_SAMPLER_CUBE: GLenum;
15050    readonly UNSIGNED_INT_VEC2: GLenum;
15051    readonly UNSIGNED_INT_VEC3: GLenum;
15052    readonly UNSIGNED_INT_VEC4: GLenum;
15053    readonly UNSIGNED_NORMALIZED: GLenum;
15054    readonly VERTEX_ARRAY_BINDING: GLenum;
15055    readonly VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum;
15056    readonly VERTEX_ATTRIB_ARRAY_INTEGER: GLenum;
15057    readonly WAIT_FAILED: GLenum;
15058    readonly ACTIVE_ATTRIBUTES: GLenum;
15059    readonly ACTIVE_TEXTURE: GLenum;
15060    readonly ACTIVE_UNIFORMS: GLenum;
15061    readonly ALIASED_LINE_WIDTH_RANGE: GLenum;
15062    readonly ALIASED_POINT_SIZE_RANGE: GLenum;
15063    readonly ALPHA: GLenum;
15064    readonly ALPHA_BITS: GLenum;
15065    readonly ALWAYS: GLenum;
15066    readonly ARRAY_BUFFER: GLenum;
15067    readonly ARRAY_BUFFER_BINDING: GLenum;
15068    readonly ATTACHED_SHADERS: GLenum;
15069    readonly BACK: GLenum;
15070    readonly BLEND: GLenum;
15071    readonly BLEND_COLOR: GLenum;
15072    readonly BLEND_DST_ALPHA: GLenum;
15073    readonly BLEND_DST_RGB: GLenum;
15074    readonly BLEND_EQUATION: GLenum;
15075    readonly BLEND_EQUATION_ALPHA: GLenum;
15076    readonly BLEND_EQUATION_RGB: GLenum;
15077    readonly BLEND_SRC_ALPHA: GLenum;
15078    readonly BLEND_SRC_RGB: GLenum;
15079    readonly BLUE_BITS: GLenum;
15080    readonly BOOL: GLenum;
15081    readonly BOOL_VEC2: GLenum;
15082    readonly BOOL_VEC3: GLenum;
15083    readonly BOOL_VEC4: GLenum;
15084    readonly BROWSER_DEFAULT_WEBGL: GLenum;
15085    readonly BUFFER_SIZE: GLenum;
15086    readonly BUFFER_USAGE: GLenum;
15087    readonly BYTE: GLenum;
15088    readonly CCW: GLenum;
15089    readonly CLAMP_TO_EDGE: GLenum;
15090    readonly COLOR_ATTACHMENT0: GLenum;
15091    readonly COLOR_BUFFER_BIT: GLenum;
15092    readonly COLOR_CLEAR_VALUE: GLenum;
15093    readonly COLOR_WRITEMASK: GLenum;
15094    readonly COMPILE_STATUS: GLenum;
15095    readonly COMPRESSED_TEXTURE_FORMATS: GLenum;
15096    readonly CONSTANT_ALPHA: GLenum;
15097    readonly CONSTANT_COLOR: GLenum;
15098    readonly CONTEXT_LOST_WEBGL: GLenum;
15099    readonly CULL_FACE: GLenum;
15100    readonly CULL_FACE_MODE: GLenum;
15101    readonly CURRENT_PROGRAM: GLenum;
15102    readonly CURRENT_VERTEX_ATTRIB: GLenum;
15103    readonly CW: GLenum;
15104    readonly DECR: GLenum;
15105    readonly DECR_WRAP: GLenum;
15106    readonly DELETE_STATUS: GLenum;
15107    readonly DEPTH_ATTACHMENT: GLenum;
15108    readonly DEPTH_BITS: GLenum;
15109    readonly DEPTH_BUFFER_BIT: GLenum;
15110    readonly DEPTH_CLEAR_VALUE: GLenum;
15111    readonly DEPTH_COMPONENT: GLenum;
15112    readonly DEPTH_COMPONENT16: GLenum;
15113    readonly DEPTH_FUNC: GLenum;
15114    readonly DEPTH_RANGE: GLenum;
15115    readonly DEPTH_STENCIL: GLenum;
15116    readonly DEPTH_STENCIL_ATTACHMENT: GLenum;
15117    readonly DEPTH_TEST: GLenum;
15118    readonly DEPTH_WRITEMASK: GLenum;
15119    readonly DITHER: GLenum;
15120    readonly DONT_CARE: GLenum;
15121    readonly DST_ALPHA: GLenum;
15122    readonly DST_COLOR: GLenum;
15123    readonly DYNAMIC_DRAW: GLenum;
15124    readonly ELEMENT_ARRAY_BUFFER: GLenum;
15125    readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum;
15126    readonly EQUAL: GLenum;
15127    readonly FASTEST: GLenum;
15128    readonly FLOAT: GLenum;
15129    readonly FLOAT_MAT2: GLenum;
15130    readonly FLOAT_MAT3: GLenum;
15131    readonly FLOAT_MAT4: GLenum;
15132    readonly FLOAT_VEC2: GLenum;
15133    readonly FLOAT_VEC3: GLenum;
15134    readonly FLOAT_VEC4: GLenum;
15135    readonly FRAGMENT_SHADER: GLenum;
15136    readonly FRAMEBUFFER: GLenum;
15137    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum;
15138    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum;
15139    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum;
15140    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum;
15141    readonly FRAMEBUFFER_BINDING: GLenum;
15142    readonly FRAMEBUFFER_COMPLETE: GLenum;
15143    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum;
15144    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum;
15145    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum;
15146    readonly FRAMEBUFFER_UNSUPPORTED: GLenum;
15147    readonly FRONT: GLenum;
15148    readonly FRONT_AND_BACK: GLenum;
15149    readonly FRONT_FACE: GLenum;
15150    readonly FUNC_ADD: GLenum;
15151    readonly FUNC_REVERSE_SUBTRACT: GLenum;
15152    readonly FUNC_SUBTRACT: GLenum;
15153    readonly GENERATE_MIPMAP_HINT: GLenum;
15154    readonly GEQUAL: GLenum;
15155    readonly GREATER: GLenum;
15156    readonly GREEN_BITS: GLenum;
15157    readonly HIGH_FLOAT: GLenum;
15158    readonly HIGH_INT: GLenum;
15159    readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum;
15160    readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum;
15161    readonly INCR: GLenum;
15162    readonly INCR_WRAP: GLenum;
15163    readonly INT: GLenum;
15164    readonly INT_VEC2: GLenum;
15165    readonly INT_VEC3: GLenum;
15166    readonly INT_VEC4: GLenum;
15167    readonly INVALID_ENUM: GLenum;
15168    readonly INVALID_FRAMEBUFFER_OPERATION: GLenum;
15169    readonly INVALID_OPERATION: GLenum;
15170    readonly INVALID_VALUE: GLenum;
15171    readonly INVERT: GLenum;
15172    readonly KEEP: GLenum;
15173    readonly LEQUAL: GLenum;
15174    readonly LESS: GLenum;
15175    readonly LINEAR: GLenum;
15176    readonly LINEAR_MIPMAP_LINEAR: GLenum;
15177    readonly LINEAR_MIPMAP_NEAREST: GLenum;
15178    readonly LINES: GLenum;
15179    readonly LINE_LOOP: GLenum;
15180    readonly LINE_STRIP: GLenum;
15181    readonly LINE_WIDTH: GLenum;
15182    readonly LINK_STATUS: GLenum;
15183    readonly LOW_FLOAT: GLenum;
15184    readonly LOW_INT: GLenum;
15185    readonly LUMINANCE: GLenum;
15186    readonly LUMINANCE_ALPHA: GLenum;
15187    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum;
15188    readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum;
15189    readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum;
15190    readonly MAX_RENDERBUFFER_SIZE: GLenum;
15191    readonly MAX_TEXTURE_IMAGE_UNITS: GLenum;
15192    readonly MAX_TEXTURE_SIZE: GLenum;
15193    readonly MAX_VARYING_VECTORS: GLenum;
15194    readonly MAX_VERTEX_ATTRIBS: GLenum;
15195    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum;
15196    readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum;
15197    readonly MAX_VIEWPORT_DIMS: GLenum;
15198    readonly MEDIUM_FLOAT: GLenum;
15199    readonly MEDIUM_INT: GLenum;
15200    readonly MIRRORED_REPEAT: GLenum;
15201    readonly NEAREST: GLenum;
15202    readonly NEAREST_MIPMAP_LINEAR: GLenum;
15203    readonly NEAREST_MIPMAP_NEAREST: GLenum;
15204    readonly NEVER: GLenum;
15205    readonly NICEST: GLenum;
15206    readonly NONE: GLenum;
15207    readonly NOTEQUAL: GLenum;
15208    readonly NO_ERROR: GLenum;
15209    readonly ONE: GLenum;
15210    readonly ONE_MINUS_CONSTANT_ALPHA: GLenum;
15211    readonly ONE_MINUS_CONSTANT_COLOR: GLenum;
15212    readonly ONE_MINUS_DST_ALPHA: GLenum;
15213    readonly ONE_MINUS_DST_COLOR: GLenum;
15214    readonly ONE_MINUS_SRC_ALPHA: GLenum;
15215    readonly ONE_MINUS_SRC_COLOR: GLenum;
15216    readonly OUT_OF_MEMORY: GLenum;
15217    readonly PACK_ALIGNMENT: GLenum;
15218    readonly POINTS: GLenum;
15219    readonly POLYGON_OFFSET_FACTOR: GLenum;
15220    readonly POLYGON_OFFSET_FILL: GLenum;
15221    readonly POLYGON_OFFSET_UNITS: GLenum;
15222    readonly RED_BITS: GLenum;
15223    readonly RENDERBUFFER: GLenum;
15224    readonly RENDERBUFFER_ALPHA_SIZE: GLenum;
15225    readonly RENDERBUFFER_BINDING: GLenum;
15226    readonly RENDERBUFFER_BLUE_SIZE: GLenum;
15227    readonly RENDERBUFFER_DEPTH_SIZE: GLenum;
15228    readonly RENDERBUFFER_GREEN_SIZE: GLenum;
15229    readonly RENDERBUFFER_HEIGHT: GLenum;
15230    readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum;
15231    readonly RENDERBUFFER_RED_SIZE: GLenum;
15232    readonly RENDERBUFFER_STENCIL_SIZE: GLenum;
15233    readonly RENDERBUFFER_WIDTH: GLenum;
15234    readonly RENDERER: GLenum;
15235    readonly REPEAT: GLenum;
15236    readonly REPLACE: GLenum;
15237    readonly RGB: GLenum;
15238    readonly RGB565: GLenum;
15239    readonly RGB5_A1: GLenum;
15240    readonly RGBA: GLenum;
15241    readonly RGBA4: GLenum;
15242    readonly SAMPLER_2D: GLenum;
15243    readonly SAMPLER_CUBE: GLenum;
15244    readonly SAMPLES: GLenum;
15245    readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum;
15246    readonly SAMPLE_BUFFERS: GLenum;
15247    readonly SAMPLE_COVERAGE: GLenum;
15248    readonly SAMPLE_COVERAGE_INVERT: GLenum;
15249    readonly SAMPLE_COVERAGE_VALUE: GLenum;
15250    readonly SCISSOR_BOX: GLenum;
15251    readonly SCISSOR_TEST: GLenum;
15252    readonly SHADER_TYPE: GLenum;
15253    readonly SHADING_LANGUAGE_VERSION: GLenum;
15254    readonly SHORT: GLenum;
15255    readonly SRC_ALPHA: GLenum;
15256    readonly SRC_ALPHA_SATURATE: GLenum;
15257    readonly SRC_COLOR: GLenum;
15258    readonly STATIC_DRAW: GLenum;
15259    readonly STENCIL_ATTACHMENT: GLenum;
15260    readonly STENCIL_BACK_FAIL: GLenum;
15261    readonly STENCIL_BACK_FUNC: GLenum;
15262    readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum;
15263    readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum;
15264    readonly STENCIL_BACK_REF: GLenum;
15265    readonly STENCIL_BACK_VALUE_MASK: GLenum;
15266    readonly STENCIL_BACK_WRITEMASK: GLenum;
15267    readonly STENCIL_BITS: GLenum;
15268    readonly STENCIL_BUFFER_BIT: GLenum;
15269    readonly STENCIL_CLEAR_VALUE: GLenum;
15270    readonly STENCIL_FAIL: GLenum;
15271    readonly STENCIL_FUNC: GLenum;
15272    readonly STENCIL_INDEX8: GLenum;
15273    readonly STENCIL_PASS_DEPTH_FAIL: GLenum;
15274    readonly STENCIL_PASS_DEPTH_PASS: GLenum;
15275    readonly STENCIL_REF: GLenum;
15276    readonly STENCIL_TEST: GLenum;
15277    readonly STENCIL_VALUE_MASK: GLenum;
15278    readonly STENCIL_WRITEMASK: GLenum;
15279    readonly STREAM_DRAW: GLenum;
15280    readonly SUBPIXEL_BITS: GLenum;
15281    readonly TEXTURE: GLenum;
15282    readonly TEXTURE0: GLenum;
15283    readonly TEXTURE1: GLenum;
15284    readonly TEXTURE10: GLenum;
15285    readonly TEXTURE11: GLenum;
15286    readonly TEXTURE12: GLenum;
15287    readonly TEXTURE13: GLenum;
15288    readonly TEXTURE14: GLenum;
15289    readonly TEXTURE15: GLenum;
15290    readonly TEXTURE16: GLenum;
15291    readonly TEXTURE17: GLenum;
15292    readonly TEXTURE18: GLenum;
15293    readonly TEXTURE19: GLenum;
15294    readonly TEXTURE2: GLenum;
15295    readonly TEXTURE20: GLenum;
15296    readonly TEXTURE21: GLenum;
15297    readonly TEXTURE22: GLenum;
15298    readonly TEXTURE23: GLenum;
15299    readonly TEXTURE24: GLenum;
15300    readonly TEXTURE25: GLenum;
15301    readonly TEXTURE26: GLenum;
15302    readonly TEXTURE27: GLenum;
15303    readonly TEXTURE28: GLenum;
15304    readonly TEXTURE29: GLenum;
15305    readonly TEXTURE3: GLenum;
15306    readonly TEXTURE30: GLenum;
15307    readonly TEXTURE31: GLenum;
15308    readonly TEXTURE4: GLenum;
15309    readonly TEXTURE5: GLenum;
15310    readonly TEXTURE6: GLenum;
15311    readonly TEXTURE7: GLenum;
15312    readonly TEXTURE8: GLenum;
15313    readonly TEXTURE9: GLenum;
15314    readonly TEXTURE_2D: GLenum;
15315    readonly TEXTURE_BINDING_2D: GLenum;
15316    readonly TEXTURE_BINDING_CUBE_MAP: GLenum;
15317    readonly TEXTURE_CUBE_MAP: GLenum;
15318    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum;
15319    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum;
15320    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum;
15321    readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum;
15322    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum;
15323    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum;
15324    readonly TEXTURE_MAG_FILTER: GLenum;
15325    readonly TEXTURE_MIN_FILTER: GLenum;
15326    readonly TEXTURE_WRAP_S: GLenum;
15327    readonly TEXTURE_WRAP_T: GLenum;
15328    readonly TRIANGLES: GLenum;
15329    readonly TRIANGLE_FAN: GLenum;
15330    readonly TRIANGLE_STRIP: GLenum;
15331    readonly UNPACK_ALIGNMENT: GLenum;
15332    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum;
15333    readonly UNPACK_FLIP_Y_WEBGL: GLenum;
15334    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum;
15335    readonly UNSIGNED_BYTE: GLenum;
15336    readonly UNSIGNED_INT: GLenum;
15337    readonly UNSIGNED_SHORT: GLenum;
15338    readonly UNSIGNED_SHORT_4_4_4_4: GLenum;
15339    readonly UNSIGNED_SHORT_5_5_5_1: GLenum;
15340    readonly UNSIGNED_SHORT_5_6_5: GLenum;
15341    readonly VALIDATE_STATUS: GLenum;
15342    readonly VENDOR: GLenum;
15343    readonly VERSION: GLenum;
15344    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum;
15345    readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum;
15346    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum;
15347    readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum;
15348    readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum;
15349    readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum;
15350    readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum;
15351    readonly VERTEX_SHADER: GLenum;
15352    readonly VIEWPORT: GLenum;
15353    readonly ZERO: GLenum;
15354};
15355
15356interface WebGL2RenderingContextBase {
15357    beginQuery(target: GLenum, query: WebGLQuery): void;
15358    beginTransformFeedback(primitiveMode: GLenum): void;
15359    bindBufferBase(target: GLenum, index: GLuint, buffer: WebGLBuffer | null): void;
15360    bindBufferRange(target: GLenum, index: GLuint, buffer: WebGLBuffer | null, offset: GLintptr, size: GLsizeiptr): void;
15361    bindSampler(unit: GLuint, sampler: WebGLSampler | null): void;
15362    bindTransformFeedback(target: GLenum, tf: WebGLTransformFeedback | null): void;
15363    bindVertexArray(array: WebGLVertexArrayObject | null): void;
15364    blitFramebuffer(srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum): void;
15365    clearBufferfi(buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint): void;
15366    clearBufferfv(buffer: GLenum, drawbuffer: GLint, values: Float32List, srcOffset?: GLuint): void;
15367    clearBufferiv(buffer: GLenum, drawbuffer: GLint, values: Int32List, srcOffset?: GLuint): void;
15368    clearBufferuiv(buffer: GLenum, drawbuffer: GLint, values: Uint32List, srcOffset?: GLuint): void;
15369    clientWaitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLuint64): GLenum;
15370    compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr): void;
15371    compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;
15372    compressedTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr): void;
15373    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;
15374    copyBufferSubData(readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr): void;
15375    copyTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
15376    createQuery(): WebGLQuery | null;
15377    createSampler(): WebGLSampler | null;
15378    createTransformFeedback(): WebGLTransformFeedback | null;
15379    createVertexArray(): WebGLVertexArrayObject | null;
15380    deleteQuery(query: WebGLQuery | null): void;
15381    deleteSampler(sampler: WebGLSampler | null): void;
15382    deleteSync(sync: WebGLSync | null): void;
15383    deleteTransformFeedback(tf: WebGLTransformFeedback | null): void;
15384    deleteVertexArray(vertexArray: WebGLVertexArrayObject | null): void;
15385    drawArraysInstanced(mode: GLenum, first: GLint, count: GLsizei, instanceCount: GLsizei): void;
15386    drawBuffers(buffers: GLenum[]): void;
15387    drawElementsInstanced(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, instanceCount: GLsizei): void;
15388    drawRangeElements(mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type: GLenum, offset: GLintptr): void;
15389    endQuery(target: GLenum): void;
15390    endTransformFeedback(): void;
15391    fenceSync(condition: GLenum, flags: GLbitfield): WebGLSync | null;
15392    framebufferTextureLayer(target: GLenum, attachment: GLenum, texture: WebGLTexture | null, level: GLint, layer: GLint): void;
15393    getActiveUniformBlockName(program: WebGLProgram, uniformBlockIndex: GLuint): string | null;
15394    getActiveUniformBlockParameter(program: WebGLProgram, uniformBlockIndex: GLuint, pname: GLenum): any;
15395    getActiveUniforms(program: WebGLProgram, uniformIndices: GLuint[], pname: GLenum): any;
15396    getBufferSubData(target: GLenum, srcByteOffset: GLintptr, dstBuffer: ArrayBufferView, dstOffset?: GLuint, length?: GLuint): void;
15397    getFragDataLocation(program: WebGLProgram, name: string): GLint;
15398    getIndexedParameter(target: GLenum, index: GLuint): any;
15399    getInternalformatParameter(target: GLenum, internalformat: GLenum, pname: GLenum): any;
15400    getQuery(target: GLenum, pname: GLenum): WebGLQuery | null;
15401    getQueryParameter(query: WebGLQuery, pname: GLenum): any;
15402    getSamplerParameter(sampler: WebGLSampler, pname: GLenum): any;
15403    getSyncParameter(sync: WebGLSync, pname: GLenum): any;
15404    getTransformFeedbackVarying(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;
15405    getUniformBlockIndex(program: WebGLProgram, uniformBlockName: string): GLuint;
15406    getUniformIndices(program: WebGLProgram, uniformNames: string[]): GLuint[] | null;
15407    invalidateFramebuffer(target: GLenum, attachments: GLenum[]): void;
15408    invalidateSubFramebuffer(target: GLenum, attachments: GLenum[], x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
15409    isQuery(query: WebGLQuery | null): GLboolean;
15410    isSampler(sampler: WebGLSampler | null): GLboolean;
15411    isSync(sync: WebGLSync | null): GLboolean;
15412    isTransformFeedback(tf: WebGLTransformFeedback | null): GLboolean;
15413    isVertexArray(vertexArray: WebGLVertexArrayObject | null): GLboolean;
15414    pauseTransformFeedback(): void;
15415    readBuffer(src: GLenum): void;
15416    renderbufferStorageMultisample(target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei): void;
15417    resumeTransformFeedback(): void;
15418    samplerParameterf(sampler: WebGLSampler, pname: GLenum, param: GLfloat): void;
15419    samplerParameteri(sampler: WebGLSampler, pname: GLenum, param: GLint): void;
15420    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
15421    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
15422    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView | null): void;
15423    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;
15424    texStorage2D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei): void;
15425    texStorage3D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei): void;
15426    texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
15427    texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, source: TexImageSource): void;
15428    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;
15429    transformFeedbackVaryings(program: WebGLProgram, varyings: string[], bufferMode: GLenum): void;
15430    uniform1ui(location: WebGLUniformLocation | null, v0: GLuint): void;
15431    uniform1uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15432    uniform2ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint): void;
15433    uniform2uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15434    uniform3ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint, v2: GLuint): void;
15435    uniform3uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15436    uniform4ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint): void;
15437    uniform4uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15438    uniformBlockBinding(program: WebGLProgram, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint): void;
15439    uniformMatrix2x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15440    uniformMatrix2x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15441    uniformMatrix3x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15442    uniformMatrix3x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15443    uniformMatrix4x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15444    uniformMatrix4x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15445    vertexAttribDivisor(index: GLuint, divisor: GLuint): void;
15446    vertexAttribI4i(index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint): void;
15447    vertexAttribI4iv(index: GLuint, values: Int32List): void;
15448    vertexAttribI4ui(index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint): void;
15449    vertexAttribI4uiv(index: GLuint, values: Uint32List): void;
15450    vertexAttribIPointer(index: GLuint, size: GLint, type: GLenum, stride: GLsizei, offset: GLintptr): void;
15451    waitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLint64): void;
15452    readonly ACTIVE_UNIFORM_BLOCKS: GLenum;
15453    readonly ALREADY_SIGNALED: GLenum;
15454    readonly ANY_SAMPLES_PASSED: GLenum;
15455    readonly ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum;
15456    readonly COLOR: GLenum;
15457    readonly COLOR_ATTACHMENT1: GLenum;
15458    readonly COLOR_ATTACHMENT10: GLenum;
15459    readonly COLOR_ATTACHMENT11: GLenum;
15460    readonly COLOR_ATTACHMENT12: GLenum;
15461    readonly COLOR_ATTACHMENT13: GLenum;
15462    readonly COLOR_ATTACHMENT14: GLenum;
15463    readonly COLOR_ATTACHMENT15: GLenum;
15464    readonly COLOR_ATTACHMENT2: GLenum;
15465    readonly COLOR_ATTACHMENT3: GLenum;
15466    readonly COLOR_ATTACHMENT4: GLenum;
15467    readonly COLOR_ATTACHMENT5: GLenum;
15468    readonly COLOR_ATTACHMENT6: GLenum;
15469    readonly COLOR_ATTACHMENT7: GLenum;
15470    readonly COLOR_ATTACHMENT8: GLenum;
15471    readonly COLOR_ATTACHMENT9: GLenum;
15472    readonly COMPARE_REF_TO_TEXTURE: GLenum;
15473    readonly CONDITION_SATISFIED: GLenum;
15474    readonly COPY_READ_BUFFER: GLenum;
15475    readonly COPY_READ_BUFFER_BINDING: GLenum;
15476    readonly COPY_WRITE_BUFFER: GLenum;
15477    readonly COPY_WRITE_BUFFER_BINDING: GLenum;
15478    readonly CURRENT_QUERY: GLenum;
15479    readonly DEPTH: GLenum;
15480    readonly DEPTH24_STENCIL8: GLenum;
15481    readonly DEPTH32F_STENCIL8: GLenum;
15482    readonly DEPTH_COMPONENT24: GLenum;
15483    readonly DEPTH_COMPONENT32F: GLenum;
15484    readonly DRAW_BUFFER0: GLenum;
15485    readonly DRAW_BUFFER1: GLenum;
15486    readonly DRAW_BUFFER10: GLenum;
15487    readonly DRAW_BUFFER11: GLenum;
15488    readonly DRAW_BUFFER12: GLenum;
15489    readonly DRAW_BUFFER13: GLenum;
15490    readonly DRAW_BUFFER14: GLenum;
15491    readonly DRAW_BUFFER15: GLenum;
15492    readonly DRAW_BUFFER2: GLenum;
15493    readonly DRAW_BUFFER3: GLenum;
15494    readonly DRAW_BUFFER4: GLenum;
15495    readonly DRAW_BUFFER5: GLenum;
15496    readonly DRAW_BUFFER6: GLenum;
15497    readonly DRAW_BUFFER7: GLenum;
15498    readonly DRAW_BUFFER8: GLenum;
15499    readonly DRAW_BUFFER9: GLenum;
15500    readonly DRAW_FRAMEBUFFER: GLenum;
15501    readonly DRAW_FRAMEBUFFER_BINDING: GLenum;
15502    readonly DYNAMIC_COPY: GLenum;
15503    readonly DYNAMIC_READ: GLenum;
15504    readonly FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum;
15505    readonly FLOAT_MAT2x3: GLenum;
15506    readonly FLOAT_MAT2x4: GLenum;
15507    readonly FLOAT_MAT3x2: GLenum;
15508    readonly FLOAT_MAT3x4: GLenum;
15509    readonly FLOAT_MAT4x2: GLenum;
15510    readonly FLOAT_MAT4x3: GLenum;
15511    readonly FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum;
15512    readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum;
15513    readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum;
15514    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum;
15515    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum;
15516    readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum;
15517    readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum;
15518    readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum;
15519    readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum;
15520    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum;
15521    readonly FRAMEBUFFER_DEFAULT: GLenum;
15522    readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum;
15523    readonly HALF_FLOAT: GLenum;
15524    readonly INTERLEAVED_ATTRIBS: GLenum;
15525    readonly INT_2_10_10_10_REV: GLenum;
15526    readonly INT_SAMPLER_2D: GLenum;
15527    readonly INT_SAMPLER_2D_ARRAY: GLenum;
15528    readonly INT_SAMPLER_3D: GLenum;
15529    readonly INT_SAMPLER_CUBE: GLenum;
15530    readonly INVALID_INDEX: GLenum;
15531    readonly MAX: GLenum;
15532    readonly MAX_3D_TEXTURE_SIZE: GLenum;
15533    readonly MAX_ARRAY_TEXTURE_LAYERS: GLenum;
15534    readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: GLenum;
15535    readonly MAX_COLOR_ATTACHMENTS: GLenum;
15536    readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum;
15537    readonly MAX_COMBINED_UNIFORM_BLOCKS: GLenum;
15538    readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum;
15539    readonly MAX_DRAW_BUFFERS: GLenum;
15540    readonly MAX_ELEMENTS_INDICES: GLenum;
15541    readonly MAX_ELEMENTS_VERTICES: GLenum;
15542    readonly MAX_ELEMENT_INDEX: GLenum;
15543    readonly MAX_FRAGMENT_INPUT_COMPONENTS: GLenum;
15544    readonly MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum;
15545    readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum;
15546    readonly MAX_PROGRAM_TEXEL_OFFSET: GLenum;
15547    readonly MAX_SAMPLES: GLenum;
15548    readonly MAX_SERVER_WAIT_TIMEOUT: GLenum;
15549    readonly MAX_TEXTURE_LOD_BIAS: GLenum;
15550    readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum;
15551    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum;
15552    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum;
15553    readonly MAX_UNIFORM_BLOCK_SIZE: GLenum;
15554    readonly MAX_UNIFORM_BUFFER_BINDINGS: GLenum;
15555    readonly MAX_VARYING_COMPONENTS: GLenum;
15556    readonly MAX_VERTEX_OUTPUT_COMPONENTS: GLenum;
15557    readonly MAX_VERTEX_UNIFORM_BLOCKS: GLenum;
15558    readonly MAX_VERTEX_UNIFORM_COMPONENTS: GLenum;
15559    readonly MIN: GLenum;
15560    readonly MIN_PROGRAM_TEXEL_OFFSET: GLenum;
15561    readonly OBJECT_TYPE: GLenum;
15562    readonly PACK_ROW_LENGTH: GLenum;
15563    readonly PACK_SKIP_PIXELS: GLenum;
15564    readonly PACK_SKIP_ROWS: GLenum;
15565    readonly PIXEL_PACK_BUFFER: GLenum;
15566    readonly PIXEL_PACK_BUFFER_BINDING: GLenum;
15567    readonly PIXEL_UNPACK_BUFFER: GLenum;
15568    readonly PIXEL_UNPACK_BUFFER_BINDING: GLenum;
15569    readonly QUERY_RESULT: GLenum;
15570    readonly QUERY_RESULT_AVAILABLE: GLenum;
15571    readonly R11F_G11F_B10F: GLenum;
15572    readonly R16F: GLenum;
15573    readonly R16I: GLenum;
15574    readonly R16UI: GLenum;
15575    readonly R32F: GLenum;
15576    readonly R32I: GLenum;
15577    readonly R32UI: GLenum;
15578    readonly R8: GLenum;
15579    readonly R8I: GLenum;
15580    readonly R8UI: GLenum;
15581    readonly R8_SNORM: GLenum;
15582    readonly RASTERIZER_DISCARD: GLenum;
15583    readonly READ_BUFFER: GLenum;
15584    readonly READ_FRAMEBUFFER: GLenum;
15585    readonly READ_FRAMEBUFFER_BINDING: GLenum;
15586    readonly RED: GLenum;
15587    readonly RED_INTEGER: GLenum;
15588    readonly RENDERBUFFER_SAMPLES: GLenum;
15589    readonly RG: GLenum;
15590    readonly RG16F: GLenum;
15591    readonly RG16I: GLenum;
15592    readonly RG16UI: GLenum;
15593    readonly RG32F: GLenum;
15594    readonly RG32I: GLenum;
15595    readonly RG32UI: GLenum;
15596    readonly RG8: GLenum;
15597    readonly RG8I: GLenum;
15598    readonly RG8UI: GLenum;
15599    readonly RG8_SNORM: GLenum;
15600    readonly RGB10_A2: GLenum;
15601    readonly RGB10_A2UI: GLenum;
15602    readonly RGB16F: GLenum;
15603    readonly RGB16I: GLenum;
15604    readonly RGB16UI: GLenum;
15605    readonly RGB32F: GLenum;
15606    readonly RGB32I: GLenum;
15607    readonly RGB32UI: GLenum;
15608    readonly RGB8: GLenum;
15609    readonly RGB8I: GLenum;
15610    readonly RGB8UI: GLenum;
15611    readonly RGB8_SNORM: GLenum;
15612    readonly RGB9_E5: GLenum;
15613    readonly RGBA16F: GLenum;
15614    readonly RGBA16I: GLenum;
15615    readonly RGBA16UI: GLenum;
15616    readonly RGBA32F: GLenum;
15617    readonly RGBA32I: GLenum;
15618    readonly RGBA32UI: GLenum;
15619    readonly RGBA8: GLenum;
15620    readonly RGBA8I: GLenum;
15621    readonly RGBA8UI: GLenum;
15622    readonly RGBA8_SNORM: GLenum;
15623    readonly RGBA_INTEGER: GLenum;
15624    readonly RGB_INTEGER: GLenum;
15625    readonly RG_INTEGER: GLenum;
15626    readonly SAMPLER_2D_ARRAY: GLenum;
15627    readonly SAMPLER_2D_ARRAY_SHADOW: GLenum;
15628    readonly SAMPLER_2D_SHADOW: GLenum;
15629    readonly SAMPLER_3D: GLenum;
15630    readonly SAMPLER_BINDING: GLenum;
15631    readonly SAMPLER_CUBE_SHADOW: GLenum;
15632    readonly SEPARATE_ATTRIBS: GLenum;
15633    readonly SIGNALED: GLenum;
15634    readonly SIGNED_NORMALIZED: GLenum;
15635    readonly SRGB: GLenum;
15636    readonly SRGB8: GLenum;
15637    readonly SRGB8_ALPHA8: GLenum;
15638    readonly STATIC_COPY: GLenum;
15639    readonly STATIC_READ: GLenum;
15640    readonly STENCIL: GLenum;
15641    readonly STREAM_COPY: GLenum;
15642    readonly STREAM_READ: GLenum;
15643    readonly SYNC_CONDITION: GLenum;
15644    readonly SYNC_FENCE: GLenum;
15645    readonly SYNC_FLAGS: GLenum;
15646    readonly SYNC_FLUSH_COMMANDS_BIT: GLenum;
15647    readonly SYNC_GPU_COMMANDS_COMPLETE: GLenum;
15648    readonly SYNC_STATUS: GLenum;
15649    readonly TEXTURE_2D_ARRAY: GLenum;
15650    readonly TEXTURE_3D: GLenum;
15651    readonly TEXTURE_BASE_LEVEL: GLenum;
15652    readonly TEXTURE_BINDING_2D_ARRAY: GLenum;
15653    readonly TEXTURE_BINDING_3D: GLenum;
15654    readonly TEXTURE_COMPARE_FUNC: GLenum;
15655    readonly TEXTURE_COMPARE_MODE: GLenum;
15656    readonly TEXTURE_IMMUTABLE_FORMAT: GLenum;
15657    readonly TEXTURE_IMMUTABLE_LEVELS: GLenum;
15658    readonly TEXTURE_MAX_LEVEL: GLenum;
15659    readonly TEXTURE_MAX_LOD: GLenum;
15660    readonly TEXTURE_MIN_LOD: GLenum;
15661    readonly TEXTURE_WRAP_R: GLenum;
15662    readonly TIMEOUT_EXPIRED: GLenum;
15663    readonly TIMEOUT_IGNORED: GLint64;
15664    readonly TRANSFORM_FEEDBACK: GLenum;
15665    readonly TRANSFORM_FEEDBACK_ACTIVE: GLenum;
15666    readonly TRANSFORM_FEEDBACK_BINDING: GLenum;
15667    readonly TRANSFORM_FEEDBACK_BUFFER: GLenum;
15668    readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum;
15669    readonly TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum;
15670    readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum;
15671    readonly TRANSFORM_FEEDBACK_BUFFER_START: GLenum;
15672    readonly TRANSFORM_FEEDBACK_PAUSED: GLenum;
15673    readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum;
15674    readonly TRANSFORM_FEEDBACK_VARYINGS: GLenum;
15675    readonly UNIFORM_ARRAY_STRIDE: GLenum;
15676    readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum;
15677    readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum;
15678    readonly UNIFORM_BLOCK_BINDING: GLenum;
15679    readonly UNIFORM_BLOCK_DATA_SIZE: GLenum;
15680    readonly UNIFORM_BLOCK_INDEX: GLenum;
15681    readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum;
15682    readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum;
15683    readonly UNIFORM_BUFFER: GLenum;
15684    readonly UNIFORM_BUFFER_BINDING: GLenum;
15685    readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum;
15686    readonly UNIFORM_BUFFER_SIZE: GLenum;
15687    readonly UNIFORM_BUFFER_START: GLenum;
15688    readonly UNIFORM_IS_ROW_MAJOR: GLenum;
15689    readonly UNIFORM_MATRIX_STRIDE: GLenum;
15690    readonly UNIFORM_OFFSET: GLenum;
15691    readonly UNIFORM_SIZE: GLenum;
15692    readonly UNIFORM_TYPE: GLenum;
15693    readonly UNPACK_IMAGE_HEIGHT: GLenum;
15694    readonly UNPACK_ROW_LENGTH: GLenum;
15695    readonly UNPACK_SKIP_IMAGES: GLenum;
15696    readonly UNPACK_SKIP_PIXELS: GLenum;
15697    readonly UNPACK_SKIP_ROWS: GLenum;
15698    readonly UNSIGNALED: GLenum;
15699    readonly UNSIGNED_INT_10F_11F_11F_REV: GLenum;
15700    readonly UNSIGNED_INT_24_8: GLenum;
15701    readonly UNSIGNED_INT_2_10_10_10_REV: GLenum;
15702    readonly UNSIGNED_INT_5_9_9_9_REV: GLenum;
15703    readonly UNSIGNED_INT_SAMPLER_2D: GLenum;
15704    readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum;
15705    readonly UNSIGNED_INT_SAMPLER_3D: GLenum;
15706    readonly UNSIGNED_INT_SAMPLER_CUBE: GLenum;
15707    readonly UNSIGNED_INT_VEC2: GLenum;
15708    readonly UNSIGNED_INT_VEC3: GLenum;
15709    readonly UNSIGNED_INT_VEC4: GLenum;
15710    readonly UNSIGNED_NORMALIZED: GLenum;
15711    readonly VERTEX_ARRAY_BINDING: GLenum;
15712    readonly VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum;
15713    readonly VERTEX_ATTRIB_ARRAY_INTEGER: GLenum;
15714    readonly WAIT_FAILED: GLenum;
15715}
15716
15717interface WebGL2RenderingContextOverloads {
15718    bufferData(target: GLenum, size: GLsizeiptr, usage: GLenum): void;
15719    bufferData(target: GLenum, srcData: BufferSource | null, usage: GLenum): void;
15720    bufferData(target: GLenum, srcData: ArrayBufferView, usage: GLenum, srcOffset: GLuint, length?: GLuint): void;
15721    bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: BufferSource): void;
15722    bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: ArrayBufferView, srcOffset: GLuint, length?: GLuint): void;
15723    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr): void;
15724    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;
15725    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr): void;
15726    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;
15727    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView | null): void;
15728    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, offset: GLintptr): void;
15729    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView, dstOffset: GLuint): void;
15730    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
15731    texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
15732    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
15733    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
15734    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;
15735    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
15736    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
15737    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
15738    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, source: TexImageSource): void;
15739    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;
15740    uniform1fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15741    uniform1iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15742    uniform2fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15743    uniform2iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15744    uniform3fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15745    uniform3iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15746    uniform4fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15747    uniform4iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15748    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15749    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15750    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;
15751}
15752
15753/** Part of the WebGL API and represents the information returned by calling the WebGLRenderingContext.getActiveAttrib() and WebGLRenderingContext.getActiveUniform() methods. */
15754interface WebGLActiveInfo {
15755    readonly name: string;
15756    readonly size: GLint;
15757    readonly type: GLenum;
15758}
15759
15760declare var WebGLActiveInfo: {
15761    prototype: WebGLActiveInfo;
15762    new(): WebGLActiveInfo;
15763};
15764
15765/** Part of the WebGL API and represents an opaque buffer object storing data such as vertices or colors. */
15766interface WebGLBuffer {
15767}
15768
15769declare var WebGLBuffer: {
15770    prototype: WebGLBuffer;
15771    new(): WebGLBuffer;
15772};
15773
15774/** 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. */
15775interface WebGLContextEvent extends Event {
15776    readonly statusMessage: string;
15777}
15778
15779declare var WebGLContextEvent: {
15780    prototype: WebGLContextEvent;
15781    new(type: string, eventInit?: WebGLContextEventInit): WebGLContextEvent;
15782};
15783
15784/** Part of the WebGL API and represents a collection of buffers that serve as a rendering destination. */
15785interface WebGLFramebuffer {
15786}
15787
15788declare var WebGLFramebuffer: {
15789    prototype: WebGLFramebuffer;
15790    new(): WebGLFramebuffer;
15791};
15792
15793/** 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). */
15794interface WebGLProgram {
15795}
15796
15797declare var WebGLProgram: {
15798    prototype: WebGLProgram;
15799    new(): WebGLProgram;
15800};
15801
15802interface WebGLQuery {
15803}
15804
15805declare var WebGLQuery: {
15806    prototype: WebGLQuery;
15807    new(): WebGLQuery;
15808};
15809
15810/** Part of the WebGL API and represents a buffer that can contain an image, or can be source or target of an rendering operation. */
15811interface WebGLRenderbuffer {
15812}
15813
15814declare var WebGLRenderbuffer: {
15815    prototype: WebGLRenderbuffer;
15816    new(): WebGLRenderbuffer;
15817};
15818
15819/** Provides an interface to the OpenGL ES 2.0 graphics rendering context for the drawing surface of an HTML <canvas> element. */
15820interface WebGLRenderingContext extends WebGLRenderingContextBase, WebGLRenderingContextOverloads {
15821}
15822
15823declare var WebGLRenderingContext: {
15824    prototype: WebGLRenderingContext;
15825    new(): WebGLRenderingContext;
15826    readonly ACTIVE_ATTRIBUTES: GLenum;
15827    readonly ACTIVE_TEXTURE: GLenum;
15828    readonly ACTIVE_UNIFORMS: GLenum;
15829    readonly ALIASED_LINE_WIDTH_RANGE: GLenum;
15830    readonly ALIASED_POINT_SIZE_RANGE: GLenum;
15831    readonly ALPHA: GLenum;
15832    readonly ALPHA_BITS: GLenum;
15833    readonly ALWAYS: GLenum;
15834    readonly ARRAY_BUFFER: GLenum;
15835    readonly ARRAY_BUFFER_BINDING: GLenum;
15836    readonly ATTACHED_SHADERS: GLenum;
15837    readonly BACK: GLenum;
15838    readonly BLEND: GLenum;
15839    readonly BLEND_COLOR: GLenum;
15840    readonly BLEND_DST_ALPHA: GLenum;
15841    readonly BLEND_DST_RGB: GLenum;
15842    readonly BLEND_EQUATION: GLenum;
15843    readonly BLEND_EQUATION_ALPHA: GLenum;
15844    readonly BLEND_EQUATION_RGB: GLenum;
15845    readonly BLEND_SRC_ALPHA: GLenum;
15846    readonly BLEND_SRC_RGB: GLenum;
15847    readonly BLUE_BITS: GLenum;
15848    readonly BOOL: GLenum;
15849    readonly BOOL_VEC2: GLenum;
15850    readonly BOOL_VEC3: GLenum;
15851    readonly BOOL_VEC4: GLenum;
15852    readonly BROWSER_DEFAULT_WEBGL: GLenum;
15853    readonly BUFFER_SIZE: GLenum;
15854    readonly BUFFER_USAGE: GLenum;
15855    readonly BYTE: GLenum;
15856    readonly CCW: GLenum;
15857    readonly CLAMP_TO_EDGE: GLenum;
15858    readonly COLOR_ATTACHMENT0: GLenum;
15859    readonly COLOR_BUFFER_BIT: GLenum;
15860    readonly COLOR_CLEAR_VALUE: GLenum;
15861    readonly COLOR_WRITEMASK: GLenum;
15862    readonly COMPILE_STATUS: GLenum;
15863    readonly COMPRESSED_TEXTURE_FORMATS: GLenum;
15864    readonly CONSTANT_ALPHA: GLenum;
15865    readonly CONSTANT_COLOR: GLenum;
15866    readonly CONTEXT_LOST_WEBGL: GLenum;
15867    readonly CULL_FACE: GLenum;
15868    readonly CULL_FACE_MODE: GLenum;
15869    readonly CURRENT_PROGRAM: GLenum;
15870    readonly CURRENT_VERTEX_ATTRIB: GLenum;
15871    readonly CW: GLenum;
15872    readonly DECR: GLenum;
15873    readonly DECR_WRAP: GLenum;
15874    readonly DELETE_STATUS: GLenum;
15875    readonly DEPTH_ATTACHMENT: GLenum;
15876    readonly DEPTH_BITS: GLenum;
15877    readonly DEPTH_BUFFER_BIT: GLenum;
15878    readonly DEPTH_CLEAR_VALUE: GLenum;
15879    readonly DEPTH_COMPONENT: GLenum;
15880    readonly DEPTH_COMPONENT16: GLenum;
15881    readonly DEPTH_FUNC: GLenum;
15882    readonly DEPTH_RANGE: GLenum;
15883    readonly DEPTH_STENCIL: GLenum;
15884    readonly DEPTH_STENCIL_ATTACHMENT: GLenum;
15885    readonly DEPTH_TEST: GLenum;
15886    readonly DEPTH_WRITEMASK: GLenum;
15887    readonly DITHER: GLenum;
15888    readonly DONT_CARE: GLenum;
15889    readonly DST_ALPHA: GLenum;
15890    readonly DST_COLOR: GLenum;
15891    readonly DYNAMIC_DRAW: GLenum;
15892    readonly ELEMENT_ARRAY_BUFFER: GLenum;
15893    readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum;
15894    readonly EQUAL: GLenum;
15895    readonly FASTEST: GLenum;
15896    readonly FLOAT: GLenum;
15897    readonly FLOAT_MAT2: GLenum;
15898    readonly FLOAT_MAT3: GLenum;
15899    readonly FLOAT_MAT4: GLenum;
15900    readonly FLOAT_VEC2: GLenum;
15901    readonly FLOAT_VEC3: GLenum;
15902    readonly FLOAT_VEC4: GLenum;
15903    readonly FRAGMENT_SHADER: GLenum;
15904    readonly FRAMEBUFFER: GLenum;
15905    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum;
15906    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum;
15907    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum;
15908    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum;
15909    readonly FRAMEBUFFER_BINDING: GLenum;
15910    readonly FRAMEBUFFER_COMPLETE: GLenum;
15911    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum;
15912    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum;
15913    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum;
15914    readonly FRAMEBUFFER_UNSUPPORTED: GLenum;
15915    readonly FRONT: GLenum;
15916    readonly FRONT_AND_BACK: GLenum;
15917    readonly FRONT_FACE: GLenum;
15918    readonly FUNC_ADD: GLenum;
15919    readonly FUNC_REVERSE_SUBTRACT: GLenum;
15920    readonly FUNC_SUBTRACT: GLenum;
15921    readonly GENERATE_MIPMAP_HINT: GLenum;
15922    readonly GEQUAL: GLenum;
15923    readonly GREATER: GLenum;
15924    readonly GREEN_BITS: GLenum;
15925    readonly HIGH_FLOAT: GLenum;
15926    readonly HIGH_INT: GLenum;
15927    readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum;
15928    readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum;
15929    readonly INCR: GLenum;
15930    readonly INCR_WRAP: GLenum;
15931    readonly INT: GLenum;
15932    readonly INT_VEC2: GLenum;
15933    readonly INT_VEC3: GLenum;
15934    readonly INT_VEC4: GLenum;
15935    readonly INVALID_ENUM: GLenum;
15936    readonly INVALID_FRAMEBUFFER_OPERATION: GLenum;
15937    readonly INVALID_OPERATION: GLenum;
15938    readonly INVALID_VALUE: GLenum;
15939    readonly INVERT: GLenum;
15940    readonly KEEP: GLenum;
15941    readonly LEQUAL: GLenum;
15942    readonly LESS: GLenum;
15943    readonly LINEAR: GLenum;
15944    readonly LINEAR_MIPMAP_LINEAR: GLenum;
15945    readonly LINEAR_MIPMAP_NEAREST: GLenum;
15946    readonly LINES: GLenum;
15947    readonly LINE_LOOP: GLenum;
15948    readonly LINE_STRIP: GLenum;
15949    readonly LINE_WIDTH: GLenum;
15950    readonly LINK_STATUS: GLenum;
15951    readonly LOW_FLOAT: GLenum;
15952    readonly LOW_INT: GLenum;
15953    readonly LUMINANCE: GLenum;
15954    readonly LUMINANCE_ALPHA: GLenum;
15955    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum;
15956    readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum;
15957    readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum;
15958    readonly MAX_RENDERBUFFER_SIZE: GLenum;
15959    readonly MAX_TEXTURE_IMAGE_UNITS: GLenum;
15960    readonly MAX_TEXTURE_SIZE: GLenum;
15961    readonly MAX_VARYING_VECTORS: GLenum;
15962    readonly MAX_VERTEX_ATTRIBS: GLenum;
15963    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum;
15964    readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum;
15965    readonly MAX_VIEWPORT_DIMS: GLenum;
15966    readonly MEDIUM_FLOAT: GLenum;
15967    readonly MEDIUM_INT: GLenum;
15968    readonly MIRRORED_REPEAT: GLenum;
15969    readonly NEAREST: GLenum;
15970    readonly NEAREST_MIPMAP_LINEAR: GLenum;
15971    readonly NEAREST_MIPMAP_NEAREST: GLenum;
15972    readonly NEVER: GLenum;
15973    readonly NICEST: GLenum;
15974    readonly NONE: GLenum;
15975    readonly NOTEQUAL: GLenum;
15976    readonly NO_ERROR: GLenum;
15977    readonly ONE: GLenum;
15978    readonly ONE_MINUS_CONSTANT_ALPHA: GLenum;
15979    readonly ONE_MINUS_CONSTANT_COLOR: GLenum;
15980    readonly ONE_MINUS_DST_ALPHA: GLenum;
15981    readonly ONE_MINUS_DST_COLOR: GLenum;
15982    readonly ONE_MINUS_SRC_ALPHA: GLenum;
15983    readonly ONE_MINUS_SRC_COLOR: GLenum;
15984    readonly OUT_OF_MEMORY: GLenum;
15985    readonly PACK_ALIGNMENT: GLenum;
15986    readonly POINTS: GLenum;
15987    readonly POLYGON_OFFSET_FACTOR: GLenum;
15988    readonly POLYGON_OFFSET_FILL: GLenum;
15989    readonly POLYGON_OFFSET_UNITS: GLenum;
15990    readonly RED_BITS: GLenum;
15991    readonly RENDERBUFFER: GLenum;
15992    readonly RENDERBUFFER_ALPHA_SIZE: GLenum;
15993    readonly RENDERBUFFER_BINDING: GLenum;
15994    readonly RENDERBUFFER_BLUE_SIZE: GLenum;
15995    readonly RENDERBUFFER_DEPTH_SIZE: GLenum;
15996    readonly RENDERBUFFER_GREEN_SIZE: GLenum;
15997    readonly RENDERBUFFER_HEIGHT: GLenum;
15998    readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum;
15999    readonly RENDERBUFFER_RED_SIZE: GLenum;
16000    readonly RENDERBUFFER_STENCIL_SIZE: GLenum;
16001    readonly RENDERBUFFER_WIDTH: GLenum;
16002    readonly RENDERER: GLenum;
16003    readonly REPEAT: GLenum;
16004    readonly REPLACE: GLenum;
16005    readonly RGB: GLenum;
16006    readonly RGB565: GLenum;
16007    readonly RGB5_A1: GLenum;
16008    readonly RGBA: GLenum;
16009    readonly RGBA4: GLenum;
16010    readonly SAMPLER_2D: GLenum;
16011    readonly SAMPLER_CUBE: GLenum;
16012    readonly SAMPLES: GLenum;
16013    readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum;
16014    readonly SAMPLE_BUFFERS: GLenum;
16015    readonly SAMPLE_COVERAGE: GLenum;
16016    readonly SAMPLE_COVERAGE_INVERT: GLenum;
16017    readonly SAMPLE_COVERAGE_VALUE: GLenum;
16018    readonly SCISSOR_BOX: GLenum;
16019    readonly SCISSOR_TEST: GLenum;
16020    readonly SHADER_TYPE: GLenum;
16021    readonly SHADING_LANGUAGE_VERSION: GLenum;
16022    readonly SHORT: GLenum;
16023    readonly SRC_ALPHA: GLenum;
16024    readonly SRC_ALPHA_SATURATE: GLenum;
16025    readonly SRC_COLOR: GLenum;
16026    readonly STATIC_DRAW: GLenum;
16027    readonly STENCIL_ATTACHMENT: GLenum;
16028    readonly STENCIL_BACK_FAIL: GLenum;
16029    readonly STENCIL_BACK_FUNC: GLenum;
16030    readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum;
16031    readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum;
16032    readonly STENCIL_BACK_REF: GLenum;
16033    readonly STENCIL_BACK_VALUE_MASK: GLenum;
16034    readonly STENCIL_BACK_WRITEMASK: GLenum;
16035    readonly STENCIL_BITS: GLenum;
16036    readonly STENCIL_BUFFER_BIT: GLenum;
16037    readonly STENCIL_CLEAR_VALUE: GLenum;
16038    readonly STENCIL_FAIL: GLenum;
16039    readonly STENCIL_FUNC: GLenum;
16040    readonly STENCIL_INDEX8: GLenum;
16041    readonly STENCIL_PASS_DEPTH_FAIL: GLenum;
16042    readonly STENCIL_PASS_DEPTH_PASS: GLenum;
16043    readonly STENCIL_REF: GLenum;
16044    readonly STENCIL_TEST: GLenum;
16045    readonly STENCIL_VALUE_MASK: GLenum;
16046    readonly STENCIL_WRITEMASK: GLenum;
16047    readonly STREAM_DRAW: GLenum;
16048    readonly SUBPIXEL_BITS: GLenum;
16049    readonly TEXTURE: GLenum;
16050    readonly TEXTURE0: GLenum;
16051    readonly TEXTURE1: GLenum;
16052    readonly TEXTURE10: GLenum;
16053    readonly TEXTURE11: GLenum;
16054    readonly TEXTURE12: GLenum;
16055    readonly TEXTURE13: GLenum;
16056    readonly TEXTURE14: GLenum;
16057    readonly TEXTURE15: GLenum;
16058    readonly TEXTURE16: GLenum;
16059    readonly TEXTURE17: GLenum;
16060    readonly TEXTURE18: GLenum;
16061    readonly TEXTURE19: GLenum;
16062    readonly TEXTURE2: GLenum;
16063    readonly TEXTURE20: GLenum;
16064    readonly TEXTURE21: GLenum;
16065    readonly TEXTURE22: GLenum;
16066    readonly TEXTURE23: GLenum;
16067    readonly TEXTURE24: GLenum;
16068    readonly TEXTURE25: GLenum;
16069    readonly TEXTURE26: GLenum;
16070    readonly TEXTURE27: GLenum;
16071    readonly TEXTURE28: GLenum;
16072    readonly TEXTURE29: GLenum;
16073    readonly TEXTURE3: GLenum;
16074    readonly TEXTURE30: GLenum;
16075    readonly TEXTURE31: GLenum;
16076    readonly TEXTURE4: GLenum;
16077    readonly TEXTURE5: GLenum;
16078    readonly TEXTURE6: GLenum;
16079    readonly TEXTURE7: GLenum;
16080    readonly TEXTURE8: GLenum;
16081    readonly TEXTURE9: GLenum;
16082    readonly TEXTURE_2D: GLenum;
16083    readonly TEXTURE_BINDING_2D: GLenum;
16084    readonly TEXTURE_BINDING_CUBE_MAP: GLenum;
16085    readonly TEXTURE_CUBE_MAP: GLenum;
16086    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum;
16087    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum;
16088    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum;
16089    readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum;
16090    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum;
16091    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum;
16092    readonly TEXTURE_MAG_FILTER: GLenum;
16093    readonly TEXTURE_MIN_FILTER: GLenum;
16094    readonly TEXTURE_WRAP_S: GLenum;
16095    readonly TEXTURE_WRAP_T: GLenum;
16096    readonly TRIANGLES: GLenum;
16097    readonly TRIANGLE_FAN: GLenum;
16098    readonly TRIANGLE_STRIP: GLenum;
16099    readonly UNPACK_ALIGNMENT: GLenum;
16100    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum;
16101    readonly UNPACK_FLIP_Y_WEBGL: GLenum;
16102    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum;
16103    readonly UNSIGNED_BYTE: GLenum;
16104    readonly UNSIGNED_INT: GLenum;
16105    readonly UNSIGNED_SHORT: GLenum;
16106    readonly UNSIGNED_SHORT_4_4_4_4: GLenum;
16107    readonly UNSIGNED_SHORT_5_5_5_1: GLenum;
16108    readonly UNSIGNED_SHORT_5_6_5: GLenum;
16109    readonly VALIDATE_STATUS: GLenum;
16110    readonly VENDOR: GLenum;
16111    readonly VERSION: GLenum;
16112    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum;
16113    readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum;
16114    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum;
16115    readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum;
16116    readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum;
16117    readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum;
16118    readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum;
16119    readonly VERTEX_SHADER: GLenum;
16120    readonly VIEWPORT: GLenum;
16121    readonly ZERO: GLenum;
16122};
16123
16124interface WebGLRenderingContextBase {
16125    readonly canvas: HTMLCanvasElement | OffscreenCanvas;
16126    readonly drawingBufferHeight: GLsizei;
16127    readonly drawingBufferWidth: GLsizei;
16128    activeTexture(texture: GLenum): void;
16129    attachShader(program: WebGLProgram, shader: WebGLShader): void;
16130    bindAttribLocation(program: WebGLProgram, index: GLuint, name: string): void;
16131    bindBuffer(target: GLenum, buffer: WebGLBuffer | null): void;
16132    bindFramebuffer(target: GLenum, framebuffer: WebGLFramebuffer | null): void;
16133    bindRenderbuffer(target: GLenum, renderbuffer: WebGLRenderbuffer | null): void;
16134    bindTexture(target: GLenum, texture: WebGLTexture | null): void;
16135    blendColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;
16136    blendEquation(mode: GLenum): void;
16137    blendEquationSeparate(modeRGB: GLenum, modeAlpha: GLenum): void;
16138    blendFunc(sfactor: GLenum, dfactor: GLenum): void;
16139    blendFuncSeparate(srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum): void;
16140    checkFramebufferStatus(target: GLenum): GLenum;
16141    clear(mask: GLbitfield): void;
16142    clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;
16143    clearDepth(depth: GLclampf): void;
16144    clearStencil(s: GLint): void;
16145    colorMask(red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean): void;
16146    compileShader(shader: WebGLShader): void;
16147    copyTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint): void;
16148    copyTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
16149    createBuffer(): WebGLBuffer | null;
16150    createFramebuffer(): WebGLFramebuffer | null;
16151    createProgram(): WebGLProgram | null;
16152    createRenderbuffer(): WebGLRenderbuffer | null;
16153    createShader(type: GLenum): WebGLShader | null;
16154    createTexture(): WebGLTexture | null;
16155    cullFace(mode: GLenum): void;
16156    deleteBuffer(buffer: WebGLBuffer | null): void;
16157    deleteFramebuffer(framebuffer: WebGLFramebuffer | null): void;
16158    deleteProgram(program: WebGLProgram | null): void;
16159    deleteRenderbuffer(renderbuffer: WebGLRenderbuffer | null): void;
16160    deleteShader(shader: WebGLShader | null): void;
16161    deleteTexture(texture: WebGLTexture | null): void;
16162    depthFunc(func: GLenum): void;
16163    depthMask(flag: GLboolean): void;
16164    depthRange(zNear: GLclampf, zFar: GLclampf): void;
16165    detachShader(program: WebGLProgram, shader: WebGLShader): void;
16166    disable(cap: GLenum): void;
16167    disableVertexAttribArray(index: GLuint): void;
16168    drawArrays(mode: GLenum, first: GLint, count: GLsizei): void;
16169    drawElements(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr): void;
16170    enable(cap: GLenum): void;
16171    enableVertexAttribArray(index: GLuint): void;
16172    finish(): void;
16173    flush(): void;
16174    framebufferRenderbuffer(target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: WebGLRenderbuffer | null): void;
16175    framebufferTexture2D(target: GLenum, attachment: GLenum, textarget: GLenum, texture: WebGLTexture | null, level: GLint): void;
16176    frontFace(mode: GLenum): void;
16177    generateMipmap(target: GLenum): void;
16178    getActiveAttrib(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;
16179    getActiveUniform(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;
16180    getAttachedShaders(program: WebGLProgram): WebGLShader[] | null;
16181    getAttribLocation(program: WebGLProgram, name: string): GLint;
16182    getBufferParameter(target: GLenum, pname: GLenum): any;
16183    getContextAttributes(): WebGLContextAttributes | null;
16184    getError(): GLenum;
16185    getExtension(extensionName: "ANGLE_instanced_arrays"): ANGLE_instanced_arrays | null;
16186    getExtension(extensionName: "EXT_blend_minmax"): EXT_blend_minmax | null;
16187    getExtension(extensionName: "EXT_color_buffer_float"): EXT_color_buffer_float | null;
16188    getExtension(extensionName: "EXT_color_buffer_half_float"): EXT_color_buffer_half_float | null;
16189    getExtension(extensionName: "EXT_float_blend"): EXT_float_blend | null;
16190    getExtension(extensionName: "EXT_frag_depth"): EXT_frag_depth | null;
16191    getExtension(extensionName: "EXT_sRGB"): EXT_sRGB | null;
16192    getExtension(extensionName: "EXT_shader_texture_lod"): EXT_shader_texture_lod | null;
16193    getExtension(extensionName: "EXT_texture_compression_bptc"): EXT_texture_compression_bptc | null;
16194    getExtension(extensionName: "EXT_texture_compression_rgtc"): EXT_texture_compression_rgtc | null;
16195    getExtension(extensionName: "EXT_texture_filter_anisotropic"): EXT_texture_filter_anisotropic | null;
16196    getExtension(extensionName: "KHR_parallel_shader_compile"): KHR_parallel_shader_compile | null;
16197    getExtension(extensionName: "OES_element_index_uint"): OES_element_index_uint | null;
16198    getExtension(extensionName: "OES_fbo_render_mipmap"): OES_fbo_render_mipmap | null;
16199    getExtension(extensionName: "OES_standard_derivatives"): OES_standard_derivatives | null;
16200    getExtension(extensionName: "OES_texture_float"): OES_texture_float | null;
16201    getExtension(extensionName: "OES_texture_float_linear"): OES_texture_float_linear | null;
16202    getExtension(extensionName: "OES_texture_half_float"): OES_texture_half_float | null;
16203    getExtension(extensionName: "OES_texture_half_float_linear"): OES_texture_half_float_linear | null;
16204    getExtension(extensionName: "OES_vertex_array_object"): OES_vertex_array_object | null;
16205    getExtension(extensionName: "OVR_multiview2"): OVR_multiview2 | null;
16206    getExtension(extensionName: "WEBGL_color_buffer_float"): WEBGL_color_buffer_float | null;
16207    getExtension(extensionName: "WEBGL_compressed_texture_astc"): WEBGL_compressed_texture_astc | null;
16208    getExtension(extensionName: "WEBGL_compressed_texture_etc"): WEBGL_compressed_texture_etc | null;
16209    getExtension(extensionName: "WEBGL_compressed_texture_etc1"): WEBGL_compressed_texture_etc1 | null;
16210    getExtension(extensionName: "WEBGL_compressed_texture_s3tc"): WEBGL_compressed_texture_s3tc | null;
16211    getExtension(extensionName: "WEBGL_compressed_texture_s3tc_srgb"): WEBGL_compressed_texture_s3tc_srgb | null;
16212    getExtension(extensionName: "WEBGL_debug_renderer_info"): WEBGL_debug_renderer_info | null;
16213    getExtension(extensionName: "WEBGL_debug_shaders"): WEBGL_debug_shaders | null;
16214    getExtension(extensionName: "WEBGL_depth_texture"): WEBGL_depth_texture | null;
16215    getExtension(extensionName: "WEBGL_draw_buffers"): WEBGL_draw_buffers | null;
16216    getExtension(extensionName: "WEBGL_lose_context"): WEBGL_lose_context | null;
16217    getExtension(extensionName: "WEBGL_multi_draw"): WEBGL_multi_draw | null;
16218    getExtension(name: string): any;
16219    getFramebufferAttachmentParameter(target: GLenum, attachment: GLenum, pname: GLenum): any;
16220    getParameter(pname: GLenum): any;
16221    getProgramInfoLog(program: WebGLProgram): string | null;
16222    getProgramParameter(program: WebGLProgram, pname: GLenum): any;
16223    getRenderbufferParameter(target: GLenum, pname: GLenum): any;
16224    getShaderInfoLog(shader: WebGLShader): string | null;
16225    getShaderParameter(shader: WebGLShader, pname: GLenum): any;
16226    getShaderPrecisionFormat(shadertype: GLenum, precisiontype: GLenum): WebGLShaderPrecisionFormat | null;
16227    getShaderSource(shader: WebGLShader): string | null;
16228    getSupportedExtensions(): string[] | null;
16229    getTexParameter(target: GLenum, pname: GLenum): any;
16230    getUniform(program: WebGLProgram, location: WebGLUniformLocation): any;
16231    getUniformLocation(program: WebGLProgram, name: string): WebGLUniformLocation | null;
16232    getVertexAttrib(index: GLuint, pname: GLenum): any;
16233    getVertexAttribOffset(index: GLuint, pname: GLenum): GLintptr;
16234    hint(target: GLenum, mode: GLenum): void;
16235    isBuffer(buffer: WebGLBuffer | null): GLboolean;
16236    isContextLost(): boolean;
16237    isEnabled(cap: GLenum): GLboolean;
16238    isFramebuffer(framebuffer: WebGLFramebuffer | null): GLboolean;
16239    isProgram(program: WebGLProgram | null): GLboolean;
16240    isRenderbuffer(renderbuffer: WebGLRenderbuffer | null): GLboolean;
16241    isShader(shader: WebGLShader | null): GLboolean;
16242    isTexture(texture: WebGLTexture | null): GLboolean;
16243    lineWidth(width: GLfloat): void;
16244    linkProgram(program: WebGLProgram): void;
16245    pixelStorei(pname: GLenum, param: GLint | GLboolean): void;
16246    polygonOffset(factor: GLfloat, units: GLfloat): void;
16247    renderbufferStorage(target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei): void;
16248    sampleCoverage(value: GLclampf, invert: GLboolean): void;
16249    scissor(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
16250    shaderSource(shader: WebGLShader, source: string): void;
16251    stencilFunc(func: GLenum, ref: GLint, mask: GLuint): void;
16252    stencilFuncSeparate(face: GLenum, func: GLenum, ref: GLint, mask: GLuint): void;
16253    stencilMask(mask: GLuint): void;
16254    stencilMaskSeparate(face: GLenum, mask: GLuint): void;
16255    stencilOp(fail: GLenum, zfail: GLenum, zpass: GLenum): void;
16256    stencilOpSeparate(face: GLenum, fail: GLenum, zfail: GLenum, zpass: GLenum): void;
16257    texParameterf(target: GLenum, pname: GLenum, param: GLfloat): void;
16258    texParameteri(target: GLenum, pname: GLenum, param: GLint): void;
16259    uniform1f(location: WebGLUniformLocation | null, x: GLfloat): void;
16260    uniform1i(location: WebGLUniformLocation | null, x: GLint): void;
16261    uniform2f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat): void;
16262    uniform2i(location: WebGLUniformLocation | null, x: GLint, y: GLint): void;
16263    uniform3f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat, z: GLfloat): void;
16264    uniform3i(location: WebGLUniformLocation | null, x: GLint, y: GLint, z: GLint): void;
16265    uniform4f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void;
16266    uniform4i(location: WebGLUniformLocation | null, x: GLint, y: GLint, z: GLint, w: GLint): void;
16267    useProgram(program: WebGLProgram | null): void;
16268    validateProgram(program: WebGLProgram): void;
16269    vertexAttrib1f(index: GLuint, x: GLfloat): void;
16270    vertexAttrib1fv(index: GLuint, values: Float32List): void;
16271    vertexAttrib2f(index: GLuint, x: GLfloat, y: GLfloat): void;
16272    vertexAttrib2fv(index: GLuint, values: Float32List): void;
16273    vertexAttrib3f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat): void;
16274    vertexAttrib3fv(index: GLuint, values: Float32List): void;
16275    vertexAttrib4f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void;
16276    vertexAttrib4fv(index: GLuint, values: Float32List): void;
16277    vertexAttribPointer(index: GLuint, size: GLint, type: GLenum, normalized: GLboolean, stride: GLsizei, offset: GLintptr): void;
16278    viewport(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
16279    readonly ACTIVE_ATTRIBUTES: GLenum;
16280    readonly ACTIVE_TEXTURE: GLenum;
16281    readonly ACTIVE_UNIFORMS: GLenum;
16282    readonly ALIASED_LINE_WIDTH_RANGE: GLenum;
16283    readonly ALIASED_POINT_SIZE_RANGE: GLenum;
16284    readonly ALPHA: GLenum;
16285    readonly ALPHA_BITS: GLenum;
16286    readonly ALWAYS: GLenum;
16287    readonly ARRAY_BUFFER: GLenum;
16288    readonly ARRAY_BUFFER_BINDING: GLenum;
16289    readonly ATTACHED_SHADERS: GLenum;
16290    readonly BACK: GLenum;
16291    readonly BLEND: GLenum;
16292    readonly BLEND_COLOR: GLenum;
16293    readonly BLEND_DST_ALPHA: GLenum;
16294    readonly BLEND_DST_RGB: GLenum;
16295    readonly BLEND_EQUATION: GLenum;
16296    readonly BLEND_EQUATION_ALPHA: GLenum;
16297    readonly BLEND_EQUATION_RGB: GLenum;
16298    readonly BLEND_SRC_ALPHA: GLenum;
16299    readonly BLEND_SRC_RGB: GLenum;
16300    readonly BLUE_BITS: GLenum;
16301    readonly BOOL: GLenum;
16302    readonly BOOL_VEC2: GLenum;
16303    readonly BOOL_VEC3: GLenum;
16304    readonly BOOL_VEC4: GLenum;
16305    readonly BROWSER_DEFAULT_WEBGL: GLenum;
16306    readonly BUFFER_SIZE: GLenum;
16307    readonly BUFFER_USAGE: GLenum;
16308    readonly BYTE: GLenum;
16309    readonly CCW: GLenum;
16310    readonly CLAMP_TO_EDGE: GLenum;
16311    readonly COLOR_ATTACHMENT0: GLenum;
16312    readonly COLOR_BUFFER_BIT: GLenum;
16313    readonly COLOR_CLEAR_VALUE: GLenum;
16314    readonly COLOR_WRITEMASK: GLenum;
16315    readonly COMPILE_STATUS: GLenum;
16316    readonly COMPRESSED_TEXTURE_FORMATS: GLenum;
16317    readonly CONSTANT_ALPHA: GLenum;
16318    readonly CONSTANT_COLOR: GLenum;
16319    readonly CONTEXT_LOST_WEBGL: GLenum;
16320    readonly CULL_FACE: GLenum;
16321    readonly CULL_FACE_MODE: GLenum;
16322    readonly CURRENT_PROGRAM: GLenum;
16323    readonly CURRENT_VERTEX_ATTRIB: GLenum;
16324    readonly CW: GLenum;
16325    readonly DECR: GLenum;
16326    readonly DECR_WRAP: GLenum;
16327    readonly DELETE_STATUS: GLenum;
16328    readonly DEPTH_ATTACHMENT: GLenum;
16329    readonly DEPTH_BITS: GLenum;
16330    readonly DEPTH_BUFFER_BIT: GLenum;
16331    readonly DEPTH_CLEAR_VALUE: GLenum;
16332    readonly DEPTH_COMPONENT: GLenum;
16333    readonly DEPTH_COMPONENT16: GLenum;
16334    readonly DEPTH_FUNC: GLenum;
16335    readonly DEPTH_RANGE: GLenum;
16336    readonly DEPTH_STENCIL: GLenum;
16337    readonly DEPTH_STENCIL_ATTACHMENT: GLenum;
16338    readonly DEPTH_TEST: GLenum;
16339    readonly DEPTH_WRITEMASK: GLenum;
16340    readonly DITHER: GLenum;
16341    readonly DONT_CARE: GLenum;
16342    readonly DST_ALPHA: GLenum;
16343    readonly DST_COLOR: GLenum;
16344    readonly DYNAMIC_DRAW: GLenum;
16345    readonly ELEMENT_ARRAY_BUFFER: GLenum;
16346    readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum;
16347    readonly EQUAL: GLenum;
16348    readonly FASTEST: GLenum;
16349    readonly FLOAT: GLenum;
16350    readonly FLOAT_MAT2: GLenum;
16351    readonly FLOAT_MAT3: GLenum;
16352    readonly FLOAT_MAT4: GLenum;
16353    readonly FLOAT_VEC2: GLenum;
16354    readonly FLOAT_VEC3: GLenum;
16355    readonly FLOAT_VEC4: GLenum;
16356    readonly FRAGMENT_SHADER: GLenum;
16357    readonly FRAMEBUFFER: GLenum;
16358    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum;
16359    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum;
16360    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum;
16361    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum;
16362    readonly FRAMEBUFFER_BINDING: GLenum;
16363    readonly FRAMEBUFFER_COMPLETE: GLenum;
16364    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum;
16365    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum;
16366    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum;
16367    readonly FRAMEBUFFER_UNSUPPORTED: GLenum;
16368    readonly FRONT: GLenum;
16369    readonly FRONT_AND_BACK: GLenum;
16370    readonly FRONT_FACE: GLenum;
16371    readonly FUNC_ADD: GLenum;
16372    readonly FUNC_REVERSE_SUBTRACT: GLenum;
16373    readonly FUNC_SUBTRACT: GLenum;
16374    readonly GENERATE_MIPMAP_HINT: GLenum;
16375    readonly GEQUAL: GLenum;
16376    readonly GREATER: GLenum;
16377    readonly GREEN_BITS: GLenum;
16378    readonly HIGH_FLOAT: GLenum;
16379    readonly HIGH_INT: GLenum;
16380    readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum;
16381    readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum;
16382    readonly INCR: GLenum;
16383    readonly INCR_WRAP: GLenum;
16384    readonly INT: GLenum;
16385    readonly INT_VEC2: GLenum;
16386    readonly INT_VEC3: GLenum;
16387    readonly INT_VEC4: GLenum;
16388    readonly INVALID_ENUM: GLenum;
16389    readonly INVALID_FRAMEBUFFER_OPERATION: GLenum;
16390    readonly INVALID_OPERATION: GLenum;
16391    readonly INVALID_VALUE: GLenum;
16392    readonly INVERT: GLenum;
16393    readonly KEEP: GLenum;
16394    readonly LEQUAL: GLenum;
16395    readonly LESS: GLenum;
16396    readonly LINEAR: GLenum;
16397    readonly LINEAR_MIPMAP_LINEAR: GLenum;
16398    readonly LINEAR_MIPMAP_NEAREST: GLenum;
16399    readonly LINES: GLenum;
16400    readonly LINE_LOOP: GLenum;
16401    readonly LINE_STRIP: GLenum;
16402    readonly LINE_WIDTH: GLenum;
16403    readonly LINK_STATUS: GLenum;
16404    readonly LOW_FLOAT: GLenum;
16405    readonly LOW_INT: GLenum;
16406    readonly LUMINANCE: GLenum;
16407    readonly LUMINANCE_ALPHA: GLenum;
16408    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum;
16409    readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum;
16410    readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum;
16411    readonly MAX_RENDERBUFFER_SIZE: GLenum;
16412    readonly MAX_TEXTURE_IMAGE_UNITS: GLenum;
16413    readonly MAX_TEXTURE_SIZE: GLenum;
16414    readonly MAX_VARYING_VECTORS: GLenum;
16415    readonly MAX_VERTEX_ATTRIBS: GLenum;
16416    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum;
16417    readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum;
16418    readonly MAX_VIEWPORT_DIMS: GLenum;
16419    readonly MEDIUM_FLOAT: GLenum;
16420    readonly MEDIUM_INT: GLenum;
16421    readonly MIRRORED_REPEAT: GLenum;
16422    readonly NEAREST: GLenum;
16423    readonly NEAREST_MIPMAP_LINEAR: GLenum;
16424    readonly NEAREST_MIPMAP_NEAREST: GLenum;
16425    readonly NEVER: GLenum;
16426    readonly NICEST: GLenum;
16427    readonly NONE: GLenum;
16428    readonly NOTEQUAL: GLenum;
16429    readonly NO_ERROR: GLenum;
16430    readonly ONE: GLenum;
16431    readonly ONE_MINUS_CONSTANT_ALPHA: GLenum;
16432    readonly ONE_MINUS_CONSTANT_COLOR: GLenum;
16433    readonly ONE_MINUS_DST_ALPHA: GLenum;
16434    readonly ONE_MINUS_DST_COLOR: GLenum;
16435    readonly ONE_MINUS_SRC_ALPHA: GLenum;
16436    readonly ONE_MINUS_SRC_COLOR: GLenum;
16437    readonly OUT_OF_MEMORY: GLenum;
16438    readonly PACK_ALIGNMENT: GLenum;
16439    readonly POINTS: GLenum;
16440    readonly POLYGON_OFFSET_FACTOR: GLenum;
16441    readonly POLYGON_OFFSET_FILL: GLenum;
16442    readonly POLYGON_OFFSET_UNITS: GLenum;
16443    readonly RED_BITS: GLenum;
16444    readonly RENDERBUFFER: GLenum;
16445    readonly RENDERBUFFER_ALPHA_SIZE: GLenum;
16446    readonly RENDERBUFFER_BINDING: GLenum;
16447    readonly RENDERBUFFER_BLUE_SIZE: GLenum;
16448    readonly RENDERBUFFER_DEPTH_SIZE: GLenum;
16449    readonly RENDERBUFFER_GREEN_SIZE: GLenum;
16450    readonly RENDERBUFFER_HEIGHT: GLenum;
16451    readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum;
16452    readonly RENDERBUFFER_RED_SIZE: GLenum;
16453    readonly RENDERBUFFER_STENCIL_SIZE: GLenum;
16454    readonly RENDERBUFFER_WIDTH: GLenum;
16455    readonly RENDERER: GLenum;
16456    readonly REPEAT: GLenum;
16457    readonly REPLACE: GLenum;
16458    readonly RGB: GLenum;
16459    readonly RGB565: GLenum;
16460    readonly RGB5_A1: GLenum;
16461    readonly RGBA: GLenum;
16462    readonly RGBA4: GLenum;
16463    readonly SAMPLER_2D: GLenum;
16464    readonly SAMPLER_CUBE: GLenum;
16465    readonly SAMPLES: GLenum;
16466    readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum;
16467    readonly SAMPLE_BUFFERS: GLenum;
16468    readonly SAMPLE_COVERAGE: GLenum;
16469    readonly SAMPLE_COVERAGE_INVERT: GLenum;
16470    readonly SAMPLE_COVERAGE_VALUE: GLenum;
16471    readonly SCISSOR_BOX: GLenum;
16472    readonly SCISSOR_TEST: GLenum;
16473    readonly SHADER_TYPE: GLenum;
16474    readonly SHADING_LANGUAGE_VERSION: GLenum;
16475    readonly SHORT: GLenum;
16476    readonly SRC_ALPHA: GLenum;
16477    readonly SRC_ALPHA_SATURATE: GLenum;
16478    readonly SRC_COLOR: GLenum;
16479    readonly STATIC_DRAW: GLenum;
16480    readonly STENCIL_ATTACHMENT: GLenum;
16481    readonly STENCIL_BACK_FAIL: GLenum;
16482    readonly STENCIL_BACK_FUNC: GLenum;
16483    readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum;
16484    readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum;
16485    readonly STENCIL_BACK_REF: GLenum;
16486    readonly STENCIL_BACK_VALUE_MASK: GLenum;
16487    readonly STENCIL_BACK_WRITEMASK: GLenum;
16488    readonly STENCIL_BITS: GLenum;
16489    readonly STENCIL_BUFFER_BIT: GLenum;
16490    readonly STENCIL_CLEAR_VALUE: GLenum;
16491    readonly STENCIL_FAIL: GLenum;
16492    readonly STENCIL_FUNC: GLenum;
16493    readonly STENCIL_INDEX8: GLenum;
16494    readonly STENCIL_PASS_DEPTH_FAIL: GLenum;
16495    readonly STENCIL_PASS_DEPTH_PASS: GLenum;
16496    readonly STENCIL_REF: GLenum;
16497    readonly STENCIL_TEST: GLenum;
16498    readonly STENCIL_VALUE_MASK: GLenum;
16499    readonly STENCIL_WRITEMASK: GLenum;
16500    readonly STREAM_DRAW: GLenum;
16501    readonly SUBPIXEL_BITS: GLenum;
16502    readonly TEXTURE: GLenum;
16503    readonly TEXTURE0: GLenum;
16504    readonly TEXTURE1: GLenum;
16505    readonly TEXTURE10: GLenum;
16506    readonly TEXTURE11: GLenum;
16507    readonly TEXTURE12: GLenum;
16508    readonly TEXTURE13: GLenum;
16509    readonly TEXTURE14: GLenum;
16510    readonly TEXTURE15: GLenum;
16511    readonly TEXTURE16: GLenum;
16512    readonly TEXTURE17: GLenum;
16513    readonly TEXTURE18: GLenum;
16514    readonly TEXTURE19: GLenum;
16515    readonly TEXTURE2: GLenum;
16516    readonly TEXTURE20: GLenum;
16517    readonly TEXTURE21: GLenum;
16518    readonly TEXTURE22: GLenum;
16519    readonly TEXTURE23: GLenum;
16520    readonly TEXTURE24: GLenum;
16521    readonly TEXTURE25: GLenum;
16522    readonly TEXTURE26: GLenum;
16523    readonly TEXTURE27: GLenum;
16524    readonly TEXTURE28: GLenum;
16525    readonly TEXTURE29: GLenum;
16526    readonly TEXTURE3: GLenum;
16527    readonly TEXTURE30: GLenum;
16528    readonly TEXTURE31: GLenum;
16529    readonly TEXTURE4: GLenum;
16530    readonly TEXTURE5: GLenum;
16531    readonly TEXTURE6: GLenum;
16532    readonly TEXTURE7: GLenum;
16533    readonly TEXTURE8: GLenum;
16534    readonly TEXTURE9: GLenum;
16535    readonly TEXTURE_2D: GLenum;
16536    readonly TEXTURE_BINDING_2D: GLenum;
16537    readonly TEXTURE_BINDING_CUBE_MAP: GLenum;
16538    readonly TEXTURE_CUBE_MAP: GLenum;
16539    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum;
16540    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum;
16541    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum;
16542    readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum;
16543    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum;
16544    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum;
16545    readonly TEXTURE_MAG_FILTER: GLenum;
16546    readonly TEXTURE_MIN_FILTER: GLenum;
16547    readonly TEXTURE_WRAP_S: GLenum;
16548    readonly TEXTURE_WRAP_T: GLenum;
16549    readonly TRIANGLES: GLenum;
16550    readonly TRIANGLE_FAN: GLenum;
16551    readonly TRIANGLE_STRIP: GLenum;
16552    readonly UNPACK_ALIGNMENT: GLenum;
16553    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum;
16554    readonly UNPACK_FLIP_Y_WEBGL: GLenum;
16555    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum;
16556    readonly UNSIGNED_BYTE: GLenum;
16557    readonly UNSIGNED_INT: GLenum;
16558    readonly UNSIGNED_SHORT: GLenum;
16559    readonly UNSIGNED_SHORT_4_4_4_4: GLenum;
16560    readonly UNSIGNED_SHORT_5_5_5_1: GLenum;
16561    readonly UNSIGNED_SHORT_5_6_5: GLenum;
16562    readonly VALIDATE_STATUS: GLenum;
16563    readonly VENDOR: GLenum;
16564    readonly VERSION: GLenum;
16565    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum;
16566    readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum;
16567    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum;
16568    readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum;
16569    readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum;
16570    readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum;
16571    readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum;
16572    readonly VERTEX_SHADER: GLenum;
16573    readonly VIEWPORT: GLenum;
16574    readonly ZERO: GLenum;
16575}
16576
16577interface WebGLRenderingContextOverloads {
16578    bufferData(target: GLenum, size: GLsizeiptr, usage: GLenum): void;
16579    bufferData(target: GLenum, data: BufferSource | null, usage: GLenum): void;
16580    bufferSubData(target: GLenum, offset: GLintptr, data: BufferSource): void;
16581    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, data: ArrayBufferView): void;
16582    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, data: ArrayBufferView): void;
16583    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
16584    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
16585    texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
16586    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
16587    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;
16588    uniform1fv(location: WebGLUniformLocation | null, v: Float32List): void;
16589    uniform1iv(location: WebGLUniformLocation | null, v: Int32List): void;
16590    uniform2fv(location: WebGLUniformLocation | null, v: Float32List): void;
16591    uniform2iv(location: WebGLUniformLocation | null, v: Int32List): void;
16592    uniform3fv(location: WebGLUniformLocation | null, v: Float32List): void;
16593    uniform3iv(location: WebGLUniformLocation | null, v: Int32List): void;
16594    uniform4fv(location: WebGLUniformLocation | null, v: Float32List): void;
16595    uniform4iv(location: WebGLUniformLocation | null, v: Int32List): void;
16596    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;
16597    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;
16598    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;
16599}
16600
16601interface WebGLSampler {
16602}
16603
16604declare var WebGLSampler: {
16605    prototype: WebGLSampler;
16606    new(): WebGLSampler;
16607};
16608
16609/** 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. */
16610interface WebGLShader {
16611}
16612
16613declare var WebGLShader: {
16614    prototype: WebGLShader;
16615    new(): WebGLShader;
16616};
16617
16618/** Part of the WebGL API and represents the information returned by calling the WebGLRenderingContext.getShaderPrecisionFormat() method. */
16619interface WebGLShaderPrecisionFormat {
16620    readonly precision: GLint;
16621    readonly rangeMax: GLint;
16622    readonly rangeMin: GLint;
16623}
16624
16625declare var WebGLShaderPrecisionFormat: {
16626    prototype: WebGLShaderPrecisionFormat;
16627    new(): WebGLShaderPrecisionFormat;
16628};
16629
16630interface WebGLSync {
16631}
16632
16633declare var WebGLSync: {
16634    prototype: WebGLSync;
16635    new(): WebGLSync;
16636};
16637
16638/** Part of the WebGL API and represents an opaque texture object providing storage and state for texturing operations. */
16639interface WebGLTexture {
16640}
16641
16642declare var WebGLTexture: {
16643    prototype: WebGLTexture;
16644    new(): WebGLTexture;
16645};
16646
16647interface WebGLTransformFeedback {
16648}
16649
16650declare var WebGLTransformFeedback: {
16651    prototype: WebGLTransformFeedback;
16652    new(): WebGLTransformFeedback;
16653};
16654
16655/** Part of the WebGL API and represents the location of a uniform variable in a shader program. */
16656interface WebGLUniformLocation {
16657}
16658
16659declare var WebGLUniformLocation: {
16660    prototype: WebGLUniformLocation;
16661    new(): WebGLUniformLocation;
16662};
16663
16664interface WebGLVertexArrayObject {
16665}
16666
16667declare var WebGLVertexArrayObject: {
16668    prototype: WebGLVertexArrayObject;
16669    new(): WebGLVertexArrayObject;
16670};
16671
16672interface WebGLVertexArrayObjectOES {
16673}
16674
16675interface WebSocketEventMap {
16676    "close": CloseEvent;
16677    "error": Event;
16678    "message": MessageEvent;
16679    "open": Event;
16680}
16681
16682/** Provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. */
16683interface WebSocket extends EventTarget {
16684    /**
16685     * Returns a string that indicates how binary data from the WebSocket object is exposed to scripts:
16686     *
16687     * Can be set, to change how binary data is returned. The default is "blob".
16688     */
16689    binaryType: BinaryType;
16690    /**
16691     * 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.
16692     *
16693     * 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.)
16694     */
16695    readonly bufferedAmount: number;
16696    /** Returns the extensions selected by the server, if any. */
16697    readonly extensions: string;
16698    onclose: ((this: WebSocket, ev: CloseEvent) => any) | null;
16699    onerror: ((this: WebSocket, ev: Event) => any) | null;
16700    onmessage: ((this: WebSocket, ev: MessageEvent) => any) | null;
16701    onopen: ((this: WebSocket, ev: Event) => any) | null;
16702    /** 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. */
16703    readonly protocol: string;
16704    /** Returns the state of the WebSocket object's connection. It can have the values described below. */
16705    readonly readyState: number;
16706    /** Returns the URL that was used to establish the WebSocket connection. */
16707    readonly url: string;
16708    /** Closes the WebSocket connection, optionally using code as the the WebSocket connection close code and reason as the the WebSocket connection close reason. */
16709    close(code?: number, reason?: string): void;
16710    /** Transmits data using the WebSocket connection. data can be a string, a Blob, an ArrayBuffer, or an ArrayBufferView. */
16711    send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
16712    readonly CLOSED: number;
16713    readonly CLOSING: number;
16714    readonly CONNECTING: number;
16715    readonly OPEN: number;
16716    addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
16717    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
16718    removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
16719    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
16720}
16721
16722declare var WebSocket: {
16723    prototype: WebSocket;
16724    new(url: string | URL, protocols?: string | string[]): WebSocket;
16725    readonly CLOSED: number;
16726    readonly CLOSING: number;
16727    readonly CONNECTING: number;
16728    readonly OPEN: number;
16729};
16730
16731/** Events that occur due to the user moving a mouse wheel or similar input device. */
16732interface WheelEvent extends MouseEvent {
16733    readonly deltaMode: number;
16734    readonly deltaX: number;
16735    readonly deltaY: number;
16736    readonly deltaZ: number;
16737    readonly DOM_DELTA_LINE: number;
16738    readonly DOM_DELTA_PAGE: number;
16739    readonly DOM_DELTA_PIXEL: number;
16740}
16741
16742declare var WheelEvent: {
16743    prototype: WheelEvent;
16744    new(type: string, eventInitDict?: WheelEventInit): WheelEvent;
16745    readonly DOM_DELTA_LINE: number;
16746    readonly DOM_DELTA_PAGE: number;
16747    readonly DOM_DELTA_PIXEL: number;
16748};
16749
16750interface WindowEventMap extends GlobalEventHandlersEventMap, WindowEventHandlersEventMap {
16751    "DOMContentLoaded": Event;
16752    "devicemotion": DeviceMotionEvent;
16753    "deviceorientation": DeviceOrientationEvent;
16754    "gamepadconnected": GamepadEvent;
16755    "gamepaddisconnected": GamepadEvent;
16756    "orientationchange": Event;
16757}
16758
16759/** A window containing a DOM document; the document property points to the DOM document loaded in that window. */
16760interface Window extends EventTarget, AnimationFrameProvider, GlobalEventHandlers, WindowEventHandlers, WindowLocalStorage, WindowOrWorkerGlobalScope, WindowSessionStorage {
16761    /** @deprecated This is a legacy alias of `navigator`. */
16762    readonly clientInformation: Navigator;
16763    /** Returns true if the window has been closed, false otherwise. */
16764    readonly closed: boolean;
16765    /** Defines a new custom element, mapping the given name to the given constructor as an autonomous custom element. */
16766    readonly customElements: CustomElementRegistry;
16767    readonly devicePixelRatio: number;
16768    readonly document: Document;
16769    /** @deprecated */
16770    readonly event: Event | undefined;
16771    /** @deprecated */
16772    readonly external: External;
16773    readonly frameElement: Element | null;
16774    readonly frames: WindowProxy;
16775    readonly history: History;
16776    readonly innerHeight: number;
16777    readonly innerWidth: number;
16778    readonly length: number;
16779    get location(): Location;
16780    set location(href: string | Location);
16781    /** Returns true if the location bar is visible; otherwise, returns false. */
16782    readonly locationbar: BarProp;
16783    /** Returns true if the menu bar is visible; otherwise, returns false. */
16784    readonly menubar: BarProp;
16785    name: string;
16786    readonly navigator: Navigator;
16787    /** Available only in secure contexts. */
16788    ondevicemotion: ((this: Window, ev: DeviceMotionEvent) => any) | null;
16789    /** Available only in secure contexts. */
16790    ondeviceorientation: ((this: Window, ev: DeviceOrientationEvent) => any) | null;
16791    /** @deprecated */
16792    onorientationchange: ((this: Window, ev: Event) => any) | null;
16793    opener: any;
16794    /** @deprecated */
16795    readonly orientation: number;
16796    readonly outerHeight: number;
16797    readonly outerWidth: number;
16798    /** @deprecated This is a legacy alias of `scrollX`. */
16799    readonly pageXOffset: number;
16800    /** @deprecated This is a legacy alias of `scrollY`. */
16801    readonly pageYOffset: number;
16802    /**
16803     * Refers to either the parent WindowProxy, or itself.
16804     *
16805     * It can rarely be null e.g. for contentWindow of an iframe that is already removed from the parent.
16806     */
16807    readonly parent: WindowProxy;
16808    /** Returns true if the personal bar is visible; otherwise, returns false. */
16809    readonly personalbar: BarProp;
16810    readonly screen: Screen;
16811    readonly screenLeft: number;
16812    readonly screenTop: number;
16813    readonly screenX: number;
16814    readonly screenY: number;
16815    readonly scrollX: number;
16816    readonly scrollY: number;
16817    /** Returns true if the scrollbars are visible; otherwise, returns false. */
16818    readonly scrollbars: BarProp;
16819    readonly self: Window & typeof globalThis;
16820    readonly speechSynthesis: SpeechSynthesis;
16821    /** @deprecated */
16822    status: string;
16823    /** Returns true if the status bar is visible; otherwise, returns false. */
16824    readonly statusbar: BarProp;
16825    /** Returns true if the toolbar is visible; otherwise, returns false. */
16826    readonly toolbar: BarProp;
16827    readonly top: WindowProxy | null;
16828    readonly visualViewport: VisualViewport | null;
16829    readonly window: Window & typeof globalThis;
16830    alert(message?: any): void;
16831    blur(): void;
16832    cancelIdleCallback(handle: number): void;
16833    /** @deprecated */
16834    captureEvents(): void;
16835    /** Closes the window. */
16836    close(): void;
16837    confirm(message?: string): boolean;
16838    /** Moves the focus to the window's browsing context, if any. */
16839    focus(): void;
16840    getComputedStyle(elt: Element, pseudoElt?: string | null): CSSStyleDeclaration;
16841    getSelection(): Selection | null;
16842    matchMedia(query: string): MediaQueryList;
16843    moveBy(x: number, y: number): void;
16844    moveTo(x: number, y: number): void;
16845    open(url?: string | URL, target?: string, features?: string): WindowProxy | null;
16846    /**
16847     * Posts a message to the given window. Messages can be structured objects, e.g. nested objects and arrays, can contain JavaScript values (strings, numbers, Date objects, etc), and can contain certain data objects such as File Blob, FileList, and ArrayBuffer objects.
16848     *
16849     * Objects listed in the transfer member of options are transferred, not just cloned, meaning that they are no longer usable on the sending side.
16850     *
16851     * A target origin can be specified using the targetOrigin member of options. If not provided, it defaults to "/". This default restricts the message to same-origin targets only.
16852     *
16853     * If the origin of the target window doesn't match the given target origin, the message is discarded, to avoid information leakage. To send the message to the target regardless of origin, set the target origin to "*".
16854     *
16855     * Throws a "DataCloneError" DOMException if transfer array contains duplicate objects or if message could not be cloned.
16856     */
16857    postMessage(message: any, targetOrigin: string, transfer?: Transferable[]): void;
16858    postMessage(message: any, options?: WindowPostMessageOptions): void;
16859    print(): void;
16860    prompt(message?: string, _default?: string): string | null;
16861    /** @deprecated */
16862    releaseEvents(): void;
16863    requestIdleCallback(callback: IdleRequestCallback, options?: IdleRequestOptions): number;
16864    resizeBy(x: number, y: number): void;
16865    resizeTo(width: number, height: number): void;
16866    scroll(options?: ScrollToOptions): void;
16867    scroll(x: number, y: number): void;
16868    scrollBy(options?: ScrollToOptions): void;
16869    scrollBy(x: number, y: number): void;
16870    scrollTo(options?: ScrollToOptions): void;
16871    scrollTo(x: number, y: number): void;
16872    /** Cancels the document load. */
16873    stop(): void;
16874    addEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
16875    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
16876    removeEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
16877    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
16878    [index: number]: Window;
16879}
16880
16881declare var Window: {
16882    prototype: Window;
16883    new(): Window;
16884};
16885
16886interface WindowEventHandlersEventMap {
16887    "afterprint": Event;
16888    "beforeprint": Event;
16889    "beforeunload": BeforeUnloadEvent;
16890    "gamepadconnected": GamepadEvent;
16891    "gamepaddisconnected": GamepadEvent;
16892    "hashchange": HashChangeEvent;
16893    "languagechange": Event;
16894    "message": MessageEvent;
16895    "messageerror": MessageEvent;
16896    "offline": Event;
16897    "online": Event;
16898    "pagehide": PageTransitionEvent;
16899    "pageshow": PageTransitionEvent;
16900    "popstate": PopStateEvent;
16901    "rejectionhandled": PromiseRejectionEvent;
16902    "storage": StorageEvent;
16903    "unhandledrejection": PromiseRejectionEvent;
16904    "unload": Event;
16905}
16906
16907interface WindowEventHandlers {
16908    onafterprint: ((this: WindowEventHandlers, ev: Event) => any) | null;
16909    onbeforeprint: ((this: WindowEventHandlers, ev: Event) => any) | null;
16910    onbeforeunload: ((this: WindowEventHandlers, ev: BeforeUnloadEvent) => any) | null;
16911    ongamepadconnected: ((this: WindowEventHandlers, ev: GamepadEvent) => any) | null;
16912    ongamepaddisconnected: ((this: WindowEventHandlers, ev: GamepadEvent) => any) | null;
16913    onhashchange: ((this: WindowEventHandlers, ev: HashChangeEvent) => any) | null;
16914    onlanguagechange: ((this: WindowEventHandlers, ev: Event) => any) | null;
16915    onmessage: ((this: WindowEventHandlers, ev: MessageEvent) => any) | null;
16916    onmessageerror: ((this: WindowEventHandlers, ev: MessageEvent) => any) | null;
16917    onoffline: ((this: WindowEventHandlers, ev: Event) => any) | null;
16918    ononline: ((this: WindowEventHandlers, ev: Event) => any) | null;
16919    onpagehide: ((this: WindowEventHandlers, ev: PageTransitionEvent) => any) | null;
16920    onpageshow: ((this: WindowEventHandlers, ev: PageTransitionEvent) => any) | null;
16921    onpopstate: ((this: WindowEventHandlers, ev: PopStateEvent) => any) | null;
16922    onrejectionhandled: ((this: WindowEventHandlers, ev: PromiseRejectionEvent) => any) | null;
16923    onstorage: ((this: WindowEventHandlers, ev: StorageEvent) => any) | null;
16924    onunhandledrejection: ((this: WindowEventHandlers, ev: PromiseRejectionEvent) => any) | null;
16925    onunload: ((this: WindowEventHandlers, ev: Event) => any) | null;
16926    addEventListener<K extends keyof WindowEventHandlersEventMap>(type: K, listener: (this: WindowEventHandlers, ev: WindowEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
16927    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
16928    removeEventListener<K extends keyof WindowEventHandlersEventMap>(type: K, listener: (this: WindowEventHandlers, ev: WindowEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
16929    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
16930}
16931
16932interface WindowLocalStorage {
16933    readonly localStorage: Storage;
16934}
16935
16936interface WindowOrWorkerGlobalScope {
16937    /** Available only in secure contexts. */
16938    readonly caches: CacheStorage;
16939    readonly crossOriginIsolated: boolean;
16940    readonly crypto: Crypto;
16941    readonly indexedDB: IDBFactory;
16942    readonly isSecureContext: boolean;
16943    readonly origin: string;
16944    readonly performance: Performance;
16945    atob(data: string): string;
16946    btoa(data: string): string;
16947    clearInterval(id: number | undefined): void;
16948    clearTimeout(id: number | undefined): void;
16949    createImageBitmap(image: ImageBitmapSource, options?: ImageBitmapOptions): Promise<ImageBitmap>;
16950    createImageBitmap(image: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number, options?: ImageBitmapOptions): Promise<ImageBitmap>;
16951    fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
16952    queueMicrotask(callback: VoidFunction): void;
16953    reportError(e: any): void;
16954    setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
16955    setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
16956    structuredClone(value: any, options?: StructuredSerializeOptions): any;
16957}
16958
16959interface WindowSessionStorage {
16960    readonly sessionStorage: Storage;
16961}
16962
16963interface WorkerEventMap extends AbstractWorkerEventMap {
16964    "message": MessageEvent;
16965    "messageerror": MessageEvent;
16966}
16967
16968/** 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. */
16969interface Worker extends EventTarget, AbstractWorker {
16970    onmessage: ((this: Worker, ev: MessageEvent) => any) | null;
16971    onmessageerror: ((this: Worker, ev: MessageEvent) => any) | null;
16972    /** 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. */
16973    postMessage(message: any, transfer: Transferable[]): void;
16974    postMessage(message: any, options?: StructuredSerializeOptions): void;
16975    /** Aborts worker's associated global environment. */
16976    terminate(): void;
16977    addEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: Worker, ev: WorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
16978    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
16979    removeEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: Worker, ev: WorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
16980    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
16981}
16982
16983declare var Worker: {
16984    prototype: Worker;
16985    new(scriptURL: string | URL, options?: WorkerOptions): Worker;
16986};
16987
16988/** Available only in secure contexts. */
16989interface Worklet {
16990    /**
16991     * Loads and executes the module script given by moduleURL into all of worklet's global scopes. It can also create additional global scopes as part of this process, depending on the worklet type. The returned promise will fulfill once the script has been successfully loaded and run in all global scopes.
16992     *
16993     * The credentials option can be set to a credentials mode to modify the script-fetching process. It defaults to "same-origin".
16994     *
16995     * Any failures in fetching the script or its dependencies will cause the returned promise to be rejected with an "AbortError" DOMException. Any errors in parsing the script or its dependencies will cause the returned promise to be rejected with the exception generated during parsing.
16996     */
16997    addModule(moduleURL: string | URL, options?: WorkletOptions): Promise<void>;
16998}
16999
17000declare var Worklet: {
17001    prototype: Worklet;
17002    new(): Worklet;
17003};
17004
17005/** 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. */
17006interface WritableStream<W = any> {
17007    readonly locked: boolean;
17008    abort(reason?: any): Promise<void>;
17009    close(): Promise<void>;
17010    getWriter(): WritableStreamDefaultWriter<W>;
17011}
17012
17013declare var WritableStream: {
17014    prototype: WritableStream;
17015    new<W = any>(underlyingSink?: UnderlyingSink<W>, strategy?: QueuingStrategy<W>): WritableStream<W>;
17016};
17017
17018/** 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. */
17019interface WritableStreamDefaultController {
17020    readonly signal: AbortSignal;
17021    error(e?: any): void;
17022}
17023
17024declare var WritableStreamDefaultController: {
17025    prototype: WritableStreamDefaultController;
17026    new(): WritableStreamDefaultController;
17027};
17028
17029/** 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. */
17030interface WritableStreamDefaultWriter<W = any> {
17031    readonly closed: Promise<undefined>;
17032    readonly desiredSize: number | null;
17033    readonly ready: Promise<undefined>;
17034    abort(reason?: any): Promise<void>;
17035    close(): Promise<void>;
17036    releaseLock(): void;
17037    write(chunk?: W): Promise<void>;
17038}
17039
17040declare var WritableStreamDefaultWriter: {
17041    prototype: WritableStreamDefaultWriter;
17042    new<W = any>(stream: WritableStream<W>): WritableStreamDefaultWriter<W>;
17043};
17044
17045/** 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. */
17046interface XMLDocument extends Document {
17047    addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: XMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
17048    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
17049    removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: XMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
17050    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
17051}
17052
17053declare var XMLDocument: {
17054    prototype: XMLDocument;
17055    new(): XMLDocument;
17056};
17057
17058interface XMLHttpRequestEventMap extends XMLHttpRequestEventTargetEventMap {
17059    "readystatechange": Event;
17060}
17061
17062/** 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. */
17063interface XMLHttpRequest extends XMLHttpRequestEventTarget {
17064    onreadystatechange: ((this: XMLHttpRequest, ev: Event) => any) | null;
17065    /** Returns client's state. */
17066    readonly readyState: number;
17067    /** Returns the response body. */
17068    readonly response: any;
17069    /**
17070     * Returns response as text.
17071     *
17072     * Throws an "InvalidStateError" DOMException if responseType is not the empty string or "text".
17073     */
17074    readonly responseText: string;
17075    /**
17076     * Returns the response type.
17077     *
17078     * Can be set to change the response type. Values are: the empty string (default), "arraybuffer", "blob", "document", "json", and "text".
17079     *
17080     * When set: setting to "document" is ignored if current global object is not a Window object.
17081     *
17082     * When set: throws an "InvalidStateError" DOMException if state is loading or done.
17083     *
17084     * When set: throws an "InvalidAccessError" DOMException if the synchronous flag is set and current global object is a Window object.
17085     */
17086    responseType: XMLHttpRequestResponseType;
17087    readonly responseURL: string;
17088    /**
17089     * Returns the response as document.
17090     *
17091     * Throws an "InvalidStateError" DOMException if responseType is not the empty string or "document".
17092     */
17093    readonly responseXML: Document | null;
17094    readonly status: number;
17095    readonly statusText: string;
17096    /**
17097     * Can be set to a time in milliseconds. When set to a non-zero value will cause fetching to terminate after the given time has passed. When the time has passed, the request has not yet completed, and this's synchronous flag is unset, a timeout event will then be dispatched, or a "TimeoutError" DOMException will be thrown otherwise (for the send() method).
17098     *
17099     * When set: throws an "InvalidAccessError" DOMException if the synchronous flag is set and current global object is a Window object.
17100     */
17101    timeout: number;
17102    /** Returns the associated XMLHttpRequestUpload object. It can be used to gather transmission information when data is transferred to a server. */
17103    readonly upload: XMLHttpRequestUpload;
17104    /**
17105     * 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.
17106     *
17107     * When set: throws an "InvalidStateError" DOMException if state is not unsent or opened, or if the send() flag is set.
17108     */
17109    withCredentials: boolean;
17110    /** Cancels any network activity. */
17111    abort(): void;
17112    getAllResponseHeaders(): string;
17113    getResponseHeader(name: string): string | null;
17114    /**
17115     * Sets the request method, request URL, and synchronous flag.
17116     *
17117     * Throws a "SyntaxError" DOMException if either method is not a valid method or url cannot be parsed.
17118     *
17119     * Throws a "SecurityError" DOMException if method is a case-insensitive match for `CONNECT`, `TRACE`, or `TRACK`.
17120     *
17121     * 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.
17122     */
17123    open(method: string, url: string | URL): void;
17124    open(method: string, url: string | URL, async: boolean, username?: string | null, password?: string | null): void;
17125    /**
17126     * Acts as if the `Content-Type` header value for a response is mime. (It does not change the header.)
17127     *
17128     * Throws an "InvalidStateError" DOMException if state is loading or done.
17129     */
17130    overrideMimeType(mime: string): void;
17131    /**
17132     * Initiates the request. The body argument provides the request body, if any, and is ignored if the request method is GET or HEAD.
17133     *
17134     * Throws an "InvalidStateError" DOMException if either state is not opened or the send() flag is set.
17135     */
17136    send(body?: Document | XMLHttpRequestBodyInit | null): void;
17137    /**
17138     * Combines a header in author request headers.
17139     *
17140     * Throws an "InvalidStateError" DOMException if either state is not opened or the send() flag is set.
17141     *
17142     * Throws a "SyntaxError" DOMException if name is not a header name or if value is not a header value.
17143     */
17144    setRequestHeader(name: string, value: string): void;
17145    readonly DONE: number;
17146    readonly HEADERS_RECEIVED: number;
17147    readonly LOADING: number;
17148    readonly OPENED: number;
17149    readonly UNSENT: number;
17150    addEventListener<K extends keyof XMLHttpRequestEventMap>(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
17151    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
17152    removeEventListener<K extends keyof XMLHttpRequestEventMap>(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
17153    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
17154}
17155
17156declare var XMLHttpRequest: {
17157    prototype: XMLHttpRequest;
17158    new(): XMLHttpRequest;
17159    readonly DONE: number;
17160    readonly HEADERS_RECEIVED: number;
17161    readonly LOADING: number;
17162    readonly OPENED: number;
17163    readonly UNSENT: number;
17164};
17165
17166interface XMLHttpRequestEventTargetEventMap {
17167    "abort": ProgressEvent<XMLHttpRequestEventTarget>;
17168    "error": ProgressEvent<XMLHttpRequestEventTarget>;
17169    "load": ProgressEvent<XMLHttpRequestEventTarget>;
17170    "loadend": ProgressEvent<XMLHttpRequestEventTarget>;
17171    "loadstart": ProgressEvent<XMLHttpRequestEventTarget>;
17172    "progress": ProgressEvent<XMLHttpRequestEventTarget>;
17173    "timeout": ProgressEvent<XMLHttpRequestEventTarget>;
17174}
17175
17176interface XMLHttpRequestEventTarget extends EventTarget {
17177    onabort: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17178    onerror: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17179    onload: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17180    onloadend: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17181    onloadstart: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17182    onprogress: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17183    ontimeout: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;
17184    addEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestEventTarget, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
17185    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
17186    removeEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestEventTarget, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
17187    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
17188}
17189
17190declare var XMLHttpRequestEventTarget: {
17191    prototype: XMLHttpRequestEventTarget;
17192    new(): XMLHttpRequestEventTarget;
17193};
17194
17195interface XMLHttpRequestUpload extends XMLHttpRequestEventTarget {
17196    addEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestUpload, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
17197    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
17198    removeEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestUpload, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
17199    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
17200}
17201
17202declare var XMLHttpRequestUpload: {
17203    prototype: XMLHttpRequestUpload;
17204    new(): XMLHttpRequestUpload;
17205};
17206
17207/** Provides the serializeToString() method to construct an XML string representing a DOM tree. */
17208interface XMLSerializer {
17209    serializeToString(root: Node): string;
17210}
17211
17212declare var XMLSerializer: {
17213    prototype: XMLSerializer;
17214    new(): XMLSerializer;
17215};
17216
17217/** The XPathEvaluator interface allows to compile and evaluate XPath expressions. */
17218interface XPathEvaluator extends XPathEvaluatorBase {
17219}
17220
17221declare var XPathEvaluator: {
17222    prototype: XPathEvaluator;
17223    new(): XPathEvaluator;
17224};
17225
17226interface XPathEvaluatorBase {
17227    createExpression(expression: string, resolver?: XPathNSResolver | null): XPathExpression;
17228    createNSResolver(nodeResolver: Node): XPathNSResolver;
17229    evaluate(expression: string, contextNode: Node, resolver?: XPathNSResolver | null, type?: number, result?: XPathResult | null): XPathResult;
17230}
17231
17232/** This interface is a compiled XPath expression that can be evaluated on a document or specific node to return information its DOM tree. */
17233interface XPathExpression {
17234    evaluate(contextNode: Node, type?: number, result?: XPathResult | null): XPathResult;
17235}
17236
17237declare var XPathExpression: {
17238    prototype: XPathExpression;
17239    new(): XPathExpression;
17240};
17241
17242/** The results generated by evaluating an XPath expression within the context of a given node. */
17243interface XPathResult {
17244    readonly booleanValue: boolean;
17245    readonly invalidIteratorState: boolean;
17246    readonly numberValue: number;
17247    readonly resultType: number;
17248    readonly singleNodeValue: Node | null;
17249    readonly snapshotLength: number;
17250    readonly stringValue: string;
17251    iterateNext(): Node | null;
17252    snapshotItem(index: number): Node | null;
17253    readonly ANY_TYPE: number;
17254    readonly ANY_UNORDERED_NODE_TYPE: number;
17255    readonly BOOLEAN_TYPE: number;
17256    readonly FIRST_ORDERED_NODE_TYPE: number;
17257    readonly NUMBER_TYPE: number;
17258    readonly ORDERED_NODE_ITERATOR_TYPE: number;
17259    readonly ORDERED_NODE_SNAPSHOT_TYPE: number;
17260    readonly STRING_TYPE: number;
17261    readonly UNORDERED_NODE_ITERATOR_TYPE: number;
17262    readonly UNORDERED_NODE_SNAPSHOT_TYPE: number;
17263}
17264
17265declare var XPathResult: {
17266    prototype: XPathResult;
17267    new(): XPathResult;
17268    readonly ANY_TYPE: number;
17269    readonly ANY_UNORDERED_NODE_TYPE: number;
17270    readonly BOOLEAN_TYPE: number;
17271    readonly FIRST_ORDERED_NODE_TYPE: number;
17272    readonly NUMBER_TYPE: number;
17273    readonly ORDERED_NODE_ITERATOR_TYPE: number;
17274    readonly ORDERED_NODE_SNAPSHOT_TYPE: number;
17275    readonly STRING_TYPE: number;
17276    readonly UNORDERED_NODE_ITERATOR_TYPE: number;
17277    readonly UNORDERED_NODE_SNAPSHOT_TYPE: number;
17278};
17279
17280/** 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. */
17281interface XSLTProcessor {
17282    clearParameters(): void;
17283    getParameter(namespaceURI: string | null, localName: string): any;
17284    importStylesheet(style: Node): void;
17285    removeParameter(namespaceURI: string | null, localName: string): void;
17286    reset(): void;
17287    setParameter(namespaceURI: string | null, localName: string, value: any): void;
17288    transformToDocument(source: Node): Document;
17289    transformToFragment(source: Node, output: Document): DocumentFragment;
17290}
17291
17292declare var XSLTProcessor: {
17293    prototype: XSLTProcessor;
17294    new(): XSLTProcessor;
17295};
17296
17297interface Console {
17298    assert(condition?: boolean, ...data: any[]): void;
17299    clear(): void;
17300    count(label?: string): void;
17301    countReset(label?: string): void;
17302    debug(...data: any[]): void;
17303    dir(item?: any, options?: any): void;
17304    dirxml(...data: any[]): void;
17305    error(...data: any[]): void;
17306    group(...data: any[]): void;
17307    groupCollapsed(...data: any[]): void;
17308    groupEnd(): void;
17309    info(...data: any[]): void;
17310    log(...data: any[]): void;
17311    table(tabularData?: any, properties?: string[]): void;
17312    time(label?: string): void;
17313    timeEnd(label?: string): void;
17314    timeLog(label?: string, ...data: any[]): void;
17315    timeStamp(label?: string): void;
17316    trace(...data: any[]): void;
17317    warn(...data: any[]): void;
17318}
17319
17320declare var console: Console;
17321
17322/** Holds useful CSS-related methods. No object with this interface are implemented: it contains only static methods and therefore is a utilitarian interface. */
17323declare namespace CSS {
17324    function escape(ident: string): string;
17325    function supports(property: string, value: string): boolean;
17326    function supports(conditionText: string): boolean;
17327}
17328
17329declare namespace WebAssembly {
17330    interface CompileError extends Error {
17331    }
17332
17333    var CompileError: {
17334        prototype: CompileError;
17335        new(message?: string): CompileError;
17336        (message?: string): CompileError;
17337    };
17338
17339    interface Global {
17340        value: any;
17341        valueOf(): any;
17342    }
17343
17344    var Global: {
17345        prototype: Global;
17346        new(descriptor: GlobalDescriptor, v?: any): Global;
17347    };
17348
17349    interface Instance {
17350        readonly exports: Exports;
17351    }
17352
17353    var Instance: {
17354        prototype: Instance;
17355        new(module: Module, importObject?: Imports): Instance;
17356    };
17357
17358    interface LinkError extends Error {
17359    }
17360
17361    var LinkError: {
17362        prototype: LinkError;
17363        new(message?: string): LinkError;
17364        (message?: string): LinkError;
17365    };
17366
17367    interface Memory {
17368        readonly buffer: ArrayBuffer;
17369        grow(delta: number): number;
17370    }
17371
17372    var Memory: {
17373        prototype: Memory;
17374        new(descriptor: MemoryDescriptor): Memory;
17375    };
17376
17377    interface Module {
17378    }
17379
17380    var Module: {
17381        prototype: Module;
17382        new(bytes: BufferSource): Module;
17383        customSections(moduleObject: Module, sectionName: string): ArrayBuffer[];
17384        exports(moduleObject: Module): ModuleExportDescriptor[];
17385        imports(moduleObject: Module): ModuleImportDescriptor[];
17386    };
17387
17388    interface RuntimeError extends Error {
17389    }
17390
17391    var RuntimeError: {
17392        prototype: RuntimeError;
17393        new(message?: string): RuntimeError;
17394        (message?: string): RuntimeError;
17395    };
17396
17397    interface Table {
17398        readonly length: number;
17399        get(index: number): any;
17400        grow(delta: number, value?: any): number;
17401        set(index: number, value?: any): void;
17402    }
17403
17404    var Table: {
17405        prototype: Table;
17406        new(descriptor: TableDescriptor, value?: any): Table;
17407    };
17408
17409    interface GlobalDescriptor {
17410        mutable?: boolean;
17411        value: ValueType;
17412    }
17413
17414    interface MemoryDescriptor {
17415        initial: number;
17416        maximum?: number;
17417        shared?: boolean;
17418    }
17419
17420    interface ModuleExportDescriptor {
17421        kind: ImportExportKind;
17422        name: string;
17423    }
17424
17425    interface ModuleImportDescriptor {
17426        kind: ImportExportKind;
17427        module: string;
17428        name: string;
17429    }
17430
17431    interface TableDescriptor {
17432        element: TableKind;
17433        initial: number;
17434        maximum?: number;
17435    }
17436
17437    interface WebAssemblyInstantiatedSource {
17438        instance: Instance;
17439        module: Module;
17440    }
17441
17442    type ImportExportKind = "function" | "global" | "memory" | "table";
17443    type TableKind = "anyfunc" | "externref";
17444    type ValueType = "anyfunc" | "externref" | "f32" | "f64" | "i32" | "i64" | "v128";
17445    type ExportValue = Function | Global | Memory | Table;
17446    type Exports = Record<string, ExportValue>;
17447    type ImportValue = ExportValue | number;
17448    type Imports = Record<string, ModuleImports>;
17449    type ModuleImports = Record<string, ImportValue>;
17450    function compile(bytes: BufferSource): Promise<Module>;
17451    function compileStreaming(source: Response | PromiseLike<Response>): Promise<Module>;
17452    function instantiate(bytes: BufferSource, importObject?: Imports): Promise<WebAssemblyInstantiatedSource>;
17453    function instantiate(moduleObject: Module, importObject?: Imports): Promise<Instance>;
17454    function instantiateStreaming(source: Response | PromiseLike<Response>, importObject?: Imports): Promise<WebAssemblyInstantiatedSource>;
17455    function validate(bytes: BufferSource): boolean;
17456}
17457
17458interface BlobCallback {
17459    (blob: Blob | null): void;
17460}
17461
17462interface CustomElementConstructor {
17463    new (...params: any[]): HTMLElement;
17464}
17465
17466interface DecodeErrorCallback {
17467    (error: DOMException): void;
17468}
17469
17470interface DecodeSuccessCallback {
17471    (decodedData: AudioBuffer): void;
17472}
17473
17474interface ErrorCallback {
17475    (err: DOMException): void;
17476}
17477
17478interface FileCallback {
17479    (file: File): void;
17480}
17481
17482interface FileSystemEntriesCallback {
17483    (entries: FileSystemEntry[]): void;
17484}
17485
17486interface FileSystemEntryCallback {
17487    (entry: FileSystemEntry): void;
17488}
17489
17490interface FrameRequestCallback {
17491    (time: DOMHighResTimeStamp): void;
17492}
17493
17494interface FunctionStringCallback {
17495    (data: string): void;
17496}
17497
17498interface IdleRequestCallback {
17499    (deadline: IdleDeadline): void;
17500}
17501
17502interface IntersectionObserverCallback {
17503    (entries: IntersectionObserverEntry[], observer: IntersectionObserver): void;
17504}
17505
17506interface LockGrantedCallback {
17507    (lock: Lock | null): any;
17508}
17509
17510interface MediaSessionActionHandler {
17511    (details: MediaSessionActionDetails): void;
17512}
17513
17514interface MutationCallback {
17515    (mutations: MutationRecord[], observer: MutationObserver): void;
17516}
17517
17518interface NotificationPermissionCallback {
17519    (permission: NotificationPermission): void;
17520}
17521
17522interface OnBeforeUnloadEventHandlerNonNull {
17523    (event: Event): string | null;
17524}
17525
17526interface OnErrorEventHandlerNonNull {
17527    (event: Event | string, source?: string, lineno?: number, colno?: number, error?: Error): any;
17528}
17529
17530interface PerformanceObserverCallback {
17531    (entries: PerformanceObserverEntryList, observer: PerformanceObserver): void;
17532}
17533
17534interface PositionCallback {
17535    (position: GeolocationPosition): void;
17536}
17537
17538interface PositionErrorCallback {
17539    (positionError: GeolocationPositionError): void;
17540}
17541
17542interface QueuingStrategySize<T = any> {
17543    (chunk: T): number;
17544}
17545
17546interface RTCPeerConnectionErrorCallback {
17547    (error: DOMException): void;
17548}
17549
17550interface RTCSessionDescriptionCallback {
17551    (description: RTCSessionDescriptionInit): void;
17552}
17553
17554interface RemotePlaybackAvailabilityCallback {
17555    (available: boolean): void;
17556}
17557
17558interface ResizeObserverCallback {
17559    (entries: ResizeObserverEntry[], observer: ResizeObserver): void;
17560}
17561
17562interface TransformerFlushCallback<O> {
17563    (controller: TransformStreamDefaultController<O>): void | PromiseLike<void>;
17564}
17565
17566interface TransformerStartCallback<O> {
17567    (controller: TransformStreamDefaultController<O>): any;
17568}
17569
17570interface TransformerTransformCallback<I, O> {
17571    (chunk: I, controller: TransformStreamDefaultController<O>): void | PromiseLike<void>;
17572}
17573
17574interface UnderlyingSinkAbortCallback {
17575    (reason?: any): void | PromiseLike<void>;
17576}
17577
17578interface UnderlyingSinkCloseCallback {
17579    (): void | PromiseLike<void>;
17580}
17581
17582interface UnderlyingSinkStartCallback {
17583    (controller: WritableStreamDefaultController): any;
17584}
17585
17586interface UnderlyingSinkWriteCallback<W> {
17587    (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike<void>;
17588}
17589
17590interface UnderlyingSourceCancelCallback {
17591    (reason?: any): void | PromiseLike<void>;
17592}
17593
17594interface UnderlyingSourcePullCallback<R> {
17595    (controller: ReadableStreamController<R>): void | PromiseLike<void>;
17596}
17597
17598interface UnderlyingSourceStartCallback<R> {
17599    (controller: ReadableStreamController<R>): any;
17600}
17601
17602interface VideoFrameRequestCallback {
17603    (now: DOMHighResTimeStamp, metadata: VideoFrameCallbackMetadata): void;
17604}
17605
17606interface VoidFunction {
17607    (): void;
17608}
17609
17610interface HTMLElementTagNameMap {
17611    "a": HTMLAnchorElement;
17612    "abbr": HTMLElement;
17613    "address": HTMLElement;
17614    "area": HTMLAreaElement;
17615    "article": HTMLElement;
17616    "aside": HTMLElement;
17617    "audio": HTMLAudioElement;
17618    "b": HTMLElement;
17619    "base": HTMLBaseElement;
17620    "bdi": HTMLElement;
17621    "bdo": HTMLElement;
17622    "blockquote": HTMLQuoteElement;
17623    "body": HTMLBodyElement;
17624    "br": HTMLBRElement;
17625    "button": HTMLButtonElement;
17626    "canvas": HTMLCanvasElement;
17627    "caption": HTMLTableCaptionElement;
17628    "cite": HTMLElement;
17629    "code": HTMLElement;
17630    "col": HTMLTableColElement;
17631    "colgroup": HTMLTableColElement;
17632    "data": HTMLDataElement;
17633    "datalist": HTMLDataListElement;
17634    "dd": HTMLElement;
17635    "del": HTMLModElement;
17636    "details": HTMLDetailsElement;
17637    "dfn": HTMLElement;
17638    "dialog": HTMLDialogElement;
17639    "div": HTMLDivElement;
17640    "dl": HTMLDListElement;
17641    "dt": HTMLElement;
17642    "em": HTMLElement;
17643    "embed": HTMLEmbedElement;
17644    "fieldset": HTMLFieldSetElement;
17645    "figcaption": HTMLElement;
17646    "figure": HTMLElement;
17647    "footer": HTMLElement;
17648    "form": HTMLFormElement;
17649    "h1": HTMLHeadingElement;
17650    "h2": HTMLHeadingElement;
17651    "h3": HTMLHeadingElement;
17652    "h4": HTMLHeadingElement;
17653    "h5": HTMLHeadingElement;
17654    "h6": HTMLHeadingElement;
17655    "head": HTMLHeadElement;
17656    "header": HTMLElement;
17657    "hgroup": HTMLElement;
17658    "hr": HTMLHRElement;
17659    "html": HTMLHtmlElement;
17660    "i": HTMLElement;
17661    "iframe": HTMLIFrameElement;
17662    "img": HTMLImageElement;
17663    "input": HTMLInputElement;
17664    "ins": HTMLModElement;
17665    "kbd": HTMLElement;
17666    "label": HTMLLabelElement;
17667    "legend": HTMLLegendElement;
17668    "li": HTMLLIElement;
17669    "link": HTMLLinkElement;
17670    "main": HTMLElement;
17671    "map": HTMLMapElement;
17672    "mark": HTMLElement;
17673    "menu": HTMLMenuElement;
17674    "meta": HTMLMetaElement;
17675    "meter": HTMLMeterElement;
17676    "nav": HTMLElement;
17677    "noscript": HTMLElement;
17678    "object": HTMLObjectElement;
17679    "ol": HTMLOListElement;
17680    "optgroup": HTMLOptGroupElement;
17681    "option": HTMLOptionElement;
17682    "output": HTMLOutputElement;
17683    "p": HTMLParagraphElement;
17684    "picture": HTMLPictureElement;
17685    "pre": HTMLPreElement;
17686    "progress": HTMLProgressElement;
17687    "q": HTMLQuoteElement;
17688    "rp": HTMLElement;
17689    "rt": HTMLElement;
17690    "ruby": HTMLElement;
17691    "s": HTMLElement;
17692    "samp": HTMLElement;
17693    "script": HTMLScriptElement;
17694    "section": HTMLElement;
17695    "select": HTMLSelectElement;
17696    "slot": HTMLSlotElement;
17697    "small": HTMLElement;
17698    "source": HTMLSourceElement;
17699    "span": HTMLSpanElement;
17700    "strong": HTMLElement;
17701    "style": HTMLStyleElement;
17702    "sub": HTMLElement;
17703    "summary": HTMLElement;
17704    "sup": HTMLElement;
17705    "table": HTMLTableElement;
17706    "tbody": HTMLTableSectionElement;
17707    "td": HTMLTableCellElement;
17708    "template": HTMLTemplateElement;
17709    "textarea": HTMLTextAreaElement;
17710    "tfoot": HTMLTableSectionElement;
17711    "th": HTMLTableCellElement;
17712    "thead": HTMLTableSectionElement;
17713    "time": HTMLTimeElement;
17714    "title": HTMLTitleElement;
17715    "tr": HTMLTableRowElement;
17716    "track": HTMLTrackElement;
17717    "u": HTMLElement;
17718    "ul": HTMLUListElement;
17719    "var": HTMLElement;
17720    "video": HTMLVideoElement;
17721    "wbr": HTMLElement;
17722}
17723
17724interface HTMLElementDeprecatedTagNameMap {
17725    "acronym": HTMLElement;
17726    "applet": HTMLUnknownElement;
17727    "basefont": HTMLElement;
17728    "bgsound": HTMLUnknownElement;
17729    "big": HTMLElement;
17730    "blink": HTMLUnknownElement;
17731    "center": HTMLElement;
17732    "dir": HTMLDirectoryElement;
17733    "font": HTMLFontElement;
17734    "frame": HTMLFrameElement;
17735    "frameset": HTMLFrameSetElement;
17736    "isindex": HTMLUnknownElement;
17737    "keygen": HTMLUnknownElement;
17738    "listing": HTMLPreElement;
17739    "marquee": HTMLMarqueeElement;
17740    "menuitem": HTMLElement;
17741    "multicol": HTMLUnknownElement;
17742    "nextid": HTMLUnknownElement;
17743    "nobr": HTMLElement;
17744    "noembed": HTMLElement;
17745    "noframes": HTMLElement;
17746    "param": HTMLParamElement;
17747    "plaintext": HTMLElement;
17748    "rb": HTMLElement;
17749    "rtc": HTMLElement;
17750    "spacer": HTMLUnknownElement;
17751    "strike": HTMLElement;
17752    "tt": HTMLElement;
17753    "xmp": HTMLPreElement;
17754}
17755
17756interface SVGElementTagNameMap {
17757    "a": SVGAElement;
17758    "animate": SVGAnimateElement;
17759    "animateMotion": SVGAnimateMotionElement;
17760    "animateTransform": SVGAnimateTransformElement;
17761    "circle": SVGCircleElement;
17762    "clipPath": SVGClipPathElement;
17763    "defs": SVGDefsElement;
17764    "desc": SVGDescElement;
17765    "ellipse": SVGEllipseElement;
17766    "feBlend": SVGFEBlendElement;
17767    "feColorMatrix": SVGFEColorMatrixElement;
17768    "feComponentTransfer": SVGFEComponentTransferElement;
17769    "feComposite": SVGFECompositeElement;
17770    "feConvolveMatrix": SVGFEConvolveMatrixElement;
17771    "feDiffuseLighting": SVGFEDiffuseLightingElement;
17772    "feDisplacementMap": SVGFEDisplacementMapElement;
17773    "feDistantLight": SVGFEDistantLightElement;
17774    "feDropShadow": SVGFEDropShadowElement;
17775    "feFlood": SVGFEFloodElement;
17776    "feFuncA": SVGFEFuncAElement;
17777    "feFuncB": SVGFEFuncBElement;
17778    "feFuncG": SVGFEFuncGElement;
17779    "feFuncR": SVGFEFuncRElement;
17780    "feGaussianBlur": SVGFEGaussianBlurElement;
17781    "feImage": SVGFEImageElement;
17782    "feMerge": SVGFEMergeElement;
17783    "feMergeNode": SVGFEMergeNodeElement;
17784    "feMorphology": SVGFEMorphologyElement;
17785    "feOffset": SVGFEOffsetElement;
17786    "fePointLight": SVGFEPointLightElement;
17787    "feSpecularLighting": SVGFESpecularLightingElement;
17788    "feSpotLight": SVGFESpotLightElement;
17789    "feTile": SVGFETileElement;
17790    "feTurbulence": SVGFETurbulenceElement;
17791    "filter": SVGFilterElement;
17792    "foreignObject": SVGForeignObjectElement;
17793    "g": SVGGElement;
17794    "image": SVGImageElement;
17795    "line": SVGLineElement;
17796    "linearGradient": SVGLinearGradientElement;
17797    "marker": SVGMarkerElement;
17798    "mask": SVGMaskElement;
17799    "metadata": SVGMetadataElement;
17800    "mpath": SVGMPathElement;
17801    "path": SVGPathElement;
17802    "pattern": SVGPatternElement;
17803    "polygon": SVGPolygonElement;
17804    "polyline": SVGPolylineElement;
17805    "radialGradient": SVGRadialGradientElement;
17806    "rect": SVGRectElement;
17807    "script": SVGScriptElement;
17808    "set": SVGSetElement;
17809    "stop": SVGStopElement;
17810    "style": SVGStyleElement;
17811    "svg": SVGSVGElement;
17812    "switch": SVGSwitchElement;
17813    "symbol": SVGSymbolElement;
17814    "text": SVGTextElement;
17815    "textPath": SVGTextPathElement;
17816    "title": SVGTitleElement;
17817    "tspan": SVGTSpanElement;
17818    "use": SVGUseElement;
17819    "view": SVGViewElement;
17820}
17821
17822/** @deprecated Directly use HTMLElementTagNameMap or SVGElementTagNameMap as appropriate, instead. */
17823type ElementTagNameMap = HTMLElementTagNameMap & Pick<SVGElementTagNameMap, Exclude<keyof SVGElementTagNameMap, keyof HTMLElementTagNameMap>>;
17824
17825declare var Audio: {
17826    new(src?: string): HTMLAudioElement;
17827};
17828declare var Image: {
17829    new(width?: number, height?: number): HTMLImageElement;
17830};
17831declare var Option: {
17832    new(text?: string, value?: string, defaultSelected?: boolean, selected?: boolean): HTMLOptionElement;
17833};
17834/** @deprecated This is a legacy alias of `navigator`. */
17835declare var clientInformation: Navigator;
17836/** Returns true if the window has been closed, false otherwise. */
17837declare var closed: boolean;
17838/** Defines a new custom element, mapping the given name to the given constructor as an autonomous custom element. */
17839declare var customElements: CustomElementRegistry;
17840declare var devicePixelRatio: number;
17841declare var document: Document;
17842/** @deprecated */
17843declare var event: Event | undefined;
17844/** @deprecated */
17845declare var external: External;
17846declare var frameElement: Element | null;
17847declare var frames: WindowProxy;
17848declare var history: History;
17849declare var innerHeight: number;
17850declare var innerWidth: number;
17851declare var length: number;
17852declare var location: Location;
17853/** Returns true if the location bar is visible; otherwise, returns false. */
17854declare var locationbar: BarProp;
17855/** Returns true if the menu bar is visible; otherwise, returns false. */
17856declare var menubar: BarProp;
17857/** @deprecated */
17858declare const name: void;
17859declare var navigator: Navigator;
17860/** Available only in secure contexts. */
17861declare var ondevicemotion: ((this: Window, ev: DeviceMotionEvent) => any) | null;
17862/** Available only in secure contexts. */
17863declare var ondeviceorientation: ((this: Window, ev: DeviceOrientationEvent) => any) | null;
17864/** @deprecated */
17865declare var onorientationchange: ((this: Window, ev: Event) => any) | null;
17866declare var opener: any;
17867/** @deprecated */
17868declare var orientation: number;
17869declare var outerHeight: number;
17870declare var outerWidth: number;
17871/** @deprecated This is a legacy alias of `scrollX`. */
17872declare var pageXOffset: number;
17873/** @deprecated This is a legacy alias of `scrollY`. */
17874declare var pageYOffset: number;
17875/**
17876 * Refers to either the parent WindowProxy, or itself.
17877 *
17878 * It can rarely be null e.g. for contentWindow of an iframe that is already removed from the parent.
17879 */
17880declare var parent: WindowProxy;
17881/** Returns true if the personal bar is visible; otherwise, returns false. */
17882declare var personalbar: BarProp;
17883declare var screen: Screen;
17884declare var screenLeft: number;
17885declare var screenTop: number;
17886declare var screenX: number;
17887declare var screenY: number;
17888declare var scrollX: number;
17889declare var scrollY: number;
17890/** Returns true if the scrollbars are visible; otherwise, returns false. */
17891declare var scrollbars: BarProp;
17892declare var self: Window & typeof globalThis;
17893declare var speechSynthesis: SpeechSynthesis;
17894/** @deprecated */
17895declare var status: string;
17896/** Returns true if the status bar is visible; otherwise, returns false. */
17897declare var statusbar: BarProp;
17898/** Returns true if the toolbar is visible; otherwise, returns false. */
17899declare var toolbar: BarProp;
17900declare var top: WindowProxy | null;
17901declare var visualViewport: VisualViewport | null;
17902declare var window: Window & typeof globalThis;
17903declare function alert(message?: any): void;
17904declare function blur(): void;
17905declare function cancelIdleCallback(handle: number): void;
17906/** @deprecated */
17907declare function captureEvents(): void;
17908/** Closes the window. */
17909declare function close(): void;
17910declare function confirm(message?: string): boolean;
17911/** Moves the focus to the window's browsing context, if any. */
17912declare function focus(): void;
17913declare function getComputedStyle(elt: Element, pseudoElt?: string | null): CSSStyleDeclaration;
17914declare function getSelection(): Selection | null;
17915declare function matchMedia(query: string): MediaQueryList;
17916declare function moveBy(x: number, y: number): void;
17917declare function moveTo(x: number, y: number): void;
17918declare function open(url?: string | URL, target?: string, features?: string): WindowProxy | null;
17919/**
17920 * Posts a message to the given window. Messages can be structured objects, e.g. nested objects and arrays, can contain JavaScript values (strings, numbers, Date objects, etc), and can contain certain data objects such as File Blob, FileList, and ArrayBuffer objects.
17921 *
17922 * Objects listed in the transfer member of options are transferred, not just cloned, meaning that they are no longer usable on the sending side.
17923 *
17924 * A target origin can be specified using the targetOrigin member of options. If not provided, it defaults to "/". This default restricts the message to same-origin targets only.
17925 *
17926 * If the origin of the target window doesn't match the given target origin, the message is discarded, to avoid information leakage. To send the message to the target regardless of origin, set the target origin to "*".
17927 *
17928 * Throws a "DataCloneError" DOMException if transfer array contains duplicate objects or if message could not be cloned.
17929 */
17930declare function postMessage(message: any, targetOrigin: string, transfer?: Transferable[]): void;
17931declare function postMessage(message: any, options?: WindowPostMessageOptions): void;
17932declare function print(): void;
17933declare function prompt(message?: string, _default?: string): string | null;
17934/** @deprecated */
17935declare function releaseEvents(): void;
17936declare function requestIdleCallback(callback: IdleRequestCallback, options?: IdleRequestOptions): number;
17937declare function resizeBy(x: number, y: number): void;
17938declare function resizeTo(width: number, height: number): void;
17939declare function scroll(options?: ScrollToOptions): void;
17940declare function scroll(x: number, y: number): void;
17941declare function scrollBy(options?: ScrollToOptions): void;
17942declare function scrollBy(x: number, y: number): void;
17943declare function scrollTo(options?: ScrollToOptions): void;
17944declare function scrollTo(x: number, y: number): void;
17945/** Cancels the document load. */
17946declare function stop(): void;
17947declare function toString(): string;
17948/** 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. */
17949declare function dispatchEvent(event: Event): boolean;
17950declare function cancelAnimationFrame(handle: number): void;
17951declare function requestAnimationFrame(callback: FrameRequestCallback): number;
17952/**
17953 * Fires when the user aborts the download.
17954 * @param ev The event.
17955 */
17956declare var onabort: ((this: Window, ev: UIEvent) => any) | null;
17957declare var onanimationcancel: ((this: Window, ev: AnimationEvent) => any) | null;
17958declare var onanimationend: ((this: Window, ev: AnimationEvent) => any) | null;
17959declare var onanimationiteration: ((this: Window, ev: AnimationEvent) => any) | null;
17960declare var onanimationstart: ((this: Window, ev: AnimationEvent) => any) | null;
17961declare var onauxclick: ((this: Window, ev: MouseEvent) => any) | null;
17962declare var onbeforeinput: ((this: Window, ev: InputEvent) => any) | null;
17963/**
17964 * Fires when the object loses the input focus.
17965 * @param ev The focus event.
17966 */
17967declare var onblur: ((this: Window, ev: FocusEvent) => any) | null;
17968declare var oncancel: ((this: Window, ev: Event) => any) | null;
17969/**
17970 * Occurs when playback is possible, but would require further buffering.
17971 * @param ev The event.
17972 */
17973declare var oncanplay: ((this: Window, ev: Event) => any) | null;
17974declare var oncanplaythrough: ((this: Window, ev: Event) => any) | null;
17975/**
17976 * Fires when the contents of the object or selection have changed.
17977 * @param ev The event.
17978 */
17979declare var onchange: ((this: Window, ev: Event) => any) | null;
17980/**
17981 * Fires when the user clicks the left mouse button on the object
17982 * @param ev The mouse event.
17983 */
17984declare var onclick: ((this: Window, ev: MouseEvent) => any) | null;
17985declare var onclose: ((this: Window, ev: Event) => any) | null;
17986/**
17987 * Fires when the user clicks the right mouse button in the client area, opening the context menu.
17988 * @param ev The mouse event.
17989 */
17990declare var oncontextmenu: ((this: Window, ev: MouseEvent) => any) | null;
17991declare var oncuechange: ((this: Window, ev: Event) => any) | null;
17992/**
17993 * Fires when the user double-clicks the object.
17994 * @param ev The mouse event.
17995 */
17996declare var ondblclick: ((this: Window, ev: MouseEvent) => any) | null;
17997/**
17998 * Fires on the source object continuously during a drag operation.
17999 * @param ev The event.
18000 */
18001declare var ondrag: ((this: Window, ev: DragEvent) => any) | null;
18002/**
18003 * Fires on the source object when the user releases the mouse at the close of a drag operation.
18004 * @param ev The event.
18005 */
18006declare var ondragend: ((this: Window, ev: DragEvent) => any) | null;
18007/**
18008 * Fires on the target element when the user drags the object to a valid drop target.
18009 * @param ev The drag event.
18010 */
18011declare var ondragenter: ((this: Window, ev: DragEvent) => any) | null;
18012/**
18013 * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation.
18014 * @param ev The drag event.
18015 */
18016declare var ondragleave: ((this: Window, ev: DragEvent) => any) | null;
18017/**
18018 * Fires on the target element continuously while the user drags the object over a valid drop target.
18019 * @param ev The event.
18020 */
18021declare var ondragover: ((this: Window, ev: DragEvent) => any) | null;
18022/**
18023 * Fires on the source object when the user starts to drag a text selection or selected object.
18024 * @param ev The event.
18025 */
18026declare var ondragstart: ((this: Window, ev: DragEvent) => any) | null;
18027declare var ondrop: ((this: Window, ev: DragEvent) => any) | null;
18028/**
18029 * Occurs when the duration attribute is updated.
18030 * @param ev The event.
18031 */
18032declare var ondurationchange: ((this: Window, ev: Event) => any) | null;
18033/**
18034 * Occurs when the media element is reset to its initial state.
18035 * @param ev The event.
18036 */
18037declare var onemptied: ((this: Window, ev: Event) => any) | null;
18038/**
18039 * Occurs when the end of playback is reached.
18040 * @param ev The event
18041 */
18042declare var onended: ((this: Window, ev: Event) => any) | null;
18043/**
18044 * Fires when an error occurs during object loading.
18045 * @param ev The event.
18046 */
18047declare var onerror: OnErrorEventHandler;
18048/**
18049 * Fires when the object receives focus.
18050 * @param ev The event.
18051 */
18052declare var onfocus: ((this: Window, ev: FocusEvent) => any) | null;
18053declare var onformdata: ((this: Window, ev: FormDataEvent) => any) | null;
18054declare var ongotpointercapture: ((this: Window, ev: PointerEvent) => any) | null;
18055declare var oninput: ((this: Window, ev: Event) => any) | null;
18056declare var oninvalid: ((this: Window, ev: Event) => any) | null;
18057/**
18058 * Fires when the user presses a key.
18059 * @param ev The keyboard event
18060 */
18061declare var onkeydown: ((this: Window, ev: KeyboardEvent) => any) | null;
18062/**
18063 * Fires when the user presses an alphanumeric key.
18064 * @param ev The event.
18065 * @deprecated
18066 */
18067declare var onkeypress: ((this: Window, ev: KeyboardEvent) => any) | null;
18068/**
18069 * Fires when the user releases a key.
18070 * @param ev The keyboard event
18071 */
18072declare var onkeyup: ((this: Window, ev: KeyboardEvent) => any) | null;
18073/**
18074 * Fires immediately after the browser loads the object.
18075 * @param ev The event.
18076 */
18077declare var onload: ((this: Window, ev: Event) => any) | null;
18078/**
18079 * Occurs when media data is loaded at the current playback position.
18080 * @param ev The event.
18081 */
18082declare var onloadeddata: ((this: Window, ev: Event) => any) | null;
18083/**
18084 * Occurs when the duration and dimensions of the media have been determined.
18085 * @param ev The event.
18086 */
18087declare var onloadedmetadata: ((this: Window, ev: Event) => any) | null;
18088/**
18089 * Occurs when Internet Explorer begins looking for media data.
18090 * @param ev The event.
18091 */
18092declare var onloadstart: ((this: Window, ev: Event) => any) | null;
18093declare var onlostpointercapture: ((this: Window, ev: PointerEvent) => any) | null;
18094/**
18095 * Fires when the user clicks the object with either mouse button.
18096 * @param ev The mouse event.
18097 */
18098declare var onmousedown: ((this: Window, ev: MouseEvent) => any) | null;
18099declare var onmouseenter: ((this: Window, ev: MouseEvent) => any) | null;
18100declare var onmouseleave: ((this: Window, ev: MouseEvent) => any) | null;
18101/**
18102 * Fires when the user moves the mouse over the object.
18103 * @param ev The mouse event.
18104 */
18105declare var onmousemove: ((this: Window, ev: MouseEvent) => any) | null;
18106/**
18107 * Fires when the user moves the mouse pointer outside the boundaries of the object.
18108 * @param ev The mouse event.
18109 */
18110declare var onmouseout: ((this: Window, ev: MouseEvent) => any) | null;
18111/**
18112 * Fires when the user moves the mouse pointer into the object.
18113 * @param ev The mouse event.
18114 */
18115declare var onmouseover: ((this: Window, ev: MouseEvent) => any) | null;
18116/**
18117 * Fires when the user releases a mouse button while the mouse is over the object.
18118 * @param ev The mouse event.
18119 */
18120declare var onmouseup: ((this: Window, ev: MouseEvent) => any) | null;
18121/**
18122 * Occurs when playback is paused.
18123 * @param ev The event.
18124 */
18125declare var onpause: ((this: Window, ev: Event) => any) | null;
18126/**
18127 * Occurs when the play method is requested.
18128 * @param ev The event.
18129 */
18130declare var onplay: ((this: Window, ev: Event) => any) | null;
18131/**
18132 * Occurs when the audio or video has started playing.
18133 * @param ev The event.
18134 */
18135declare var onplaying: ((this: Window, ev: Event) => any) | null;
18136declare var onpointercancel: ((this: Window, ev: PointerEvent) => any) | null;
18137declare var onpointerdown: ((this: Window, ev: PointerEvent) => any) | null;
18138declare var onpointerenter: ((this: Window, ev: PointerEvent) => any) | null;
18139declare var onpointerleave: ((this: Window, ev: PointerEvent) => any) | null;
18140declare var onpointermove: ((this: Window, ev: PointerEvent) => any) | null;
18141declare var onpointerout: ((this: Window, ev: PointerEvent) => any) | null;
18142declare var onpointerover: ((this: Window, ev: PointerEvent) => any) | null;
18143declare var onpointerup: ((this: Window, ev: PointerEvent) => any) | null;
18144/**
18145 * Occurs to indicate progress while downloading media data.
18146 * @param ev The event.
18147 */
18148declare var onprogress: ((this: Window, ev: ProgressEvent) => any) | null;
18149/**
18150 * Occurs when the playback rate is increased or decreased.
18151 * @param ev The event.
18152 */
18153declare var onratechange: ((this: Window, ev: Event) => any) | null;
18154/**
18155 * Fires when the user resets a form.
18156 * @param ev The event.
18157 */
18158declare var onreset: ((this: Window, ev: Event) => any) | null;
18159declare var onresize: ((this: Window, ev: UIEvent) => any) | null;
18160/**
18161 * Fires when the user repositions the scroll box in the scroll bar on the object.
18162 * @param ev The event.
18163 */
18164declare var onscroll: ((this: Window, ev: Event) => any) | null;
18165declare var onsecuritypolicyviolation: ((this: Window, ev: SecurityPolicyViolationEvent) => any) | null;
18166/**
18167 * Occurs when the seek operation ends.
18168 * @param ev The event.
18169 */
18170declare var onseeked: ((this: Window, ev: Event) => any) | null;
18171/**
18172 * Occurs when the current playback position is moved.
18173 * @param ev The event.
18174 */
18175declare var onseeking: ((this: Window, ev: Event) => any) | null;
18176/**
18177 * Fires when the current selection changes.
18178 * @param ev The event.
18179 */
18180declare var onselect: ((this: Window, ev: Event) => any) | null;
18181declare var onselectionchange: ((this: Window, ev: Event) => any) | null;
18182declare var onselectstart: ((this: Window, ev: Event) => any) | null;
18183declare var onslotchange: ((this: Window, ev: Event) => any) | null;
18184/**
18185 * Occurs when the download has stopped.
18186 * @param ev The event.
18187 */
18188declare var onstalled: ((this: Window, ev: Event) => any) | null;
18189declare var onsubmit: ((this: Window, ev: SubmitEvent) => any) | null;
18190/**
18191 * Occurs if the load operation has been intentionally halted.
18192 * @param ev The event.
18193 */
18194declare var onsuspend: ((this: Window, ev: Event) => any) | null;
18195/**
18196 * Occurs to indicate the current playback position.
18197 * @param ev The event.
18198 */
18199declare var ontimeupdate: ((this: Window, ev: Event) => any) | null;
18200declare var ontoggle: ((this: Window, ev: Event) => any) | null;
18201declare var ontouchcancel: ((this: Window, ev: TouchEvent) => any) | null | undefined;
18202declare var ontouchend: ((this: Window, ev: TouchEvent) => any) | null | undefined;
18203declare var ontouchmove: ((this: Window, ev: TouchEvent) => any) | null | undefined;
18204declare var ontouchstart: ((this: Window, ev: TouchEvent) => any) | null | undefined;
18205declare var ontransitioncancel: ((this: Window, ev: TransitionEvent) => any) | null;
18206declare var ontransitionend: ((this: Window, ev: TransitionEvent) => any) | null;
18207declare var ontransitionrun: ((this: Window, ev: TransitionEvent) => any) | null;
18208declare var ontransitionstart: ((this: Window, ev: TransitionEvent) => any) | null;
18209/**
18210 * Occurs when the volume is changed, or playback is muted or unmuted.
18211 * @param ev The event.
18212 */
18213declare var onvolumechange: ((this: Window, ev: Event) => any) | null;
18214/**
18215 * Occurs when playback stops because the next frame of a video resource is not available.
18216 * @param ev The event.
18217 */
18218declare var onwaiting: ((this: Window, ev: Event) => any) | null;
18219/** @deprecated This is a legacy alias of `onanimationend`. */
18220declare var onwebkitanimationend: ((this: Window, ev: Event) => any) | null;
18221/** @deprecated This is a legacy alias of `onanimationiteration`. */
18222declare var onwebkitanimationiteration: ((this: Window, ev: Event) => any) | null;
18223/** @deprecated This is a legacy alias of `onanimationstart`. */
18224declare var onwebkitanimationstart: ((this: Window, ev: Event) => any) | null;
18225/** @deprecated This is a legacy alias of `ontransitionend`. */
18226declare var onwebkittransitionend: ((this: Window, ev: Event) => any) | null;
18227declare var onwheel: ((this: Window, ev: WheelEvent) => any) | null;
18228declare var onafterprint: ((this: Window, ev: Event) => any) | null;
18229declare var onbeforeprint: ((this: Window, ev: Event) => any) | null;
18230declare var onbeforeunload: ((this: Window, ev: BeforeUnloadEvent) => any) | null;
18231declare var ongamepadconnected: ((this: Window, ev: GamepadEvent) => any) | null;
18232declare var ongamepaddisconnected: ((this: Window, ev: GamepadEvent) => any) | null;
18233declare var onhashchange: ((this: Window, ev: HashChangeEvent) => any) | null;
18234declare var onlanguagechange: ((this: Window, ev: Event) => any) | null;
18235declare var onmessage: ((this: Window, ev: MessageEvent) => any) | null;
18236declare var onmessageerror: ((this: Window, ev: MessageEvent) => any) | null;
18237declare var onoffline: ((this: Window, ev: Event) => any) | null;
18238declare var ononline: ((this: Window, ev: Event) => any) | null;
18239declare var onpagehide: ((this: Window, ev: PageTransitionEvent) => any) | null;
18240declare var onpageshow: ((this: Window, ev: PageTransitionEvent) => any) | null;
18241declare var onpopstate: ((this: Window, ev: PopStateEvent) => any) | null;
18242declare var onrejectionhandled: ((this: Window, ev: PromiseRejectionEvent) => any) | null;
18243declare var onstorage: ((this: Window, ev: StorageEvent) => any) | null;
18244declare var onunhandledrejection: ((this: Window, ev: PromiseRejectionEvent) => any) | null;
18245declare var onunload: ((this: Window, ev: Event) => any) | null;
18246declare var localStorage: Storage;
18247/** Available only in secure contexts. */
18248declare var caches: CacheStorage;
18249declare var crossOriginIsolated: boolean;
18250declare var crypto: Crypto;
18251declare var indexedDB: IDBFactory;
18252declare var isSecureContext: boolean;
18253declare var origin: string;
18254declare var performance: Performance;
18255declare function atob(data: string): string;
18256declare function btoa(data: string): string;
18257declare function clearInterval(id: number | undefined): void;
18258declare function clearTimeout(id: number | undefined): void;
18259declare function createImageBitmap(image: ImageBitmapSource, options?: ImageBitmapOptions): Promise<ImageBitmap>;
18260declare function createImageBitmap(image: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number, options?: ImageBitmapOptions): Promise<ImageBitmap>;
18261declare function fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
18262declare function queueMicrotask(callback: VoidFunction): void;
18263declare function reportError(e: any): void;
18264declare function setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
18265declare function setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
18266declare function structuredClone(value: any, options?: StructuredSerializeOptions): any;
18267declare var sessionStorage: Storage;
18268declare function addEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
18269declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
18270declare function removeEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
18271declare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
18272type AlgorithmIdentifier = Algorithm | string;
18273type BigInteger = Uint8Array;
18274type BinaryData = ArrayBuffer | ArrayBufferView;
18275type BlobPart = BufferSource | Blob | string;
18276type BodyInit = ReadableStream | XMLHttpRequestBodyInit;
18277type BufferSource = ArrayBufferView | ArrayBuffer;
18278type COSEAlgorithmIdentifier = number;
18279type CSSNumberish = number;
18280type CanvasImageSource = HTMLOrSVGImageElement | HTMLVideoElement | HTMLCanvasElement | ImageBitmap | OffscreenCanvas;
18281type ClipboardItemData = Promise<string | Blob>;
18282type ClipboardItems = ClipboardItem[];
18283type ConstrainBoolean = boolean | ConstrainBooleanParameters;
18284type ConstrainDOMString = string | string[] | ConstrainDOMStringParameters;
18285type ConstrainDouble = number | ConstrainDoubleRange;
18286type ConstrainULong = number | ConstrainULongRange;
18287type DOMHighResTimeStamp = number;
18288type EpochTimeStamp = number;
18289type EventListenerOrEventListenerObject = EventListener | EventListenerObject;
18290type Float32List = Float32Array | GLfloat[];
18291type FormDataEntryValue = File | string;
18292type GLbitfield = number;
18293type GLboolean = boolean;
18294type GLclampf = number;
18295type GLenum = number;
18296type GLfloat = number;
18297type GLint = number;
18298type GLint64 = number;
18299type GLintptr = number;
18300type GLsizei = number;
18301type GLsizeiptr = number;
18302type GLuint = number;
18303type GLuint64 = number;
18304type HTMLOrSVGImageElement = HTMLImageElement | SVGImageElement;
18305type HTMLOrSVGScriptElement = HTMLScriptElement | SVGScriptElement;
18306type HashAlgorithmIdentifier = AlgorithmIdentifier;
18307type HeadersInit = [string, string][] | Record<string, string> | Headers;
18308type IDBValidKey = number | string | Date | BufferSource | IDBValidKey[];
18309type ImageBitmapSource = CanvasImageSource | Blob | ImageData;
18310type InsertPosition = "beforebegin" | "afterbegin" | "beforeend" | "afterend";
18311type Int32List = Int32Array | GLint[];
18312type LineAndPositionSetting = number | AutoKeyword;
18313type MediaProvider = MediaStream | MediaSource | Blob;
18314type MessageEventSource = WindowProxy | MessagePort | ServiceWorker;
18315type MutationRecordType = "attributes" | "characterData" | "childList";
18316type NamedCurve = string;
18317type OffscreenRenderingContext = OffscreenCanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext;
18318type OnBeforeUnloadEventHandler = OnBeforeUnloadEventHandlerNonNull | null;
18319type OnErrorEventHandler = OnErrorEventHandlerNonNull | null;
18320type PerformanceEntryList = PerformanceEntry[];
18321type ReadableStreamController<T> = ReadableStreamDefaultController<T> | ReadableByteStreamController;
18322type ReadableStreamReadResult<T> = ReadableStreamReadValueResult<T> | ReadableStreamReadDoneResult<T>;
18323type ReadableStreamReader<T> = ReadableStreamDefaultReader<T> | ReadableStreamBYOBReader;
18324type RenderingContext = CanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext;
18325type RequestInfo = Request | string;
18326type TexImageSource = ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas;
18327type TimerHandler = string | Function;
18328type Transferable = OffscreenCanvas | ImageBitmap | MessagePort | ReadableStream | WritableStream | TransformStream | ArrayBuffer;
18329type Uint32List = Uint32Array | GLuint[];
18330type VibratePattern = number | number[];
18331type WindowProxy = Window;
18332type XMLHttpRequestBodyInit = Blob | BufferSource | FormData | URLSearchParams | string;
18333type AlignSetting = "center" | "end" | "left" | "right" | "start";
18334type AnimationPlayState = "finished" | "idle" | "paused" | "running";
18335type AnimationReplaceState = "active" | "persisted" | "removed";
18336type AppendMode = "segments" | "sequence";
18337type AttestationConveyancePreference = "direct" | "enterprise" | "indirect" | "none";
18338type AudioContextLatencyCategory = "balanced" | "interactive" | "playback";
18339type AudioContextState = "closed" | "running" | "suspended";
18340type AuthenticatorAttachment = "cross-platform" | "platform";
18341type AuthenticatorTransport = "ble" | "hybrid" | "internal" | "nfc" | "usb";
18342type AutoKeyword = "auto";
18343type AutomationRate = "a-rate" | "k-rate";
18344type BinaryType = "arraybuffer" | "blob";
18345type BiquadFilterType = "allpass" | "bandpass" | "highpass" | "highshelf" | "lowpass" | "lowshelf" | "notch" | "peaking";
18346type CanPlayTypeResult = "" | "maybe" | "probably";
18347type CanvasDirection = "inherit" | "ltr" | "rtl";
18348type CanvasFillRule = "evenodd" | "nonzero";
18349type CanvasFontKerning = "auto" | "none" | "normal";
18350type CanvasFontStretch = "condensed" | "expanded" | "extra-condensed" | "extra-expanded" | "normal" | "semi-condensed" | "semi-expanded" | "ultra-condensed" | "ultra-expanded";
18351type CanvasFontVariantCaps = "all-petite-caps" | "all-small-caps" | "normal" | "petite-caps" | "small-caps" | "titling-caps" | "unicase";
18352type CanvasLineCap = "butt" | "round" | "square";
18353type CanvasLineJoin = "bevel" | "miter" | "round";
18354type CanvasTextAlign = "center" | "end" | "left" | "right" | "start";
18355type CanvasTextBaseline = "alphabetic" | "bottom" | "hanging" | "ideographic" | "middle" | "top";
18356type CanvasTextRendering = "auto" | "geometricPrecision" | "optimizeLegibility" | "optimizeSpeed";
18357type ChannelCountMode = "clamped-max" | "explicit" | "max";
18358type ChannelInterpretation = "discrete" | "speakers";
18359type ClientTypes = "all" | "sharedworker" | "window" | "worker";
18360type ColorGamut = "p3" | "rec2020" | "srgb";
18361type ColorSpaceConversion = "default" | "none";
18362type CompositeOperation = "accumulate" | "add" | "replace";
18363type CompositeOperationOrAuto = "accumulate" | "add" | "auto" | "replace";
18364type CredentialMediationRequirement = "optional" | "required" | "silent";
18365type DOMParserSupportedType = "application/xhtml+xml" | "application/xml" | "image/svg+xml" | "text/html" | "text/xml";
18366type DirectionSetting = "" | "lr" | "rl";
18367type DisplayCaptureSurfaceType = "browser" | "monitor" | "window";
18368type DistanceModelType = "exponential" | "inverse" | "linear";
18369type DocumentReadyState = "complete" | "interactive" | "loading";
18370type DocumentVisibilityState = "hidden" | "visible";
18371type EndOfStreamError = "decode" | "network";
18372type EndingType = "native" | "transparent";
18373type FileSystemHandleKind = "directory" | "file";
18374type FillMode = "auto" | "backwards" | "both" | "forwards" | "none";
18375type FontFaceLoadStatus = "error" | "loaded" | "loading" | "unloaded";
18376type FontFaceSetLoadStatus = "loaded" | "loading";
18377type FullscreenNavigationUI = "auto" | "hide" | "show";
18378type GamepadHapticActuatorType = "vibration";
18379type GamepadMappingType = "" | "standard" | "xr-standard";
18380type GlobalCompositeOperation = "color" | "color-burn" | "color-dodge" | "copy" | "darken" | "destination-atop" | "destination-in" | "destination-out" | "destination-over" | "difference" | "exclusion" | "hard-light" | "hue" | "lighten" | "lighter" | "luminosity" | "multiply" | "overlay" | "saturation" | "screen" | "soft-light" | "source-atop" | "source-in" | "source-out" | "source-over" | "xor";
18381type HdrMetadataType = "smpteSt2086" | "smpteSt2094-10" | "smpteSt2094-40";
18382type IDBCursorDirection = "next" | "nextunique" | "prev" | "prevunique";
18383type IDBRequestReadyState = "done" | "pending";
18384type IDBTransactionDurability = "default" | "relaxed" | "strict";
18385type IDBTransactionMode = "readonly" | "readwrite" | "versionchange";
18386type ImageOrientation = "flipY" | "none";
18387type ImageSmoothingQuality = "high" | "low" | "medium";
18388type IterationCompositeOperation = "accumulate" | "replace";
18389type KeyFormat = "jwk" | "pkcs8" | "raw" | "spki";
18390type KeyType = "private" | "public" | "secret";
18391type KeyUsage = "decrypt" | "deriveBits" | "deriveKey" | "encrypt" | "sign" | "unwrapKey" | "verify" | "wrapKey";
18392type LineAlignSetting = "center" | "end" | "start";
18393type LockMode = "exclusive" | "shared";
18394type MediaDecodingType = "file" | "media-source" | "webrtc";
18395type MediaDeviceKind = "audioinput" | "audiooutput" | "videoinput";
18396type MediaEncodingType = "record" | "webrtc";
18397type MediaKeyMessageType = "individualization-request" | "license-release" | "license-renewal" | "license-request";
18398type MediaKeySessionClosedReason = "closed-by-application" | "hardware-context-reset" | "internal-error" | "release-acknowledged" | "resource-evicted";
18399type MediaKeySessionType = "persistent-license" | "temporary";
18400type MediaKeyStatus = "expired" | "internal-error" | "output-downscaled" | "output-restricted" | "released" | "status-pending" | "usable" | "usable-in-future";
18401type MediaKeysRequirement = "not-allowed" | "optional" | "required";
18402type MediaSessionAction = "nexttrack" | "pause" | "play" | "previoustrack" | "seekbackward" | "seekforward" | "seekto" | "skipad" | "stop";
18403type MediaSessionPlaybackState = "none" | "paused" | "playing";
18404type MediaStreamTrackState = "ended" | "live";
18405type NavigationTimingType = "back_forward" | "navigate" | "prerender" | "reload";
18406type NotificationDirection = "auto" | "ltr" | "rtl";
18407type NotificationPermission = "default" | "denied" | "granted";
18408type OffscreenRenderingContextId = "2d" | "bitmaprenderer" | "webgl" | "webgl2" | "webgpu";
18409type OrientationLockType = "any" | "landscape" | "landscape-primary" | "landscape-secondary" | "natural" | "portrait" | "portrait-primary" | "portrait-secondary";
18410type OrientationType = "landscape-primary" | "landscape-secondary" | "portrait-primary" | "portrait-secondary";
18411type OscillatorType = "custom" | "sawtooth" | "sine" | "square" | "triangle";
18412type OverSampleType = "2x" | "4x" | "none";
18413type PanningModelType = "HRTF" | "equalpower";
18414type PaymentComplete = "fail" | "success" | "unknown";
18415type PermissionName = "geolocation" | "notifications" | "persistent-storage" | "push" | "screen-wake-lock" | "xr-spatial-tracking";
18416type PermissionState = "denied" | "granted" | "prompt";
18417type PlaybackDirection = "alternate" | "alternate-reverse" | "normal" | "reverse";
18418type PositionAlignSetting = "auto" | "center" | "line-left" | "line-right";
18419type PredefinedColorSpace = "display-p3" | "srgb";
18420type PremultiplyAlpha = "default" | "none" | "premultiply";
18421type PresentationStyle = "attachment" | "inline" | "unspecified";
18422type PublicKeyCredentialType = "public-key";
18423type PushEncryptionKeyName = "auth" | "p256dh";
18424type RTCBundlePolicy = "balanced" | "max-bundle" | "max-compat";
18425type RTCDataChannelState = "closed" | "closing" | "connecting" | "open";
18426type RTCDegradationPreference = "balanced" | "maintain-framerate" | "maintain-resolution";
18427type RTCDtlsTransportState = "closed" | "connected" | "connecting" | "failed" | "new";
18428type RTCEncodedVideoFrameType = "delta" | "empty" | "key";
18429type RTCErrorDetailType = "data-channel-failure" | "dtls-failure" | "fingerprint-failure" | "hardware-encoder-error" | "hardware-encoder-not-available" | "sctp-failure" | "sdp-syntax-error";
18430type RTCIceCandidateType = "host" | "prflx" | "relay" | "srflx";
18431type RTCIceComponent = "rtcp" | "rtp";
18432type RTCIceConnectionState = "checking" | "closed" | "completed" | "connected" | "disconnected" | "failed" | "new";
18433type RTCIceGathererState = "complete" | "gathering" | "new";
18434type RTCIceGatheringState = "complete" | "gathering" | "new";
18435type RTCIceProtocol = "tcp" | "udp";
18436type RTCIceTcpCandidateType = "active" | "passive" | "so";
18437type RTCIceTransportPolicy = "all" | "relay";
18438type RTCIceTransportState = "checking" | "closed" | "completed" | "connected" | "disconnected" | "failed" | "new";
18439type RTCPeerConnectionState = "closed" | "connected" | "connecting" | "disconnected" | "failed" | "new";
18440type RTCPriorityType = "high" | "low" | "medium" | "very-low";
18441type RTCRtcpMuxPolicy = "require";
18442type RTCRtpTransceiverDirection = "inactive" | "recvonly" | "sendonly" | "sendrecv" | "stopped";
18443type RTCSctpTransportState = "closed" | "connected" | "connecting";
18444type RTCSdpType = "answer" | "offer" | "pranswer" | "rollback";
18445type RTCSignalingState = "closed" | "have-local-offer" | "have-local-pranswer" | "have-remote-offer" | "have-remote-pranswer" | "stable";
18446type RTCStatsIceCandidatePairState = "failed" | "frozen" | "in-progress" | "inprogress" | "succeeded" | "waiting";
18447type RTCStatsType = "candidate-pair" | "certificate" | "codec" | "data-channel" | "inbound-rtp" | "local-candidate" | "media-source" | "outbound-rtp" | "peer-connection" | "remote-candidate" | "remote-inbound-rtp" | "remote-outbound-rtp" | "track" | "transport";
18448type ReadableStreamReaderMode = "byob";
18449type ReadableStreamType = "bytes";
18450type ReadyState = "closed" | "ended" | "open";
18451type RecordingState = "inactive" | "paused" | "recording";
18452type ReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
18453type RemotePlaybackState = "connected" | "connecting" | "disconnected";
18454type RequestCache = "default" | "force-cache" | "no-cache" | "no-store" | "only-if-cached" | "reload";
18455type RequestCredentials = "include" | "omit" | "same-origin";
18456type RequestDestination = "" | "audio" | "audioworklet" | "document" | "embed" | "font" | "frame" | "iframe" | "image" | "manifest" | "object" | "paintworklet" | "report" | "script" | "sharedworker" | "style" | "track" | "video" | "worker" | "xslt";
18457type RequestMode = "cors" | "navigate" | "no-cors" | "same-origin";
18458type RequestRedirect = "error" | "follow" | "manual";
18459type ResidentKeyRequirement = "discouraged" | "preferred" | "required";
18460type ResizeObserverBoxOptions = "border-box" | "content-box" | "device-pixel-content-box";
18461type ResizeQuality = "high" | "low" | "medium" | "pixelated";
18462type ResponseType = "basic" | "cors" | "default" | "error" | "opaque" | "opaqueredirect";
18463type ScrollBehavior = "auto" | "smooth";
18464type ScrollLogicalPosition = "center" | "end" | "nearest" | "start";
18465type ScrollRestoration = "auto" | "manual";
18466type ScrollSetting = "" | "up";
18467type SecurityPolicyViolationEventDisposition = "enforce" | "report";
18468type SelectionMode = "end" | "preserve" | "select" | "start";
18469type ServiceWorkerState = "activated" | "activating" | "installed" | "installing" | "parsed" | "redundant";
18470type ServiceWorkerUpdateViaCache = "all" | "imports" | "none";
18471type ShadowRootMode = "closed" | "open";
18472type SlotAssignmentMode = "manual" | "named";
18473type SpeechSynthesisErrorCode = "audio-busy" | "audio-hardware" | "canceled" | "interrupted" | "invalid-argument" | "language-unavailable" | "network" | "not-allowed" | "synthesis-failed" | "synthesis-unavailable" | "text-too-long" | "voice-unavailable";
18474type TextTrackKind = "captions" | "chapters" | "descriptions" | "metadata" | "subtitles";
18475type TextTrackMode = "disabled" | "hidden" | "showing";
18476type TouchType = "direct" | "stylus";
18477type TransferFunction = "hlg" | "pq" | "srgb";
18478type UserVerificationRequirement = "discouraged" | "preferred" | "required";
18479type VideoColorPrimaries = "bt470bg" | "bt709" | "smpte170m";
18480type VideoFacingModeEnum = "environment" | "left" | "right" | "user";
18481type VideoMatrixCoefficients = "bt470bg" | "bt709" | "rgb" | "smpte170m";
18482type VideoTransferCharacteristics = "bt709" | "iec61966-2-1" | "smpte170m";
18483type WebGLPowerPreference = "default" | "high-performance" | "low-power";
18484type WorkerType = "classic" | "module";
18485type XMLHttpRequestResponseType = "" | "arraybuffer" | "blob" | "document" | "json" | "text";
18486