packages feed

jsaddle-dom-0.10.0.0: src/JSDOM/Types.hs

{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE RankNTypes #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Types (
  -- * JavaScript Context and Monad
    JSContextRef(..), JSM, askJSM, runJSM, MonadJSM(..), liftJSM

  -- * DOM Context and Monad
  , DOMContext(..), DOM, askDOM, runDOM, MonadDOM(..), liftDOM

  -- * JavaScript Value
  , JSVal(..), ToJSVal(..), FromJSVal(..), PToJSVal(..), PFromJSVal(..)
  , integralToDoubleToJSVal, integralFromDoubleFromJSVal, integralFromDoubleFromJSValUnchecked

  -- * JavaScript String
  , JSString(..), ToJSString(..), FromJSString(..)
  , toMaybeJSString, fromMaybeJSString
  , noJSString

  -- * JavaScript Array
  , fromJSArray, fromJSArrayUnchecked

  -- * JavaScript Object
  , Object(..)

  -- * Nullable
  , Nullable(..), nullableToMaybe, maybeToNullable

  -- * DOM String
  , DOMString(..), ToDOMString(..), FromDOMString(..), IsDOMString, noDOMString
  , USVString(..), IsUSVString, noUSVString
  , ByteString(..), IsByteString, noByteString
  , CSSOMString(..), IsCSSOMString, noCSSOMString

  -- * Object
  , maybeNullOrUndefined, maybeNullOrUndefined', GType(..)
  , GObject(..), noGObject, IsGObject, toGObject, gTypeGObject, isA, objectToString
  , castTo, unsafeCastTo, uncheckedCastTo
  , strictEqual

  -- * TypedArray
  , RawTypedArray(RawTypedArray), unRawTypedArray, IsRawTypedArray, toRawTypedArray, noRawTypedArray

  , Function(Function), unFunction, IsFunction, toFunction, noFunction

  -- * Promise
  , PromiseRejected(..), noPromiseRejected, readPromise

  -- * Callbacks
  , Callback(..)
  , withCallback

  -- * Custom Types
  , DOMHighResTimeStamp, noDOMHighResTimeStamp
  , PerformanceEntryList, noPerformanceEntryList

  -- * Record Type
  , Record(Record), unRecord

  -- * Dictionaries
  , Dictionary(Dictionary), unDictionary, IsDictionary, toDictionary, noDictionary

  -- * History state
  , SerializedScriptValue(SerializedScriptValue), unSerializedScriptValue, IsSerializedScriptValue, toSerializedScriptValue, noSerializedScriptValue

  -- * Date
  , Date(Date), unDate, IsDate, toDate, gTypeDate, noDate

  -- * Arrays
  , Array(Array), unArray, IsArray, toArray, gTypeArray, noArray
  , ObjectArray(ObjectArray), unObjectArray, IsObjectArray, toObjectArray, noObjectArray
  , ArrayBuffer(ArrayBuffer), unArrayBuffer, IsArrayBuffer, toArrayBuffer, gTypeArrayBuffer, noArrayBuffer
  , ArrayBufferView(ArrayBufferView), unArrayBufferView, IsArrayBufferView, toArrayBufferView, noArrayBufferView
  , Float32Array(Float32Array), unFloat32Array, IsFloat32Array, toFloat32Array, gTypeFloat32Array, noFloat32Array
  , Float64Array(Float64Array), unFloat64Array, IsFloat64Array, toFloat64Array, gTypeFloat64Array, noFloat64Array
  , Uint8Array(Uint8Array), unUint8Array, IsUint8Array, toUint8Array, gTypeUint8Array, noUint8Array
  , Uint8ClampedArray(Uint8ClampedArray), unUint8ClampedArray, IsUint8ClampedArray, toUint8ClampedArray, gTypeUint8ClampedArray, noUint8ClampedArray
  , Uint16Array(Uint16Array), unUint16Array, IsUint16Array, toUint16Array, gTypeUint16Array, noUint16Array
  , Uint32Array(Uint32Array), unUint32Array, IsUint32Array, toUint32Array, gTypeUint32Array, noUint32Array
  , Int8Array(Int8Array), unInt8Array, IsInt8Array, toInt8Array, gTypeInt8Array, noInt8Array
  , Int16Array(Int16Array), unInt16Array, IsInt16Array, toInt16Array, gTypeInt16Array, noInt16Array
  , Int32Array(Int32Array), unInt32Array, IsInt32Array, toInt32Array, gTypeInt32Array, noInt32Array

  -- * WebGL typedefs
  , GLenum(..), GLboolean(..), GLbitfield(..), GLbyte(..), GLshort(..), GLint(..), GLsizei(..)
  , GLintptr(..), GLsizeiptr(..), GLubyte(..), GLushort(..), GLuint(..), GLfloat(..), GLclampf(..)
  , GLint64, GLuint64
  , noGLenum, noGLboolean, noGLbitfield, noGLbyte, noGLshort, noGLint, noGLsizei
  , noGLintptr, noGLsizeiptr, noGLubyte, noGLushort, noGLuint, noGLfloat, noGLclampf
  , noGLint64, noGLuint64

  -- * Integers exact in a JavaScript Number (Web IDL long long / unsigned long long)
  , Int53, int53, toInt53, clampInt53, fromInt53, minInt53, maxInt53
  , Word53, word53, toWord53, clampWord53, fromWord53, maxWord53

  -- * Used for better error messages
  , HasCallStack

  , GlobalThis(GlobalThis), unGlobalThis, noGlobalThis

  -- * Interface types from IDL files

-- AUTO GENERATION STARTS HERE
  , AddEventListenerOptionsOrBool(AddEventListenerOptionsOrBool), unAddEventListenerOptionsOrBool, IsAddEventListenerOptionsOrBool, toAddEventListenerOptionsOrBool
  , AlgorithmIdentifier(AlgorithmIdentifier), unAlgorithmIdentifier, IsAlgorithmIdentifier, toAlgorithmIdentifier
  , AllowSharedBufferSource(AllowSharedBufferSource), unAllowSharedBufferSource, IsAllowSharedBufferSource, toAllowSharedBufferSource
  , ArrayBufferOrJsonWebKey(ArrayBufferOrJsonWebKey), unArrayBufferOrJsonWebKey, IsArrayBufferOrJsonWebKey, toArrayBufferOrJsonWebKey
  , AudioContextLatencyCategoryOrDouble(AudioContextLatencyCategoryOrDouble), unAudioContextLatencyCategoryOrDouble, IsAudioContextLatencyCategoryOrDouble, toAudioContextLatencyCategoryOrDouble
  , AudioContextRenderSizeCategoryOrWord(AudioContextRenderSizeCategoryOrWord), unAudioContextRenderSizeCategoryOrWord, IsAudioContextRenderSizeCategoryOrWord, toAudioContextRenderSizeCategoryOrWord
  , BlobOrMediaSource(BlobOrMediaSource), unBlobOrMediaSource, IsBlobOrMediaSource, toBlobOrMediaSource
  , BlobPart(BlobPart), unBlobPart, IsBlobPart, toBlobPart
  , BluetoothServiceUUID(BluetoothServiceUUID), unBluetoothServiceUUID, IsBluetoothServiceUUID, toBluetoothServiceUUID
  , BodyInit(BodyInit), unBodyInit, IsBodyInit, toBodyInit
  , BoolOrConstrainDouble(BoolOrConstrainDouble), unBoolOrConstrainDouble, IsBoolOrConstrainDouble, toBoolOrConstrainDouble
  , BoolOrDoubleOrString(BoolOrDoubleOrString), unBoolOrDoubleOrString, IsBoolOrDoubleOrString, toBoolOrDoubleOrString
  , BoolOrImportNodeOptions(BoolOrImportNodeOptions), unBoolOrImportNodeOptions, IsBoolOrImportNodeOptions, toBoolOrImportNodeOptions
  , BoolOrMediaTrackConstraints(BoolOrMediaTrackConstraints), unBoolOrMediaTrackConstraints, IsBoolOrMediaTrackConstraints, toBoolOrMediaTrackConstraints
  , BoolOrScrollIntoViewOptions(BoolOrScrollIntoViewOptions), unBoolOrScrollIntoViewOptions, IsBoolOrScrollIntoViewOptions, toBoolOrScrollIntoViewOptions
  , BoolOrString(BoolOrString), unBoolOrString, IsBoolOrString, toBoolOrString
  , BufferSource(BufferSource), unBufferSource, IsBufferSource, toBufferSource
  , BufferSourceOrBlobOrString(BufferSourceOrBlobOrString), unBufferSourceOrBlobOrString, IsBufferSourceOrBlobOrString, toBufferSourceOrBlobOrString
  , BufferSourceOrJsonWebKey(BufferSourceOrJsonWebKey), unBufferSourceOrJsonWebKey, IsBufferSourceOrJsonWebKey, toBufferSourceOrJsonWebKey
  , BufferSourceOrString(BufferSourceOrString), unBufferSourceOrString, IsBufferSourceOrString, toBufferSourceOrString
  , CSSNumberish(CSSNumberish), unCSSNumberish, IsCSSNumberish, toCSSNumberish
  , CSSNumericValueOrCSSKeywordValue(CSSNumericValueOrCSSKeywordValue), unCSSNumericValueOrCSSKeywordValue, IsCSSNumericValueOrCSSKeywordValue, toCSSNumericValueOrCSSKeywordValue
  , CSSPerspectiveValue(CSSPerspectiveValue), unCSSPerspectiveValue, IsCSSPerspectiveValue, toCSSPerspectiveValue
  , CSSStyleValueOrString(CSSStyleValueOrString), unCSSStyleValueOrString, IsCSSStyleValueOrString, toCSSStyleValueOrString
  , CSSUnparsedSegment(CSSUnparsedSegment), unCSSUnparsedSegment, IsCSSUnparsedSegment, toCSSUnparsedSegment
  , CanvasImageSource(CanvasImageSource), unCanvasImageSource, IsCanvasImageSource, toCanvasImageSource
  , ClientOrServiceWorkerOrMessagePort(ClientOrServiceWorkerOrMessagePort), unClientOrServiceWorkerOrMessagePort, IsClientOrServiceWorkerOrMessagePort, toClientOrServiceWorkerOrMessagePort
  , ClientOrUndefined(ClientOrUndefined), unClientOrUndefined, IsClientOrUndefined, toClientOrUndefined
  , ConstrainBoolean(ConstrainBoolean), unConstrainBoolean, IsConstrainBoolean, toConstrainBoolean
  , ConstrainBooleanOrDOMString(ConstrainBooleanOrDOMString), unConstrainBooleanOrDOMString, IsConstrainBooleanOrDOMString, toConstrainBooleanOrDOMString
  , ConstrainDOMString(ConstrainDOMString), unConstrainDOMString, IsConstrainDOMString, toConstrainDOMString
  , ConstrainDouble(ConstrainDouble), unConstrainDouble, IsConstrainDouble, toConstrainDouble
  , ConstrainPoint2D(ConstrainPoint2D), unConstrainPoint2D, IsConstrainPoint2D, toConstrainPoint2D
  , ConstrainULong(ConstrainULong), unConstrainULong, IsConstrainULong, toConstrainULong
  , CryptoKeyOrCryptoKeyPair(CryptoKeyOrCryptoKeyPair), unCryptoKeyOrCryptoKeyPair, IsCryptoKeyOrCryptoKeyPair, toCryptoKeyOrCryptoKeyPair
  , CustomElementConstructorOrUndefined(CustomElementConstructorOrUndefined), unCustomElementConstructorOrUndefined, IsCustomElementConstructorOrUndefined, toCustomElementConstructorOrUndefined
  , DigitalCredentialProtocol(DigitalCredentialProtocol), unDigitalCredentialProtocol, IsDigitalCredentialProtocol, toDigitalCredentialProtocol
  , DocumentOrXMLHttpRequestBodyInit(DocumentOrXMLHttpRequestBodyInit), unDocumentOrXMLHttpRequestBodyInit, IsDocumentOrXMLHttpRequestBodyInit, toDocumentOrXMLHttpRequestBodyInit
  , DoubleOrCSSNumericValueOrString(DoubleOrCSSNumericValueOrString), unDoubleOrCSSNumericValueOrString, IsDoubleOrCSSNumericValueOrString, toDoubleOrCSSNumericValueOrString
  , DoubleOrDOMPointInit(DoubleOrDOMPointInit), unDoubleOrDOMPointInit, IsDoubleOrDOMPointInit, toDoubleOrDOMPointInit
  , DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit(DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit), unDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit, IsDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit, toDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit
  , DoubleOrKeyframeAnimationOptions(DoubleOrKeyframeAnimationOptions), unDoubleOrKeyframeAnimationOptions, IsDoubleOrKeyframeAnimationOptions, toDoubleOrKeyframeAnimationOptions
  , DoubleOrKeyframeEffectOptions(DoubleOrKeyframeEffectOptions), unDoubleOrKeyframeEffectOptions, IsDoubleOrKeyframeEffectOptions, toDoubleOrKeyframeEffectOptions
  , DoubleOrSequenceDouble(DoubleOrSequenceDouble), unDoubleOrSequenceDouble, IsDoubleOrSequenceDouble, toDoubleOrSequenceDouble
  , DoubleOrString(DoubleOrString), unDoubleOrString, IsDoubleOrString, toDoubleOrString
  , ElementOrDocument(ElementOrDocument), unElementOrDocument, IsElementOrDocument, toElementOrDocument
  , ElementOrProcessingInstruction(ElementOrProcessingInstruction), unElementOrProcessingInstruction, IsElementOrProcessingInstruction, toElementOrProcessingInstruction
  , ElementOrText(ElementOrText), unElementOrText, IsElementOrText, toElementOrText
  , EventListenerOptionsOrBool(EventListenerOptionsOrBool), unEventListenerOptionsOrBool, IsEventListenerOptionsOrBool, toEventListenerOptionsOrBool
  , EventOrUndefined(EventOrUndefined), unEventOrUndefined, IsEventOrUndefined, toEventOrUndefined
  , FileOrStringOrFormData(FileOrStringOrFormData), unFileOrStringOrFormData, IsFileOrStringOrFormData, toFileOrStringOrFormData
  , FileSystemWriteChunkType(FileSystemWriteChunkType), unFileSystemWriteChunkType, IsFileSystemWriteChunkType, toFileSystemWriteChunkType
  , Float32List(Float32List), unFloat32List, IsFloat32List, toFloat32List
  , FormDataEntryValue(FormDataEntryValue), unFormDataEntryValue, IsFormDataEntryValue, toFormDataEntryValue
  , GPUBindingResource(GPUBindingResource), unGPUBindingResource, IsGPUBindingResource, toGPUBindingResource
  , GPUColor(GPUColor), unGPUColor, IsGPUColor, toGPUColor
  , GPUCopyExternalImageSource(GPUCopyExternalImageSource), unGPUCopyExternalImageSource, IsGPUCopyExternalImageSource, toGPUCopyExternalImageSource
  , GPUExtent3D(GPUExtent3D), unGPUExtent3D, IsGPUExtent3D, toGPUExtent3D
  , GPUOrigin2D(GPUOrigin2D), unGPUOrigin2D, IsGPUOrigin2D, toGPUOrigin2D
  , GPUOrigin3D(GPUOrigin3D), unGPUOrigin3D, IsGPUOrigin3D, toGPUOrigin3D
  , GPUPipelineLayoutOrGPUAutoLayoutMode(GPUPipelineLayoutOrGPUAutoLayoutMode), unGPUPipelineLayoutOrGPUAutoLayoutMode, IsGPUPipelineLayoutOrGPUAutoLayoutMode, toGPUPipelineLayoutOrGPUAutoLayoutMode
  , GPUSize64OrUndefined(GPUSize64OrUndefined), unGPUSize64OrUndefined, IsGPUSize64OrUndefined, toGPUSize64OrUndefined
  , GPUTextureOrGPUTextureView(GPUTextureOrGPUTextureView), unGPUTextureOrGPUTextureView, IsGPUTextureOrGPUTextureView, toGPUTextureOrGPUTextureView
  , HTMLCanvasElementOrOffscreenCanvas(HTMLCanvasElementOrOffscreenCanvas), unHTMLCanvasElementOrOffscreenCanvas, IsHTMLCanvasElementOrOffscreenCanvas, toHTMLCanvasElementOrOffscreenCanvas
  , HTMLCollectionOrElement(HTMLCollectionOrElement), unHTMLCollectionOrElement, IsHTMLCollectionOrElement, toHTMLCollectionOrElement
  , HTMLElementOrInt(HTMLElementOrInt), unHTMLElementOrInt, IsHTMLElementOrInt, toHTMLElementOrInt
  , HTMLOptionElementOrHTMLOptGroupElement(HTMLOptionElementOrHTMLOptGroupElement), unHTMLOptionElementOrHTMLOptGroupElement, IsHTMLOptionElementOrHTMLOptGroupElement, toHTMLOptionElementOrHTMLOptGroupElement
  , HTMLOrSVGScriptElement(HTMLOrSVGScriptElement), unHTMLOrSVGScriptElement, IsHTMLOrSVGScriptElement, toHTMLOrSVGScriptElement
  , HTMLVideoElementOrVideoFrame(HTMLVideoElementOrVideoFrame), unHTMLVideoElementOrVideoFrame, IsHTMLVideoElementOrVideoFrame, toHTMLVideoElementOrVideoFrame
  , HeadersInit(HeadersInit), unHeadersInit, IsHeadersInit, toHeadersInit
  , IDBObjectStoreOrIDBIndex(IDBObjectStoreOrIDBIndex), unIDBObjectStoreOrIDBIndex, IsIDBObjectStoreOrIDBIndex, toIDBObjectStoreOrIDBIndex
  , IDBObjectStoreOrIDBIndexOrIDBCursor(IDBObjectStoreOrIDBIndexOrIDBCursor), unIDBObjectStoreOrIDBIndexOrIDBCursor, IsIDBObjectStoreOrIDBIndexOrIDBCursor, toIDBObjectStoreOrIDBIndexOrIDBCursor
  , ImageBufferSource(ImageBufferSource), unImageBufferSource, IsImageBufferSource, toImageBufferSource
  , ImageDataArray(ImageDataArray), unImageDataArray, IsImageDataArray, toImageDataArray
  , Int32ArrayOrSequenceGLint(Int32ArrayOrSequenceGLint), unInt32ArrayOrSequenceGLint, IsInt32ArrayOrSequenceGLint, toInt32ArrayOrSequenceGLint
  , Int32ArrayOrSequenceGLsizei(Int32ArrayOrSequenceGLsizei), unInt32ArrayOrSequenceGLsizei, IsInt32ArrayOrSequenceGLsizei, toInt32ArrayOrSequenceGLsizei
  , Int32List(Int32List), unInt32List, IsInt32List, toInt32List
  , LineAndPositionSetting(LineAndPositionSetting), unLineAndPositionSetting, IsLineAndPositionSetting, toLineAndPositionSetting
  , MediaKeyStatusOrUndefined(MediaKeyStatusOrUndefined), unMediaKeyStatusOrUndefined, IsMediaKeyStatusOrUndefined, toMediaKeyStatusOrUndefined
  , MediaListOrString(MediaListOrString), unMediaListOrString, IsMediaListOrString, toMediaListOrString
  , MediaProvider(MediaProvider), unMediaProvider, IsMediaProvider, toMediaProvider
  , MediaStreamTrackOrHandle(MediaStreamTrackOrHandle), unMediaStreamTrackOrHandle, IsMediaStreamTrackOrHandle, toMediaStreamTrackOrHandle
  , MediaStreamTrackOrString(MediaStreamTrackOrString), unMediaStreamTrackOrString, IsMediaStreamTrackOrString, toMediaStreamTrackOrString
  , MessageEventSource(MessageEventSource), unMessageEventSource, IsMessageEventSource, toMessageEventSource
  , NodeOrString(NodeOrString), unNodeOrString, IsNodeOrString, toNodeOrString
  , OffscreenRenderingContext(OffscreenRenderingContext), unOffscreenRenderingContext, IsOffscreenRenderingContext, toOffscreenRenderingContext
  , ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions(ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions), unParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions, IsParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions, toParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions
  , PasswordCredentialInit(PasswordCredentialInit), unPasswordCredentialInit, IsPasswordCredentialInit, toPasswordCredentialInit
  , Path2DOrString(Path2DOrString), unPath2DOrString, IsPath2DOrString, toPath2DOrString
  , PushMessageDataInit(PushMessageDataInit), unPushMessageDataInit, IsPushMessageDataInit, toPushMessageDataInit
  , RTCRtpReceiverTransform(RTCRtpReceiverTransform), unRTCRtpReceiverTransform, IsRTCRtpReceiverTransform, toRTCRtpReceiverTransform
  , RTCRtpSenderTransform(RTCRtpSenderTransform), unRTCRtpSenderTransform, IsRTCRtpSenderTransform, toRTCRtpSenderTransform
  , RadioNodeListOrElement(RadioNodeListOrElement), unRadioNodeListOrElement, IsRadioNodeListOrElement, toRadioNodeListOrElement
  , ReadableStreamReader(ReadableStreamReader), unReadableStreamReader, IsReadableStreamReader, toReadableStreamReader
  , RenderingContext(RenderingContext), unRenderingContext, IsRenderingContext, toRenderingContext
  , RequestInfo(RequestInfo), unRequestInfo, IsRequestInfo, toRequestInfo
  , ResponseOrUndefined(ResponseOrUndefined), unResponseOrUndefined, IsResponseOrUndefined, toResponseOrUndefined
  , RouterRuleOrSequenceRouterRule(RouterRuleOrSequenceRouterRule), unRouterRuleOrSequenceRouterRule, IsRouterRuleOrSequenceRouterRule, toRouterRuleOrSequenceRouterRule
  , RouterSource(RouterSource), unRouterSource, IsRouterSource, toRouterSource
  , SanitizerAttribute(SanitizerAttribute), unSanitizerAttribute, IsSanitizerAttribute, toSanitizerAttribute
  , SanitizerConfigOrSanitizerPresets(SanitizerConfigOrSanitizerPresets), unSanitizerConfigOrSanitizerPresets, IsSanitizerConfigOrSanitizerPresets, toSanitizerConfigOrSanitizerPresets
  , SanitizerElement(SanitizerElement), unSanitizerElement, IsSanitizerElement, toSanitizerElement
  , SanitizerElementWithAttributes(SanitizerElementWithAttributes), unSanitizerElementWithAttributes, IsSanitizerElementWithAttributes, toSanitizerElementWithAttributes
  , SanitizerOrSanitizerConfigOrSanitizerPresets(SanitizerOrSanitizerConfigOrSanitizerPresets), unSanitizerOrSanitizerConfigOrSanitizerPresets, IsSanitizerOrSanitizerConfigOrSanitizerPresets, toSanitizerOrSanitizerConfigOrSanitizerPresets
  , SanitizerPI(SanitizerPI), unSanitizerPI, IsSanitizerPI, toSanitizerPI
  , SequenceSequenceStringOrRecordStringStringOrString(SequenceSequenceStringOrRecordStringStringOrString), unSequenceSequenceStringOrRecordStringStringOrString, IsSequenceSequenceStringOrRecordStringStringOrString, toSequenceSequenceStringOrRecordStringStringOrString
  , ServiceWorkerRegistrationOrUndefined(ServiceWorkerRegistrationOrUndefined), unServiceWorkerRegistrationOrUndefined, IsServiceWorkerRegistrationOrUndefined, toServiceWorkerRegistrationOrUndefined
  , SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions(SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions), unSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions, IsSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions, toSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions
  , StringOrArrayBuffer(StringOrArrayBuffer), unStringOrArrayBuffer, IsStringOrArrayBuffer, toStringOrArrayBuffer
  , StringOrAudioSinkOptions(StringOrAudioSinkOptions), unStringOrAudioSinkOptions, IsStringOrAudioSinkOptions, toStringOrAudioSinkOptions
  , StringOrBufferSource(StringOrBufferSource), unStringOrBufferSource, IsStringOrBufferSource, toStringOrBufferSource
  , StringOrCanvasGradientOrCanvasPattern(StringOrCanvasGradientOrCanvasPattern), unStringOrCanvasGradientOrCanvasPattern, IsStringOrCanvasGradientOrCanvasPattern, toStringOrCanvasGradientOrCanvasPattern
  , StringOrDOMHighResTimeStamp(StringOrDOMHighResTimeStamp), unStringOrDOMHighResTimeStamp, IsStringOrDOMHighResTimeStamp, toStringOrDOMHighResTimeStamp
  , StringOrElementCreationOptions(StringOrElementCreationOptions), unStringOrElementCreationOptions, IsStringOrElementCreationOptions, toStringOrElementCreationOptions
  , StringOrPerformanceMeasureOptions(StringOrPerformanceMeasureOptions), unStringOrPerformanceMeasureOptions, IsStringOrPerformanceMeasureOptions, toStringOrPerformanceMeasureOptions
  , StringOrSequenceCSSNumericValueOrCSSKeywordValue(StringOrSequenceCSSNumericValueOrCSSKeywordValue), unStringOrSequenceCSSNumericValueOrCSSKeywordValue, IsStringOrSequenceCSSNumericValueOrCSSKeywordValue, toStringOrSequenceCSSNumericValueOrCSSKeywordValue
  , StringOrSequenceDouble(StringOrSequenceDouble), unStringOrSequenceDouble, IsStringOrSequenceDouble, toStringOrSequenceDouble
  , StringOrSequenceString(StringOrSequenceString), unStringOrSequenceString, IsStringOrSequenceString, toStringOrSequenceString
  , StringOrSharedWorkerOptions(StringOrSharedWorkerOptions), unStringOrSharedWorkerOptions, IsStringOrSharedWorkerOptions, toStringOrSharedWorkerOptions
  , StringOrTrustedScriptURL(StringOrTrustedScriptURL), unStringOrTrustedScriptURL, IsStringOrTrustedScriptURL, toStringOrTrustedScriptURL
  , StringOrUndefined(StringOrUndefined), unStringOrUndefined, IsStringOrUndefined, toStringOrUndefined
  , TaskPriorityOrTaskSignal(TaskPriorityOrTaskSignal), unTaskPriorityOrTaskSignal, IsTaskPriorityOrTaskSignal, toTaskPriorityOrTaskSignal
  , TexImageSource(TexImageSource), unTexImageSource, IsTexImageSource, toTexImageSource
  , TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString(TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString), unTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString, IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString, toTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString
  , TimerHandler(TimerHandler), unTimerHandler, IsTimerHandler, toTimerHandler
  , TogglePopoverOptionsOrBool(TogglePopoverOptionsOrBool), unTogglePopoverOptionsOrBool, IsTogglePopoverOptionsOrBool, toTogglePopoverOptionsOrBool
  , TrustedHTMLOrString(TrustedHTMLOrString), unTrustedHTMLOrString, IsTrustedHTMLOrString, toTrustedHTMLOrString
  , TrustedScriptOrString(TrustedScriptOrString), unTrustedScriptOrString, IsTrustedScriptOrString, toTrustedScriptOrString
  , TrustedScriptURLOrString(TrustedScriptURLOrString), unTrustedScriptURLOrString, IsTrustedScriptURLOrString, toTrustedScriptURLOrString
  , TrustedTypeOrString(TrustedTypeOrString), unTrustedTypeOrString, IsTrustedTypeOrString, toTrustedTypeOrString
  , URLPatternCompatible(URLPatternCompatible), unURLPatternCompatible, IsURLPatternCompatible, toURLPatternCompatible
  , URLPatternInput(URLPatternInput), unURLPatternInput, IsURLPatternInput, toURLPatternInput
  , Uint32List(Uint32List), unUint32List, IsUint32List, toUint32List
  , UndefinedOrCSSStyleValue(UndefinedOrCSSStyleValue), unUndefinedOrCSSStyleValue, IsUndefinedOrCSSStyleValue, toUndefinedOrCSSStyleValue
  , VibratePattern(VibratePattern), unVibratePattern, IsVibratePattern, toVibratePattern
  , VideoTrackOrAudioTrackOrTextTrack(VideoTrackOrAudioTrackOrTextTrack), unVideoTrackOrAudioTrackOrTextTrack, IsVideoTrackOrAudioTrackOrTextTrack, toVideoTrackOrAudioTrackOrTextTrack
  , ViewTransitionUpdateCallbackOrStartViewTransitionOptions(ViewTransitionUpdateCallbackOrStartViewTransitionOptions), unViewTransitionUpdateCallbackOrStartViewTransitionOptions, IsViewTransitionUpdateCallbackOrStartViewTransitionOptions, toViewTransitionUpdateCallbackOrStartViewTransitionOptions
  , WorkerOrWorkerAndParameters(WorkerOrWorkerAndParameters), unWorkerOrWorkerAndParameters, IsWorkerOrWorkerAndParameters, toWorkerOrWorkerAndParameters
  , AudioDataOutputCallback(..), noAudioDataOutputCallback
  , AudioWorkletProcessorConstructor(..), noAudioWorkletProcessorConstructor
  , BlobCallback(..), noBlobCallback
  , CreateHTMLCallback(..), noCreateHTMLCallback
  , CreateParserOptionsCallback(..), noCreateParserOptionsCallback
  , CreateScriptCallback(..), noCreateScriptCallback
  , CreateScriptURLCallback(..), noCreateScriptURLCallback
  , CustomElementConstructor(..), noCustomElementConstructor
  , DecodeErrorCallback(..), noDecodeErrorCallback
  , DecodeSuccessCallback(..), noDecodeSuccessCallback
  , EncodedAudioChunkOutputCallback(..), noEncodedAudioChunkOutputCallback
  , EncodedVideoChunkOutputCallback(..), noEncodedVideoChunkOutputCallback
  , ErrorCallback(..), noErrorCallback
  , FileCallback(..), noFileCallback
  , FileSystemEntriesCallback(..), noFileSystemEntriesCallback
  , FileSystemEntryCallback(..), noFileSystemEntryCallback
  , FrameRequestCallback(..), noFrameRequestCallback
  , FunctionStringCallback(..), noFunctionStringCallback
  , IdleRequestCallback(..), noIdleRequestCallback
  , IntersectionObserverCallback(..), noIntersectionObserverCallback
  , LockGrantedCallback(..), noLockGrantedCallback
  , MediaSessionActionHandler(..), noMediaSessionActionHandler
  , MutationCallback(..), noMutationCallback
  , NavigationInterceptHandler(..), noNavigationInterceptHandler
  , NavigationPrecommitHandler(..), noNavigationPrecommitHandler
  , NodeFilter(..), noNodeFilter
  , NotificationPermissionCallback(..), noNotificationPermissionCallback
  , PerformanceObserverCallback(..), noPerformanceObserverCallback
  , PositionCallback(..), noPositionCallback
  , PositionErrorCallback(..), noPositionErrorCallback
  , QueuingStrategySize(..), noQueuingStrategySize
  , RTCPeerConnectionErrorCallback(..), noRTCPeerConnectionErrorCallback
  , RTCSessionDescriptionCallback(..), noRTCSessionDescriptionCallback
  , RemotePlaybackAvailabilityCallback(..), noRemotePlaybackAvailabilityCallback
  , ReportingObserverCallback(..), noReportingObserverCallback
  , ResizeObserverCallback(..), noResizeObserverCallback
  , SchedulerPostTaskCallback(..), noSchedulerPostTaskCallback
  , VideoFrameOutputCallback(..), noVideoFrameOutputCallback
  , VideoFrameRequestCallback(..), noVideoFrameRequestCallback
  , ViewTransitionUpdateCallback(..), noViewTransitionUpdateCallback
  , VoidFunction(..), noVoidFunction
  , WebCodecsErrorCallback(..), noWebCodecsErrorCallback
  , XPathNSResolver(..), noXPathNSResolver
  , ANGLE_instanced_arrays(ANGLE_instanced_arrays), unANGLE_instanced_arrays, noANGLE_instanced_arrays, gTypeANGLE_instanced_arrays
  , ARIAMixin(ARIAMixin), unARIAMixin, IsARIAMixin, toARIAMixin, noARIAMixin, gTypeARIAMixin
  , ARIANotifyMixin(ARIANotifyMixin), unARIANotifyMixin, IsARIANotifyMixin, toARIANotifyMixin, noARIANotifyMixin, gTypeARIANotifyMixin
  , AacEncoderConfig(AacEncoderConfig), unAacEncoderConfig, noAacEncoderConfig, gTypeAacEncoderConfig
  , AbortController(AbortController), unAbortController, IsAbortController, toAbortController, noAbortController, gTypeAbortController
  , AbortSignal(AbortSignal), unAbortSignal, IsAbortSignal, toAbortSignal, noAbortSignal, gTypeAbortSignal
  , AbstractRange(AbstractRange), unAbstractRange, IsAbstractRange, toAbstractRange, noAbstractRange, gTypeAbstractRange
  , AbstractWorker(AbstractWorker), unAbstractWorker, IsAbstractWorker, toAbstractWorker, noAbstractWorker, gTypeAbstractWorker
  , AddEventListenerOptions(AddEventListenerOptions), unAddEventListenerOptions, noAddEventListenerOptions, gTypeAddEventListenerOptions
  , AddressErrors(AddressErrors), unAddressErrors, noAddressErrors, gTypeAddressErrors
  , AllAcceptedCredentialsOptions(AllAcceptedCredentialsOptions), unAllAcceptedCredentialsOptions, noAllAcceptedCredentialsOptions, gTypeAllAcceptedCredentialsOptions
  , AnalyserNode(AnalyserNode), unAnalyserNode, noAnalyserNode, gTypeAnalyserNode
  , AnalyserOptions(AnalyserOptions), unAnalyserOptions, noAnalyserOptions, gTypeAnalyserOptions
  , Animatable(Animatable), unAnimatable, IsAnimatable, toAnimatable, noAnimatable, gTypeAnimatable
  , Animation(Animation), unAnimation, IsAnimation, toAnimation, noAnimation, gTypeAnimation
  , AnimationEffect(AnimationEffect), unAnimationEffect, IsAnimationEffect, toAnimationEffect, noAnimationEffect, gTypeAnimationEffect
  , AnimationEvent(AnimationEvent), unAnimationEvent, noAnimationEvent, gTypeAnimationEvent
  , AnimationEventInit(AnimationEventInit), unAnimationEventInit, noAnimationEventInit, gTypeAnimationEventInit
  , AnimationFrameProvider(AnimationFrameProvider), unAnimationFrameProvider, IsAnimationFrameProvider, toAnimationFrameProvider, noAnimationFrameProvider, gTypeAnimationFrameProvider
  , AnimationPlaybackEvent(AnimationPlaybackEvent), unAnimationPlaybackEvent, noAnimationPlaybackEvent, gTypeAnimationPlaybackEvent
  , AnimationPlaybackEventInit(AnimationPlaybackEventInit), unAnimationPlaybackEventInit, noAnimationPlaybackEventInit, gTypeAnimationPlaybackEventInit
  , AnimationTimeline(AnimationTimeline), unAnimationTimeline, IsAnimationTimeline, toAnimationTimeline, noAnimationTimeline, gTypeAnimationTimeline
  , AnimationTrigger(AnimationTrigger), unAnimationTrigger, noAnimationTrigger, gTypeAnimationTrigger
  , AriaNotificationOptions(AriaNotificationOptions), unAriaNotificationOptions, noAriaNotificationOptions, gTypeAriaNotificationOptions
  , AssignedNodesOptions(AssignedNodesOptions), unAssignedNodesOptions, noAssignedNodesOptions, gTypeAssignedNodesOptions
  , Attr(Attr), unAttr, noAttr, gTypeAttr
  , AudioBuffer(AudioBuffer), unAudioBuffer, noAudioBuffer, gTypeAudioBuffer
  , AudioBufferOptions(AudioBufferOptions), unAudioBufferOptions, noAudioBufferOptions, gTypeAudioBufferOptions
  , AudioBufferSourceNode(AudioBufferSourceNode), unAudioBufferSourceNode, noAudioBufferSourceNode, gTypeAudioBufferSourceNode
  , AudioBufferSourceOptions(AudioBufferSourceOptions), unAudioBufferSourceOptions, noAudioBufferSourceOptions, gTypeAudioBufferSourceOptions
  , AudioConfiguration(AudioConfiguration), unAudioConfiguration, noAudioConfiguration, gTypeAudioConfiguration
  , AudioContext(AudioContext), unAudioContext, noAudioContext, gTypeAudioContext
  , AudioContextOptions(AudioContextOptions), unAudioContextOptions, noAudioContextOptions, gTypeAudioContextOptions
  , AudioData(AudioData), unAudioData, noAudioData, gTypeAudioData
  , AudioDataCopyToOptions(AudioDataCopyToOptions), unAudioDataCopyToOptions, noAudioDataCopyToOptions, gTypeAudioDataCopyToOptions
  , AudioDataInit(AudioDataInit), unAudioDataInit, noAudioDataInit, gTypeAudioDataInit
  , AudioDecoder(AudioDecoder), unAudioDecoder, noAudioDecoder, gTypeAudioDecoder
  , AudioDecoderConfig(AudioDecoderConfig), unAudioDecoderConfig, noAudioDecoderConfig, gTypeAudioDecoderConfig
  , AudioDecoderInit(AudioDecoderInit), unAudioDecoderInit, noAudioDecoderInit, gTypeAudioDecoderInit
  , AudioDecoderSupport(AudioDecoderSupport), unAudioDecoderSupport, noAudioDecoderSupport, gTypeAudioDecoderSupport
  , AudioDestinationNode(AudioDestinationNode), unAudioDestinationNode, noAudioDestinationNode, gTypeAudioDestinationNode
  , AudioEncoder(AudioEncoder), unAudioEncoder, noAudioEncoder, gTypeAudioEncoder
  , AudioEncoderConfig(AudioEncoderConfig), unAudioEncoderConfig, noAudioEncoderConfig, gTypeAudioEncoderConfig
  , AudioEncoderInit(AudioEncoderInit), unAudioEncoderInit, noAudioEncoderInit, gTypeAudioEncoderInit
  , AudioEncoderSupport(AudioEncoderSupport), unAudioEncoderSupport, noAudioEncoderSupport, gTypeAudioEncoderSupport
  , AudioListener(AudioListener), unAudioListener, noAudioListener, gTypeAudioListener
  , AudioNode(AudioNode), unAudioNode, IsAudioNode, toAudioNode, noAudioNode, gTypeAudioNode
  , AudioNodeOptions(AudioNodeOptions), unAudioNodeOptions, IsAudioNodeOptions, toAudioNodeOptions, noAudioNodeOptions, gTypeAudioNodeOptions
  , AudioParam(AudioParam), unAudioParam, noAudioParam, gTypeAudioParam
  , AudioParamMap(AudioParamMap), unAudioParamMap, noAudioParamMap, gTypeAudioParamMap
  , AudioProcessingEvent(AudioProcessingEvent), unAudioProcessingEvent, noAudioProcessingEvent, gTypeAudioProcessingEvent
  , AudioProcessingEventInit(AudioProcessingEventInit), unAudioProcessingEventInit, noAudioProcessingEventInit, gTypeAudioProcessingEventInit
  , AudioScheduledSourceNode(AudioScheduledSourceNode), unAudioScheduledSourceNode, IsAudioScheduledSourceNode, toAudioScheduledSourceNode, noAudioScheduledSourceNode, gTypeAudioScheduledSourceNode
  , AudioSinkOptions(AudioSinkOptions), unAudioSinkOptions, noAudioSinkOptions, gTypeAudioSinkOptions
  , AudioTimestamp(AudioTimestamp), unAudioTimestamp, noAudioTimestamp, gTypeAudioTimestamp
  , AudioTrack(AudioTrack), unAudioTrack, noAudioTrack, gTypeAudioTrack
  , AudioTrackList(AudioTrackList), unAudioTrackList, noAudioTrackList, gTypeAudioTrackList
  , AudioWorklet(AudioWorklet), unAudioWorklet, noAudioWorklet, gTypeAudioWorklet
  , AudioWorkletGlobalScope(AudioWorkletGlobalScope), unAudioWorkletGlobalScope, noAudioWorkletGlobalScope, gTypeAudioWorkletGlobalScope
  , AudioWorkletNode(AudioWorkletNode), unAudioWorkletNode, noAudioWorkletNode, gTypeAudioWorkletNode
  , AudioWorkletNodeOptions(AudioWorkletNodeOptions), unAudioWorkletNodeOptions, noAudioWorkletNodeOptions, gTypeAudioWorkletNodeOptions
  , AudioWorkletProcessor(AudioWorkletProcessor), unAudioWorkletProcessor, noAudioWorkletProcessor, gTypeAudioWorkletProcessor
  , AuthenticationExtensionsClientInputs(AuthenticationExtensionsClientInputs), unAuthenticationExtensionsClientInputs, noAuthenticationExtensionsClientInputs, gTypeAuthenticationExtensionsClientInputs
  , AuthenticationExtensionsClientInputsJSON(AuthenticationExtensionsClientInputsJSON), unAuthenticationExtensionsClientInputsJSON, noAuthenticationExtensionsClientInputsJSON, gTypeAuthenticationExtensionsClientInputsJSON
  , AuthenticationExtensionsClientOutputs(AuthenticationExtensionsClientOutputs), unAuthenticationExtensionsClientOutputs, noAuthenticationExtensionsClientOutputs, gTypeAuthenticationExtensionsClientOutputs
  , AuthenticationExtensionsLargeBlobInputs(AuthenticationExtensionsLargeBlobInputs), unAuthenticationExtensionsLargeBlobInputs, noAuthenticationExtensionsLargeBlobInputs, gTypeAuthenticationExtensionsLargeBlobInputs
  , AuthenticationExtensionsLargeBlobInputsJSON(AuthenticationExtensionsLargeBlobInputsJSON), unAuthenticationExtensionsLargeBlobInputsJSON, noAuthenticationExtensionsLargeBlobInputsJSON, gTypeAuthenticationExtensionsLargeBlobInputsJSON
  , AuthenticationExtensionsLargeBlobOutputs(AuthenticationExtensionsLargeBlobOutputs), unAuthenticationExtensionsLargeBlobOutputs, noAuthenticationExtensionsLargeBlobOutputs, gTypeAuthenticationExtensionsLargeBlobOutputs
  , AuthenticationExtensionsPRFInputs(AuthenticationExtensionsPRFInputs), unAuthenticationExtensionsPRFInputs, noAuthenticationExtensionsPRFInputs, gTypeAuthenticationExtensionsPRFInputs
  , AuthenticationExtensionsPRFInputsJSON(AuthenticationExtensionsPRFInputsJSON), unAuthenticationExtensionsPRFInputsJSON, noAuthenticationExtensionsPRFInputsJSON, gTypeAuthenticationExtensionsPRFInputsJSON
  , AuthenticationExtensionsPRFOutputs(AuthenticationExtensionsPRFOutputs), unAuthenticationExtensionsPRFOutputs, noAuthenticationExtensionsPRFOutputs, gTypeAuthenticationExtensionsPRFOutputs
  , AuthenticationExtensionsPRFValues(AuthenticationExtensionsPRFValues), unAuthenticationExtensionsPRFValues, noAuthenticationExtensionsPRFValues, gTypeAuthenticationExtensionsPRFValues
  , AuthenticationExtensionsPRFValuesJSON(AuthenticationExtensionsPRFValuesJSON), unAuthenticationExtensionsPRFValuesJSON, noAuthenticationExtensionsPRFValuesJSON, gTypeAuthenticationExtensionsPRFValuesJSON
  , AuthenticationExtensionsPaymentInputs(AuthenticationExtensionsPaymentInputs), unAuthenticationExtensionsPaymentInputs, noAuthenticationExtensionsPaymentInputs, gTypeAuthenticationExtensionsPaymentInputs
  , AuthenticationExtensionsPaymentOutputs(AuthenticationExtensionsPaymentOutputs), unAuthenticationExtensionsPaymentOutputs, noAuthenticationExtensionsPaymentOutputs, gTypeAuthenticationExtensionsPaymentOutputs
  , AuthenticatorAssertionResponse(AuthenticatorAssertionResponse), unAuthenticatorAssertionResponse, noAuthenticatorAssertionResponse, gTypeAuthenticatorAssertionResponse
  , AuthenticatorAttestationResponse(AuthenticatorAttestationResponse), unAuthenticatorAttestationResponse, noAuthenticatorAttestationResponse, gTypeAuthenticatorAttestationResponse
  , AuthenticatorResponse(AuthenticatorResponse), unAuthenticatorResponse, IsAuthenticatorResponse, toAuthenticatorResponse, noAuthenticatorResponse, gTypeAuthenticatorResponse
  , AuthenticatorSelectionCriteria(AuthenticatorSelectionCriteria), unAuthenticatorSelectionCriteria, noAuthenticatorSelectionCriteria, gTypeAuthenticatorSelectionCriteria
  , AutofillEvent(AutofillEvent), unAutofillEvent, noAutofillEvent, gTypeAutofillEvent
  , AvcEncoderConfig(AvcEncoderConfig), unAvcEncoderConfig, noAvcEncoderConfig, gTypeAvcEncoderConfig
  , BackgroundBlur(BackgroundBlur), unBackgroundBlur, noBackgroundBlur, gTypeBackgroundBlur
  , BarProp(BarProp), unBarProp, noBarProp, gTypeBarProp
  , BaseAudioContext(BaseAudioContext), unBaseAudioContext, IsBaseAudioContext, toBaseAudioContext, noBaseAudioContext, gTypeBaseAudioContext
  , BeforeUnloadEvent(BeforeUnloadEvent), unBeforeUnloadEvent, noBeforeUnloadEvent, gTypeBeforeUnloadEvent
  , BigInt64Array(BigInt64Array), unBigInt64Array, noBigInt64Array, gTypeBigInt64Array
  , BigUint64Array(BigUint64Array), unBigUint64Array, noBigUint64Array, gTypeBigUint64Array
  , BiquadFilterNode(BiquadFilterNode), unBiquadFilterNode, noBiquadFilterNode, gTypeBiquadFilterNode
  , BiquadFilterOptions(BiquadFilterOptions), unBiquadFilterOptions, noBiquadFilterOptions, gTypeBiquadFilterOptions
  , Blob(Blob), unBlob, IsBlob, toBlob, noBlob, gTypeBlob
  , BlobEvent(BlobEvent), unBlobEvent, noBlobEvent, gTypeBlobEvent
  , BlobEventInit(BlobEventInit), unBlobEventInit, noBlobEventInit, gTypeBlobEventInit
  , BlobPropertyBag(BlobPropertyBag), unBlobPropertyBag, IsBlobPropertyBag, toBlobPropertyBag, noBlobPropertyBag, gTypeBlobPropertyBag
  , Body(Body), unBody, IsBody, toBody, noBody, gTypeBody
  , BroadcastChannel(BroadcastChannel), unBroadcastChannel, noBroadcastChannel, gTypeBroadcastChannel
  , BrowserBoundSignature(BrowserBoundSignature), unBrowserBoundSignature, noBrowserBoundSignature, gTypeBrowserBoundSignature
  , ByteLengthQueuingStrategy(ByteLengthQueuingStrategy), unByteLengthQueuingStrategy, noByteLengthQueuingStrategy, gTypeByteLengthQueuingStrategy
  , CDATASection(CDATASection), unCDATASection, noCDATASection, gTypeCDATASection
  , CSSAnimation(CSSAnimation), unCSSAnimation, noCSSAnimation, gTypeCSSAnimation
  , CSSConditionRule(CSSConditionRule), unCSSConditionRule, IsCSSConditionRule, toCSSConditionRule, noCSSConditionRule, gTypeCSSConditionRule
  , CSSContainerCondition(CSSContainerCondition), unCSSContainerCondition, noCSSContainerCondition, gTypeCSSContainerCondition
  , CSSContainerRule(CSSContainerRule), unCSSContainerRule, noCSSContainerRule, gTypeCSSContainerRule
  , CSSCounterStyleRule(CSSCounterStyleRule), unCSSCounterStyleRule, noCSSCounterStyleRule, gTypeCSSCounterStyleRule
  , CSSFontFaceDescriptors(CSSFontFaceDescriptors), unCSSFontFaceDescriptors, noCSSFontFaceDescriptors, gTypeCSSFontFaceDescriptors
  , CSSFontFaceRule(CSSFontFaceRule), unCSSFontFaceRule, noCSSFontFaceRule, gTypeCSSFontFaceRule
  , CSSFontFeatureValuesRule(CSSFontFeatureValuesRule), unCSSFontFeatureValuesRule, noCSSFontFeatureValuesRule, gTypeCSSFontFeatureValuesRule
  , CSSFontPaletteValuesRule(CSSFontPaletteValuesRule), unCSSFontPaletteValuesRule, noCSSFontPaletteValuesRule, gTypeCSSFontPaletteValuesRule
  , CSSGroupingRule(CSSGroupingRule), unCSSGroupingRule, IsCSSGroupingRule, toCSSGroupingRule, noCSSGroupingRule, gTypeCSSGroupingRule
  , CSSImageValue(CSSImageValue), unCSSImageValue, noCSSImageValue, gTypeCSSImageValue
  , CSSImportRule(CSSImportRule), unCSSImportRule, noCSSImportRule, gTypeCSSImportRule
  , CSSKeyframeRule(CSSKeyframeRule), unCSSKeyframeRule, noCSSKeyframeRule, gTypeCSSKeyframeRule
  , CSSKeyframesRule(CSSKeyframesRule), unCSSKeyframesRule, noCSSKeyframesRule, gTypeCSSKeyframesRule
  , CSSKeywordValue(CSSKeywordValue), unCSSKeywordValue, noCSSKeywordValue, gTypeCSSKeywordValue
  , CSSLayerBlockRule(CSSLayerBlockRule), unCSSLayerBlockRule, noCSSLayerBlockRule, gTypeCSSLayerBlockRule
  , CSSLayerStatementRule(CSSLayerStatementRule), unCSSLayerStatementRule, noCSSLayerStatementRule, gTypeCSSLayerStatementRule
  , CSSMathClamp(CSSMathClamp), unCSSMathClamp, noCSSMathClamp, gTypeCSSMathClamp
  , CSSMathInvert(CSSMathInvert), unCSSMathInvert, noCSSMathInvert, gTypeCSSMathInvert
  , CSSMathMax(CSSMathMax), unCSSMathMax, noCSSMathMax, gTypeCSSMathMax
  , CSSMathMin(CSSMathMin), unCSSMathMin, noCSSMathMin, gTypeCSSMathMin
  , CSSMathNegate(CSSMathNegate), unCSSMathNegate, noCSSMathNegate, gTypeCSSMathNegate
  , CSSMathProduct(CSSMathProduct), unCSSMathProduct, noCSSMathProduct, gTypeCSSMathProduct
  , CSSMathSum(CSSMathSum), unCSSMathSum, noCSSMathSum, gTypeCSSMathSum
  , CSSMathValue(CSSMathValue), unCSSMathValue, IsCSSMathValue, toCSSMathValue, noCSSMathValue, gTypeCSSMathValue
  , CSSMatrixComponent(CSSMatrixComponent), unCSSMatrixComponent, noCSSMatrixComponent, gTypeCSSMatrixComponent
  , CSSMatrixComponentOptions(CSSMatrixComponentOptions), unCSSMatrixComponentOptions, noCSSMatrixComponentOptions, gTypeCSSMatrixComponentOptions
  , CSSMediaRule(CSSMediaRule), unCSSMediaRule, noCSSMediaRule, gTypeCSSMediaRule
  , CSSNamespaceRule(CSSNamespaceRule), unCSSNamespaceRule, noCSSNamespaceRule, gTypeCSSNamespaceRule
  , CSSNestedDeclarations(CSSNestedDeclarations), unCSSNestedDeclarations, noCSSNestedDeclarations, gTypeCSSNestedDeclarations
  , CSSNumericArray(CSSNumericArray), unCSSNumericArray, noCSSNumericArray, gTypeCSSNumericArray
  , CSSNumericType(CSSNumericType), unCSSNumericType, noCSSNumericType, gTypeCSSNumericType
  , CSSNumericValue(CSSNumericValue), unCSSNumericValue, IsCSSNumericValue, toCSSNumericValue, noCSSNumericValue, gTypeCSSNumericValue
  , CSSPageDescriptors(CSSPageDescriptors), unCSSPageDescriptors, noCSSPageDescriptors, gTypeCSSPageDescriptors
  , CSSPageRule(CSSPageRule), unCSSPageRule, noCSSPageRule, gTypeCSSPageRule
  , CSSPerspective(CSSPerspective), unCSSPerspective, noCSSPerspective, gTypeCSSPerspective
  , CSSPositionTryDescriptors(CSSPositionTryDescriptors), unCSSPositionTryDescriptors, noCSSPositionTryDescriptors, gTypeCSSPositionTryDescriptors
  , CSSPositionTryRule(CSSPositionTryRule), unCSSPositionTryRule, noCSSPositionTryRule, gTypeCSSPositionTryRule
  , CSSPropertyRule(CSSPropertyRule), unCSSPropertyRule, noCSSPropertyRule, gTypeCSSPropertyRule
  , CSSRotate(CSSRotate), unCSSRotate, noCSSRotate, gTypeCSSRotate
  , CSSRule(CSSRule), unCSSRule, IsCSSRule, toCSSRule, noCSSRule, gTypeCSSRule
  , CSSRuleList(CSSRuleList), unCSSRuleList, noCSSRuleList, gTypeCSSRuleList
  , CSSScale(CSSScale), unCSSScale, noCSSScale, gTypeCSSScale
  , CSSScopeRule(CSSScopeRule), unCSSScopeRule, noCSSScopeRule, gTypeCSSScopeRule
  , CSSSkew(CSSSkew), unCSSSkew, noCSSSkew, gTypeCSSSkew
  , CSSSkewX(CSSSkewX), unCSSSkewX, noCSSSkewX, gTypeCSSSkewX
  , CSSSkewY(CSSSkewY), unCSSSkewY, noCSSSkewY, gTypeCSSSkewY
  , CSSStartingStyleRule(CSSStartingStyleRule), unCSSStartingStyleRule, noCSSStartingStyleRule, gTypeCSSStartingStyleRule
  , CSSStyleDeclaration(CSSStyleDeclaration), unCSSStyleDeclaration, IsCSSStyleDeclaration, toCSSStyleDeclaration, noCSSStyleDeclaration, gTypeCSSStyleDeclaration
  , CSSStyleProperties(CSSStyleProperties), unCSSStyleProperties, noCSSStyleProperties, gTypeCSSStyleProperties
  , CSSStyleRule(CSSStyleRule), unCSSStyleRule, noCSSStyleRule, gTypeCSSStyleRule
  , CSSStyleSheet(CSSStyleSheet), unCSSStyleSheet, noCSSStyleSheet, gTypeCSSStyleSheet
  , CSSStyleSheetInit(CSSStyleSheetInit), unCSSStyleSheetInit, noCSSStyleSheetInit, gTypeCSSStyleSheetInit
  , CSSStyleValue(CSSStyleValue), unCSSStyleValue, IsCSSStyleValue, toCSSStyleValue, noCSSStyleValue, gTypeCSSStyleValue
  , CSSSupportsRule(CSSSupportsRule), unCSSSupportsRule, noCSSSupportsRule, gTypeCSSSupportsRule
  , CSSTransformComponent(CSSTransformComponent), unCSSTransformComponent, IsCSSTransformComponent, toCSSTransformComponent, noCSSTransformComponent, gTypeCSSTransformComponent
  , CSSTransformValue(CSSTransformValue), unCSSTransformValue, noCSSTransformValue, gTypeCSSTransformValue
  , CSSTransition(CSSTransition), unCSSTransition, noCSSTransition, gTypeCSSTransition
  , CSSTranslate(CSSTranslate), unCSSTranslate, noCSSTranslate, gTypeCSSTranslate
  , CSSUnitValue(CSSUnitValue), unCSSUnitValue, noCSSUnitValue, gTypeCSSUnitValue
  , CSSUnparsedValue(CSSUnparsedValue), unCSSUnparsedValue, noCSSUnparsedValue, gTypeCSSUnparsedValue
  , CSSVariableReferenceValue(CSSVariableReferenceValue), unCSSVariableReferenceValue, noCSSVariableReferenceValue, gTypeCSSVariableReferenceValue
  , CSSViewTransitionRule(CSSViewTransitionRule), unCSSViewTransitionRule, noCSSViewTransitionRule, gTypeCSSViewTransitionRule
  , Cache(Cache), unCache, noCache, gTypeCache
  , CacheQueryOptions(CacheQueryOptions), unCacheQueryOptions, IsCacheQueryOptions, toCacheQueryOptions, noCacheQueryOptions, gTypeCacheQueryOptions
  , CacheStorage(CacheStorage), unCacheStorage, noCacheStorage, gTypeCacheStorage
  , CanvasCaptureMediaStreamTrack(CanvasCaptureMediaStreamTrack), unCanvasCaptureMediaStreamTrack, noCanvasCaptureMediaStreamTrack, gTypeCanvasCaptureMediaStreamTrack
  , CanvasCompositing(CanvasCompositing), unCanvasCompositing, IsCanvasCompositing, toCanvasCompositing, noCanvasCompositing, gTypeCanvasCompositing
  , CanvasDrawImage(CanvasDrawImage), unCanvasDrawImage, IsCanvasDrawImage, toCanvasDrawImage, noCanvasDrawImage, gTypeCanvasDrawImage
  , CanvasDrawPath(CanvasDrawPath), unCanvasDrawPath, IsCanvasDrawPath, toCanvasDrawPath, noCanvasDrawPath, gTypeCanvasDrawPath
  , CanvasFillStrokeStyles(CanvasFillStrokeStyles), unCanvasFillStrokeStyles, IsCanvasFillStrokeStyles, toCanvasFillStrokeStyles, noCanvasFillStrokeStyles, gTypeCanvasFillStrokeStyles
  , CanvasFilters(CanvasFilters), unCanvasFilters, IsCanvasFilters, toCanvasFilters, noCanvasFilters, gTypeCanvasFilters
  , CanvasGradient(CanvasGradient), unCanvasGradient, noCanvasGradient, gTypeCanvasGradient
  , CanvasImageData(CanvasImageData), unCanvasImageData, IsCanvasImageData, toCanvasImageData, noCanvasImageData, gTypeCanvasImageData
  , CanvasImageSmoothing(CanvasImageSmoothing), unCanvasImageSmoothing, IsCanvasImageSmoothing, toCanvasImageSmoothing, noCanvasImageSmoothing, gTypeCanvasImageSmoothing
  , CanvasPath(CanvasPath), unCanvasPath, IsCanvasPath, toCanvasPath, noCanvasPath, gTypeCanvasPath
  , CanvasPathDrawingStyles(CanvasPathDrawingStyles), unCanvasPathDrawingStyles, IsCanvasPathDrawingStyles, toCanvasPathDrawingStyles, noCanvasPathDrawingStyles, gTypeCanvasPathDrawingStyles
  , CanvasPattern(CanvasPattern), unCanvasPattern, noCanvasPattern, gTypeCanvasPattern
  , CanvasRect(CanvasRect), unCanvasRect, IsCanvasRect, toCanvasRect, noCanvasRect, gTypeCanvasRect
  , CanvasRenderingContext2D(CanvasRenderingContext2D), unCanvasRenderingContext2D, noCanvasRenderingContext2D, gTypeCanvasRenderingContext2D
  , CanvasRenderingContext2DSettings(CanvasRenderingContext2DSettings), unCanvasRenderingContext2DSettings, noCanvasRenderingContext2DSettings, gTypeCanvasRenderingContext2DSettings
  , CanvasSettings(CanvasSettings), unCanvasSettings, IsCanvasSettings, toCanvasSettings, noCanvasSettings, gTypeCanvasSettings
  , CanvasShadowStyles(CanvasShadowStyles), unCanvasShadowStyles, IsCanvasShadowStyles, toCanvasShadowStyles, noCanvasShadowStyles, gTypeCanvasShadowStyles
  , CanvasState(CanvasState), unCanvasState, IsCanvasState, toCanvasState, noCanvasState, gTypeCanvasState
  , CanvasText(CanvasText), unCanvasText, IsCanvasText, toCanvasText, noCanvasText, gTypeCanvasText
  , CanvasTextDrawingStyles(CanvasTextDrawingStyles), unCanvasTextDrawingStyles, IsCanvasTextDrawingStyles, toCanvasTextDrawingStyles, noCanvasTextDrawingStyles, gTypeCanvasTextDrawingStyles
  , CanvasTransform(CanvasTransform), unCanvasTransform, IsCanvasTransform, toCanvasTransform, noCanvasTransform, gTypeCanvasTransform
  , CanvasUserInterface(CanvasUserInterface), unCanvasUserInterface, IsCanvasUserInterface, toCanvasUserInterface, noCanvasUserInterface, gTypeCanvasUserInterface
  , CaptureController(CaptureController), unCaptureController, noCaptureController, gTypeCaptureController
  , CaretPosition(CaretPosition), unCaretPosition, noCaretPosition, gTypeCaretPosition
  , CaretPositionFromPointOptions(CaretPositionFromPointOptions), unCaretPositionFromPointOptions, noCaretPositionFromPointOptions, gTypeCaretPositionFromPointOptions
  , ChannelMergerNode(ChannelMergerNode), unChannelMergerNode, noChannelMergerNode, gTypeChannelMergerNode
  , ChannelMergerOptions(ChannelMergerOptions), unChannelMergerOptions, noChannelMergerOptions, gTypeChannelMergerOptions
  , ChannelSplitterNode(ChannelSplitterNode), unChannelSplitterNode, noChannelSplitterNode, gTypeChannelSplitterNode
  , ChannelSplitterOptions(ChannelSplitterOptions), unChannelSplitterOptions, noChannelSplitterOptions, gTypeChannelSplitterOptions
  , ChapterInformationInit(ChapterInformationInit), unChapterInformationInit, noChapterInformationInit, gTypeChapterInformationInit
  , CharacterData(CharacterData), unCharacterData, IsCharacterData, toCharacterData, noCharacterData, gTypeCharacterData
  , CheckVisibilityOptions(CheckVisibilityOptions), unCheckVisibilityOptions, noCheckVisibilityOptions, gTypeCheckVisibilityOptions
  , ChildNode(ChildNode), unChildNode, IsChildNode, toChildNode, noChildNode, gTypeChildNode
  , Client(Client), unClient, IsClient, toClient, noClient, gTypeClient
  , ClientQueryOptions(ClientQueryOptions), unClientQueryOptions, noClientQueryOptions, gTypeClientQueryOptions
  , Clients(Clients), unClients, noClients, gTypeClients
  , Clipboard(Clipboard), unClipboard, noClipboard, gTypeClipboard
  , ClipboardChangeEvent(ClipboardChangeEvent), unClipboardChangeEvent, noClipboardChangeEvent, gTypeClipboardChangeEvent
  , ClipboardEvent(ClipboardEvent), unClipboardEvent, noClipboardEvent, gTypeClipboardEvent
  , ClipboardEventInit(ClipboardEventInit), unClipboardEventInit, noClipboardEventInit, gTypeClipboardEventInit
  , ClipboardItem(ClipboardItem), unClipboardItem, noClipboardItem, gTypeClipboardItem
  , ClipboardItemOptions(ClipboardItemOptions), unClipboardItemOptions, noClipboardItemOptions, gTypeClipboardItemOptions
  , ClipboardUnsanitizedFormats(ClipboardUnsanitizedFormats), unClipboardUnsanitizedFormats, noClipboardUnsanitizedFormats, gTypeClipboardUnsanitizedFormats
  , CloseEvent(CloseEvent), unCloseEvent, noCloseEvent, gTypeCloseEvent
  , CloseEventInit(CloseEventInit), unCloseEventInit, noCloseEventInit, gTypeCloseEventInit
  , CloseWatcher(CloseWatcher), unCloseWatcher, noCloseWatcher, gTypeCloseWatcher
  , CloseWatcherOptions(CloseWatcherOptions), unCloseWatcherOptions, noCloseWatcherOptions, gTypeCloseWatcherOptions
  , CommandEvent(CommandEvent), unCommandEvent, noCommandEvent, gTypeCommandEvent
  , CommandEventInit(CommandEventInit), unCommandEventInit, noCommandEventInit, gTypeCommandEventInit
  , Comment(Comment), unComment, noComment, gTypeComment
  , CompositionEvent(CompositionEvent), unCompositionEvent, noCompositionEvent, gTypeCompositionEvent
  , CompositionEventInit(CompositionEventInit), unCompositionEventInit, noCompositionEventInit, gTypeCompositionEventInit
  , CompressionStream(CompressionStream), unCompressionStream, noCompressionStream, gTypeCompressionStream
  , ComputedEffectTiming(ComputedEffectTiming), unComputedEffectTiming, noComputedEffectTiming, gTypeComputedEffectTiming
  , ConstantSourceNode(ConstantSourceNode), unConstantSourceNode, noConstantSourceNode, gTypeConstantSourceNode
  , ConstantSourceOptions(ConstantSourceOptions), unConstantSourceOptions, noConstantSourceOptions, gTypeConstantSourceOptions
  , ConstrainBooleanOrDOMStringParameters(ConstrainBooleanOrDOMStringParameters), unConstrainBooleanOrDOMStringParameters, noConstrainBooleanOrDOMStringParameters, gTypeConstrainBooleanOrDOMStringParameters
  , ConstrainBooleanParameters(ConstrainBooleanParameters), unConstrainBooleanParameters, noConstrainBooleanParameters, gTypeConstrainBooleanParameters
  , ConstrainDOMStringParameters(ConstrainDOMStringParameters), unConstrainDOMStringParameters, noConstrainDOMStringParameters, gTypeConstrainDOMStringParameters
  , ConstrainDoubleRange(ConstrainDoubleRange), unConstrainDoubleRange, noConstrainDoubleRange, gTypeConstrainDoubleRange
  , ConstrainPoint2DParameters(ConstrainPoint2DParameters), unConstrainPoint2DParameters, noConstrainPoint2DParameters, gTypeConstrainPoint2DParameters
  , ConstrainULongRange(ConstrainULongRange), unConstrainULongRange, noConstrainULongRange, gTypeConstrainULongRange
  , ContactAddress(ContactAddress), unContactAddress, noContactAddress, gTypeContactAddress
  , ContentVisibilityAutoStateChangeEvent(ContentVisibilityAutoStateChangeEvent), unContentVisibilityAutoStateChangeEvent, noContentVisibilityAutoStateChangeEvent, gTypeContentVisibilityAutoStateChangeEvent
  , ContentVisibilityAutoStateChangeEventInit(ContentVisibilityAutoStateChangeEventInit), unContentVisibilityAutoStateChangeEventInit, noContentVisibilityAutoStateChangeEventInit, gTypeContentVisibilityAutoStateChangeEventInit
  , ConvolverNode(ConvolverNode), unConvolverNode, noConvolverNode, gTypeConvolverNode
  , ConvolverOptions(ConvolverOptions), unConvolverOptions, noConvolverOptions, gTypeConvolverOptions
  , CookieChangeEvent(CookieChangeEvent), unCookieChangeEvent, noCookieChangeEvent, gTypeCookieChangeEvent
  , CookieChangeEventInit(CookieChangeEventInit), unCookieChangeEventInit, noCookieChangeEventInit, gTypeCookieChangeEventInit
  , CookieInit(CookieInit), unCookieInit, noCookieInit, gTypeCookieInit
  , CookieListItem(CookieListItem), unCookieListItem, noCookieListItem, gTypeCookieListItem
  , CookieStore(CookieStore), unCookieStore, noCookieStore, gTypeCookieStore
  , CookieStoreDeleteOptions(CookieStoreDeleteOptions), unCookieStoreDeleteOptions, noCookieStoreDeleteOptions, gTypeCookieStoreDeleteOptions
  , CookieStoreGetOptions(CookieStoreGetOptions), unCookieStoreGetOptions, noCookieStoreGetOptions, gTypeCookieStoreGetOptions
  , CookieStoreManager(CookieStoreManager), unCookieStoreManager, noCookieStoreManager, gTypeCookieStoreManager
  , CountQueuingStrategy(CountQueuingStrategy), unCountQueuingStrategy, noCountQueuingStrategy, gTypeCountQueuingStrategy
  , Credential(Credential), unCredential, IsCredential, toCredential, noCredential, gTypeCredential
  , CredentialCreationOptions(CredentialCreationOptions), unCredentialCreationOptions, noCredentialCreationOptions, gTypeCredentialCreationOptions
  , CredentialData(CredentialData), unCredentialData, IsCredentialData, toCredentialData, noCredentialData, gTypeCredentialData
  , CredentialPropertiesOutput(CredentialPropertiesOutput), unCredentialPropertiesOutput, noCredentialPropertiesOutput, gTypeCredentialPropertiesOutput
  , CredentialRequestOptions(CredentialRequestOptions), unCredentialRequestOptions, noCredentialRequestOptions, gTypeCredentialRequestOptions
  , CredentialsContainer(CredentialsContainer), unCredentialsContainer, noCredentialsContainer, gTypeCredentialsContainer
  , Crypto(Crypto), unCrypto, noCrypto, gTypeCrypto
  , CryptoKey(CryptoKey), unCryptoKey, noCryptoKey, gTypeCryptoKey
  , CryptoKeyPair(CryptoKeyPair), unCryptoKeyPair, noCryptoKeyPair, gTypeCryptoKeyPair
  , CurrentUserDetailsOptions(CurrentUserDetailsOptions), unCurrentUserDetailsOptions, noCurrentUserDetailsOptions, gTypeCurrentUserDetailsOptions
  , CustomElementRegistry(CustomElementRegistry), unCustomElementRegistry, noCustomElementRegistry, gTypeCustomElementRegistry
  , CustomEvent(CustomEvent), unCustomEvent, noCustomEvent, gTypeCustomEvent
  , CustomEventInit(CustomEventInit), unCustomEventInit, noCustomEventInit, gTypeCustomEventInit
  , CustomStateSet(CustomStateSet), unCustomStateSet, noCustomStateSet, gTypeCustomStateSet
  , DOMException(DOMException), unDOMException, IsDOMException, toDOMException, noDOMException, gTypeDOMException
  , DOMImplementation(DOMImplementation), unDOMImplementation, noDOMImplementation, gTypeDOMImplementation
  , DOMMatrix(DOMMatrix), unDOMMatrix, noDOMMatrix, gTypeDOMMatrix
  , DOMMatrix2DInit(DOMMatrix2DInit), unDOMMatrix2DInit, IsDOMMatrix2DInit, toDOMMatrix2DInit, noDOMMatrix2DInit, gTypeDOMMatrix2DInit
  , DOMMatrixInit(DOMMatrixInit), unDOMMatrixInit, noDOMMatrixInit, gTypeDOMMatrixInit
  , DOMMatrixReadOnly(DOMMatrixReadOnly), unDOMMatrixReadOnly, IsDOMMatrixReadOnly, toDOMMatrixReadOnly, noDOMMatrixReadOnly, gTypeDOMMatrixReadOnly
  , DOMParser(DOMParser), unDOMParser, noDOMParser, gTypeDOMParser
  , DOMPoint(DOMPoint), unDOMPoint, noDOMPoint, gTypeDOMPoint
  , DOMPointInit(DOMPointInit), unDOMPointInit, noDOMPointInit, gTypeDOMPointInit
  , DOMPointReadOnly(DOMPointReadOnly), unDOMPointReadOnly, IsDOMPointReadOnly, toDOMPointReadOnly, noDOMPointReadOnly, gTypeDOMPointReadOnly
  , DOMQuad(DOMQuad), unDOMQuad, noDOMQuad, gTypeDOMQuad
  , DOMQuadInit(DOMQuadInit), unDOMQuadInit, noDOMQuadInit, gTypeDOMQuadInit
  , DOMRect(DOMRect), unDOMRect, noDOMRect, gTypeDOMRect
  , DOMRectInit(DOMRectInit), unDOMRectInit, noDOMRectInit, gTypeDOMRectInit
  , DOMRectList(DOMRectList), unDOMRectList, noDOMRectList, gTypeDOMRectList
  , DOMRectReadOnly(DOMRectReadOnly), unDOMRectReadOnly, IsDOMRectReadOnly, toDOMRectReadOnly, noDOMRectReadOnly, gTypeDOMRectReadOnly
  , DOMStringList(DOMStringList), unDOMStringList, noDOMStringList, gTypeDOMStringList
  , DOMStringMap(DOMStringMap), unDOMStringMap, noDOMStringMap, gTypeDOMStringMap
  , DOMTokenList(DOMTokenList), unDOMTokenList, noDOMTokenList, gTypeDOMTokenList
  , DataCue(DataCue), unDataCue, noDataCue, gTypeDataCue
  , DataTransfer(DataTransfer), unDataTransfer, noDataTransfer, gTypeDataTransfer
  , DataTransferItem(DataTransferItem), unDataTransferItem, noDataTransferItem, gTypeDataTransferItem
  , DataTransferItemList(DataTransferItemList), unDataTransferItemList, noDataTransferItemList, gTypeDataTransferItemList
  , DataView(DataView), unDataView, noDataView, gTypeDataView
  , DecompressionStream(DecompressionStream), unDecompressionStream, noDecompressionStream, gTypeDecompressionStream
  , DedicatedWorkerGlobalScope(DedicatedWorkerGlobalScope), unDedicatedWorkerGlobalScope, noDedicatedWorkerGlobalScope, gTypeDedicatedWorkerGlobalScope
  , DelayNode(DelayNode), unDelayNode, noDelayNode, gTypeDelayNode
  , DelayOptions(DelayOptions), unDelayOptions, noDelayOptions, gTypeDelayOptions
  , DeviceChangeEvent(DeviceChangeEvent), unDeviceChangeEvent, noDeviceChangeEvent, gTypeDeviceChangeEvent
  , DeviceMotionEvent(DeviceMotionEvent), unDeviceMotionEvent, noDeviceMotionEvent, gTypeDeviceMotionEvent
  , DeviceMotionEventAcceleration(DeviceMotionEventAcceleration), unDeviceMotionEventAcceleration, noDeviceMotionEventAcceleration, gTypeDeviceMotionEventAcceleration
  , DeviceMotionEventAccelerationInit(DeviceMotionEventAccelerationInit), unDeviceMotionEventAccelerationInit, noDeviceMotionEventAccelerationInit, gTypeDeviceMotionEventAccelerationInit
  , DeviceMotionEventInit(DeviceMotionEventInit), unDeviceMotionEventInit, noDeviceMotionEventInit, gTypeDeviceMotionEventInit
  , DeviceMotionEventRotationRate(DeviceMotionEventRotationRate), unDeviceMotionEventRotationRate, noDeviceMotionEventRotationRate, gTypeDeviceMotionEventRotationRate
  , DeviceMotionEventRotationRateInit(DeviceMotionEventRotationRateInit), unDeviceMotionEventRotationRateInit, noDeviceMotionEventRotationRateInit, gTypeDeviceMotionEventRotationRateInit
  , DeviceOrientationEvent(DeviceOrientationEvent), unDeviceOrientationEvent, noDeviceOrientationEvent, gTypeDeviceOrientationEvent
  , DeviceOrientationEventInit(DeviceOrientationEventInit), unDeviceOrientationEventInit, noDeviceOrientationEventInit, gTypeDeviceOrientationEventInit
  , DigitalCredential(DigitalCredential), unDigitalCredential, noDigitalCredential, gTypeDigitalCredential
  , DigitalCredentialCreateRequest(DigitalCredentialCreateRequest), unDigitalCredentialCreateRequest, noDigitalCredentialCreateRequest, gTypeDigitalCredentialCreateRequest
  , DigitalCredentialCreationOptions(DigitalCredentialCreationOptions), unDigitalCredentialCreationOptions, noDigitalCredentialCreationOptions, gTypeDigitalCredentialCreationOptions
  , DigitalCredentialGetRequest(DigitalCredentialGetRequest), unDigitalCredentialGetRequest, noDigitalCredentialGetRequest, gTypeDigitalCredentialGetRequest
  , DigitalCredentialRequestOptions(DigitalCredentialRequestOptions), unDigitalCredentialRequestOptions, noDigitalCredentialRequestOptions, gTypeDigitalCredentialRequestOptions
  , DisplayMediaStreamOptions(DisplayMediaStreamOptions), unDisplayMediaStreamOptions, noDisplayMediaStreamOptions, gTypeDisplayMediaStreamOptions
  , Document(Document), unDocument, IsDocument, toDocument, noDocument, gTypeDocument
  , DocumentFragment(DocumentFragment), unDocumentFragment, IsDocumentFragment, toDocumentFragment, noDocumentFragment, gTypeDocumentFragment
  , DocumentOrShadowRoot(DocumentOrShadowRoot), unDocumentOrShadowRoot, IsDocumentOrShadowRoot, toDocumentOrShadowRoot, noDocumentOrShadowRoot, gTypeDocumentOrShadowRoot
  , DocumentPictureInPicture(DocumentPictureInPicture), unDocumentPictureInPicture, noDocumentPictureInPicture, gTypeDocumentPictureInPicture
  , DocumentPictureInPictureEvent(DocumentPictureInPictureEvent), unDocumentPictureInPictureEvent, noDocumentPictureInPictureEvent, gTypeDocumentPictureInPictureEvent
  , DocumentPictureInPictureEventInit(DocumentPictureInPictureEventInit), unDocumentPictureInPictureEventInit, noDocumentPictureInPictureEventInit, gTypeDocumentPictureInPictureEventInit
  , DocumentPictureInPictureOptions(DocumentPictureInPictureOptions), unDocumentPictureInPictureOptions, noDocumentPictureInPictureOptions, gTypeDocumentPictureInPictureOptions
  , DocumentTimeline(DocumentTimeline), unDocumentTimeline, noDocumentTimeline, gTypeDocumentTimeline
  , DocumentTimelineOptions(DocumentTimelineOptions), unDocumentTimelineOptions, noDocumentTimelineOptions, gTypeDocumentTimelineOptions
  , DocumentType(DocumentType), unDocumentType, noDocumentType, gTypeDocumentType
  , DoubleRange(DoubleRange), unDoubleRange, IsDoubleRange, toDoubleRange, noDoubleRange, gTypeDoubleRange
  , DragEvent(DragEvent), unDragEvent, noDragEvent, gTypeDragEvent
  , DragEventInit(DragEventInit), unDragEventInit, noDragEventInit, gTypeDragEventInit
  , DynamicsCompressorNode(DynamicsCompressorNode), unDynamicsCompressorNode, noDynamicsCompressorNode, gTypeDynamicsCompressorNode
  , DynamicsCompressorOptions(DynamicsCompressorOptions), unDynamicsCompressorOptions, noDynamicsCompressorOptions, gTypeDynamicsCompressorOptions
  , EXT_blend_minmax(EXT_blend_minmax), unEXT_blend_minmax, noEXT_blend_minmax, gTypeEXT_blend_minmax
  , EXT_clip_control(EXT_clip_control), unEXT_clip_control, noEXT_clip_control, gTypeEXT_clip_control
  , EXT_color_buffer_float(EXT_color_buffer_float), unEXT_color_buffer_float, noEXT_color_buffer_float, gTypeEXT_color_buffer_float
  , EXT_color_buffer_half_float(EXT_color_buffer_half_float), unEXT_color_buffer_half_float, noEXT_color_buffer_half_float, gTypeEXT_color_buffer_half_float
  , EXT_float_blend(EXT_float_blend), unEXT_float_blend, noEXT_float_blend, gTypeEXT_float_blend
  , EXT_frag_depth(EXT_frag_depth), unEXT_frag_depth, noEXT_frag_depth, gTypeEXT_frag_depth
  , EXT_polygon_offset_clamp(EXT_polygon_offset_clamp), unEXT_polygon_offset_clamp, noEXT_polygon_offset_clamp, gTypeEXT_polygon_offset_clamp
  , EXT_sRGB(EXT_sRGB), unEXT_sRGB, noEXT_sRGB, gTypeEXT_sRGB
  , EXT_shader_texture_lod(EXT_shader_texture_lod), unEXT_shader_texture_lod, noEXT_shader_texture_lod, gTypeEXT_shader_texture_lod
  , EXT_texture_compression_bptc(EXT_texture_compression_bptc), unEXT_texture_compression_bptc, noEXT_texture_compression_bptc, gTypeEXT_texture_compression_bptc
  , EXT_texture_compression_rgtc(EXT_texture_compression_rgtc), unEXT_texture_compression_rgtc, noEXT_texture_compression_rgtc, gTypeEXT_texture_compression_rgtc
  , EXT_texture_filter_anisotropic(EXT_texture_filter_anisotropic), unEXT_texture_filter_anisotropic, noEXT_texture_filter_anisotropic, gTypeEXT_texture_filter_anisotropic
  , EXT_texture_mirror_clamp_to_edge(EXT_texture_mirror_clamp_to_edge), unEXT_texture_mirror_clamp_to_edge, noEXT_texture_mirror_clamp_to_edge, gTypeEXT_texture_mirror_clamp_to_edge
  , EXT_texture_norm16(EXT_texture_norm16), unEXT_texture_norm16, noEXT_texture_norm16, gTypeEXT_texture_norm16
  , EffectTiming(EffectTiming), unEffectTiming, IsEffectTiming, toEffectTiming, noEffectTiming, gTypeEffectTiming
  , Element(Element), unElement, IsElement, toElement, noElement, gTypeElement
  , ElementCSSInlineStyle(ElementCSSInlineStyle), unElementCSSInlineStyle, IsElementCSSInlineStyle, toElementCSSInlineStyle, noElementCSSInlineStyle, gTypeElementCSSInlineStyle
  , ElementContentEditable(ElementContentEditable), unElementContentEditable, IsElementContentEditable, toElementContentEditable, noElementContentEditable, gTypeElementContentEditable
  , ElementCreationOptions(ElementCreationOptions), unElementCreationOptions, noElementCreationOptions, gTypeElementCreationOptions
  , ElementDefinitionOptions(ElementDefinitionOptions), unElementDefinitionOptions, noElementDefinitionOptions, gTypeElementDefinitionOptions
  , ElementInternals(ElementInternals), unElementInternals, noElementInternals, gTypeElementInternals
  , EncodedAudioChunk(EncodedAudioChunk), unEncodedAudioChunk, noEncodedAudioChunk, gTypeEncodedAudioChunk
  , EncodedAudioChunkInit(EncodedAudioChunkInit), unEncodedAudioChunkInit, noEncodedAudioChunkInit, gTypeEncodedAudioChunkInit
  , EncodedAudioChunkMetadata(EncodedAudioChunkMetadata), unEncodedAudioChunkMetadata, noEncodedAudioChunkMetadata, gTypeEncodedAudioChunkMetadata
  , EncodedVideoChunk(EncodedVideoChunk), unEncodedVideoChunk, noEncodedVideoChunk, gTypeEncodedVideoChunk
  , EncodedVideoChunkInit(EncodedVideoChunkInit), unEncodedVideoChunkInit, noEncodedVideoChunkInit, gTypeEncodedVideoChunkInit
  , EncodedVideoChunkMetadata(EncodedVideoChunkMetadata), unEncodedVideoChunkMetadata, noEncodedVideoChunkMetadata, gTypeEncodedVideoChunkMetadata
  , ErrorEvent(ErrorEvent), unErrorEvent, noErrorEvent, gTypeErrorEvent
  , ErrorEventInit(ErrorEventInit), unErrorEventInit, noErrorEventInit, gTypeErrorEventInit
  , Event(Event), unEvent, IsEvent, toEvent, noEvent, gTypeEvent
  , EventCounts(EventCounts), unEventCounts, noEventCounts, gTypeEventCounts
  , EventInit(EventInit), unEventInit, IsEventInit, toEventInit, noEventInit, gTypeEventInit
  , EventListener(EventListener), unEventListener, noEventListener, gTypeEventListener
  , EventListenerOptions(EventListenerOptions), unEventListenerOptions, IsEventListenerOptions, toEventListenerOptions, noEventListenerOptions, gTypeEventListenerOptions
  , EventModifierInit(EventModifierInit), unEventModifierInit, IsEventModifierInit, toEventModifierInit, noEventModifierInit, gTypeEventModifierInit
  , EventSource(EventSource), unEventSource, noEventSource, gTypeEventSource
  , EventSourceInit(EventSourceInit), unEventSourceInit, noEventSourceInit, gTypeEventSourceInit
  , EventTarget(EventTarget), unEventTarget, IsEventTarget, toEventTarget, noEventTarget, gTypeEventTarget
  , ExtendableCookieChangeEvent(ExtendableCookieChangeEvent), unExtendableCookieChangeEvent, noExtendableCookieChangeEvent, gTypeExtendableCookieChangeEvent
  , ExtendableCookieChangeEventInit(ExtendableCookieChangeEventInit), unExtendableCookieChangeEventInit, noExtendableCookieChangeEventInit, gTypeExtendableCookieChangeEventInit
  , ExtendableEvent(ExtendableEvent), unExtendableEvent, IsExtendableEvent, toExtendableEvent, noExtendableEvent, gTypeExtendableEvent
  , ExtendableEventInit(ExtendableEventInit), unExtendableEventInit, IsExtendableEventInit, toExtendableEventInit, noExtendableEventInit, gTypeExtendableEventInit
  , ExtendableMessageEvent(ExtendableMessageEvent), unExtendableMessageEvent, noExtendableMessageEvent, gTypeExtendableMessageEvent
  , ExtendableMessageEventInit(ExtendableMessageEventInit), unExtendableMessageEventInit, noExtendableMessageEventInit, gTypeExtendableMessageEventInit
  , External(External), unExternal, noExternal, gTypeExternal
  , FederatedCredentialInit(FederatedCredentialInit), unFederatedCredentialInit, noFederatedCredentialInit, gTypeFederatedCredentialInit
  , FederatedCredentialRequestOptions(FederatedCredentialRequestOptions), unFederatedCredentialRequestOptions, noFederatedCredentialRequestOptions, gTypeFederatedCredentialRequestOptions
  , FetchEvent(FetchEvent), unFetchEvent, noFetchEvent, gTypeFetchEvent
  , FetchEventInit(FetchEventInit), unFetchEventInit, noFetchEventInit, gTypeFetchEventInit
  , File(File), unFile, noFile, gTypeFile
  , FileList(FileList), unFileList, noFileList, gTypeFileList
  , FilePropertyBag(FilePropertyBag), unFilePropertyBag, noFilePropertyBag, gTypeFilePropertyBag
  , FileReader(FileReader), unFileReader, noFileReader, gTypeFileReader
  , FileReaderSync(FileReaderSync), unFileReaderSync, noFileReaderSync, gTypeFileReaderSync
  , FileSystem(FileSystem), unFileSystem, noFileSystem, gTypeFileSystem
  , FileSystemCreateWritableOptions(FileSystemCreateWritableOptions), unFileSystemCreateWritableOptions, noFileSystemCreateWritableOptions, gTypeFileSystemCreateWritableOptions
  , FileSystemDirectoryEntry(FileSystemDirectoryEntry), unFileSystemDirectoryEntry, noFileSystemDirectoryEntry, gTypeFileSystemDirectoryEntry
  , FileSystemDirectoryHandle(FileSystemDirectoryHandle), unFileSystemDirectoryHandle, noFileSystemDirectoryHandle, gTypeFileSystemDirectoryHandle
  , FileSystemDirectoryReader(FileSystemDirectoryReader), unFileSystemDirectoryReader, noFileSystemDirectoryReader, gTypeFileSystemDirectoryReader
  , FileSystemEntry(FileSystemEntry), unFileSystemEntry, IsFileSystemEntry, toFileSystemEntry, noFileSystemEntry, gTypeFileSystemEntry
  , FileSystemFileEntry(FileSystemFileEntry), unFileSystemFileEntry, noFileSystemFileEntry, gTypeFileSystemFileEntry
  , FileSystemFileHandle(FileSystemFileHandle), unFileSystemFileHandle, noFileSystemFileHandle, gTypeFileSystemFileHandle
  , FileSystemFlags(FileSystemFlags), unFileSystemFlags, noFileSystemFlags, gTypeFileSystemFlags
  , FileSystemGetDirectoryOptions(FileSystemGetDirectoryOptions), unFileSystemGetDirectoryOptions, noFileSystemGetDirectoryOptions, gTypeFileSystemGetDirectoryOptions
  , FileSystemGetFileOptions(FileSystemGetFileOptions), unFileSystemGetFileOptions, noFileSystemGetFileOptions, gTypeFileSystemGetFileOptions
  , FileSystemHandle(FileSystemHandle), unFileSystemHandle, IsFileSystemHandle, toFileSystemHandle, noFileSystemHandle, gTypeFileSystemHandle
  , FileSystemReadWriteOptions(FileSystemReadWriteOptions), unFileSystemReadWriteOptions, noFileSystemReadWriteOptions, gTypeFileSystemReadWriteOptions
  , FileSystemRemoveOptions(FileSystemRemoveOptions), unFileSystemRemoveOptions, noFileSystemRemoveOptions, gTypeFileSystemRemoveOptions
  , FileSystemSyncAccessHandle(FileSystemSyncAccessHandle), unFileSystemSyncAccessHandle, noFileSystemSyncAccessHandle, gTypeFileSystemSyncAccessHandle
  , FileSystemWritableFileStream(FileSystemWritableFileStream), unFileSystemWritableFileStream, noFileSystemWritableFileStream, gTypeFileSystemWritableFileStream
  , FlacEncoderConfig(FlacEncoderConfig), unFlacEncoderConfig, noFlacEncoderConfig, gTypeFlacEncoderConfig
  , Float16Array(Float16Array), unFloat16Array, noFloat16Array, gTypeFloat16Array
  , FocusEvent(FocusEvent), unFocusEvent, noFocusEvent, gTypeFocusEvent
  , FocusEventInit(FocusEventInit), unFocusEventInit, noFocusEventInit, gTypeFocusEventInit
  , FocusOptions(FocusOptions), unFocusOptions, noFocusOptions, gTypeFocusOptions
  , FontFace(FontFace), unFontFace, noFontFace, gTypeFontFace
  , FontFaceDescriptors(FontFaceDescriptors), unFontFaceDescriptors, noFontFaceDescriptors, gTypeFontFaceDescriptors
  , FontFaceSet(FontFaceSet), unFontFaceSet, noFontFaceSet, gTypeFontFaceSet
  , FontFaceSetLoadEvent(FontFaceSetLoadEvent), unFontFaceSetLoadEvent, noFontFaceSetLoadEvent, gTypeFontFaceSetLoadEvent
  , FontFaceSetLoadEventInit(FontFaceSetLoadEventInit), unFontFaceSetLoadEventInit, noFontFaceSetLoadEventInit, gTypeFontFaceSetLoadEventInit
  , FontFaceSource(FontFaceSource), unFontFaceSource, IsFontFaceSource, toFontFaceSource, noFontFaceSource, gTypeFontFaceSource
  , FormData(FormData), unFormData, noFormData, gTypeFormData
  , FormDataEvent(FormDataEvent), unFormDataEvent, noFormDataEvent, gTypeFormDataEvent
  , FormDataEventInit(FormDataEventInit), unFormDataEventInit, noFormDataEventInit, gTypeFormDataEventInit
  , FragmentDirective(FragmentDirective), unFragmentDirective, noFragmentDirective, gTypeFragmentDirective
  , FullscreenOptions(FullscreenOptions), unFullscreenOptions, noFullscreenOptions, gTypeFullscreenOptions
  , GPU(GPU), unGPU, noGPU, gTypeGPU
  , GPUAdapter(GPUAdapter), unGPUAdapter, noGPUAdapter, gTypeGPUAdapter
  , GPUAdapterInfo(GPUAdapterInfo), unGPUAdapterInfo, noGPUAdapterInfo, gTypeGPUAdapterInfo
  , GPUBindGroup(GPUBindGroup), unGPUBindGroup, noGPUBindGroup, gTypeGPUBindGroup
  , GPUBindGroupDescriptor(GPUBindGroupDescriptor), unGPUBindGroupDescriptor, noGPUBindGroupDescriptor, gTypeGPUBindGroupDescriptor
  , GPUBindGroupEntry(GPUBindGroupEntry), unGPUBindGroupEntry, noGPUBindGroupEntry, gTypeGPUBindGroupEntry
  , GPUBindGroupLayout(GPUBindGroupLayout), unGPUBindGroupLayout, noGPUBindGroupLayout, gTypeGPUBindGroupLayout
  , GPUBindGroupLayoutDescriptor(GPUBindGroupLayoutDescriptor), unGPUBindGroupLayoutDescriptor, noGPUBindGroupLayoutDescriptor, gTypeGPUBindGroupLayoutDescriptor
  , GPUBindGroupLayoutEntry(GPUBindGroupLayoutEntry), unGPUBindGroupLayoutEntry, noGPUBindGroupLayoutEntry, gTypeGPUBindGroupLayoutEntry
  , GPUBindingCommandsMixin(GPUBindingCommandsMixin), unGPUBindingCommandsMixin, IsGPUBindingCommandsMixin, toGPUBindingCommandsMixin, noGPUBindingCommandsMixin, gTypeGPUBindingCommandsMixin
  , GPUBlendComponent(GPUBlendComponent), unGPUBlendComponent, noGPUBlendComponent, gTypeGPUBlendComponent
  , GPUBlendState(GPUBlendState), unGPUBlendState, noGPUBlendState, gTypeGPUBlendState
  , GPUBuffer(GPUBuffer), unGPUBuffer, noGPUBuffer, gTypeGPUBuffer
  , GPUBufferBinding(GPUBufferBinding), unGPUBufferBinding, noGPUBufferBinding, gTypeGPUBufferBinding
  , GPUBufferBindingLayout(GPUBufferBindingLayout), unGPUBufferBindingLayout, noGPUBufferBindingLayout, gTypeGPUBufferBindingLayout
  , GPUBufferDescriptor(GPUBufferDescriptor), unGPUBufferDescriptor, noGPUBufferDescriptor, gTypeGPUBufferDescriptor
  , GPUCanvasConfiguration(GPUCanvasConfiguration), unGPUCanvasConfiguration, noGPUCanvasConfiguration, gTypeGPUCanvasConfiguration
  , GPUCanvasContext(GPUCanvasContext), unGPUCanvasContext, noGPUCanvasContext, gTypeGPUCanvasContext
  , GPUCanvasToneMapping(GPUCanvasToneMapping), unGPUCanvasToneMapping, noGPUCanvasToneMapping, gTypeGPUCanvasToneMapping
  , GPUColorDict(GPUColorDict), unGPUColorDict, noGPUColorDict, gTypeGPUColorDict
  , GPUColorTargetState(GPUColorTargetState), unGPUColorTargetState, noGPUColorTargetState, gTypeGPUColorTargetState
  , GPUCommandBuffer(GPUCommandBuffer), unGPUCommandBuffer, noGPUCommandBuffer, gTypeGPUCommandBuffer
  , GPUCommandBufferDescriptor(GPUCommandBufferDescriptor), unGPUCommandBufferDescriptor, noGPUCommandBufferDescriptor, gTypeGPUCommandBufferDescriptor
  , GPUCommandEncoder(GPUCommandEncoder), unGPUCommandEncoder, noGPUCommandEncoder, gTypeGPUCommandEncoder
  , GPUCommandEncoderDescriptor(GPUCommandEncoderDescriptor), unGPUCommandEncoderDescriptor, noGPUCommandEncoderDescriptor, gTypeGPUCommandEncoderDescriptor
  , GPUCompilationInfo(GPUCompilationInfo), unGPUCompilationInfo, noGPUCompilationInfo, gTypeGPUCompilationInfo
  , GPUCompilationMessage(GPUCompilationMessage), unGPUCompilationMessage, noGPUCompilationMessage, gTypeGPUCompilationMessage
  , GPUComputePassDescriptor(GPUComputePassDescriptor), unGPUComputePassDescriptor, noGPUComputePassDescriptor, gTypeGPUComputePassDescriptor
  , GPUComputePassEncoder(GPUComputePassEncoder), unGPUComputePassEncoder, noGPUComputePassEncoder, gTypeGPUComputePassEncoder
  , GPUComputePassTimestampWrites(GPUComputePassTimestampWrites), unGPUComputePassTimestampWrites, noGPUComputePassTimestampWrites, gTypeGPUComputePassTimestampWrites
  , GPUComputePipeline(GPUComputePipeline), unGPUComputePipeline, noGPUComputePipeline, gTypeGPUComputePipeline
  , GPUComputePipelineDescriptor(GPUComputePipelineDescriptor), unGPUComputePipelineDescriptor, noGPUComputePipelineDescriptor, gTypeGPUComputePipelineDescriptor
  , GPUCopyExternalImageDestInfo(GPUCopyExternalImageDestInfo), unGPUCopyExternalImageDestInfo, noGPUCopyExternalImageDestInfo, gTypeGPUCopyExternalImageDestInfo
  , GPUCopyExternalImageSourceInfo(GPUCopyExternalImageSourceInfo), unGPUCopyExternalImageSourceInfo, noGPUCopyExternalImageSourceInfo, gTypeGPUCopyExternalImageSourceInfo
  , GPUDebugCommandsMixin(GPUDebugCommandsMixin), unGPUDebugCommandsMixin, IsGPUDebugCommandsMixin, toGPUDebugCommandsMixin, noGPUDebugCommandsMixin, gTypeGPUDebugCommandsMixin
  , GPUDepthStencilState(GPUDepthStencilState), unGPUDepthStencilState, noGPUDepthStencilState, gTypeGPUDepthStencilState
  , GPUDevice(GPUDevice), unGPUDevice, noGPUDevice, gTypeGPUDevice
  , GPUDeviceDescriptor(GPUDeviceDescriptor), unGPUDeviceDescriptor, noGPUDeviceDescriptor, gTypeGPUDeviceDescriptor
  , GPUDeviceLostInfo(GPUDeviceLostInfo), unGPUDeviceLostInfo, noGPUDeviceLostInfo, gTypeGPUDeviceLostInfo
  , GPUError(GPUError), unGPUError, IsGPUError, toGPUError, noGPUError, gTypeGPUError
  , GPUExtent3DDict(GPUExtent3DDict), unGPUExtent3DDict, noGPUExtent3DDict, gTypeGPUExtent3DDict
  , GPUExternalTexture(GPUExternalTexture), unGPUExternalTexture, noGPUExternalTexture, gTypeGPUExternalTexture
  , GPUExternalTextureBindingLayout(GPUExternalTextureBindingLayout), unGPUExternalTextureBindingLayout, noGPUExternalTextureBindingLayout, gTypeGPUExternalTextureBindingLayout
  , GPUExternalTextureDescriptor(GPUExternalTextureDescriptor), unGPUExternalTextureDescriptor, noGPUExternalTextureDescriptor, gTypeGPUExternalTextureDescriptor
  , GPUFragmentState(GPUFragmentState), unGPUFragmentState, noGPUFragmentState, gTypeGPUFragmentState
  , GPUInternalError(GPUInternalError), unGPUInternalError, noGPUInternalError, gTypeGPUInternalError
  , GPUMultisampleState(GPUMultisampleState), unGPUMultisampleState, noGPUMultisampleState, gTypeGPUMultisampleState
  , GPUObjectBase(GPUObjectBase), unGPUObjectBase, IsGPUObjectBase, toGPUObjectBase, noGPUObjectBase, gTypeGPUObjectBase
  , GPUObjectDescriptorBase(GPUObjectDescriptorBase), unGPUObjectDescriptorBase, IsGPUObjectDescriptorBase, toGPUObjectDescriptorBase, noGPUObjectDescriptorBase, gTypeGPUObjectDescriptorBase
  , GPUOrigin2DDict(GPUOrigin2DDict), unGPUOrigin2DDict, noGPUOrigin2DDict, gTypeGPUOrigin2DDict
  , GPUOrigin3DDict(GPUOrigin3DDict), unGPUOrigin3DDict, noGPUOrigin3DDict, gTypeGPUOrigin3DDict
  , GPUOutOfMemoryError(GPUOutOfMemoryError), unGPUOutOfMemoryError, noGPUOutOfMemoryError, gTypeGPUOutOfMemoryError
  , GPUPipelineBase(GPUPipelineBase), unGPUPipelineBase, IsGPUPipelineBase, toGPUPipelineBase, noGPUPipelineBase, gTypeGPUPipelineBase
  , GPUPipelineDescriptorBase(GPUPipelineDescriptorBase), unGPUPipelineDescriptorBase, IsGPUPipelineDescriptorBase, toGPUPipelineDescriptorBase, noGPUPipelineDescriptorBase, gTypeGPUPipelineDescriptorBase
  , GPUPipelineError(GPUPipelineError), unGPUPipelineError, noGPUPipelineError, gTypeGPUPipelineError
  , GPUPipelineErrorInit(GPUPipelineErrorInit), unGPUPipelineErrorInit, noGPUPipelineErrorInit, gTypeGPUPipelineErrorInit
  , GPUPipelineLayout(GPUPipelineLayout), unGPUPipelineLayout, noGPUPipelineLayout, gTypeGPUPipelineLayout
  , GPUPipelineLayoutDescriptor(GPUPipelineLayoutDescriptor), unGPUPipelineLayoutDescriptor, noGPUPipelineLayoutDescriptor, gTypeGPUPipelineLayoutDescriptor
  , GPUPrimitiveState(GPUPrimitiveState), unGPUPrimitiveState, noGPUPrimitiveState, gTypeGPUPrimitiveState
  , GPUProgrammableStage(GPUProgrammableStage), unGPUProgrammableStage, IsGPUProgrammableStage, toGPUProgrammableStage, noGPUProgrammableStage, gTypeGPUProgrammableStage
  , GPUQuerySet(GPUQuerySet), unGPUQuerySet, noGPUQuerySet, gTypeGPUQuerySet
  , GPUQuerySetDescriptor(GPUQuerySetDescriptor), unGPUQuerySetDescriptor, noGPUQuerySetDescriptor, gTypeGPUQuerySetDescriptor
  , GPUQueue(GPUQueue), unGPUQueue, noGPUQueue, gTypeGPUQueue
  , GPUQueueDescriptor(GPUQueueDescriptor), unGPUQueueDescriptor, noGPUQueueDescriptor, gTypeGPUQueueDescriptor
  , GPURenderBundle(GPURenderBundle), unGPURenderBundle, noGPURenderBundle, gTypeGPURenderBundle
  , GPURenderBundleDescriptor(GPURenderBundleDescriptor), unGPURenderBundleDescriptor, noGPURenderBundleDescriptor, gTypeGPURenderBundleDescriptor
  , GPURenderBundleEncoder(GPURenderBundleEncoder), unGPURenderBundleEncoder, noGPURenderBundleEncoder, gTypeGPURenderBundleEncoder
  , GPURenderBundleEncoderDescriptor(GPURenderBundleEncoderDescriptor), unGPURenderBundleEncoderDescriptor, noGPURenderBundleEncoderDescriptor, gTypeGPURenderBundleEncoderDescriptor
  , GPURenderCommandsMixin(GPURenderCommandsMixin), unGPURenderCommandsMixin, IsGPURenderCommandsMixin, toGPURenderCommandsMixin, noGPURenderCommandsMixin, gTypeGPURenderCommandsMixin
  , GPURenderPassColorAttachment(GPURenderPassColorAttachment), unGPURenderPassColorAttachment, noGPURenderPassColorAttachment, gTypeGPURenderPassColorAttachment
  , GPURenderPassDepthStencilAttachment(GPURenderPassDepthStencilAttachment), unGPURenderPassDepthStencilAttachment, noGPURenderPassDepthStencilAttachment, gTypeGPURenderPassDepthStencilAttachment
  , GPURenderPassDescriptor(GPURenderPassDescriptor), unGPURenderPassDescriptor, noGPURenderPassDescriptor, gTypeGPURenderPassDescriptor
  , GPURenderPassEncoder(GPURenderPassEncoder), unGPURenderPassEncoder, noGPURenderPassEncoder, gTypeGPURenderPassEncoder
  , GPURenderPassLayout(GPURenderPassLayout), unGPURenderPassLayout, IsGPURenderPassLayout, toGPURenderPassLayout, noGPURenderPassLayout, gTypeGPURenderPassLayout
  , GPURenderPassTimestampWrites(GPURenderPassTimestampWrites), unGPURenderPassTimestampWrites, noGPURenderPassTimestampWrites, gTypeGPURenderPassTimestampWrites
  , GPURenderPipeline(GPURenderPipeline), unGPURenderPipeline, noGPURenderPipeline, gTypeGPURenderPipeline
  , GPURenderPipelineDescriptor(GPURenderPipelineDescriptor), unGPURenderPipelineDescriptor, noGPURenderPipelineDescriptor, gTypeGPURenderPipelineDescriptor
  , GPURequestAdapterOptions(GPURequestAdapterOptions), unGPURequestAdapterOptions, noGPURequestAdapterOptions, gTypeGPURequestAdapterOptions
  , GPUSampler(GPUSampler), unGPUSampler, noGPUSampler, gTypeGPUSampler
  , GPUSamplerBindingLayout(GPUSamplerBindingLayout), unGPUSamplerBindingLayout, noGPUSamplerBindingLayout, gTypeGPUSamplerBindingLayout
  , GPUSamplerDescriptor(GPUSamplerDescriptor), unGPUSamplerDescriptor, noGPUSamplerDescriptor, gTypeGPUSamplerDescriptor
  , GPUShaderModule(GPUShaderModule), unGPUShaderModule, noGPUShaderModule, gTypeGPUShaderModule
  , GPUShaderModuleCompilationHint(GPUShaderModuleCompilationHint), unGPUShaderModuleCompilationHint, noGPUShaderModuleCompilationHint, gTypeGPUShaderModuleCompilationHint
  , GPUShaderModuleDescriptor(GPUShaderModuleDescriptor), unGPUShaderModuleDescriptor, noGPUShaderModuleDescriptor, gTypeGPUShaderModuleDescriptor
  , GPUStencilFaceState(GPUStencilFaceState), unGPUStencilFaceState, noGPUStencilFaceState, gTypeGPUStencilFaceState
  , GPUStorageTextureBindingLayout(GPUStorageTextureBindingLayout), unGPUStorageTextureBindingLayout, noGPUStorageTextureBindingLayout, gTypeGPUStorageTextureBindingLayout
  , GPUSupportedFeatures(GPUSupportedFeatures), unGPUSupportedFeatures, noGPUSupportedFeatures, gTypeGPUSupportedFeatures
  , GPUSupportedLimits(GPUSupportedLimits), unGPUSupportedLimits, noGPUSupportedLimits, gTypeGPUSupportedLimits
  , GPUTexelCopyBufferInfo(GPUTexelCopyBufferInfo), unGPUTexelCopyBufferInfo, noGPUTexelCopyBufferInfo, gTypeGPUTexelCopyBufferInfo
  , GPUTexelCopyBufferLayout(GPUTexelCopyBufferLayout), unGPUTexelCopyBufferLayout, IsGPUTexelCopyBufferLayout, toGPUTexelCopyBufferLayout, noGPUTexelCopyBufferLayout, gTypeGPUTexelCopyBufferLayout
  , GPUTexelCopyTextureInfo(GPUTexelCopyTextureInfo), unGPUTexelCopyTextureInfo, IsGPUTexelCopyTextureInfo, toGPUTexelCopyTextureInfo, noGPUTexelCopyTextureInfo, gTypeGPUTexelCopyTextureInfo
  , GPUTexture(GPUTexture), unGPUTexture, noGPUTexture, gTypeGPUTexture
  , GPUTextureBindingLayout(GPUTextureBindingLayout), unGPUTextureBindingLayout, noGPUTextureBindingLayout, gTypeGPUTextureBindingLayout
  , GPUTextureDescriptor(GPUTextureDescriptor), unGPUTextureDescriptor, noGPUTextureDescriptor, gTypeGPUTextureDescriptor
  , GPUTextureView(GPUTextureView), unGPUTextureView, noGPUTextureView, gTypeGPUTextureView
  , GPUTextureViewDescriptor(GPUTextureViewDescriptor), unGPUTextureViewDescriptor, noGPUTextureViewDescriptor, gTypeGPUTextureViewDescriptor
  , GPUUncapturedErrorEvent(GPUUncapturedErrorEvent), unGPUUncapturedErrorEvent, noGPUUncapturedErrorEvent, gTypeGPUUncapturedErrorEvent
  , GPUUncapturedErrorEventInit(GPUUncapturedErrorEventInit), unGPUUncapturedErrorEventInit, noGPUUncapturedErrorEventInit, gTypeGPUUncapturedErrorEventInit
  , GPUValidationError(GPUValidationError), unGPUValidationError, noGPUValidationError, gTypeGPUValidationError
  , GPUVertexAttribute(GPUVertexAttribute), unGPUVertexAttribute, noGPUVertexAttribute, gTypeGPUVertexAttribute
  , GPUVertexBufferLayout(GPUVertexBufferLayout), unGPUVertexBufferLayout, noGPUVertexBufferLayout, gTypeGPUVertexBufferLayout
  , GPUVertexState(GPUVertexState), unGPUVertexState, noGPUVertexState, gTypeGPUVertexState
  , GainNode(GainNode), unGainNode, noGainNode, gTypeGainNode
  , GainOptions(GainOptions), unGainOptions, noGainOptions, gTypeGainOptions
  , Gamepad(Gamepad), unGamepad, noGamepad, gTypeGamepad
  , GamepadButton(GamepadButton), unGamepadButton, noGamepadButton, gTypeGamepadButton
  , GamepadEffectParameters(GamepadEffectParameters), unGamepadEffectParameters, noGamepadEffectParameters, gTypeGamepadEffectParameters
  , GamepadEvent(GamepadEvent), unGamepadEvent, noGamepadEvent, gTypeGamepadEvent
  , GamepadEventInit(GamepadEventInit), unGamepadEventInit, noGamepadEventInit, gTypeGamepadEventInit
  , GamepadHapticActuator(GamepadHapticActuator), unGamepadHapticActuator, noGamepadHapticActuator, gTypeGamepadHapticActuator
  , GenericTransformStream(GenericTransformStream), unGenericTransformStream, IsGenericTransformStream, toGenericTransformStream, noGenericTransformStream, gTypeGenericTransformStream
  , Geolocation(Geolocation), unGeolocation, noGeolocation, gTypeGeolocation
  , GeolocationCoordinates(GeolocationCoordinates), unGeolocationCoordinates, noGeolocationCoordinates, gTypeGeolocationCoordinates
  , GeolocationPosition(GeolocationPosition), unGeolocationPosition, noGeolocationPosition, gTypeGeolocationPosition
  , GeolocationPositionError(GeolocationPositionError), unGeolocationPositionError, noGeolocationPositionError, gTypeGeolocationPositionError
  , GetAnimationsOptions(GetAnimationsOptions), unGetAnimationsOptions, noGetAnimationsOptions, gTypeGetAnimationsOptions
  , GetComposedRangesOptions(GetComposedRangesOptions), unGetComposedRangesOptions, noGetComposedRangesOptions, gTypeGetComposedRangesOptions
  , GetHTMLOptions(GetHTMLOptions), unGetHTMLOptions, noGetHTMLOptions, gTypeGetHTMLOptions
  , GetNotificationOptions(GetNotificationOptions), unGetNotificationOptions, noGetNotificationOptions, gTypeGetNotificationOptions
  , GetRootNodeOptions(GetRootNodeOptions), unGetRootNodeOptions, noGetRootNodeOptions, gTypeGetRootNodeOptions
  , GlobalEventHandlers(GlobalEventHandlers), unGlobalEventHandlers, IsGlobalEventHandlers, toGlobalEventHandlers, noGlobalEventHandlers, gTypeGlobalEventHandlers
  , HMACGetSecretInput(HMACGetSecretInput), unHMACGetSecretInput, noHMACGetSecretInput, gTypeHMACGetSecretInput
  , HMACGetSecretOutput(HMACGetSecretOutput), unHMACGetSecretOutput, noHMACGetSecretOutput, gTypeHMACGetSecretOutput
  , HTMLAllCollection(HTMLAllCollection), unHTMLAllCollection, noHTMLAllCollection, gTypeHTMLAllCollection
  , HTMLAnchorElement(HTMLAnchorElement), unHTMLAnchorElement, noHTMLAnchorElement, gTypeHTMLAnchorElement
  , HTMLAreaElement(HTMLAreaElement), unHTMLAreaElement, noHTMLAreaElement, gTypeHTMLAreaElement
  , HTMLAudioElement(HTMLAudioElement), unHTMLAudioElement, noHTMLAudioElement, gTypeHTMLAudioElement
  , HTMLBRElement(HTMLBRElement), unHTMLBRElement, noHTMLBRElement, gTypeHTMLBRElement
  , HTMLBaseElement(HTMLBaseElement), unHTMLBaseElement, noHTMLBaseElement, gTypeHTMLBaseElement
  , HTMLBodyElement(HTMLBodyElement), unHTMLBodyElement, noHTMLBodyElement, gTypeHTMLBodyElement
  , HTMLButtonElement(HTMLButtonElement), unHTMLButtonElement, noHTMLButtonElement, gTypeHTMLButtonElement
  , HTMLCanvasElement(HTMLCanvasElement), unHTMLCanvasElement, noHTMLCanvasElement, gTypeHTMLCanvasElement
  , HTMLCollection(HTMLCollection), unHTMLCollection, IsHTMLCollection, toHTMLCollection, noHTMLCollection, gTypeHTMLCollection
  , HTMLDListElement(HTMLDListElement), unHTMLDListElement, noHTMLDListElement, gTypeHTMLDListElement
  , HTMLDataElement(HTMLDataElement), unHTMLDataElement, noHTMLDataElement, gTypeHTMLDataElement
  , HTMLDataListElement(HTMLDataListElement), unHTMLDataListElement, noHTMLDataListElement, gTypeHTMLDataListElement
  , HTMLDetailsElement(HTMLDetailsElement), unHTMLDetailsElement, noHTMLDetailsElement, gTypeHTMLDetailsElement
  , HTMLDialogElement(HTMLDialogElement), unHTMLDialogElement, noHTMLDialogElement, gTypeHTMLDialogElement
  , HTMLDirectoryElement(HTMLDirectoryElement), unHTMLDirectoryElement, noHTMLDirectoryElement, gTypeHTMLDirectoryElement
  , HTMLDivElement(HTMLDivElement), unHTMLDivElement, noHTMLDivElement, gTypeHTMLDivElement
  , HTMLElement(HTMLElement), unHTMLElement, IsHTMLElement, toHTMLElement, noHTMLElement, gTypeHTMLElement
  , HTMLEmbedElement(HTMLEmbedElement), unHTMLEmbedElement, noHTMLEmbedElement, gTypeHTMLEmbedElement
  , HTMLFieldSetElement(HTMLFieldSetElement), unHTMLFieldSetElement, noHTMLFieldSetElement, gTypeHTMLFieldSetElement
  , HTMLFontElement(HTMLFontElement), unHTMLFontElement, noHTMLFontElement, gTypeHTMLFontElement
  , HTMLFormControlsCollection(HTMLFormControlsCollection), unHTMLFormControlsCollection, noHTMLFormControlsCollection, gTypeHTMLFormControlsCollection
  , HTMLFormElement(HTMLFormElement), unHTMLFormElement, noHTMLFormElement, gTypeHTMLFormElement
  , HTMLFrameElement(HTMLFrameElement), unHTMLFrameElement, noHTMLFrameElement, gTypeHTMLFrameElement
  , HTMLFrameSetElement(HTMLFrameSetElement), unHTMLFrameSetElement, noHTMLFrameSetElement, gTypeHTMLFrameSetElement
  , HTMLHRElement(HTMLHRElement), unHTMLHRElement, noHTMLHRElement, gTypeHTMLHRElement
  , HTMLHeadElement(HTMLHeadElement), unHTMLHeadElement, noHTMLHeadElement, gTypeHTMLHeadElement
  , HTMLHeadingElement(HTMLHeadingElement), unHTMLHeadingElement, noHTMLHeadingElement, gTypeHTMLHeadingElement
  , HTMLHtmlElement(HTMLHtmlElement), unHTMLHtmlElement, noHTMLHtmlElement, gTypeHTMLHtmlElement
  , HTMLHyperlinkElementUtils(HTMLHyperlinkElementUtils), unHTMLHyperlinkElementUtils, IsHTMLHyperlinkElementUtils, toHTMLHyperlinkElementUtils, noHTMLHyperlinkElementUtils, gTypeHTMLHyperlinkElementUtils
  , HTMLIFrameElement(HTMLIFrameElement), unHTMLIFrameElement, noHTMLIFrameElement, gTypeHTMLIFrameElement
  , HTMLImageElement(HTMLImageElement), unHTMLImageElement, noHTMLImageElement, gTypeHTMLImageElement
  , HTMLInputElement(HTMLInputElement), unHTMLInputElement, noHTMLInputElement, gTypeHTMLInputElement
  , HTMLLIElement(HTMLLIElement), unHTMLLIElement, noHTMLLIElement, gTypeHTMLLIElement
  , HTMLLabelElement(HTMLLabelElement), unHTMLLabelElement, noHTMLLabelElement, gTypeHTMLLabelElement
  , HTMLLegendElement(HTMLLegendElement), unHTMLLegendElement, noHTMLLegendElement, gTypeHTMLLegendElement
  , HTMLLinkElement(HTMLLinkElement), unHTMLLinkElement, noHTMLLinkElement, gTypeHTMLLinkElement
  , HTMLMapElement(HTMLMapElement), unHTMLMapElement, noHTMLMapElement, gTypeHTMLMapElement
  , HTMLMarqueeElement(HTMLMarqueeElement), unHTMLMarqueeElement, noHTMLMarqueeElement, gTypeHTMLMarqueeElement
  , HTMLMediaElement(HTMLMediaElement), unHTMLMediaElement, IsHTMLMediaElement, toHTMLMediaElement, noHTMLMediaElement, gTypeHTMLMediaElement
  , HTMLMenuElement(HTMLMenuElement), unHTMLMenuElement, noHTMLMenuElement, gTypeHTMLMenuElement
  , HTMLMetaElement(HTMLMetaElement), unHTMLMetaElement, noHTMLMetaElement, gTypeHTMLMetaElement
  , HTMLMeterElement(HTMLMeterElement), unHTMLMeterElement, noHTMLMeterElement, gTypeHTMLMeterElement
  , HTMLModElement(HTMLModElement), unHTMLModElement, noHTMLModElement, gTypeHTMLModElement
  , HTMLOListElement(HTMLOListElement), unHTMLOListElement, noHTMLOListElement, gTypeHTMLOListElement
  , HTMLObjectElement(HTMLObjectElement), unHTMLObjectElement, noHTMLObjectElement, gTypeHTMLObjectElement
  , HTMLOptGroupElement(HTMLOptGroupElement), unHTMLOptGroupElement, noHTMLOptGroupElement, gTypeHTMLOptGroupElement
  , HTMLOptionElement(HTMLOptionElement), unHTMLOptionElement, noHTMLOptionElement, gTypeHTMLOptionElement
  , HTMLOptionsCollection(HTMLOptionsCollection), unHTMLOptionsCollection, noHTMLOptionsCollection, gTypeHTMLOptionsCollection
  , HTMLOrSVGOrMathMLElement(HTMLOrSVGOrMathMLElement), unHTMLOrSVGOrMathMLElement, IsHTMLOrSVGOrMathMLElement, toHTMLOrSVGOrMathMLElement, noHTMLOrSVGOrMathMLElement, gTypeHTMLOrSVGOrMathMLElement
  , HTMLOutputElement(HTMLOutputElement), unHTMLOutputElement, noHTMLOutputElement, gTypeHTMLOutputElement
  , HTMLParagraphElement(HTMLParagraphElement), unHTMLParagraphElement, noHTMLParagraphElement, gTypeHTMLParagraphElement
  , HTMLParamElement(HTMLParamElement), unHTMLParamElement, noHTMLParamElement, gTypeHTMLParamElement
  , HTMLPictureElement(HTMLPictureElement), unHTMLPictureElement, noHTMLPictureElement, gTypeHTMLPictureElement
  , HTMLPreElement(HTMLPreElement), unHTMLPreElement, noHTMLPreElement, gTypeHTMLPreElement
  , HTMLProgressElement(HTMLProgressElement), unHTMLProgressElement, noHTMLProgressElement, gTypeHTMLProgressElement
  , HTMLQuoteElement(HTMLQuoteElement), unHTMLQuoteElement, noHTMLQuoteElement, gTypeHTMLQuoteElement
  , HTMLScriptElement(HTMLScriptElement), unHTMLScriptElement, noHTMLScriptElement, gTypeHTMLScriptElement
  , HTMLSelectElement(HTMLSelectElement), unHTMLSelectElement, noHTMLSelectElement, gTypeHTMLSelectElement
  , HTMLSelectedContentElement(HTMLSelectedContentElement), unHTMLSelectedContentElement, noHTMLSelectedContentElement, gTypeHTMLSelectedContentElement
  , HTMLSlotElement(HTMLSlotElement), unHTMLSlotElement, noHTMLSlotElement, gTypeHTMLSlotElement
  , HTMLSourceElement(HTMLSourceElement), unHTMLSourceElement, noHTMLSourceElement, gTypeHTMLSourceElement
  , HTMLSpanElement(HTMLSpanElement), unHTMLSpanElement, noHTMLSpanElement, gTypeHTMLSpanElement
  , HTMLStyleElement(HTMLStyleElement), unHTMLStyleElement, noHTMLStyleElement, gTypeHTMLStyleElement
  , HTMLTableCaptionElement(HTMLTableCaptionElement), unHTMLTableCaptionElement, noHTMLTableCaptionElement, gTypeHTMLTableCaptionElement
  , HTMLTableCellElement(HTMLTableCellElement), unHTMLTableCellElement, noHTMLTableCellElement, gTypeHTMLTableCellElement
  , HTMLTableColElement(HTMLTableColElement), unHTMLTableColElement, noHTMLTableColElement, gTypeHTMLTableColElement
  , HTMLTableElement(HTMLTableElement), unHTMLTableElement, noHTMLTableElement, gTypeHTMLTableElement
  , HTMLTableRowElement(HTMLTableRowElement), unHTMLTableRowElement, noHTMLTableRowElement, gTypeHTMLTableRowElement
  , HTMLTableSectionElement(HTMLTableSectionElement), unHTMLTableSectionElement, noHTMLTableSectionElement, gTypeHTMLTableSectionElement
  , HTMLTemplateElement(HTMLTemplateElement), unHTMLTemplateElement, noHTMLTemplateElement, gTypeHTMLTemplateElement
  , HTMLTextAreaElement(HTMLTextAreaElement), unHTMLTextAreaElement, noHTMLTextAreaElement, gTypeHTMLTextAreaElement
  , HTMLTimeElement(HTMLTimeElement), unHTMLTimeElement, noHTMLTimeElement, gTypeHTMLTimeElement
  , HTMLTitleElement(HTMLTitleElement), unHTMLTitleElement, noHTMLTitleElement, gTypeHTMLTitleElement
  , HTMLTrackElement(HTMLTrackElement), unHTMLTrackElement, noHTMLTrackElement, gTypeHTMLTrackElement
  , HTMLUListElement(HTMLUListElement), unHTMLUListElement, noHTMLUListElement, gTypeHTMLUListElement
  , HTMLUnknownElement(HTMLUnknownElement), unHTMLUnknownElement, noHTMLUnknownElement, gTypeHTMLUnknownElement
  , HTMLVideoElement(HTMLVideoElement), unHTMLVideoElement, noHTMLVideoElement, gTypeHTMLVideoElement
  , HashChangeEvent(HashChangeEvent), unHashChangeEvent, noHashChangeEvent, gTypeHashChangeEvent
  , HashChangeEventInit(HashChangeEventInit), unHashChangeEventInit, noHashChangeEventInit, gTypeHashChangeEventInit
  , Headers(Headers), unHeaders, noHeaders, gTypeHeaders
  , HevcEncoderConfig(HevcEncoderConfig), unHevcEncoderConfig, noHevcEncoderConfig, gTypeHevcEncoderConfig
  , Highlight(Highlight), unHighlight, noHighlight, gTypeHighlight
  , HighlightHitResult(HighlightHitResult), unHighlightHitResult, noHighlightHitResult, gTypeHighlightHitResult
  , HighlightRegistry(HighlightRegistry), unHighlightRegistry, noHighlightRegistry, gTypeHighlightRegistry
  , HighlightsFromPointOptions(HighlightsFromPointOptions), unHighlightsFromPointOptions, noHighlightsFromPointOptions, gTypeHighlightsFromPointOptions
  , History(History), unHistory, noHistory, gTypeHistory
  , HyperlinkElementUtils(HyperlinkElementUtils), unHyperlinkElementUtils, IsHyperlinkElementUtils, toHyperlinkElementUtils, noHyperlinkElementUtils, gTypeHyperlinkElementUtils
  , IDBCursor(IDBCursor), unIDBCursor, IsIDBCursor, toIDBCursor, noIDBCursor, gTypeIDBCursor
  , IDBCursorWithValue(IDBCursorWithValue), unIDBCursorWithValue, noIDBCursorWithValue, gTypeIDBCursorWithValue
  , IDBDatabase(IDBDatabase), unIDBDatabase, noIDBDatabase, gTypeIDBDatabase
  , IDBDatabaseInfo(IDBDatabaseInfo), unIDBDatabaseInfo, noIDBDatabaseInfo, gTypeIDBDatabaseInfo
  , IDBFactory(IDBFactory), unIDBFactory, noIDBFactory, gTypeIDBFactory
  , IDBGetAllOptions(IDBGetAllOptions), unIDBGetAllOptions, noIDBGetAllOptions, gTypeIDBGetAllOptions
  , IDBIndex(IDBIndex), unIDBIndex, noIDBIndex, gTypeIDBIndex
  , IDBIndexParameters(IDBIndexParameters), unIDBIndexParameters, noIDBIndexParameters, gTypeIDBIndexParameters
  , IDBKeyRange(IDBKeyRange), unIDBKeyRange, noIDBKeyRange, gTypeIDBKeyRange
  , IDBObjectStore(IDBObjectStore), unIDBObjectStore, noIDBObjectStore, gTypeIDBObjectStore
  , IDBObjectStoreParameters(IDBObjectStoreParameters), unIDBObjectStoreParameters, noIDBObjectStoreParameters, gTypeIDBObjectStoreParameters
  , IDBOpenDBRequest(IDBOpenDBRequest), unIDBOpenDBRequest, noIDBOpenDBRequest, gTypeIDBOpenDBRequest
  , IDBRecord(IDBRecord), unIDBRecord, noIDBRecord, gTypeIDBRecord
  , IDBRequest(IDBRequest), unIDBRequest, IsIDBRequest, toIDBRequest, noIDBRequest, gTypeIDBRequest
  , IDBTransaction(IDBTransaction), unIDBTransaction, noIDBTransaction, gTypeIDBTransaction
  , IDBTransactionOptions(IDBTransactionOptions), unIDBTransactionOptions, noIDBTransactionOptions, gTypeIDBTransactionOptions
  , IDBVersionChangeEvent(IDBVersionChangeEvent), unIDBVersionChangeEvent, noIDBVersionChangeEvent, gTypeIDBVersionChangeEvent
  , IDBVersionChangeEventInit(IDBVersionChangeEventInit), unIDBVersionChangeEventInit, noIDBVersionChangeEventInit, gTypeIDBVersionChangeEventInit
  , IIRFilterNode(IIRFilterNode), unIIRFilterNode, noIIRFilterNode, gTypeIIRFilterNode
  , IIRFilterOptions(IIRFilterOptions), unIIRFilterOptions, noIIRFilterOptions, gTypeIIRFilterOptions
  , IdentityCredentialRequestOptions(IdentityCredentialRequestOptions), unIdentityCredentialRequestOptions, noIdentityCredentialRequestOptions, gTypeIdentityCredentialRequestOptions
  , IdentityProviderConfig(IdentityProviderConfig), unIdentityProviderConfig, IsIdentityProviderConfig, toIdentityProviderConfig, noIdentityProviderConfig, gTypeIdentityProviderConfig
  , IdentityProviderRequestOptions(IdentityProviderRequestOptions), unIdentityProviderRequestOptions, noIdentityProviderRequestOptions, gTypeIdentityProviderRequestOptions
  , IdleDeadline(IdleDeadline), unIdleDeadline, noIdleDeadline, gTypeIdleDeadline
  , IdleRequestOptions(IdleRequestOptions), unIdleRequestOptions, noIdleRequestOptions, gTypeIdleRequestOptions
  , ImageBitmap(ImageBitmap), unImageBitmap, noImageBitmap, gTypeImageBitmap
  , ImageBitmapRenderingContext(ImageBitmapRenderingContext), unImageBitmapRenderingContext, noImageBitmapRenderingContext, gTypeImageBitmapRenderingContext
  , ImageCapture(ImageCapture), unImageCapture, noImageCapture, gTypeImageCapture
  , ImageData(ImageData), unImageData, noImageData, gTypeImageData
  , ImageDataSettings(ImageDataSettings), unImageDataSettings, noImageDataSettings, gTypeImageDataSettings
  , ImageDecodeOptions(ImageDecodeOptions), unImageDecodeOptions, noImageDecodeOptions, gTypeImageDecodeOptions
  , ImageDecodeResult(ImageDecodeResult), unImageDecodeResult, noImageDecodeResult, gTypeImageDecodeResult
  , ImageDecoder(ImageDecoder), unImageDecoder, noImageDecoder, gTypeImageDecoder
  , ImageDecoderInit(ImageDecoderInit), unImageDecoderInit, noImageDecoderInit, gTypeImageDecoderInit
  , ImageEncodeOptions(ImageEncodeOptions), unImageEncodeOptions, noImageEncodeOptions, gTypeImageEncodeOptions
  , ImageTrack(ImageTrack), unImageTrack, noImageTrack, gTypeImageTrack
  , ImageTrackList(ImageTrackList), unImageTrackList, noImageTrackList, gTypeImageTrackList
  , ImportNodeOptions(ImportNodeOptions), unImportNodeOptions, noImportNodeOptions, gTypeImportNodeOptions
  , InputDeviceCapabilities(InputDeviceCapabilities), unInputDeviceCapabilities, noInputDeviceCapabilities, gTypeInputDeviceCapabilities
  , InputDeviceInfo(InputDeviceInfo), unInputDeviceInfo, noInputDeviceInfo, gTypeInputDeviceInfo
  , InputEvent(InputEvent), unInputEvent, noInputEvent, gTypeInputEvent
  , InputEventInit(InputEventInit), unInputEventInit, noInputEventInit, gTypeInputEventInit
  , InstallEvent(InstallEvent), unInstallEvent, noInstallEvent, gTypeInstallEvent
  , IntersectionObserver(IntersectionObserver), unIntersectionObserver, noIntersectionObserver, gTypeIntersectionObserver
  , IntersectionObserverEntry(IntersectionObserverEntry), unIntersectionObserverEntry, noIntersectionObserverEntry, gTypeIntersectionObserverEntry
  , IntersectionObserverEntryInit(IntersectionObserverEntryInit), unIntersectionObserverEntryInit, noIntersectionObserverEntryInit, gTypeIntersectionObserverEntryInit
  , IntersectionObserverInit(IntersectionObserverInit), unIntersectionObserverInit, noIntersectionObserverInit, gTypeIntersectionObserverInit
  , JsonWebKey(JsonWebKey), unJsonWebKey, noJsonWebKey, gTypeJsonWebKey
  , KHR_parallel_shader_compile(KHR_parallel_shader_compile), unKHR_parallel_shader_compile, noKHR_parallel_shader_compile, gTypeKHR_parallel_shader_compile
  , KeySystemTrackConfiguration(KeySystemTrackConfiguration), unKeySystemTrackConfiguration, noKeySystemTrackConfiguration, gTypeKeySystemTrackConfiguration
  , KeyboardEvent(KeyboardEvent), unKeyboardEvent, noKeyboardEvent, gTypeKeyboardEvent
  , KeyboardEventInit(KeyboardEventInit), unKeyboardEventInit, noKeyboardEventInit, gTypeKeyboardEventInit
  , KeyframeAnimationOptions(KeyframeAnimationOptions), unKeyframeAnimationOptions, noKeyframeAnimationOptions, gTypeKeyframeAnimationOptions
  , KeyframeEffect(KeyframeEffect), unKeyframeEffect, noKeyframeEffect, gTypeKeyframeEffect
  , KeyframeEffectOptions(KeyframeEffectOptions), unKeyframeEffectOptions, IsKeyframeEffectOptions, toKeyframeEffectOptions, noKeyframeEffectOptions, gTypeKeyframeEffectOptions
  , LargestContentfulPaint(LargestContentfulPaint), unLargestContentfulPaint, noLargestContentfulPaint, gTypeLargestContentfulPaint
  , LinkStyle(LinkStyle), unLinkStyle, IsLinkStyle, toLinkStyle, noLinkStyle, gTypeLinkStyle
  , Location(Location), unLocation, noLocation, gTypeLocation
  , Lock(Lock), unLock, noLock, gTypeLock
  , LockInfo(LockInfo), unLockInfo, noLockInfo, gTypeLockInfo
  , LockManager(LockManager), unLockManager, noLockManager, gTypeLockManager
  , LockManagerSnapshot(LockManagerSnapshot), unLockManagerSnapshot, noLockManagerSnapshot, gTypeLockManagerSnapshot
  , LockOptions(LockOptions), unLockOptions, noLockOptions, gTypeLockOptions
  , MIDIAccess(MIDIAccess), unMIDIAccess, noMIDIAccess, gTypeMIDIAccess
  , MIDIConnectionEvent(MIDIConnectionEvent), unMIDIConnectionEvent, noMIDIConnectionEvent, gTypeMIDIConnectionEvent
  , MIDIConnectionEventInit(MIDIConnectionEventInit), unMIDIConnectionEventInit, noMIDIConnectionEventInit, gTypeMIDIConnectionEventInit
  , MIDIInput(MIDIInput), unMIDIInput, noMIDIInput, gTypeMIDIInput
  , MIDIInputMap(MIDIInputMap), unMIDIInputMap, noMIDIInputMap, gTypeMIDIInputMap
  , MIDIMessageEvent(MIDIMessageEvent), unMIDIMessageEvent, noMIDIMessageEvent, gTypeMIDIMessageEvent
  , MIDIMessageEventInit(MIDIMessageEventInit), unMIDIMessageEventInit, noMIDIMessageEventInit, gTypeMIDIMessageEventInit
  , MIDIOptions(MIDIOptions), unMIDIOptions, noMIDIOptions, gTypeMIDIOptions
  , MIDIOutput(MIDIOutput), unMIDIOutput, noMIDIOutput, gTypeMIDIOutput
  , MIDIOutputMap(MIDIOutputMap), unMIDIOutputMap, noMIDIOutputMap, gTypeMIDIOutputMap
  , MIDIPort(MIDIPort), unMIDIPort, IsMIDIPort, toMIDIPort, noMIDIPort, gTypeMIDIPort
  , MathMLElement(MathMLElement), unMathMLElement, noMathMLElement, gTypeMathMLElement
  , MediaCapabilities(MediaCapabilities), unMediaCapabilities, noMediaCapabilities, gTypeMediaCapabilities
  , MediaCapabilitiesDecodingInfo(MediaCapabilitiesDecodingInfo), unMediaCapabilitiesDecodingInfo, noMediaCapabilitiesDecodingInfo, gTypeMediaCapabilitiesDecodingInfo
  , MediaCapabilitiesEncodingInfo(MediaCapabilitiesEncodingInfo), unMediaCapabilitiesEncodingInfo, noMediaCapabilitiesEncodingInfo, gTypeMediaCapabilitiesEncodingInfo
  , MediaCapabilitiesInfo(MediaCapabilitiesInfo), unMediaCapabilitiesInfo, IsMediaCapabilitiesInfo, toMediaCapabilitiesInfo, noMediaCapabilitiesInfo, gTypeMediaCapabilitiesInfo
  , MediaCapabilitiesKeySystemConfiguration(MediaCapabilitiesKeySystemConfiguration), unMediaCapabilitiesKeySystemConfiguration, noMediaCapabilitiesKeySystemConfiguration, gTypeMediaCapabilitiesKeySystemConfiguration
  , MediaConfiguration(MediaConfiguration), unMediaConfiguration, IsMediaConfiguration, toMediaConfiguration, noMediaConfiguration, gTypeMediaConfiguration
  , MediaDecodingConfiguration(MediaDecodingConfiguration), unMediaDecodingConfiguration, noMediaDecodingConfiguration, gTypeMediaDecodingConfiguration
  , MediaDeviceInfo(MediaDeviceInfo), unMediaDeviceInfo, IsMediaDeviceInfo, toMediaDeviceInfo, noMediaDeviceInfo, gTypeMediaDeviceInfo
  , MediaDevices(MediaDevices), unMediaDevices, noMediaDevices, gTypeMediaDevices
  , MediaEffectInfo(MediaEffectInfo), unMediaEffectInfo, IsMediaEffectInfo, toMediaEffectInfo, noMediaEffectInfo, gTypeMediaEffectInfo
  , MediaElementAudioSourceNode(MediaElementAudioSourceNode), unMediaElementAudioSourceNode, noMediaElementAudioSourceNode, gTypeMediaElementAudioSourceNode
  , MediaElementAudioSourceOptions(MediaElementAudioSourceOptions), unMediaElementAudioSourceOptions, noMediaElementAudioSourceOptions, gTypeMediaElementAudioSourceOptions
  , MediaEncodingConfiguration(MediaEncodingConfiguration), unMediaEncodingConfiguration, noMediaEncodingConfiguration, gTypeMediaEncodingConfiguration
  , MediaEncryptedEvent(MediaEncryptedEvent), unMediaEncryptedEvent, noMediaEncryptedEvent, gTypeMediaEncryptedEvent
  , MediaEncryptedEventInit(MediaEncryptedEventInit), unMediaEncryptedEventInit, noMediaEncryptedEventInit, gTypeMediaEncryptedEventInit
  , MediaError(MediaError), unMediaError, noMediaError, gTypeMediaError
  , MediaImage(MediaImage), unMediaImage, noMediaImage, gTypeMediaImage
  , MediaKeyMessageEvent(MediaKeyMessageEvent), unMediaKeyMessageEvent, noMediaKeyMessageEvent, gTypeMediaKeyMessageEvent
  , MediaKeyMessageEventInit(MediaKeyMessageEventInit), unMediaKeyMessageEventInit, noMediaKeyMessageEventInit, gTypeMediaKeyMessageEventInit
  , MediaKeySession(MediaKeySession), unMediaKeySession, noMediaKeySession, gTypeMediaKeySession
  , MediaKeyStatusMap(MediaKeyStatusMap), unMediaKeyStatusMap, noMediaKeyStatusMap, gTypeMediaKeyStatusMap
  , MediaKeySystemAccess(MediaKeySystemAccess), unMediaKeySystemAccess, noMediaKeySystemAccess, gTypeMediaKeySystemAccess
  , MediaKeySystemConfiguration(MediaKeySystemConfiguration), unMediaKeySystemConfiguration, noMediaKeySystemConfiguration, gTypeMediaKeySystemConfiguration
  , MediaKeySystemMediaCapability(MediaKeySystemMediaCapability), unMediaKeySystemMediaCapability, noMediaKeySystemMediaCapability, gTypeMediaKeySystemMediaCapability
  , MediaKeys(MediaKeys), unMediaKeys, noMediaKeys, gTypeMediaKeys
  , MediaKeysPolicy(MediaKeysPolicy), unMediaKeysPolicy, noMediaKeysPolicy, gTypeMediaKeysPolicy
  , MediaList(MediaList), unMediaList, noMediaList, gTypeMediaList
  , MediaMetadata(MediaMetadata), unMediaMetadata, noMediaMetadata, gTypeMediaMetadata
  , MediaMetadataInit(MediaMetadataInit), unMediaMetadataInit, noMediaMetadataInit, gTypeMediaMetadataInit
  , MediaPositionState(MediaPositionState), unMediaPositionState, noMediaPositionState, gTypeMediaPositionState
  , MediaQueryList(MediaQueryList), unMediaQueryList, noMediaQueryList, gTypeMediaQueryList
  , MediaQueryListEvent(MediaQueryListEvent), unMediaQueryListEvent, noMediaQueryListEvent, gTypeMediaQueryListEvent
  , MediaQueryListEventInit(MediaQueryListEventInit), unMediaQueryListEventInit, noMediaQueryListEventInit, gTypeMediaQueryListEventInit
  , MediaRecorder(MediaRecorder), unMediaRecorder, noMediaRecorder, gTypeMediaRecorder
  , MediaRecorderOptions(MediaRecorderOptions), unMediaRecorderOptions, noMediaRecorderOptions, gTypeMediaRecorderOptions
  , MediaSession(MediaSession), unMediaSession, noMediaSession, gTypeMediaSession
  , MediaSessionActionDetails(MediaSessionActionDetails), unMediaSessionActionDetails, noMediaSessionActionDetails, gTypeMediaSessionActionDetails
  , MediaSettingsRange(MediaSettingsRange), unMediaSettingsRange, noMediaSettingsRange, gTypeMediaSettingsRange
  , MediaSource(MediaSource), unMediaSource, noMediaSource, gTypeMediaSource
  , MediaSourceHandle(MediaSourceHandle), unMediaSourceHandle, noMediaSourceHandle, gTypeMediaSourceHandle
  , MediaStream(MediaStream), unMediaStream, noMediaStream, gTypeMediaStream
  , MediaStreamAudioDestinationNode(MediaStreamAudioDestinationNode), unMediaStreamAudioDestinationNode, noMediaStreamAudioDestinationNode, gTypeMediaStreamAudioDestinationNode
  , MediaStreamAudioSourceNode(MediaStreamAudioSourceNode), unMediaStreamAudioSourceNode, noMediaStreamAudioSourceNode, gTypeMediaStreamAudioSourceNode
  , MediaStreamAudioSourceOptions(MediaStreamAudioSourceOptions), unMediaStreamAudioSourceOptions, noMediaStreamAudioSourceOptions, gTypeMediaStreamAudioSourceOptions
  , MediaStreamConstraints(MediaStreamConstraints), unMediaStreamConstraints, noMediaStreamConstraints, gTypeMediaStreamConstraints
  , MediaStreamTrack(MediaStreamTrack), unMediaStreamTrack, IsMediaStreamTrack, toMediaStreamTrack, noMediaStreamTrack, gTypeMediaStreamTrack
  , MediaStreamTrackEvent(MediaStreamTrackEvent), unMediaStreamTrackEvent, noMediaStreamTrackEvent, gTypeMediaStreamTrackEvent
  , MediaStreamTrackEventInit(MediaStreamTrackEventInit), unMediaStreamTrackEventInit, noMediaStreamTrackEventInit, gTypeMediaStreamTrackEventInit
  , MediaStreamTrackHandle(MediaStreamTrackHandle), unMediaStreamTrackHandle, noMediaStreamTrackHandle, gTypeMediaStreamTrackHandle
  , MediaStreamTrackProcessor(MediaStreamTrackProcessor), unMediaStreamTrackProcessor, noMediaStreamTrackProcessor, gTypeMediaStreamTrackProcessor
  , MediaStreamTrackProcessorInit(MediaStreamTrackProcessorInit), unMediaStreamTrackProcessorInit, noMediaStreamTrackProcessorInit, gTypeMediaStreamTrackProcessorInit
  , MediaTrackCapabilities(MediaTrackCapabilities), unMediaTrackCapabilities, noMediaTrackCapabilities, gTypeMediaTrackCapabilities
  , MediaTrackConstraintSet(MediaTrackConstraintSet), unMediaTrackConstraintSet, IsMediaTrackConstraintSet, toMediaTrackConstraintSet, noMediaTrackConstraintSet, gTypeMediaTrackConstraintSet
  , MediaTrackConstraints(MediaTrackConstraints), unMediaTrackConstraints, noMediaTrackConstraints, gTypeMediaTrackConstraints
  , MediaTrackSettings(MediaTrackSettings), unMediaTrackSettings, noMediaTrackSettings, gTypeMediaTrackSettings
  , MediaTrackSupportedConstraints(MediaTrackSupportedConstraints), unMediaTrackSupportedConstraints, noMediaTrackSupportedConstraints, gTypeMediaTrackSupportedConstraints
  , MessageChannel(MessageChannel), unMessageChannel, noMessageChannel, gTypeMessageChannel
  , MessageEvent(MessageEvent), unMessageEvent, noMessageEvent, gTypeMessageEvent
  , MessageEventInit(MessageEventInit), unMessageEventInit, noMessageEventInit, gTypeMessageEventInit
  , MessageEventTarget(MessageEventTarget), unMessageEventTarget, IsMessageEventTarget, toMessageEventTarget, noMessageEventTarget, gTypeMessageEventTarget
  , MessagePort(MessagePort), unMessagePort, noMessagePort, gTypeMessagePort
  , MimeType(MimeType), unMimeType, noMimeType, gTypeMimeType
  , MimeTypeArray(MimeTypeArray), unMimeTypeArray, noMimeTypeArray, gTypeMimeTypeArray
  , MouseEvent(MouseEvent), unMouseEvent, IsMouseEvent, toMouseEvent, noMouseEvent, gTypeMouseEvent
  , MouseEventInit(MouseEventInit), unMouseEventInit, IsMouseEventInit, toMouseEventInit, noMouseEventInit, gTypeMouseEventInit
  , MultiCacheQueryOptions(MultiCacheQueryOptions), unMultiCacheQueryOptions, noMultiCacheQueryOptions, gTypeMultiCacheQueryOptions
  , MutationObserver(MutationObserver), unMutationObserver, noMutationObserver, gTypeMutationObserver
  , MutationObserverInit(MutationObserverInit), unMutationObserverInit, noMutationObserverInit, gTypeMutationObserverInit
  , MutationRecord(MutationRecord), unMutationRecord, noMutationRecord, gTypeMutationRecord
  , NamedNodeMap(NamedNodeMap), unNamedNodeMap, noNamedNodeMap, gTypeNamedNodeMap
  , NavigateEvent(NavigateEvent), unNavigateEvent, noNavigateEvent, gTypeNavigateEvent
  , NavigateEventInit(NavigateEventInit), unNavigateEventInit, noNavigateEventInit, gTypeNavigateEventInit
  , Navigation(Navigation), unNavigation, noNavigation, gTypeNavigation
  , NavigationActivation(NavigationActivation), unNavigationActivation, noNavigationActivation, gTypeNavigationActivation
  , NavigationCurrentEntryChangeEvent(NavigationCurrentEntryChangeEvent), unNavigationCurrentEntryChangeEvent, noNavigationCurrentEntryChangeEvent, gTypeNavigationCurrentEntryChangeEvent
  , NavigationCurrentEntryChangeEventInit(NavigationCurrentEntryChangeEventInit), unNavigationCurrentEntryChangeEventInit, noNavigationCurrentEntryChangeEventInit, gTypeNavigationCurrentEntryChangeEventInit
  , NavigationDestination(NavigationDestination), unNavigationDestination, noNavigationDestination, gTypeNavigationDestination
  , NavigationEvent(NavigationEvent), unNavigationEvent, noNavigationEvent, gTypeNavigationEvent
  , NavigationHistoryEntry(NavigationHistoryEntry), unNavigationHistoryEntry, noNavigationHistoryEntry, gTypeNavigationHistoryEntry
  , NavigationInterceptOptions(NavigationInterceptOptions), unNavigationInterceptOptions, noNavigationInterceptOptions, gTypeNavigationInterceptOptions
  , NavigationNavigateOptions(NavigationNavigateOptions), unNavigationNavigateOptions, noNavigationNavigateOptions, gTypeNavigationNavigateOptions
  , NavigationOptions(NavigationOptions), unNavigationOptions, IsNavigationOptions, toNavigationOptions, noNavigationOptions, gTypeNavigationOptions
  , NavigationPrecommitController(NavigationPrecommitController), unNavigationPrecommitController, noNavigationPrecommitController, gTypeNavigationPrecommitController
  , NavigationPreloadManager(NavigationPreloadManager), unNavigationPreloadManager, noNavigationPreloadManager, gTypeNavigationPreloadManager
  , NavigationPreloadState(NavigationPreloadState), unNavigationPreloadState, noNavigationPreloadState, gTypeNavigationPreloadState
  , NavigationReloadOptions(NavigationReloadOptions), unNavigationReloadOptions, noNavigationReloadOptions, gTypeNavigationReloadOptions
  , NavigationResult(NavigationResult), unNavigationResult, noNavigationResult, gTypeNavigationResult
  , NavigationTransition(NavigationTransition), unNavigationTransition, noNavigationTransition, gTypeNavigationTransition
  , NavigationUpdateCurrentEntryOptions(NavigationUpdateCurrentEntryOptions), unNavigationUpdateCurrentEntryOptions, noNavigationUpdateCurrentEntryOptions, gTypeNavigationUpdateCurrentEntryOptions
  , Navigator(Navigator), unNavigator, noNavigator, gTypeNavigator
  , NavigatorAutomationInformation(NavigatorAutomationInformation), unNavigatorAutomationInformation, IsNavigatorAutomationInformation, toNavigatorAutomationInformation, noNavigatorAutomationInformation, gTypeNavigatorAutomationInformation
  , NavigatorBadge(NavigatorBadge), unNavigatorBadge, IsNavigatorBadge, toNavigatorBadge, noNavigatorBadge, gTypeNavigatorBadge
  , NavigatorConcurrentHardware(NavigatorConcurrentHardware), unNavigatorConcurrentHardware, IsNavigatorConcurrentHardware, toNavigatorConcurrentHardware, noNavigatorConcurrentHardware, gTypeNavigatorConcurrentHardware
  , NavigatorContentUtils(NavigatorContentUtils), unNavigatorContentUtils, IsNavigatorContentUtils, toNavigatorContentUtils, noNavigatorContentUtils, gTypeNavigatorContentUtils
  , NavigatorCookies(NavigatorCookies), unNavigatorCookies, IsNavigatorCookies, toNavigatorCookies, noNavigatorCookies, gTypeNavigatorCookies
  , NavigatorGPU(NavigatorGPU), unNavigatorGPU, IsNavigatorGPU, toNavigatorGPU, noNavigatorGPU, gTypeNavigatorGPU
  , NavigatorID(NavigatorID), unNavigatorID, IsNavigatorID, toNavigatorID, noNavigatorID, gTypeNavigatorID
  , NavigatorLanguage(NavigatorLanguage), unNavigatorLanguage, IsNavigatorLanguage, toNavigatorLanguage, noNavigatorLanguage, gTypeNavigatorLanguage
  , NavigatorLocks(NavigatorLocks), unNavigatorLocks, IsNavigatorLocks, toNavigatorLocks, noNavigatorLocks, gTypeNavigatorLocks
  , NavigatorLogin(NavigatorLogin), unNavigatorLogin, noNavigatorLogin, gTypeNavigatorLogin
  , NavigatorOnLine(NavigatorOnLine), unNavigatorOnLine, IsNavigatorOnLine, toNavigatorOnLine, noNavigatorOnLine, gTypeNavigatorOnLine
  , NavigatorPlugins(NavigatorPlugins), unNavigatorPlugins, IsNavigatorPlugins, toNavigatorPlugins, noNavigatorPlugins, gTypeNavigatorPlugins
  , NavigatorStorage(NavigatorStorage), unNavigatorStorage, IsNavigatorStorage, toNavigatorStorage, noNavigatorStorage, gTypeNavigatorStorage
  , Node(Node), unNode, IsNode, toNode, noNode, gTypeNode
  , NodeIterator(NodeIterator), unNodeIterator, noNodeIterator, gTypeNodeIterator
  , NodeList(NodeList), unNodeList, IsNodeList, toNodeList, noNodeList, gTypeNodeList
  , NonDocumentTypeChildNode(NonDocumentTypeChildNode), unNonDocumentTypeChildNode, IsNonDocumentTypeChildNode, toNonDocumentTypeChildNode, noNonDocumentTypeChildNode, gTypeNonDocumentTypeChildNode
  , NonElementParentNode(NonElementParentNode), unNonElementParentNode, IsNonElementParentNode, toNonElementParentNode, noNonElementParentNode, gTypeNonElementParentNode
  , Notification(Notification), unNotification, noNotification, gTypeNotification
  , NotificationAction(NotificationAction), unNotificationAction, noNotificationAction, gTypeNotificationAction
  , NotificationEvent(NotificationEvent), unNotificationEvent, noNotificationEvent, gTypeNotificationEvent
  , NotificationEventInit(NotificationEventInit), unNotificationEventInit, noNotificationEventInit, gTypeNotificationEventInit
  , NotificationOptions(NotificationOptions), unNotificationOptions, noNotificationOptions, gTypeNotificationOptions
  , OES_draw_buffers_indexed(OES_draw_buffers_indexed), unOES_draw_buffers_indexed, noOES_draw_buffers_indexed, gTypeOES_draw_buffers_indexed
  , OES_element_index_uint(OES_element_index_uint), unOES_element_index_uint, noOES_element_index_uint, gTypeOES_element_index_uint
  , OES_fbo_render_mipmap(OES_fbo_render_mipmap), unOES_fbo_render_mipmap, noOES_fbo_render_mipmap, gTypeOES_fbo_render_mipmap
  , OES_standard_derivatives(OES_standard_derivatives), unOES_standard_derivatives, noOES_standard_derivatives, gTypeOES_standard_derivatives
  , OES_texture_float(OES_texture_float), unOES_texture_float, noOES_texture_float, gTypeOES_texture_float
  , OES_texture_float_linear(OES_texture_float_linear), unOES_texture_float_linear, noOES_texture_float_linear, gTypeOES_texture_float_linear
  , OES_texture_half_float(OES_texture_half_float), unOES_texture_half_float, noOES_texture_half_float, gTypeOES_texture_half_float
  , OES_texture_half_float_linear(OES_texture_half_float_linear), unOES_texture_half_float_linear, noOES_texture_half_float_linear, gTypeOES_texture_half_float_linear
  , OES_vertex_array_object(OES_vertex_array_object), unOES_vertex_array_object, noOES_vertex_array_object, gTypeOES_vertex_array_object
  , OTPCredentialRequestOptions(OTPCredentialRequestOptions), unOTPCredentialRequestOptions, noOTPCredentialRequestOptions, gTypeOTPCredentialRequestOptions
  , OVR_multiview2(OVR_multiview2), unOVR_multiview2, noOVR_multiview2, gTypeOVR_multiview2
  , OfflineAudioCompletionEvent(OfflineAudioCompletionEvent), unOfflineAudioCompletionEvent, noOfflineAudioCompletionEvent, gTypeOfflineAudioCompletionEvent
  , OfflineAudioCompletionEventInit(OfflineAudioCompletionEventInit), unOfflineAudioCompletionEventInit, noOfflineAudioCompletionEventInit, gTypeOfflineAudioCompletionEventInit
  , OfflineAudioContext(OfflineAudioContext), unOfflineAudioContext, noOfflineAudioContext, gTypeOfflineAudioContext
  , OfflineAudioContextOptions(OfflineAudioContextOptions), unOfflineAudioContextOptions, noOfflineAudioContextOptions, gTypeOfflineAudioContextOptions
  , OffscreenCanvas(OffscreenCanvas), unOffscreenCanvas, noOffscreenCanvas, gTypeOffscreenCanvas
  , OffscreenCanvasRenderingContext2D(OffscreenCanvasRenderingContext2D), unOffscreenCanvasRenderingContext2D, noOffscreenCanvasRenderingContext2D, gTypeOffscreenCanvasRenderingContext2D
  , OptionalEffectTiming(OptionalEffectTiming), unOptionalEffectTiming, noOptionalEffectTiming, gTypeOptionalEffectTiming
  , OpusEncoderConfig(OpusEncoderConfig), unOpusEncoderConfig, noOpusEncoderConfig, gTypeOpusEncoderConfig
  , Origin(Origin), unOrigin, noOrigin, gTypeOrigin
  , OscillatorNode(OscillatorNode), unOscillatorNode, noOscillatorNode, gTypeOscillatorNode
  , OscillatorOptions(OscillatorOptions), unOscillatorOptions, noOscillatorOptions, gTypeOscillatorOptions
  , OverconstrainedError(OverconstrainedError), unOverconstrainedError, noOverconstrainedError, gTypeOverconstrainedError
  , PageRevealEvent(PageRevealEvent), unPageRevealEvent, noPageRevealEvent, gTypePageRevealEvent
  , PageRevealEventInit(PageRevealEventInit), unPageRevealEventInit, noPageRevealEventInit, gTypePageRevealEventInit
  , PageSwapEvent(PageSwapEvent), unPageSwapEvent, noPageSwapEvent, gTypePageSwapEvent
  , PageSwapEventInit(PageSwapEventInit), unPageSwapEventInit, noPageSwapEventInit, gTypePageSwapEventInit
  , PageTransitionEvent(PageTransitionEvent), unPageTransitionEvent, noPageTransitionEvent, gTypePageTransitionEvent
  , PageTransitionEventInit(PageTransitionEventInit), unPageTransitionEventInit, noPageTransitionEventInit, gTypePageTransitionEventInit
  , PaintTimingMixin(PaintTimingMixin), unPaintTimingMixin, IsPaintTimingMixin, toPaintTimingMixin, noPaintTimingMixin, gTypePaintTimingMixin
  , PannerNode(PannerNode), unPannerNode, noPannerNode, gTypePannerNode
  , PannerOptions(PannerOptions), unPannerOptions, noPannerOptions, gTypePannerOptions
  , ParentNode(ParentNode), unParentNode, IsParentNode, toParentNode, noParentNode, gTypeParentNode
  , ParseHTMLUnsafeOptions(ParseHTMLUnsafeOptions), unParseHTMLUnsafeOptions, noParseHTMLUnsafeOptions, gTypeParseHTMLUnsafeOptions
  , PasswordCredential(PasswordCredential), unPasswordCredential, noPasswordCredential, gTypePasswordCredential
  , PasswordCredentialData(PasswordCredentialData), unPasswordCredentialData, noPasswordCredentialData, gTypePasswordCredentialData
  , Path2D(Path2D), unPath2D, noPath2D, gTypePath2D
  , PayerErrors(PayerErrors), unPayerErrors, noPayerErrors, gTypePayerErrors
  , PaymentCompleteDetails(PaymentCompleteDetails), unPaymentCompleteDetails, noPaymentCompleteDetails, gTypePaymentCompleteDetails
  , PaymentCredentialInstrument(PaymentCredentialInstrument), unPaymentCredentialInstrument, noPaymentCredentialInstrument, gTypePaymentCredentialInstrument
  , PaymentCurrencyAmount(PaymentCurrencyAmount), unPaymentCurrencyAmount, noPaymentCurrencyAmount, gTypePaymentCurrencyAmount
  , PaymentDetailsBase(PaymentDetailsBase), unPaymentDetailsBase, IsPaymentDetailsBase, toPaymentDetailsBase, noPaymentDetailsBase, gTypePaymentDetailsBase
  , PaymentDetailsInit(PaymentDetailsInit), unPaymentDetailsInit, noPaymentDetailsInit, gTypePaymentDetailsInit
  , PaymentDetailsModifier(PaymentDetailsModifier), unPaymentDetailsModifier, noPaymentDetailsModifier, gTypePaymentDetailsModifier
  , PaymentDetailsUpdate(PaymentDetailsUpdate), unPaymentDetailsUpdate, noPaymentDetailsUpdate, gTypePaymentDetailsUpdate
  , PaymentEntityLogo(PaymentEntityLogo), unPaymentEntityLogo, noPaymentEntityLogo, gTypePaymentEntityLogo
  , PaymentItem(PaymentItem), unPaymentItem, noPaymentItem, gTypePaymentItem
  , PaymentMethodChangeEvent(PaymentMethodChangeEvent), unPaymentMethodChangeEvent, noPaymentMethodChangeEvent, gTypePaymentMethodChangeEvent
  , PaymentMethodChangeEventInit(PaymentMethodChangeEventInit), unPaymentMethodChangeEventInit, noPaymentMethodChangeEventInit, gTypePaymentMethodChangeEventInit
  , PaymentMethodData(PaymentMethodData), unPaymentMethodData, noPaymentMethodData, gTypePaymentMethodData
  , PaymentOptions(PaymentOptions), unPaymentOptions, noPaymentOptions, gTypePaymentOptions
  , PaymentRequest(PaymentRequest), unPaymentRequest, noPaymentRequest, gTypePaymentRequest
  , PaymentRequestUpdateEvent(PaymentRequestUpdateEvent), unPaymentRequestUpdateEvent, IsPaymentRequestUpdateEvent, toPaymentRequestUpdateEvent, noPaymentRequestUpdateEvent, gTypePaymentRequestUpdateEvent
  , PaymentRequestUpdateEventInit(PaymentRequestUpdateEventInit), unPaymentRequestUpdateEventInit, IsPaymentRequestUpdateEventInit, toPaymentRequestUpdateEventInit, noPaymentRequestUpdateEventInit, gTypePaymentRequestUpdateEventInit
  , PaymentResponse(PaymentResponse), unPaymentResponse, noPaymentResponse, gTypePaymentResponse
  , PaymentShippingOption(PaymentShippingOption), unPaymentShippingOption, noPaymentShippingOption, gTypePaymentShippingOption
  , PaymentValidationErrors(PaymentValidationErrors), unPaymentValidationErrors, noPaymentValidationErrors, gTypePaymentValidationErrors
  , Performance(Performance), unPerformance, noPerformance, gTypePerformance
  , PerformanceEntry(PerformanceEntry), unPerformanceEntry, IsPerformanceEntry, toPerformanceEntry, noPerformanceEntry, gTypePerformanceEntry
  , PerformanceEventTiming(PerformanceEventTiming), unPerformanceEventTiming, noPerformanceEventTiming, gTypePerformanceEventTiming
  , PerformanceMark(PerformanceMark), unPerformanceMark, noPerformanceMark, gTypePerformanceMark
  , PerformanceMarkOptions(PerformanceMarkOptions), unPerformanceMarkOptions, noPerformanceMarkOptions, gTypePerformanceMarkOptions
  , PerformanceMeasure(PerformanceMeasure), unPerformanceMeasure, noPerformanceMeasure, gTypePerformanceMeasure
  , PerformanceMeasureOptions(PerformanceMeasureOptions), unPerformanceMeasureOptions, noPerformanceMeasureOptions, gTypePerformanceMeasureOptions
  , PerformanceNavigation(PerformanceNavigation), unPerformanceNavigation, noPerformanceNavigation, gTypePerformanceNavigation
  , PerformanceNavigationTiming(PerformanceNavigationTiming), unPerformanceNavigationTiming, noPerformanceNavigationTiming, gTypePerformanceNavigationTiming
  , PerformanceObserver(PerformanceObserver), unPerformanceObserver, noPerformanceObserver, gTypePerformanceObserver
  , PerformanceObserverCallbackOptions(PerformanceObserverCallbackOptions), unPerformanceObserverCallbackOptions, noPerformanceObserverCallbackOptions, gTypePerformanceObserverCallbackOptions
  , PerformanceObserverEntryList(PerformanceObserverEntryList), unPerformanceObserverEntryList, noPerformanceObserverEntryList, gTypePerformanceObserverEntryList
  , PerformanceObserverInit(PerformanceObserverInit), unPerformanceObserverInit, noPerformanceObserverInit, gTypePerformanceObserverInit
  , PerformancePaintTiming(PerformancePaintTiming), unPerformancePaintTiming, noPerformancePaintTiming, gTypePerformancePaintTiming
  , PerformanceResourceTiming(PerformanceResourceTiming), unPerformanceResourceTiming, IsPerformanceResourceTiming, toPerformanceResourceTiming, noPerformanceResourceTiming, gTypePerformanceResourceTiming
  , PerformanceServerTiming(PerformanceServerTiming), unPerformanceServerTiming, noPerformanceServerTiming, gTypePerformanceServerTiming
  , PerformanceTiming(PerformanceTiming), unPerformanceTiming, noPerformanceTiming, gTypePerformanceTiming
  , PeriodicWave(PeriodicWave), unPeriodicWave, noPeriodicWave, gTypePeriodicWave
  , PeriodicWaveConstraints(PeriodicWaveConstraints), unPeriodicWaveConstraints, IsPeriodicWaveConstraints, toPeriodicWaveConstraints, noPeriodicWaveConstraints, gTypePeriodicWaveConstraints
  , PeriodicWaveOptions(PeriodicWaveOptions), unPeriodicWaveOptions, noPeriodicWaveOptions, gTypePeriodicWaveOptions
  , PermissionStatus(PermissionStatus), unPermissionStatus, noPermissionStatus, gTypePermissionStatus
  , Permissions(Permissions), unPermissions, noPermissions, gTypePermissions
  , PhotoCapabilities(PhotoCapabilities), unPhotoCapabilities, noPhotoCapabilities, gTypePhotoCapabilities
  , PhotoSettings(PhotoSettings), unPhotoSettings, noPhotoSettings, gTypePhotoSettings
  , PictureInPictureEvent(PictureInPictureEvent), unPictureInPictureEvent, noPictureInPictureEvent, gTypePictureInPictureEvent
  , PictureInPictureEventInit(PictureInPictureEventInit), unPictureInPictureEventInit, noPictureInPictureEventInit, gTypePictureInPictureEventInit
  , PictureInPictureWindow(PictureInPictureWindow), unPictureInPictureWindow, noPictureInPictureWindow, gTypePictureInPictureWindow
  , PlaneLayout(PlaneLayout), unPlaneLayout, noPlaneLayout, gTypePlaneLayout
  , Plugin(Plugin), unPlugin, noPlugin, gTypePlugin
  , PluginArray(PluginArray), unPluginArray, noPluginArray, gTypePluginArray
  , Point2D(Point2D), unPoint2D, noPoint2D, gTypePoint2D
  , PointerEvent(PointerEvent), unPointerEvent, noPointerEvent, gTypePointerEvent
  , PointerEventInit(PointerEventInit), unPointerEventInit, noPointerEventInit, gTypePointerEventInit
  , PointerLockOptions(PointerLockOptions), unPointerLockOptions, noPointerLockOptions, gTypePointerLockOptions
  , PopStateEvent(PopStateEvent), unPopStateEvent, noPopStateEvent, gTypePopStateEvent
  , PopStateEventInit(PopStateEventInit), unPopStateEventInit, noPopStateEventInit, gTypePopStateEventInit
  , PopoverTargetAttributes(PopoverTargetAttributes), unPopoverTargetAttributes, IsPopoverTargetAttributes, toPopoverTargetAttributes, noPopoverTargetAttributes, gTypePopoverTargetAttributes
  , PositionOptions(PositionOptions), unPositionOptions, noPositionOptions, gTypePositionOptions
  , PrivateToken(PrivateToken), unPrivateToken, noPrivateToken, gTypePrivateToken
  , ProcessingInstruction(ProcessingInstruction), unProcessingInstruction, noProcessingInstruction, gTypeProcessingInstruction
  , ProgressEvent(ProgressEvent), unProgressEvent, noProgressEvent, gTypeProgressEvent
  , ProgressEventInit(ProgressEventInit), unProgressEventInit, noProgressEventInit, gTypeProgressEventInit
  , PromiseRejectionEvent(PromiseRejectionEvent), unPromiseRejectionEvent, noPromiseRejectionEvent, gTypePromiseRejectionEvent
  , PromiseRejectionEventInit(PromiseRejectionEventInit), unPromiseRejectionEventInit, noPromiseRejectionEventInit, gTypePromiseRejectionEventInit
  , PropertyDefinition(PropertyDefinition), unPropertyDefinition, noPropertyDefinition, gTypePropertyDefinition
  , PublicKeyCredential(PublicKeyCredential), unPublicKeyCredential, noPublicKeyCredential, gTypePublicKeyCredential
  , PublicKeyCredentialCreationOptions(PublicKeyCredentialCreationOptions), unPublicKeyCredentialCreationOptions, noPublicKeyCredentialCreationOptions, gTypePublicKeyCredentialCreationOptions
  , PublicKeyCredentialCreationOptionsJSON(PublicKeyCredentialCreationOptionsJSON), unPublicKeyCredentialCreationOptionsJSON, noPublicKeyCredentialCreationOptionsJSON, gTypePublicKeyCredentialCreationOptionsJSON
  , PublicKeyCredentialDescriptor(PublicKeyCredentialDescriptor), unPublicKeyCredentialDescriptor, noPublicKeyCredentialDescriptor, gTypePublicKeyCredentialDescriptor
  , PublicKeyCredentialDescriptorJSON(PublicKeyCredentialDescriptorJSON), unPublicKeyCredentialDescriptorJSON, noPublicKeyCredentialDescriptorJSON, gTypePublicKeyCredentialDescriptorJSON
  , PublicKeyCredentialEntity(PublicKeyCredentialEntity), unPublicKeyCredentialEntity, IsPublicKeyCredentialEntity, toPublicKeyCredentialEntity, noPublicKeyCredentialEntity, gTypePublicKeyCredentialEntity
  , PublicKeyCredentialParameters(PublicKeyCredentialParameters), unPublicKeyCredentialParameters, noPublicKeyCredentialParameters, gTypePublicKeyCredentialParameters
  , PublicKeyCredentialRequestOptions(PublicKeyCredentialRequestOptions), unPublicKeyCredentialRequestOptions, noPublicKeyCredentialRequestOptions, gTypePublicKeyCredentialRequestOptions
  , PublicKeyCredentialRequestOptionsJSON(PublicKeyCredentialRequestOptionsJSON), unPublicKeyCredentialRequestOptionsJSON, noPublicKeyCredentialRequestOptionsJSON, gTypePublicKeyCredentialRequestOptionsJSON
  , PublicKeyCredentialRpEntity(PublicKeyCredentialRpEntity), unPublicKeyCredentialRpEntity, noPublicKeyCredentialRpEntity, gTypePublicKeyCredentialRpEntity
  , PublicKeyCredentialUserEntity(PublicKeyCredentialUserEntity), unPublicKeyCredentialUserEntity, noPublicKeyCredentialUserEntity, gTypePublicKeyCredentialUserEntity
  , PublicKeyCredentialUserEntityJSON(PublicKeyCredentialUserEntityJSON), unPublicKeyCredentialUserEntityJSON, noPublicKeyCredentialUserEntityJSON, gTypePublicKeyCredentialUserEntityJSON
  , PushEvent(PushEvent), unPushEvent, noPushEvent, gTypePushEvent
  , PushEventInit(PushEventInit), unPushEventInit, noPushEventInit, gTypePushEventInit
  , PushManager(PushManager), unPushManager, noPushManager, gTypePushManager
  , PushManagerAttribute(PushManagerAttribute), unPushManagerAttribute, IsPushManagerAttribute, toPushManagerAttribute, noPushManagerAttribute, gTypePushManagerAttribute
  , PushMessageData(PushMessageData), unPushMessageData, noPushMessageData, gTypePushMessageData
  , PushSubscription(PushSubscription), unPushSubscription, noPushSubscription, gTypePushSubscription
  , PushSubscriptionChangeEvent(PushSubscriptionChangeEvent), unPushSubscriptionChangeEvent, noPushSubscriptionChangeEvent, gTypePushSubscriptionChangeEvent
  , PushSubscriptionChangeEventInit(PushSubscriptionChangeEventInit), unPushSubscriptionChangeEventInit, noPushSubscriptionChangeEventInit, gTypePushSubscriptionChangeEventInit
  , PushSubscriptionJSON(PushSubscriptionJSON), unPushSubscriptionJSON, noPushSubscriptionJSON, gTypePushSubscriptionJSON
  , PushSubscriptionKeys(PushSubscriptionKeys), unPushSubscriptionKeys, noPushSubscriptionKeys, gTypePushSubscriptionKeys
  , PushSubscriptionOptions(PushSubscriptionOptions), unPushSubscriptionOptions, noPushSubscriptionOptions, gTypePushSubscriptionOptions
  , PushSubscriptionOptionsInit(PushSubscriptionOptionsInit), unPushSubscriptionOptionsInit, noPushSubscriptionOptionsInit, gTypePushSubscriptionOptionsInit
  , QueuingStrategy(QueuingStrategy), unQueuingStrategy, noQueuingStrategy, gTypeQueuingStrategy
  , QueuingStrategyInit(QueuingStrategyInit), unQueuingStrategyInit, noQueuingStrategyInit, gTypeQueuingStrategyInit
  , RTCAnswerOptions(RTCAnswerOptions), unRTCAnswerOptions, noRTCAnswerOptions, gTypeRTCAnswerOptions
  , RTCCertificate(RTCCertificate), unRTCCertificate, noRTCCertificate, gTypeRTCCertificate
  , RTCConfiguration(RTCConfiguration), unRTCConfiguration, noRTCConfiguration, gTypeRTCConfiguration
  , RTCDTMFSender(RTCDTMFSender), unRTCDTMFSender, noRTCDTMFSender, gTypeRTCDTMFSender
  , RTCDTMFToneChangeEvent(RTCDTMFToneChangeEvent), unRTCDTMFToneChangeEvent, noRTCDTMFToneChangeEvent, gTypeRTCDTMFToneChangeEvent
  , RTCDTMFToneChangeEventInit(RTCDTMFToneChangeEventInit), unRTCDTMFToneChangeEventInit, noRTCDTMFToneChangeEventInit, gTypeRTCDTMFToneChangeEventInit
  , RTCDataChannel(RTCDataChannel), unRTCDataChannel, noRTCDataChannel, gTypeRTCDataChannel
  , RTCDataChannelEvent(RTCDataChannelEvent), unRTCDataChannelEvent, noRTCDataChannelEvent, gTypeRTCDataChannelEvent
  , RTCDataChannelEventInit(RTCDataChannelEventInit), unRTCDataChannelEventInit, noRTCDataChannelEventInit, gTypeRTCDataChannelEventInit
  , RTCDataChannelInit(RTCDataChannelInit), unRTCDataChannelInit, noRTCDataChannelInit, gTypeRTCDataChannelInit
  , RTCDtlsFingerprint(RTCDtlsFingerprint), unRTCDtlsFingerprint, noRTCDtlsFingerprint, gTypeRTCDtlsFingerprint
  , RTCDtlsTransport(RTCDtlsTransport), unRTCDtlsTransport, noRTCDtlsTransport, gTypeRTCDtlsTransport
  , RTCEncodedAudioFrame(RTCEncodedAudioFrame), unRTCEncodedAudioFrame, noRTCEncodedAudioFrame, gTypeRTCEncodedAudioFrame
  , RTCEncodedAudioFrameMetadata(RTCEncodedAudioFrameMetadata), unRTCEncodedAudioFrameMetadata, noRTCEncodedAudioFrameMetadata, gTypeRTCEncodedAudioFrameMetadata
  , RTCEncodedAudioFrameOptions(RTCEncodedAudioFrameOptions), unRTCEncodedAudioFrameOptions, noRTCEncodedAudioFrameOptions, gTypeRTCEncodedAudioFrameOptions
  , RTCEncodedFrameMetadata(RTCEncodedFrameMetadata), unRTCEncodedFrameMetadata, IsRTCEncodedFrameMetadata, toRTCEncodedFrameMetadata, noRTCEncodedFrameMetadata, gTypeRTCEncodedFrameMetadata
  , RTCEncodedVideoFrame(RTCEncodedVideoFrame), unRTCEncodedVideoFrame, noRTCEncodedVideoFrame, gTypeRTCEncodedVideoFrame
  , RTCEncodedVideoFrameMetadata(RTCEncodedVideoFrameMetadata), unRTCEncodedVideoFrameMetadata, noRTCEncodedVideoFrameMetadata, gTypeRTCEncodedVideoFrameMetadata
  , RTCEncodedVideoFrameOptions(RTCEncodedVideoFrameOptions), unRTCEncodedVideoFrameOptions, noRTCEncodedVideoFrameOptions, gTypeRTCEncodedVideoFrameOptions
  , RTCError(RTCError), unRTCError, noRTCError, gTypeRTCError
  , RTCErrorEvent(RTCErrorEvent), unRTCErrorEvent, noRTCErrorEvent, gTypeRTCErrorEvent
  , RTCErrorEventInit(RTCErrorEventInit), unRTCErrorEventInit, noRTCErrorEventInit, gTypeRTCErrorEventInit
  , RTCErrorInit(RTCErrorInit), unRTCErrorInit, noRTCErrorInit, gTypeRTCErrorInit
  , RTCIceCandidate(RTCIceCandidate), unRTCIceCandidate, noRTCIceCandidate, gTypeRTCIceCandidate
  , RTCIceCandidateInit(RTCIceCandidateInit), unRTCIceCandidateInit, IsRTCIceCandidateInit, toRTCIceCandidateInit, noRTCIceCandidateInit, gTypeRTCIceCandidateInit
  , RTCIceCandidatePair(RTCIceCandidatePair), unRTCIceCandidatePair, noRTCIceCandidatePair, gTypeRTCIceCandidatePair
  , RTCIceServer(RTCIceServer), unRTCIceServer, noRTCIceServer, gTypeRTCIceServer
  , RTCIceTransport(RTCIceTransport), unRTCIceTransport, noRTCIceTransport, gTypeRTCIceTransport
  , RTCLocalIceCandidateInit(RTCLocalIceCandidateInit), unRTCLocalIceCandidateInit, noRTCLocalIceCandidateInit, gTypeRTCLocalIceCandidateInit
  , RTCLocalSessionDescriptionInit(RTCLocalSessionDescriptionInit), unRTCLocalSessionDescriptionInit, noRTCLocalSessionDescriptionInit, gTypeRTCLocalSessionDescriptionInit
  , RTCOfferAnswerOptions(RTCOfferAnswerOptions), unRTCOfferAnswerOptions, IsRTCOfferAnswerOptions, toRTCOfferAnswerOptions, noRTCOfferAnswerOptions, gTypeRTCOfferAnswerOptions
  , RTCOfferOptions(RTCOfferOptions), unRTCOfferOptions, noRTCOfferOptions, gTypeRTCOfferOptions
  , RTCPeerConnection(RTCPeerConnection), unRTCPeerConnection, noRTCPeerConnection, gTypeRTCPeerConnection
  , RTCPeerConnectionIceErrorEvent(RTCPeerConnectionIceErrorEvent), unRTCPeerConnectionIceErrorEvent, noRTCPeerConnectionIceErrorEvent, gTypeRTCPeerConnectionIceErrorEvent
  , RTCPeerConnectionIceErrorEventInit(RTCPeerConnectionIceErrorEventInit), unRTCPeerConnectionIceErrorEventInit, noRTCPeerConnectionIceErrorEventInit, gTypeRTCPeerConnectionIceErrorEventInit
  , RTCPeerConnectionIceEvent(RTCPeerConnectionIceEvent), unRTCPeerConnectionIceEvent, noRTCPeerConnectionIceEvent, gTypeRTCPeerConnectionIceEvent
  , RTCPeerConnectionIceEventInit(RTCPeerConnectionIceEventInit), unRTCPeerConnectionIceEventInit, noRTCPeerConnectionIceEventInit, gTypeRTCPeerConnectionIceEventInit
  , RTCRtcpParameters(RTCRtcpParameters), unRTCRtcpParameters, noRTCRtcpParameters, gTypeRTCRtcpParameters
  , RTCRtpCapabilities(RTCRtpCapabilities), unRTCRtpCapabilities, noRTCRtpCapabilities, gTypeRTCRtpCapabilities
  , RTCRtpCodec(RTCRtpCodec), unRTCRtpCodec, IsRTCRtpCodec, toRTCRtpCodec, noRTCRtpCodec, gTypeRTCRtpCodec
  , RTCRtpCodecParameters(RTCRtpCodecParameters), unRTCRtpCodecParameters, noRTCRtpCodecParameters, gTypeRTCRtpCodecParameters
  , RTCRtpCodingParameters(RTCRtpCodingParameters), unRTCRtpCodingParameters, IsRTCRtpCodingParameters, toRTCRtpCodingParameters, noRTCRtpCodingParameters, gTypeRTCRtpCodingParameters
  , RTCRtpContributingSource(RTCRtpContributingSource), unRTCRtpContributingSource, IsRTCRtpContributingSource, toRTCRtpContributingSource, noRTCRtpContributingSource, gTypeRTCRtpContributingSource
  , RTCRtpEncodingParameters(RTCRtpEncodingParameters), unRTCRtpEncodingParameters, noRTCRtpEncodingParameters, gTypeRTCRtpEncodingParameters
  , RTCRtpHeaderExtensionCapability(RTCRtpHeaderExtensionCapability), unRTCRtpHeaderExtensionCapability, noRTCRtpHeaderExtensionCapability, gTypeRTCRtpHeaderExtensionCapability
  , RTCRtpHeaderExtensionParameters(RTCRtpHeaderExtensionParameters), unRTCRtpHeaderExtensionParameters, noRTCRtpHeaderExtensionParameters, gTypeRTCRtpHeaderExtensionParameters
  , RTCRtpParameters(RTCRtpParameters), unRTCRtpParameters, IsRTCRtpParameters, toRTCRtpParameters, noRTCRtpParameters, gTypeRTCRtpParameters
  , RTCRtpReceiveParameters(RTCRtpReceiveParameters), unRTCRtpReceiveParameters, noRTCRtpReceiveParameters, gTypeRTCRtpReceiveParameters
  , RTCRtpReceiver(RTCRtpReceiver), unRTCRtpReceiver, noRTCRtpReceiver, gTypeRTCRtpReceiver
  , RTCRtpSFrameDecryptor(RTCRtpSFrameDecryptor), unRTCRtpSFrameDecryptor, noRTCRtpSFrameDecryptor, gTypeRTCRtpSFrameDecryptor
  , RTCRtpSFrameEncryptor(RTCRtpSFrameEncryptor), unRTCRtpSFrameEncryptor, noRTCRtpSFrameEncryptor, gTypeRTCRtpSFrameEncryptor
  , RTCRtpScriptTransform(RTCRtpScriptTransform), unRTCRtpScriptTransform, noRTCRtpScriptTransform, gTypeRTCRtpScriptTransform
  , RTCRtpScriptTransformer(RTCRtpScriptTransformer), unRTCRtpScriptTransformer, noRTCRtpScriptTransformer, gTypeRTCRtpScriptTransformer
  , RTCRtpSendParameters(RTCRtpSendParameters), unRTCRtpSendParameters, noRTCRtpSendParameters, gTypeRTCRtpSendParameters
  , RTCRtpSender(RTCRtpSender), unRTCRtpSender, noRTCRtpSender, gTypeRTCRtpSender
  , RTCRtpSynchronizationSource(RTCRtpSynchronizationSource), unRTCRtpSynchronizationSource, noRTCRtpSynchronizationSource, gTypeRTCRtpSynchronizationSource
  , RTCRtpTransceiver(RTCRtpTransceiver), unRTCRtpTransceiver, noRTCRtpTransceiver, gTypeRTCRtpTransceiver
  , RTCRtpTransceiverInit(RTCRtpTransceiverInit), unRTCRtpTransceiverInit, noRTCRtpTransceiverInit, gTypeRTCRtpTransceiverInit
  , RTCSctpTransport(RTCSctpTransport), unRTCSctpTransport, noRTCSctpTransport, gTypeRTCSctpTransport
  , RTCSessionDescription(RTCSessionDescription), unRTCSessionDescription, noRTCSessionDescription, gTypeRTCSessionDescription
  , RTCSessionDescriptionInit(RTCSessionDescriptionInit), unRTCSessionDescriptionInit, noRTCSessionDescriptionInit, gTypeRTCSessionDescriptionInit
  , RTCSetParameterOptions(RTCSetParameterOptions), unRTCSetParameterOptions, noRTCSetParameterOptions, gTypeRTCSetParameterOptions
  , RTCStatsReport(RTCStatsReport), unRTCStatsReport, noRTCStatsReport, gTypeRTCStatsReport
  , RTCTrackEvent(RTCTrackEvent), unRTCTrackEvent, noRTCTrackEvent, gTypeRTCTrackEvent
  , RTCTrackEventInit(RTCTrackEventInit), unRTCTrackEventInit, noRTCTrackEventInit, gTypeRTCTrackEventInit
  , RTCTransformEvent(RTCTransformEvent), unRTCTransformEvent, noRTCTransformEvent, gTypeRTCTransformEvent
  , RadioNodeList(RadioNodeList), unRadioNodeList, noRadioNodeList, gTypeRadioNodeList
  , Range(Range), unRange, noRange, gTypeRange
  , ReadableByteStreamController(ReadableByteStreamController), unReadableByteStreamController, noReadableByteStreamController, gTypeReadableByteStreamController
  , ReadableStream(ReadableStream), unReadableStream, IsReadableStream, toReadableStream, noReadableStream, gTypeReadableStream
  , ReadableStreamBYOBReader(ReadableStreamBYOBReader), unReadableStreamBYOBReader, noReadableStreamBYOBReader, gTypeReadableStreamBYOBReader
  , ReadableStreamBYOBReaderReadOptions(ReadableStreamBYOBReaderReadOptions), unReadableStreamBYOBReaderReadOptions, noReadableStreamBYOBReaderReadOptions, gTypeReadableStreamBYOBReaderReadOptions
  , ReadableStreamBYOBRequest(ReadableStreamBYOBRequest), unReadableStreamBYOBRequest, noReadableStreamBYOBRequest, gTypeReadableStreamBYOBRequest
  , ReadableStreamDefaultController(ReadableStreamDefaultController), unReadableStreamDefaultController, noReadableStreamDefaultController, gTypeReadableStreamDefaultController
  , ReadableStreamDefaultReader(ReadableStreamDefaultReader), unReadableStreamDefaultReader, noReadableStreamDefaultReader, gTypeReadableStreamDefaultReader
  , ReadableStreamGenericReader(ReadableStreamGenericReader), unReadableStreamGenericReader, IsReadableStreamGenericReader, toReadableStreamGenericReader, noReadableStreamGenericReader, gTypeReadableStreamGenericReader
  , ReadableStreamGetReaderOptions(ReadableStreamGetReaderOptions), unReadableStreamGetReaderOptions, noReadableStreamGetReaderOptions, gTypeReadableStreamGetReaderOptions
  , ReadableStreamReadResult(ReadableStreamReadResult), unReadableStreamReadResult, noReadableStreamReadResult, gTypeReadableStreamReadResult
  , ReadableWritablePair(ReadableWritablePair), unReadableWritablePair, noReadableWritablePair, gTypeReadableWritablePair
  , RegistrationOptions(RegistrationOptions), unRegistrationOptions, noRegistrationOptions, gTypeRegistrationOptions
  , RemotePlayback(RemotePlayback), unRemotePlayback, noRemotePlayback, gTypeRemotePlayback
  , Report(Report), unReport, noReport, gTypeReport
  , ReportBody(ReportBody), unReportBody, noReportBody, gTypeReportBody
  , ReportingObserver(ReportingObserver), unReportingObserver, noReportingObserver, gTypeReportingObserver
  , ReportingObserverOptions(ReportingObserverOptions), unReportingObserverOptions, noReportingObserverOptions, gTypeReportingObserverOptions
  , Request(Request), unRequest, noRequest, gTypeRequest
  , RequestInit(RequestInit), unRequestInit, noRequestInit, gTypeRequestInit
  , ResizeObserver(ResizeObserver), unResizeObserver, noResizeObserver, gTypeResizeObserver
  , ResizeObserverEntry(ResizeObserverEntry), unResizeObserverEntry, noResizeObserverEntry, gTypeResizeObserverEntry
  , ResizeObserverOptions(ResizeObserverOptions), unResizeObserverOptions, noResizeObserverOptions, gTypeResizeObserverOptions
  , ResizeObserverSize(ResizeObserverSize), unResizeObserverSize, noResizeObserverSize, gTypeResizeObserverSize
  , Response(Response), unResponse, noResponse, gTypeResponse
  , ResponseInit(ResponseInit), unResponseInit, noResponseInit, gTypeResponseInit
  , RouterCondition(RouterCondition), unRouterCondition, noRouterCondition, gTypeRouterCondition
  , RouterRule(RouterRule), unRouterRule, noRouterRule, gTypeRouterRule
  , RouterSourceDict(RouterSourceDict), unRouterSourceDict, noRouterSourceDict, gTypeRouterSourceDict
  , RsaOtherPrimesInfo(RsaOtherPrimesInfo), unRsaOtherPrimesInfo, noRsaOtherPrimesInfo, gTypeRsaOtherPrimesInfo
  , SVGAElement(SVGAElement), unSVGAElement, noSVGAElement, gTypeSVGAElement
  , SVGAngle(SVGAngle), unSVGAngle, noSVGAngle, gTypeSVGAngle
  , SVGAnimateElement(SVGAnimateElement), unSVGAnimateElement, noSVGAnimateElement, gTypeSVGAnimateElement
  , SVGAnimateMotionElement(SVGAnimateMotionElement), unSVGAnimateMotionElement, noSVGAnimateMotionElement, gTypeSVGAnimateMotionElement
  , SVGAnimateTransformElement(SVGAnimateTransformElement), unSVGAnimateTransformElement, noSVGAnimateTransformElement, gTypeSVGAnimateTransformElement
  , SVGAnimatedAngle(SVGAnimatedAngle), unSVGAnimatedAngle, noSVGAnimatedAngle, gTypeSVGAnimatedAngle
  , SVGAnimatedBoolean(SVGAnimatedBoolean), unSVGAnimatedBoolean, noSVGAnimatedBoolean, gTypeSVGAnimatedBoolean
  , SVGAnimatedEnumeration(SVGAnimatedEnumeration), unSVGAnimatedEnumeration, noSVGAnimatedEnumeration, gTypeSVGAnimatedEnumeration
  , SVGAnimatedInteger(SVGAnimatedInteger), unSVGAnimatedInteger, noSVGAnimatedInteger, gTypeSVGAnimatedInteger
  , SVGAnimatedLength(SVGAnimatedLength), unSVGAnimatedLength, noSVGAnimatedLength, gTypeSVGAnimatedLength
  , SVGAnimatedLengthList(SVGAnimatedLengthList), unSVGAnimatedLengthList, noSVGAnimatedLengthList, gTypeSVGAnimatedLengthList
  , SVGAnimatedNumber(SVGAnimatedNumber), unSVGAnimatedNumber, noSVGAnimatedNumber, gTypeSVGAnimatedNumber
  , SVGAnimatedNumberList(SVGAnimatedNumberList), unSVGAnimatedNumberList, noSVGAnimatedNumberList, gTypeSVGAnimatedNumberList
  , SVGAnimatedPoints(SVGAnimatedPoints), unSVGAnimatedPoints, IsSVGAnimatedPoints, toSVGAnimatedPoints, noSVGAnimatedPoints, gTypeSVGAnimatedPoints
  , SVGAnimatedPreserveAspectRatio(SVGAnimatedPreserveAspectRatio), unSVGAnimatedPreserveAspectRatio, noSVGAnimatedPreserveAspectRatio, gTypeSVGAnimatedPreserveAspectRatio
  , SVGAnimatedRect(SVGAnimatedRect), unSVGAnimatedRect, noSVGAnimatedRect, gTypeSVGAnimatedRect
  , SVGAnimatedString(SVGAnimatedString), unSVGAnimatedString, noSVGAnimatedString, gTypeSVGAnimatedString
  , SVGAnimatedTransformList(SVGAnimatedTransformList), unSVGAnimatedTransformList, noSVGAnimatedTransformList, gTypeSVGAnimatedTransformList
  , SVGAnimationElement(SVGAnimationElement), unSVGAnimationElement, IsSVGAnimationElement, toSVGAnimationElement, noSVGAnimationElement, gTypeSVGAnimationElement
  , SVGBoundingBoxOptions(SVGBoundingBoxOptions), unSVGBoundingBoxOptions, noSVGBoundingBoxOptions, gTypeSVGBoundingBoxOptions
  , SVGCircleElement(SVGCircleElement), unSVGCircleElement, noSVGCircleElement, gTypeSVGCircleElement
  , SVGClipPathElement(SVGClipPathElement), unSVGClipPathElement, noSVGClipPathElement, gTypeSVGClipPathElement
  , SVGComponentTransferFunctionElement(SVGComponentTransferFunctionElement), unSVGComponentTransferFunctionElement, IsSVGComponentTransferFunctionElement, toSVGComponentTransferFunctionElement, noSVGComponentTransferFunctionElement, gTypeSVGComponentTransferFunctionElement
  , SVGDefsElement(SVGDefsElement), unSVGDefsElement, noSVGDefsElement, gTypeSVGDefsElement
  , SVGDescElement(SVGDescElement), unSVGDescElement, noSVGDescElement, gTypeSVGDescElement
  , SVGElement(SVGElement), unSVGElement, IsSVGElement, toSVGElement, noSVGElement, gTypeSVGElement
  , SVGEllipseElement(SVGEllipseElement), unSVGEllipseElement, noSVGEllipseElement, gTypeSVGEllipseElement
  , SVGFEBlendElement(SVGFEBlendElement), unSVGFEBlendElement, noSVGFEBlendElement, gTypeSVGFEBlendElement
  , SVGFEColorMatrixElement(SVGFEColorMatrixElement), unSVGFEColorMatrixElement, noSVGFEColorMatrixElement, gTypeSVGFEColorMatrixElement
  , SVGFEComponentTransferElement(SVGFEComponentTransferElement), unSVGFEComponentTransferElement, noSVGFEComponentTransferElement, gTypeSVGFEComponentTransferElement
  , SVGFECompositeElement(SVGFECompositeElement), unSVGFECompositeElement, noSVGFECompositeElement, gTypeSVGFECompositeElement
  , SVGFEConvolveMatrixElement(SVGFEConvolveMatrixElement), unSVGFEConvolveMatrixElement, noSVGFEConvolveMatrixElement, gTypeSVGFEConvolveMatrixElement
  , SVGFEDiffuseLightingElement(SVGFEDiffuseLightingElement), unSVGFEDiffuseLightingElement, noSVGFEDiffuseLightingElement, gTypeSVGFEDiffuseLightingElement
  , SVGFEDisplacementMapElement(SVGFEDisplacementMapElement), unSVGFEDisplacementMapElement, noSVGFEDisplacementMapElement, gTypeSVGFEDisplacementMapElement
  , SVGFEDistantLightElement(SVGFEDistantLightElement), unSVGFEDistantLightElement, noSVGFEDistantLightElement, gTypeSVGFEDistantLightElement
  , SVGFEDropShadowElement(SVGFEDropShadowElement), unSVGFEDropShadowElement, noSVGFEDropShadowElement, gTypeSVGFEDropShadowElement
  , SVGFEFloodElement(SVGFEFloodElement), unSVGFEFloodElement, noSVGFEFloodElement, gTypeSVGFEFloodElement
  , SVGFEFuncAElement(SVGFEFuncAElement), unSVGFEFuncAElement, noSVGFEFuncAElement, gTypeSVGFEFuncAElement
  , SVGFEFuncBElement(SVGFEFuncBElement), unSVGFEFuncBElement, noSVGFEFuncBElement, gTypeSVGFEFuncBElement
  , SVGFEFuncGElement(SVGFEFuncGElement), unSVGFEFuncGElement, noSVGFEFuncGElement, gTypeSVGFEFuncGElement
  , SVGFEFuncRElement(SVGFEFuncRElement), unSVGFEFuncRElement, noSVGFEFuncRElement, gTypeSVGFEFuncRElement
  , SVGFEGaussianBlurElement(SVGFEGaussianBlurElement), unSVGFEGaussianBlurElement, noSVGFEGaussianBlurElement, gTypeSVGFEGaussianBlurElement
  , SVGFEImageElement(SVGFEImageElement), unSVGFEImageElement, noSVGFEImageElement, gTypeSVGFEImageElement
  , SVGFEMergeElement(SVGFEMergeElement), unSVGFEMergeElement, noSVGFEMergeElement, gTypeSVGFEMergeElement
  , SVGFEMergeNodeElement(SVGFEMergeNodeElement), unSVGFEMergeNodeElement, noSVGFEMergeNodeElement, gTypeSVGFEMergeNodeElement
  , SVGFEMorphologyElement(SVGFEMorphologyElement), unSVGFEMorphologyElement, noSVGFEMorphologyElement, gTypeSVGFEMorphologyElement
  , SVGFEOffsetElement(SVGFEOffsetElement), unSVGFEOffsetElement, noSVGFEOffsetElement, gTypeSVGFEOffsetElement
  , SVGFEPointLightElement(SVGFEPointLightElement), unSVGFEPointLightElement, noSVGFEPointLightElement, gTypeSVGFEPointLightElement
  , SVGFESpecularLightingElement(SVGFESpecularLightingElement), unSVGFESpecularLightingElement, noSVGFESpecularLightingElement, gTypeSVGFESpecularLightingElement
  , SVGFESpotLightElement(SVGFESpotLightElement), unSVGFESpotLightElement, noSVGFESpotLightElement, gTypeSVGFESpotLightElement
  , SVGFETileElement(SVGFETileElement), unSVGFETileElement, noSVGFETileElement, gTypeSVGFETileElement
  , SVGFETurbulenceElement(SVGFETurbulenceElement), unSVGFETurbulenceElement, noSVGFETurbulenceElement, gTypeSVGFETurbulenceElement
  , SVGFilterElement(SVGFilterElement), unSVGFilterElement, noSVGFilterElement, gTypeSVGFilterElement
  , SVGFilterPrimitiveStandardAttributes(SVGFilterPrimitiveStandardAttributes), unSVGFilterPrimitiveStandardAttributes, IsSVGFilterPrimitiveStandardAttributes, toSVGFilterPrimitiveStandardAttributes, noSVGFilterPrimitiveStandardAttributes, gTypeSVGFilterPrimitiveStandardAttributes
  , SVGFitToViewBox(SVGFitToViewBox), unSVGFitToViewBox, IsSVGFitToViewBox, toSVGFitToViewBox, noSVGFitToViewBox, gTypeSVGFitToViewBox
  , SVGForeignObjectElement(SVGForeignObjectElement), unSVGForeignObjectElement, noSVGForeignObjectElement, gTypeSVGForeignObjectElement
  , SVGGElement(SVGGElement), unSVGGElement, noSVGGElement, gTypeSVGGElement
  , SVGGeometryElement(SVGGeometryElement), unSVGGeometryElement, IsSVGGeometryElement, toSVGGeometryElement, noSVGGeometryElement, gTypeSVGGeometryElement
  , SVGGradientElement(SVGGradientElement), unSVGGradientElement, IsSVGGradientElement, toSVGGradientElement, noSVGGradientElement, gTypeSVGGradientElement
  , SVGGraphicsElement(SVGGraphicsElement), unSVGGraphicsElement, IsSVGGraphicsElement, toSVGGraphicsElement, noSVGGraphicsElement, gTypeSVGGraphicsElement
  , SVGImageElement(SVGImageElement), unSVGImageElement, noSVGImageElement, gTypeSVGImageElement
  , SVGLength(SVGLength), unSVGLength, noSVGLength, gTypeSVGLength
  , SVGLengthList(SVGLengthList), unSVGLengthList, noSVGLengthList, gTypeSVGLengthList
  , SVGLineElement(SVGLineElement), unSVGLineElement, noSVGLineElement, gTypeSVGLineElement
  , SVGLinearGradientElement(SVGLinearGradientElement), unSVGLinearGradientElement, noSVGLinearGradientElement, gTypeSVGLinearGradientElement
  , SVGMPathElement(SVGMPathElement), unSVGMPathElement, noSVGMPathElement, gTypeSVGMPathElement
  , SVGMarkerElement(SVGMarkerElement), unSVGMarkerElement, noSVGMarkerElement, gTypeSVGMarkerElement
  , SVGMaskElement(SVGMaskElement), unSVGMaskElement, noSVGMaskElement, gTypeSVGMaskElement
  , SVGMetadataElement(SVGMetadataElement), unSVGMetadataElement, noSVGMetadataElement, gTypeSVGMetadataElement
  , SVGNumber(SVGNumber), unSVGNumber, noSVGNumber, gTypeSVGNumber
  , SVGNumberList(SVGNumberList), unSVGNumberList, noSVGNumberList, gTypeSVGNumberList
  , SVGPathElement(SVGPathElement), unSVGPathElement, noSVGPathElement, gTypeSVGPathElement
  , SVGPatternElement(SVGPatternElement), unSVGPatternElement, noSVGPatternElement, gTypeSVGPatternElement
  , SVGPointList(SVGPointList), unSVGPointList, noSVGPointList, gTypeSVGPointList
  , SVGPolygonElement(SVGPolygonElement), unSVGPolygonElement, noSVGPolygonElement, gTypeSVGPolygonElement
  , SVGPolylineElement(SVGPolylineElement), unSVGPolylineElement, noSVGPolylineElement, gTypeSVGPolylineElement
  , SVGPreserveAspectRatio(SVGPreserveAspectRatio), unSVGPreserveAspectRatio, noSVGPreserveAspectRatio, gTypeSVGPreserveAspectRatio
  , SVGRadialGradientElement(SVGRadialGradientElement), unSVGRadialGradientElement, noSVGRadialGradientElement, gTypeSVGRadialGradientElement
  , SVGRectElement(SVGRectElement), unSVGRectElement, noSVGRectElement, gTypeSVGRectElement
  , SVGSVGElement(SVGSVGElement), unSVGSVGElement, noSVGSVGElement, gTypeSVGSVGElement
  , SVGScriptElement(SVGScriptElement), unSVGScriptElement, noSVGScriptElement, gTypeSVGScriptElement
  , SVGSetElement(SVGSetElement), unSVGSetElement, noSVGSetElement, gTypeSVGSetElement
  , SVGStopElement(SVGStopElement), unSVGStopElement, noSVGStopElement, gTypeSVGStopElement
  , SVGStringList(SVGStringList), unSVGStringList, noSVGStringList, gTypeSVGStringList
  , SVGStyleElement(SVGStyleElement), unSVGStyleElement, noSVGStyleElement, gTypeSVGStyleElement
  , SVGSwitchElement(SVGSwitchElement), unSVGSwitchElement, noSVGSwitchElement, gTypeSVGSwitchElement
  , SVGSymbolElement(SVGSymbolElement), unSVGSymbolElement, noSVGSymbolElement, gTypeSVGSymbolElement
  , SVGTSpanElement(SVGTSpanElement), unSVGTSpanElement, noSVGTSpanElement, gTypeSVGTSpanElement
  , SVGTests(SVGTests), unSVGTests, IsSVGTests, toSVGTests, noSVGTests, gTypeSVGTests
  , SVGTextContentElement(SVGTextContentElement), unSVGTextContentElement, IsSVGTextContentElement, toSVGTextContentElement, noSVGTextContentElement, gTypeSVGTextContentElement
  , SVGTextElement(SVGTextElement), unSVGTextElement, noSVGTextElement, gTypeSVGTextElement
  , SVGTextPathElement(SVGTextPathElement), unSVGTextPathElement, noSVGTextPathElement, gTypeSVGTextPathElement
  , SVGTextPositioningElement(SVGTextPositioningElement), unSVGTextPositioningElement, IsSVGTextPositioningElement, toSVGTextPositioningElement, noSVGTextPositioningElement, gTypeSVGTextPositioningElement
  , SVGTitleElement(SVGTitleElement), unSVGTitleElement, noSVGTitleElement, gTypeSVGTitleElement
  , SVGTransform(SVGTransform), unSVGTransform, noSVGTransform, gTypeSVGTransform
  , SVGTransformList(SVGTransformList), unSVGTransformList, noSVGTransformList, gTypeSVGTransformList
  , SVGURIReference(SVGURIReference), unSVGURIReference, IsSVGURIReference, toSVGURIReference, noSVGURIReference, gTypeSVGURIReference
  , SVGUnitTypes(SVGUnitTypes), unSVGUnitTypes, noSVGUnitTypes, gTypeSVGUnitTypes
  , SVGUseElement(SVGUseElement), unSVGUseElement, noSVGUseElement, gTypeSVGUseElement
  , SVGViewElement(SVGViewElement), unSVGViewElement, noSVGViewElement, gTypeSVGViewElement
  , Sanitizer(Sanitizer), unSanitizer, noSanitizer, gTypeSanitizer
  , SanitizerAttributeNamespace(SanitizerAttributeNamespace), unSanitizerAttributeNamespace, noSanitizerAttributeNamespace, gTypeSanitizerAttributeNamespace
  , SanitizerConfig(SanitizerConfig), unSanitizerConfig, noSanitizerConfig, gTypeSanitizerConfig
  , SanitizerElementNamespace(SanitizerElementNamespace), unSanitizerElementNamespace, IsSanitizerElementNamespace, toSanitizerElementNamespace, noSanitizerElementNamespace, gTypeSanitizerElementNamespace
  , SanitizerElementNamespaceWithAttributes(SanitizerElementNamespaceWithAttributes), unSanitizerElementNamespaceWithAttributes, noSanitizerElementNamespaceWithAttributes, gTypeSanitizerElementNamespaceWithAttributes
  , SanitizerProcessingInstruction(SanitizerProcessingInstruction), unSanitizerProcessingInstruction, noSanitizerProcessingInstruction, gTypeSanitizerProcessingInstruction
  , Scheduler(Scheduler), unScheduler, noScheduler, gTypeScheduler
  , SchedulerPostTaskOptions(SchedulerPostTaskOptions), unSchedulerPostTaskOptions, noSchedulerPostTaskOptions, gTypeSchedulerPostTaskOptions
  , Screen(Screen), unScreen, IsScreen, toScreen, noScreen, gTypeScreen
  , ScreenDetailed(ScreenDetailed), unScreenDetailed, noScreenDetailed, gTypeScreenDetailed
  , ScreenOrientation(ScreenOrientation), unScreenOrientation, noScreenOrientation, gTypeScreenOrientation
  , ScriptProcessorNode(ScriptProcessorNode), unScriptProcessorNode, noScriptProcessorNode, gTypeScriptProcessorNode
  , ScrollIntoViewOptions(ScrollIntoViewOptions), unScrollIntoViewOptions, noScrollIntoViewOptions, gTypeScrollIntoViewOptions
  , ScrollOptions(ScrollOptions), unScrollOptions, IsScrollOptions, toScrollOptions, noScrollOptions, gTypeScrollOptions
  , ScrollResult(ScrollResult), unScrollResult, noScrollResult, gTypeScrollResult
  , ScrollTimeline(ScrollTimeline), unScrollTimeline, IsScrollTimeline, toScrollTimeline, noScrollTimeline, gTypeScrollTimeline
  , ScrollTimelineOptions(ScrollTimelineOptions), unScrollTimelineOptions, noScrollTimelineOptions, gTypeScrollTimelineOptions
  , ScrollToOptions(ScrollToOptions), unScrollToOptions, noScrollToOptions, gTypeScrollToOptions
  , SecurityPolicyViolationEvent(SecurityPolicyViolationEvent), unSecurityPolicyViolationEvent, noSecurityPolicyViolationEvent, gTypeSecurityPolicyViolationEvent
  , SecurityPolicyViolationEventInit(SecurityPolicyViolationEventInit), unSecurityPolicyViolationEventInit, noSecurityPolicyViolationEventInit, gTypeSecurityPolicyViolationEventInit
  , Segment(Segment), unSegment, noSegment, gTypeSegment
  , Selection(Selection), unSelection, noSelection, gTypeSelection
  , Serial(Serial), unSerial, noSerial, gTypeSerial
  , SerialInputSignals(SerialInputSignals), unSerialInputSignals, noSerialInputSignals, gTypeSerialInputSignals
  , SerialOptions(SerialOptions), unSerialOptions, noSerialOptions, gTypeSerialOptions
  , SerialOutputSignals(SerialOutputSignals), unSerialOutputSignals, noSerialOutputSignals, gTypeSerialOutputSignals
  , SerialPort(SerialPort), unSerialPort, noSerialPort, gTypeSerialPort
  , SerialPortFilter(SerialPortFilter), unSerialPortFilter, noSerialPortFilter, gTypeSerialPortFilter
  , SerialPortInfo(SerialPortInfo), unSerialPortInfo, noSerialPortInfo, gTypeSerialPortInfo
  , SerialPortRequestOptions(SerialPortRequestOptions), unSerialPortRequestOptions, noSerialPortRequestOptions, gTypeSerialPortRequestOptions
  , ServiceWorker(ServiceWorker), unServiceWorker, noServiceWorker, gTypeServiceWorker
  , ServiceWorkerContainer(ServiceWorkerContainer), unServiceWorkerContainer, noServiceWorkerContainer, gTypeServiceWorkerContainer
  , ServiceWorkerGlobalScope(ServiceWorkerGlobalScope), unServiceWorkerGlobalScope, noServiceWorkerGlobalScope, gTypeServiceWorkerGlobalScope
  , ServiceWorkerRegistration(ServiceWorkerRegistration), unServiceWorkerRegistration, noServiceWorkerRegistration, gTypeServiceWorkerRegistration
  , SetHTMLOptions(SetHTMLOptions), unSetHTMLOptions, noSetHTMLOptions, gTypeSetHTMLOptions
  , SetHTMLUnsafeOptions(SetHTMLUnsafeOptions), unSetHTMLUnsafeOptions, noSetHTMLUnsafeOptions, gTypeSetHTMLUnsafeOptions
  , ShadowRoot(ShadowRoot), unShadowRoot, noShadowRoot, gTypeShadowRoot
  , ShadowRootInit(ShadowRootInit), unShadowRootInit, noShadowRootInit, gTypeShadowRootInit
  , ShareData(ShareData), unShareData, noShareData, gTypeShareData
  , SharedArrayBuffer(SharedArrayBuffer), unSharedArrayBuffer, noSharedArrayBuffer, gTypeSharedArrayBuffer
  , SharedWorker(SharedWorker), unSharedWorker, noSharedWorker, gTypeSharedWorker
  , SharedWorkerGlobalScope(SharedWorkerGlobalScope), unSharedWorkerGlobalScope, noSharedWorkerGlobalScope, gTypeSharedWorkerGlobalScope
  , SharedWorkerOptions(SharedWorkerOptions), unSharedWorkerOptions, noSharedWorkerOptions, gTypeSharedWorkerOptions
  , ShowPopoverOptions(ShowPopoverOptions), unShowPopoverOptions, IsShowPopoverOptions, toShowPopoverOptions, noShowPopoverOptions, gTypeShowPopoverOptions
  , Slottable(Slottable), unSlottable, IsSlottable, toSlottable, noSlottable, gTypeSlottable
  , SourceBuffer(SourceBuffer), unSourceBuffer, noSourceBuffer, gTypeSourceBuffer
  , SourceBufferList(SourceBufferList), unSourceBufferList, noSourceBufferList, gTypeSourceBufferList
  , SpeechGrammar(SpeechGrammar), unSpeechGrammar, noSpeechGrammar, gTypeSpeechGrammar
  , SpeechGrammarList(SpeechGrammarList), unSpeechGrammarList, noSpeechGrammarList, gTypeSpeechGrammarList
  , SpeechRecognition(SpeechRecognition), unSpeechRecognition, noSpeechRecognition, gTypeSpeechRecognition
  , SpeechRecognitionAlternative(SpeechRecognitionAlternative), unSpeechRecognitionAlternative, noSpeechRecognitionAlternative, gTypeSpeechRecognitionAlternative
  , SpeechRecognitionErrorEvent(SpeechRecognitionErrorEvent), unSpeechRecognitionErrorEvent, noSpeechRecognitionErrorEvent, gTypeSpeechRecognitionErrorEvent
  , SpeechRecognitionErrorEventInit(SpeechRecognitionErrorEventInit), unSpeechRecognitionErrorEventInit, noSpeechRecognitionErrorEventInit, gTypeSpeechRecognitionErrorEventInit
  , SpeechRecognitionEvent(SpeechRecognitionEvent), unSpeechRecognitionEvent, noSpeechRecognitionEvent, gTypeSpeechRecognitionEvent
  , SpeechRecognitionEventInit(SpeechRecognitionEventInit), unSpeechRecognitionEventInit, noSpeechRecognitionEventInit, gTypeSpeechRecognitionEventInit
  , SpeechRecognitionOptions(SpeechRecognitionOptions), unSpeechRecognitionOptions, noSpeechRecognitionOptions, gTypeSpeechRecognitionOptions
  , SpeechRecognitionPhrase(SpeechRecognitionPhrase), unSpeechRecognitionPhrase, noSpeechRecognitionPhrase, gTypeSpeechRecognitionPhrase
  , SpeechRecognitionResult(SpeechRecognitionResult), unSpeechRecognitionResult, noSpeechRecognitionResult, gTypeSpeechRecognitionResult
  , SpeechRecognitionResultList(SpeechRecognitionResultList), unSpeechRecognitionResultList, noSpeechRecognitionResultList, gTypeSpeechRecognitionResultList
  , SpeechSynthesis(SpeechSynthesis), unSpeechSynthesis, noSpeechSynthesis, gTypeSpeechSynthesis
  , SpeechSynthesisErrorEvent(SpeechSynthesisErrorEvent), unSpeechSynthesisErrorEvent, noSpeechSynthesisErrorEvent, gTypeSpeechSynthesisErrorEvent
  , SpeechSynthesisErrorEventInit(SpeechSynthesisErrorEventInit), unSpeechSynthesisErrorEventInit, noSpeechSynthesisErrorEventInit, gTypeSpeechSynthesisErrorEventInit
  , SpeechSynthesisEvent(SpeechSynthesisEvent), unSpeechSynthesisEvent, IsSpeechSynthesisEvent, toSpeechSynthesisEvent, noSpeechSynthesisEvent, gTypeSpeechSynthesisEvent
  , SpeechSynthesisEventInit(SpeechSynthesisEventInit), unSpeechSynthesisEventInit, IsSpeechSynthesisEventInit, toSpeechSynthesisEventInit, noSpeechSynthesisEventInit, gTypeSpeechSynthesisEventInit
  , SpeechSynthesisUtterance(SpeechSynthesisUtterance), unSpeechSynthesisUtterance, noSpeechSynthesisUtterance, gTypeSpeechSynthesisUtterance
  , SpeechSynthesisVoice(SpeechSynthesisVoice), unSpeechSynthesisVoice, noSpeechSynthesisVoice, gTypeSpeechSynthesisVoice
  , StartViewTransitionOptions(StartViewTransitionOptions), unStartViewTransitionOptions, noStartViewTransitionOptions, gTypeStartViewTransitionOptions
  , StaticRange(StaticRange), unStaticRange, noStaticRange, gTypeStaticRange
  , StaticRangeInit(StaticRangeInit), unStaticRangeInit, noStaticRangeInit, gTypeStaticRangeInit
  , StereoPannerNode(StereoPannerNode), unStereoPannerNode, noStereoPannerNode, gTypeStereoPannerNode
  , StereoPannerOptions(StereoPannerOptions), unStereoPannerOptions, noStereoPannerOptions, gTypeStereoPannerOptions
  , Storage(Storage), unStorage, noStorage, gTypeStorage
  , StorageEstimate(StorageEstimate), unStorageEstimate, noStorageEstimate, gTypeStorageEstimate
  , StorageEvent(StorageEvent), unStorageEvent, noStorageEvent, gTypeStorageEvent
  , StorageEventInit(StorageEventInit), unStorageEventInit, noStorageEventInit, gTypeStorageEventInit
  , StorageManager(StorageManager), unStorageManager, noStorageManager, gTypeStorageManager
  , StreamPipeOptions(StreamPipeOptions), unStreamPipeOptions, noStreamPipeOptions, gTypeStreamPipeOptions
  , StructuredSerializeOptions(StructuredSerializeOptions), unStructuredSerializeOptions, IsStructuredSerializeOptions, toStructuredSerializeOptions, noStructuredSerializeOptions, gTypeStructuredSerializeOptions
  , StylePropertyMap(StylePropertyMap), unStylePropertyMap, noStylePropertyMap, gTypeStylePropertyMap
  , StylePropertyMapReadOnly(StylePropertyMapReadOnly), unStylePropertyMapReadOnly, IsStylePropertyMapReadOnly, toStylePropertyMapReadOnly, noStylePropertyMapReadOnly, gTypeStylePropertyMapReadOnly
  , StyleSheet(StyleSheet), unStyleSheet, IsStyleSheet, toStyleSheet, noStyleSheet, gTypeStyleSheet
  , StyleSheetList(StyleSheetList), unStyleSheetList, noStyleSheetList, gTypeStyleSheetList
  , SubmitEvent(SubmitEvent), unSubmitEvent, noSubmitEvent, gTypeSubmitEvent
  , SubmitEventInit(SubmitEventInit), unSubmitEventInit, noSubmitEventInit, gTypeSubmitEventInit
  , SubtleCrypto(SubtleCrypto), unSubtleCrypto, noSubtleCrypto, gTypeSubtleCrypto
  , SvcOutputMetadata(SvcOutputMetadata), unSvcOutputMetadata, noSvcOutputMetadata, gTypeSvcOutputMetadata
  , TaskController(TaskController), unTaskController, noTaskController, gTypeTaskController
  , TaskControllerInit(TaskControllerInit), unTaskControllerInit, noTaskControllerInit, gTypeTaskControllerInit
  , TaskPriorityChangeEvent(TaskPriorityChangeEvent), unTaskPriorityChangeEvent, noTaskPriorityChangeEvent, gTypeTaskPriorityChangeEvent
  , TaskPriorityChangeEventInit(TaskPriorityChangeEventInit), unTaskPriorityChangeEventInit, noTaskPriorityChangeEventInit, gTypeTaskPriorityChangeEventInit
  , TaskSignal(TaskSignal), unTaskSignal, noTaskSignal, gTypeTaskSignal
  , TaskSignalAnyInit(TaskSignalAnyInit), unTaskSignalAnyInit, noTaskSignalAnyInit, gTypeTaskSignalAnyInit
  , Text(Text), unText, IsText, toText, noText, gTypeText
  , TextDecodeOptions(TextDecodeOptions), unTextDecodeOptions, noTextDecodeOptions, gTypeTextDecodeOptions
  , TextDecoder(TextDecoder), unTextDecoder, noTextDecoder, gTypeTextDecoder
  , TextDecoderCommon(TextDecoderCommon), unTextDecoderCommon, IsTextDecoderCommon, toTextDecoderCommon, noTextDecoderCommon, gTypeTextDecoderCommon
  , TextDecoderOptions(TextDecoderOptions), unTextDecoderOptions, noTextDecoderOptions, gTypeTextDecoderOptions
  , TextDecoderStream(TextDecoderStream), unTextDecoderStream, noTextDecoderStream, gTypeTextDecoderStream
  , TextEncoder(TextEncoder), unTextEncoder, noTextEncoder, gTypeTextEncoder
  , TextEncoderCommon(TextEncoderCommon), unTextEncoderCommon, IsTextEncoderCommon, toTextEncoderCommon, noTextEncoderCommon, gTypeTextEncoderCommon
  , TextEncoderEncodeIntoResult(TextEncoderEncodeIntoResult), unTextEncoderEncodeIntoResult, noTextEncoderEncodeIntoResult, gTypeTextEncoderEncodeIntoResult
  , TextEncoderStream(TextEncoderStream), unTextEncoderStream, noTextEncoderStream, gTypeTextEncoderStream
  , TextEvent(TextEvent), unTextEvent, noTextEvent, gTypeTextEvent
  , TextMetrics(TextMetrics), unTextMetrics, noTextMetrics, gTypeTextMetrics
  , TextTrack(TextTrack), unTextTrack, noTextTrack, gTypeTextTrack
  , TextTrackCue(TextTrackCue), unTextTrackCue, IsTextTrackCue, toTextTrackCue, noTextTrackCue, gTypeTextTrackCue
  , TextTrackCueList(TextTrackCueList), unTextTrackCueList, noTextTrackCueList, gTypeTextTrackCueList
  , TextTrackList(TextTrackList), unTextTrackList, noTextTrackList, gTypeTextTrackList
  , TimeRanges(TimeRanges), unTimeRanges, noTimeRanges, gTypeTimeRanges
  , TimelineRangeOffset(TimelineRangeOffset), unTimelineRangeOffset, noTimelineRangeOffset, gTypeTimelineRangeOffset
  , ToggleEvent(ToggleEvent), unToggleEvent, noToggleEvent, gTypeToggleEvent
  , ToggleEventInit(ToggleEventInit), unToggleEventInit, noToggleEventInit, gTypeToggleEventInit
  , TogglePopoverOptions(TogglePopoverOptions), unTogglePopoverOptions, noTogglePopoverOptions, gTypeTogglePopoverOptions
  , Touch(Touch), unTouch, noTouch, gTypeTouch
  , TouchEvent(TouchEvent), unTouchEvent, noTouchEvent, gTypeTouchEvent
  , TouchEventInit(TouchEventInit), unTouchEventInit, noTouchEventInit, gTypeTouchEventInit
  , TouchInit(TouchInit), unTouchInit, noTouchInit, gTypeTouchInit
  , TouchList(TouchList), unTouchList, noTouchList, gTypeTouchList
  , TrackEvent(TrackEvent), unTrackEvent, noTrackEvent, gTypeTrackEvent
  , TrackEventInit(TrackEventInit), unTrackEventInit, noTrackEventInit, gTypeTrackEventInit
  , TransformStream(TransformStream), unTransformStream, noTransformStream, gTypeTransformStream
  , TransformStreamDefaultController(TransformStreamDefaultController), unTransformStreamDefaultController, noTransformStreamDefaultController, gTypeTransformStreamDefaultController
  , TransitionEvent(TransitionEvent), unTransitionEvent, noTransitionEvent, gTypeTransitionEvent
  , TransitionEventInit(TransitionEventInit), unTransitionEventInit, noTransitionEventInit, gTypeTransitionEventInit
  , TreeWalker(TreeWalker), unTreeWalker, noTreeWalker, gTypeTreeWalker
  , TrustedHTML(TrustedHTML), unTrustedHTML, noTrustedHTML, gTypeTrustedHTML
  , TrustedHTMLParserOptions(TrustedHTMLParserOptions), unTrustedHTMLParserOptions, noTrustedHTMLParserOptions, gTypeTrustedHTMLParserOptions
  , TrustedScript(TrustedScript), unTrustedScript, noTrustedScript, gTypeTrustedScript
  , TrustedScriptURL(TrustedScriptURL), unTrustedScriptURL, noTrustedScriptURL, gTypeTrustedScriptURL
  , TrustedTypePolicy(TrustedTypePolicy), unTrustedTypePolicy, noTrustedTypePolicy, gTypeTrustedTypePolicy
  , TrustedTypePolicyFactory(TrustedTypePolicyFactory), unTrustedTypePolicyFactory, noTrustedTypePolicyFactory, gTypeTrustedTypePolicyFactory
  , TrustedTypePolicyOptions(TrustedTypePolicyOptions), unTrustedTypePolicyOptions, noTrustedTypePolicyOptions, gTypeTrustedTypePolicyOptions
  , UIEvent(UIEvent), unUIEvent, IsUIEvent, toUIEvent, noUIEvent, gTypeUIEvent
  , UIEventInit(UIEventInit), unUIEventInit, IsUIEventInit, toUIEventInit, noUIEventInit, gTypeUIEventInit
  , ULongRange(ULongRange), unULongRange, IsULongRange, toULongRange, noULongRange, gTypeULongRange
  , URL(URL), unURL, noURL, gTypeURL
  , URLPattern(URLPattern), unURLPattern, noURLPattern, gTypeURLPattern
  , URLPatternComponentResult(URLPatternComponentResult), unURLPatternComponentResult, noURLPatternComponentResult, gTypeURLPatternComponentResult
  , URLPatternInit(URLPatternInit), unURLPatternInit, noURLPatternInit, gTypeURLPatternInit
  , URLPatternOptions(URLPatternOptions), unURLPatternOptions, noURLPatternOptions, gTypeURLPatternOptions
  , URLPatternResult(URLPatternResult), unURLPatternResult, noURLPatternResult, gTypeURLPatternResult
  , URLSearchParams(URLSearchParams), unURLSearchParams, noURLSearchParams, gTypeURLSearchParams
  , UnknownCredentialOptions(UnknownCredentialOptions), unUnknownCredentialOptions, noUnknownCredentialOptions, gTypeUnknownCredentialOptions
  , UserActivation(UserActivation), unUserActivation, noUserActivation, gTypeUserActivation
  , VTTCue(VTTCue), unVTTCue, noVTTCue, gTypeVTTCue
  , VTTRegion(VTTRegion), unVTTRegion, noVTTRegion, gTypeVTTRegion
  , ValidityState(ValidityState), unValidityState, noValidityState, gTypeValidityState
  , ValidityStateFlags(ValidityStateFlags), unValidityStateFlags, noValidityStateFlags, gTypeValidityStateFlags
  , VideoColorSpace(VideoColorSpace), unVideoColorSpace, noVideoColorSpace, gTypeVideoColorSpace
  , VideoColorSpaceInit(VideoColorSpaceInit), unVideoColorSpaceInit, noVideoColorSpaceInit, gTypeVideoColorSpaceInit
  , VideoConfiguration(VideoConfiguration), unVideoConfiguration, noVideoConfiguration, gTypeVideoConfiguration
  , VideoDecoder(VideoDecoder), unVideoDecoder, noVideoDecoder, gTypeVideoDecoder
  , VideoDecoderConfig(VideoDecoderConfig), unVideoDecoderConfig, noVideoDecoderConfig, gTypeVideoDecoderConfig
  , VideoDecoderInit(VideoDecoderInit), unVideoDecoderInit, noVideoDecoderInit, gTypeVideoDecoderInit
  , VideoDecoderSupport(VideoDecoderSupport), unVideoDecoderSupport, noVideoDecoderSupport, gTypeVideoDecoderSupport
  , VideoEncoder(VideoEncoder), unVideoEncoder, noVideoEncoder, gTypeVideoEncoder
  , VideoEncoderConfig(VideoEncoderConfig), unVideoEncoderConfig, noVideoEncoderConfig, gTypeVideoEncoderConfig
  , VideoEncoderEncodeOptions(VideoEncoderEncodeOptions), unVideoEncoderEncodeOptions, noVideoEncoderEncodeOptions, gTypeVideoEncoderEncodeOptions
  , VideoEncoderEncodeOptionsForAv1(VideoEncoderEncodeOptionsForAv1), unVideoEncoderEncodeOptionsForAv1, noVideoEncoderEncodeOptionsForAv1, gTypeVideoEncoderEncodeOptionsForAv1
  , VideoEncoderEncodeOptionsForAvc(VideoEncoderEncodeOptionsForAvc), unVideoEncoderEncodeOptionsForAvc, noVideoEncoderEncodeOptionsForAvc, gTypeVideoEncoderEncodeOptionsForAvc
  , VideoEncoderEncodeOptionsForHevc(VideoEncoderEncodeOptionsForHevc), unVideoEncoderEncodeOptionsForHevc, noVideoEncoderEncodeOptionsForHevc, gTypeVideoEncoderEncodeOptionsForHevc
  , VideoEncoderEncodeOptionsForVp9(VideoEncoderEncodeOptionsForVp9), unVideoEncoderEncodeOptionsForVp9, noVideoEncoderEncodeOptionsForVp9, gTypeVideoEncoderEncodeOptionsForVp9
  , VideoEncoderInit(VideoEncoderInit), unVideoEncoderInit, noVideoEncoderInit, gTypeVideoEncoderInit
  , VideoEncoderSupport(VideoEncoderSupport), unVideoEncoderSupport, noVideoEncoderSupport, gTypeVideoEncoderSupport
  , VideoFrame(VideoFrame), unVideoFrame, noVideoFrame, gTypeVideoFrame
  , VideoFrameBufferInit(VideoFrameBufferInit), unVideoFrameBufferInit, noVideoFrameBufferInit, gTypeVideoFrameBufferInit
  , VideoFrameCallbackMetadata(VideoFrameCallbackMetadata), unVideoFrameCallbackMetadata, noVideoFrameCallbackMetadata, gTypeVideoFrameCallbackMetadata
  , VideoFrameCopyToOptions(VideoFrameCopyToOptions), unVideoFrameCopyToOptions, noVideoFrameCopyToOptions, gTypeVideoFrameCopyToOptions
  , VideoFrameInit(VideoFrameInit), unVideoFrameInit, noVideoFrameInit, gTypeVideoFrameInit
  , VideoFrameMetadata(VideoFrameMetadata), unVideoFrameMetadata, noVideoFrameMetadata, gTypeVideoFrameMetadata
  , VideoPlaybackQuality(VideoPlaybackQuality), unVideoPlaybackQuality, noVideoPlaybackQuality, gTypeVideoPlaybackQuality
  , VideoTrack(VideoTrack), unVideoTrack, noVideoTrack, gTypeVideoTrack
  , VideoTrackList(VideoTrackList), unVideoTrackList, noVideoTrackList, gTypeVideoTrackList
  , ViewTimeline(ViewTimeline), unViewTimeline, noViewTimeline, gTypeViewTimeline
  , ViewTimelineOptions(ViewTimelineOptions), unViewTimelineOptions, noViewTimelineOptions, gTypeViewTimelineOptions
  , ViewTransition(ViewTransition), unViewTransition, noViewTransition, gTypeViewTransition
  , ViewTransitionTypeSet(ViewTransitionTypeSet), unViewTransitionTypeSet, noViewTransitionTypeSet, gTypeViewTransitionTypeSet
  , VisualViewport(VisualViewport), unVisualViewport, noVisualViewport, gTypeVisualViewport
  , WEBGL_color_buffer_float(WEBGL_color_buffer_float), unWEBGL_color_buffer_float, noWEBGL_color_buffer_float, gTypeWEBGL_color_buffer_float
  , WEBGL_compressed_texture_astc(WEBGL_compressed_texture_astc), unWEBGL_compressed_texture_astc, noWEBGL_compressed_texture_astc, gTypeWEBGL_compressed_texture_astc
  , WEBGL_compressed_texture_etc(WEBGL_compressed_texture_etc), unWEBGL_compressed_texture_etc, noWEBGL_compressed_texture_etc, gTypeWEBGL_compressed_texture_etc
  , WEBGL_compressed_texture_etc1(WEBGL_compressed_texture_etc1), unWEBGL_compressed_texture_etc1, noWEBGL_compressed_texture_etc1, gTypeWEBGL_compressed_texture_etc1
  , WEBGL_compressed_texture_pvrtc(WEBGL_compressed_texture_pvrtc), unWEBGL_compressed_texture_pvrtc, noWEBGL_compressed_texture_pvrtc, gTypeWEBGL_compressed_texture_pvrtc
  , WEBGL_compressed_texture_s3tc(WEBGL_compressed_texture_s3tc), unWEBGL_compressed_texture_s3tc, noWEBGL_compressed_texture_s3tc, gTypeWEBGL_compressed_texture_s3tc
  , WEBGL_compressed_texture_s3tc_srgb(WEBGL_compressed_texture_s3tc_srgb), unWEBGL_compressed_texture_s3tc_srgb, noWEBGL_compressed_texture_s3tc_srgb, gTypeWEBGL_compressed_texture_s3tc_srgb
  , WEBGL_debug_renderer_info(WEBGL_debug_renderer_info), unWEBGL_debug_renderer_info, noWEBGL_debug_renderer_info, gTypeWEBGL_debug_renderer_info
  , WEBGL_debug_shaders(WEBGL_debug_shaders), unWEBGL_debug_shaders, noWEBGL_debug_shaders, gTypeWEBGL_debug_shaders
  , WEBGL_depth_texture(WEBGL_depth_texture), unWEBGL_depth_texture, noWEBGL_depth_texture, gTypeWEBGL_depth_texture
  , WEBGL_draw_buffers(WEBGL_draw_buffers), unWEBGL_draw_buffers, noWEBGL_draw_buffers, gTypeWEBGL_draw_buffers
  , WEBGL_lose_context(WEBGL_lose_context), unWEBGL_lose_context, noWEBGL_lose_context, gTypeWEBGL_lose_context
  , WEBGL_multi_draw(WEBGL_multi_draw), unWEBGL_multi_draw, noWEBGL_multi_draw, gTypeWEBGL_multi_draw
  , WGSLLanguageFeatures(WGSLLanguageFeatures), unWGSLLanguageFeatures, noWGSLLanguageFeatures, gTypeWGSLLanguageFeatures
  , WakeLock(WakeLock), unWakeLock, noWakeLock, gTypeWakeLock
  , WakeLockSentinel(WakeLockSentinel), unWakeLockSentinel, noWakeLockSentinel, gTypeWakeLockSentinel
  , WaveShaperNode(WaveShaperNode), unWaveShaperNode, noWaveShaperNode, gTypeWaveShaperNode
  , WaveShaperOptions(WaveShaperOptions), unWaveShaperOptions, noWaveShaperOptions, gTypeWaveShaperOptions
  , WebGL2RenderingContext(WebGL2RenderingContext), unWebGL2RenderingContext, noWebGL2RenderingContext, gTypeWebGL2RenderingContext
  , WebGL2RenderingContextBase(WebGL2RenderingContextBase), unWebGL2RenderingContextBase, IsWebGL2RenderingContextBase, toWebGL2RenderingContextBase, noWebGL2RenderingContextBase, gTypeWebGL2RenderingContextBase
  , WebGL2RenderingContextOverloads(WebGL2RenderingContextOverloads), unWebGL2RenderingContextOverloads, IsWebGL2RenderingContextOverloads, toWebGL2RenderingContextOverloads, noWebGL2RenderingContextOverloads, gTypeWebGL2RenderingContextOverloads
  , WebGLActiveInfo(WebGLActiveInfo), unWebGLActiveInfo, noWebGLActiveInfo, gTypeWebGLActiveInfo
  , WebGLBuffer(WebGLBuffer), unWebGLBuffer, noWebGLBuffer, gTypeWebGLBuffer
  , WebGLContextAttributes(WebGLContextAttributes), unWebGLContextAttributes, noWebGLContextAttributes, gTypeWebGLContextAttributes
  , WebGLContextEvent(WebGLContextEvent), unWebGLContextEvent, noWebGLContextEvent, gTypeWebGLContextEvent
  , WebGLContextEventInit(WebGLContextEventInit), unWebGLContextEventInit, noWebGLContextEventInit, gTypeWebGLContextEventInit
  , WebGLFramebuffer(WebGLFramebuffer), unWebGLFramebuffer, noWebGLFramebuffer, gTypeWebGLFramebuffer
  , WebGLObject(WebGLObject), unWebGLObject, IsWebGLObject, toWebGLObject, noWebGLObject, gTypeWebGLObject
  , WebGLProgram(WebGLProgram), unWebGLProgram, noWebGLProgram, gTypeWebGLProgram
  , WebGLQuery(WebGLQuery), unWebGLQuery, noWebGLQuery, gTypeWebGLQuery
  , WebGLRenderbuffer(WebGLRenderbuffer), unWebGLRenderbuffer, noWebGLRenderbuffer, gTypeWebGLRenderbuffer
  , WebGLRenderingContext(WebGLRenderingContext), unWebGLRenderingContext, noWebGLRenderingContext, gTypeWebGLRenderingContext
  , WebGLRenderingContextBase(WebGLRenderingContextBase), unWebGLRenderingContextBase, IsWebGLRenderingContextBase, toWebGLRenderingContextBase, noWebGLRenderingContextBase, gTypeWebGLRenderingContextBase
  , WebGLRenderingContextOverloads(WebGLRenderingContextOverloads), unWebGLRenderingContextOverloads, IsWebGLRenderingContextOverloads, toWebGLRenderingContextOverloads, noWebGLRenderingContextOverloads, gTypeWebGLRenderingContextOverloads
  , WebGLSampler(WebGLSampler), unWebGLSampler, noWebGLSampler, gTypeWebGLSampler
  , WebGLShader(WebGLShader), unWebGLShader, noWebGLShader, gTypeWebGLShader
  , WebGLShaderPrecisionFormat(WebGLShaderPrecisionFormat), unWebGLShaderPrecisionFormat, noWebGLShaderPrecisionFormat, gTypeWebGLShaderPrecisionFormat
  , WebGLSync(WebGLSync), unWebGLSync, noWebGLSync, gTypeWebGLSync
  , WebGLTexture(WebGLTexture), unWebGLTexture, noWebGLTexture, gTypeWebGLTexture
  , WebGLTransformFeedback(WebGLTransformFeedback), unWebGLTransformFeedback, noWebGLTransformFeedback, gTypeWebGLTransformFeedback
  , WebGLUniformLocation(WebGLUniformLocation), unWebGLUniformLocation, noWebGLUniformLocation, gTypeWebGLUniformLocation
  , WebGLVertexArrayObject(WebGLVertexArrayObject), unWebGLVertexArrayObject, noWebGLVertexArrayObject, gTypeWebGLVertexArrayObject
  , WebGLVertexArrayObjectOES(WebGLVertexArrayObjectOES), unWebGLVertexArrayObjectOES, noWebGLVertexArrayObjectOES, gTypeWebGLVertexArrayObjectOES
  , WebSocket(WebSocket), unWebSocket, noWebSocket, gTypeWebSocket
  , WebTransport(WebTransport), unWebTransport, noWebTransport, gTypeWebTransport
  , WebTransportBidirectionalStream(WebTransportBidirectionalStream), unWebTransportBidirectionalStream, noWebTransportBidirectionalStream, gTypeWebTransportBidirectionalStream
  , WebTransportCloseInfo(WebTransportCloseInfo), unWebTransportCloseInfo, noWebTransportCloseInfo, gTypeWebTransportCloseInfo
  , WebTransportConnectionStats(WebTransportConnectionStats), unWebTransportConnectionStats, noWebTransportConnectionStats, gTypeWebTransportConnectionStats
  , WebTransportDatagramDuplexStream(WebTransportDatagramDuplexStream), unWebTransportDatagramDuplexStream, noWebTransportDatagramDuplexStream, gTypeWebTransportDatagramDuplexStream
  , WebTransportDatagramStats(WebTransportDatagramStats), unWebTransportDatagramStats, noWebTransportDatagramStats, gTypeWebTransportDatagramStats
  , WebTransportDatagramsWritable(WebTransportDatagramsWritable), unWebTransportDatagramsWritable, noWebTransportDatagramsWritable, gTypeWebTransportDatagramsWritable
  , WebTransportError(WebTransportError), unWebTransportError, noWebTransportError, gTypeWebTransportError
  , WebTransportErrorOptions(WebTransportErrorOptions), unWebTransportErrorOptions, noWebTransportErrorOptions, gTypeWebTransportErrorOptions
  , WebTransportHash(WebTransportHash), unWebTransportHash, noWebTransportHash, gTypeWebTransportHash
  , WebTransportOptions(WebTransportOptions), unWebTransportOptions, noWebTransportOptions, gTypeWebTransportOptions
  , WebTransportReceiveStream(WebTransportReceiveStream), unWebTransportReceiveStream, noWebTransportReceiveStream, gTypeWebTransportReceiveStream
  , WebTransportReceiveStreamStats(WebTransportReceiveStreamStats), unWebTransportReceiveStreamStats, noWebTransportReceiveStreamStats, gTypeWebTransportReceiveStreamStats
  , WebTransportSendGroup(WebTransportSendGroup), unWebTransportSendGroup, noWebTransportSendGroup, gTypeWebTransportSendGroup
  , WebTransportSendOptions(WebTransportSendOptions), unWebTransportSendOptions, IsWebTransportSendOptions, toWebTransportSendOptions, noWebTransportSendOptions, gTypeWebTransportSendOptions
  , WebTransportSendStream(WebTransportSendStream), unWebTransportSendStream, noWebTransportSendStream, gTypeWebTransportSendStream
  , WebTransportSendStreamOptions(WebTransportSendStreamOptions), unWebTransportSendStreamOptions, noWebTransportSendStreamOptions, gTypeWebTransportSendStreamOptions
  , WebTransportSendStreamStats(WebTransportSendStreamStats), unWebTransportSendStreamStats, noWebTransportSendStreamStats, gTypeWebTransportSendStreamStats
  , WebTransportWriter(WebTransportWriter), unWebTransportWriter, noWebTransportWriter, gTypeWebTransportWriter
  , WheelEvent(WheelEvent), unWheelEvent, noWheelEvent, gTypeWheelEvent
  , WheelEventInit(WheelEventInit), unWheelEventInit, noWheelEventInit, gTypeWheelEventInit
  , Window(Window), unWindow, noWindow, gTypeWindow
  , WindowClient(WindowClient), unWindowClient, noWindowClient, gTypeWindowClient
  , WindowEventHandlers(WindowEventHandlers), unWindowEventHandlers, IsWindowEventHandlers, toWindowEventHandlers, noWindowEventHandlers, gTypeWindowEventHandlers
  , WindowLocalStorage(WindowLocalStorage), unWindowLocalStorage, IsWindowLocalStorage, toWindowLocalStorage, noWindowLocalStorage, gTypeWindowLocalStorage
  , WindowOrWorkerGlobalScope(WindowOrWorkerGlobalScope), unWindowOrWorkerGlobalScope, IsWindowOrWorkerGlobalScope, toWindowOrWorkerGlobalScope, noWindowOrWorkerGlobalScope, gTypeWindowOrWorkerGlobalScope
  , WindowPostMessageOptions(WindowPostMessageOptions), unWindowPostMessageOptions, noWindowPostMessageOptions, gTypeWindowPostMessageOptions
  , WindowSessionStorage(WindowSessionStorage), unWindowSessionStorage, IsWindowSessionStorage, toWindowSessionStorage, noWindowSessionStorage, gTypeWindowSessionStorage
  , Worker(Worker), unWorker, noWorker, gTypeWorker
  , WorkerAndParameters(WorkerAndParameters), unWorkerAndParameters, noWorkerAndParameters, gTypeWorkerAndParameters
  , WorkerGlobalScope(WorkerGlobalScope), unWorkerGlobalScope, IsWorkerGlobalScope, toWorkerGlobalScope, noWorkerGlobalScope, gTypeWorkerGlobalScope
  , WorkerLocation(WorkerLocation), unWorkerLocation, noWorkerLocation, gTypeWorkerLocation
  , WorkerNavigator(WorkerNavigator), unWorkerNavigator, noWorkerNavigator, gTypeWorkerNavigator
  , WorkerOptions(WorkerOptions), unWorkerOptions, IsWorkerOptions, toWorkerOptions, noWorkerOptions, gTypeWorkerOptions
  , Worklet(Worklet), unWorklet, IsWorklet, toWorklet, noWorklet, gTypeWorklet
  , WorkletGlobalScope(WorkletGlobalScope), unWorkletGlobalScope, IsWorkletGlobalScope, toWorkletGlobalScope, noWorkletGlobalScope, gTypeWorkletGlobalScope
  , WorkletOptions(WorkletOptions), unWorkletOptions, noWorkletOptions, gTypeWorkletOptions
  , WritableStream(WritableStream), unWritableStream, IsWritableStream, toWritableStream, noWritableStream, gTypeWritableStream
  , WritableStreamDefaultController(WritableStreamDefaultController), unWritableStreamDefaultController, noWritableStreamDefaultController, gTypeWritableStreamDefaultController
  , WritableStreamDefaultWriter(WritableStreamDefaultWriter), unWritableStreamDefaultWriter, IsWritableStreamDefaultWriter, toWritableStreamDefaultWriter, noWritableStreamDefaultWriter, gTypeWritableStreamDefaultWriter
  , WriteParams(WriteParams), unWriteParams, noWriteParams, gTypeWriteParams
  , XMLDocument(XMLDocument), unXMLDocument, noXMLDocument, gTypeXMLDocument
  , XMLHttpRequest(XMLHttpRequest), unXMLHttpRequest, noXMLHttpRequest, gTypeXMLHttpRequest
  , XMLHttpRequestEventTarget(XMLHttpRequestEventTarget), unXMLHttpRequestEventTarget, IsXMLHttpRequestEventTarget, toXMLHttpRequestEventTarget, noXMLHttpRequestEventTarget, gTypeXMLHttpRequestEventTarget
  , XMLHttpRequestUpload(XMLHttpRequestUpload), unXMLHttpRequestUpload, noXMLHttpRequestUpload, gTypeXMLHttpRequestUpload
  , XMLSerializer(XMLSerializer), unXMLSerializer, noXMLSerializer, gTypeXMLSerializer
  , XPathEvaluator(XPathEvaluator), unXPathEvaluator, noXPathEvaluator, gTypeXPathEvaluator
  , XPathEvaluatorBase(XPathEvaluatorBase), unXPathEvaluatorBase, IsXPathEvaluatorBase, toXPathEvaluatorBase, noXPathEvaluatorBase, gTypeXPathEvaluatorBase
  , XPathExpression(XPathExpression), unXPathExpression, noXPathExpression, gTypeXPathExpression
  , XPathResult(XPathResult), unXPathResult, noXPathResult, gTypeXPathResult
  , XSLTProcessor(XSLTProcessor), unXSLTProcessor, noXSLTProcessor, gTypeXSLTProcessor
-- AUTO GENERATION ENDS HERE
  ) where

import Prelude ()
import Prelude.Compat hiding((!!))
import qualified Data.Text as T (unpack, Text)
import Control.Monad.IO.Class (MonadIO(..))
import Data.Int (Int8, Int16, Int32, Int64)
import Data.Word (Word8, Word16, Word32, Word64)
import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
import Language.Javascript.JSaddle
       (Object(..), valToBool, valNull, valToNumber, (!!), js, valToText,
        JSVal, JSString, JSM, maybeNullOrUndefined, maybeNullOrUndefined',
        valToStr, jsg, ToJSString(..), FromJSString(..), strToText, MakeObject(..),
        Nullable(..), freeFunction, instanceOf, JSContextRef,
        askJSM, runJSM, MonadJSM(..), liftJSM, strictEqual, function, js2)
import qualified Language.Javascript.JSaddle as JSaddle (Function(..))
import Foreign.Ptr (nullPtr)
import Control.Lens.Operators ((^.))
import Data.Maybe (catMaybes)
import Language.Javascript.JSaddle.Classes (ToJSVal(..))
import Language.Javascript.JSaddle.Int53
import Control.Monad ((>=>))
import Control.Concurrent.MVar (newEmptyMVar, putMVar, takeMVar)
import Data.Coerce (coerce, Coercible)
import Data.Typeable (Typeable)
import Control.Monad.Trans.Reader (ReaderT(..), ask)
import Control.Exception (bracket, Exception(..), throwIO)
#if MIN_VERSION_base(4,9,0)
import GHC.Stack (HasCallStack)
#else
import GHC.Exts (Constraint)
type HasCallStack = (() :: Constraint)
#endif

-- | This is the same as 'JSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
type DOM = JSM
-- | This is the same as 'JSContextRef' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
type DOMContext = JSContextRef
-- | This is the same as 'MonadJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
type MonadDOM = MonadJSM

-- | This is the same as 'liftJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
liftDOM :: MonadDOM m => DOM a -> m a
liftDOM = liftJSM

-- | This is the same as 'askJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
askDOM :: MonadDOM m => m DOMContext
askDOM = askJSM

-- | This is the same as 'runJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
runDOM :: MonadIO m => DOM a -> DOMContext -> m a
runDOM = runJSM

newtype GType = GType Object

typeInstanceIsA :: ToJSVal value => value -> GType -> JSM Bool
typeInstanceIsA o (GType t) = o `instanceOf` t

-- | Safe but slow way to cast
--
-- > castTo Element x >>= \case
-- >     Nothing      -> error "Was not an element"
-- >     Just element -> ...
castTo :: forall obj obj' m. (Coercible obj JSVal, IsGObject obj', MonadJSM m) => (JSVal -> obj') -> obj -> m (Maybe obj')
castTo constructor obj = liftJSM $ do
  GType gtype <- typeGType (undefined :: obj')
  let jsval = coerce obj
  jsval `instanceOf` gtype >>= \case
    True  -> return . Just $ constructor jsval
    False -> return Nothing

-- | Unsafe way to cast.  Slow but if it fails an error message will
--   result and the message should be clear (uses HasCallStack).
--
-- > element <- unsafeCastTo Element x
unsafeCastTo :: forall obj obj' m. (HasCallStack, Coercible obj JSVal, IsGObject obj', MonadJSM m) => (JSVal -> obj') -> obj -> m obj'
unsafeCastTo constructor obj = liftJSM $ do
  GType gtype <- typeGType (undefined :: obj')
  let jsval = coerce obj
  jsval `instanceOf` gtype >>= \case
    True  -> return $ constructor jsval
    False -> do
      destType <- valToText (gtype ^. js "name")
      error $ "unsafeCastTo :: invalid conversion to "
        <> T.unpack destType <> " requested."

-- | Unsafe way to cast.  Fast but if it fails you program
--   will probably crash later on in some unpredictable way.
--
-- > element <- uncheckedCastTo Element x
uncheckedCastTo :: (Coercible obj JSVal, IsGObject obj') => (JSVal -> obj') -> obj -> obj'
uncheckedCastTo constructor = constructor . coerce

-- | Determine if this is an instance of a particular type
--
isA :: IsGObject o => o -> GType -> JSM Bool
isA obj = typeInstanceIsA (unGObject $ toGObject obj)

newtype GObject = GObject { unGObject :: JSVal }
noGObject :: Maybe GObject
noGObject = Nothing
{-# INLINE noGObject #-}

class (ToJSVal o, FromJSVal o, Coercible o JSVal) => IsGObject o where
  -- | Given object get the GType of the type.  The actual argument
  --   passed in is ignored.
  typeGType :: o -> JSM GType

-- | Safe upcast.
toGObject :: IsGObject o => o -> GObject
toGObject = GObject . coerce

fromJSArray :: FromJSVal o => JSVal -> JSM [Maybe o]
fromJSArray a = do
    l <- a ^. js "length" >>= valToNumber
    mapM (\i -> a !! i >>= fromJSVal) [0..round l - 1]

fromJSArrayUnchecked :: FromJSVal o => JSVal -> JSM [o]
fromJSArrayUnchecked = fromJSValUncheckedListOf

-- newtype Nullable a = Nullable JSVal

nullableToMaybe :: FromJSVal a => JSVal -> JSM (Maybe a)
nullableToMaybe = fromJSVal
{-# INLINE nullableToMaybe #-}
--
maybeToNullable :: ToJSVal a => Maybe a -> JSM JSVal
maybeToNullable Nothing = return valNull
maybeToNullable (Just a) = toJSVal a
{-# INLINE maybeToNullable #-}

instance PToJSVal GObject where
  pToJSVal = unGObject
  {-# INLINE pToJSVal #-}

instance PFromJSVal GObject where
  pFromJSVal = GObject
  {-# INLINE pFromJSVal #-}

instance ToJSVal GObject where
  toJSVal = return . unGObject
  {-# INLINE toJSVal #-}

instance FromJSVal GObject where
  fromJSVal val = fmap GObject <$> maybeNullOrUndefined val
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GObject
  {-# INLINE fromJSValUnchecked #-}

--instance IsGObject o => PToJSVal o where
--  pToJSVal = unGObject . toGObject
--  {-# INLINE pToJSVal #-}
--
--instance IsGObject o => PFromJSVal o where
--  pFromJSVal = unsafeCastGObject . GObject . castRef
--  {-# INLINE pFromJSVal #-}
--
--instance IsGObject o => ToJSVal o where
--  toJSVal = return . unGObject . toGObject
--  {-# INLINE toJSVal #-}
--
--instance IsGObject o => FromJSVal o where
--  fromJSVal = return . fmap (unsafeCastGObject . GObject . castRef) . maybeJSNullOrUndefined
--  {-# INLINE fromJSVal #-}

instance IsGObject GObject where
  typeGType _ = gTypeGObject
  {-# INLINE typeGType #-}

#ifdef ghcjs_HOST_OS
foreign import javascript unsafe "Object" gTypeGObject :: IO GType
#else
gTypeGObject :: JSM GType
gTypeGObject = GType . Object <$> jsg "Object"
#endif

objectToString :: (IsGObject self, FromJSString result) => self -> JSM result
objectToString self = fromJSValUnchecked (unGObject $ toGObject self)

-- | Fastest string type to use when you just
--   want to take a string from the DOM then
--   give it back as is.
type DOMString = JSString
noDOMString :: Maybe DOMString
noDOMString = Nothing
{-# INLINE noDOMString #-}
type CSSOMString = JSString
noCSSOMString :: Maybe CSSOMString
noCSSOMString = Nothing
{-# INLINE noCSSOMString #-}
type USVString = JSString
noUSVString :: Maybe USVString
noUSVString = Nothing
{-# INLINE noUSVString #-}
type ByteString = JSString
noByteString :: Maybe ByteString
noByteString = Nothing
{-# INLINE noByteString #-}

fromJSStringArray :: FromJSString s => JSVal -> JSM [s]
fromJSStringArray a = do
    l <- a ^. js "length" >>= valToNumber
    mapM (\i -> fromJSString <$> (a !! i >>= valToStr)) [0..round l - 1]

toMaybeJSString :: ToJSString a => Maybe a -> JSM JSVal
toMaybeJSString Nothing = return valNull
toMaybeJSString (Just a) = toJSVal (toJSString a)
{-# INLINE toMaybeJSString #-}

fromMaybeJSString :: FromJSString a => JSVal -> JSM (Maybe a)
fromMaybeJSString = maybeNullOrUndefined' (fmap fromJSString . valToStr)
{-# INLINE fromMaybeJSString #-}

integralToDoubleToJSVal :: Integral a => a -> JSM JSVal
integralToDoubleToJSVal a = toJSVal (fromIntegral a :: Double)

integralFromDoubleFromJSVal :: Integral a => JSVal -> JSM (Maybe a)
integralFromDoubleFromJSVal = fmap (fmap round) . (fromJSVal :: JSVal -> JSM (Maybe Double))

integralFromDoubleFromJSValUnchecked :: Integral a => JSVal -> JSM a
integralFromDoubleFromJSValUnchecked = fmap round . (fromJSValUnchecked :: JSVal -> JSM Double)

noJSString :: Maybe JSString
noJSString = Nothing
{-# INLINE noJSString #-}

type ToDOMString s = ToJSString s
type FromDOMString s = FromJSString s
type IsDOMString s = (ToDOMString s, FromDOMString s)
type IsCSSOMString s = (ToDOMString s, FromDOMString s)
type IsUSVString s = (ToDOMString s, FromDOMString s)
type IsByteString s = (ToDOMString s, FromDOMString s)

newtype RawTypedArray = RawTypedArray { unRawTypedArray :: JSVal }
noRawTypedArray :: Maybe RawTypedArray
noRawTypedArray = Nothing
{-# INLINE noRawTypedArray #-}

instance PToJSVal RawTypedArray where
  pToJSVal = unRawTypedArray
  {-# INLINE pToJSVal #-}

instance PFromJSVal RawTypedArray where
  pFromJSVal = RawTypedArray
  {-# INLINE pFromJSVal #-}

instance ToJSVal RawTypedArray where
  toJSVal = return . unRawTypedArray
  {-# INLINE toJSVal #-}

instance FromJSVal RawTypedArray where
  fromJSVal v = fmap RawTypedArray <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RawTypedArray
  {-# INLINE fromJSValUnchecked #-}

class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsRawTypedArray o

toRawTypedArray :: IsRawTypedArray o => o -> RawTypedArray
toRawTypedArray = RawTypedArray . coerce

newtype Function = Function { unFunction :: JSVal }
noFunction :: Maybe Function
noFunction = Nothing
{-# INLINE noFunction #-}

instance PToJSVal Function where
  pToJSVal = unFunction
  {-# INLINE pToJSVal #-}

instance PFromJSVal Function where
  pFromJSVal = Function
  {-# INLINE pFromJSVal #-}

instance ToJSVal Function where
  toJSVal = return . unFunction
  {-# INLINE toJSVal #-}

instance FromJSVal Function where
  fromJSVal v = fmap Function <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Function
  {-# INLINE fromJSValUnchecked #-}

class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsFunction o

toFunction :: IsFunction o => o -> Function
toFunction = Function . coerce

instance IsFunction Function

-- Promise
newtype PromiseRejected = PromiseRejected { rejectionReason :: String } deriving (Typeable)
noPromiseRejected :: Maybe PromiseRejected
noPromiseRejected = Nothing
{-# INLINE noPromiseRejected #-}

instance Show PromiseRejected where
    show (PromiseRejected reason) = "A promise was rejected: " ++ reason
instance Exception PromiseRejected

readPromise :: JSVal -> JSM JSVal
readPromise promise = do
    resultMVar <- liftIO newEmptyMVar
    success <- function (\_ _ [result] -> liftIO . putMVar resultMVar $ Right result)
    error <- function (\_ _ [reason] -> liftIO . putMVar resultMVar $ Left reason)
    promise ^. js2 "then" success error
    result <- liftIO $ takeMVar resultMVar
    freeFunction success
    freeFunction error
    case result of
        Left reason -> do
          reason' <- fromJSVal reason
          let reason'' = case reason' of
                Just t -> T.unpack t
                Nothing -> "Unknown reason"
          liftIO . throwIO $ PromiseRejected reason''
        Right x -> return x

-- Callbacks
newtype Callback a = Callback JSaddle.Function

withCallback :: (MonadDOM m, Coercible c JSaddle.Function)
             => JSM c -> (c -> JSM a) -> m a
withCallback aquire f = do
    jsCtx <- askJSM
    liftIO $ bracket
        (runJSM aquire jsCtx)
        ((`runJSM` jsCtx) . freeFunction . coerce)
        (\t -> runJSM (f t) jsCtx)


-- Custom types
type DOMHighResTimeStamp = Double
noDOMHighResTimeStamp :: Maybe DOMHighResTimeStamp
noDOMHighResTimeStamp = Nothing
{-# INLINE noDOMHighResTimeStamp #-}
type PerformanceEntryList = [PerformanceEntry]
noPerformanceEntryList :: Maybe PerformanceEntryList
noPerformanceEntryList = Nothing
{-# INLINE noPerformanceEntryList #-}

-- Record Type
newtype Record key value = Record { unRecord :: JSVal }

instance PToJSVal (Record key value) where
  pToJSVal = unRecord
  {-# INLINE pToJSVal #-}

instance PFromJSVal (Record key value) where
  pFromJSVal = Record
  {-# INLINE pFromJSVal #-}

instance ToJSVal (Record key value) where
  toJSVal = return . unRecord
  {-# INLINE toJSVal #-}

instance FromJSVal (Record key value) where
  fromJSVal v = fmap Record <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Record
  {-# INLINE fromJSValUnchecked #-}

-- | A structured-clone value, e.g. @History.state@.  The current specs type
-- these as @any@ (so the generated functions use 'JSVal'); this wrapper is
-- kept because downstream APIs (reflex-dom's HistoryItem) use it.
newtype SerializedScriptValue = SerializedScriptValue { unSerializedScriptValue :: JSVal }
noSerializedScriptValue :: Maybe SerializedScriptValue
noSerializedScriptValue = Nothing
{-# INLINE noSerializedScriptValue #-}

instance PToJSVal SerializedScriptValue where
  pToJSVal = unSerializedScriptValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal SerializedScriptValue where
  pFromJSVal = SerializedScriptValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal SerializedScriptValue where
  toJSVal = return . unSerializedScriptValue
  {-# INLINE toJSVal #-}

instance FromJSVal SerializedScriptValue where
  fromJSVal v = fmap SerializedScriptValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SerializedScriptValue
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsSerializedScriptValue o
toSerializedScriptValue :: IsSerializedScriptValue o => o -> SerializedScriptValue
toSerializedScriptValue = SerializedScriptValue . coerce

instance IsSerializedScriptValue SerializedScriptValue
instance IsGObject SerializedScriptValue where
  typeGType _ = error "Unable to get the JavaScript type of SerializedScriptValue"

newtype Dictionary = Dictionary { unDictionary :: JSVal }
noDictionary :: Maybe Dictionary
noDictionary = Nothing
{-# INLINE noDictionary #-}

instance PToJSVal Dictionary where
  pToJSVal = unDictionary
  {-# INLINE pToJSVal #-}

instance PFromJSVal Dictionary where
  pFromJSVal = Dictionary
  {-# INLINE pFromJSVal #-}

instance ToJSVal Dictionary where
  toJSVal = return . unDictionary
  {-# INLINE toJSVal #-}

instance FromJSVal Dictionary where
  fromJSVal v = fmap Dictionary <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Dictionary
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsDictionary o
toDictionary :: IsDictionary o => o -> Dictionary
toDictionary = Dictionary . coerce

instance IsDictionary Dictionary
instance IsGObject Dictionary where
  typeGType _ = error "Unable to get the JavaScript type of Dictionary"

newtype ArrayBuffer = ArrayBuffer { unArrayBuffer :: JSVal }
noArrayBuffer :: Maybe ArrayBuffer
noArrayBuffer = Nothing
{-# INLINE noArrayBuffer #-}

instance PToJSVal ArrayBuffer where
  pToJSVal = unArrayBuffer
  {-# INLINE pToJSVal #-}

instance PFromJSVal ArrayBuffer where
  pFromJSVal = ArrayBuffer
  {-# INLINE pFromJSVal #-}

instance ToJSVal ArrayBuffer where
  toJSVal = return . unArrayBuffer
  {-# INLINE toJSVal #-}

instance FromJSVal ArrayBuffer where
  fromJSVal v = fmap ArrayBuffer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ArrayBuffer
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsArrayBuffer o
toArrayBuffer :: IsArrayBuffer o => o -> ArrayBuffer
toArrayBuffer = ArrayBuffer . coerce

instance IsArrayBuffer ArrayBuffer
instance IsGObject ArrayBuffer where
    typeGType _ = gTypeArrayBuffer

gTypeArrayBuffer :: JSM GType
gTypeArrayBuffer = GType . Object <$> jsg "ArrayBuffer"

newtype Float32Array = Float32Array { unFloat32Array :: JSVal }
noFloat32Array :: Maybe Float32Array
noFloat32Array = Nothing
{-# INLINE noFloat32Array #-}

instance PToJSVal Float32Array where
  pToJSVal = unFloat32Array
  {-# INLINE pToJSVal #-}

instance PFromJSVal Float32Array where
  pFromJSVal = Float32Array
  {-# INLINE pFromJSVal #-}

instance ToJSVal Float32Array where
  toJSVal = return . unFloat32Array
  {-# INLINE toJSVal #-}

instance FromJSVal Float32Array where
  fromJSVal v = fmap Float32Array <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Float32Array
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsFloat32Array o
toFloat32Array :: IsFloat32Array o => o -> Float32Array
toFloat32Array = Float32Array . coerce

instance IsFloat32Array Float32Array
instance IsGObject Float32Array where
        typeGType _ = gTypeFloat32Array

gTypeFloat32Array :: JSM GType
gTypeFloat32Array = GType . Object <$> jsg "Float32Array"

newtype Float64Array = Float64Array { unFloat64Array :: JSVal }
noFloat64Array :: Maybe Float64Array
noFloat64Array = Nothing
{-# INLINE noFloat64Array #-}

instance PToJSVal Float64Array where
  pToJSVal = unFloat64Array
  {-# INLINE pToJSVal #-}

instance PFromJSVal Float64Array where
  pFromJSVal = Float64Array
  {-# INLINE pFromJSVal #-}

instance ToJSVal Float64Array where
  toJSVal = return . unFloat64Array
  {-# INLINE toJSVal #-}

instance FromJSVal Float64Array where
  fromJSVal v = fmap Float64Array <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Float64Array
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsFloat64Array o
toFloat64Array :: IsFloat64Array o => o -> Float64Array
toFloat64Array = Float64Array . coerce

instance IsFloat64Array Float64Array
instance IsGObject Float64Array where
    typeGType _ = gTypeFloat64Array

gTypeFloat64Array :: JSM GType
gTypeFloat64Array = GType . Object <$> jsg "Float64Array"

newtype Uint8Array = Uint8Array { unUint8Array :: JSVal }
noUint8Array :: Maybe Uint8Array
noUint8Array = Nothing
{-# INLINE noUint8Array #-}

instance PToJSVal Uint8Array where
  pToJSVal = unUint8Array
  {-# INLINE pToJSVal #-}

instance PFromJSVal Uint8Array where
  pFromJSVal = Uint8Array
  {-# INLINE pFromJSVal #-}

instance ToJSVal Uint8Array where
  toJSVal = return . unUint8Array
  {-# INLINE toJSVal #-}

instance FromJSVal Uint8Array where
  fromJSVal v = fmap Uint8Array <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Uint8Array
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsUint8Array o
toUint8Array :: IsUint8Array o => o -> Uint8Array
toUint8Array = Uint8Array . coerce

instance IsUint8Array Uint8Array
instance IsGObject Uint8Array where
    typeGType _ = gTypeUint8Array

gTypeUint8Array :: JSM GType
gTypeUint8Array = GType . Object <$> jsg "Uint8Array"

newtype Uint8ClampedArray = Uint8ClampedArray { unUint8ClampedArray :: JSVal }
noUint8ClampedArray :: Maybe Uint8ClampedArray
noUint8ClampedArray = Nothing
{-# INLINE noUint8ClampedArray #-}

instance PToJSVal Uint8ClampedArray where
  pToJSVal = unUint8ClampedArray
  {-# INLINE pToJSVal #-}

instance PFromJSVal Uint8ClampedArray where
  pFromJSVal = Uint8ClampedArray
  {-# INLINE pFromJSVal #-}

instance ToJSVal Uint8ClampedArray where
  toJSVal = return . unUint8ClampedArray
  {-# INLINE toJSVal #-}

instance FromJSVal Uint8ClampedArray where
  fromJSVal v = fmap Uint8ClampedArray <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Uint8ClampedArray
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsUint8ClampedArray o
toUint8ClampedArray :: IsUint8ClampedArray o => o -> Uint8ClampedArray
toUint8ClampedArray = Uint8ClampedArray . coerce

instance IsUint8ClampedArray Uint8ClampedArray
instance IsGObject Uint8ClampedArray where
    typeGType _ = gTypeUint8ClampedArray

gTypeUint8ClampedArray :: JSM GType
gTypeUint8ClampedArray = GType . Object <$> jsg "Uint8ClampedArray"

newtype Uint16Array = Uint16Array { unUint16Array :: JSVal }
noUint16Array :: Maybe Uint16Array
noUint16Array = Nothing
{-# INLINE noUint16Array #-}

instance PToJSVal Uint16Array where
  pToJSVal = unUint16Array
  {-# INLINE pToJSVal #-}

instance PFromJSVal Uint16Array where
  pFromJSVal = Uint16Array
  {-# INLINE pFromJSVal #-}

instance ToJSVal Uint16Array where
  toJSVal = return . unUint16Array
  {-# INLINE toJSVal #-}

instance FromJSVal Uint16Array where
  fromJSVal v = fmap Uint16Array <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Uint16Array
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsUint16Array o
toUint16Array :: IsUint16Array o => o -> Uint16Array
toUint16Array = Uint16Array . coerce

instance IsUint16Array Uint16Array
instance IsGObject Uint16Array where
    typeGType _ = gTypeUint16Array

gTypeUint16Array :: JSM GType
gTypeUint16Array = GType . Object <$> jsg "Uint16Array"

newtype Uint32Array = Uint32Array { unUint32Array :: JSVal }
noUint32Array :: Maybe Uint32Array
noUint32Array = Nothing
{-# INLINE noUint32Array #-}

instance PToJSVal Uint32Array where
  pToJSVal = unUint32Array
  {-# INLINE pToJSVal #-}

instance PFromJSVal Uint32Array where
  pFromJSVal = Uint32Array
  {-# INLINE pFromJSVal #-}

instance ToJSVal Uint32Array where
  toJSVal = return . unUint32Array
  {-# INLINE toJSVal #-}

instance FromJSVal Uint32Array where
  fromJSVal v = fmap Uint32Array <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Uint32Array
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsUint32Array o
toUint32Array :: IsUint32Array o => o -> Uint32Array
toUint32Array = Uint32Array . coerce

instance IsUint32Array Uint32Array
instance IsGObject Uint32Array where
    typeGType _ = gTypeUint32Array

gTypeUint32Array :: JSM GType
gTypeUint32Array = GType . Object <$> jsg "Uint32Array"

newtype Int8Array = Int8Array { unInt8Array :: JSVal }
noInt8Array :: Maybe Int8Array
noInt8Array = Nothing
{-# INLINE noInt8Array #-}

instance PToJSVal Int8Array where
  pToJSVal = unInt8Array
  {-# INLINE pToJSVal #-}

instance PFromJSVal Int8Array where
  pFromJSVal = Int8Array
  {-# INLINE pFromJSVal #-}

instance ToJSVal Int8Array where
  toJSVal = return . unInt8Array
  {-# INLINE toJSVal #-}

instance FromJSVal Int8Array where
  fromJSVal v = fmap Int8Array <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Int8Array
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsInt8Array o
toInt8Array :: IsInt8Array o => o -> Int8Array
toInt8Array = Int8Array . coerce

instance IsInt8Array Int8Array
instance IsGObject Int8Array where
    typeGType _ = gTypeInt8Array

gTypeInt8Array :: JSM GType
gTypeInt8Array = GType . Object <$> jsg "Int8Array"

newtype Int16Array = Int16Array { unInt16Array :: JSVal }
noInt16Array :: Maybe Int16Array
noInt16Array = Nothing
{-# INLINE noInt16Array #-}

instance PToJSVal Int16Array where
  pToJSVal = unInt16Array
  {-# INLINE pToJSVal #-}

instance PFromJSVal Int16Array where
  pFromJSVal = Int16Array
  {-# INLINE pFromJSVal #-}

instance ToJSVal Int16Array where
  toJSVal = return . unInt16Array
  {-# INLINE toJSVal #-}

instance FromJSVal Int16Array where
  fromJSVal v = fmap Int16Array <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Int16Array
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsInt16Array o
toInt16Array :: IsInt16Array o => o -> Int16Array
toInt16Array = Int16Array . coerce

instance IsInt16Array Int16Array
instance IsGObject Int16Array where
    typeGType _ = gTypeInt16Array

gTypeInt16Array :: JSM GType
gTypeInt16Array = GType . Object <$> jsg "Int16Array"

newtype Int32Array = Int32Array { unInt32Array :: JSVal }
noInt32Array :: Maybe Int32Array
noInt32Array = Nothing
{-# INLINE noInt32Array #-}

instance PToJSVal Int32Array where
  pToJSVal = unInt32Array
  {-# INLINE pToJSVal #-}

instance PFromJSVal Int32Array where
  pFromJSVal = Int32Array
  {-# INLINE pFromJSVal #-}

instance ToJSVal Int32Array where
  toJSVal = return . unInt32Array
  {-# INLINE toJSVal #-}

instance FromJSVal Int32Array where
  fromJSVal v = fmap Int32Array <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Int32Array
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsInt32Array o
toInt32Array :: IsInt32Array o => o -> Int32Array
toInt32Array = Int32Array . coerce

instance IsInt32Array Int32Array
instance IsGObject Int32Array where
    typeGType _ = gTypeInt32Array

gTypeInt32Array :: JSM GType
gTypeInt32Array = GType . Object <$> jsg "Int32Array"

newtype ObjectArray = ObjectArray { unObjectArray :: JSVal }
noObjectArray :: Maybe ObjectArray
noObjectArray = Nothing
{-# INLINE noObjectArray #-}

instance PToJSVal ObjectArray where
  pToJSVal = unObjectArray
  {-# INLINE pToJSVal #-}

instance PFromJSVal ObjectArray where
  pFromJSVal = ObjectArray
  {-# INLINE pFromJSVal #-}

instance ToJSVal ObjectArray where
  toJSVal = return . unObjectArray
  {-# INLINE toJSVal #-}

instance FromJSVal ObjectArray where
  fromJSVal v = fmap ObjectArray <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ObjectArray
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsObjectArray o
toObjectArray :: IsObjectArray o => o -> ObjectArray
toObjectArray = ObjectArray . coerce

instance IsObjectArray ObjectArray
instance IsGObject ObjectArray where
  typeGType _ = error "Unable to get the JavaScript type of ObjectArray"

newtype ArrayBufferView = ArrayBufferView { unArrayBufferView :: JSVal }
noArrayBufferView :: Maybe ArrayBufferView
noArrayBufferView = Nothing
{-# INLINE noArrayBufferView #-}

instance PToJSVal ArrayBufferView where
  pToJSVal = unArrayBufferView
  {-# INLINE pToJSVal #-}

instance PFromJSVal ArrayBufferView where
  pFromJSVal = ArrayBufferView
  {-# INLINE pFromJSVal #-}

instance ToJSVal ArrayBufferView where
  toJSVal = return . unArrayBufferView
  {-# INLINE toJSVal #-}

instance FromJSVal ArrayBufferView where
  fromJSVal v = fmap ArrayBufferView <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ArrayBufferView
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsArrayBufferView o
toArrayBufferView :: IsArrayBufferView o => o -> ArrayBufferView
toArrayBufferView = ArrayBufferView . coerce

instance IsArrayBufferView ArrayBufferView
instance IsGObject ArrayBufferView where
  typeGType _ = error "Unable to get the JavaScript type of ArrayBufferView"

newtype Array = Array { unArray :: JSVal }
noArray :: Maybe Array
noArray = Nothing
{-# INLINE noArray #-}

instance PToJSVal Array where
  pToJSVal = unArray
  {-# INLINE pToJSVal #-}

instance PFromJSVal Array where
  pFromJSVal = Array
  {-# INLINE pFromJSVal #-}

instance ToJSVal Array where
  toJSVal = return . unArray
  {-# INLINE toJSVal #-}

instance FromJSVal Array where
  fromJSVal v = fmap Array <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Array
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsArray o
toArray :: IsArray o => o -> Array
toArray = Array . coerce

instance IsArray Array
instance IsGObject Array where
    typeGType _ = gTypeArray

gTypeArray :: JSM GType
gTypeArray = GType . Object <$> jsg "Array"

newtype Date = Date { unDate :: JSVal }
noDate :: Maybe Date
noDate = Nothing
{-# INLINE noDate #-}

instance PToJSVal Date where
  pToJSVal = unDate
  {-# INLINE pToJSVal #-}

instance PFromJSVal Date where
  pFromJSVal = Date
  {-# INLINE pFromJSVal #-}

instance ToJSVal Date where
  toJSVal = return . unDate
  {-# INLINE toJSVal #-}

instance FromJSVal Date where
  fromJSVal v = fmap Date <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Date
  {-# INLINE fromJSValUnchecked #-}

class IsGObject o => IsDate o
toDate :: IsDate o => o -> Date
toDate = Date . coerce

instance IsDate Date
instance IsGObject Date where
    typeGType _ = gTypeDate

gTypeDate :: JSM GType
gTypeDate = GType . Object <$> jsg "Date"


type GLenum = Word32
noGLenum :: Maybe GLenum
noGLenum = Nothing
{-# INLINE noGLenum #-}
type GLboolean = Bool
noGLboolean :: Maybe GLboolean
noGLboolean = Nothing
{-# INLINE noGLboolean #-}
type GLbitfield = Word32
noGLbitfield :: Maybe GLbitfield
noGLbitfield = Nothing
{-# INLINE noGLbitfield #-}
type GLbyte = Int8
noGLbyte :: Maybe GLbyte
noGLbyte = Nothing
{-# INLINE noGLbyte #-}
type GLshort = Int16
noGLshort :: Maybe GLshort
noGLshort = Nothing
{-# INLINE noGLshort #-}
type GLint = Int32
noGLint :: Maybe GLint
noGLint = Nothing
{-# INLINE noGLint #-}
type GLint64 = Int64
noGLint64 :: Maybe GLint64
noGLint64 = Nothing
{-# INLINE noGLint64 #-}
type GLsizei = Int32
noGLsizei :: Maybe GLsizei
noGLsizei = Nothing
{-# INLINE noGLsizei #-}
type GLintptr = Int64
noGLintptr :: Maybe GLintptr
noGLintptr = Nothing
{-# INLINE noGLintptr #-}
type GLsizeiptr = Int64
noGLsizeiptr :: Maybe GLsizeiptr
noGLsizeiptr = Nothing
{-# INLINE noGLsizeiptr #-}
type GLubyte = Word8
noGLubyte :: Maybe GLubyte
noGLubyte = Nothing
{-# INLINE noGLubyte #-}
type GLushort = Word16
noGLushort :: Maybe GLushort
noGLushort = Nothing
{-# INLINE noGLushort #-}
type GLuint = Word32
noGLuint :: Maybe GLuint
noGLuint = Nothing
{-# INLINE noGLuint #-}
type GLuint64 = Word64
noGLuint64 :: Maybe GLuint64
noGLuint64 = Nothing
{-# INLINE noGLuint64 #-}
type GLfloat = Double
noGLfloat :: Maybe GLfloat
noGLfloat = Nothing
{-# INLINE noGLfloat #-}
type GLclampf = Double
noGLclampf :: Maybe GLclampf
noGLclampf = Nothing
{-# INLINE noGLclampf #-}

-- This type is used to access the `globalThis` (see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis)
newtype GlobalThis = GlobalThis { unGlobalThis :: JSVal }

instance PToJSVal GlobalThis where
  pToJSVal = unGlobalThis
  {-# INLINE pToJSVal #-}

instance PFromJSVal GlobalThis where
  pFromJSVal = GlobalThis
  {-# INLINE pFromJSVal #-}

instance ToJSVal GlobalThis where
  toJSVal = return . unGlobalThis
  {-# INLINE toJSVal #-}

instance FromJSVal GlobalThis where
  fromJSVal v = fmap GlobalThis <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GlobalThis
  {-# INLINE fromJSValUnchecked #-}

instance IsGObject GlobalThis where
  typeGType _ = error "Unable to get the JavaScript type of GlobalThis"

instance MakeObject GlobalThis where
  makeObject = makeObject . unGlobalThis

instance IsEventTarget GlobalThis
instance IsWindowOrWorkerGlobalScope GlobalThis
instance IsGlobalEventHandlers GlobalThis
noGlobalThis :: Maybe GlobalThis
noGlobalThis = Nothing
{-# INLINE noGlobalThis #-}

-- AUTO GENERATION STARTS HERE
-- The remainder of this file is generated from webref IDL by dom-gen. Do not edit.
newtype AddEventListenerOptionsOrBool = AddEventListenerOptionsOrBool { unAddEventListenerOptionsOrBool :: JSVal }

instance PToJSVal AddEventListenerOptionsOrBool where
  pToJSVal = unAddEventListenerOptionsOrBool
  {-# INLINE pToJSVal #-}

instance PFromJSVal AddEventListenerOptionsOrBool where
  pFromJSVal = AddEventListenerOptionsOrBool
  {-# INLINE pFromJSVal #-}

instance ToJSVal AddEventListenerOptionsOrBool where
  toJSVal = return . unAddEventListenerOptionsOrBool
  {-# INLINE toJSVal #-}

instance FromJSVal AddEventListenerOptionsOrBool where
  fromJSVal v = fmap AddEventListenerOptionsOrBool <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AddEventListenerOptionsOrBool
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AddEventListenerOptionsOrBool where
  makeObject = makeObject . unAddEventListenerOptionsOrBool

class (ToJSVal o) => IsAddEventListenerOptionsOrBool o

toAddEventListenerOptionsOrBool :: (MonadJSM m, IsAddEventListenerOptionsOrBool o) => o -> m AddEventListenerOptionsOrBool
toAddEventListenerOptionsOrBool o = liftJSM (AddEventListenerOptionsOrBool <$> toJSVal o)

instance IsAddEventListenerOptionsOrBool AddEventListenerOptionsOrBool
instance IsAddEventListenerOptionsOrBool AddEventListenerOptions
instance IsAddEventListenerOptionsOrBool Bool

newtype AlgorithmIdentifier = AlgorithmIdentifier { unAlgorithmIdentifier :: JSVal }

instance PToJSVal AlgorithmIdentifier where
  pToJSVal = unAlgorithmIdentifier
  {-# INLINE pToJSVal #-}

instance PFromJSVal AlgorithmIdentifier where
  pFromJSVal = AlgorithmIdentifier
  {-# INLINE pFromJSVal #-}

instance ToJSVal AlgorithmIdentifier where
  toJSVal = return . unAlgorithmIdentifier
  {-# INLINE toJSVal #-}

instance FromJSVal AlgorithmIdentifier where
  fromJSVal v = fmap AlgorithmIdentifier <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AlgorithmIdentifier
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AlgorithmIdentifier where
  makeObject = makeObject . unAlgorithmIdentifier

class (ToJSVal o) => IsAlgorithmIdentifier o

toAlgorithmIdentifier :: (MonadJSM m, IsAlgorithmIdentifier o) => o -> m AlgorithmIdentifier
toAlgorithmIdentifier o = liftJSM (AlgorithmIdentifier <$> toJSVal o)

instance IsAlgorithmIdentifier AlgorithmIdentifier
instance IsAlgorithmIdentifier GObject
instance IsAlgorithmIdentifier JSString
instance IsAlgorithmIdentifier String
instance IsAlgorithmIdentifier T.Text

newtype AllowSharedBufferSource = AllowSharedBufferSource { unAllowSharedBufferSource :: JSVal }

instance PToJSVal AllowSharedBufferSource where
  pToJSVal = unAllowSharedBufferSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal AllowSharedBufferSource where
  pFromJSVal = AllowSharedBufferSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal AllowSharedBufferSource where
  toJSVal = return . unAllowSharedBufferSource
  {-# INLINE toJSVal #-}

instance FromJSVal AllowSharedBufferSource where
  fromJSVal v = fmap AllowSharedBufferSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AllowSharedBufferSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AllowSharedBufferSource where
  makeObject = makeObject . unAllowSharedBufferSource

class (ToJSVal o) => IsAllowSharedBufferSource o

toAllowSharedBufferSource :: (MonadJSM m, IsAllowSharedBufferSource o) => o -> m AllowSharedBufferSource
toAllowSharedBufferSource o = liftJSM (AllowSharedBufferSource <$> toJSVal o)

instance IsAllowSharedBufferSource AllowSharedBufferSource
instance IsAllowSharedBufferSource ArrayBuffer
instance IsAllowSharedBufferSource ArrayBufferView
instance IsAllowSharedBufferSource BigInt64Array
instance IsAllowSharedBufferSource BigUint64Array
instance IsAllowSharedBufferSource DataView
instance IsAllowSharedBufferSource Float16Array
instance IsAllowSharedBufferSource Float32Array
instance IsAllowSharedBufferSource Float64Array
instance IsAllowSharedBufferSource Int16Array
instance IsAllowSharedBufferSource Int32Array
instance IsAllowSharedBufferSource Int8Array
instance IsAllowSharedBufferSource SharedArrayBuffer
instance IsAllowSharedBufferSource Uint16Array
instance IsAllowSharedBufferSource Uint32Array
instance IsAllowSharedBufferSource Uint8Array
instance IsAllowSharedBufferSource Uint8ClampedArray

newtype ArrayBufferOrJsonWebKey = ArrayBufferOrJsonWebKey { unArrayBufferOrJsonWebKey :: JSVal }

instance PToJSVal ArrayBufferOrJsonWebKey where
  pToJSVal = unArrayBufferOrJsonWebKey
  {-# INLINE pToJSVal #-}

instance PFromJSVal ArrayBufferOrJsonWebKey where
  pFromJSVal = ArrayBufferOrJsonWebKey
  {-# INLINE pFromJSVal #-}

instance ToJSVal ArrayBufferOrJsonWebKey where
  toJSVal = return . unArrayBufferOrJsonWebKey
  {-# INLINE toJSVal #-}

instance FromJSVal ArrayBufferOrJsonWebKey where
  fromJSVal v = fmap ArrayBufferOrJsonWebKey <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ArrayBufferOrJsonWebKey
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ArrayBufferOrJsonWebKey where
  makeObject = makeObject . unArrayBufferOrJsonWebKey

class (ToJSVal o) => IsArrayBufferOrJsonWebKey o

toArrayBufferOrJsonWebKey :: (MonadJSM m, IsArrayBufferOrJsonWebKey o) => o -> m ArrayBufferOrJsonWebKey
toArrayBufferOrJsonWebKey o = liftJSM (ArrayBufferOrJsonWebKey <$> toJSVal o)

instance IsArrayBufferOrJsonWebKey ArrayBufferOrJsonWebKey
instance IsArrayBufferOrJsonWebKey ArrayBuffer
instance IsArrayBufferOrJsonWebKey JsonWebKey

newtype AudioContextLatencyCategoryOrDouble = AudioContextLatencyCategoryOrDouble { unAudioContextLatencyCategoryOrDouble :: JSVal }

instance PToJSVal AudioContextLatencyCategoryOrDouble where
  pToJSVal = unAudioContextLatencyCategoryOrDouble
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioContextLatencyCategoryOrDouble where
  pFromJSVal = AudioContextLatencyCategoryOrDouble
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioContextLatencyCategoryOrDouble where
  toJSVal = return . unAudioContextLatencyCategoryOrDouble
  {-# INLINE toJSVal #-}

instance FromJSVal AudioContextLatencyCategoryOrDouble where
  fromJSVal v = fmap AudioContextLatencyCategoryOrDouble <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioContextLatencyCategoryOrDouble
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioContextLatencyCategoryOrDouble where
  makeObject = makeObject . unAudioContextLatencyCategoryOrDouble

class (ToJSVal o) => IsAudioContextLatencyCategoryOrDouble o

toAudioContextLatencyCategoryOrDouble :: (MonadJSM m, IsAudioContextLatencyCategoryOrDouble o) => o -> m AudioContextLatencyCategoryOrDouble
toAudioContextLatencyCategoryOrDouble o = liftJSM (AudioContextLatencyCategoryOrDouble <$> toJSVal o)

instance IsAudioContextLatencyCategoryOrDouble AudioContextLatencyCategoryOrDouble
instance IsAudioContextLatencyCategoryOrDouble Double

newtype AudioContextRenderSizeCategoryOrWord = AudioContextRenderSizeCategoryOrWord { unAudioContextRenderSizeCategoryOrWord :: JSVal }

instance PToJSVal AudioContextRenderSizeCategoryOrWord where
  pToJSVal = unAudioContextRenderSizeCategoryOrWord
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioContextRenderSizeCategoryOrWord where
  pFromJSVal = AudioContextRenderSizeCategoryOrWord
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioContextRenderSizeCategoryOrWord where
  toJSVal = return . unAudioContextRenderSizeCategoryOrWord
  {-# INLINE toJSVal #-}

instance FromJSVal AudioContextRenderSizeCategoryOrWord where
  fromJSVal v = fmap AudioContextRenderSizeCategoryOrWord <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioContextRenderSizeCategoryOrWord
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioContextRenderSizeCategoryOrWord where
  makeObject = makeObject . unAudioContextRenderSizeCategoryOrWord

class (ToJSVal o) => IsAudioContextRenderSizeCategoryOrWord o

toAudioContextRenderSizeCategoryOrWord :: (MonadJSM m, IsAudioContextRenderSizeCategoryOrWord o) => o -> m AudioContextRenderSizeCategoryOrWord
toAudioContextRenderSizeCategoryOrWord o = liftJSM (AudioContextRenderSizeCategoryOrWord <$> toJSVal o)

instance IsAudioContextRenderSizeCategoryOrWord AudioContextRenderSizeCategoryOrWord
instance IsAudioContextRenderSizeCategoryOrWord Word

newtype BlobOrMediaSource = BlobOrMediaSource { unBlobOrMediaSource :: JSVal }

instance PToJSVal BlobOrMediaSource where
  pToJSVal = unBlobOrMediaSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal BlobOrMediaSource where
  pFromJSVal = BlobOrMediaSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal BlobOrMediaSource where
  toJSVal = return . unBlobOrMediaSource
  {-# INLINE toJSVal #-}

instance FromJSVal BlobOrMediaSource where
  fromJSVal v = fmap BlobOrMediaSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BlobOrMediaSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BlobOrMediaSource where
  makeObject = makeObject . unBlobOrMediaSource

class (ToJSVal o) => IsBlobOrMediaSource o

toBlobOrMediaSource :: (MonadJSM m, IsBlobOrMediaSource o) => o -> m BlobOrMediaSource
toBlobOrMediaSource o = liftJSM (BlobOrMediaSource <$> toJSVal o)

instance IsBlobOrMediaSource BlobOrMediaSource
instance IsBlobOrMediaSource Blob
instance IsBlobOrMediaSource File
instance IsBlobOrMediaSource MediaSource

newtype BlobPart = BlobPart { unBlobPart :: JSVal }

instance PToJSVal BlobPart where
  pToJSVal = unBlobPart
  {-# INLINE pToJSVal #-}

instance PFromJSVal BlobPart where
  pFromJSVal = BlobPart
  {-# INLINE pFromJSVal #-}

instance ToJSVal BlobPart where
  toJSVal = return . unBlobPart
  {-# INLINE toJSVal #-}

instance FromJSVal BlobPart where
  fromJSVal v = fmap BlobPart <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BlobPart
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BlobPart where
  makeObject = makeObject . unBlobPart

class (ToJSVal o) => IsBlobPart o

toBlobPart :: (MonadJSM m, IsBlobPart o) => o -> m BlobPart
toBlobPart o = liftJSM (BlobPart <$> toJSVal o)

instance IsBlobPart BlobPart
instance IsBlobPart ArrayBuffer
instance IsBlobPart ArrayBufferView
instance IsBlobPart BigInt64Array
instance IsBlobPart BigUint64Array
instance IsBlobPart Blob
instance IsBlobPart DataView
instance IsBlobPart File
instance IsBlobPart Float16Array
instance IsBlobPart Float32Array
instance IsBlobPart Float64Array
instance IsBlobPart Int16Array
instance IsBlobPart Int32Array
instance IsBlobPart Int8Array
instance IsBlobPart JSString
instance IsBlobPart String
instance IsBlobPart T.Text
instance IsBlobPart Uint16Array
instance IsBlobPart Uint32Array
instance IsBlobPart Uint8Array
instance IsBlobPart Uint8ClampedArray

newtype BluetoothServiceUUID = BluetoothServiceUUID { unBluetoothServiceUUID :: JSVal }

instance PToJSVal BluetoothServiceUUID where
  pToJSVal = unBluetoothServiceUUID
  {-# INLINE pToJSVal #-}

instance PFromJSVal BluetoothServiceUUID where
  pFromJSVal = BluetoothServiceUUID
  {-# INLINE pFromJSVal #-}

instance ToJSVal BluetoothServiceUUID where
  toJSVal = return . unBluetoothServiceUUID
  {-# INLINE toJSVal #-}

instance FromJSVal BluetoothServiceUUID where
  fromJSVal v = fmap BluetoothServiceUUID <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BluetoothServiceUUID
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BluetoothServiceUUID where
  makeObject = makeObject . unBluetoothServiceUUID

class (ToJSVal o) => IsBluetoothServiceUUID o

toBluetoothServiceUUID :: (MonadJSM m, IsBluetoothServiceUUID o) => o -> m BluetoothServiceUUID
toBluetoothServiceUUID o = liftJSM (BluetoothServiceUUID <$> toJSVal o)

instance IsBluetoothServiceUUID BluetoothServiceUUID
instance IsBluetoothServiceUUID JSString
instance IsBluetoothServiceUUID String
instance IsBluetoothServiceUUID T.Text
instance IsBluetoothServiceUUID Word

newtype BodyInit = BodyInit { unBodyInit :: JSVal }

instance PToJSVal BodyInit where
  pToJSVal = unBodyInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal BodyInit where
  pFromJSVal = BodyInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal BodyInit where
  toJSVal = return . unBodyInit
  {-# INLINE toJSVal #-}

instance FromJSVal BodyInit where
  fromJSVal v = fmap BodyInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BodyInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BodyInit where
  makeObject = makeObject . unBodyInit

class (ToJSVal o) => IsBodyInit o

toBodyInit :: (MonadJSM m, IsBodyInit o) => o -> m BodyInit
toBodyInit o = liftJSM (BodyInit <$> toJSVal o)

instance IsBodyInit BodyInit
instance IsBodyInit ArrayBuffer
instance IsBodyInit ArrayBufferView
instance IsBodyInit BigInt64Array
instance IsBodyInit BigUint64Array
instance IsBodyInit Blob
instance IsBodyInit DataView
instance IsBodyInit File
instance IsBodyInit Float16Array
instance IsBodyInit Float32Array
instance IsBodyInit Float64Array
instance IsBodyInit FormData
instance IsBodyInit Int16Array
instance IsBodyInit Int32Array
instance IsBodyInit Int8Array
instance IsBodyInit JSString
instance IsBodyInit ReadableStream
instance IsBodyInit String
instance IsBodyInit T.Text
instance IsBodyInit URLSearchParams
instance IsBodyInit Uint16Array
instance IsBodyInit Uint32Array
instance IsBodyInit Uint8Array
instance IsBodyInit Uint8ClampedArray
instance IsBodyInit WebTransportReceiveStream

newtype BoolOrConstrainDouble = BoolOrConstrainDouble { unBoolOrConstrainDouble :: JSVal }

instance PToJSVal BoolOrConstrainDouble where
  pToJSVal = unBoolOrConstrainDouble
  {-# INLINE pToJSVal #-}

instance PFromJSVal BoolOrConstrainDouble where
  pFromJSVal = BoolOrConstrainDouble
  {-# INLINE pFromJSVal #-}

instance ToJSVal BoolOrConstrainDouble where
  toJSVal = return . unBoolOrConstrainDouble
  {-# INLINE toJSVal #-}

instance FromJSVal BoolOrConstrainDouble where
  fromJSVal v = fmap BoolOrConstrainDouble <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BoolOrConstrainDouble
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BoolOrConstrainDouble where
  makeObject = makeObject . unBoolOrConstrainDouble

class (ToJSVal o) => IsBoolOrConstrainDouble o

toBoolOrConstrainDouble :: (MonadJSM m, IsBoolOrConstrainDouble o) => o -> m BoolOrConstrainDouble
toBoolOrConstrainDouble o = liftJSM (BoolOrConstrainDouble <$> toJSVal o)

instance IsBoolOrConstrainDouble BoolOrConstrainDouble
instance IsBoolOrConstrainDouble Bool
instance IsBoolOrConstrainDouble ConstrainDoubleRange
instance IsBoolOrConstrainDouble Double

newtype BoolOrDoubleOrString = BoolOrDoubleOrString { unBoolOrDoubleOrString :: JSVal }

instance PToJSVal BoolOrDoubleOrString where
  pToJSVal = unBoolOrDoubleOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal BoolOrDoubleOrString where
  pFromJSVal = BoolOrDoubleOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal BoolOrDoubleOrString where
  toJSVal = return . unBoolOrDoubleOrString
  {-# INLINE toJSVal #-}

instance FromJSVal BoolOrDoubleOrString where
  fromJSVal v = fmap BoolOrDoubleOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BoolOrDoubleOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BoolOrDoubleOrString where
  makeObject = makeObject . unBoolOrDoubleOrString

class (ToJSVal o) => IsBoolOrDoubleOrString o

toBoolOrDoubleOrString :: (MonadJSM m, IsBoolOrDoubleOrString o) => o -> m BoolOrDoubleOrString
toBoolOrDoubleOrString o = liftJSM (BoolOrDoubleOrString <$> toJSVal o)

instance IsBoolOrDoubleOrString BoolOrDoubleOrString
instance IsBoolOrDoubleOrString Bool
instance IsBoolOrDoubleOrString Double
instance IsBoolOrDoubleOrString JSString
instance IsBoolOrDoubleOrString String
instance IsBoolOrDoubleOrString T.Text

newtype BoolOrImportNodeOptions = BoolOrImportNodeOptions { unBoolOrImportNodeOptions :: JSVal }

instance PToJSVal BoolOrImportNodeOptions where
  pToJSVal = unBoolOrImportNodeOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal BoolOrImportNodeOptions where
  pFromJSVal = BoolOrImportNodeOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal BoolOrImportNodeOptions where
  toJSVal = return . unBoolOrImportNodeOptions
  {-# INLINE toJSVal #-}

instance FromJSVal BoolOrImportNodeOptions where
  fromJSVal v = fmap BoolOrImportNodeOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BoolOrImportNodeOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BoolOrImportNodeOptions where
  makeObject = makeObject . unBoolOrImportNodeOptions

class (ToJSVal o) => IsBoolOrImportNodeOptions o

toBoolOrImportNodeOptions :: (MonadJSM m, IsBoolOrImportNodeOptions o) => o -> m BoolOrImportNodeOptions
toBoolOrImportNodeOptions o = liftJSM (BoolOrImportNodeOptions <$> toJSVal o)

instance IsBoolOrImportNodeOptions BoolOrImportNodeOptions
instance IsBoolOrImportNodeOptions Bool
instance IsBoolOrImportNodeOptions ImportNodeOptions

newtype BoolOrMediaTrackConstraints = BoolOrMediaTrackConstraints { unBoolOrMediaTrackConstraints :: JSVal }

instance PToJSVal BoolOrMediaTrackConstraints where
  pToJSVal = unBoolOrMediaTrackConstraints
  {-# INLINE pToJSVal #-}

instance PFromJSVal BoolOrMediaTrackConstraints where
  pFromJSVal = BoolOrMediaTrackConstraints
  {-# INLINE pFromJSVal #-}

instance ToJSVal BoolOrMediaTrackConstraints where
  toJSVal = return . unBoolOrMediaTrackConstraints
  {-# INLINE toJSVal #-}

instance FromJSVal BoolOrMediaTrackConstraints where
  fromJSVal v = fmap BoolOrMediaTrackConstraints <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BoolOrMediaTrackConstraints
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BoolOrMediaTrackConstraints where
  makeObject = makeObject . unBoolOrMediaTrackConstraints

class (ToJSVal o) => IsBoolOrMediaTrackConstraints o

toBoolOrMediaTrackConstraints :: (MonadJSM m, IsBoolOrMediaTrackConstraints o) => o -> m BoolOrMediaTrackConstraints
toBoolOrMediaTrackConstraints o = liftJSM (BoolOrMediaTrackConstraints <$> toJSVal o)

instance IsBoolOrMediaTrackConstraints BoolOrMediaTrackConstraints
instance IsBoolOrMediaTrackConstraints Bool
instance IsBoolOrMediaTrackConstraints MediaTrackConstraints

newtype BoolOrScrollIntoViewOptions = BoolOrScrollIntoViewOptions { unBoolOrScrollIntoViewOptions :: JSVal }

instance PToJSVal BoolOrScrollIntoViewOptions where
  pToJSVal = unBoolOrScrollIntoViewOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal BoolOrScrollIntoViewOptions where
  pFromJSVal = BoolOrScrollIntoViewOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal BoolOrScrollIntoViewOptions where
  toJSVal = return . unBoolOrScrollIntoViewOptions
  {-# INLINE toJSVal #-}

instance FromJSVal BoolOrScrollIntoViewOptions where
  fromJSVal v = fmap BoolOrScrollIntoViewOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BoolOrScrollIntoViewOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BoolOrScrollIntoViewOptions where
  makeObject = makeObject . unBoolOrScrollIntoViewOptions

class (ToJSVal o) => IsBoolOrScrollIntoViewOptions o

toBoolOrScrollIntoViewOptions :: (MonadJSM m, IsBoolOrScrollIntoViewOptions o) => o -> m BoolOrScrollIntoViewOptions
toBoolOrScrollIntoViewOptions o = liftJSM (BoolOrScrollIntoViewOptions <$> toJSVal o)

instance IsBoolOrScrollIntoViewOptions BoolOrScrollIntoViewOptions
instance IsBoolOrScrollIntoViewOptions Bool
instance IsBoolOrScrollIntoViewOptions ScrollIntoViewOptions

newtype BoolOrString = BoolOrString { unBoolOrString :: JSVal }

instance PToJSVal BoolOrString where
  pToJSVal = unBoolOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal BoolOrString where
  pFromJSVal = BoolOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal BoolOrString where
  toJSVal = return . unBoolOrString
  {-# INLINE toJSVal #-}

instance FromJSVal BoolOrString where
  fromJSVal v = fmap BoolOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BoolOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BoolOrString where
  makeObject = makeObject . unBoolOrString

class (ToJSVal o) => IsBoolOrString o

toBoolOrString :: (MonadJSM m, IsBoolOrString o) => o -> m BoolOrString
toBoolOrString o = liftJSM (BoolOrString <$> toJSVal o)

instance IsBoolOrString BoolOrString
instance IsBoolOrString Bool
instance IsBoolOrString JSString
instance IsBoolOrString String
instance IsBoolOrString T.Text

newtype BufferSource = BufferSource { unBufferSource :: JSVal }

instance PToJSVal BufferSource where
  pToJSVal = unBufferSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal BufferSource where
  pFromJSVal = BufferSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal BufferSource where
  toJSVal = return . unBufferSource
  {-# INLINE toJSVal #-}

instance FromJSVal BufferSource where
  fromJSVal v = fmap BufferSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BufferSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BufferSource where
  makeObject = makeObject . unBufferSource

class (ToJSVal o) => IsBufferSource o

toBufferSource :: (MonadJSM m, IsBufferSource o) => o -> m BufferSource
toBufferSource o = liftJSM (BufferSource <$> toJSVal o)

instance IsBufferSource BufferSource
instance IsBufferSource ArrayBuffer
instance IsBufferSource ArrayBufferView
instance IsBufferSource BigInt64Array
instance IsBufferSource BigUint64Array
instance IsBufferSource DataView
instance IsBufferSource Float16Array
instance IsBufferSource Float32Array
instance IsBufferSource Float64Array
instance IsBufferSource Int16Array
instance IsBufferSource Int32Array
instance IsBufferSource Int8Array
instance IsBufferSource Uint16Array
instance IsBufferSource Uint32Array
instance IsBufferSource Uint8Array
instance IsBufferSource Uint8ClampedArray

newtype BufferSourceOrBlobOrString = BufferSourceOrBlobOrString { unBufferSourceOrBlobOrString :: JSVal }

instance PToJSVal BufferSourceOrBlobOrString where
  pToJSVal = unBufferSourceOrBlobOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal BufferSourceOrBlobOrString where
  pFromJSVal = BufferSourceOrBlobOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal BufferSourceOrBlobOrString where
  toJSVal = return . unBufferSourceOrBlobOrString
  {-# INLINE toJSVal #-}

instance FromJSVal BufferSourceOrBlobOrString where
  fromJSVal v = fmap BufferSourceOrBlobOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BufferSourceOrBlobOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BufferSourceOrBlobOrString where
  makeObject = makeObject . unBufferSourceOrBlobOrString

class (ToJSVal o) => IsBufferSourceOrBlobOrString o

toBufferSourceOrBlobOrString :: (MonadJSM m, IsBufferSourceOrBlobOrString o) => o -> m BufferSourceOrBlobOrString
toBufferSourceOrBlobOrString o = liftJSM (BufferSourceOrBlobOrString <$> toJSVal o)

instance IsBufferSourceOrBlobOrString BufferSourceOrBlobOrString
instance IsBufferSourceOrBlobOrString ArrayBuffer
instance IsBufferSourceOrBlobOrString ArrayBufferView
instance IsBufferSourceOrBlobOrString BigInt64Array
instance IsBufferSourceOrBlobOrString BigUint64Array
instance IsBufferSourceOrBlobOrString Blob
instance IsBufferSourceOrBlobOrString DataView
instance IsBufferSourceOrBlobOrString File
instance IsBufferSourceOrBlobOrString Float16Array
instance IsBufferSourceOrBlobOrString Float32Array
instance IsBufferSourceOrBlobOrString Float64Array
instance IsBufferSourceOrBlobOrString Int16Array
instance IsBufferSourceOrBlobOrString Int32Array
instance IsBufferSourceOrBlobOrString Int8Array
instance IsBufferSourceOrBlobOrString JSString
instance IsBufferSourceOrBlobOrString String
instance IsBufferSourceOrBlobOrString T.Text
instance IsBufferSourceOrBlobOrString Uint16Array
instance IsBufferSourceOrBlobOrString Uint32Array
instance IsBufferSourceOrBlobOrString Uint8Array
instance IsBufferSourceOrBlobOrString Uint8ClampedArray

newtype BufferSourceOrJsonWebKey = BufferSourceOrJsonWebKey { unBufferSourceOrJsonWebKey :: JSVal }

instance PToJSVal BufferSourceOrJsonWebKey where
  pToJSVal = unBufferSourceOrJsonWebKey
  {-# INLINE pToJSVal #-}

instance PFromJSVal BufferSourceOrJsonWebKey where
  pFromJSVal = BufferSourceOrJsonWebKey
  {-# INLINE pFromJSVal #-}

instance ToJSVal BufferSourceOrJsonWebKey where
  toJSVal = return . unBufferSourceOrJsonWebKey
  {-# INLINE toJSVal #-}

instance FromJSVal BufferSourceOrJsonWebKey where
  fromJSVal v = fmap BufferSourceOrJsonWebKey <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BufferSourceOrJsonWebKey
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BufferSourceOrJsonWebKey where
  makeObject = makeObject . unBufferSourceOrJsonWebKey

class (ToJSVal o) => IsBufferSourceOrJsonWebKey o

toBufferSourceOrJsonWebKey :: (MonadJSM m, IsBufferSourceOrJsonWebKey o) => o -> m BufferSourceOrJsonWebKey
toBufferSourceOrJsonWebKey o = liftJSM (BufferSourceOrJsonWebKey <$> toJSVal o)

instance IsBufferSourceOrJsonWebKey BufferSourceOrJsonWebKey
instance IsBufferSourceOrJsonWebKey ArrayBuffer
instance IsBufferSourceOrJsonWebKey ArrayBufferView
instance IsBufferSourceOrJsonWebKey BigInt64Array
instance IsBufferSourceOrJsonWebKey BigUint64Array
instance IsBufferSourceOrJsonWebKey DataView
instance IsBufferSourceOrJsonWebKey Float16Array
instance IsBufferSourceOrJsonWebKey Float32Array
instance IsBufferSourceOrJsonWebKey Float64Array
instance IsBufferSourceOrJsonWebKey Int16Array
instance IsBufferSourceOrJsonWebKey Int32Array
instance IsBufferSourceOrJsonWebKey Int8Array
instance IsBufferSourceOrJsonWebKey JsonWebKey
instance IsBufferSourceOrJsonWebKey Uint16Array
instance IsBufferSourceOrJsonWebKey Uint32Array
instance IsBufferSourceOrJsonWebKey Uint8Array
instance IsBufferSourceOrJsonWebKey Uint8ClampedArray

newtype BufferSourceOrString = BufferSourceOrString { unBufferSourceOrString :: JSVal }

instance PToJSVal BufferSourceOrString where
  pToJSVal = unBufferSourceOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal BufferSourceOrString where
  pFromJSVal = BufferSourceOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal BufferSourceOrString where
  toJSVal = return . unBufferSourceOrString
  {-# INLINE toJSVal #-}

instance FromJSVal BufferSourceOrString where
  fromJSVal v = fmap BufferSourceOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BufferSourceOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BufferSourceOrString where
  makeObject = makeObject . unBufferSourceOrString

class (ToJSVal o) => IsBufferSourceOrString o

toBufferSourceOrString :: (MonadJSM m, IsBufferSourceOrString o) => o -> m BufferSourceOrString
toBufferSourceOrString o = liftJSM (BufferSourceOrString <$> toJSVal o)

instance IsBufferSourceOrString BufferSourceOrString
instance IsBufferSourceOrString ArrayBuffer
instance IsBufferSourceOrString ArrayBufferView
instance IsBufferSourceOrString BigInt64Array
instance IsBufferSourceOrString BigUint64Array
instance IsBufferSourceOrString DataView
instance IsBufferSourceOrString Float16Array
instance IsBufferSourceOrString Float32Array
instance IsBufferSourceOrString Float64Array
instance IsBufferSourceOrString Int16Array
instance IsBufferSourceOrString Int32Array
instance IsBufferSourceOrString Int8Array
instance IsBufferSourceOrString JSString
instance IsBufferSourceOrString String
instance IsBufferSourceOrString T.Text
instance IsBufferSourceOrString Uint16Array
instance IsBufferSourceOrString Uint32Array
instance IsBufferSourceOrString Uint8Array
instance IsBufferSourceOrString Uint8ClampedArray

newtype CSSNumberish = CSSNumberish { unCSSNumberish :: JSVal }

instance PToJSVal CSSNumberish where
  pToJSVal = unCSSNumberish
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSNumberish where
  pFromJSVal = CSSNumberish
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSNumberish where
  toJSVal = return . unCSSNumberish
  {-# INLINE toJSVal #-}

instance FromJSVal CSSNumberish where
  fromJSVal v = fmap CSSNumberish <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSNumberish
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSNumberish where
  makeObject = makeObject . unCSSNumberish

class (ToJSVal o) => IsCSSNumberish o

toCSSNumberish :: (MonadJSM m, IsCSSNumberish o) => o -> m CSSNumberish
toCSSNumberish o = liftJSM (CSSNumberish <$> toJSVal o)

instance IsCSSNumberish CSSNumberish
instance IsCSSNumberish CSSMathClamp
instance IsCSSNumberish CSSMathInvert
instance IsCSSNumberish CSSMathMax
instance IsCSSNumberish CSSMathMin
instance IsCSSNumberish CSSMathNegate
instance IsCSSNumberish CSSMathProduct
instance IsCSSNumberish CSSMathSum
instance IsCSSNumberish CSSMathValue
instance IsCSSNumberish CSSNumericValue
instance IsCSSNumberish CSSUnitValue
instance IsCSSNumberish Double

newtype CSSNumericValueOrCSSKeywordValue = CSSNumericValueOrCSSKeywordValue { unCSSNumericValueOrCSSKeywordValue :: JSVal }

instance PToJSVal CSSNumericValueOrCSSKeywordValue where
  pToJSVal = unCSSNumericValueOrCSSKeywordValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSNumericValueOrCSSKeywordValue where
  pFromJSVal = CSSNumericValueOrCSSKeywordValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSNumericValueOrCSSKeywordValue where
  toJSVal = return . unCSSNumericValueOrCSSKeywordValue
  {-# INLINE toJSVal #-}

instance FromJSVal CSSNumericValueOrCSSKeywordValue where
  fromJSVal v = fmap CSSNumericValueOrCSSKeywordValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSNumericValueOrCSSKeywordValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSNumericValueOrCSSKeywordValue where
  makeObject = makeObject . unCSSNumericValueOrCSSKeywordValue

class (ToJSVal o) => IsCSSNumericValueOrCSSKeywordValue o

toCSSNumericValueOrCSSKeywordValue :: (MonadJSM m, IsCSSNumericValueOrCSSKeywordValue o) => o -> m CSSNumericValueOrCSSKeywordValue
toCSSNumericValueOrCSSKeywordValue o = liftJSM (CSSNumericValueOrCSSKeywordValue <$> toJSVal o)

instance IsCSSNumericValueOrCSSKeywordValue CSSNumericValueOrCSSKeywordValue
instance IsCSSNumericValueOrCSSKeywordValue CSSKeywordValue
instance IsCSSNumericValueOrCSSKeywordValue CSSMathClamp
instance IsCSSNumericValueOrCSSKeywordValue CSSMathInvert
instance IsCSSNumericValueOrCSSKeywordValue CSSMathMax
instance IsCSSNumericValueOrCSSKeywordValue CSSMathMin
instance IsCSSNumericValueOrCSSKeywordValue CSSMathNegate
instance IsCSSNumericValueOrCSSKeywordValue CSSMathProduct
instance IsCSSNumericValueOrCSSKeywordValue CSSMathSum
instance IsCSSNumericValueOrCSSKeywordValue CSSMathValue
instance IsCSSNumericValueOrCSSKeywordValue CSSNumericValue
instance IsCSSNumericValueOrCSSKeywordValue CSSUnitValue

newtype CSSPerspectiveValue = CSSPerspectiveValue { unCSSPerspectiveValue :: JSVal }

instance PToJSVal CSSPerspectiveValue where
  pToJSVal = unCSSPerspectiveValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSPerspectiveValue where
  pFromJSVal = CSSPerspectiveValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSPerspectiveValue where
  toJSVal = return . unCSSPerspectiveValue
  {-# INLINE toJSVal #-}

instance FromJSVal CSSPerspectiveValue where
  fromJSVal v = fmap CSSPerspectiveValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSPerspectiveValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSPerspectiveValue where
  makeObject = makeObject . unCSSPerspectiveValue

class (ToJSVal o) => IsCSSPerspectiveValue o

toCSSPerspectiveValue :: (MonadJSM m, IsCSSPerspectiveValue o) => o -> m CSSPerspectiveValue
toCSSPerspectiveValue o = liftJSM (CSSPerspectiveValue <$> toJSVal o)

instance IsCSSPerspectiveValue CSSPerspectiveValue
instance IsCSSPerspectiveValue CSSKeywordValue
instance IsCSSPerspectiveValue CSSMathClamp
instance IsCSSPerspectiveValue CSSMathInvert
instance IsCSSPerspectiveValue CSSMathMax
instance IsCSSPerspectiveValue CSSMathMin
instance IsCSSPerspectiveValue CSSMathNegate
instance IsCSSPerspectiveValue CSSMathProduct
instance IsCSSPerspectiveValue CSSMathSum
instance IsCSSPerspectiveValue CSSMathValue
instance IsCSSPerspectiveValue CSSNumericValue
instance IsCSSPerspectiveValue CSSUnitValue
instance IsCSSPerspectiveValue JSString
instance IsCSSPerspectiveValue String
instance IsCSSPerspectiveValue T.Text

newtype CSSStyleValueOrString = CSSStyleValueOrString { unCSSStyleValueOrString :: JSVal }

instance PToJSVal CSSStyleValueOrString where
  pToJSVal = unCSSStyleValueOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSStyleValueOrString where
  pFromJSVal = CSSStyleValueOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSStyleValueOrString where
  toJSVal = return . unCSSStyleValueOrString
  {-# INLINE toJSVal #-}

instance FromJSVal CSSStyleValueOrString where
  fromJSVal v = fmap CSSStyleValueOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSStyleValueOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSStyleValueOrString where
  makeObject = makeObject . unCSSStyleValueOrString

class (ToJSVal o) => IsCSSStyleValueOrString o

toCSSStyleValueOrString :: (MonadJSM m, IsCSSStyleValueOrString o) => o -> m CSSStyleValueOrString
toCSSStyleValueOrString o = liftJSM (CSSStyleValueOrString <$> toJSVal o)

instance IsCSSStyleValueOrString CSSStyleValueOrString
instance IsCSSStyleValueOrString CSSImageValue
instance IsCSSStyleValueOrString CSSKeywordValue
instance IsCSSStyleValueOrString CSSMathClamp
instance IsCSSStyleValueOrString CSSMathInvert
instance IsCSSStyleValueOrString CSSMathMax
instance IsCSSStyleValueOrString CSSMathMin
instance IsCSSStyleValueOrString CSSMathNegate
instance IsCSSStyleValueOrString CSSMathProduct
instance IsCSSStyleValueOrString CSSMathSum
instance IsCSSStyleValueOrString CSSMathValue
instance IsCSSStyleValueOrString CSSNumericValue
instance IsCSSStyleValueOrString CSSStyleValue
instance IsCSSStyleValueOrString CSSTransformValue
instance IsCSSStyleValueOrString CSSUnitValue
instance IsCSSStyleValueOrString CSSUnparsedValue
instance IsCSSStyleValueOrString JSString
instance IsCSSStyleValueOrString String
instance IsCSSStyleValueOrString T.Text

newtype CSSUnparsedSegment = CSSUnparsedSegment { unCSSUnparsedSegment :: JSVal }

instance PToJSVal CSSUnparsedSegment where
  pToJSVal = unCSSUnparsedSegment
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSUnparsedSegment where
  pFromJSVal = CSSUnparsedSegment
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSUnparsedSegment where
  toJSVal = return . unCSSUnparsedSegment
  {-# INLINE toJSVal #-}

instance FromJSVal CSSUnparsedSegment where
  fromJSVal v = fmap CSSUnparsedSegment <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSUnparsedSegment
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSUnparsedSegment where
  makeObject = makeObject . unCSSUnparsedSegment

class (ToJSVal o) => IsCSSUnparsedSegment o

toCSSUnparsedSegment :: (MonadJSM m, IsCSSUnparsedSegment o) => o -> m CSSUnparsedSegment
toCSSUnparsedSegment o = liftJSM (CSSUnparsedSegment <$> toJSVal o)

instance IsCSSUnparsedSegment CSSUnparsedSegment
instance IsCSSUnparsedSegment CSSVariableReferenceValue
instance IsCSSUnparsedSegment JSString
instance IsCSSUnparsedSegment String
instance IsCSSUnparsedSegment T.Text

newtype CanvasImageSource = CanvasImageSource { unCanvasImageSource :: JSVal }

instance PToJSVal CanvasImageSource where
  pToJSVal = unCanvasImageSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasImageSource where
  pFromJSVal = CanvasImageSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasImageSource where
  toJSVal = return . unCanvasImageSource
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasImageSource where
  fromJSVal v = fmap CanvasImageSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasImageSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasImageSource where
  makeObject = makeObject . unCanvasImageSource

class (ToJSVal o) => IsCanvasImageSource o

toCanvasImageSource :: (MonadJSM m, IsCanvasImageSource o) => o -> m CanvasImageSource
toCanvasImageSource o = liftJSM (CanvasImageSource <$> toJSVal o)

instance IsCanvasImageSource CanvasImageSource
instance IsCanvasImageSource HTMLCanvasElement
instance IsCanvasImageSource HTMLImageElement
instance IsCanvasImageSource HTMLVideoElement
instance IsCanvasImageSource ImageBitmap
instance IsCanvasImageSource OffscreenCanvas
instance IsCanvasImageSource SVGImageElement
instance IsCanvasImageSource VideoFrame

newtype ClientOrServiceWorkerOrMessagePort = ClientOrServiceWorkerOrMessagePort { unClientOrServiceWorkerOrMessagePort :: JSVal }

instance PToJSVal ClientOrServiceWorkerOrMessagePort where
  pToJSVal = unClientOrServiceWorkerOrMessagePort
  {-# INLINE pToJSVal #-}

instance PFromJSVal ClientOrServiceWorkerOrMessagePort where
  pFromJSVal = ClientOrServiceWorkerOrMessagePort
  {-# INLINE pFromJSVal #-}

instance ToJSVal ClientOrServiceWorkerOrMessagePort where
  toJSVal = return . unClientOrServiceWorkerOrMessagePort
  {-# INLINE toJSVal #-}

instance FromJSVal ClientOrServiceWorkerOrMessagePort where
  fromJSVal v = fmap ClientOrServiceWorkerOrMessagePort <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ClientOrServiceWorkerOrMessagePort
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ClientOrServiceWorkerOrMessagePort where
  makeObject = makeObject . unClientOrServiceWorkerOrMessagePort

class (ToJSVal o) => IsClientOrServiceWorkerOrMessagePort o

toClientOrServiceWorkerOrMessagePort :: (MonadJSM m, IsClientOrServiceWorkerOrMessagePort o) => o -> m ClientOrServiceWorkerOrMessagePort
toClientOrServiceWorkerOrMessagePort o = liftJSM (ClientOrServiceWorkerOrMessagePort <$> toJSVal o)

instance IsClientOrServiceWorkerOrMessagePort ClientOrServiceWorkerOrMessagePort
instance IsClientOrServiceWorkerOrMessagePort Client
instance IsClientOrServiceWorkerOrMessagePort MessagePort
instance IsClientOrServiceWorkerOrMessagePort ServiceWorker
instance IsClientOrServiceWorkerOrMessagePort WindowClient

newtype ClientOrUndefined = ClientOrUndefined { unClientOrUndefined :: JSVal }

instance PToJSVal ClientOrUndefined where
  pToJSVal = unClientOrUndefined
  {-# INLINE pToJSVal #-}

instance PFromJSVal ClientOrUndefined where
  pFromJSVal = ClientOrUndefined
  {-# INLINE pFromJSVal #-}

instance ToJSVal ClientOrUndefined where
  toJSVal = return . unClientOrUndefined
  {-# INLINE toJSVal #-}

instance FromJSVal ClientOrUndefined where
  fromJSVal v = fmap ClientOrUndefined <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ClientOrUndefined
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ClientOrUndefined where
  makeObject = makeObject . unClientOrUndefined

class (ToJSVal o) => IsClientOrUndefined o

toClientOrUndefined :: (MonadJSM m, IsClientOrUndefined o) => o -> m ClientOrUndefined
toClientOrUndefined o = liftJSM (ClientOrUndefined <$> toJSVal o)

instance IsClientOrUndefined ClientOrUndefined
instance IsClientOrUndefined Client
instance IsClientOrUndefined WindowClient

newtype ConstrainBoolean = ConstrainBoolean { unConstrainBoolean :: JSVal }

instance PToJSVal ConstrainBoolean where
  pToJSVal = unConstrainBoolean
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstrainBoolean where
  pFromJSVal = ConstrainBoolean
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstrainBoolean where
  toJSVal = return . unConstrainBoolean
  {-# INLINE toJSVal #-}

instance FromJSVal ConstrainBoolean where
  fromJSVal v = fmap ConstrainBoolean <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstrainBoolean
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstrainBoolean where
  makeObject = makeObject . unConstrainBoolean

class (ToJSVal o) => IsConstrainBoolean o

toConstrainBoolean :: (MonadJSM m, IsConstrainBoolean o) => o -> m ConstrainBoolean
toConstrainBoolean o = liftJSM (ConstrainBoolean <$> toJSVal o)

instance IsConstrainBoolean ConstrainBoolean
instance IsConstrainBoolean Bool
instance IsConstrainBoolean ConstrainBooleanParameters

newtype ConstrainBooleanOrDOMString = ConstrainBooleanOrDOMString { unConstrainBooleanOrDOMString :: JSVal }

instance PToJSVal ConstrainBooleanOrDOMString where
  pToJSVal = unConstrainBooleanOrDOMString
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstrainBooleanOrDOMString where
  pFromJSVal = ConstrainBooleanOrDOMString
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstrainBooleanOrDOMString where
  toJSVal = return . unConstrainBooleanOrDOMString
  {-# INLINE toJSVal #-}

instance FromJSVal ConstrainBooleanOrDOMString where
  fromJSVal v = fmap ConstrainBooleanOrDOMString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstrainBooleanOrDOMString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstrainBooleanOrDOMString where
  makeObject = makeObject . unConstrainBooleanOrDOMString

class (ToJSVal o) => IsConstrainBooleanOrDOMString o

toConstrainBooleanOrDOMString :: (MonadJSM m, IsConstrainBooleanOrDOMString o) => o -> m ConstrainBooleanOrDOMString
toConstrainBooleanOrDOMString o = liftJSM (ConstrainBooleanOrDOMString <$> toJSVal o)

instance IsConstrainBooleanOrDOMString ConstrainBooleanOrDOMString
instance IsConstrainBooleanOrDOMString Bool
instance IsConstrainBooleanOrDOMString ConstrainBooleanOrDOMStringParameters
instance IsConstrainBooleanOrDOMString JSString
instance IsConstrainBooleanOrDOMString String
instance IsConstrainBooleanOrDOMString T.Text

newtype ConstrainDOMString = ConstrainDOMString { unConstrainDOMString :: JSVal }

instance PToJSVal ConstrainDOMString where
  pToJSVal = unConstrainDOMString
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstrainDOMString where
  pFromJSVal = ConstrainDOMString
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstrainDOMString where
  toJSVal = return . unConstrainDOMString
  {-# INLINE toJSVal #-}

instance FromJSVal ConstrainDOMString where
  fromJSVal v = fmap ConstrainDOMString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstrainDOMString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstrainDOMString where
  makeObject = makeObject . unConstrainDOMString

class (ToJSVal o) => IsConstrainDOMString o

toConstrainDOMString :: (MonadJSM m, IsConstrainDOMString o) => o -> m ConstrainDOMString
toConstrainDOMString o = liftJSM (ConstrainDOMString <$> toJSVal o)

instance IsConstrainDOMString ConstrainDOMString
instance IsConstrainDOMString ConstrainDOMStringParameters
instance IsConstrainDOMString JSString
instance IsConstrainDOMString String
instance IsConstrainDOMString T.Text

newtype ConstrainDouble = ConstrainDouble { unConstrainDouble :: JSVal }

instance PToJSVal ConstrainDouble where
  pToJSVal = unConstrainDouble
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstrainDouble where
  pFromJSVal = ConstrainDouble
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstrainDouble where
  toJSVal = return . unConstrainDouble
  {-# INLINE toJSVal #-}

instance FromJSVal ConstrainDouble where
  fromJSVal v = fmap ConstrainDouble <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstrainDouble
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstrainDouble where
  makeObject = makeObject . unConstrainDouble

class (ToJSVal o) => IsConstrainDouble o

toConstrainDouble :: (MonadJSM m, IsConstrainDouble o) => o -> m ConstrainDouble
toConstrainDouble o = liftJSM (ConstrainDouble <$> toJSVal o)

instance IsConstrainDouble ConstrainDouble
instance IsConstrainDouble ConstrainDoubleRange
instance IsConstrainDouble Double

newtype ConstrainPoint2D = ConstrainPoint2D { unConstrainPoint2D :: JSVal }

instance PToJSVal ConstrainPoint2D where
  pToJSVal = unConstrainPoint2D
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstrainPoint2D where
  pFromJSVal = ConstrainPoint2D
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstrainPoint2D where
  toJSVal = return . unConstrainPoint2D
  {-# INLINE toJSVal #-}

instance FromJSVal ConstrainPoint2D where
  fromJSVal v = fmap ConstrainPoint2D <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstrainPoint2D
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstrainPoint2D where
  makeObject = makeObject . unConstrainPoint2D

class (ToJSVal o) => IsConstrainPoint2D o

toConstrainPoint2D :: (MonadJSM m, IsConstrainPoint2D o) => o -> m ConstrainPoint2D
toConstrainPoint2D o = liftJSM (ConstrainPoint2D <$> toJSVal o)

instance IsConstrainPoint2D ConstrainPoint2D
instance IsConstrainPoint2D ConstrainPoint2DParameters

newtype ConstrainULong = ConstrainULong { unConstrainULong :: JSVal }

instance PToJSVal ConstrainULong where
  pToJSVal = unConstrainULong
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstrainULong where
  pFromJSVal = ConstrainULong
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstrainULong where
  toJSVal = return . unConstrainULong
  {-# INLINE toJSVal #-}

instance FromJSVal ConstrainULong where
  fromJSVal v = fmap ConstrainULong <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstrainULong
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstrainULong where
  makeObject = makeObject . unConstrainULong

class (ToJSVal o) => IsConstrainULong o

toConstrainULong :: (MonadJSM m, IsConstrainULong o) => o -> m ConstrainULong
toConstrainULong o = liftJSM (ConstrainULong <$> toJSVal o)

instance IsConstrainULong ConstrainULong
instance IsConstrainULong ConstrainULongRange
instance IsConstrainULong Word

newtype CryptoKeyOrCryptoKeyPair = CryptoKeyOrCryptoKeyPair { unCryptoKeyOrCryptoKeyPair :: JSVal }

instance PToJSVal CryptoKeyOrCryptoKeyPair where
  pToJSVal = unCryptoKeyOrCryptoKeyPair
  {-# INLINE pToJSVal #-}

instance PFromJSVal CryptoKeyOrCryptoKeyPair where
  pFromJSVal = CryptoKeyOrCryptoKeyPair
  {-# INLINE pFromJSVal #-}

instance ToJSVal CryptoKeyOrCryptoKeyPair where
  toJSVal = return . unCryptoKeyOrCryptoKeyPair
  {-# INLINE toJSVal #-}

instance FromJSVal CryptoKeyOrCryptoKeyPair where
  fromJSVal v = fmap CryptoKeyOrCryptoKeyPair <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CryptoKeyOrCryptoKeyPair
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CryptoKeyOrCryptoKeyPair where
  makeObject = makeObject . unCryptoKeyOrCryptoKeyPair

class (ToJSVal o) => IsCryptoKeyOrCryptoKeyPair o

toCryptoKeyOrCryptoKeyPair :: (MonadJSM m, IsCryptoKeyOrCryptoKeyPair o) => o -> m CryptoKeyOrCryptoKeyPair
toCryptoKeyOrCryptoKeyPair o = liftJSM (CryptoKeyOrCryptoKeyPair <$> toJSVal o)

instance IsCryptoKeyOrCryptoKeyPair CryptoKeyOrCryptoKeyPair
instance IsCryptoKeyOrCryptoKeyPair CryptoKey
instance IsCryptoKeyOrCryptoKeyPair CryptoKeyPair

newtype CustomElementConstructorOrUndefined = CustomElementConstructorOrUndefined { unCustomElementConstructorOrUndefined :: JSVal }

instance PToJSVal CustomElementConstructorOrUndefined where
  pToJSVal = unCustomElementConstructorOrUndefined
  {-# INLINE pToJSVal #-}

instance PFromJSVal CustomElementConstructorOrUndefined where
  pFromJSVal = CustomElementConstructorOrUndefined
  {-# INLINE pFromJSVal #-}

instance ToJSVal CustomElementConstructorOrUndefined where
  toJSVal = return . unCustomElementConstructorOrUndefined
  {-# INLINE toJSVal #-}

instance FromJSVal CustomElementConstructorOrUndefined where
  fromJSVal v = fmap CustomElementConstructorOrUndefined <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CustomElementConstructorOrUndefined
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CustomElementConstructorOrUndefined where
  makeObject = makeObject . unCustomElementConstructorOrUndefined

class (ToJSVal o) => IsCustomElementConstructorOrUndefined o

toCustomElementConstructorOrUndefined :: (MonadJSM m, IsCustomElementConstructorOrUndefined o) => o -> m CustomElementConstructorOrUndefined
toCustomElementConstructorOrUndefined o = liftJSM (CustomElementConstructorOrUndefined <$> toJSVal o)

instance IsCustomElementConstructorOrUndefined CustomElementConstructorOrUndefined
instance IsCustomElementConstructorOrUndefined CustomElementConstructor

newtype DigitalCredentialProtocol = DigitalCredentialProtocol { unDigitalCredentialProtocol :: JSVal }

instance PToJSVal DigitalCredentialProtocol where
  pToJSVal = unDigitalCredentialProtocol
  {-# INLINE pToJSVal #-}

instance PFromJSVal DigitalCredentialProtocol where
  pFromJSVal = DigitalCredentialProtocol
  {-# INLINE pFromJSVal #-}

instance ToJSVal DigitalCredentialProtocol where
  toJSVal = return . unDigitalCredentialProtocol
  {-# INLINE toJSVal #-}

instance FromJSVal DigitalCredentialProtocol where
  fromJSVal v = fmap DigitalCredentialProtocol <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DigitalCredentialProtocol
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DigitalCredentialProtocol where
  makeObject = makeObject . unDigitalCredentialProtocol

class (ToJSVal o) => IsDigitalCredentialProtocol o

toDigitalCredentialProtocol :: (MonadJSM m, IsDigitalCredentialProtocol o) => o -> m DigitalCredentialProtocol
toDigitalCredentialProtocol o = liftJSM (DigitalCredentialProtocol <$> toJSVal o)

instance IsDigitalCredentialProtocol DigitalCredentialProtocol

newtype DocumentOrXMLHttpRequestBodyInit = DocumentOrXMLHttpRequestBodyInit { unDocumentOrXMLHttpRequestBodyInit :: JSVal }

instance PToJSVal DocumentOrXMLHttpRequestBodyInit where
  pToJSVal = unDocumentOrXMLHttpRequestBodyInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DocumentOrXMLHttpRequestBodyInit where
  pFromJSVal = DocumentOrXMLHttpRequestBodyInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DocumentOrXMLHttpRequestBodyInit where
  toJSVal = return . unDocumentOrXMLHttpRequestBodyInit
  {-# INLINE toJSVal #-}

instance FromJSVal DocumentOrXMLHttpRequestBodyInit where
  fromJSVal v = fmap DocumentOrXMLHttpRequestBodyInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DocumentOrXMLHttpRequestBodyInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DocumentOrXMLHttpRequestBodyInit where
  makeObject = makeObject . unDocumentOrXMLHttpRequestBodyInit

class (ToJSVal o) => IsDocumentOrXMLHttpRequestBodyInit o

toDocumentOrXMLHttpRequestBodyInit :: (MonadJSM m, IsDocumentOrXMLHttpRequestBodyInit o) => o -> m DocumentOrXMLHttpRequestBodyInit
toDocumentOrXMLHttpRequestBodyInit o = liftJSM (DocumentOrXMLHttpRequestBodyInit <$> toJSVal o)

instance IsDocumentOrXMLHttpRequestBodyInit DocumentOrXMLHttpRequestBodyInit
instance IsDocumentOrXMLHttpRequestBodyInit ArrayBuffer
instance IsDocumentOrXMLHttpRequestBodyInit ArrayBufferView
instance IsDocumentOrXMLHttpRequestBodyInit BigInt64Array
instance IsDocumentOrXMLHttpRequestBodyInit BigUint64Array
instance IsDocumentOrXMLHttpRequestBodyInit Blob
instance IsDocumentOrXMLHttpRequestBodyInit DataView
instance IsDocumentOrXMLHttpRequestBodyInit Document
instance IsDocumentOrXMLHttpRequestBodyInit File
instance IsDocumentOrXMLHttpRequestBodyInit Float16Array
instance IsDocumentOrXMLHttpRequestBodyInit Float32Array
instance IsDocumentOrXMLHttpRequestBodyInit Float64Array
instance IsDocumentOrXMLHttpRequestBodyInit FormData
instance IsDocumentOrXMLHttpRequestBodyInit Int16Array
instance IsDocumentOrXMLHttpRequestBodyInit Int32Array
instance IsDocumentOrXMLHttpRequestBodyInit Int8Array
instance IsDocumentOrXMLHttpRequestBodyInit JSString
instance IsDocumentOrXMLHttpRequestBodyInit String
instance IsDocumentOrXMLHttpRequestBodyInit T.Text
instance IsDocumentOrXMLHttpRequestBodyInit URLSearchParams
instance IsDocumentOrXMLHttpRequestBodyInit Uint16Array
instance IsDocumentOrXMLHttpRequestBodyInit Uint32Array
instance IsDocumentOrXMLHttpRequestBodyInit Uint8Array
instance IsDocumentOrXMLHttpRequestBodyInit Uint8ClampedArray
instance IsDocumentOrXMLHttpRequestBodyInit XMLDocument

newtype DoubleOrCSSNumericValueOrString = DoubleOrCSSNumericValueOrString { unDoubleOrCSSNumericValueOrString :: JSVal }

instance PToJSVal DoubleOrCSSNumericValueOrString where
  pToJSVal = unDoubleOrCSSNumericValueOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal DoubleOrCSSNumericValueOrString where
  pFromJSVal = DoubleOrCSSNumericValueOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal DoubleOrCSSNumericValueOrString where
  toJSVal = return . unDoubleOrCSSNumericValueOrString
  {-# INLINE toJSVal #-}

instance FromJSVal DoubleOrCSSNumericValueOrString where
  fromJSVal v = fmap DoubleOrCSSNumericValueOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DoubleOrCSSNumericValueOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DoubleOrCSSNumericValueOrString where
  makeObject = makeObject . unDoubleOrCSSNumericValueOrString

class (ToJSVal o) => IsDoubleOrCSSNumericValueOrString o

toDoubleOrCSSNumericValueOrString :: (MonadJSM m, IsDoubleOrCSSNumericValueOrString o) => o -> m DoubleOrCSSNumericValueOrString
toDoubleOrCSSNumericValueOrString o = liftJSM (DoubleOrCSSNumericValueOrString <$> toJSVal o)

instance IsDoubleOrCSSNumericValueOrString DoubleOrCSSNumericValueOrString
instance IsDoubleOrCSSNumericValueOrString CSSMathClamp
instance IsDoubleOrCSSNumericValueOrString CSSMathInvert
instance IsDoubleOrCSSNumericValueOrString CSSMathMax
instance IsDoubleOrCSSNumericValueOrString CSSMathMin
instance IsDoubleOrCSSNumericValueOrString CSSMathNegate
instance IsDoubleOrCSSNumericValueOrString CSSMathProduct
instance IsDoubleOrCSSNumericValueOrString CSSMathSum
instance IsDoubleOrCSSNumericValueOrString CSSMathValue
instance IsDoubleOrCSSNumericValueOrString CSSNumericValue
instance IsDoubleOrCSSNumericValueOrString CSSUnitValue
instance IsDoubleOrCSSNumericValueOrString Double
instance IsDoubleOrCSSNumericValueOrString JSString
instance IsDoubleOrCSSNumericValueOrString String
instance IsDoubleOrCSSNumericValueOrString T.Text

newtype DoubleOrDOMPointInit = DoubleOrDOMPointInit { unDoubleOrDOMPointInit :: JSVal }

instance PToJSVal DoubleOrDOMPointInit where
  pToJSVal = unDoubleOrDOMPointInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DoubleOrDOMPointInit where
  pFromJSVal = DoubleOrDOMPointInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DoubleOrDOMPointInit where
  toJSVal = return . unDoubleOrDOMPointInit
  {-# INLINE toJSVal #-}

instance FromJSVal DoubleOrDOMPointInit where
  fromJSVal v = fmap DoubleOrDOMPointInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DoubleOrDOMPointInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DoubleOrDOMPointInit where
  makeObject = makeObject . unDoubleOrDOMPointInit

class (ToJSVal o) => IsDoubleOrDOMPointInit o

toDoubleOrDOMPointInit :: (MonadJSM m, IsDoubleOrDOMPointInit o) => o -> m DoubleOrDOMPointInit
toDoubleOrDOMPointInit o = liftJSM (DoubleOrDOMPointInit <$> toJSVal o)

instance IsDoubleOrDOMPointInit DoubleOrDOMPointInit
instance IsDoubleOrDOMPointInit DOMPointInit
instance IsDoubleOrDOMPointInit Double

newtype DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit = DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit { unDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit :: JSVal }

instance PToJSVal DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit where
  pToJSVal = unDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit where
  pFromJSVal = DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit where
  toJSVal = return . unDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit
  {-# INLINE toJSVal #-}

instance FromJSVal DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit where
  fromJSVal v = fmap DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit where
  makeObject = makeObject . unDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit

class (ToJSVal o) => IsDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit o

toDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit :: (MonadJSM m, IsDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit o) => o -> m DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit
toDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit o = liftJSM (DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit <$> toJSVal o)

instance IsDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit DoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit
instance IsDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit DOMPointInit
instance IsDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit Double

newtype DoubleOrKeyframeAnimationOptions = DoubleOrKeyframeAnimationOptions { unDoubleOrKeyframeAnimationOptions :: JSVal }

instance PToJSVal DoubleOrKeyframeAnimationOptions where
  pToJSVal = unDoubleOrKeyframeAnimationOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal DoubleOrKeyframeAnimationOptions where
  pFromJSVal = DoubleOrKeyframeAnimationOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal DoubleOrKeyframeAnimationOptions where
  toJSVal = return . unDoubleOrKeyframeAnimationOptions
  {-# INLINE toJSVal #-}

instance FromJSVal DoubleOrKeyframeAnimationOptions where
  fromJSVal v = fmap DoubleOrKeyframeAnimationOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DoubleOrKeyframeAnimationOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DoubleOrKeyframeAnimationOptions where
  makeObject = makeObject . unDoubleOrKeyframeAnimationOptions

class (ToJSVal o) => IsDoubleOrKeyframeAnimationOptions o

toDoubleOrKeyframeAnimationOptions :: (MonadJSM m, IsDoubleOrKeyframeAnimationOptions o) => o -> m DoubleOrKeyframeAnimationOptions
toDoubleOrKeyframeAnimationOptions o = liftJSM (DoubleOrKeyframeAnimationOptions <$> toJSVal o)

instance IsDoubleOrKeyframeAnimationOptions DoubleOrKeyframeAnimationOptions
instance IsDoubleOrKeyframeAnimationOptions Double
instance IsDoubleOrKeyframeAnimationOptions KeyframeAnimationOptions

newtype DoubleOrKeyframeEffectOptions = DoubleOrKeyframeEffectOptions { unDoubleOrKeyframeEffectOptions :: JSVal }

instance PToJSVal DoubleOrKeyframeEffectOptions where
  pToJSVal = unDoubleOrKeyframeEffectOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal DoubleOrKeyframeEffectOptions where
  pFromJSVal = DoubleOrKeyframeEffectOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal DoubleOrKeyframeEffectOptions where
  toJSVal = return . unDoubleOrKeyframeEffectOptions
  {-# INLINE toJSVal #-}

instance FromJSVal DoubleOrKeyframeEffectOptions where
  fromJSVal v = fmap DoubleOrKeyframeEffectOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DoubleOrKeyframeEffectOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DoubleOrKeyframeEffectOptions where
  makeObject = makeObject . unDoubleOrKeyframeEffectOptions

class (ToJSVal o) => IsDoubleOrKeyframeEffectOptions o

toDoubleOrKeyframeEffectOptions :: (MonadJSM m, IsDoubleOrKeyframeEffectOptions o) => o -> m DoubleOrKeyframeEffectOptions
toDoubleOrKeyframeEffectOptions o = liftJSM (DoubleOrKeyframeEffectOptions <$> toJSVal o)

instance IsDoubleOrKeyframeEffectOptions DoubleOrKeyframeEffectOptions
instance IsDoubleOrKeyframeEffectOptions Double
instance IsDoubleOrKeyframeEffectOptions KeyframeAnimationOptions
instance IsDoubleOrKeyframeEffectOptions KeyframeEffectOptions

newtype DoubleOrSequenceDouble = DoubleOrSequenceDouble { unDoubleOrSequenceDouble :: JSVal }

instance PToJSVal DoubleOrSequenceDouble where
  pToJSVal = unDoubleOrSequenceDouble
  {-# INLINE pToJSVal #-}

instance PFromJSVal DoubleOrSequenceDouble where
  pFromJSVal = DoubleOrSequenceDouble
  {-# INLINE pFromJSVal #-}

instance ToJSVal DoubleOrSequenceDouble where
  toJSVal = return . unDoubleOrSequenceDouble
  {-# INLINE toJSVal #-}

instance FromJSVal DoubleOrSequenceDouble where
  fromJSVal v = fmap DoubleOrSequenceDouble <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DoubleOrSequenceDouble
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DoubleOrSequenceDouble where
  makeObject = makeObject . unDoubleOrSequenceDouble

class (ToJSVal o) => IsDoubleOrSequenceDouble o

toDoubleOrSequenceDouble :: (MonadJSM m, IsDoubleOrSequenceDouble o) => o -> m DoubleOrSequenceDouble
toDoubleOrSequenceDouble o = liftJSM (DoubleOrSequenceDouble <$> toJSVal o)

instance IsDoubleOrSequenceDouble DoubleOrSequenceDouble
instance IsDoubleOrSequenceDouble Double

newtype DoubleOrString = DoubleOrString { unDoubleOrString :: JSVal }

instance PToJSVal DoubleOrString where
  pToJSVal = unDoubleOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal DoubleOrString where
  pFromJSVal = DoubleOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal DoubleOrString where
  toJSVal = return . unDoubleOrString
  {-# INLINE toJSVal #-}

instance FromJSVal DoubleOrString where
  fromJSVal v = fmap DoubleOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DoubleOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DoubleOrString where
  makeObject = makeObject . unDoubleOrString

class (ToJSVal o) => IsDoubleOrString o

toDoubleOrString :: (MonadJSM m, IsDoubleOrString o) => o -> m DoubleOrString
toDoubleOrString o = liftJSM (DoubleOrString <$> toJSVal o)

instance IsDoubleOrString DoubleOrString
instance IsDoubleOrString Double
instance IsDoubleOrString JSString
instance IsDoubleOrString String
instance IsDoubleOrString T.Text

newtype ElementOrDocument = ElementOrDocument { unElementOrDocument :: JSVal }

instance PToJSVal ElementOrDocument where
  pToJSVal = unElementOrDocument
  {-# INLINE pToJSVal #-}

instance PFromJSVal ElementOrDocument where
  pFromJSVal = ElementOrDocument
  {-# INLINE pFromJSVal #-}

instance ToJSVal ElementOrDocument where
  toJSVal = return . unElementOrDocument
  {-# INLINE toJSVal #-}

instance FromJSVal ElementOrDocument where
  fromJSVal v = fmap ElementOrDocument <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ElementOrDocument
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ElementOrDocument where
  makeObject = makeObject . unElementOrDocument

class (ToJSVal o) => IsElementOrDocument o

toElementOrDocument :: (MonadJSM m, IsElementOrDocument o) => o -> m ElementOrDocument
toElementOrDocument o = liftJSM (ElementOrDocument <$> toJSVal o)

instance IsElementOrDocument ElementOrDocument
instance IsElementOrDocument Document
instance IsElementOrDocument Element
instance IsElementOrDocument HTMLAnchorElement
instance IsElementOrDocument HTMLAreaElement
instance IsElementOrDocument HTMLAudioElement
instance IsElementOrDocument HTMLBRElement
instance IsElementOrDocument HTMLBaseElement
instance IsElementOrDocument HTMLBodyElement
instance IsElementOrDocument HTMLButtonElement
instance IsElementOrDocument HTMLCanvasElement
instance IsElementOrDocument HTMLDListElement
instance IsElementOrDocument HTMLDataElement
instance IsElementOrDocument HTMLDataListElement
instance IsElementOrDocument HTMLDetailsElement
instance IsElementOrDocument HTMLDialogElement
instance IsElementOrDocument HTMLDirectoryElement
instance IsElementOrDocument HTMLDivElement
instance IsElementOrDocument HTMLElement
instance IsElementOrDocument HTMLEmbedElement
instance IsElementOrDocument HTMLFieldSetElement
instance IsElementOrDocument HTMLFontElement
instance IsElementOrDocument HTMLFormElement
instance IsElementOrDocument HTMLFrameElement
instance IsElementOrDocument HTMLFrameSetElement
instance IsElementOrDocument HTMLHRElement
instance IsElementOrDocument HTMLHeadElement
instance IsElementOrDocument HTMLHeadingElement
instance IsElementOrDocument HTMLHtmlElement
instance IsElementOrDocument HTMLIFrameElement
instance IsElementOrDocument HTMLImageElement
instance IsElementOrDocument HTMLInputElement
instance IsElementOrDocument HTMLLIElement
instance IsElementOrDocument HTMLLabelElement
instance IsElementOrDocument HTMLLegendElement
instance IsElementOrDocument HTMLLinkElement
instance IsElementOrDocument HTMLMapElement
instance IsElementOrDocument HTMLMarqueeElement
instance IsElementOrDocument HTMLMediaElement
instance IsElementOrDocument HTMLMenuElement
instance IsElementOrDocument HTMLMetaElement
instance IsElementOrDocument HTMLMeterElement
instance IsElementOrDocument HTMLModElement
instance IsElementOrDocument HTMLOListElement
instance IsElementOrDocument HTMLObjectElement
instance IsElementOrDocument HTMLOptGroupElement
instance IsElementOrDocument HTMLOptionElement
instance IsElementOrDocument HTMLOutputElement
instance IsElementOrDocument HTMLParagraphElement
instance IsElementOrDocument HTMLParamElement
instance IsElementOrDocument HTMLPictureElement
instance IsElementOrDocument HTMLPreElement
instance IsElementOrDocument HTMLProgressElement
instance IsElementOrDocument HTMLQuoteElement
instance IsElementOrDocument HTMLScriptElement
instance IsElementOrDocument HTMLSelectElement
instance IsElementOrDocument HTMLSelectedContentElement
instance IsElementOrDocument HTMLSlotElement
instance IsElementOrDocument HTMLSourceElement
instance IsElementOrDocument HTMLSpanElement
instance IsElementOrDocument HTMLStyleElement
instance IsElementOrDocument HTMLTableCaptionElement
instance IsElementOrDocument HTMLTableCellElement
instance IsElementOrDocument HTMLTableColElement
instance IsElementOrDocument HTMLTableElement
instance IsElementOrDocument HTMLTableRowElement
instance IsElementOrDocument HTMLTableSectionElement
instance IsElementOrDocument HTMLTemplateElement
instance IsElementOrDocument HTMLTextAreaElement
instance IsElementOrDocument HTMLTimeElement
instance IsElementOrDocument HTMLTitleElement
instance IsElementOrDocument HTMLTrackElement
instance IsElementOrDocument HTMLUListElement
instance IsElementOrDocument HTMLUnknownElement
instance IsElementOrDocument HTMLVideoElement
instance IsElementOrDocument MathMLElement
instance IsElementOrDocument SVGAElement
instance IsElementOrDocument SVGAnimateElement
instance IsElementOrDocument SVGAnimateMotionElement
instance IsElementOrDocument SVGAnimateTransformElement
instance IsElementOrDocument SVGAnimationElement
instance IsElementOrDocument SVGCircleElement
instance IsElementOrDocument SVGClipPathElement
instance IsElementOrDocument SVGComponentTransferFunctionElement
instance IsElementOrDocument SVGDefsElement
instance IsElementOrDocument SVGDescElement
instance IsElementOrDocument SVGElement
instance IsElementOrDocument SVGEllipseElement
instance IsElementOrDocument SVGFEBlendElement
instance IsElementOrDocument SVGFEColorMatrixElement
instance IsElementOrDocument SVGFEComponentTransferElement
instance IsElementOrDocument SVGFECompositeElement
instance IsElementOrDocument SVGFEConvolveMatrixElement
instance IsElementOrDocument SVGFEDiffuseLightingElement
instance IsElementOrDocument SVGFEDisplacementMapElement
instance IsElementOrDocument SVGFEDistantLightElement
instance IsElementOrDocument SVGFEDropShadowElement
instance IsElementOrDocument SVGFEFloodElement
instance IsElementOrDocument SVGFEFuncAElement
instance IsElementOrDocument SVGFEFuncBElement
instance IsElementOrDocument SVGFEFuncGElement
instance IsElementOrDocument SVGFEFuncRElement
instance IsElementOrDocument SVGFEGaussianBlurElement
instance IsElementOrDocument SVGFEImageElement
instance IsElementOrDocument SVGFEMergeElement
instance IsElementOrDocument SVGFEMergeNodeElement
instance IsElementOrDocument SVGFEMorphologyElement
instance IsElementOrDocument SVGFEOffsetElement
instance IsElementOrDocument SVGFEPointLightElement
instance IsElementOrDocument SVGFESpecularLightingElement
instance IsElementOrDocument SVGFESpotLightElement
instance IsElementOrDocument SVGFETileElement
instance IsElementOrDocument SVGFETurbulenceElement
instance IsElementOrDocument SVGFilterElement
instance IsElementOrDocument SVGForeignObjectElement
instance IsElementOrDocument SVGGElement
instance IsElementOrDocument SVGGeometryElement
instance IsElementOrDocument SVGGradientElement
instance IsElementOrDocument SVGGraphicsElement
instance IsElementOrDocument SVGImageElement
instance IsElementOrDocument SVGLineElement
instance IsElementOrDocument SVGLinearGradientElement
instance IsElementOrDocument SVGMPathElement
instance IsElementOrDocument SVGMarkerElement
instance IsElementOrDocument SVGMaskElement
instance IsElementOrDocument SVGMetadataElement
instance IsElementOrDocument SVGPathElement
instance IsElementOrDocument SVGPatternElement
instance IsElementOrDocument SVGPolygonElement
instance IsElementOrDocument SVGPolylineElement
instance IsElementOrDocument SVGRadialGradientElement
instance IsElementOrDocument SVGRectElement
instance IsElementOrDocument SVGSVGElement
instance IsElementOrDocument SVGScriptElement
instance IsElementOrDocument SVGSetElement
instance IsElementOrDocument SVGStopElement
instance IsElementOrDocument SVGStyleElement
instance IsElementOrDocument SVGSwitchElement
instance IsElementOrDocument SVGSymbolElement
instance IsElementOrDocument SVGTSpanElement
instance IsElementOrDocument SVGTextContentElement
instance IsElementOrDocument SVGTextElement
instance IsElementOrDocument SVGTextPathElement
instance IsElementOrDocument SVGTextPositioningElement
instance IsElementOrDocument SVGTitleElement
instance IsElementOrDocument SVGUseElement
instance IsElementOrDocument SVGViewElement
instance IsElementOrDocument XMLDocument

newtype ElementOrProcessingInstruction = ElementOrProcessingInstruction { unElementOrProcessingInstruction :: JSVal }

instance PToJSVal ElementOrProcessingInstruction where
  pToJSVal = unElementOrProcessingInstruction
  {-# INLINE pToJSVal #-}

instance PFromJSVal ElementOrProcessingInstruction where
  pFromJSVal = ElementOrProcessingInstruction
  {-# INLINE pFromJSVal #-}

instance ToJSVal ElementOrProcessingInstruction where
  toJSVal = return . unElementOrProcessingInstruction
  {-# INLINE toJSVal #-}

instance FromJSVal ElementOrProcessingInstruction where
  fromJSVal v = fmap ElementOrProcessingInstruction <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ElementOrProcessingInstruction
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ElementOrProcessingInstruction where
  makeObject = makeObject . unElementOrProcessingInstruction

class (ToJSVal o) => IsElementOrProcessingInstruction o

toElementOrProcessingInstruction :: (MonadJSM m, IsElementOrProcessingInstruction o) => o -> m ElementOrProcessingInstruction
toElementOrProcessingInstruction o = liftJSM (ElementOrProcessingInstruction <$> toJSVal o)

instance IsElementOrProcessingInstruction ElementOrProcessingInstruction
instance IsElementOrProcessingInstruction Element
instance IsElementOrProcessingInstruction HTMLAnchorElement
instance IsElementOrProcessingInstruction HTMLAreaElement
instance IsElementOrProcessingInstruction HTMLAudioElement
instance IsElementOrProcessingInstruction HTMLBRElement
instance IsElementOrProcessingInstruction HTMLBaseElement
instance IsElementOrProcessingInstruction HTMLBodyElement
instance IsElementOrProcessingInstruction HTMLButtonElement
instance IsElementOrProcessingInstruction HTMLCanvasElement
instance IsElementOrProcessingInstruction HTMLDListElement
instance IsElementOrProcessingInstruction HTMLDataElement
instance IsElementOrProcessingInstruction HTMLDataListElement
instance IsElementOrProcessingInstruction HTMLDetailsElement
instance IsElementOrProcessingInstruction HTMLDialogElement
instance IsElementOrProcessingInstruction HTMLDirectoryElement
instance IsElementOrProcessingInstruction HTMLDivElement
instance IsElementOrProcessingInstruction HTMLElement
instance IsElementOrProcessingInstruction HTMLEmbedElement
instance IsElementOrProcessingInstruction HTMLFieldSetElement
instance IsElementOrProcessingInstruction HTMLFontElement
instance IsElementOrProcessingInstruction HTMLFormElement
instance IsElementOrProcessingInstruction HTMLFrameElement
instance IsElementOrProcessingInstruction HTMLFrameSetElement
instance IsElementOrProcessingInstruction HTMLHRElement
instance IsElementOrProcessingInstruction HTMLHeadElement
instance IsElementOrProcessingInstruction HTMLHeadingElement
instance IsElementOrProcessingInstruction HTMLHtmlElement
instance IsElementOrProcessingInstruction HTMLIFrameElement
instance IsElementOrProcessingInstruction HTMLImageElement
instance IsElementOrProcessingInstruction HTMLInputElement
instance IsElementOrProcessingInstruction HTMLLIElement
instance IsElementOrProcessingInstruction HTMLLabelElement
instance IsElementOrProcessingInstruction HTMLLegendElement
instance IsElementOrProcessingInstruction HTMLLinkElement
instance IsElementOrProcessingInstruction HTMLMapElement
instance IsElementOrProcessingInstruction HTMLMarqueeElement
instance IsElementOrProcessingInstruction HTMLMediaElement
instance IsElementOrProcessingInstruction HTMLMenuElement
instance IsElementOrProcessingInstruction HTMLMetaElement
instance IsElementOrProcessingInstruction HTMLMeterElement
instance IsElementOrProcessingInstruction HTMLModElement
instance IsElementOrProcessingInstruction HTMLOListElement
instance IsElementOrProcessingInstruction HTMLObjectElement
instance IsElementOrProcessingInstruction HTMLOptGroupElement
instance IsElementOrProcessingInstruction HTMLOptionElement
instance IsElementOrProcessingInstruction HTMLOutputElement
instance IsElementOrProcessingInstruction HTMLParagraphElement
instance IsElementOrProcessingInstruction HTMLParamElement
instance IsElementOrProcessingInstruction HTMLPictureElement
instance IsElementOrProcessingInstruction HTMLPreElement
instance IsElementOrProcessingInstruction HTMLProgressElement
instance IsElementOrProcessingInstruction HTMLQuoteElement
instance IsElementOrProcessingInstruction HTMLScriptElement
instance IsElementOrProcessingInstruction HTMLSelectElement
instance IsElementOrProcessingInstruction HTMLSelectedContentElement
instance IsElementOrProcessingInstruction HTMLSlotElement
instance IsElementOrProcessingInstruction HTMLSourceElement
instance IsElementOrProcessingInstruction HTMLSpanElement
instance IsElementOrProcessingInstruction HTMLStyleElement
instance IsElementOrProcessingInstruction HTMLTableCaptionElement
instance IsElementOrProcessingInstruction HTMLTableCellElement
instance IsElementOrProcessingInstruction HTMLTableColElement
instance IsElementOrProcessingInstruction HTMLTableElement
instance IsElementOrProcessingInstruction HTMLTableRowElement
instance IsElementOrProcessingInstruction HTMLTableSectionElement
instance IsElementOrProcessingInstruction HTMLTemplateElement
instance IsElementOrProcessingInstruction HTMLTextAreaElement
instance IsElementOrProcessingInstruction HTMLTimeElement
instance IsElementOrProcessingInstruction HTMLTitleElement
instance IsElementOrProcessingInstruction HTMLTrackElement
instance IsElementOrProcessingInstruction HTMLUListElement
instance IsElementOrProcessingInstruction HTMLUnknownElement
instance IsElementOrProcessingInstruction HTMLVideoElement
instance IsElementOrProcessingInstruction MathMLElement
instance IsElementOrProcessingInstruction ProcessingInstruction
instance IsElementOrProcessingInstruction SVGAElement
instance IsElementOrProcessingInstruction SVGAnimateElement
instance IsElementOrProcessingInstruction SVGAnimateMotionElement
instance IsElementOrProcessingInstruction SVGAnimateTransformElement
instance IsElementOrProcessingInstruction SVGAnimationElement
instance IsElementOrProcessingInstruction SVGCircleElement
instance IsElementOrProcessingInstruction SVGClipPathElement
instance IsElementOrProcessingInstruction SVGComponentTransferFunctionElement
instance IsElementOrProcessingInstruction SVGDefsElement
instance IsElementOrProcessingInstruction SVGDescElement
instance IsElementOrProcessingInstruction SVGElement
instance IsElementOrProcessingInstruction SVGEllipseElement
instance IsElementOrProcessingInstruction SVGFEBlendElement
instance IsElementOrProcessingInstruction SVGFEColorMatrixElement
instance IsElementOrProcessingInstruction SVGFEComponentTransferElement
instance IsElementOrProcessingInstruction SVGFECompositeElement
instance IsElementOrProcessingInstruction SVGFEConvolveMatrixElement
instance IsElementOrProcessingInstruction SVGFEDiffuseLightingElement
instance IsElementOrProcessingInstruction SVGFEDisplacementMapElement
instance IsElementOrProcessingInstruction SVGFEDistantLightElement
instance IsElementOrProcessingInstruction SVGFEDropShadowElement
instance IsElementOrProcessingInstruction SVGFEFloodElement
instance IsElementOrProcessingInstruction SVGFEFuncAElement
instance IsElementOrProcessingInstruction SVGFEFuncBElement
instance IsElementOrProcessingInstruction SVGFEFuncGElement
instance IsElementOrProcessingInstruction SVGFEFuncRElement
instance IsElementOrProcessingInstruction SVGFEGaussianBlurElement
instance IsElementOrProcessingInstruction SVGFEImageElement
instance IsElementOrProcessingInstruction SVGFEMergeElement
instance IsElementOrProcessingInstruction SVGFEMergeNodeElement
instance IsElementOrProcessingInstruction SVGFEMorphologyElement
instance IsElementOrProcessingInstruction SVGFEOffsetElement
instance IsElementOrProcessingInstruction SVGFEPointLightElement
instance IsElementOrProcessingInstruction SVGFESpecularLightingElement
instance IsElementOrProcessingInstruction SVGFESpotLightElement
instance IsElementOrProcessingInstruction SVGFETileElement
instance IsElementOrProcessingInstruction SVGFETurbulenceElement
instance IsElementOrProcessingInstruction SVGFilterElement
instance IsElementOrProcessingInstruction SVGForeignObjectElement
instance IsElementOrProcessingInstruction SVGGElement
instance IsElementOrProcessingInstruction SVGGeometryElement
instance IsElementOrProcessingInstruction SVGGradientElement
instance IsElementOrProcessingInstruction SVGGraphicsElement
instance IsElementOrProcessingInstruction SVGImageElement
instance IsElementOrProcessingInstruction SVGLineElement
instance IsElementOrProcessingInstruction SVGLinearGradientElement
instance IsElementOrProcessingInstruction SVGMPathElement
instance IsElementOrProcessingInstruction SVGMarkerElement
instance IsElementOrProcessingInstruction SVGMaskElement
instance IsElementOrProcessingInstruction SVGMetadataElement
instance IsElementOrProcessingInstruction SVGPathElement
instance IsElementOrProcessingInstruction SVGPatternElement
instance IsElementOrProcessingInstruction SVGPolygonElement
instance IsElementOrProcessingInstruction SVGPolylineElement
instance IsElementOrProcessingInstruction SVGRadialGradientElement
instance IsElementOrProcessingInstruction SVGRectElement
instance IsElementOrProcessingInstruction SVGSVGElement
instance IsElementOrProcessingInstruction SVGScriptElement
instance IsElementOrProcessingInstruction SVGSetElement
instance IsElementOrProcessingInstruction SVGStopElement
instance IsElementOrProcessingInstruction SVGStyleElement
instance IsElementOrProcessingInstruction SVGSwitchElement
instance IsElementOrProcessingInstruction SVGSymbolElement
instance IsElementOrProcessingInstruction SVGTSpanElement
instance IsElementOrProcessingInstruction SVGTextContentElement
instance IsElementOrProcessingInstruction SVGTextElement
instance IsElementOrProcessingInstruction SVGTextPathElement
instance IsElementOrProcessingInstruction SVGTextPositioningElement
instance IsElementOrProcessingInstruction SVGTitleElement
instance IsElementOrProcessingInstruction SVGUseElement
instance IsElementOrProcessingInstruction SVGViewElement

newtype ElementOrText = ElementOrText { unElementOrText :: JSVal }

instance PToJSVal ElementOrText where
  pToJSVal = unElementOrText
  {-# INLINE pToJSVal #-}

instance PFromJSVal ElementOrText where
  pFromJSVal = ElementOrText
  {-# INLINE pFromJSVal #-}

instance ToJSVal ElementOrText where
  toJSVal = return . unElementOrText
  {-# INLINE toJSVal #-}

instance FromJSVal ElementOrText where
  fromJSVal v = fmap ElementOrText <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ElementOrText
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ElementOrText where
  makeObject = makeObject . unElementOrText

class (ToJSVal o) => IsElementOrText o

toElementOrText :: (MonadJSM m, IsElementOrText o) => o -> m ElementOrText
toElementOrText o = liftJSM (ElementOrText <$> toJSVal o)

instance IsElementOrText ElementOrText
instance IsElementOrText CDATASection
instance IsElementOrText Element
instance IsElementOrText HTMLAnchorElement
instance IsElementOrText HTMLAreaElement
instance IsElementOrText HTMLAudioElement
instance IsElementOrText HTMLBRElement
instance IsElementOrText HTMLBaseElement
instance IsElementOrText HTMLBodyElement
instance IsElementOrText HTMLButtonElement
instance IsElementOrText HTMLCanvasElement
instance IsElementOrText HTMLDListElement
instance IsElementOrText HTMLDataElement
instance IsElementOrText HTMLDataListElement
instance IsElementOrText HTMLDetailsElement
instance IsElementOrText HTMLDialogElement
instance IsElementOrText HTMLDirectoryElement
instance IsElementOrText HTMLDivElement
instance IsElementOrText HTMLElement
instance IsElementOrText HTMLEmbedElement
instance IsElementOrText HTMLFieldSetElement
instance IsElementOrText HTMLFontElement
instance IsElementOrText HTMLFormElement
instance IsElementOrText HTMLFrameElement
instance IsElementOrText HTMLFrameSetElement
instance IsElementOrText HTMLHRElement
instance IsElementOrText HTMLHeadElement
instance IsElementOrText HTMLHeadingElement
instance IsElementOrText HTMLHtmlElement
instance IsElementOrText HTMLIFrameElement
instance IsElementOrText HTMLImageElement
instance IsElementOrText HTMLInputElement
instance IsElementOrText HTMLLIElement
instance IsElementOrText HTMLLabelElement
instance IsElementOrText HTMLLegendElement
instance IsElementOrText HTMLLinkElement
instance IsElementOrText HTMLMapElement
instance IsElementOrText HTMLMarqueeElement
instance IsElementOrText HTMLMediaElement
instance IsElementOrText HTMLMenuElement
instance IsElementOrText HTMLMetaElement
instance IsElementOrText HTMLMeterElement
instance IsElementOrText HTMLModElement
instance IsElementOrText HTMLOListElement
instance IsElementOrText HTMLObjectElement
instance IsElementOrText HTMLOptGroupElement
instance IsElementOrText HTMLOptionElement
instance IsElementOrText HTMLOutputElement
instance IsElementOrText HTMLParagraphElement
instance IsElementOrText HTMLParamElement
instance IsElementOrText HTMLPictureElement
instance IsElementOrText HTMLPreElement
instance IsElementOrText HTMLProgressElement
instance IsElementOrText HTMLQuoteElement
instance IsElementOrText HTMLScriptElement
instance IsElementOrText HTMLSelectElement
instance IsElementOrText HTMLSelectedContentElement
instance IsElementOrText HTMLSlotElement
instance IsElementOrText HTMLSourceElement
instance IsElementOrText HTMLSpanElement
instance IsElementOrText HTMLStyleElement
instance IsElementOrText HTMLTableCaptionElement
instance IsElementOrText HTMLTableCellElement
instance IsElementOrText HTMLTableColElement
instance IsElementOrText HTMLTableElement
instance IsElementOrText HTMLTableRowElement
instance IsElementOrText HTMLTableSectionElement
instance IsElementOrText HTMLTemplateElement
instance IsElementOrText HTMLTextAreaElement
instance IsElementOrText HTMLTimeElement
instance IsElementOrText HTMLTitleElement
instance IsElementOrText HTMLTrackElement
instance IsElementOrText HTMLUListElement
instance IsElementOrText HTMLUnknownElement
instance IsElementOrText HTMLVideoElement
instance IsElementOrText MathMLElement
instance IsElementOrText SVGAElement
instance IsElementOrText SVGAnimateElement
instance IsElementOrText SVGAnimateMotionElement
instance IsElementOrText SVGAnimateTransformElement
instance IsElementOrText SVGAnimationElement
instance IsElementOrText SVGCircleElement
instance IsElementOrText SVGClipPathElement
instance IsElementOrText SVGComponentTransferFunctionElement
instance IsElementOrText SVGDefsElement
instance IsElementOrText SVGDescElement
instance IsElementOrText SVGElement
instance IsElementOrText SVGEllipseElement
instance IsElementOrText SVGFEBlendElement
instance IsElementOrText SVGFEColorMatrixElement
instance IsElementOrText SVGFEComponentTransferElement
instance IsElementOrText SVGFECompositeElement
instance IsElementOrText SVGFEConvolveMatrixElement
instance IsElementOrText SVGFEDiffuseLightingElement
instance IsElementOrText SVGFEDisplacementMapElement
instance IsElementOrText SVGFEDistantLightElement
instance IsElementOrText SVGFEDropShadowElement
instance IsElementOrText SVGFEFloodElement
instance IsElementOrText SVGFEFuncAElement
instance IsElementOrText SVGFEFuncBElement
instance IsElementOrText SVGFEFuncGElement
instance IsElementOrText SVGFEFuncRElement
instance IsElementOrText SVGFEGaussianBlurElement
instance IsElementOrText SVGFEImageElement
instance IsElementOrText SVGFEMergeElement
instance IsElementOrText SVGFEMergeNodeElement
instance IsElementOrText SVGFEMorphologyElement
instance IsElementOrText SVGFEOffsetElement
instance IsElementOrText SVGFEPointLightElement
instance IsElementOrText SVGFESpecularLightingElement
instance IsElementOrText SVGFESpotLightElement
instance IsElementOrText SVGFETileElement
instance IsElementOrText SVGFETurbulenceElement
instance IsElementOrText SVGFilterElement
instance IsElementOrText SVGForeignObjectElement
instance IsElementOrText SVGGElement
instance IsElementOrText SVGGeometryElement
instance IsElementOrText SVGGradientElement
instance IsElementOrText SVGGraphicsElement
instance IsElementOrText SVGImageElement
instance IsElementOrText SVGLineElement
instance IsElementOrText SVGLinearGradientElement
instance IsElementOrText SVGMPathElement
instance IsElementOrText SVGMarkerElement
instance IsElementOrText SVGMaskElement
instance IsElementOrText SVGMetadataElement
instance IsElementOrText SVGPathElement
instance IsElementOrText SVGPatternElement
instance IsElementOrText SVGPolygonElement
instance IsElementOrText SVGPolylineElement
instance IsElementOrText SVGRadialGradientElement
instance IsElementOrText SVGRectElement
instance IsElementOrText SVGSVGElement
instance IsElementOrText SVGScriptElement
instance IsElementOrText SVGSetElement
instance IsElementOrText SVGStopElement
instance IsElementOrText SVGStyleElement
instance IsElementOrText SVGSwitchElement
instance IsElementOrText SVGSymbolElement
instance IsElementOrText SVGTSpanElement
instance IsElementOrText SVGTextContentElement
instance IsElementOrText SVGTextElement
instance IsElementOrText SVGTextPathElement
instance IsElementOrText SVGTextPositioningElement
instance IsElementOrText SVGTitleElement
instance IsElementOrText SVGUseElement
instance IsElementOrText SVGViewElement
instance IsElementOrText Text

newtype EventListenerOptionsOrBool = EventListenerOptionsOrBool { unEventListenerOptionsOrBool :: JSVal }

instance PToJSVal EventListenerOptionsOrBool where
  pToJSVal = unEventListenerOptionsOrBool
  {-# INLINE pToJSVal #-}

instance PFromJSVal EventListenerOptionsOrBool where
  pFromJSVal = EventListenerOptionsOrBool
  {-# INLINE pFromJSVal #-}

instance ToJSVal EventListenerOptionsOrBool where
  toJSVal = return . unEventListenerOptionsOrBool
  {-# INLINE toJSVal #-}

instance FromJSVal EventListenerOptionsOrBool where
  fromJSVal v = fmap EventListenerOptionsOrBool <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EventListenerOptionsOrBool
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EventListenerOptionsOrBool where
  makeObject = makeObject . unEventListenerOptionsOrBool

class (ToJSVal o) => IsEventListenerOptionsOrBool o

toEventListenerOptionsOrBool :: (MonadJSM m, IsEventListenerOptionsOrBool o) => o -> m EventListenerOptionsOrBool
toEventListenerOptionsOrBool o = liftJSM (EventListenerOptionsOrBool <$> toJSVal o)

instance IsEventListenerOptionsOrBool EventListenerOptionsOrBool
instance IsEventListenerOptionsOrBool AddEventListenerOptions
instance IsEventListenerOptionsOrBool Bool
instance IsEventListenerOptionsOrBool EventListenerOptions

newtype EventOrUndefined = EventOrUndefined { unEventOrUndefined :: JSVal }

instance PToJSVal EventOrUndefined where
  pToJSVal = unEventOrUndefined
  {-# INLINE pToJSVal #-}

instance PFromJSVal EventOrUndefined where
  pFromJSVal = EventOrUndefined
  {-# INLINE pFromJSVal #-}

instance ToJSVal EventOrUndefined where
  toJSVal = return . unEventOrUndefined
  {-# INLINE toJSVal #-}

instance FromJSVal EventOrUndefined where
  fromJSVal v = fmap EventOrUndefined <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EventOrUndefined
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EventOrUndefined where
  makeObject = makeObject . unEventOrUndefined

class (ToJSVal o) => IsEventOrUndefined o

toEventOrUndefined :: (MonadJSM m, IsEventOrUndefined o) => o -> m EventOrUndefined
toEventOrUndefined o = liftJSM (EventOrUndefined <$> toJSVal o)

instance IsEventOrUndefined EventOrUndefined
instance IsEventOrUndefined AnimationEvent
instance IsEventOrUndefined AnimationPlaybackEvent
instance IsEventOrUndefined AudioProcessingEvent
instance IsEventOrUndefined AutofillEvent
instance IsEventOrUndefined BeforeUnloadEvent
instance IsEventOrUndefined BlobEvent
instance IsEventOrUndefined ClipboardChangeEvent
instance IsEventOrUndefined ClipboardEvent
instance IsEventOrUndefined CloseEvent
instance IsEventOrUndefined CommandEvent
instance IsEventOrUndefined CompositionEvent
instance IsEventOrUndefined ContentVisibilityAutoStateChangeEvent
instance IsEventOrUndefined CookieChangeEvent
instance IsEventOrUndefined CustomEvent
instance IsEventOrUndefined DeviceChangeEvent
instance IsEventOrUndefined DeviceMotionEvent
instance IsEventOrUndefined DeviceOrientationEvent
instance IsEventOrUndefined DocumentPictureInPictureEvent
instance IsEventOrUndefined DragEvent
instance IsEventOrUndefined ErrorEvent
instance IsEventOrUndefined Event
instance IsEventOrUndefined ExtendableCookieChangeEvent
instance IsEventOrUndefined ExtendableEvent
instance IsEventOrUndefined ExtendableMessageEvent
instance IsEventOrUndefined FetchEvent
instance IsEventOrUndefined FocusEvent
instance IsEventOrUndefined FontFaceSetLoadEvent
instance IsEventOrUndefined FormDataEvent
instance IsEventOrUndefined GPUUncapturedErrorEvent
instance IsEventOrUndefined GamepadEvent
instance IsEventOrUndefined HashChangeEvent
instance IsEventOrUndefined IDBVersionChangeEvent
instance IsEventOrUndefined InputEvent
instance IsEventOrUndefined InstallEvent
instance IsEventOrUndefined KeyboardEvent
instance IsEventOrUndefined MIDIConnectionEvent
instance IsEventOrUndefined MIDIMessageEvent
instance IsEventOrUndefined MediaEncryptedEvent
instance IsEventOrUndefined MediaKeyMessageEvent
instance IsEventOrUndefined MediaQueryListEvent
instance IsEventOrUndefined MediaStreamTrackEvent
instance IsEventOrUndefined MessageEvent
instance IsEventOrUndefined MouseEvent
instance IsEventOrUndefined NavigateEvent
instance IsEventOrUndefined NavigationCurrentEntryChangeEvent
instance IsEventOrUndefined NavigationEvent
instance IsEventOrUndefined NotificationEvent
instance IsEventOrUndefined OfflineAudioCompletionEvent
instance IsEventOrUndefined PageRevealEvent
instance IsEventOrUndefined PageSwapEvent
instance IsEventOrUndefined PageTransitionEvent
instance IsEventOrUndefined PaymentMethodChangeEvent
instance IsEventOrUndefined PaymentRequestUpdateEvent
instance IsEventOrUndefined PictureInPictureEvent
instance IsEventOrUndefined PointerEvent
instance IsEventOrUndefined PopStateEvent
instance IsEventOrUndefined ProgressEvent
instance IsEventOrUndefined PromiseRejectionEvent
instance IsEventOrUndefined PushEvent
instance IsEventOrUndefined PushSubscriptionChangeEvent
instance IsEventOrUndefined RTCDTMFToneChangeEvent
instance IsEventOrUndefined RTCDataChannelEvent
instance IsEventOrUndefined RTCErrorEvent
instance IsEventOrUndefined RTCPeerConnectionIceErrorEvent
instance IsEventOrUndefined RTCPeerConnectionIceEvent
instance IsEventOrUndefined RTCTrackEvent
instance IsEventOrUndefined RTCTransformEvent
instance IsEventOrUndefined SecurityPolicyViolationEvent
instance IsEventOrUndefined SpeechRecognitionErrorEvent
instance IsEventOrUndefined SpeechRecognitionEvent
instance IsEventOrUndefined SpeechSynthesisErrorEvent
instance IsEventOrUndefined SpeechSynthesisEvent
instance IsEventOrUndefined StorageEvent
instance IsEventOrUndefined SubmitEvent
instance IsEventOrUndefined TaskPriorityChangeEvent
instance IsEventOrUndefined TextEvent
instance IsEventOrUndefined ToggleEvent
instance IsEventOrUndefined TouchEvent
instance IsEventOrUndefined TrackEvent
instance IsEventOrUndefined TransitionEvent
instance IsEventOrUndefined UIEvent
instance IsEventOrUndefined WebGLContextEvent
instance IsEventOrUndefined WheelEvent

newtype FileOrStringOrFormData = FileOrStringOrFormData { unFileOrStringOrFormData :: JSVal }

instance PToJSVal FileOrStringOrFormData where
  pToJSVal = unFileOrStringOrFormData
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileOrStringOrFormData where
  pFromJSVal = FileOrStringOrFormData
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileOrStringOrFormData where
  toJSVal = return . unFileOrStringOrFormData
  {-# INLINE toJSVal #-}

instance FromJSVal FileOrStringOrFormData where
  fromJSVal v = fmap FileOrStringOrFormData <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileOrStringOrFormData
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileOrStringOrFormData where
  makeObject = makeObject . unFileOrStringOrFormData

class (ToJSVal o) => IsFileOrStringOrFormData o

toFileOrStringOrFormData :: (MonadJSM m, IsFileOrStringOrFormData o) => o -> m FileOrStringOrFormData
toFileOrStringOrFormData o = liftJSM (FileOrStringOrFormData <$> toJSVal o)

instance IsFileOrStringOrFormData FileOrStringOrFormData
instance IsFileOrStringOrFormData File
instance IsFileOrStringOrFormData FormData
instance IsFileOrStringOrFormData JSString
instance IsFileOrStringOrFormData String
instance IsFileOrStringOrFormData T.Text

newtype FileSystemWriteChunkType = FileSystemWriteChunkType { unFileSystemWriteChunkType :: JSVal }

instance PToJSVal FileSystemWriteChunkType where
  pToJSVal = unFileSystemWriteChunkType
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemWriteChunkType where
  pFromJSVal = FileSystemWriteChunkType
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemWriteChunkType where
  toJSVal = return . unFileSystemWriteChunkType
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemWriteChunkType where
  fromJSVal v = fmap FileSystemWriteChunkType <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemWriteChunkType
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemWriteChunkType where
  makeObject = makeObject . unFileSystemWriteChunkType

class (ToJSVal o) => IsFileSystemWriteChunkType o

toFileSystemWriteChunkType :: (MonadJSM m, IsFileSystemWriteChunkType o) => o -> m FileSystemWriteChunkType
toFileSystemWriteChunkType o = liftJSM (FileSystemWriteChunkType <$> toJSVal o)

instance IsFileSystemWriteChunkType FileSystemWriteChunkType
instance IsFileSystemWriteChunkType ArrayBuffer
instance IsFileSystemWriteChunkType ArrayBufferView
instance IsFileSystemWriteChunkType BigInt64Array
instance IsFileSystemWriteChunkType BigUint64Array
instance IsFileSystemWriteChunkType Blob
instance IsFileSystemWriteChunkType DataView
instance IsFileSystemWriteChunkType File
instance IsFileSystemWriteChunkType Float16Array
instance IsFileSystemWriteChunkType Float32Array
instance IsFileSystemWriteChunkType Float64Array
instance IsFileSystemWriteChunkType Int16Array
instance IsFileSystemWriteChunkType Int32Array
instance IsFileSystemWriteChunkType Int8Array
instance IsFileSystemWriteChunkType JSString
instance IsFileSystemWriteChunkType String
instance IsFileSystemWriteChunkType T.Text
instance IsFileSystemWriteChunkType Uint16Array
instance IsFileSystemWriteChunkType Uint32Array
instance IsFileSystemWriteChunkType Uint8Array
instance IsFileSystemWriteChunkType Uint8ClampedArray
instance IsFileSystemWriteChunkType WriteParams

newtype Float32List = Float32List { unFloat32List :: JSVal }

instance PToJSVal Float32List where
  pToJSVal = unFloat32List
  {-# INLINE pToJSVal #-}

instance PFromJSVal Float32List where
  pFromJSVal = Float32List
  {-# INLINE pFromJSVal #-}

instance ToJSVal Float32List where
  toJSVal = return . unFloat32List
  {-# INLINE toJSVal #-}

instance FromJSVal Float32List where
  fromJSVal v = fmap Float32List <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Float32List
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Float32List where
  makeObject = makeObject . unFloat32List

class (ToJSVal o) => IsFloat32List o

toFloat32List :: (MonadJSM m, IsFloat32List o) => o -> m Float32List
toFloat32List o = liftJSM (Float32List <$> toJSVal o)

instance IsFloat32List Float32List
instance IsFloat32List Float32Array

newtype FormDataEntryValue = FormDataEntryValue { unFormDataEntryValue :: JSVal }

instance PToJSVal FormDataEntryValue where
  pToJSVal = unFormDataEntryValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal FormDataEntryValue where
  pFromJSVal = FormDataEntryValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal FormDataEntryValue where
  toJSVal = return . unFormDataEntryValue
  {-# INLINE toJSVal #-}

instance FromJSVal FormDataEntryValue where
  fromJSVal v = fmap FormDataEntryValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FormDataEntryValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FormDataEntryValue where
  makeObject = makeObject . unFormDataEntryValue

class (ToJSVal o) => IsFormDataEntryValue o

toFormDataEntryValue :: (MonadJSM m, IsFormDataEntryValue o) => o -> m FormDataEntryValue
toFormDataEntryValue o = liftJSM (FormDataEntryValue <$> toJSVal o)

instance IsFormDataEntryValue FormDataEntryValue
instance IsFormDataEntryValue File
instance IsFormDataEntryValue JSString
instance IsFormDataEntryValue String
instance IsFormDataEntryValue T.Text

newtype GPUBindingResource = GPUBindingResource { unGPUBindingResource :: JSVal }

instance PToJSVal GPUBindingResource where
  pToJSVal = unGPUBindingResource
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBindingResource where
  pFromJSVal = GPUBindingResource
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBindingResource where
  toJSVal = return . unGPUBindingResource
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBindingResource where
  fromJSVal v = fmap GPUBindingResource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBindingResource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBindingResource where
  makeObject = makeObject . unGPUBindingResource

class (ToJSVal o) => IsGPUBindingResource o

toGPUBindingResource :: (MonadJSM m, IsGPUBindingResource o) => o -> m GPUBindingResource
toGPUBindingResource o = liftJSM (GPUBindingResource <$> toJSVal o)

instance IsGPUBindingResource GPUBindingResource
instance IsGPUBindingResource GPUBuffer
instance IsGPUBindingResource GPUBufferBinding
instance IsGPUBindingResource GPUExternalTexture
instance IsGPUBindingResource GPUSampler
instance IsGPUBindingResource GPUTexture
instance IsGPUBindingResource GPUTextureView

newtype GPUColor = GPUColor { unGPUColor :: JSVal }

instance PToJSVal GPUColor where
  pToJSVal = unGPUColor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUColor where
  pFromJSVal = GPUColor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUColor where
  toJSVal = return . unGPUColor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUColor where
  fromJSVal v = fmap GPUColor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUColor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUColor where
  makeObject = makeObject . unGPUColor

class (ToJSVal o) => IsGPUColor o

toGPUColor :: (MonadJSM m, IsGPUColor o) => o -> m GPUColor
toGPUColor o = liftJSM (GPUColor <$> toJSVal o)

instance IsGPUColor GPUColor
instance IsGPUColor GPUColorDict

newtype GPUCopyExternalImageSource = GPUCopyExternalImageSource { unGPUCopyExternalImageSource :: JSVal }

instance PToJSVal GPUCopyExternalImageSource where
  pToJSVal = unGPUCopyExternalImageSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUCopyExternalImageSource where
  pFromJSVal = GPUCopyExternalImageSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUCopyExternalImageSource where
  toJSVal = return . unGPUCopyExternalImageSource
  {-# INLINE toJSVal #-}

instance FromJSVal GPUCopyExternalImageSource where
  fromJSVal v = fmap GPUCopyExternalImageSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUCopyExternalImageSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUCopyExternalImageSource where
  makeObject = makeObject . unGPUCopyExternalImageSource

class (ToJSVal o) => IsGPUCopyExternalImageSource o

toGPUCopyExternalImageSource :: (MonadJSM m, IsGPUCopyExternalImageSource o) => o -> m GPUCopyExternalImageSource
toGPUCopyExternalImageSource o = liftJSM (GPUCopyExternalImageSource <$> toJSVal o)

instance IsGPUCopyExternalImageSource GPUCopyExternalImageSource
instance IsGPUCopyExternalImageSource HTMLCanvasElement
instance IsGPUCopyExternalImageSource HTMLImageElement
instance IsGPUCopyExternalImageSource HTMLVideoElement
instance IsGPUCopyExternalImageSource ImageBitmap
instance IsGPUCopyExternalImageSource ImageData
instance IsGPUCopyExternalImageSource OffscreenCanvas
instance IsGPUCopyExternalImageSource VideoFrame

newtype GPUExtent3D = GPUExtent3D { unGPUExtent3D :: JSVal }

instance PToJSVal GPUExtent3D where
  pToJSVal = unGPUExtent3D
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUExtent3D where
  pFromJSVal = GPUExtent3D
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUExtent3D where
  toJSVal = return . unGPUExtent3D
  {-# INLINE toJSVal #-}

instance FromJSVal GPUExtent3D where
  fromJSVal v = fmap GPUExtent3D <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUExtent3D
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUExtent3D where
  makeObject = makeObject . unGPUExtent3D

class (ToJSVal o) => IsGPUExtent3D o

toGPUExtent3D :: (MonadJSM m, IsGPUExtent3D o) => o -> m GPUExtent3D
toGPUExtent3D o = liftJSM (GPUExtent3D <$> toJSVal o)

instance IsGPUExtent3D GPUExtent3D
instance IsGPUExtent3D GPUExtent3DDict

newtype GPUOrigin2D = GPUOrigin2D { unGPUOrigin2D :: JSVal }

instance PToJSVal GPUOrigin2D where
  pToJSVal = unGPUOrigin2D
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUOrigin2D where
  pFromJSVal = GPUOrigin2D
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUOrigin2D where
  toJSVal = return . unGPUOrigin2D
  {-# INLINE toJSVal #-}

instance FromJSVal GPUOrigin2D where
  fromJSVal v = fmap GPUOrigin2D <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUOrigin2D
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUOrigin2D where
  makeObject = makeObject . unGPUOrigin2D

class (ToJSVal o) => IsGPUOrigin2D o

toGPUOrigin2D :: (MonadJSM m, IsGPUOrigin2D o) => o -> m GPUOrigin2D
toGPUOrigin2D o = liftJSM (GPUOrigin2D <$> toJSVal o)

instance IsGPUOrigin2D GPUOrigin2D
instance IsGPUOrigin2D GPUOrigin2DDict

newtype GPUOrigin3D = GPUOrigin3D { unGPUOrigin3D :: JSVal }

instance PToJSVal GPUOrigin3D where
  pToJSVal = unGPUOrigin3D
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUOrigin3D where
  pFromJSVal = GPUOrigin3D
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUOrigin3D where
  toJSVal = return . unGPUOrigin3D
  {-# INLINE toJSVal #-}

instance FromJSVal GPUOrigin3D where
  fromJSVal v = fmap GPUOrigin3D <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUOrigin3D
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUOrigin3D where
  makeObject = makeObject . unGPUOrigin3D

class (ToJSVal o) => IsGPUOrigin3D o

toGPUOrigin3D :: (MonadJSM m, IsGPUOrigin3D o) => o -> m GPUOrigin3D
toGPUOrigin3D o = liftJSM (GPUOrigin3D <$> toJSVal o)

instance IsGPUOrigin3D GPUOrigin3D
instance IsGPUOrigin3D GPUOrigin3DDict

newtype GPUPipelineLayoutOrGPUAutoLayoutMode = GPUPipelineLayoutOrGPUAutoLayoutMode { unGPUPipelineLayoutOrGPUAutoLayoutMode :: JSVal }

instance PToJSVal GPUPipelineLayoutOrGPUAutoLayoutMode where
  pToJSVal = unGPUPipelineLayoutOrGPUAutoLayoutMode
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUPipelineLayoutOrGPUAutoLayoutMode where
  pFromJSVal = GPUPipelineLayoutOrGPUAutoLayoutMode
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUPipelineLayoutOrGPUAutoLayoutMode where
  toJSVal = return . unGPUPipelineLayoutOrGPUAutoLayoutMode
  {-# INLINE toJSVal #-}

instance FromJSVal GPUPipelineLayoutOrGPUAutoLayoutMode where
  fromJSVal v = fmap GPUPipelineLayoutOrGPUAutoLayoutMode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUPipelineLayoutOrGPUAutoLayoutMode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUPipelineLayoutOrGPUAutoLayoutMode where
  makeObject = makeObject . unGPUPipelineLayoutOrGPUAutoLayoutMode

class (ToJSVal o) => IsGPUPipelineLayoutOrGPUAutoLayoutMode o

toGPUPipelineLayoutOrGPUAutoLayoutMode :: (MonadJSM m, IsGPUPipelineLayoutOrGPUAutoLayoutMode o) => o -> m GPUPipelineLayoutOrGPUAutoLayoutMode
toGPUPipelineLayoutOrGPUAutoLayoutMode o = liftJSM (GPUPipelineLayoutOrGPUAutoLayoutMode <$> toJSVal o)

instance IsGPUPipelineLayoutOrGPUAutoLayoutMode GPUPipelineLayoutOrGPUAutoLayoutMode
instance IsGPUPipelineLayoutOrGPUAutoLayoutMode GPUPipelineLayout

newtype GPUSize64OrUndefined = GPUSize64OrUndefined { unGPUSize64OrUndefined :: JSVal }

instance PToJSVal GPUSize64OrUndefined where
  pToJSVal = unGPUSize64OrUndefined
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUSize64OrUndefined where
  pFromJSVal = GPUSize64OrUndefined
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUSize64OrUndefined where
  toJSVal = return . unGPUSize64OrUndefined
  {-# INLINE toJSVal #-}

instance FromJSVal GPUSize64OrUndefined where
  fromJSVal v = fmap GPUSize64OrUndefined <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUSize64OrUndefined
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUSize64OrUndefined where
  makeObject = makeObject . unGPUSize64OrUndefined

class (ToJSVal o) => IsGPUSize64OrUndefined o

toGPUSize64OrUndefined :: (MonadJSM m, IsGPUSize64OrUndefined o) => o -> m GPUSize64OrUndefined
toGPUSize64OrUndefined o = liftJSM (GPUSize64OrUndefined <$> toJSVal o)

instance IsGPUSize64OrUndefined GPUSize64OrUndefined
instance IsGPUSize64OrUndefined Word53

newtype GPUTextureOrGPUTextureView = GPUTextureOrGPUTextureView { unGPUTextureOrGPUTextureView :: JSVal }

instance PToJSVal GPUTextureOrGPUTextureView where
  pToJSVal = unGPUTextureOrGPUTextureView
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUTextureOrGPUTextureView where
  pFromJSVal = GPUTextureOrGPUTextureView
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUTextureOrGPUTextureView where
  toJSVal = return . unGPUTextureOrGPUTextureView
  {-# INLINE toJSVal #-}

instance FromJSVal GPUTextureOrGPUTextureView where
  fromJSVal v = fmap GPUTextureOrGPUTextureView <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUTextureOrGPUTextureView
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUTextureOrGPUTextureView where
  makeObject = makeObject . unGPUTextureOrGPUTextureView

class (ToJSVal o) => IsGPUTextureOrGPUTextureView o

toGPUTextureOrGPUTextureView :: (MonadJSM m, IsGPUTextureOrGPUTextureView o) => o -> m GPUTextureOrGPUTextureView
toGPUTextureOrGPUTextureView o = liftJSM (GPUTextureOrGPUTextureView <$> toJSVal o)

instance IsGPUTextureOrGPUTextureView GPUTextureOrGPUTextureView
instance IsGPUTextureOrGPUTextureView GPUTexture
instance IsGPUTextureOrGPUTextureView GPUTextureView

newtype HTMLCanvasElementOrOffscreenCanvas = HTMLCanvasElementOrOffscreenCanvas { unHTMLCanvasElementOrOffscreenCanvas :: JSVal }

instance PToJSVal HTMLCanvasElementOrOffscreenCanvas where
  pToJSVal = unHTMLCanvasElementOrOffscreenCanvas
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLCanvasElementOrOffscreenCanvas where
  pFromJSVal = HTMLCanvasElementOrOffscreenCanvas
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLCanvasElementOrOffscreenCanvas where
  toJSVal = return . unHTMLCanvasElementOrOffscreenCanvas
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLCanvasElementOrOffscreenCanvas where
  fromJSVal v = fmap HTMLCanvasElementOrOffscreenCanvas <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLCanvasElementOrOffscreenCanvas
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLCanvasElementOrOffscreenCanvas where
  makeObject = makeObject . unHTMLCanvasElementOrOffscreenCanvas

class (ToJSVal o) => IsHTMLCanvasElementOrOffscreenCanvas o

toHTMLCanvasElementOrOffscreenCanvas :: (MonadJSM m, IsHTMLCanvasElementOrOffscreenCanvas o) => o -> m HTMLCanvasElementOrOffscreenCanvas
toHTMLCanvasElementOrOffscreenCanvas o = liftJSM (HTMLCanvasElementOrOffscreenCanvas <$> toJSVal o)

instance IsHTMLCanvasElementOrOffscreenCanvas HTMLCanvasElementOrOffscreenCanvas
instance IsHTMLCanvasElementOrOffscreenCanvas HTMLCanvasElement
instance IsHTMLCanvasElementOrOffscreenCanvas OffscreenCanvas

newtype HTMLCollectionOrElement = HTMLCollectionOrElement { unHTMLCollectionOrElement :: JSVal }

instance PToJSVal HTMLCollectionOrElement where
  pToJSVal = unHTMLCollectionOrElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLCollectionOrElement where
  pFromJSVal = HTMLCollectionOrElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLCollectionOrElement where
  toJSVal = return . unHTMLCollectionOrElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLCollectionOrElement where
  fromJSVal v = fmap HTMLCollectionOrElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLCollectionOrElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLCollectionOrElement where
  makeObject = makeObject . unHTMLCollectionOrElement

class (ToJSVal o) => IsHTMLCollectionOrElement o

toHTMLCollectionOrElement :: (MonadJSM m, IsHTMLCollectionOrElement o) => o -> m HTMLCollectionOrElement
toHTMLCollectionOrElement o = liftJSM (HTMLCollectionOrElement <$> toJSVal o)

instance IsHTMLCollectionOrElement HTMLCollectionOrElement
instance IsHTMLCollectionOrElement Element
instance IsHTMLCollectionOrElement HTMLAnchorElement
instance IsHTMLCollectionOrElement HTMLAreaElement
instance IsHTMLCollectionOrElement HTMLAudioElement
instance IsHTMLCollectionOrElement HTMLBRElement
instance IsHTMLCollectionOrElement HTMLBaseElement
instance IsHTMLCollectionOrElement HTMLBodyElement
instance IsHTMLCollectionOrElement HTMLButtonElement
instance IsHTMLCollectionOrElement HTMLCanvasElement
instance IsHTMLCollectionOrElement HTMLCollection
instance IsHTMLCollectionOrElement HTMLDListElement
instance IsHTMLCollectionOrElement HTMLDataElement
instance IsHTMLCollectionOrElement HTMLDataListElement
instance IsHTMLCollectionOrElement HTMLDetailsElement
instance IsHTMLCollectionOrElement HTMLDialogElement
instance IsHTMLCollectionOrElement HTMLDirectoryElement
instance IsHTMLCollectionOrElement HTMLDivElement
instance IsHTMLCollectionOrElement HTMLElement
instance IsHTMLCollectionOrElement HTMLEmbedElement
instance IsHTMLCollectionOrElement HTMLFieldSetElement
instance IsHTMLCollectionOrElement HTMLFontElement
instance IsHTMLCollectionOrElement HTMLFormControlsCollection
instance IsHTMLCollectionOrElement HTMLFormElement
instance IsHTMLCollectionOrElement HTMLFrameElement
instance IsHTMLCollectionOrElement HTMLFrameSetElement
instance IsHTMLCollectionOrElement HTMLHRElement
instance IsHTMLCollectionOrElement HTMLHeadElement
instance IsHTMLCollectionOrElement HTMLHeadingElement
instance IsHTMLCollectionOrElement HTMLHtmlElement
instance IsHTMLCollectionOrElement HTMLIFrameElement
instance IsHTMLCollectionOrElement HTMLImageElement
instance IsHTMLCollectionOrElement HTMLInputElement
instance IsHTMLCollectionOrElement HTMLLIElement
instance IsHTMLCollectionOrElement HTMLLabelElement
instance IsHTMLCollectionOrElement HTMLLegendElement
instance IsHTMLCollectionOrElement HTMLLinkElement
instance IsHTMLCollectionOrElement HTMLMapElement
instance IsHTMLCollectionOrElement HTMLMarqueeElement
instance IsHTMLCollectionOrElement HTMLMediaElement
instance IsHTMLCollectionOrElement HTMLMenuElement
instance IsHTMLCollectionOrElement HTMLMetaElement
instance IsHTMLCollectionOrElement HTMLMeterElement
instance IsHTMLCollectionOrElement HTMLModElement
instance IsHTMLCollectionOrElement HTMLOListElement
instance IsHTMLCollectionOrElement HTMLObjectElement
instance IsHTMLCollectionOrElement HTMLOptGroupElement
instance IsHTMLCollectionOrElement HTMLOptionElement
instance IsHTMLCollectionOrElement HTMLOptionsCollection
instance IsHTMLCollectionOrElement HTMLOutputElement
instance IsHTMLCollectionOrElement HTMLParagraphElement
instance IsHTMLCollectionOrElement HTMLParamElement
instance IsHTMLCollectionOrElement HTMLPictureElement
instance IsHTMLCollectionOrElement HTMLPreElement
instance IsHTMLCollectionOrElement HTMLProgressElement
instance IsHTMLCollectionOrElement HTMLQuoteElement
instance IsHTMLCollectionOrElement HTMLScriptElement
instance IsHTMLCollectionOrElement HTMLSelectElement
instance IsHTMLCollectionOrElement HTMLSelectedContentElement
instance IsHTMLCollectionOrElement HTMLSlotElement
instance IsHTMLCollectionOrElement HTMLSourceElement
instance IsHTMLCollectionOrElement HTMLSpanElement
instance IsHTMLCollectionOrElement HTMLStyleElement
instance IsHTMLCollectionOrElement HTMLTableCaptionElement
instance IsHTMLCollectionOrElement HTMLTableCellElement
instance IsHTMLCollectionOrElement HTMLTableColElement
instance IsHTMLCollectionOrElement HTMLTableElement
instance IsHTMLCollectionOrElement HTMLTableRowElement
instance IsHTMLCollectionOrElement HTMLTableSectionElement
instance IsHTMLCollectionOrElement HTMLTemplateElement
instance IsHTMLCollectionOrElement HTMLTextAreaElement
instance IsHTMLCollectionOrElement HTMLTimeElement
instance IsHTMLCollectionOrElement HTMLTitleElement
instance IsHTMLCollectionOrElement HTMLTrackElement
instance IsHTMLCollectionOrElement HTMLUListElement
instance IsHTMLCollectionOrElement HTMLUnknownElement
instance IsHTMLCollectionOrElement HTMLVideoElement
instance IsHTMLCollectionOrElement MathMLElement
instance IsHTMLCollectionOrElement SVGAElement
instance IsHTMLCollectionOrElement SVGAnimateElement
instance IsHTMLCollectionOrElement SVGAnimateMotionElement
instance IsHTMLCollectionOrElement SVGAnimateTransformElement
instance IsHTMLCollectionOrElement SVGAnimationElement
instance IsHTMLCollectionOrElement SVGCircleElement
instance IsHTMLCollectionOrElement SVGClipPathElement
instance IsHTMLCollectionOrElement SVGComponentTransferFunctionElement
instance IsHTMLCollectionOrElement SVGDefsElement
instance IsHTMLCollectionOrElement SVGDescElement
instance IsHTMLCollectionOrElement SVGElement
instance IsHTMLCollectionOrElement SVGEllipseElement
instance IsHTMLCollectionOrElement SVGFEBlendElement
instance IsHTMLCollectionOrElement SVGFEColorMatrixElement
instance IsHTMLCollectionOrElement SVGFEComponentTransferElement
instance IsHTMLCollectionOrElement SVGFECompositeElement
instance IsHTMLCollectionOrElement SVGFEConvolveMatrixElement
instance IsHTMLCollectionOrElement SVGFEDiffuseLightingElement
instance IsHTMLCollectionOrElement SVGFEDisplacementMapElement
instance IsHTMLCollectionOrElement SVGFEDistantLightElement
instance IsHTMLCollectionOrElement SVGFEDropShadowElement
instance IsHTMLCollectionOrElement SVGFEFloodElement
instance IsHTMLCollectionOrElement SVGFEFuncAElement
instance IsHTMLCollectionOrElement SVGFEFuncBElement
instance IsHTMLCollectionOrElement SVGFEFuncGElement
instance IsHTMLCollectionOrElement SVGFEFuncRElement
instance IsHTMLCollectionOrElement SVGFEGaussianBlurElement
instance IsHTMLCollectionOrElement SVGFEImageElement
instance IsHTMLCollectionOrElement SVGFEMergeElement
instance IsHTMLCollectionOrElement SVGFEMergeNodeElement
instance IsHTMLCollectionOrElement SVGFEMorphologyElement
instance IsHTMLCollectionOrElement SVGFEOffsetElement
instance IsHTMLCollectionOrElement SVGFEPointLightElement
instance IsHTMLCollectionOrElement SVGFESpecularLightingElement
instance IsHTMLCollectionOrElement SVGFESpotLightElement
instance IsHTMLCollectionOrElement SVGFETileElement
instance IsHTMLCollectionOrElement SVGFETurbulenceElement
instance IsHTMLCollectionOrElement SVGFilterElement
instance IsHTMLCollectionOrElement SVGForeignObjectElement
instance IsHTMLCollectionOrElement SVGGElement
instance IsHTMLCollectionOrElement SVGGeometryElement
instance IsHTMLCollectionOrElement SVGGradientElement
instance IsHTMLCollectionOrElement SVGGraphicsElement
instance IsHTMLCollectionOrElement SVGImageElement
instance IsHTMLCollectionOrElement SVGLineElement
instance IsHTMLCollectionOrElement SVGLinearGradientElement
instance IsHTMLCollectionOrElement SVGMPathElement
instance IsHTMLCollectionOrElement SVGMarkerElement
instance IsHTMLCollectionOrElement SVGMaskElement
instance IsHTMLCollectionOrElement SVGMetadataElement
instance IsHTMLCollectionOrElement SVGPathElement
instance IsHTMLCollectionOrElement SVGPatternElement
instance IsHTMLCollectionOrElement SVGPolygonElement
instance IsHTMLCollectionOrElement SVGPolylineElement
instance IsHTMLCollectionOrElement SVGRadialGradientElement
instance IsHTMLCollectionOrElement SVGRectElement
instance IsHTMLCollectionOrElement SVGSVGElement
instance IsHTMLCollectionOrElement SVGScriptElement
instance IsHTMLCollectionOrElement SVGSetElement
instance IsHTMLCollectionOrElement SVGStopElement
instance IsHTMLCollectionOrElement SVGStyleElement
instance IsHTMLCollectionOrElement SVGSwitchElement
instance IsHTMLCollectionOrElement SVGSymbolElement
instance IsHTMLCollectionOrElement SVGTSpanElement
instance IsHTMLCollectionOrElement SVGTextContentElement
instance IsHTMLCollectionOrElement SVGTextElement
instance IsHTMLCollectionOrElement SVGTextPathElement
instance IsHTMLCollectionOrElement SVGTextPositioningElement
instance IsHTMLCollectionOrElement SVGTitleElement
instance IsHTMLCollectionOrElement SVGUseElement
instance IsHTMLCollectionOrElement SVGViewElement

newtype HTMLElementOrInt = HTMLElementOrInt { unHTMLElementOrInt :: JSVal }

instance PToJSVal HTMLElementOrInt where
  pToJSVal = unHTMLElementOrInt
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLElementOrInt where
  pFromJSVal = HTMLElementOrInt
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLElementOrInt where
  toJSVal = return . unHTMLElementOrInt
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLElementOrInt where
  fromJSVal v = fmap HTMLElementOrInt <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLElementOrInt
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLElementOrInt where
  makeObject = makeObject . unHTMLElementOrInt

class (ToJSVal o) => IsHTMLElementOrInt o

toHTMLElementOrInt :: (MonadJSM m, IsHTMLElementOrInt o) => o -> m HTMLElementOrInt
toHTMLElementOrInt o = liftJSM (HTMLElementOrInt <$> toJSVal o)

instance IsHTMLElementOrInt HTMLElementOrInt
instance IsHTMLElementOrInt HTMLAnchorElement
instance IsHTMLElementOrInt HTMLAreaElement
instance IsHTMLElementOrInt HTMLAudioElement
instance IsHTMLElementOrInt HTMLBRElement
instance IsHTMLElementOrInt HTMLBaseElement
instance IsHTMLElementOrInt HTMLBodyElement
instance IsHTMLElementOrInt HTMLButtonElement
instance IsHTMLElementOrInt HTMLCanvasElement
instance IsHTMLElementOrInt HTMLDListElement
instance IsHTMLElementOrInt HTMLDataElement
instance IsHTMLElementOrInt HTMLDataListElement
instance IsHTMLElementOrInt HTMLDetailsElement
instance IsHTMLElementOrInt HTMLDialogElement
instance IsHTMLElementOrInt HTMLDirectoryElement
instance IsHTMLElementOrInt HTMLDivElement
instance IsHTMLElementOrInt HTMLElement
instance IsHTMLElementOrInt HTMLEmbedElement
instance IsHTMLElementOrInt HTMLFieldSetElement
instance IsHTMLElementOrInt HTMLFontElement
instance IsHTMLElementOrInt HTMLFormElement
instance IsHTMLElementOrInt HTMLFrameElement
instance IsHTMLElementOrInt HTMLFrameSetElement
instance IsHTMLElementOrInt HTMLHRElement
instance IsHTMLElementOrInt HTMLHeadElement
instance IsHTMLElementOrInt HTMLHeadingElement
instance IsHTMLElementOrInt HTMLHtmlElement
instance IsHTMLElementOrInt HTMLIFrameElement
instance IsHTMLElementOrInt HTMLImageElement
instance IsHTMLElementOrInt HTMLInputElement
instance IsHTMLElementOrInt HTMLLIElement
instance IsHTMLElementOrInt HTMLLabelElement
instance IsHTMLElementOrInt HTMLLegendElement
instance IsHTMLElementOrInt HTMLLinkElement
instance IsHTMLElementOrInt HTMLMapElement
instance IsHTMLElementOrInt HTMLMarqueeElement
instance IsHTMLElementOrInt HTMLMediaElement
instance IsHTMLElementOrInt HTMLMenuElement
instance IsHTMLElementOrInt HTMLMetaElement
instance IsHTMLElementOrInt HTMLMeterElement
instance IsHTMLElementOrInt HTMLModElement
instance IsHTMLElementOrInt HTMLOListElement
instance IsHTMLElementOrInt HTMLObjectElement
instance IsHTMLElementOrInt HTMLOptGroupElement
instance IsHTMLElementOrInt HTMLOptionElement
instance IsHTMLElementOrInt HTMLOutputElement
instance IsHTMLElementOrInt HTMLParagraphElement
instance IsHTMLElementOrInt HTMLParamElement
instance IsHTMLElementOrInt HTMLPictureElement
instance IsHTMLElementOrInt HTMLPreElement
instance IsHTMLElementOrInt HTMLProgressElement
instance IsHTMLElementOrInt HTMLQuoteElement
instance IsHTMLElementOrInt HTMLScriptElement
instance IsHTMLElementOrInt HTMLSelectElement
instance IsHTMLElementOrInt HTMLSelectedContentElement
instance IsHTMLElementOrInt HTMLSlotElement
instance IsHTMLElementOrInt HTMLSourceElement
instance IsHTMLElementOrInt HTMLSpanElement
instance IsHTMLElementOrInt HTMLStyleElement
instance IsHTMLElementOrInt HTMLTableCaptionElement
instance IsHTMLElementOrInt HTMLTableCellElement
instance IsHTMLElementOrInt HTMLTableColElement
instance IsHTMLElementOrInt HTMLTableElement
instance IsHTMLElementOrInt HTMLTableRowElement
instance IsHTMLElementOrInt HTMLTableSectionElement
instance IsHTMLElementOrInt HTMLTemplateElement
instance IsHTMLElementOrInt HTMLTextAreaElement
instance IsHTMLElementOrInt HTMLTimeElement
instance IsHTMLElementOrInt HTMLTitleElement
instance IsHTMLElementOrInt HTMLTrackElement
instance IsHTMLElementOrInt HTMLUListElement
instance IsHTMLElementOrInt HTMLUnknownElement
instance IsHTMLElementOrInt HTMLVideoElement
instance IsHTMLElementOrInt Int

newtype HTMLOptionElementOrHTMLOptGroupElement = HTMLOptionElementOrHTMLOptGroupElement { unHTMLOptionElementOrHTMLOptGroupElement :: JSVal }

instance PToJSVal HTMLOptionElementOrHTMLOptGroupElement where
  pToJSVal = unHTMLOptionElementOrHTMLOptGroupElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLOptionElementOrHTMLOptGroupElement where
  pFromJSVal = HTMLOptionElementOrHTMLOptGroupElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLOptionElementOrHTMLOptGroupElement where
  toJSVal = return . unHTMLOptionElementOrHTMLOptGroupElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLOptionElementOrHTMLOptGroupElement where
  fromJSVal v = fmap HTMLOptionElementOrHTMLOptGroupElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLOptionElementOrHTMLOptGroupElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLOptionElementOrHTMLOptGroupElement where
  makeObject = makeObject . unHTMLOptionElementOrHTMLOptGroupElement

class (ToJSVal o) => IsHTMLOptionElementOrHTMLOptGroupElement o

toHTMLOptionElementOrHTMLOptGroupElement :: (MonadJSM m, IsHTMLOptionElementOrHTMLOptGroupElement o) => o -> m HTMLOptionElementOrHTMLOptGroupElement
toHTMLOptionElementOrHTMLOptGroupElement o = liftJSM (HTMLOptionElementOrHTMLOptGroupElement <$> toJSVal o)

instance IsHTMLOptionElementOrHTMLOptGroupElement HTMLOptionElementOrHTMLOptGroupElement
instance IsHTMLOptionElementOrHTMLOptGroupElement HTMLOptGroupElement
instance IsHTMLOptionElementOrHTMLOptGroupElement HTMLOptionElement

newtype HTMLOrSVGScriptElement = HTMLOrSVGScriptElement { unHTMLOrSVGScriptElement :: JSVal }

instance PToJSVal HTMLOrSVGScriptElement where
  pToJSVal = unHTMLOrSVGScriptElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLOrSVGScriptElement where
  pFromJSVal = HTMLOrSVGScriptElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLOrSVGScriptElement where
  toJSVal = return . unHTMLOrSVGScriptElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLOrSVGScriptElement where
  fromJSVal v = fmap HTMLOrSVGScriptElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLOrSVGScriptElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLOrSVGScriptElement where
  makeObject = makeObject . unHTMLOrSVGScriptElement

class (ToJSVal o) => IsHTMLOrSVGScriptElement o

toHTMLOrSVGScriptElement :: (MonadJSM m, IsHTMLOrSVGScriptElement o) => o -> m HTMLOrSVGScriptElement
toHTMLOrSVGScriptElement o = liftJSM (HTMLOrSVGScriptElement <$> toJSVal o)

instance IsHTMLOrSVGScriptElement HTMLOrSVGScriptElement
instance IsHTMLOrSVGScriptElement HTMLScriptElement
instance IsHTMLOrSVGScriptElement SVGScriptElement

newtype HTMLVideoElementOrVideoFrame = HTMLVideoElementOrVideoFrame { unHTMLVideoElementOrVideoFrame :: JSVal }

instance PToJSVal HTMLVideoElementOrVideoFrame where
  pToJSVal = unHTMLVideoElementOrVideoFrame
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLVideoElementOrVideoFrame where
  pFromJSVal = HTMLVideoElementOrVideoFrame
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLVideoElementOrVideoFrame where
  toJSVal = return . unHTMLVideoElementOrVideoFrame
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLVideoElementOrVideoFrame where
  fromJSVal v = fmap HTMLVideoElementOrVideoFrame <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLVideoElementOrVideoFrame
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLVideoElementOrVideoFrame where
  makeObject = makeObject . unHTMLVideoElementOrVideoFrame

class (ToJSVal o) => IsHTMLVideoElementOrVideoFrame o

toHTMLVideoElementOrVideoFrame :: (MonadJSM m, IsHTMLVideoElementOrVideoFrame o) => o -> m HTMLVideoElementOrVideoFrame
toHTMLVideoElementOrVideoFrame o = liftJSM (HTMLVideoElementOrVideoFrame <$> toJSVal o)

instance IsHTMLVideoElementOrVideoFrame HTMLVideoElementOrVideoFrame
instance IsHTMLVideoElementOrVideoFrame HTMLVideoElement
instance IsHTMLVideoElementOrVideoFrame VideoFrame

newtype HeadersInit = HeadersInit { unHeadersInit :: JSVal }

instance PToJSVal HeadersInit where
  pToJSVal = unHeadersInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal HeadersInit where
  pFromJSVal = HeadersInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal HeadersInit where
  toJSVal = return . unHeadersInit
  {-# INLINE toJSVal #-}

instance FromJSVal HeadersInit where
  fromJSVal v = fmap HeadersInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HeadersInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HeadersInit where
  makeObject = makeObject . unHeadersInit

class (ToJSVal o) => IsHeadersInit o

toHeadersInit :: (MonadJSM m, IsHeadersInit o) => o -> m HeadersInit
toHeadersInit o = liftJSM (HeadersInit <$> toJSVal o)

instance IsHeadersInit HeadersInit

newtype IDBObjectStoreOrIDBIndex = IDBObjectStoreOrIDBIndex { unIDBObjectStoreOrIDBIndex :: JSVal }

instance PToJSVal IDBObjectStoreOrIDBIndex where
  pToJSVal = unIDBObjectStoreOrIDBIndex
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBObjectStoreOrIDBIndex where
  pFromJSVal = IDBObjectStoreOrIDBIndex
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBObjectStoreOrIDBIndex where
  toJSVal = return . unIDBObjectStoreOrIDBIndex
  {-# INLINE toJSVal #-}

instance FromJSVal IDBObjectStoreOrIDBIndex where
  fromJSVal v = fmap IDBObjectStoreOrIDBIndex <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBObjectStoreOrIDBIndex
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBObjectStoreOrIDBIndex where
  makeObject = makeObject . unIDBObjectStoreOrIDBIndex

class (ToJSVal o) => IsIDBObjectStoreOrIDBIndex o

toIDBObjectStoreOrIDBIndex :: (MonadJSM m, IsIDBObjectStoreOrIDBIndex o) => o -> m IDBObjectStoreOrIDBIndex
toIDBObjectStoreOrIDBIndex o = liftJSM (IDBObjectStoreOrIDBIndex <$> toJSVal o)

instance IsIDBObjectStoreOrIDBIndex IDBObjectStoreOrIDBIndex
instance IsIDBObjectStoreOrIDBIndex IDBIndex
instance IsIDBObjectStoreOrIDBIndex IDBObjectStore

newtype IDBObjectStoreOrIDBIndexOrIDBCursor = IDBObjectStoreOrIDBIndexOrIDBCursor { unIDBObjectStoreOrIDBIndexOrIDBCursor :: JSVal }

instance PToJSVal IDBObjectStoreOrIDBIndexOrIDBCursor where
  pToJSVal = unIDBObjectStoreOrIDBIndexOrIDBCursor
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBObjectStoreOrIDBIndexOrIDBCursor where
  pFromJSVal = IDBObjectStoreOrIDBIndexOrIDBCursor
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBObjectStoreOrIDBIndexOrIDBCursor where
  toJSVal = return . unIDBObjectStoreOrIDBIndexOrIDBCursor
  {-# INLINE toJSVal #-}

instance FromJSVal IDBObjectStoreOrIDBIndexOrIDBCursor where
  fromJSVal v = fmap IDBObjectStoreOrIDBIndexOrIDBCursor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBObjectStoreOrIDBIndexOrIDBCursor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBObjectStoreOrIDBIndexOrIDBCursor where
  makeObject = makeObject . unIDBObjectStoreOrIDBIndexOrIDBCursor

class (ToJSVal o) => IsIDBObjectStoreOrIDBIndexOrIDBCursor o

toIDBObjectStoreOrIDBIndexOrIDBCursor :: (MonadJSM m, IsIDBObjectStoreOrIDBIndexOrIDBCursor o) => o -> m IDBObjectStoreOrIDBIndexOrIDBCursor
toIDBObjectStoreOrIDBIndexOrIDBCursor o = liftJSM (IDBObjectStoreOrIDBIndexOrIDBCursor <$> toJSVal o)

instance IsIDBObjectStoreOrIDBIndexOrIDBCursor IDBObjectStoreOrIDBIndexOrIDBCursor
instance IsIDBObjectStoreOrIDBIndexOrIDBCursor IDBCursor
instance IsIDBObjectStoreOrIDBIndexOrIDBCursor IDBCursorWithValue
instance IsIDBObjectStoreOrIDBIndexOrIDBCursor IDBIndex
instance IsIDBObjectStoreOrIDBIndexOrIDBCursor IDBObjectStore

newtype ImageBufferSource = ImageBufferSource { unImageBufferSource :: JSVal }

instance PToJSVal ImageBufferSource where
  pToJSVal = unImageBufferSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageBufferSource where
  pFromJSVal = ImageBufferSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageBufferSource where
  toJSVal = return . unImageBufferSource
  {-# INLINE toJSVal #-}

instance FromJSVal ImageBufferSource where
  fromJSVal v = fmap ImageBufferSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageBufferSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageBufferSource where
  makeObject = makeObject . unImageBufferSource

class (ToJSVal o) => IsImageBufferSource o

toImageBufferSource :: (MonadJSM m, IsImageBufferSource o) => o -> m ImageBufferSource
toImageBufferSource o = liftJSM (ImageBufferSource <$> toJSVal o)

instance IsImageBufferSource ImageBufferSource
instance IsImageBufferSource ArrayBuffer
instance IsImageBufferSource ArrayBufferView
instance IsImageBufferSource BigInt64Array
instance IsImageBufferSource BigUint64Array
instance IsImageBufferSource DataView
instance IsImageBufferSource Float16Array
instance IsImageBufferSource Float32Array
instance IsImageBufferSource Float64Array
instance IsImageBufferSource Int16Array
instance IsImageBufferSource Int32Array
instance IsImageBufferSource Int8Array
instance IsImageBufferSource ReadableStream
instance IsImageBufferSource SharedArrayBuffer
instance IsImageBufferSource Uint16Array
instance IsImageBufferSource Uint32Array
instance IsImageBufferSource Uint8Array
instance IsImageBufferSource Uint8ClampedArray
instance IsImageBufferSource WebTransportReceiveStream

newtype ImageDataArray = ImageDataArray { unImageDataArray :: JSVal }

instance PToJSVal ImageDataArray where
  pToJSVal = unImageDataArray
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageDataArray where
  pFromJSVal = ImageDataArray
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageDataArray where
  toJSVal = return . unImageDataArray
  {-# INLINE toJSVal #-}

instance FromJSVal ImageDataArray where
  fromJSVal v = fmap ImageDataArray <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageDataArray
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageDataArray where
  makeObject = makeObject . unImageDataArray

class (ToJSVal o) => IsImageDataArray o

toImageDataArray :: (MonadJSM m, IsImageDataArray o) => o -> m ImageDataArray
toImageDataArray o = liftJSM (ImageDataArray <$> toJSVal o)

instance IsImageDataArray ImageDataArray
instance IsImageDataArray Float16Array
instance IsImageDataArray Uint8ClampedArray

newtype Int32ArrayOrSequenceGLint = Int32ArrayOrSequenceGLint { unInt32ArrayOrSequenceGLint :: JSVal }

instance PToJSVal Int32ArrayOrSequenceGLint where
  pToJSVal = unInt32ArrayOrSequenceGLint
  {-# INLINE pToJSVal #-}

instance PFromJSVal Int32ArrayOrSequenceGLint where
  pFromJSVal = Int32ArrayOrSequenceGLint
  {-# INLINE pFromJSVal #-}

instance ToJSVal Int32ArrayOrSequenceGLint where
  toJSVal = return . unInt32ArrayOrSequenceGLint
  {-# INLINE toJSVal #-}

instance FromJSVal Int32ArrayOrSequenceGLint where
  fromJSVal v = fmap Int32ArrayOrSequenceGLint <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Int32ArrayOrSequenceGLint
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Int32ArrayOrSequenceGLint where
  makeObject = makeObject . unInt32ArrayOrSequenceGLint

class (ToJSVal o) => IsInt32ArrayOrSequenceGLint o

toInt32ArrayOrSequenceGLint :: (MonadJSM m, IsInt32ArrayOrSequenceGLint o) => o -> m Int32ArrayOrSequenceGLint
toInt32ArrayOrSequenceGLint o = liftJSM (Int32ArrayOrSequenceGLint <$> toJSVal o)

instance IsInt32ArrayOrSequenceGLint Int32ArrayOrSequenceGLint
instance IsInt32ArrayOrSequenceGLint Int32Array

newtype Int32ArrayOrSequenceGLsizei = Int32ArrayOrSequenceGLsizei { unInt32ArrayOrSequenceGLsizei :: JSVal }

instance PToJSVal Int32ArrayOrSequenceGLsizei where
  pToJSVal = unInt32ArrayOrSequenceGLsizei
  {-# INLINE pToJSVal #-}

instance PFromJSVal Int32ArrayOrSequenceGLsizei where
  pFromJSVal = Int32ArrayOrSequenceGLsizei
  {-# INLINE pFromJSVal #-}

instance ToJSVal Int32ArrayOrSequenceGLsizei where
  toJSVal = return . unInt32ArrayOrSequenceGLsizei
  {-# INLINE toJSVal #-}

instance FromJSVal Int32ArrayOrSequenceGLsizei where
  fromJSVal v = fmap Int32ArrayOrSequenceGLsizei <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Int32ArrayOrSequenceGLsizei
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Int32ArrayOrSequenceGLsizei where
  makeObject = makeObject . unInt32ArrayOrSequenceGLsizei

class (ToJSVal o) => IsInt32ArrayOrSequenceGLsizei o

toInt32ArrayOrSequenceGLsizei :: (MonadJSM m, IsInt32ArrayOrSequenceGLsizei o) => o -> m Int32ArrayOrSequenceGLsizei
toInt32ArrayOrSequenceGLsizei o = liftJSM (Int32ArrayOrSequenceGLsizei <$> toJSVal o)

instance IsInt32ArrayOrSequenceGLsizei Int32ArrayOrSequenceGLsizei
instance IsInt32ArrayOrSequenceGLsizei Int32Array

newtype Int32List = Int32List { unInt32List :: JSVal }

instance PToJSVal Int32List where
  pToJSVal = unInt32List
  {-# INLINE pToJSVal #-}

instance PFromJSVal Int32List where
  pFromJSVal = Int32List
  {-# INLINE pFromJSVal #-}

instance ToJSVal Int32List where
  toJSVal = return . unInt32List
  {-# INLINE toJSVal #-}

instance FromJSVal Int32List where
  fromJSVal v = fmap Int32List <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Int32List
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Int32List where
  makeObject = makeObject . unInt32List

class (ToJSVal o) => IsInt32List o

toInt32List :: (MonadJSM m, IsInt32List o) => o -> m Int32List
toInt32List o = liftJSM (Int32List <$> toJSVal o)

instance IsInt32List Int32List
instance IsInt32List Int32Array

newtype LineAndPositionSetting = LineAndPositionSetting { unLineAndPositionSetting :: JSVal }

instance PToJSVal LineAndPositionSetting where
  pToJSVal = unLineAndPositionSetting
  {-# INLINE pToJSVal #-}

instance PFromJSVal LineAndPositionSetting where
  pFromJSVal = LineAndPositionSetting
  {-# INLINE pFromJSVal #-}

instance ToJSVal LineAndPositionSetting where
  toJSVal = return . unLineAndPositionSetting
  {-# INLINE toJSVal #-}

instance FromJSVal LineAndPositionSetting where
  fromJSVal v = fmap LineAndPositionSetting <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . LineAndPositionSetting
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject LineAndPositionSetting where
  makeObject = makeObject . unLineAndPositionSetting

class (ToJSVal o) => IsLineAndPositionSetting o

toLineAndPositionSetting :: (MonadJSM m, IsLineAndPositionSetting o) => o -> m LineAndPositionSetting
toLineAndPositionSetting o = liftJSM (LineAndPositionSetting <$> toJSVal o)

instance IsLineAndPositionSetting LineAndPositionSetting
instance IsLineAndPositionSetting Double

newtype MediaKeyStatusOrUndefined = MediaKeyStatusOrUndefined { unMediaKeyStatusOrUndefined :: JSVal }

instance PToJSVal MediaKeyStatusOrUndefined where
  pToJSVal = unMediaKeyStatusOrUndefined
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaKeyStatusOrUndefined where
  pFromJSVal = MediaKeyStatusOrUndefined
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaKeyStatusOrUndefined where
  toJSVal = return . unMediaKeyStatusOrUndefined
  {-# INLINE toJSVal #-}

instance FromJSVal MediaKeyStatusOrUndefined where
  fromJSVal v = fmap MediaKeyStatusOrUndefined <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaKeyStatusOrUndefined
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaKeyStatusOrUndefined where
  makeObject = makeObject . unMediaKeyStatusOrUndefined

class (ToJSVal o) => IsMediaKeyStatusOrUndefined o

toMediaKeyStatusOrUndefined :: (MonadJSM m, IsMediaKeyStatusOrUndefined o) => o -> m MediaKeyStatusOrUndefined
toMediaKeyStatusOrUndefined o = liftJSM (MediaKeyStatusOrUndefined <$> toJSVal o)

instance IsMediaKeyStatusOrUndefined MediaKeyStatusOrUndefined

newtype MediaListOrString = MediaListOrString { unMediaListOrString :: JSVal }

instance PToJSVal MediaListOrString where
  pToJSVal = unMediaListOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaListOrString where
  pFromJSVal = MediaListOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaListOrString where
  toJSVal = return . unMediaListOrString
  {-# INLINE toJSVal #-}

instance FromJSVal MediaListOrString where
  fromJSVal v = fmap MediaListOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaListOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaListOrString where
  makeObject = makeObject . unMediaListOrString

class (ToJSVal o) => IsMediaListOrString o

toMediaListOrString :: (MonadJSM m, IsMediaListOrString o) => o -> m MediaListOrString
toMediaListOrString o = liftJSM (MediaListOrString <$> toJSVal o)

instance IsMediaListOrString MediaListOrString
instance IsMediaListOrString JSString
instance IsMediaListOrString MediaList
instance IsMediaListOrString String
instance IsMediaListOrString T.Text

newtype MediaProvider = MediaProvider { unMediaProvider :: JSVal }

instance PToJSVal MediaProvider where
  pToJSVal = unMediaProvider
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaProvider where
  pFromJSVal = MediaProvider
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaProvider where
  toJSVal = return . unMediaProvider
  {-# INLINE toJSVal #-}

instance FromJSVal MediaProvider where
  fromJSVal v = fmap MediaProvider <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaProvider
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaProvider where
  makeObject = makeObject . unMediaProvider

class (ToJSVal o) => IsMediaProvider o

toMediaProvider :: (MonadJSM m, IsMediaProvider o) => o -> m MediaProvider
toMediaProvider o = liftJSM (MediaProvider <$> toJSVal o)

instance IsMediaProvider MediaProvider
instance IsMediaProvider Blob
instance IsMediaProvider File
instance IsMediaProvider MediaSource
instance IsMediaProvider MediaStream

newtype MediaStreamTrackOrHandle = MediaStreamTrackOrHandle { unMediaStreamTrackOrHandle :: JSVal }

instance PToJSVal MediaStreamTrackOrHandle where
  pToJSVal = unMediaStreamTrackOrHandle
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaStreamTrackOrHandle where
  pFromJSVal = MediaStreamTrackOrHandle
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaStreamTrackOrHandle where
  toJSVal = return . unMediaStreamTrackOrHandle
  {-# INLINE toJSVal #-}

instance FromJSVal MediaStreamTrackOrHandle where
  fromJSVal v = fmap MediaStreamTrackOrHandle <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaStreamTrackOrHandle
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaStreamTrackOrHandle where
  makeObject = makeObject . unMediaStreamTrackOrHandle

class (ToJSVal o) => IsMediaStreamTrackOrHandle o

toMediaStreamTrackOrHandle :: (MonadJSM m, IsMediaStreamTrackOrHandle o) => o -> m MediaStreamTrackOrHandle
toMediaStreamTrackOrHandle o = liftJSM (MediaStreamTrackOrHandle <$> toJSVal o)

instance IsMediaStreamTrackOrHandle MediaStreamTrackOrHandle
instance IsMediaStreamTrackOrHandle CanvasCaptureMediaStreamTrack
instance IsMediaStreamTrackOrHandle MediaStreamTrack
instance IsMediaStreamTrackOrHandle MediaStreamTrackHandle

newtype MediaStreamTrackOrString = MediaStreamTrackOrString { unMediaStreamTrackOrString :: JSVal }

instance PToJSVal MediaStreamTrackOrString where
  pToJSVal = unMediaStreamTrackOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaStreamTrackOrString where
  pFromJSVal = MediaStreamTrackOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaStreamTrackOrString where
  toJSVal = return . unMediaStreamTrackOrString
  {-# INLINE toJSVal #-}

instance FromJSVal MediaStreamTrackOrString where
  fromJSVal v = fmap MediaStreamTrackOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaStreamTrackOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaStreamTrackOrString where
  makeObject = makeObject . unMediaStreamTrackOrString

class (ToJSVal o) => IsMediaStreamTrackOrString o

toMediaStreamTrackOrString :: (MonadJSM m, IsMediaStreamTrackOrString o) => o -> m MediaStreamTrackOrString
toMediaStreamTrackOrString o = liftJSM (MediaStreamTrackOrString <$> toJSVal o)

instance IsMediaStreamTrackOrString MediaStreamTrackOrString
instance IsMediaStreamTrackOrString CanvasCaptureMediaStreamTrack
instance IsMediaStreamTrackOrString JSString
instance IsMediaStreamTrackOrString MediaStreamTrack
instance IsMediaStreamTrackOrString String
instance IsMediaStreamTrackOrString T.Text

newtype MessageEventSource = MessageEventSource { unMessageEventSource :: JSVal }

instance PToJSVal MessageEventSource where
  pToJSVal = unMessageEventSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal MessageEventSource where
  pFromJSVal = MessageEventSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal MessageEventSource where
  toJSVal = return . unMessageEventSource
  {-# INLINE toJSVal #-}

instance FromJSVal MessageEventSource where
  fromJSVal v = fmap MessageEventSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MessageEventSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MessageEventSource where
  makeObject = makeObject . unMessageEventSource

class (ToJSVal o) => IsMessageEventSource o

toMessageEventSource :: (MonadJSM m, IsMessageEventSource o) => o -> m MessageEventSource
toMessageEventSource o = liftJSM (MessageEventSource <$> toJSVal o)

instance IsMessageEventSource MessageEventSource
instance IsMessageEventSource MessagePort
instance IsMessageEventSource ServiceWorker
instance IsMessageEventSource Window

newtype NodeOrString = NodeOrString { unNodeOrString :: JSVal }

instance PToJSVal NodeOrString where
  pToJSVal = unNodeOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal NodeOrString where
  pFromJSVal = NodeOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal NodeOrString where
  toJSVal = return . unNodeOrString
  {-# INLINE toJSVal #-}

instance FromJSVal NodeOrString where
  fromJSVal v = fmap NodeOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NodeOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NodeOrString where
  makeObject = makeObject . unNodeOrString

class (ToJSVal o) => IsNodeOrString o

toNodeOrString :: (MonadJSM m, IsNodeOrString o) => o -> m NodeOrString
toNodeOrString o = liftJSM (NodeOrString <$> toJSVal o)

instance IsNodeOrString NodeOrString
instance IsNodeOrString Attr
instance IsNodeOrString CDATASection
instance IsNodeOrString CharacterData
instance IsNodeOrString Comment
instance IsNodeOrString Document
instance IsNodeOrString DocumentFragment
instance IsNodeOrString DocumentType
instance IsNodeOrString Element
instance IsNodeOrString HTMLAnchorElement
instance IsNodeOrString HTMLAreaElement
instance IsNodeOrString HTMLAudioElement
instance IsNodeOrString HTMLBRElement
instance IsNodeOrString HTMLBaseElement
instance IsNodeOrString HTMLBodyElement
instance IsNodeOrString HTMLButtonElement
instance IsNodeOrString HTMLCanvasElement
instance IsNodeOrString HTMLDListElement
instance IsNodeOrString HTMLDataElement
instance IsNodeOrString HTMLDataListElement
instance IsNodeOrString HTMLDetailsElement
instance IsNodeOrString HTMLDialogElement
instance IsNodeOrString HTMLDirectoryElement
instance IsNodeOrString HTMLDivElement
instance IsNodeOrString HTMLElement
instance IsNodeOrString HTMLEmbedElement
instance IsNodeOrString HTMLFieldSetElement
instance IsNodeOrString HTMLFontElement
instance IsNodeOrString HTMLFormElement
instance IsNodeOrString HTMLFrameElement
instance IsNodeOrString HTMLFrameSetElement
instance IsNodeOrString HTMLHRElement
instance IsNodeOrString HTMLHeadElement
instance IsNodeOrString HTMLHeadingElement
instance IsNodeOrString HTMLHtmlElement
instance IsNodeOrString HTMLIFrameElement
instance IsNodeOrString HTMLImageElement
instance IsNodeOrString HTMLInputElement
instance IsNodeOrString HTMLLIElement
instance IsNodeOrString HTMLLabelElement
instance IsNodeOrString HTMLLegendElement
instance IsNodeOrString HTMLLinkElement
instance IsNodeOrString HTMLMapElement
instance IsNodeOrString HTMLMarqueeElement
instance IsNodeOrString HTMLMediaElement
instance IsNodeOrString HTMLMenuElement
instance IsNodeOrString HTMLMetaElement
instance IsNodeOrString HTMLMeterElement
instance IsNodeOrString HTMLModElement
instance IsNodeOrString HTMLOListElement
instance IsNodeOrString HTMLObjectElement
instance IsNodeOrString HTMLOptGroupElement
instance IsNodeOrString HTMLOptionElement
instance IsNodeOrString HTMLOutputElement
instance IsNodeOrString HTMLParagraphElement
instance IsNodeOrString HTMLParamElement
instance IsNodeOrString HTMLPictureElement
instance IsNodeOrString HTMLPreElement
instance IsNodeOrString HTMLProgressElement
instance IsNodeOrString HTMLQuoteElement
instance IsNodeOrString HTMLScriptElement
instance IsNodeOrString HTMLSelectElement
instance IsNodeOrString HTMLSelectedContentElement
instance IsNodeOrString HTMLSlotElement
instance IsNodeOrString HTMLSourceElement
instance IsNodeOrString HTMLSpanElement
instance IsNodeOrString HTMLStyleElement
instance IsNodeOrString HTMLTableCaptionElement
instance IsNodeOrString HTMLTableCellElement
instance IsNodeOrString HTMLTableColElement
instance IsNodeOrString HTMLTableElement
instance IsNodeOrString HTMLTableRowElement
instance IsNodeOrString HTMLTableSectionElement
instance IsNodeOrString HTMLTemplateElement
instance IsNodeOrString HTMLTextAreaElement
instance IsNodeOrString HTMLTimeElement
instance IsNodeOrString HTMLTitleElement
instance IsNodeOrString HTMLTrackElement
instance IsNodeOrString HTMLUListElement
instance IsNodeOrString HTMLUnknownElement
instance IsNodeOrString HTMLVideoElement
instance IsNodeOrString JSString
instance IsNodeOrString MathMLElement
instance IsNodeOrString Node
instance IsNodeOrString ProcessingInstruction
instance IsNodeOrString SVGAElement
instance IsNodeOrString SVGAnimateElement
instance IsNodeOrString SVGAnimateMotionElement
instance IsNodeOrString SVGAnimateTransformElement
instance IsNodeOrString SVGAnimationElement
instance IsNodeOrString SVGCircleElement
instance IsNodeOrString SVGClipPathElement
instance IsNodeOrString SVGComponentTransferFunctionElement
instance IsNodeOrString SVGDefsElement
instance IsNodeOrString SVGDescElement
instance IsNodeOrString SVGElement
instance IsNodeOrString SVGEllipseElement
instance IsNodeOrString SVGFEBlendElement
instance IsNodeOrString SVGFEColorMatrixElement
instance IsNodeOrString SVGFEComponentTransferElement
instance IsNodeOrString SVGFECompositeElement
instance IsNodeOrString SVGFEConvolveMatrixElement
instance IsNodeOrString SVGFEDiffuseLightingElement
instance IsNodeOrString SVGFEDisplacementMapElement
instance IsNodeOrString SVGFEDistantLightElement
instance IsNodeOrString SVGFEDropShadowElement
instance IsNodeOrString SVGFEFloodElement
instance IsNodeOrString SVGFEFuncAElement
instance IsNodeOrString SVGFEFuncBElement
instance IsNodeOrString SVGFEFuncGElement
instance IsNodeOrString SVGFEFuncRElement
instance IsNodeOrString SVGFEGaussianBlurElement
instance IsNodeOrString SVGFEImageElement
instance IsNodeOrString SVGFEMergeElement
instance IsNodeOrString SVGFEMergeNodeElement
instance IsNodeOrString SVGFEMorphologyElement
instance IsNodeOrString SVGFEOffsetElement
instance IsNodeOrString SVGFEPointLightElement
instance IsNodeOrString SVGFESpecularLightingElement
instance IsNodeOrString SVGFESpotLightElement
instance IsNodeOrString SVGFETileElement
instance IsNodeOrString SVGFETurbulenceElement
instance IsNodeOrString SVGFilterElement
instance IsNodeOrString SVGForeignObjectElement
instance IsNodeOrString SVGGElement
instance IsNodeOrString SVGGeometryElement
instance IsNodeOrString SVGGradientElement
instance IsNodeOrString SVGGraphicsElement
instance IsNodeOrString SVGImageElement
instance IsNodeOrString SVGLineElement
instance IsNodeOrString SVGLinearGradientElement
instance IsNodeOrString SVGMPathElement
instance IsNodeOrString SVGMarkerElement
instance IsNodeOrString SVGMaskElement
instance IsNodeOrString SVGMetadataElement
instance IsNodeOrString SVGPathElement
instance IsNodeOrString SVGPatternElement
instance IsNodeOrString SVGPolygonElement
instance IsNodeOrString SVGPolylineElement
instance IsNodeOrString SVGRadialGradientElement
instance IsNodeOrString SVGRectElement
instance IsNodeOrString SVGSVGElement
instance IsNodeOrString SVGScriptElement
instance IsNodeOrString SVGSetElement
instance IsNodeOrString SVGStopElement
instance IsNodeOrString SVGStyleElement
instance IsNodeOrString SVGSwitchElement
instance IsNodeOrString SVGSymbolElement
instance IsNodeOrString SVGTSpanElement
instance IsNodeOrString SVGTextContentElement
instance IsNodeOrString SVGTextElement
instance IsNodeOrString SVGTextPathElement
instance IsNodeOrString SVGTextPositioningElement
instance IsNodeOrString SVGTitleElement
instance IsNodeOrString SVGUseElement
instance IsNodeOrString SVGViewElement
instance IsNodeOrString ShadowRoot
instance IsNodeOrString String
instance IsNodeOrString T.Text
instance IsNodeOrString Text
instance IsNodeOrString XMLDocument

newtype OffscreenRenderingContext = OffscreenRenderingContext { unOffscreenRenderingContext :: JSVal }

instance PToJSVal OffscreenRenderingContext where
  pToJSVal = unOffscreenRenderingContext
  {-# INLINE pToJSVal #-}

instance PFromJSVal OffscreenRenderingContext where
  pFromJSVal = OffscreenRenderingContext
  {-# INLINE pFromJSVal #-}

instance ToJSVal OffscreenRenderingContext where
  toJSVal = return . unOffscreenRenderingContext
  {-# INLINE toJSVal #-}

instance FromJSVal OffscreenRenderingContext where
  fromJSVal v = fmap OffscreenRenderingContext <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OffscreenRenderingContext
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OffscreenRenderingContext where
  makeObject = makeObject . unOffscreenRenderingContext

class (ToJSVal o) => IsOffscreenRenderingContext o

toOffscreenRenderingContext :: (MonadJSM m, IsOffscreenRenderingContext o) => o -> m OffscreenRenderingContext
toOffscreenRenderingContext o = liftJSM (OffscreenRenderingContext <$> toJSVal o)

instance IsOffscreenRenderingContext OffscreenRenderingContext
instance IsOffscreenRenderingContext GPUCanvasContext
instance IsOffscreenRenderingContext ImageBitmapRenderingContext
instance IsOffscreenRenderingContext OffscreenCanvasRenderingContext2D
instance IsOffscreenRenderingContext WebGL2RenderingContext
instance IsOffscreenRenderingContext WebGLRenderingContext

newtype ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions = ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions { unParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions :: JSVal }

instance PToJSVal ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions where
  pToJSVal = unParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions where
  pFromJSVal = ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions where
  toJSVal = return . unParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions where
  fromJSVal v = fmap ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions where
  makeObject = makeObject . unParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions

class (ToJSVal o) => IsParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions o

toParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions :: (MonadJSM m, IsParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions o) => o -> m ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions
toParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions o = liftJSM (ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions <$> toJSVal o)

instance IsParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions ParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions
instance IsParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions ParseHTMLUnsafeOptions
instance IsParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions TrustedHTMLParserOptions

newtype PasswordCredentialInit = PasswordCredentialInit { unPasswordCredentialInit :: JSVal }

instance PToJSVal PasswordCredentialInit where
  pToJSVal = unPasswordCredentialInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PasswordCredentialInit where
  pFromJSVal = PasswordCredentialInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PasswordCredentialInit where
  toJSVal = return . unPasswordCredentialInit
  {-# INLINE toJSVal #-}

instance FromJSVal PasswordCredentialInit where
  fromJSVal v = fmap PasswordCredentialInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PasswordCredentialInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PasswordCredentialInit where
  makeObject = makeObject . unPasswordCredentialInit

class (ToJSVal o) => IsPasswordCredentialInit o

toPasswordCredentialInit :: (MonadJSM m, IsPasswordCredentialInit o) => o -> m PasswordCredentialInit
toPasswordCredentialInit o = liftJSM (PasswordCredentialInit <$> toJSVal o)

instance IsPasswordCredentialInit PasswordCredentialInit
instance IsPasswordCredentialInit HTMLFormElement
instance IsPasswordCredentialInit PasswordCredentialData

newtype Path2DOrString = Path2DOrString { unPath2DOrString :: JSVal }

instance PToJSVal Path2DOrString where
  pToJSVal = unPath2DOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal Path2DOrString where
  pFromJSVal = Path2DOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal Path2DOrString where
  toJSVal = return . unPath2DOrString
  {-# INLINE toJSVal #-}

instance FromJSVal Path2DOrString where
  fromJSVal v = fmap Path2DOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Path2DOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Path2DOrString where
  makeObject = makeObject . unPath2DOrString

class (ToJSVal o) => IsPath2DOrString o

toPath2DOrString :: (MonadJSM m, IsPath2DOrString o) => o -> m Path2DOrString
toPath2DOrString o = liftJSM (Path2DOrString <$> toJSVal o)

instance IsPath2DOrString Path2DOrString
instance IsPath2DOrString JSString
instance IsPath2DOrString Path2D
instance IsPath2DOrString String
instance IsPath2DOrString T.Text

newtype PushMessageDataInit = PushMessageDataInit { unPushMessageDataInit :: JSVal }

instance PToJSVal PushMessageDataInit where
  pToJSVal = unPushMessageDataInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PushMessageDataInit where
  pFromJSVal = PushMessageDataInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PushMessageDataInit where
  toJSVal = return . unPushMessageDataInit
  {-# INLINE toJSVal #-}

instance FromJSVal PushMessageDataInit where
  fromJSVal v = fmap PushMessageDataInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PushMessageDataInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PushMessageDataInit where
  makeObject = makeObject . unPushMessageDataInit

class (ToJSVal o) => IsPushMessageDataInit o

toPushMessageDataInit :: (MonadJSM m, IsPushMessageDataInit o) => o -> m PushMessageDataInit
toPushMessageDataInit o = liftJSM (PushMessageDataInit <$> toJSVal o)

instance IsPushMessageDataInit PushMessageDataInit
instance IsPushMessageDataInit ArrayBuffer
instance IsPushMessageDataInit ArrayBufferView
instance IsPushMessageDataInit BigInt64Array
instance IsPushMessageDataInit BigUint64Array
instance IsPushMessageDataInit DataView
instance IsPushMessageDataInit Float16Array
instance IsPushMessageDataInit Float32Array
instance IsPushMessageDataInit Float64Array
instance IsPushMessageDataInit Int16Array
instance IsPushMessageDataInit Int32Array
instance IsPushMessageDataInit Int8Array
instance IsPushMessageDataInit JSString
instance IsPushMessageDataInit String
instance IsPushMessageDataInit T.Text
instance IsPushMessageDataInit Uint16Array
instance IsPushMessageDataInit Uint32Array
instance IsPushMessageDataInit Uint8Array
instance IsPushMessageDataInit Uint8ClampedArray

newtype RTCRtpReceiverTransform = RTCRtpReceiverTransform { unRTCRtpReceiverTransform :: JSVal }

instance PToJSVal RTCRtpReceiverTransform where
  pToJSVal = unRTCRtpReceiverTransform
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpReceiverTransform where
  pFromJSVal = RTCRtpReceiverTransform
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpReceiverTransform where
  toJSVal = return . unRTCRtpReceiverTransform
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpReceiverTransform where
  fromJSVal v = fmap RTCRtpReceiverTransform <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpReceiverTransform
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpReceiverTransform where
  makeObject = makeObject . unRTCRtpReceiverTransform

class (ToJSVal o) => IsRTCRtpReceiverTransform o

toRTCRtpReceiverTransform :: (MonadJSM m, IsRTCRtpReceiverTransform o) => o -> m RTCRtpReceiverTransform
toRTCRtpReceiverTransform o = liftJSM (RTCRtpReceiverTransform <$> toJSVal o)

instance IsRTCRtpReceiverTransform RTCRtpReceiverTransform
instance IsRTCRtpReceiverTransform RTCRtpSFrameDecryptor
instance IsRTCRtpReceiverTransform RTCRtpScriptTransform

newtype RTCRtpSenderTransform = RTCRtpSenderTransform { unRTCRtpSenderTransform :: JSVal }

instance PToJSVal RTCRtpSenderTransform where
  pToJSVal = unRTCRtpSenderTransform
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpSenderTransform where
  pFromJSVal = RTCRtpSenderTransform
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpSenderTransform where
  toJSVal = return . unRTCRtpSenderTransform
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpSenderTransform where
  fromJSVal v = fmap RTCRtpSenderTransform <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpSenderTransform
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpSenderTransform where
  makeObject = makeObject . unRTCRtpSenderTransform

class (ToJSVal o) => IsRTCRtpSenderTransform o

toRTCRtpSenderTransform :: (MonadJSM m, IsRTCRtpSenderTransform o) => o -> m RTCRtpSenderTransform
toRTCRtpSenderTransform o = liftJSM (RTCRtpSenderTransform <$> toJSVal o)

instance IsRTCRtpSenderTransform RTCRtpSenderTransform
instance IsRTCRtpSenderTransform RTCRtpSFrameEncryptor
instance IsRTCRtpSenderTransform RTCRtpScriptTransform

newtype RadioNodeListOrElement = RadioNodeListOrElement { unRadioNodeListOrElement :: JSVal }

instance PToJSVal RadioNodeListOrElement where
  pToJSVal = unRadioNodeListOrElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal RadioNodeListOrElement where
  pFromJSVal = RadioNodeListOrElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal RadioNodeListOrElement where
  toJSVal = return . unRadioNodeListOrElement
  {-# INLINE toJSVal #-}

instance FromJSVal RadioNodeListOrElement where
  fromJSVal v = fmap RadioNodeListOrElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RadioNodeListOrElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RadioNodeListOrElement where
  makeObject = makeObject . unRadioNodeListOrElement

class (ToJSVal o) => IsRadioNodeListOrElement o

toRadioNodeListOrElement :: (MonadJSM m, IsRadioNodeListOrElement o) => o -> m RadioNodeListOrElement
toRadioNodeListOrElement o = liftJSM (RadioNodeListOrElement <$> toJSVal o)

instance IsRadioNodeListOrElement RadioNodeListOrElement
instance IsRadioNodeListOrElement Element
instance IsRadioNodeListOrElement HTMLAnchorElement
instance IsRadioNodeListOrElement HTMLAreaElement
instance IsRadioNodeListOrElement HTMLAudioElement
instance IsRadioNodeListOrElement HTMLBRElement
instance IsRadioNodeListOrElement HTMLBaseElement
instance IsRadioNodeListOrElement HTMLBodyElement
instance IsRadioNodeListOrElement HTMLButtonElement
instance IsRadioNodeListOrElement HTMLCanvasElement
instance IsRadioNodeListOrElement HTMLDListElement
instance IsRadioNodeListOrElement HTMLDataElement
instance IsRadioNodeListOrElement HTMLDataListElement
instance IsRadioNodeListOrElement HTMLDetailsElement
instance IsRadioNodeListOrElement HTMLDialogElement
instance IsRadioNodeListOrElement HTMLDirectoryElement
instance IsRadioNodeListOrElement HTMLDivElement
instance IsRadioNodeListOrElement HTMLElement
instance IsRadioNodeListOrElement HTMLEmbedElement
instance IsRadioNodeListOrElement HTMLFieldSetElement
instance IsRadioNodeListOrElement HTMLFontElement
instance IsRadioNodeListOrElement HTMLFormElement
instance IsRadioNodeListOrElement HTMLFrameElement
instance IsRadioNodeListOrElement HTMLFrameSetElement
instance IsRadioNodeListOrElement HTMLHRElement
instance IsRadioNodeListOrElement HTMLHeadElement
instance IsRadioNodeListOrElement HTMLHeadingElement
instance IsRadioNodeListOrElement HTMLHtmlElement
instance IsRadioNodeListOrElement HTMLIFrameElement
instance IsRadioNodeListOrElement HTMLImageElement
instance IsRadioNodeListOrElement HTMLInputElement
instance IsRadioNodeListOrElement HTMLLIElement
instance IsRadioNodeListOrElement HTMLLabelElement
instance IsRadioNodeListOrElement HTMLLegendElement
instance IsRadioNodeListOrElement HTMLLinkElement
instance IsRadioNodeListOrElement HTMLMapElement
instance IsRadioNodeListOrElement HTMLMarqueeElement
instance IsRadioNodeListOrElement HTMLMediaElement
instance IsRadioNodeListOrElement HTMLMenuElement
instance IsRadioNodeListOrElement HTMLMetaElement
instance IsRadioNodeListOrElement HTMLMeterElement
instance IsRadioNodeListOrElement HTMLModElement
instance IsRadioNodeListOrElement HTMLOListElement
instance IsRadioNodeListOrElement HTMLObjectElement
instance IsRadioNodeListOrElement HTMLOptGroupElement
instance IsRadioNodeListOrElement HTMLOptionElement
instance IsRadioNodeListOrElement HTMLOutputElement
instance IsRadioNodeListOrElement HTMLParagraphElement
instance IsRadioNodeListOrElement HTMLParamElement
instance IsRadioNodeListOrElement HTMLPictureElement
instance IsRadioNodeListOrElement HTMLPreElement
instance IsRadioNodeListOrElement HTMLProgressElement
instance IsRadioNodeListOrElement HTMLQuoteElement
instance IsRadioNodeListOrElement HTMLScriptElement
instance IsRadioNodeListOrElement HTMLSelectElement
instance IsRadioNodeListOrElement HTMLSelectedContentElement
instance IsRadioNodeListOrElement HTMLSlotElement
instance IsRadioNodeListOrElement HTMLSourceElement
instance IsRadioNodeListOrElement HTMLSpanElement
instance IsRadioNodeListOrElement HTMLStyleElement
instance IsRadioNodeListOrElement HTMLTableCaptionElement
instance IsRadioNodeListOrElement HTMLTableCellElement
instance IsRadioNodeListOrElement HTMLTableColElement
instance IsRadioNodeListOrElement HTMLTableElement
instance IsRadioNodeListOrElement HTMLTableRowElement
instance IsRadioNodeListOrElement HTMLTableSectionElement
instance IsRadioNodeListOrElement HTMLTemplateElement
instance IsRadioNodeListOrElement HTMLTextAreaElement
instance IsRadioNodeListOrElement HTMLTimeElement
instance IsRadioNodeListOrElement HTMLTitleElement
instance IsRadioNodeListOrElement HTMLTrackElement
instance IsRadioNodeListOrElement HTMLUListElement
instance IsRadioNodeListOrElement HTMLUnknownElement
instance IsRadioNodeListOrElement HTMLVideoElement
instance IsRadioNodeListOrElement MathMLElement
instance IsRadioNodeListOrElement RadioNodeList
instance IsRadioNodeListOrElement SVGAElement
instance IsRadioNodeListOrElement SVGAnimateElement
instance IsRadioNodeListOrElement SVGAnimateMotionElement
instance IsRadioNodeListOrElement SVGAnimateTransformElement
instance IsRadioNodeListOrElement SVGAnimationElement
instance IsRadioNodeListOrElement SVGCircleElement
instance IsRadioNodeListOrElement SVGClipPathElement
instance IsRadioNodeListOrElement SVGComponentTransferFunctionElement
instance IsRadioNodeListOrElement SVGDefsElement
instance IsRadioNodeListOrElement SVGDescElement
instance IsRadioNodeListOrElement SVGElement
instance IsRadioNodeListOrElement SVGEllipseElement
instance IsRadioNodeListOrElement SVGFEBlendElement
instance IsRadioNodeListOrElement SVGFEColorMatrixElement
instance IsRadioNodeListOrElement SVGFEComponentTransferElement
instance IsRadioNodeListOrElement SVGFECompositeElement
instance IsRadioNodeListOrElement SVGFEConvolveMatrixElement
instance IsRadioNodeListOrElement SVGFEDiffuseLightingElement
instance IsRadioNodeListOrElement SVGFEDisplacementMapElement
instance IsRadioNodeListOrElement SVGFEDistantLightElement
instance IsRadioNodeListOrElement SVGFEDropShadowElement
instance IsRadioNodeListOrElement SVGFEFloodElement
instance IsRadioNodeListOrElement SVGFEFuncAElement
instance IsRadioNodeListOrElement SVGFEFuncBElement
instance IsRadioNodeListOrElement SVGFEFuncGElement
instance IsRadioNodeListOrElement SVGFEFuncRElement
instance IsRadioNodeListOrElement SVGFEGaussianBlurElement
instance IsRadioNodeListOrElement SVGFEImageElement
instance IsRadioNodeListOrElement SVGFEMergeElement
instance IsRadioNodeListOrElement SVGFEMergeNodeElement
instance IsRadioNodeListOrElement SVGFEMorphologyElement
instance IsRadioNodeListOrElement SVGFEOffsetElement
instance IsRadioNodeListOrElement SVGFEPointLightElement
instance IsRadioNodeListOrElement SVGFESpecularLightingElement
instance IsRadioNodeListOrElement SVGFESpotLightElement
instance IsRadioNodeListOrElement SVGFETileElement
instance IsRadioNodeListOrElement SVGFETurbulenceElement
instance IsRadioNodeListOrElement SVGFilterElement
instance IsRadioNodeListOrElement SVGForeignObjectElement
instance IsRadioNodeListOrElement SVGGElement
instance IsRadioNodeListOrElement SVGGeometryElement
instance IsRadioNodeListOrElement SVGGradientElement
instance IsRadioNodeListOrElement SVGGraphicsElement
instance IsRadioNodeListOrElement SVGImageElement
instance IsRadioNodeListOrElement SVGLineElement
instance IsRadioNodeListOrElement SVGLinearGradientElement
instance IsRadioNodeListOrElement SVGMPathElement
instance IsRadioNodeListOrElement SVGMarkerElement
instance IsRadioNodeListOrElement SVGMaskElement
instance IsRadioNodeListOrElement SVGMetadataElement
instance IsRadioNodeListOrElement SVGPathElement
instance IsRadioNodeListOrElement SVGPatternElement
instance IsRadioNodeListOrElement SVGPolygonElement
instance IsRadioNodeListOrElement SVGPolylineElement
instance IsRadioNodeListOrElement SVGRadialGradientElement
instance IsRadioNodeListOrElement SVGRectElement
instance IsRadioNodeListOrElement SVGSVGElement
instance IsRadioNodeListOrElement SVGScriptElement
instance IsRadioNodeListOrElement SVGSetElement
instance IsRadioNodeListOrElement SVGStopElement
instance IsRadioNodeListOrElement SVGStyleElement
instance IsRadioNodeListOrElement SVGSwitchElement
instance IsRadioNodeListOrElement SVGSymbolElement
instance IsRadioNodeListOrElement SVGTSpanElement
instance IsRadioNodeListOrElement SVGTextContentElement
instance IsRadioNodeListOrElement SVGTextElement
instance IsRadioNodeListOrElement SVGTextPathElement
instance IsRadioNodeListOrElement SVGTextPositioningElement
instance IsRadioNodeListOrElement SVGTitleElement
instance IsRadioNodeListOrElement SVGUseElement
instance IsRadioNodeListOrElement SVGViewElement

newtype ReadableStreamReader = ReadableStreamReader { unReadableStreamReader :: JSVal }

instance PToJSVal ReadableStreamReader where
  pToJSVal = unReadableStreamReader
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReadableStreamReader where
  pFromJSVal = ReadableStreamReader
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReadableStreamReader where
  toJSVal = return . unReadableStreamReader
  {-# INLINE toJSVal #-}

instance FromJSVal ReadableStreamReader where
  fromJSVal v = fmap ReadableStreamReader <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReadableStreamReader
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReadableStreamReader where
  makeObject = makeObject . unReadableStreamReader

class (ToJSVal o) => IsReadableStreamReader o

toReadableStreamReader :: (MonadJSM m, IsReadableStreamReader o) => o -> m ReadableStreamReader
toReadableStreamReader o = liftJSM (ReadableStreamReader <$> toJSVal o)

instance IsReadableStreamReader ReadableStreamReader
instance IsReadableStreamReader ReadableStreamBYOBReader
instance IsReadableStreamReader ReadableStreamDefaultReader

newtype RenderingContext = RenderingContext { unRenderingContext :: JSVal }

instance PToJSVal RenderingContext where
  pToJSVal = unRenderingContext
  {-# INLINE pToJSVal #-}

instance PFromJSVal RenderingContext where
  pFromJSVal = RenderingContext
  {-# INLINE pFromJSVal #-}

instance ToJSVal RenderingContext where
  toJSVal = return . unRenderingContext
  {-# INLINE toJSVal #-}

instance FromJSVal RenderingContext where
  fromJSVal v = fmap RenderingContext <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RenderingContext
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RenderingContext where
  makeObject = makeObject . unRenderingContext

class (ToJSVal o) => IsRenderingContext o

toRenderingContext :: (MonadJSM m, IsRenderingContext o) => o -> m RenderingContext
toRenderingContext o = liftJSM (RenderingContext <$> toJSVal o)

instance IsRenderingContext RenderingContext
instance IsRenderingContext CanvasRenderingContext2D
instance IsRenderingContext GPUCanvasContext
instance IsRenderingContext ImageBitmapRenderingContext
instance IsRenderingContext WebGL2RenderingContext
instance IsRenderingContext WebGLRenderingContext

newtype RequestInfo = RequestInfo { unRequestInfo :: JSVal }

instance PToJSVal RequestInfo where
  pToJSVal = unRequestInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal RequestInfo where
  pFromJSVal = RequestInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal RequestInfo where
  toJSVal = return . unRequestInfo
  {-# INLINE toJSVal #-}

instance FromJSVal RequestInfo where
  fromJSVal v = fmap RequestInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RequestInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RequestInfo where
  makeObject = makeObject . unRequestInfo

class (ToJSVal o) => IsRequestInfo o

toRequestInfo :: (MonadJSM m, IsRequestInfo o) => o -> m RequestInfo
toRequestInfo o = liftJSM (RequestInfo <$> toJSVal o)

instance IsRequestInfo RequestInfo
instance IsRequestInfo JSString
instance IsRequestInfo Request
instance IsRequestInfo String
instance IsRequestInfo T.Text

newtype ResponseOrUndefined = ResponseOrUndefined { unResponseOrUndefined :: JSVal }

instance PToJSVal ResponseOrUndefined where
  pToJSVal = unResponseOrUndefined
  {-# INLINE pToJSVal #-}

instance PFromJSVal ResponseOrUndefined where
  pFromJSVal = ResponseOrUndefined
  {-# INLINE pFromJSVal #-}

instance ToJSVal ResponseOrUndefined where
  toJSVal = return . unResponseOrUndefined
  {-# INLINE toJSVal #-}

instance FromJSVal ResponseOrUndefined where
  fromJSVal v = fmap ResponseOrUndefined <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ResponseOrUndefined
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ResponseOrUndefined where
  makeObject = makeObject . unResponseOrUndefined

class (ToJSVal o) => IsResponseOrUndefined o

toResponseOrUndefined :: (MonadJSM m, IsResponseOrUndefined o) => o -> m ResponseOrUndefined
toResponseOrUndefined o = liftJSM (ResponseOrUndefined <$> toJSVal o)

instance IsResponseOrUndefined ResponseOrUndefined
instance IsResponseOrUndefined Response

newtype RouterRuleOrSequenceRouterRule = RouterRuleOrSequenceRouterRule { unRouterRuleOrSequenceRouterRule :: JSVal }

instance PToJSVal RouterRuleOrSequenceRouterRule where
  pToJSVal = unRouterRuleOrSequenceRouterRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal RouterRuleOrSequenceRouterRule where
  pFromJSVal = RouterRuleOrSequenceRouterRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal RouterRuleOrSequenceRouterRule where
  toJSVal = return . unRouterRuleOrSequenceRouterRule
  {-# INLINE toJSVal #-}

instance FromJSVal RouterRuleOrSequenceRouterRule where
  fromJSVal v = fmap RouterRuleOrSequenceRouterRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RouterRuleOrSequenceRouterRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RouterRuleOrSequenceRouterRule where
  makeObject = makeObject . unRouterRuleOrSequenceRouterRule

class (ToJSVal o) => IsRouterRuleOrSequenceRouterRule o

toRouterRuleOrSequenceRouterRule :: (MonadJSM m, IsRouterRuleOrSequenceRouterRule o) => o -> m RouterRuleOrSequenceRouterRule
toRouterRuleOrSequenceRouterRule o = liftJSM (RouterRuleOrSequenceRouterRule <$> toJSVal o)

instance IsRouterRuleOrSequenceRouterRule RouterRuleOrSequenceRouterRule
instance IsRouterRuleOrSequenceRouterRule RouterRule

newtype RouterSource = RouterSource { unRouterSource :: JSVal }

instance PToJSVal RouterSource where
  pToJSVal = unRouterSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal RouterSource where
  pFromJSVal = RouterSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal RouterSource where
  toJSVal = return . unRouterSource
  {-# INLINE toJSVal #-}

instance FromJSVal RouterSource where
  fromJSVal v = fmap RouterSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RouterSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RouterSource where
  makeObject = makeObject . unRouterSource

class (ToJSVal o) => IsRouterSource o

toRouterSource :: (MonadJSM m, IsRouterSource o) => o -> m RouterSource
toRouterSource o = liftJSM (RouterSource <$> toJSVal o)

instance IsRouterSource RouterSource
instance IsRouterSource RouterSourceDict

newtype SanitizerAttribute = SanitizerAttribute { unSanitizerAttribute :: JSVal }

instance PToJSVal SanitizerAttribute where
  pToJSVal = unSanitizerAttribute
  {-# INLINE pToJSVal #-}

instance PFromJSVal SanitizerAttribute where
  pFromJSVal = SanitizerAttribute
  {-# INLINE pFromJSVal #-}

instance ToJSVal SanitizerAttribute where
  toJSVal = return . unSanitizerAttribute
  {-# INLINE toJSVal #-}

instance FromJSVal SanitizerAttribute where
  fromJSVal v = fmap SanitizerAttribute <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SanitizerAttribute
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SanitizerAttribute where
  makeObject = makeObject . unSanitizerAttribute

class (ToJSVal o) => IsSanitizerAttribute o

toSanitizerAttribute :: (MonadJSM m, IsSanitizerAttribute o) => o -> m SanitizerAttribute
toSanitizerAttribute o = liftJSM (SanitizerAttribute <$> toJSVal o)

instance IsSanitizerAttribute SanitizerAttribute
instance IsSanitizerAttribute JSString
instance IsSanitizerAttribute SanitizerAttributeNamespace
instance IsSanitizerAttribute String
instance IsSanitizerAttribute T.Text

newtype SanitizerConfigOrSanitizerPresets = SanitizerConfigOrSanitizerPresets { unSanitizerConfigOrSanitizerPresets :: JSVal }

instance PToJSVal SanitizerConfigOrSanitizerPresets where
  pToJSVal = unSanitizerConfigOrSanitizerPresets
  {-# INLINE pToJSVal #-}

instance PFromJSVal SanitizerConfigOrSanitizerPresets where
  pFromJSVal = SanitizerConfigOrSanitizerPresets
  {-# INLINE pFromJSVal #-}

instance ToJSVal SanitizerConfigOrSanitizerPresets where
  toJSVal = return . unSanitizerConfigOrSanitizerPresets
  {-# INLINE toJSVal #-}

instance FromJSVal SanitizerConfigOrSanitizerPresets where
  fromJSVal v = fmap SanitizerConfigOrSanitizerPresets <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SanitizerConfigOrSanitizerPresets
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SanitizerConfigOrSanitizerPresets where
  makeObject = makeObject . unSanitizerConfigOrSanitizerPresets

class (ToJSVal o) => IsSanitizerConfigOrSanitizerPresets o

toSanitizerConfigOrSanitizerPresets :: (MonadJSM m, IsSanitizerConfigOrSanitizerPresets o) => o -> m SanitizerConfigOrSanitizerPresets
toSanitizerConfigOrSanitizerPresets o = liftJSM (SanitizerConfigOrSanitizerPresets <$> toJSVal o)

instance IsSanitizerConfigOrSanitizerPresets SanitizerConfigOrSanitizerPresets
instance IsSanitizerConfigOrSanitizerPresets SanitizerConfig

newtype SanitizerElement = SanitizerElement { unSanitizerElement :: JSVal }

instance PToJSVal SanitizerElement where
  pToJSVal = unSanitizerElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SanitizerElement where
  pFromJSVal = SanitizerElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SanitizerElement where
  toJSVal = return . unSanitizerElement
  {-# INLINE toJSVal #-}

instance FromJSVal SanitizerElement where
  fromJSVal v = fmap SanitizerElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SanitizerElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SanitizerElement where
  makeObject = makeObject . unSanitizerElement

class (ToJSVal o) => IsSanitizerElement o

toSanitizerElement :: (MonadJSM m, IsSanitizerElement o) => o -> m SanitizerElement
toSanitizerElement o = liftJSM (SanitizerElement <$> toJSVal o)

instance IsSanitizerElement SanitizerElement
instance IsSanitizerElement JSString
instance IsSanitizerElement SanitizerElementNamespace
instance IsSanitizerElement SanitizerElementNamespaceWithAttributes
instance IsSanitizerElement String
instance IsSanitizerElement T.Text

newtype SanitizerElementWithAttributes = SanitizerElementWithAttributes { unSanitizerElementWithAttributes :: JSVal }

instance PToJSVal SanitizerElementWithAttributes where
  pToJSVal = unSanitizerElementWithAttributes
  {-# INLINE pToJSVal #-}

instance PFromJSVal SanitizerElementWithAttributes where
  pFromJSVal = SanitizerElementWithAttributes
  {-# INLINE pFromJSVal #-}

instance ToJSVal SanitizerElementWithAttributes where
  toJSVal = return . unSanitizerElementWithAttributes
  {-# INLINE toJSVal #-}

instance FromJSVal SanitizerElementWithAttributes where
  fromJSVal v = fmap SanitizerElementWithAttributes <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SanitizerElementWithAttributes
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SanitizerElementWithAttributes where
  makeObject = makeObject . unSanitizerElementWithAttributes

class (ToJSVal o) => IsSanitizerElementWithAttributes o

toSanitizerElementWithAttributes :: (MonadJSM m, IsSanitizerElementWithAttributes o) => o -> m SanitizerElementWithAttributes
toSanitizerElementWithAttributes o = liftJSM (SanitizerElementWithAttributes <$> toJSVal o)

instance IsSanitizerElementWithAttributes SanitizerElementWithAttributes
instance IsSanitizerElementWithAttributes JSString
instance IsSanitizerElementWithAttributes SanitizerElementNamespaceWithAttributes
instance IsSanitizerElementWithAttributes String
instance IsSanitizerElementWithAttributes T.Text

newtype SanitizerOrSanitizerConfigOrSanitizerPresets = SanitizerOrSanitizerConfigOrSanitizerPresets { unSanitizerOrSanitizerConfigOrSanitizerPresets :: JSVal }

instance PToJSVal SanitizerOrSanitizerConfigOrSanitizerPresets where
  pToJSVal = unSanitizerOrSanitizerConfigOrSanitizerPresets
  {-# INLINE pToJSVal #-}

instance PFromJSVal SanitizerOrSanitizerConfigOrSanitizerPresets where
  pFromJSVal = SanitizerOrSanitizerConfigOrSanitizerPresets
  {-# INLINE pFromJSVal #-}

instance ToJSVal SanitizerOrSanitizerConfigOrSanitizerPresets where
  toJSVal = return . unSanitizerOrSanitizerConfigOrSanitizerPresets
  {-# INLINE toJSVal #-}

instance FromJSVal SanitizerOrSanitizerConfigOrSanitizerPresets where
  fromJSVal v = fmap SanitizerOrSanitizerConfigOrSanitizerPresets <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SanitizerOrSanitizerConfigOrSanitizerPresets
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SanitizerOrSanitizerConfigOrSanitizerPresets where
  makeObject = makeObject . unSanitizerOrSanitizerConfigOrSanitizerPresets

class (ToJSVal o) => IsSanitizerOrSanitizerConfigOrSanitizerPresets o

toSanitizerOrSanitizerConfigOrSanitizerPresets :: (MonadJSM m, IsSanitizerOrSanitizerConfigOrSanitizerPresets o) => o -> m SanitizerOrSanitizerConfigOrSanitizerPresets
toSanitizerOrSanitizerConfigOrSanitizerPresets o = liftJSM (SanitizerOrSanitizerConfigOrSanitizerPresets <$> toJSVal o)

instance IsSanitizerOrSanitizerConfigOrSanitizerPresets SanitizerOrSanitizerConfigOrSanitizerPresets
instance IsSanitizerOrSanitizerConfigOrSanitizerPresets Sanitizer
instance IsSanitizerOrSanitizerConfigOrSanitizerPresets SanitizerConfig

newtype SanitizerPI = SanitizerPI { unSanitizerPI :: JSVal }

instance PToJSVal SanitizerPI where
  pToJSVal = unSanitizerPI
  {-# INLINE pToJSVal #-}

instance PFromJSVal SanitizerPI where
  pFromJSVal = SanitizerPI
  {-# INLINE pFromJSVal #-}

instance ToJSVal SanitizerPI where
  toJSVal = return . unSanitizerPI
  {-# INLINE toJSVal #-}

instance FromJSVal SanitizerPI where
  fromJSVal v = fmap SanitizerPI <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SanitizerPI
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SanitizerPI where
  makeObject = makeObject . unSanitizerPI

class (ToJSVal o) => IsSanitizerPI o

toSanitizerPI :: (MonadJSM m, IsSanitizerPI o) => o -> m SanitizerPI
toSanitizerPI o = liftJSM (SanitizerPI <$> toJSVal o)

instance IsSanitizerPI SanitizerPI
instance IsSanitizerPI JSString
instance IsSanitizerPI SanitizerProcessingInstruction
instance IsSanitizerPI String
instance IsSanitizerPI T.Text

newtype SequenceSequenceStringOrRecordStringStringOrString = SequenceSequenceStringOrRecordStringStringOrString { unSequenceSequenceStringOrRecordStringStringOrString :: JSVal }

instance PToJSVal SequenceSequenceStringOrRecordStringStringOrString where
  pToJSVal = unSequenceSequenceStringOrRecordStringStringOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal SequenceSequenceStringOrRecordStringStringOrString where
  pFromJSVal = SequenceSequenceStringOrRecordStringStringOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal SequenceSequenceStringOrRecordStringStringOrString where
  toJSVal = return . unSequenceSequenceStringOrRecordStringStringOrString
  {-# INLINE toJSVal #-}

instance FromJSVal SequenceSequenceStringOrRecordStringStringOrString where
  fromJSVal v = fmap SequenceSequenceStringOrRecordStringStringOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SequenceSequenceStringOrRecordStringStringOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SequenceSequenceStringOrRecordStringStringOrString where
  makeObject = makeObject . unSequenceSequenceStringOrRecordStringStringOrString

class (ToJSVal o) => IsSequenceSequenceStringOrRecordStringStringOrString o

toSequenceSequenceStringOrRecordStringStringOrString :: (MonadJSM m, IsSequenceSequenceStringOrRecordStringStringOrString o) => o -> m SequenceSequenceStringOrRecordStringStringOrString
toSequenceSequenceStringOrRecordStringStringOrString o = liftJSM (SequenceSequenceStringOrRecordStringStringOrString <$> toJSVal o)

instance IsSequenceSequenceStringOrRecordStringStringOrString SequenceSequenceStringOrRecordStringStringOrString
instance IsSequenceSequenceStringOrRecordStringStringOrString JSString
instance IsSequenceSequenceStringOrRecordStringStringOrString String
instance IsSequenceSequenceStringOrRecordStringStringOrString T.Text

newtype ServiceWorkerRegistrationOrUndefined = ServiceWorkerRegistrationOrUndefined { unServiceWorkerRegistrationOrUndefined :: JSVal }

instance PToJSVal ServiceWorkerRegistrationOrUndefined where
  pToJSVal = unServiceWorkerRegistrationOrUndefined
  {-# INLINE pToJSVal #-}

instance PFromJSVal ServiceWorkerRegistrationOrUndefined where
  pFromJSVal = ServiceWorkerRegistrationOrUndefined
  {-# INLINE pFromJSVal #-}

instance ToJSVal ServiceWorkerRegistrationOrUndefined where
  toJSVal = return . unServiceWorkerRegistrationOrUndefined
  {-# INLINE toJSVal #-}

instance FromJSVal ServiceWorkerRegistrationOrUndefined where
  fromJSVal v = fmap ServiceWorkerRegistrationOrUndefined <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ServiceWorkerRegistrationOrUndefined
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ServiceWorkerRegistrationOrUndefined where
  makeObject = makeObject . unServiceWorkerRegistrationOrUndefined

class (ToJSVal o) => IsServiceWorkerRegistrationOrUndefined o

toServiceWorkerRegistrationOrUndefined :: (MonadJSM m, IsServiceWorkerRegistrationOrUndefined o) => o -> m ServiceWorkerRegistrationOrUndefined
toServiceWorkerRegistrationOrUndefined o = liftJSM (ServiceWorkerRegistrationOrUndefined <$> toJSVal o)

instance IsServiceWorkerRegistrationOrUndefined ServiceWorkerRegistrationOrUndefined
instance IsServiceWorkerRegistrationOrUndefined ServiceWorkerRegistration

newtype SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions = SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions { unSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions :: JSVal }

instance PToJSVal SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions where
  pToJSVal = unSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions where
  pFromJSVal = SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions where
  toJSVal = return . unSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions
  {-# INLINE toJSVal #-}

instance FromJSVal SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions where
  fromJSVal v = fmap SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions where
  makeObject = makeObject . unSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions

class (ToJSVal o) => IsSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions o

toSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions :: (MonadJSM m, IsSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions o) => o -> m SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions
toSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions o = liftJSM (SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions <$> toJSVal o)

instance IsSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions SetHTMLUnsafeOptionsOrTrustedHTMLParserOptions
instance IsSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions SetHTMLUnsafeOptions
instance IsSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions TrustedHTMLParserOptions

newtype StringOrArrayBuffer = StringOrArrayBuffer { unStringOrArrayBuffer :: JSVal }

instance PToJSVal StringOrArrayBuffer where
  pToJSVal = unStringOrArrayBuffer
  {-# INLINE pToJSVal #-}

instance PFromJSVal StringOrArrayBuffer where
  pFromJSVal = StringOrArrayBuffer
  {-# INLINE pFromJSVal #-}

instance ToJSVal StringOrArrayBuffer where
  toJSVal = return . unStringOrArrayBuffer
  {-# INLINE toJSVal #-}

instance FromJSVal StringOrArrayBuffer where
  fromJSVal v = fmap StringOrArrayBuffer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StringOrArrayBuffer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StringOrArrayBuffer where
  makeObject = makeObject . unStringOrArrayBuffer

class (ToJSVal o) => IsStringOrArrayBuffer o

toStringOrArrayBuffer :: (MonadJSM m, IsStringOrArrayBuffer o) => o -> m StringOrArrayBuffer
toStringOrArrayBuffer o = liftJSM (StringOrArrayBuffer <$> toJSVal o)

instance IsStringOrArrayBuffer StringOrArrayBuffer
instance IsStringOrArrayBuffer ArrayBuffer
instance IsStringOrArrayBuffer JSString
instance IsStringOrArrayBuffer String
instance IsStringOrArrayBuffer T.Text

newtype StringOrAudioSinkOptions = StringOrAudioSinkOptions { unStringOrAudioSinkOptions :: JSVal }

instance PToJSVal StringOrAudioSinkOptions where
  pToJSVal = unStringOrAudioSinkOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal StringOrAudioSinkOptions where
  pFromJSVal = StringOrAudioSinkOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal StringOrAudioSinkOptions where
  toJSVal = return . unStringOrAudioSinkOptions
  {-# INLINE toJSVal #-}

instance FromJSVal StringOrAudioSinkOptions where
  fromJSVal v = fmap StringOrAudioSinkOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StringOrAudioSinkOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StringOrAudioSinkOptions where
  makeObject = makeObject . unStringOrAudioSinkOptions

class (ToJSVal o) => IsStringOrAudioSinkOptions o

toStringOrAudioSinkOptions :: (MonadJSM m, IsStringOrAudioSinkOptions o) => o -> m StringOrAudioSinkOptions
toStringOrAudioSinkOptions o = liftJSM (StringOrAudioSinkOptions <$> toJSVal o)

instance IsStringOrAudioSinkOptions StringOrAudioSinkOptions
instance IsStringOrAudioSinkOptions AudioSinkOptions
instance IsStringOrAudioSinkOptions JSString
instance IsStringOrAudioSinkOptions String
instance IsStringOrAudioSinkOptions T.Text

newtype StringOrBufferSource = StringOrBufferSource { unStringOrBufferSource :: JSVal }

instance PToJSVal StringOrBufferSource where
  pToJSVal = unStringOrBufferSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal StringOrBufferSource where
  pFromJSVal = StringOrBufferSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal StringOrBufferSource where
  toJSVal = return . unStringOrBufferSource
  {-# INLINE toJSVal #-}

instance FromJSVal StringOrBufferSource where
  fromJSVal v = fmap StringOrBufferSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StringOrBufferSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StringOrBufferSource where
  makeObject = makeObject . unStringOrBufferSource

class (ToJSVal o) => IsStringOrBufferSource o

toStringOrBufferSource :: (MonadJSM m, IsStringOrBufferSource o) => o -> m StringOrBufferSource
toStringOrBufferSource o = liftJSM (StringOrBufferSource <$> toJSVal o)

instance IsStringOrBufferSource StringOrBufferSource
instance IsStringOrBufferSource ArrayBuffer
instance IsStringOrBufferSource ArrayBufferView
instance IsStringOrBufferSource BigInt64Array
instance IsStringOrBufferSource BigUint64Array
instance IsStringOrBufferSource DataView
instance IsStringOrBufferSource Float16Array
instance IsStringOrBufferSource Float32Array
instance IsStringOrBufferSource Float64Array
instance IsStringOrBufferSource Int16Array
instance IsStringOrBufferSource Int32Array
instance IsStringOrBufferSource Int8Array
instance IsStringOrBufferSource JSString
instance IsStringOrBufferSource String
instance IsStringOrBufferSource T.Text
instance IsStringOrBufferSource Uint16Array
instance IsStringOrBufferSource Uint32Array
instance IsStringOrBufferSource Uint8Array
instance IsStringOrBufferSource Uint8ClampedArray

newtype StringOrCanvasGradientOrCanvasPattern = StringOrCanvasGradientOrCanvasPattern { unStringOrCanvasGradientOrCanvasPattern :: JSVal }

instance PToJSVal StringOrCanvasGradientOrCanvasPattern where
  pToJSVal = unStringOrCanvasGradientOrCanvasPattern
  {-# INLINE pToJSVal #-}

instance PFromJSVal StringOrCanvasGradientOrCanvasPattern where
  pFromJSVal = StringOrCanvasGradientOrCanvasPattern
  {-# INLINE pFromJSVal #-}

instance ToJSVal StringOrCanvasGradientOrCanvasPattern where
  toJSVal = return . unStringOrCanvasGradientOrCanvasPattern
  {-# INLINE toJSVal #-}

instance FromJSVal StringOrCanvasGradientOrCanvasPattern where
  fromJSVal v = fmap StringOrCanvasGradientOrCanvasPattern <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StringOrCanvasGradientOrCanvasPattern
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StringOrCanvasGradientOrCanvasPattern where
  makeObject = makeObject . unStringOrCanvasGradientOrCanvasPattern

class (ToJSVal o) => IsStringOrCanvasGradientOrCanvasPattern o

toStringOrCanvasGradientOrCanvasPattern :: (MonadJSM m, IsStringOrCanvasGradientOrCanvasPattern o) => o -> m StringOrCanvasGradientOrCanvasPattern
toStringOrCanvasGradientOrCanvasPattern o = liftJSM (StringOrCanvasGradientOrCanvasPattern <$> toJSVal o)

instance IsStringOrCanvasGradientOrCanvasPattern StringOrCanvasGradientOrCanvasPattern
instance IsStringOrCanvasGradientOrCanvasPattern CanvasGradient
instance IsStringOrCanvasGradientOrCanvasPattern CanvasPattern
instance IsStringOrCanvasGradientOrCanvasPattern JSString
instance IsStringOrCanvasGradientOrCanvasPattern String
instance IsStringOrCanvasGradientOrCanvasPattern T.Text

newtype StringOrDOMHighResTimeStamp = StringOrDOMHighResTimeStamp { unStringOrDOMHighResTimeStamp :: JSVal }

instance PToJSVal StringOrDOMHighResTimeStamp where
  pToJSVal = unStringOrDOMHighResTimeStamp
  {-# INLINE pToJSVal #-}

instance PFromJSVal StringOrDOMHighResTimeStamp where
  pFromJSVal = StringOrDOMHighResTimeStamp
  {-# INLINE pFromJSVal #-}

instance ToJSVal StringOrDOMHighResTimeStamp where
  toJSVal = return . unStringOrDOMHighResTimeStamp
  {-# INLINE toJSVal #-}

instance FromJSVal StringOrDOMHighResTimeStamp where
  fromJSVal v = fmap StringOrDOMHighResTimeStamp <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StringOrDOMHighResTimeStamp
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StringOrDOMHighResTimeStamp where
  makeObject = makeObject . unStringOrDOMHighResTimeStamp

class (ToJSVal o) => IsStringOrDOMHighResTimeStamp o

toStringOrDOMHighResTimeStamp :: (MonadJSM m, IsStringOrDOMHighResTimeStamp o) => o -> m StringOrDOMHighResTimeStamp
toStringOrDOMHighResTimeStamp o = liftJSM (StringOrDOMHighResTimeStamp <$> toJSVal o)

instance IsStringOrDOMHighResTimeStamp StringOrDOMHighResTimeStamp
instance IsStringOrDOMHighResTimeStamp Double
instance IsStringOrDOMHighResTimeStamp JSString
instance IsStringOrDOMHighResTimeStamp String
instance IsStringOrDOMHighResTimeStamp T.Text

newtype StringOrElementCreationOptions = StringOrElementCreationOptions { unStringOrElementCreationOptions :: JSVal }

instance PToJSVal StringOrElementCreationOptions where
  pToJSVal = unStringOrElementCreationOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal StringOrElementCreationOptions where
  pFromJSVal = StringOrElementCreationOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal StringOrElementCreationOptions where
  toJSVal = return . unStringOrElementCreationOptions
  {-# INLINE toJSVal #-}

instance FromJSVal StringOrElementCreationOptions where
  fromJSVal v = fmap StringOrElementCreationOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StringOrElementCreationOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StringOrElementCreationOptions where
  makeObject = makeObject . unStringOrElementCreationOptions

class (ToJSVal o) => IsStringOrElementCreationOptions o

toStringOrElementCreationOptions :: (MonadJSM m, IsStringOrElementCreationOptions o) => o -> m StringOrElementCreationOptions
toStringOrElementCreationOptions o = liftJSM (StringOrElementCreationOptions <$> toJSVal o)

instance IsStringOrElementCreationOptions StringOrElementCreationOptions
instance IsStringOrElementCreationOptions ElementCreationOptions
instance IsStringOrElementCreationOptions JSString
instance IsStringOrElementCreationOptions String
instance IsStringOrElementCreationOptions T.Text

newtype StringOrPerformanceMeasureOptions = StringOrPerformanceMeasureOptions { unStringOrPerformanceMeasureOptions :: JSVal }

instance PToJSVal StringOrPerformanceMeasureOptions where
  pToJSVal = unStringOrPerformanceMeasureOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal StringOrPerformanceMeasureOptions where
  pFromJSVal = StringOrPerformanceMeasureOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal StringOrPerformanceMeasureOptions where
  toJSVal = return . unStringOrPerformanceMeasureOptions
  {-# INLINE toJSVal #-}

instance FromJSVal StringOrPerformanceMeasureOptions where
  fromJSVal v = fmap StringOrPerformanceMeasureOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StringOrPerformanceMeasureOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StringOrPerformanceMeasureOptions where
  makeObject = makeObject . unStringOrPerformanceMeasureOptions

class (ToJSVal o) => IsStringOrPerformanceMeasureOptions o

toStringOrPerformanceMeasureOptions :: (MonadJSM m, IsStringOrPerformanceMeasureOptions o) => o -> m StringOrPerformanceMeasureOptions
toStringOrPerformanceMeasureOptions o = liftJSM (StringOrPerformanceMeasureOptions <$> toJSVal o)

instance IsStringOrPerformanceMeasureOptions StringOrPerformanceMeasureOptions
instance IsStringOrPerformanceMeasureOptions JSString
instance IsStringOrPerformanceMeasureOptions PerformanceMeasureOptions
instance IsStringOrPerformanceMeasureOptions String
instance IsStringOrPerformanceMeasureOptions T.Text

newtype StringOrSequenceCSSNumericValueOrCSSKeywordValue = StringOrSequenceCSSNumericValueOrCSSKeywordValue { unStringOrSequenceCSSNumericValueOrCSSKeywordValue :: JSVal }

instance PToJSVal StringOrSequenceCSSNumericValueOrCSSKeywordValue where
  pToJSVal = unStringOrSequenceCSSNumericValueOrCSSKeywordValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal StringOrSequenceCSSNumericValueOrCSSKeywordValue where
  pFromJSVal = StringOrSequenceCSSNumericValueOrCSSKeywordValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal StringOrSequenceCSSNumericValueOrCSSKeywordValue where
  toJSVal = return . unStringOrSequenceCSSNumericValueOrCSSKeywordValue
  {-# INLINE toJSVal #-}

instance FromJSVal StringOrSequenceCSSNumericValueOrCSSKeywordValue where
  fromJSVal v = fmap StringOrSequenceCSSNumericValueOrCSSKeywordValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StringOrSequenceCSSNumericValueOrCSSKeywordValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StringOrSequenceCSSNumericValueOrCSSKeywordValue where
  makeObject = makeObject . unStringOrSequenceCSSNumericValueOrCSSKeywordValue

class (ToJSVal o) => IsStringOrSequenceCSSNumericValueOrCSSKeywordValue o

toStringOrSequenceCSSNumericValueOrCSSKeywordValue :: (MonadJSM m, IsStringOrSequenceCSSNumericValueOrCSSKeywordValue o) => o -> m StringOrSequenceCSSNumericValueOrCSSKeywordValue
toStringOrSequenceCSSNumericValueOrCSSKeywordValue o = liftJSM (StringOrSequenceCSSNumericValueOrCSSKeywordValue <$> toJSVal o)

instance IsStringOrSequenceCSSNumericValueOrCSSKeywordValue StringOrSequenceCSSNumericValueOrCSSKeywordValue
instance IsStringOrSequenceCSSNumericValueOrCSSKeywordValue JSString
instance IsStringOrSequenceCSSNumericValueOrCSSKeywordValue String
instance IsStringOrSequenceCSSNumericValueOrCSSKeywordValue T.Text

newtype StringOrSequenceDouble = StringOrSequenceDouble { unStringOrSequenceDouble :: JSVal }

instance PToJSVal StringOrSequenceDouble where
  pToJSVal = unStringOrSequenceDouble
  {-# INLINE pToJSVal #-}

instance PFromJSVal StringOrSequenceDouble where
  pFromJSVal = StringOrSequenceDouble
  {-# INLINE pFromJSVal #-}

instance ToJSVal StringOrSequenceDouble where
  toJSVal = return . unStringOrSequenceDouble
  {-# INLINE toJSVal #-}

instance FromJSVal StringOrSequenceDouble where
  fromJSVal v = fmap StringOrSequenceDouble <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StringOrSequenceDouble
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StringOrSequenceDouble where
  makeObject = makeObject . unStringOrSequenceDouble

class (ToJSVal o) => IsStringOrSequenceDouble o

toStringOrSequenceDouble :: (MonadJSM m, IsStringOrSequenceDouble o) => o -> m StringOrSequenceDouble
toStringOrSequenceDouble o = liftJSM (StringOrSequenceDouble <$> toJSVal o)

instance IsStringOrSequenceDouble StringOrSequenceDouble
instance IsStringOrSequenceDouble JSString
instance IsStringOrSequenceDouble String
instance IsStringOrSequenceDouble T.Text

newtype StringOrSequenceString = StringOrSequenceString { unStringOrSequenceString :: JSVal }

instance PToJSVal StringOrSequenceString where
  pToJSVal = unStringOrSequenceString
  {-# INLINE pToJSVal #-}

instance PFromJSVal StringOrSequenceString where
  pFromJSVal = StringOrSequenceString
  {-# INLINE pFromJSVal #-}

instance ToJSVal StringOrSequenceString where
  toJSVal = return . unStringOrSequenceString
  {-# INLINE toJSVal #-}

instance FromJSVal StringOrSequenceString where
  fromJSVal v = fmap StringOrSequenceString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StringOrSequenceString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StringOrSequenceString where
  makeObject = makeObject . unStringOrSequenceString

class (ToJSVal o) => IsStringOrSequenceString o

toStringOrSequenceString :: (MonadJSM m, IsStringOrSequenceString o) => o -> m StringOrSequenceString
toStringOrSequenceString o = liftJSM (StringOrSequenceString <$> toJSVal o)

instance IsStringOrSequenceString StringOrSequenceString
instance IsStringOrSequenceString JSString
instance IsStringOrSequenceString String
instance IsStringOrSequenceString T.Text

newtype StringOrSharedWorkerOptions = StringOrSharedWorkerOptions { unStringOrSharedWorkerOptions :: JSVal }

instance PToJSVal StringOrSharedWorkerOptions where
  pToJSVal = unStringOrSharedWorkerOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal StringOrSharedWorkerOptions where
  pFromJSVal = StringOrSharedWorkerOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal StringOrSharedWorkerOptions where
  toJSVal = return . unStringOrSharedWorkerOptions
  {-# INLINE toJSVal #-}

instance FromJSVal StringOrSharedWorkerOptions where
  fromJSVal v = fmap StringOrSharedWorkerOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StringOrSharedWorkerOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StringOrSharedWorkerOptions where
  makeObject = makeObject . unStringOrSharedWorkerOptions

class (ToJSVal o) => IsStringOrSharedWorkerOptions o

toStringOrSharedWorkerOptions :: (MonadJSM m, IsStringOrSharedWorkerOptions o) => o -> m StringOrSharedWorkerOptions
toStringOrSharedWorkerOptions o = liftJSM (StringOrSharedWorkerOptions <$> toJSVal o)

instance IsStringOrSharedWorkerOptions StringOrSharedWorkerOptions
instance IsStringOrSharedWorkerOptions JSString
instance IsStringOrSharedWorkerOptions SharedWorkerOptions
instance IsStringOrSharedWorkerOptions String
instance IsStringOrSharedWorkerOptions T.Text

newtype StringOrTrustedScriptURL = StringOrTrustedScriptURL { unStringOrTrustedScriptURL :: JSVal }

instance PToJSVal StringOrTrustedScriptURL where
  pToJSVal = unStringOrTrustedScriptURL
  {-# INLINE pToJSVal #-}

instance PFromJSVal StringOrTrustedScriptURL where
  pFromJSVal = StringOrTrustedScriptURL
  {-# INLINE pFromJSVal #-}

instance ToJSVal StringOrTrustedScriptURL where
  toJSVal = return . unStringOrTrustedScriptURL
  {-# INLINE toJSVal #-}

instance FromJSVal StringOrTrustedScriptURL where
  fromJSVal v = fmap StringOrTrustedScriptURL <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StringOrTrustedScriptURL
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StringOrTrustedScriptURL where
  makeObject = makeObject . unStringOrTrustedScriptURL

class (ToJSVal o) => IsStringOrTrustedScriptURL o

toStringOrTrustedScriptURL :: (MonadJSM m, IsStringOrTrustedScriptURL o) => o -> m StringOrTrustedScriptURL
toStringOrTrustedScriptURL o = liftJSM (StringOrTrustedScriptURL <$> toJSVal o)

instance IsStringOrTrustedScriptURL StringOrTrustedScriptURL
instance IsStringOrTrustedScriptURL JSString
instance IsStringOrTrustedScriptURL String
instance IsStringOrTrustedScriptURL T.Text
instance IsStringOrTrustedScriptURL TrustedScriptURL

newtype StringOrUndefined = StringOrUndefined { unStringOrUndefined :: JSVal }

instance PToJSVal StringOrUndefined where
  pToJSVal = unStringOrUndefined
  {-# INLINE pToJSVal #-}

instance PFromJSVal StringOrUndefined where
  pFromJSVal = StringOrUndefined
  {-# INLINE pFromJSVal #-}

instance ToJSVal StringOrUndefined where
  toJSVal = return . unStringOrUndefined
  {-# INLINE toJSVal #-}

instance FromJSVal StringOrUndefined where
  fromJSVal v = fmap StringOrUndefined <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StringOrUndefined
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StringOrUndefined where
  makeObject = makeObject . unStringOrUndefined

class (ToJSVal o) => IsStringOrUndefined o

toStringOrUndefined :: (MonadJSM m, IsStringOrUndefined o) => o -> m StringOrUndefined
toStringOrUndefined o = liftJSM (StringOrUndefined <$> toJSVal o)

instance IsStringOrUndefined StringOrUndefined
instance IsStringOrUndefined JSString
instance IsStringOrUndefined String
instance IsStringOrUndefined T.Text

newtype TaskPriorityOrTaskSignal = TaskPriorityOrTaskSignal { unTaskPriorityOrTaskSignal :: JSVal }

instance PToJSVal TaskPriorityOrTaskSignal where
  pToJSVal = unTaskPriorityOrTaskSignal
  {-# INLINE pToJSVal #-}

instance PFromJSVal TaskPriorityOrTaskSignal where
  pFromJSVal = TaskPriorityOrTaskSignal
  {-# INLINE pFromJSVal #-}

instance ToJSVal TaskPriorityOrTaskSignal where
  toJSVal = return . unTaskPriorityOrTaskSignal
  {-# INLINE toJSVal #-}

instance FromJSVal TaskPriorityOrTaskSignal where
  fromJSVal v = fmap TaskPriorityOrTaskSignal <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TaskPriorityOrTaskSignal
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TaskPriorityOrTaskSignal where
  makeObject = makeObject . unTaskPriorityOrTaskSignal

class (ToJSVal o) => IsTaskPriorityOrTaskSignal o

toTaskPriorityOrTaskSignal :: (MonadJSM m, IsTaskPriorityOrTaskSignal o) => o -> m TaskPriorityOrTaskSignal
toTaskPriorityOrTaskSignal o = liftJSM (TaskPriorityOrTaskSignal <$> toJSVal o)

instance IsTaskPriorityOrTaskSignal TaskPriorityOrTaskSignal
instance IsTaskPriorityOrTaskSignal TaskSignal

newtype TexImageSource = TexImageSource { unTexImageSource :: JSVal }

instance PToJSVal TexImageSource where
  pToJSVal = unTexImageSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal TexImageSource where
  pFromJSVal = TexImageSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal TexImageSource where
  toJSVal = return . unTexImageSource
  {-# INLINE toJSVal #-}

instance FromJSVal TexImageSource where
  fromJSVal v = fmap TexImageSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TexImageSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TexImageSource where
  makeObject = makeObject . unTexImageSource

class (ToJSVal o) => IsTexImageSource o

toTexImageSource :: (MonadJSM m, IsTexImageSource o) => o -> m TexImageSource
toTexImageSource o = liftJSM (TexImageSource <$> toJSVal o)

instance IsTexImageSource TexImageSource
instance IsTexImageSource HTMLCanvasElement
instance IsTexImageSource HTMLImageElement
instance IsTexImageSource HTMLVideoElement
instance IsTexImageSource ImageBitmap
instance IsTexImageSource ImageData
instance IsTexImageSource OffscreenCanvas
instance IsTexImageSource VideoFrame

newtype TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString = TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString { unTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString :: JSVal }

instance PToJSVal TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString where
  pToJSVal = unTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString where
  pFromJSVal = TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString where
  toJSVal = return . unTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString
  {-# INLINE toJSVal #-}

instance FromJSVal TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString where
  fromJSVal v = fmap TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString where
  makeObject = makeObject . unTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString

class (ToJSVal o) => IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString o

toTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString :: (MonadJSM m, IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString o) => o -> m TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString
toTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString o = liftJSM (TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString <$> toJSVal o)

instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString CSSKeywordValue
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString CSSMathClamp
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString CSSMathInvert
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString CSSMathMax
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString CSSMathMin
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString CSSMathNegate
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString CSSMathProduct
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString CSSMathSum
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString CSSMathValue
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString CSSNumericValue
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString CSSUnitValue
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString JSString
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString String
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString T.Text
instance IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString TimelineRangeOffset

newtype TimerHandler = TimerHandler { unTimerHandler :: JSVal }

instance PToJSVal TimerHandler where
  pToJSVal = unTimerHandler
  {-# INLINE pToJSVal #-}

instance PFromJSVal TimerHandler where
  pFromJSVal = TimerHandler
  {-# INLINE pFromJSVal #-}

instance ToJSVal TimerHandler where
  toJSVal = return . unTimerHandler
  {-# INLINE toJSVal #-}

instance FromJSVal TimerHandler where
  fromJSVal v = fmap TimerHandler <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TimerHandler
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TimerHandler where
  makeObject = makeObject . unTimerHandler

class (ToJSVal o) => IsTimerHandler o

toTimerHandler :: (MonadJSM m, IsTimerHandler o) => o -> m TimerHandler
toTimerHandler o = liftJSM (TimerHandler <$> toJSVal o)

instance IsTimerHandler TimerHandler
instance IsTimerHandler Function
instance IsTimerHandler JSString
instance IsTimerHandler String
instance IsTimerHandler T.Text
instance IsTimerHandler TrustedScript

newtype TogglePopoverOptionsOrBool = TogglePopoverOptionsOrBool { unTogglePopoverOptionsOrBool :: JSVal }

instance PToJSVal TogglePopoverOptionsOrBool where
  pToJSVal = unTogglePopoverOptionsOrBool
  {-# INLINE pToJSVal #-}

instance PFromJSVal TogglePopoverOptionsOrBool where
  pFromJSVal = TogglePopoverOptionsOrBool
  {-# INLINE pFromJSVal #-}

instance ToJSVal TogglePopoverOptionsOrBool where
  toJSVal = return . unTogglePopoverOptionsOrBool
  {-# INLINE toJSVal #-}

instance FromJSVal TogglePopoverOptionsOrBool where
  fromJSVal v = fmap TogglePopoverOptionsOrBool <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TogglePopoverOptionsOrBool
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TogglePopoverOptionsOrBool where
  makeObject = makeObject . unTogglePopoverOptionsOrBool

class (ToJSVal o) => IsTogglePopoverOptionsOrBool o

toTogglePopoverOptionsOrBool :: (MonadJSM m, IsTogglePopoverOptionsOrBool o) => o -> m TogglePopoverOptionsOrBool
toTogglePopoverOptionsOrBool o = liftJSM (TogglePopoverOptionsOrBool <$> toJSVal o)

instance IsTogglePopoverOptionsOrBool TogglePopoverOptionsOrBool
instance IsTogglePopoverOptionsOrBool Bool
instance IsTogglePopoverOptionsOrBool TogglePopoverOptions

newtype TrustedHTMLOrString = TrustedHTMLOrString { unTrustedHTMLOrString :: JSVal }

instance PToJSVal TrustedHTMLOrString where
  pToJSVal = unTrustedHTMLOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal TrustedHTMLOrString where
  pFromJSVal = TrustedHTMLOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal TrustedHTMLOrString where
  toJSVal = return . unTrustedHTMLOrString
  {-# INLINE toJSVal #-}

instance FromJSVal TrustedHTMLOrString where
  fromJSVal v = fmap TrustedHTMLOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TrustedHTMLOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TrustedHTMLOrString where
  makeObject = makeObject . unTrustedHTMLOrString

class (ToJSVal o) => IsTrustedHTMLOrString o

toTrustedHTMLOrString :: (MonadJSM m, IsTrustedHTMLOrString o) => o -> m TrustedHTMLOrString
toTrustedHTMLOrString o = liftJSM (TrustedHTMLOrString <$> toJSVal o)

instance IsTrustedHTMLOrString TrustedHTMLOrString
instance IsTrustedHTMLOrString JSString
instance IsTrustedHTMLOrString String
instance IsTrustedHTMLOrString T.Text
instance IsTrustedHTMLOrString TrustedHTML

newtype TrustedScriptOrString = TrustedScriptOrString { unTrustedScriptOrString :: JSVal }

instance PToJSVal TrustedScriptOrString where
  pToJSVal = unTrustedScriptOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal TrustedScriptOrString where
  pFromJSVal = TrustedScriptOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal TrustedScriptOrString where
  toJSVal = return . unTrustedScriptOrString
  {-# INLINE toJSVal #-}

instance FromJSVal TrustedScriptOrString where
  fromJSVal v = fmap TrustedScriptOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TrustedScriptOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TrustedScriptOrString where
  makeObject = makeObject . unTrustedScriptOrString

class (ToJSVal o) => IsTrustedScriptOrString o

toTrustedScriptOrString :: (MonadJSM m, IsTrustedScriptOrString o) => o -> m TrustedScriptOrString
toTrustedScriptOrString o = liftJSM (TrustedScriptOrString <$> toJSVal o)

instance IsTrustedScriptOrString TrustedScriptOrString
instance IsTrustedScriptOrString JSString
instance IsTrustedScriptOrString String
instance IsTrustedScriptOrString T.Text
instance IsTrustedScriptOrString TrustedScript

newtype TrustedScriptURLOrString = TrustedScriptURLOrString { unTrustedScriptURLOrString :: JSVal }

instance PToJSVal TrustedScriptURLOrString where
  pToJSVal = unTrustedScriptURLOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal TrustedScriptURLOrString where
  pFromJSVal = TrustedScriptURLOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal TrustedScriptURLOrString where
  toJSVal = return . unTrustedScriptURLOrString
  {-# INLINE toJSVal #-}

instance FromJSVal TrustedScriptURLOrString where
  fromJSVal v = fmap TrustedScriptURLOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TrustedScriptURLOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TrustedScriptURLOrString where
  makeObject = makeObject . unTrustedScriptURLOrString

class (ToJSVal o) => IsTrustedScriptURLOrString o

toTrustedScriptURLOrString :: (MonadJSM m, IsTrustedScriptURLOrString o) => o -> m TrustedScriptURLOrString
toTrustedScriptURLOrString o = liftJSM (TrustedScriptURLOrString <$> toJSVal o)

instance IsTrustedScriptURLOrString TrustedScriptURLOrString
instance IsTrustedScriptURLOrString JSString
instance IsTrustedScriptURLOrString String
instance IsTrustedScriptURLOrString T.Text
instance IsTrustedScriptURLOrString TrustedScriptURL

newtype TrustedTypeOrString = TrustedTypeOrString { unTrustedTypeOrString :: JSVal }

instance PToJSVal TrustedTypeOrString where
  pToJSVal = unTrustedTypeOrString
  {-# INLINE pToJSVal #-}

instance PFromJSVal TrustedTypeOrString where
  pFromJSVal = TrustedTypeOrString
  {-# INLINE pFromJSVal #-}

instance ToJSVal TrustedTypeOrString where
  toJSVal = return . unTrustedTypeOrString
  {-# INLINE toJSVal #-}

instance FromJSVal TrustedTypeOrString where
  fromJSVal v = fmap TrustedTypeOrString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TrustedTypeOrString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TrustedTypeOrString where
  makeObject = makeObject . unTrustedTypeOrString

class (ToJSVal o) => IsTrustedTypeOrString o

toTrustedTypeOrString :: (MonadJSM m, IsTrustedTypeOrString o) => o -> m TrustedTypeOrString
toTrustedTypeOrString o = liftJSM (TrustedTypeOrString <$> toJSVal o)

instance IsTrustedTypeOrString TrustedTypeOrString
instance IsTrustedTypeOrString JSString
instance IsTrustedTypeOrString String
instance IsTrustedTypeOrString T.Text
instance IsTrustedTypeOrString TrustedHTML
instance IsTrustedTypeOrString TrustedScript
instance IsTrustedTypeOrString TrustedScriptURL

newtype URLPatternCompatible = URLPatternCompatible { unURLPatternCompatible :: JSVal }

instance PToJSVal URLPatternCompatible where
  pToJSVal = unURLPatternCompatible
  {-# INLINE pToJSVal #-}

instance PFromJSVal URLPatternCompatible where
  pFromJSVal = URLPatternCompatible
  {-# INLINE pFromJSVal #-}

instance ToJSVal URLPatternCompatible where
  toJSVal = return . unURLPatternCompatible
  {-# INLINE toJSVal #-}

instance FromJSVal URLPatternCompatible where
  fromJSVal v = fmap URLPatternCompatible <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . URLPatternCompatible
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject URLPatternCompatible where
  makeObject = makeObject . unURLPatternCompatible

class (ToJSVal o) => IsURLPatternCompatible o

toURLPatternCompatible :: (MonadJSM m, IsURLPatternCompatible o) => o -> m URLPatternCompatible
toURLPatternCompatible o = liftJSM (URLPatternCompatible <$> toJSVal o)

instance IsURLPatternCompatible URLPatternCompatible
instance IsURLPatternCompatible JSString
instance IsURLPatternCompatible String
instance IsURLPatternCompatible T.Text
instance IsURLPatternCompatible URLPattern
instance IsURLPatternCompatible URLPatternInit

newtype URLPatternInput = URLPatternInput { unURLPatternInput :: JSVal }

instance PToJSVal URLPatternInput where
  pToJSVal = unURLPatternInput
  {-# INLINE pToJSVal #-}

instance PFromJSVal URLPatternInput where
  pFromJSVal = URLPatternInput
  {-# INLINE pFromJSVal #-}

instance ToJSVal URLPatternInput where
  toJSVal = return . unURLPatternInput
  {-# INLINE toJSVal #-}

instance FromJSVal URLPatternInput where
  fromJSVal v = fmap URLPatternInput <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . URLPatternInput
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject URLPatternInput where
  makeObject = makeObject . unURLPatternInput

class (ToJSVal o) => IsURLPatternInput o

toURLPatternInput :: (MonadJSM m, IsURLPatternInput o) => o -> m URLPatternInput
toURLPatternInput o = liftJSM (URLPatternInput <$> toJSVal o)

instance IsURLPatternInput URLPatternInput
instance IsURLPatternInput JSString
instance IsURLPatternInput String
instance IsURLPatternInput T.Text
instance IsURLPatternInput URLPatternInit

newtype Uint32List = Uint32List { unUint32List :: JSVal }

instance PToJSVal Uint32List where
  pToJSVal = unUint32List
  {-# INLINE pToJSVal #-}

instance PFromJSVal Uint32List where
  pFromJSVal = Uint32List
  {-# INLINE pFromJSVal #-}

instance ToJSVal Uint32List where
  toJSVal = return . unUint32List
  {-# INLINE toJSVal #-}

instance FromJSVal Uint32List where
  fromJSVal v = fmap Uint32List <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Uint32List
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Uint32List where
  makeObject = makeObject . unUint32List

class (ToJSVal o) => IsUint32List o

toUint32List :: (MonadJSM m, IsUint32List o) => o -> m Uint32List
toUint32List o = liftJSM (Uint32List <$> toJSVal o)

instance IsUint32List Uint32List
instance IsUint32List Uint32Array

newtype UndefinedOrCSSStyleValue = UndefinedOrCSSStyleValue { unUndefinedOrCSSStyleValue :: JSVal }

instance PToJSVal UndefinedOrCSSStyleValue where
  pToJSVal = unUndefinedOrCSSStyleValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal UndefinedOrCSSStyleValue where
  pFromJSVal = UndefinedOrCSSStyleValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal UndefinedOrCSSStyleValue where
  toJSVal = return . unUndefinedOrCSSStyleValue
  {-# INLINE toJSVal #-}

instance FromJSVal UndefinedOrCSSStyleValue where
  fromJSVal v = fmap UndefinedOrCSSStyleValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . UndefinedOrCSSStyleValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject UndefinedOrCSSStyleValue where
  makeObject = makeObject . unUndefinedOrCSSStyleValue

class (ToJSVal o) => IsUndefinedOrCSSStyleValue o

toUndefinedOrCSSStyleValue :: (MonadJSM m, IsUndefinedOrCSSStyleValue o) => o -> m UndefinedOrCSSStyleValue
toUndefinedOrCSSStyleValue o = liftJSM (UndefinedOrCSSStyleValue <$> toJSVal o)

instance IsUndefinedOrCSSStyleValue UndefinedOrCSSStyleValue
instance IsUndefinedOrCSSStyleValue CSSImageValue
instance IsUndefinedOrCSSStyleValue CSSKeywordValue
instance IsUndefinedOrCSSStyleValue CSSMathClamp
instance IsUndefinedOrCSSStyleValue CSSMathInvert
instance IsUndefinedOrCSSStyleValue CSSMathMax
instance IsUndefinedOrCSSStyleValue CSSMathMin
instance IsUndefinedOrCSSStyleValue CSSMathNegate
instance IsUndefinedOrCSSStyleValue CSSMathProduct
instance IsUndefinedOrCSSStyleValue CSSMathSum
instance IsUndefinedOrCSSStyleValue CSSMathValue
instance IsUndefinedOrCSSStyleValue CSSNumericValue
instance IsUndefinedOrCSSStyleValue CSSStyleValue
instance IsUndefinedOrCSSStyleValue CSSTransformValue
instance IsUndefinedOrCSSStyleValue CSSUnitValue
instance IsUndefinedOrCSSStyleValue CSSUnparsedValue

newtype VibratePattern = VibratePattern { unVibratePattern :: JSVal }

instance PToJSVal VibratePattern where
  pToJSVal = unVibratePattern
  {-# INLINE pToJSVal #-}

instance PFromJSVal VibratePattern where
  pFromJSVal = VibratePattern
  {-# INLINE pFromJSVal #-}

instance ToJSVal VibratePattern where
  toJSVal = return . unVibratePattern
  {-# INLINE toJSVal #-}

instance FromJSVal VibratePattern where
  fromJSVal v = fmap VibratePattern <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VibratePattern
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VibratePattern where
  makeObject = makeObject . unVibratePattern

class (ToJSVal o) => IsVibratePattern o

toVibratePattern :: (MonadJSM m, IsVibratePattern o) => o -> m VibratePattern
toVibratePattern o = liftJSM (VibratePattern <$> toJSVal o)

instance IsVibratePattern VibratePattern
instance IsVibratePattern Word

newtype VideoTrackOrAudioTrackOrTextTrack = VideoTrackOrAudioTrackOrTextTrack { unVideoTrackOrAudioTrackOrTextTrack :: JSVal }

instance PToJSVal VideoTrackOrAudioTrackOrTextTrack where
  pToJSVal = unVideoTrackOrAudioTrackOrTextTrack
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoTrackOrAudioTrackOrTextTrack where
  pFromJSVal = VideoTrackOrAudioTrackOrTextTrack
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoTrackOrAudioTrackOrTextTrack where
  toJSVal = return . unVideoTrackOrAudioTrackOrTextTrack
  {-# INLINE toJSVal #-}

instance FromJSVal VideoTrackOrAudioTrackOrTextTrack where
  fromJSVal v = fmap VideoTrackOrAudioTrackOrTextTrack <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoTrackOrAudioTrackOrTextTrack
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoTrackOrAudioTrackOrTextTrack where
  makeObject = makeObject . unVideoTrackOrAudioTrackOrTextTrack

class (ToJSVal o) => IsVideoTrackOrAudioTrackOrTextTrack o

toVideoTrackOrAudioTrackOrTextTrack :: (MonadJSM m, IsVideoTrackOrAudioTrackOrTextTrack o) => o -> m VideoTrackOrAudioTrackOrTextTrack
toVideoTrackOrAudioTrackOrTextTrack o = liftJSM (VideoTrackOrAudioTrackOrTextTrack <$> toJSVal o)

instance IsVideoTrackOrAudioTrackOrTextTrack VideoTrackOrAudioTrackOrTextTrack
instance IsVideoTrackOrAudioTrackOrTextTrack AudioTrack
instance IsVideoTrackOrAudioTrackOrTextTrack TextTrack
instance IsVideoTrackOrAudioTrackOrTextTrack VideoTrack

newtype ViewTransitionUpdateCallbackOrStartViewTransitionOptions = ViewTransitionUpdateCallbackOrStartViewTransitionOptions { unViewTransitionUpdateCallbackOrStartViewTransitionOptions :: JSVal }

instance PToJSVal ViewTransitionUpdateCallbackOrStartViewTransitionOptions where
  pToJSVal = unViewTransitionUpdateCallbackOrStartViewTransitionOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ViewTransitionUpdateCallbackOrStartViewTransitionOptions where
  pFromJSVal = ViewTransitionUpdateCallbackOrStartViewTransitionOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ViewTransitionUpdateCallbackOrStartViewTransitionOptions where
  toJSVal = return . unViewTransitionUpdateCallbackOrStartViewTransitionOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ViewTransitionUpdateCallbackOrStartViewTransitionOptions where
  fromJSVal v = fmap ViewTransitionUpdateCallbackOrStartViewTransitionOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ViewTransitionUpdateCallbackOrStartViewTransitionOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ViewTransitionUpdateCallbackOrStartViewTransitionOptions where
  makeObject = makeObject . unViewTransitionUpdateCallbackOrStartViewTransitionOptions

class (ToJSVal o) => IsViewTransitionUpdateCallbackOrStartViewTransitionOptions o

toViewTransitionUpdateCallbackOrStartViewTransitionOptions :: (MonadJSM m, IsViewTransitionUpdateCallbackOrStartViewTransitionOptions o) => o -> m ViewTransitionUpdateCallbackOrStartViewTransitionOptions
toViewTransitionUpdateCallbackOrStartViewTransitionOptions o = liftJSM (ViewTransitionUpdateCallbackOrStartViewTransitionOptions <$> toJSVal o)

instance IsViewTransitionUpdateCallbackOrStartViewTransitionOptions ViewTransitionUpdateCallbackOrStartViewTransitionOptions
instance IsViewTransitionUpdateCallbackOrStartViewTransitionOptions StartViewTransitionOptions
instance IsViewTransitionUpdateCallbackOrStartViewTransitionOptions ViewTransitionUpdateCallback

newtype WorkerOrWorkerAndParameters = WorkerOrWorkerAndParameters { unWorkerOrWorkerAndParameters :: JSVal }

instance PToJSVal WorkerOrWorkerAndParameters where
  pToJSVal = unWorkerOrWorkerAndParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal WorkerOrWorkerAndParameters where
  pFromJSVal = WorkerOrWorkerAndParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal WorkerOrWorkerAndParameters where
  toJSVal = return . unWorkerOrWorkerAndParameters
  {-# INLINE toJSVal #-}

instance FromJSVal WorkerOrWorkerAndParameters where
  fromJSVal v = fmap WorkerOrWorkerAndParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WorkerOrWorkerAndParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WorkerOrWorkerAndParameters where
  makeObject = makeObject . unWorkerOrWorkerAndParameters

class (ToJSVal o) => IsWorkerOrWorkerAndParameters o

toWorkerOrWorkerAndParameters :: (MonadJSM m, IsWorkerOrWorkerAndParameters o) => o -> m WorkerOrWorkerAndParameters
toWorkerOrWorkerAndParameters o = liftJSM (WorkerOrWorkerAndParameters <$> toJSVal o)

instance IsWorkerOrWorkerAndParameters WorkerOrWorkerAndParameters
instance IsWorkerOrWorkerAndParameters Worker
instance IsWorkerOrWorkerAndParameters WorkerAndParameters

newtype AudioDataOutputCallback = AudioDataOutputCallback (Callback (JSVal -> IO ()))
noAudioDataOutputCallback :: Maybe AudioDataOutputCallback
noAudioDataOutputCallback = Nothing
{-# INLINE noAudioDataOutputCallback #-}
instance ToJSVal AudioDataOutputCallback where toJSVal (AudioDataOutputCallback (Callback r)) = toJSVal r

newtype AudioWorkletProcessorConstructor = AudioWorkletProcessorConstructor (Callback (JSVal -> IO ()))
noAudioWorkletProcessorConstructor :: Maybe AudioWorkletProcessorConstructor
noAudioWorkletProcessorConstructor = Nothing
{-# INLINE noAudioWorkletProcessorConstructor #-}
instance ToJSVal AudioWorkletProcessorConstructor where toJSVal (AudioWorkletProcessorConstructor (Callback r)) = toJSVal r

newtype BlobCallback = BlobCallback (Callback (JSVal -> IO ()))
noBlobCallback :: Maybe BlobCallback
noBlobCallback = Nothing
{-# INLINE noBlobCallback #-}
instance ToJSVal BlobCallback where toJSVal (BlobCallback (Callback r)) = toJSVal r

newtype CreateHTMLCallback = CreateHTMLCallback (Callback (JSVal -> IO ()))
noCreateHTMLCallback :: Maybe CreateHTMLCallback
noCreateHTMLCallback = Nothing
{-# INLINE noCreateHTMLCallback #-}
instance ToJSVal CreateHTMLCallback where toJSVal (CreateHTMLCallback (Callback r)) = toJSVal r

newtype CreateParserOptionsCallback = CreateParserOptionsCallback (Callback (JSVal -> IO ()))
noCreateParserOptionsCallback :: Maybe CreateParserOptionsCallback
noCreateParserOptionsCallback = Nothing
{-# INLINE noCreateParserOptionsCallback #-}
instance ToJSVal CreateParserOptionsCallback where toJSVal (CreateParserOptionsCallback (Callback r)) = toJSVal r

newtype CreateScriptCallback = CreateScriptCallback (Callback (JSVal -> IO ()))
noCreateScriptCallback :: Maybe CreateScriptCallback
noCreateScriptCallback = Nothing
{-# INLINE noCreateScriptCallback #-}
instance ToJSVal CreateScriptCallback where toJSVal (CreateScriptCallback (Callback r)) = toJSVal r

newtype CreateScriptURLCallback = CreateScriptURLCallback (Callback (JSVal -> IO ()))
noCreateScriptURLCallback :: Maybe CreateScriptURLCallback
noCreateScriptURLCallback = Nothing
{-# INLINE noCreateScriptURLCallback #-}
instance ToJSVal CreateScriptURLCallback where toJSVal (CreateScriptURLCallback (Callback r)) = toJSVal r

newtype CustomElementConstructor = CustomElementConstructor (Callback (JSVal -> IO ()))
noCustomElementConstructor :: Maybe CustomElementConstructor
noCustomElementConstructor = Nothing
{-# INLINE noCustomElementConstructor #-}
instance ToJSVal CustomElementConstructor where toJSVal (CustomElementConstructor (Callback r)) = toJSVal r

newtype DecodeErrorCallback = DecodeErrorCallback (Callback (JSVal -> IO ()))
noDecodeErrorCallback :: Maybe DecodeErrorCallback
noDecodeErrorCallback = Nothing
{-# INLINE noDecodeErrorCallback #-}
instance ToJSVal DecodeErrorCallback where toJSVal (DecodeErrorCallback (Callback r)) = toJSVal r

newtype DecodeSuccessCallback = DecodeSuccessCallback (Callback (JSVal -> IO ()))
noDecodeSuccessCallback :: Maybe DecodeSuccessCallback
noDecodeSuccessCallback = Nothing
{-# INLINE noDecodeSuccessCallback #-}
instance ToJSVal DecodeSuccessCallback where toJSVal (DecodeSuccessCallback (Callback r)) = toJSVal r

newtype EncodedAudioChunkOutputCallback = EncodedAudioChunkOutputCallback (Callback (JSVal -> IO ()))
noEncodedAudioChunkOutputCallback :: Maybe EncodedAudioChunkOutputCallback
noEncodedAudioChunkOutputCallback = Nothing
{-# INLINE noEncodedAudioChunkOutputCallback #-}
instance ToJSVal EncodedAudioChunkOutputCallback where toJSVal (EncodedAudioChunkOutputCallback (Callback r)) = toJSVal r

newtype EncodedVideoChunkOutputCallback = EncodedVideoChunkOutputCallback (Callback (JSVal -> IO ()))
noEncodedVideoChunkOutputCallback :: Maybe EncodedVideoChunkOutputCallback
noEncodedVideoChunkOutputCallback = Nothing
{-# INLINE noEncodedVideoChunkOutputCallback #-}
instance ToJSVal EncodedVideoChunkOutputCallback where toJSVal (EncodedVideoChunkOutputCallback (Callback r)) = toJSVal r

newtype ErrorCallback = ErrorCallback (Callback (JSVal -> IO ()))
noErrorCallback :: Maybe ErrorCallback
noErrorCallback = Nothing
{-# INLINE noErrorCallback #-}
instance ToJSVal ErrorCallback where toJSVal (ErrorCallback (Callback r)) = toJSVal r

newtype FileCallback = FileCallback (Callback (JSVal -> IO ()))
noFileCallback :: Maybe FileCallback
noFileCallback = Nothing
{-# INLINE noFileCallback #-}
instance ToJSVal FileCallback where toJSVal (FileCallback (Callback r)) = toJSVal r

newtype FileSystemEntriesCallback = FileSystemEntriesCallback (Callback (JSVal -> IO ()))
noFileSystemEntriesCallback :: Maybe FileSystemEntriesCallback
noFileSystemEntriesCallback = Nothing
{-# INLINE noFileSystemEntriesCallback #-}
instance ToJSVal FileSystemEntriesCallback where toJSVal (FileSystemEntriesCallback (Callback r)) = toJSVal r

newtype FileSystemEntryCallback = FileSystemEntryCallback (Callback (JSVal -> IO ()))
noFileSystemEntryCallback :: Maybe FileSystemEntryCallback
noFileSystemEntryCallback = Nothing
{-# INLINE noFileSystemEntryCallback #-}
instance ToJSVal FileSystemEntryCallback where toJSVal (FileSystemEntryCallback (Callback r)) = toJSVal r

newtype FrameRequestCallback = FrameRequestCallback (Callback (JSVal -> IO ()))
noFrameRequestCallback :: Maybe FrameRequestCallback
noFrameRequestCallback = Nothing
{-# INLINE noFrameRequestCallback #-}
instance ToJSVal FrameRequestCallback where toJSVal (FrameRequestCallback (Callback r)) = toJSVal r

newtype FunctionStringCallback = FunctionStringCallback (Callback (JSVal -> IO ()))
noFunctionStringCallback :: Maybe FunctionStringCallback
noFunctionStringCallback = Nothing
{-# INLINE noFunctionStringCallback #-}
instance ToJSVal FunctionStringCallback where toJSVal (FunctionStringCallback (Callback r)) = toJSVal r

newtype IdleRequestCallback = IdleRequestCallback (Callback (JSVal -> IO ()))
noIdleRequestCallback :: Maybe IdleRequestCallback
noIdleRequestCallback = Nothing
{-# INLINE noIdleRequestCallback #-}
instance ToJSVal IdleRequestCallback where toJSVal (IdleRequestCallback (Callback r)) = toJSVal r

newtype IntersectionObserverCallback = IntersectionObserverCallback (Callback (JSVal -> IO ()))
noIntersectionObserverCallback :: Maybe IntersectionObserverCallback
noIntersectionObserverCallback = Nothing
{-# INLINE noIntersectionObserverCallback #-}
instance ToJSVal IntersectionObserverCallback where toJSVal (IntersectionObserverCallback (Callback r)) = toJSVal r

newtype LockGrantedCallback = LockGrantedCallback (Callback (JSVal -> IO ()))
noLockGrantedCallback :: Maybe LockGrantedCallback
noLockGrantedCallback = Nothing
{-# INLINE noLockGrantedCallback #-}
instance ToJSVal LockGrantedCallback where toJSVal (LockGrantedCallback (Callback r)) = toJSVal r

newtype MediaSessionActionHandler = MediaSessionActionHandler (Callback (JSVal -> IO ()))
noMediaSessionActionHandler :: Maybe MediaSessionActionHandler
noMediaSessionActionHandler = Nothing
{-# INLINE noMediaSessionActionHandler #-}
instance ToJSVal MediaSessionActionHandler where toJSVal (MediaSessionActionHandler (Callback r)) = toJSVal r

newtype MutationCallback = MutationCallback (Callback (JSVal -> IO ()))
noMutationCallback :: Maybe MutationCallback
noMutationCallback = Nothing
{-# INLINE noMutationCallback #-}
instance ToJSVal MutationCallback where toJSVal (MutationCallback (Callback r)) = toJSVal r

newtype NavigationInterceptHandler = NavigationInterceptHandler (Callback (JSVal -> IO ()))
noNavigationInterceptHandler :: Maybe NavigationInterceptHandler
noNavigationInterceptHandler = Nothing
{-# INLINE noNavigationInterceptHandler #-}
instance ToJSVal NavigationInterceptHandler where toJSVal (NavigationInterceptHandler (Callback r)) = toJSVal r

newtype NavigationPrecommitHandler = NavigationPrecommitHandler (Callback (JSVal -> IO ()))
noNavigationPrecommitHandler :: Maybe NavigationPrecommitHandler
noNavigationPrecommitHandler = Nothing
{-# INLINE noNavigationPrecommitHandler #-}
instance ToJSVal NavigationPrecommitHandler where toJSVal (NavigationPrecommitHandler (Callback r)) = toJSVal r

newtype NodeFilter = NodeFilter (Callback (JSVal -> IO ()))
noNodeFilter :: Maybe NodeFilter
noNodeFilter = Nothing
{-# INLINE noNodeFilter #-}
instance ToJSVal NodeFilter where toJSVal (NodeFilter (Callback r)) = toJSVal r

newtype NotificationPermissionCallback = NotificationPermissionCallback (Callback (JSVal -> IO ()))
noNotificationPermissionCallback :: Maybe NotificationPermissionCallback
noNotificationPermissionCallback = Nothing
{-# INLINE noNotificationPermissionCallback #-}
instance ToJSVal NotificationPermissionCallback where toJSVal (NotificationPermissionCallback (Callback r)) = toJSVal r

newtype PerformanceObserverCallback = PerformanceObserverCallback (Callback (JSVal -> IO ()))
noPerformanceObserverCallback :: Maybe PerformanceObserverCallback
noPerformanceObserverCallback = Nothing
{-# INLINE noPerformanceObserverCallback #-}
instance ToJSVal PerformanceObserverCallback where toJSVal (PerformanceObserverCallback (Callback r)) = toJSVal r

newtype PositionCallback = PositionCallback (Callback (JSVal -> IO ()))
noPositionCallback :: Maybe PositionCallback
noPositionCallback = Nothing
{-# INLINE noPositionCallback #-}
instance ToJSVal PositionCallback where toJSVal (PositionCallback (Callback r)) = toJSVal r

newtype PositionErrorCallback = PositionErrorCallback (Callback (JSVal -> IO ()))
noPositionErrorCallback :: Maybe PositionErrorCallback
noPositionErrorCallback = Nothing
{-# INLINE noPositionErrorCallback #-}
instance ToJSVal PositionErrorCallback where toJSVal (PositionErrorCallback (Callback r)) = toJSVal r

newtype QueuingStrategySize = QueuingStrategySize (Callback (JSVal -> IO ()))
noQueuingStrategySize :: Maybe QueuingStrategySize
noQueuingStrategySize = Nothing
{-# INLINE noQueuingStrategySize #-}
instance ToJSVal QueuingStrategySize where toJSVal (QueuingStrategySize (Callback r)) = toJSVal r

newtype RTCPeerConnectionErrorCallback = RTCPeerConnectionErrorCallback (Callback (JSVal -> IO ()))
noRTCPeerConnectionErrorCallback :: Maybe RTCPeerConnectionErrorCallback
noRTCPeerConnectionErrorCallback = Nothing
{-# INLINE noRTCPeerConnectionErrorCallback #-}
instance ToJSVal RTCPeerConnectionErrorCallback where toJSVal (RTCPeerConnectionErrorCallback (Callback r)) = toJSVal r

newtype RTCSessionDescriptionCallback = RTCSessionDescriptionCallback (Callback (JSVal -> IO ()))
noRTCSessionDescriptionCallback :: Maybe RTCSessionDescriptionCallback
noRTCSessionDescriptionCallback = Nothing
{-# INLINE noRTCSessionDescriptionCallback #-}
instance ToJSVal RTCSessionDescriptionCallback where toJSVal (RTCSessionDescriptionCallback (Callback r)) = toJSVal r

newtype RemotePlaybackAvailabilityCallback = RemotePlaybackAvailabilityCallback (Callback (JSVal -> IO ()))
noRemotePlaybackAvailabilityCallback :: Maybe RemotePlaybackAvailabilityCallback
noRemotePlaybackAvailabilityCallback = Nothing
{-# INLINE noRemotePlaybackAvailabilityCallback #-}
instance ToJSVal RemotePlaybackAvailabilityCallback where toJSVal (RemotePlaybackAvailabilityCallback (Callback r)) = toJSVal r

newtype ReportingObserverCallback = ReportingObserverCallback (Callback (JSVal -> IO ()))
noReportingObserverCallback :: Maybe ReportingObserverCallback
noReportingObserverCallback = Nothing
{-# INLINE noReportingObserverCallback #-}
instance ToJSVal ReportingObserverCallback where toJSVal (ReportingObserverCallback (Callback r)) = toJSVal r

newtype ResizeObserverCallback = ResizeObserverCallback (Callback (JSVal -> IO ()))
noResizeObserverCallback :: Maybe ResizeObserverCallback
noResizeObserverCallback = Nothing
{-# INLINE noResizeObserverCallback #-}
instance ToJSVal ResizeObserverCallback where toJSVal (ResizeObserverCallback (Callback r)) = toJSVal r

newtype SchedulerPostTaskCallback = SchedulerPostTaskCallback (Callback (JSVal -> IO ()))
noSchedulerPostTaskCallback :: Maybe SchedulerPostTaskCallback
noSchedulerPostTaskCallback = Nothing
{-# INLINE noSchedulerPostTaskCallback #-}
instance ToJSVal SchedulerPostTaskCallback where toJSVal (SchedulerPostTaskCallback (Callback r)) = toJSVal r

newtype VideoFrameOutputCallback = VideoFrameOutputCallback (Callback (JSVal -> IO ()))
noVideoFrameOutputCallback :: Maybe VideoFrameOutputCallback
noVideoFrameOutputCallback = Nothing
{-# INLINE noVideoFrameOutputCallback #-}
instance ToJSVal VideoFrameOutputCallback where toJSVal (VideoFrameOutputCallback (Callback r)) = toJSVal r

newtype VideoFrameRequestCallback = VideoFrameRequestCallback (Callback (JSVal -> IO ()))
noVideoFrameRequestCallback :: Maybe VideoFrameRequestCallback
noVideoFrameRequestCallback = Nothing
{-# INLINE noVideoFrameRequestCallback #-}
instance ToJSVal VideoFrameRequestCallback where toJSVal (VideoFrameRequestCallback (Callback r)) = toJSVal r

newtype ViewTransitionUpdateCallback = ViewTransitionUpdateCallback (Callback (JSVal -> IO ()))
noViewTransitionUpdateCallback :: Maybe ViewTransitionUpdateCallback
noViewTransitionUpdateCallback = Nothing
{-# INLINE noViewTransitionUpdateCallback #-}
instance ToJSVal ViewTransitionUpdateCallback where toJSVal (ViewTransitionUpdateCallback (Callback r)) = toJSVal r

newtype VoidFunction = VoidFunction (Callback (JSVal -> IO ()))
noVoidFunction :: Maybe VoidFunction
noVoidFunction = Nothing
{-# INLINE noVoidFunction #-}
instance ToJSVal VoidFunction where toJSVal (VoidFunction (Callback r)) = toJSVal r

newtype WebCodecsErrorCallback = WebCodecsErrorCallback (Callback (JSVal -> IO ()))
noWebCodecsErrorCallback :: Maybe WebCodecsErrorCallback
noWebCodecsErrorCallback = Nothing
{-# INLINE noWebCodecsErrorCallback #-}
instance ToJSVal WebCodecsErrorCallback where toJSVal (WebCodecsErrorCallback (Callback r)) = toJSVal r

newtype XPathNSResolver = XPathNSResolver (Callback (JSVal -> IO ()))
noXPathNSResolver :: Maybe XPathNSResolver
noXPathNSResolver = Nothing
{-# INLINE noXPathNSResolver #-}
instance ToJSVal XPathNSResolver where toJSVal (XPathNSResolver (Callback r)) = toJSVal r

-- | Functions for this interface are in "JSDOM.ANGLE_instanced_arrays" (ANGLE_instanced_arrays).
newtype ANGLE_instanced_arrays = ANGLE_instanced_arrays { unANGLE_instanced_arrays :: JSVal }

instance PToJSVal ANGLE_instanced_arrays where
  pToJSVal = unANGLE_instanced_arrays
  {-# INLINE pToJSVal #-}

instance PFromJSVal ANGLE_instanced_arrays where
  pFromJSVal = ANGLE_instanced_arrays
  {-# INLINE pFromJSVal #-}

instance ToJSVal ANGLE_instanced_arrays where
  toJSVal = return . unANGLE_instanced_arrays
  {-# INLINE toJSVal #-}

instance FromJSVal ANGLE_instanced_arrays where
  fromJSVal v = fmap ANGLE_instanced_arrays <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ANGLE_instanced_arrays
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ANGLE_instanced_arrays where
  makeObject = makeObject . unANGLE_instanced_arrays


instance IsGObject ANGLE_instanced_arrays where
  typeGType _ = gTypeANGLE_instanced_arrays
  {-# INLINE typeGType #-}

noANGLE_instanced_arrays :: Maybe ANGLE_instanced_arrays
noANGLE_instanced_arrays = Nothing
{-# INLINE noANGLE_instanced_arrays #-}

gTypeANGLE_instanced_arrays :: JSM GType
gTypeANGLE_instanced_arrays = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ARIAMixin" (wai-aria-1.3).
newtype ARIAMixin = ARIAMixin { unARIAMixin :: JSVal }

instance PToJSVal ARIAMixin where
  pToJSVal = unARIAMixin
  {-# INLINE pToJSVal #-}

instance PFromJSVal ARIAMixin where
  pFromJSVal = ARIAMixin
  {-# INLINE pFromJSVal #-}

instance ToJSVal ARIAMixin where
  toJSVal = return . unARIAMixin
  {-# INLINE toJSVal #-}

instance FromJSVal ARIAMixin where
  fromJSVal v = fmap ARIAMixin <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ARIAMixin
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ARIAMixin where
  makeObject = makeObject . unARIAMixin

class (IsGObject o) => IsARIAMixin o
toARIAMixin :: IsARIAMixin o => o -> ARIAMixin
toARIAMixin = ARIAMixin . coerce

instance IsARIAMixin ARIAMixin

instance IsGObject ARIAMixin where
  typeGType _ = gTypeARIAMixin
  {-# INLINE typeGType #-}

noARIAMixin :: Maybe ARIAMixin
noARIAMixin = Nothing
{-# INLINE noARIAMixin #-}

gTypeARIAMixin :: JSM GType
gTypeARIAMixin = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ARIANotifyMixin" (wai-aria-1.3).
newtype ARIANotifyMixin = ARIANotifyMixin { unARIANotifyMixin :: JSVal }

instance PToJSVal ARIANotifyMixin where
  pToJSVal = unARIANotifyMixin
  {-# INLINE pToJSVal #-}

instance PFromJSVal ARIANotifyMixin where
  pFromJSVal = ARIANotifyMixin
  {-# INLINE pFromJSVal #-}

instance ToJSVal ARIANotifyMixin where
  toJSVal = return . unARIANotifyMixin
  {-# INLINE toJSVal #-}

instance FromJSVal ARIANotifyMixin where
  fromJSVal v = fmap ARIANotifyMixin <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ARIANotifyMixin
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ARIANotifyMixin where
  makeObject = makeObject . unARIANotifyMixin

class (IsGObject o) => IsARIANotifyMixin o
toARIANotifyMixin :: IsARIANotifyMixin o => o -> ARIANotifyMixin
toARIANotifyMixin = ARIANotifyMixin . coerce

instance IsARIANotifyMixin ARIANotifyMixin

instance IsGObject ARIANotifyMixin where
  typeGType _ = gTypeARIANotifyMixin
  {-# INLINE typeGType #-}

noARIANotifyMixin :: Maybe ARIANotifyMixin
noARIANotifyMixin = Nothing
{-# INLINE noARIANotifyMixin #-}

gTypeARIANotifyMixin :: JSM GType
gTypeARIANotifyMixin = GType . Object <$> jsg "Object"

-- | Dictionary AacEncoderConfig (webcodecs-aac-codec-registration)
newtype AacEncoderConfig = AacEncoderConfig { unAacEncoderConfig :: JSVal }

instance PToJSVal AacEncoderConfig where
  pToJSVal = unAacEncoderConfig
  {-# INLINE pToJSVal #-}

instance PFromJSVal AacEncoderConfig where
  pFromJSVal = AacEncoderConfig
  {-# INLINE pFromJSVal #-}

instance ToJSVal AacEncoderConfig where
  toJSVal = return . unAacEncoderConfig
  {-# INLINE toJSVal #-}

instance FromJSVal AacEncoderConfig where
  fromJSVal v = fmap AacEncoderConfig <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AacEncoderConfig
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AacEncoderConfig where
  makeObject = makeObject . unAacEncoderConfig


instance IsGObject AacEncoderConfig where
  typeGType _ = gTypeAacEncoderConfig
  {-# INLINE typeGType #-}

noAacEncoderConfig :: Maybe AacEncoderConfig
noAacEncoderConfig = Nothing
{-# INLINE noAacEncoderConfig #-}

gTypeAacEncoderConfig :: JSM GType
gTypeAacEncoderConfig = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AbortController" (dom).
newtype AbortController = AbortController { unAbortController :: JSVal }

instance PToJSVal AbortController where
  pToJSVal = unAbortController
  {-# INLINE pToJSVal #-}

instance PFromJSVal AbortController where
  pFromJSVal = AbortController
  {-# INLINE pFromJSVal #-}

instance ToJSVal AbortController where
  toJSVal = return . unAbortController
  {-# INLINE toJSVal #-}

instance FromJSVal AbortController where
  fromJSVal v = fmap AbortController <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AbortController
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AbortController where
  makeObject = makeObject . unAbortController

class (IsGObject o) => IsAbortController o
toAbortController :: IsAbortController o => o -> AbortController
toAbortController = AbortController . coerce

instance IsAbortController AbortController

instance IsGObject AbortController where
  typeGType _ = gTypeAbortController
  {-# INLINE typeGType #-}

noAbortController :: Maybe AbortController
noAbortController = Nothing
{-# INLINE noAbortController #-}

gTypeAbortController :: JSM GType
gTypeAbortController = GType . Object <$> jsg "AbortController"

-- | Functions for this interface are in "JSDOM.AbortSignal" (dom).
newtype AbortSignal = AbortSignal { unAbortSignal :: JSVal }

instance PToJSVal AbortSignal where
  pToJSVal = unAbortSignal
  {-# INLINE pToJSVal #-}

instance PFromJSVal AbortSignal where
  pFromJSVal = AbortSignal
  {-# INLINE pFromJSVal #-}

instance ToJSVal AbortSignal where
  toJSVal = return . unAbortSignal
  {-# INLINE toJSVal #-}

instance FromJSVal AbortSignal where
  fromJSVal v = fmap AbortSignal <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AbortSignal
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AbortSignal where
  makeObject = makeObject . unAbortSignal

class (IsEventTarget o, IsGObject o) => IsAbortSignal o
toAbortSignal :: IsAbortSignal o => o -> AbortSignal
toAbortSignal = AbortSignal . coerce

instance IsAbortSignal AbortSignal
instance IsEventTarget AbortSignal

instance IsGObject AbortSignal where
  typeGType _ = gTypeAbortSignal
  {-# INLINE typeGType #-}

noAbortSignal :: Maybe AbortSignal
noAbortSignal = Nothing
{-# INLINE noAbortSignal #-}

gTypeAbortSignal :: JSM GType
gTypeAbortSignal = GType . Object <$> jsg "AbortSignal"

-- | Functions for this interface are in "JSDOM.AbstractRange" (dom).
newtype AbstractRange = AbstractRange { unAbstractRange :: JSVal }

instance PToJSVal AbstractRange where
  pToJSVal = unAbstractRange
  {-# INLINE pToJSVal #-}

instance PFromJSVal AbstractRange where
  pFromJSVal = AbstractRange
  {-# INLINE pFromJSVal #-}

instance ToJSVal AbstractRange where
  toJSVal = return . unAbstractRange
  {-# INLINE toJSVal #-}

instance FromJSVal AbstractRange where
  fromJSVal v = fmap AbstractRange <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AbstractRange
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AbstractRange where
  makeObject = makeObject . unAbstractRange

class (IsGObject o) => IsAbstractRange o
toAbstractRange :: IsAbstractRange o => o -> AbstractRange
toAbstractRange = AbstractRange . coerce

instance IsAbstractRange AbstractRange

instance IsGObject AbstractRange where
  typeGType _ = gTypeAbstractRange
  {-# INLINE typeGType #-}

noAbstractRange :: Maybe AbstractRange
noAbstractRange = Nothing
{-# INLINE noAbstractRange #-}

gTypeAbstractRange :: JSM GType
gTypeAbstractRange = GType . Object <$> jsg "AbstractRange"

-- | Functions for this interface are in "JSDOM.AbstractWorker" (html).
newtype AbstractWorker = AbstractWorker { unAbstractWorker :: JSVal }

instance PToJSVal AbstractWorker where
  pToJSVal = unAbstractWorker
  {-# INLINE pToJSVal #-}

instance PFromJSVal AbstractWorker where
  pFromJSVal = AbstractWorker
  {-# INLINE pFromJSVal #-}

instance ToJSVal AbstractWorker where
  toJSVal = return . unAbstractWorker
  {-# INLINE toJSVal #-}

instance FromJSVal AbstractWorker where
  fromJSVal v = fmap AbstractWorker <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AbstractWorker
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AbstractWorker where
  makeObject = makeObject . unAbstractWorker

class (IsGObject o) => IsAbstractWorker o
toAbstractWorker :: IsAbstractWorker o => o -> AbstractWorker
toAbstractWorker = AbstractWorker . coerce

instance IsAbstractWorker AbstractWorker

instance IsGObject AbstractWorker where
  typeGType _ = gTypeAbstractWorker
  {-# INLINE typeGType #-}

noAbstractWorker :: Maybe AbstractWorker
noAbstractWorker = Nothing
{-# INLINE noAbstractWorker #-}

gTypeAbstractWorker :: JSM GType
gTypeAbstractWorker = GType . Object <$> jsg "Object"

-- | Dictionary AddEventListenerOptions (dom)
newtype AddEventListenerOptions = AddEventListenerOptions { unAddEventListenerOptions :: JSVal }

instance PToJSVal AddEventListenerOptions where
  pToJSVal = unAddEventListenerOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal AddEventListenerOptions where
  pFromJSVal = AddEventListenerOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal AddEventListenerOptions where
  toJSVal = return . unAddEventListenerOptions
  {-# INLINE toJSVal #-}

instance FromJSVal AddEventListenerOptions where
  fromJSVal v = fmap AddEventListenerOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AddEventListenerOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AddEventListenerOptions where
  makeObject = makeObject . unAddEventListenerOptions

instance IsEventListenerOptions AddEventListenerOptions

instance IsGObject AddEventListenerOptions where
  typeGType _ = gTypeAddEventListenerOptions
  {-# INLINE typeGType #-}

noAddEventListenerOptions :: Maybe AddEventListenerOptions
noAddEventListenerOptions = Nothing
{-# INLINE noAddEventListenerOptions #-}

gTypeAddEventListenerOptions :: JSM GType
gTypeAddEventListenerOptions = GType . Object <$> jsg "Object"

-- | Dictionary AddressErrors (payment-request)
newtype AddressErrors = AddressErrors { unAddressErrors :: JSVal }

instance PToJSVal AddressErrors where
  pToJSVal = unAddressErrors
  {-# INLINE pToJSVal #-}

instance PFromJSVal AddressErrors where
  pFromJSVal = AddressErrors
  {-# INLINE pFromJSVal #-}

instance ToJSVal AddressErrors where
  toJSVal = return . unAddressErrors
  {-# INLINE toJSVal #-}

instance FromJSVal AddressErrors where
  fromJSVal v = fmap AddressErrors <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AddressErrors
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AddressErrors where
  makeObject = makeObject . unAddressErrors


instance IsGObject AddressErrors where
  typeGType _ = gTypeAddressErrors
  {-# INLINE typeGType #-}

noAddressErrors :: Maybe AddressErrors
noAddressErrors = Nothing
{-# INLINE noAddressErrors #-}

gTypeAddressErrors :: JSM GType
gTypeAddressErrors = GType . Object <$> jsg "Object"

-- | Dictionary AllAcceptedCredentialsOptions (webauthn-4)
newtype AllAcceptedCredentialsOptions = AllAcceptedCredentialsOptions { unAllAcceptedCredentialsOptions :: JSVal }

instance PToJSVal AllAcceptedCredentialsOptions where
  pToJSVal = unAllAcceptedCredentialsOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal AllAcceptedCredentialsOptions where
  pFromJSVal = AllAcceptedCredentialsOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal AllAcceptedCredentialsOptions where
  toJSVal = return . unAllAcceptedCredentialsOptions
  {-# INLINE toJSVal #-}

instance FromJSVal AllAcceptedCredentialsOptions where
  fromJSVal v = fmap AllAcceptedCredentialsOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AllAcceptedCredentialsOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AllAcceptedCredentialsOptions where
  makeObject = makeObject . unAllAcceptedCredentialsOptions


instance IsGObject AllAcceptedCredentialsOptions where
  typeGType _ = gTypeAllAcceptedCredentialsOptions
  {-# INLINE typeGType #-}

noAllAcceptedCredentialsOptions :: Maybe AllAcceptedCredentialsOptions
noAllAcceptedCredentialsOptions = Nothing
{-# INLINE noAllAcceptedCredentialsOptions #-}

gTypeAllAcceptedCredentialsOptions :: JSM GType
gTypeAllAcceptedCredentialsOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AnalyserNode" (webaudio-1.1).
newtype AnalyserNode = AnalyserNode { unAnalyserNode :: JSVal }

instance PToJSVal AnalyserNode where
  pToJSVal = unAnalyserNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal AnalyserNode where
  pFromJSVal = AnalyserNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal AnalyserNode where
  toJSVal = return . unAnalyserNode
  {-# INLINE toJSVal #-}

instance FromJSVal AnalyserNode where
  fromJSVal v = fmap AnalyserNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AnalyserNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AnalyserNode where
  makeObject = makeObject . unAnalyserNode

instance IsAudioNode AnalyserNode
instance IsEventTarget AnalyserNode

instance IsGObject AnalyserNode where
  typeGType _ = gTypeAnalyserNode
  {-# INLINE typeGType #-}

noAnalyserNode :: Maybe AnalyserNode
noAnalyserNode = Nothing
{-# INLINE noAnalyserNode #-}

gTypeAnalyserNode :: JSM GType
gTypeAnalyserNode = GType . Object <$> jsg "AnalyserNode"

-- | Dictionary AnalyserOptions (webaudio-1.1)
newtype AnalyserOptions = AnalyserOptions { unAnalyserOptions :: JSVal }

instance PToJSVal AnalyserOptions where
  pToJSVal = unAnalyserOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal AnalyserOptions where
  pFromJSVal = AnalyserOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal AnalyserOptions where
  toJSVal = return . unAnalyserOptions
  {-# INLINE toJSVal #-}

instance FromJSVal AnalyserOptions where
  fromJSVal v = fmap AnalyserOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AnalyserOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AnalyserOptions where
  makeObject = makeObject . unAnalyserOptions

instance IsAudioNodeOptions AnalyserOptions

instance IsGObject AnalyserOptions where
  typeGType _ = gTypeAnalyserOptions
  {-# INLINE typeGType #-}

noAnalyserOptions :: Maybe AnalyserOptions
noAnalyserOptions = Nothing
{-# INLINE noAnalyserOptions #-}

gTypeAnalyserOptions :: JSM GType
gTypeAnalyserOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Animatable" (web-animations-1).
newtype Animatable = Animatable { unAnimatable :: JSVal }

instance PToJSVal Animatable where
  pToJSVal = unAnimatable
  {-# INLINE pToJSVal #-}

instance PFromJSVal Animatable where
  pFromJSVal = Animatable
  {-# INLINE pFromJSVal #-}

instance ToJSVal Animatable where
  toJSVal = return . unAnimatable
  {-# INLINE toJSVal #-}

instance FromJSVal Animatable where
  fromJSVal v = fmap Animatable <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Animatable
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Animatable where
  makeObject = makeObject . unAnimatable

class (IsGObject o) => IsAnimatable o
toAnimatable :: IsAnimatable o => o -> Animatable
toAnimatable = Animatable . coerce

instance IsAnimatable Animatable

instance IsGObject Animatable where
  typeGType _ = gTypeAnimatable
  {-# INLINE typeGType #-}

noAnimatable :: Maybe Animatable
noAnimatable = Nothing
{-# INLINE noAnimatable #-}

gTypeAnimatable :: JSM GType
gTypeAnimatable = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Animation" (web-animations-1).
newtype Animation = Animation { unAnimation :: JSVal }

instance PToJSVal Animation where
  pToJSVal = unAnimation
  {-# INLINE pToJSVal #-}

instance PFromJSVal Animation where
  pFromJSVal = Animation
  {-# INLINE pFromJSVal #-}

instance ToJSVal Animation where
  toJSVal = return . unAnimation
  {-# INLINE toJSVal #-}

instance FromJSVal Animation where
  fromJSVal v = fmap Animation <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Animation
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Animation where
  makeObject = makeObject . unAnimation

class (IsEventTarget o, IsGObject o) => IsAnimation o
toAnimation :: IsAnimation o => o -> Animation
toAnimation = Animation . coerce

instance IsAnimation Animation
instance IsEventTarget Animation

instance IsGObject Animation where
  typeGType _ = gTypeAnimation
  {-# INLINE typeGType #-}

noAnimation :: Maybe Animation
noAnimation = Nothing
{-# INLINE noAnimation #-}

gTypeAnimation :: JSM GType
gTypeAnimation = GType . Object <$> jsg "Animation"

-- | Functions for this interface are in "JSDOM.AnimationEffect" (web-animations-1).
newtype AnimationEffect = AnimationEffect { unAnimationEffect :: JSVal }

instance PToJSVal AnimationEffect where
  pToJSVal = unAnimationEffect
  {-# INLINE pToJSVal #-}

instance PFromJSVal AnimationEffect where
  pFromJSVal = AnimationEffect
  {-# INLINE pFromJSVal #-}

instance ToJSVal AnimationEffect where
  toJSVal = return . unAnimationEffect
  {-# INLINE toJSVal #-}

instance FromJSVal AnimationEffect where
  fromJSVal v = fmap AnimationEffect <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AnimationEffect
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AnimationEffect where
  makeObject = makeObject . unAnimationEffect

class (IsGObject o) => IsAnimationEffect o
toAnimationEffect :: IsAnimationEffect o => o -> AnimationEffect
toAnimationEffect = AnimationEffect . coerce

instance IsAnimationEffect AnimationEffect

instance IsGObject AnimationEffect where
  typeGType _ = gTypeAnimationEffect
  {-# INLINE typeGType #-}

noAnimationEffect :: Maybe AnimationEffect
noAnimationEffect = Nothing
{-# INLINE noAnimationEffect #-}

gTypeAnimationEffect :: JSM GType
gTypeAnimationEffect = GType . Object <$> jsg "AnimationEffect"

-- | Functions for this interface are in "JSDOM.AnimationEvent" (css-animations-1).
newtype AnimationEvent = AnimationEvent { unAnimationEvent :: JSVal }

instance PToJSVal AnimationEvent where
  pToJSVal = unAnimationEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal AnimationEvent where
  pFromJSVal = AnimationEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal AnimationEvent where
  toJSVal = return . unAnimationEvent
  {-# INLINE toJSVal #-}

instance FromJSVal AnimationEvent where
  fromJSVal v = fmap AnimationEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AnimationEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AnimationEvent where
  makeObject = makeObject . unAnimationEvent

instance IsEvent AnimationEvent

instance IsGObject AnimationEvent where
  typeGType _ = gTypeAnimationEvent
  {-# INLINE typeGType #-}

noAnimationEvent :: Maybe AnimationEvent
noAnimationEvent = Nothing
{-# INLINE noAnimationEvent #-}

gTypeAnimationEvent :: JSM GType
gTypeAnimationEvent = GType . Object <$> jsg "AnimationEvent"

-- | Dictionary AnimationEventInit (css-animations-1)
newtype AnimationEventInit = AnimationEventInit { unAnimationEventInit :: JSVal }

instance PToJSVal AnimationEventInit where
  pToJSVal = unAnimationEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal AnimationEventInit where
  pFromJSVal = AnimationEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal AnimationEventInit where
  toJSVal = return . unAnimationEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal AnimationEventInit where
  fromJSVal v = fmap AnimationEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AnimationEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AnimationEventInit where
  makeObject = makeObject . unAnimationEventInit

instance IsEventInit AnimationEventInit

instance IsGObject AnimationEventInit where
  typeGType _ = gTypeAnimationEventInit
  {-# INLINE typeGType #-}

noAnimationEventInit :: Maybe AnimationEventInit
noAnimationEventInit = Nothing
{-# INLINE noAnimationEventInit #-}

gTypeAnimationEventInit :: JSM GType
gTypeAnimationEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AnimationFrameProvider" (html).
newtype AnimationFrameProvider = AnimationFrameProvider { unAnimationFrameProvider :: JSVal }

instance PToJSVal AnimationFrameProvider where
  pToJSVal = unAnimationFrameProvider
  {-# INLINE pToJSVal #-}

instance PFromJSVal AnimationFrameProvider where
  pFromJSVal = AnimationFrameProvider
  {-# INLINE pFromJSVal #-}

instance ToJSVal AnimationFrameProvider where
  toJSVal = return . unAnimationFrameProvider
  {-# INLINE toJSVal #-}

instance FromJSVal AnimationFrameProvider where
  fromJSVal v = fmap AnimationFrameProvider <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AnimationFrameProvider
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AnimationFrameProvider where
  makeObject = makeObject . unAnimationFrameProvider

class (IsGObject o) => IsAnimationFrameProvider o
toAnimationFrameProvider :: IsAnimationFrameProvider o => o -> AnimationFrameProvider
toAnimationFrameProvider = AnimationFrameProvider . coerce

instance IsAnimationFrameProvider AnimationFrameProvider

instance IsGObject AnimationFrameProvider where
  typeGType _ = gTypeAnimationFrameProvider
  {-# INLINE typeGType #-}

noAnimationFrameProvider :: Maybe AnimationFrameProvider
noAnimationFrameProvider = Nothing
{-# INLINE noAnimationFrameProvider #-}

gTypeAnimationFrameProvider :: JSM GType
gTypeAnimationFrameProvider = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AnimationPlaybackEvent" (web-animations-2).
newtype AnimationPlaybackEvent = AnimationPlaybackEvent { unAnimationPlaybackEvent :: JSVal }

instance PToJSVal AnimationPlaybackEvent where
  pToJSVal = unAnimationPlaybackEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal AnimationPlaybackEvent where
  pFromJSVal = AnimationPlaybackEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal AnimationPlaybackEvent where
  toJSVal = return . unAnimationPlaybackEvent
  {-# INLINE toJSVal #-}

instance FromJSVal AnimationPlaybackEvent where
  fromJSVal v = fmap AnimationPlaybackEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AnimationPlaybackEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AnimationPlaybackEvent where
  makeObject = makeObject . unAnimationPlaybackEvent

instance IsEvent AnimationPlaybackEvent

instance IsGObject AnimationPlaybackEvent where
  typeGType _ = gTypeAnimationPlaybackEvent
  {-# INLINE typeGType #-}

noAnimationPlaybackEvent :: Maybe AnimationPlaybackEvent
noAnimationPlaybackEvent = Nothing
{-# INLINE noAnimationPlaybackEvent #-}

gTypeAnimationPlaybackEvent :: JSM GType
gTypeAnimationPlaybackEvent = GType . Object <$> jsg "AnimationPlaybackEvent"

-- | Dictionary AnimationPlaybackEventInit (web-animations-2)
newtype AnimationPlaybackEventInit = AnimationPlaybackEventInit { unAnimationPlaybackEventInit :: JSVal }

instance PToJSVal AnimationPlaybackEventInit where
  pToJSVal = unAnimationPlaybackEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal AnimationPlaybackEventInit where
  pFromJSVal = AnimationPlaybackEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal AnimationPlaybackEventInit where
  toJSVal = return . unAnimationPlaybackEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal AnimationPlaybackEventInit where
  fromJSVal v = fmap AnimationPlaybackEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AnimationPlaybackEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AnimationPlaybackEventInit where
  makeObject = makeObject . unAnimationPlaybackEventInit

instance IsEventInit AnimationPlaybackEventInit

instance IsGObject AnimationPlaybackEventInit where
  typeGType _ = gTypeAnimationPlaybackEventInit
  {-# INLINE typeGType #-}

noAnimationPlaybackEventInit :: Maybe AnimationPlaybackEventInit
noAnimationPlaybackEventInit = Nothing
{-# INLINE noAnimationPlaybackEventInit #-}

gTypeAnimationPlaybackEventInit :: JSM GType
gTypeAnimationPlaybackEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AnimationTimeline" (web-animations-1).
newtype AnimationTimeline = AnimationTimeline { unAnimationTimeline :: JSVal }

instance PToJSVal AnimationTimeline where
  pToJSVal = unAnimationTimeline
  {-# INLINE pToJSVal #-}

instance PFromJSVal AnimationTimeline where
  pFromJSVal = AnimationTimeline
  {-# INLINE pFromJSVal #-}

instance ToJSVal AnimationTimeline where
  toJSVal = return . unAnimationTimeline
  {-# INLINE toJSVal #-}

instance FromJSVal AnimationTimeline where
  fromJSVal v = fmap AnimationTimeline <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AnimationTimeline
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AnimationTimeline where
  makeObject = makeObject . unAnimationTimeline

class (IsGObject o) => IsAnimationTimeline o
toAnimationTimeline :: IsAnimationTimeline o => o -> AnimationTimeline
toAnimationTimeline = AnimationTimeline . coerce

instance IsAnimationTimeline AnimationTimeline

instance IsGObject AnimationTimeline where
  typeGType _ = gTypeAnimationTimeline
  {-# INLINE typeGType #-}

noAnimationTimeline :: Maybe AnimationTimeline
noAnimationTimeline = Nothing
{-# INLINE noAnimationTimeline #-}

gTypeAnimationTimeline :: JSM GType
gTypeAnimationTimeline = GType . Object <$> jsg "AnimationTimeline"

-- | Functions for this interface are in "JSDOM.AnimationTrigger" (animation-triggers-1).
newtype AnimationTrigger = AnimationTrigger { unAnimationTrigger :: JSVal }

instance PToJSVal AnimationTrigger where
  pToJSVal = unAnimationTrigger
  {-# INLINE pToJSVal #-}

instance PFromJSVal AnimationTrigger where
  pFromJSVal = AnimationTrigger
  {-# INLINE pFromJSVal #-}

instance ToJSVal AnimationTrigger where
  toJSVal = return . unAnimationTrigger
  {-# INLINE toJSVal #-}

instance FromJSVal AnimationTrigger where
  fromJSVal v = fmap AnimationTrigger <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AnimationTrigger
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AnimationTrigger where
  makeObject = makeObject . unAnimationTrigger


instance IsGObject AnimationTrigger where
  typeGType _ = gTypeAnimationTrigger
  {-# INLINE typeGType #-}

noAnimationTrigger :: Maybe AnimationTrigger
noAnimationTrigger = Nothing
{-# INLINE noAnimationTrigger #-}

gTypeAnimationTrigger :: JSM GType
gTypeAnimationTrigger = GType . Object <$> jsg "AnimationTrigger"

-- | Dictionary AriaNotificationOptions (wai-aria-1.3)
newtype AriaNotificationOptions = AriaNotificationOptions { unAriaNotificationOptions :: JSVal }

instance PToJSVal AriaNotificationOptions where
  pToJSVal = unAriaNotificationOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal AriaNotificationOptions where
  pFromJSVal = AriaNotificationOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal AriaNotificationOptions where
  toJSVal = return . unAriaNotificationOptions
  {-# INLINE toJSVal #-}

instance FromJSVal AriaNotificationOptions where
  fromJSVal v = fmap AriaNotificationOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AriaNotificationOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AriaNotificationOptions where
  makeObject = makeObject . unAriaNotificationOptions


instance IsGObject AriaNotificationOptions where
  typeGType _ = gTypeAriaNotificationOptions
  {-# INLINE typeGType #-}

noAriaNotificationOptions :: Maybe AriaNotificationOptions
noAriaNotificationOptions = Nothing
{-# INLINE noAriaNotificationOptions #-}

gTypeAriaNotificationOptions :: JSM GType
gTypeAriaNotificationOptions = GType . Object <$> jsg "Object"

-- | Dictionary AssignedNodesOptions (html)
newtype AssignedNodesOptions = AssignedNodesOptions { unAssignedNodesOptions :: JSVal }

instance PToJSVal AssignedNodesOptions where
  pToJSVal = unAssignedNodesOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal AssignedNodesOptions where
  pFromJSVal = AssignedNodesOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal AssignedNodesOptions where
  toJSVal = return . unAssignedNodesOptions
  {-# INLINE toJSVal #-}

instance FromJSVal AssignedNodesOptions where
  fromJSVal v = fmap AssignedNodesOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AssignedNodesOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AssignedNodesOptions where
  makeObject = makeObject . unAssignedNodesOptions


instance IsGObject AssignedNodesOptions where
  typeGType _ = gTypeAssignedNodesOptions
  {-# INLINE typeGType #-}

noAssignedNodesOptions :: Maybe AssignedNodesOptions
noAssignedNodesOptions = Nothing
{-# INLINE noAssignedNodesOptions #-}

gTypeAssignedNodesOptions :: JSM GType
gTypeAssignedNodesOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Attr" (dom).
newtype Attr = Attr { unAttr :: JSVal }

instance PToJSVal Attr where
  pToJSVal = unAttr
  {-# INLINE pToJSVal #-}

instance PFromJSVal Attr where
  pFromJSVal = Attr
  {-# INLINE pFromJSVal #-}

instance ToJSVal Attr where
  toJSVal = return . unAttr
  {-# INLINE toJSVal #-}

instance FromJSVal Attr where
  fromJSVal v = fmap Attr <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Attr
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Attr where
  makeObject = makeObject . unAttr

instance IsNode Attr
instance IsEventTarget Attr

instance IsGObject Attr where
  typeGType _ = gTypeAttr
  {-# INLINE typeGType #-}

noAttr :: Maybe Attr
noAttr = Nothing
{-# INLINE noAttr #-}

gTypeAttr :: JSM GType
gTypeAttr = GType . Object <$> jsg "Attr"

-- | Functions for this interface are in "JSDOM.AudioBuffer" (webaudio-1.1).
newtype AudioBuffer = AudioBuffer { unAudioBuffer :: JSVal }

instance PToJSVal AudioBuffer where
  pToJSVal = unAudioBuffer
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioBuffer where
  pFromJSVal = AudioBuffer
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioBuffer where
  toJSVal = return . unAudioBuffer
  {-# INLINE toJSVal #-}

instance FromJSVal AudioBuffer where
  fromJSVal v = fmap AudioBuffer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioBuffer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioBuffer where
  makeObject = makeObject . unAudioBuffer


instance IsGObject AudioBuffer where
  typeGType _ = gTypeAudioBuffer
  {-# INLINE typeGType #-}

noAudioBuffer :: Maybe AudioBuffer
noAudioBuffer = Nothing
{-# INLINE noAudioBuffer #-}

gTypeAudioBuffer :: JSM GType
gTypeAudioBuffer = GType . Object <$> jsg "AudioBuffer"

-- | Dictionary AudioBufferOptions (webaudio-1.1)
newtype AudioBufferOptions = AudioBufferOptions { unAudioBufferOptions :: JSVal }

instance PToJSVal AudioBufferOptions where
  pToJSVal = unAudioBufferOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioBufferOptions where
  pFromJSVal = AudioBufferOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioBufferOptions where
  toJSVal = return . unAudioBufferOptions
  {-# INLINE toJSVal #-}

instance FromJSVal AudioBufferOptions where
  fromJSVal v = fmap AudioBufferOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioBufferOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioBufferOptions where
  makeObject = makeObject . unAudioBufferOptions


instance IsGObject AudioBufferOptions where
  typeGType _ = gTypeAudioBufferOptions
  {-# INLINE typeGType #-}

noAudioBufferOptions :: Maybe AudioBufferOptions
noAudioBufferOptions = Nothing
{-# INLINE noAudioBufferOptions #-}

gTypeAudioBufferOptions :: JSM GType
gTypeAudioBufferOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AudioBufferSourceNode" (webaudio-1.1).
newtype AudioBufferSourceNode = AudioBufferSourceNode { unAudioBufferSourceNode :: JSVal }

instance PToJSVal AudioBufferSourceNode where
  pToJSVal = unAudioBufferSourceNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioBufferSourceNode where
  pFromJSVal = AudioBufferSourceNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioBufferSourceNode where
  toJSVal = return . unAudioBufferSourceNode
  {-# INLINE toJSVal #-}

instance FromJSVal AudioBufferSourceNode where
  fromJSVal v = fmap AudioBufferSourceNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioBufferSourceNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioBufferSourceNode where
  makeObject = makeObject . unAudioBufferSourceNode

instance IsAudioScheduledSourceNode AudioBufferSourceNode
instance IsAudioNode AudioBufferSourceNode
instance IsEventTarget AudioBufferSourceNode

instance IsGObject AudioBufferSourceNode where
  typeGType _ = gTypeAudioBufferSourceNode
  {-# INLINE typeGType #-}

noAudioBufferSourceNode :: Maybe AudioBufferSourceNode
noAudioBufferSourceNode = Nothing
{-# INLINE noAudioBufferSourceNode #-}

gTypeAudioBufferSourceNode :: JSM GType
gTypeAudioBufferSourceNode = GType . Object <$> jsg "AudioBufferSourceNode"

-- | Dictionary AudioBufferSourceOptions (webaudio-1.1)
newtype AudioBufferSourceOptions = AudioBufferSourceOptions { unAudioBufferSourceOptions :: JSVal }

instance PToJSVal AudioBufferSourceOptions where
  pToJSVal = unAudioBufferSourceOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioBufferSourceOptions where
  pFromJSVal = AudioBufferSourceOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioBufferSourceOptions where
  toJSVal = return . unAudioBufferSourceOptions
  {-# INLINE toJSVal #-}

instance FromJSVal AudioBufferSourceOptions where
  fromJSVal v = fmap AudioBufferSourceOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioBufferSourceOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioBufferSourceOptions where
  makeObject = makeObject . unAudioBufferSourceOptions


instance IsGObject AudioBufferSourceOptions where
  typeGType _ = gTypeAudioBufferSourceOptions
  {-# INLINE typeGType #-}

noAudioBufferSourceOptions :: Maybe AudioBufferSourceOptions
noAudioBufferSourceOptions = Nothing
{-# INLINE noAudioBufferSourceOptions #-}

gTypeAudioBufferSourceOptions :: JSM GType
gTypeAudioBufferSourceOptions = GType . Object <$> jsg "Object"

-- | Dictionary AudioConfiguration (media-capabilities)
newtype AudioConfiguration = AudioConfiguration { unAudioConfiguration :: JSVal }

instance PToJSVal AudioConfiguration where
  pToJSVal = unAudioConfiguration
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioConfiguration where
  pFromJSVal = AudioConfiguration
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioConfiguration where
  toJSVal = return . unAudioConfiguration
  {-# INLINE toJSVal #-}

instance FromJSVal AudioConfiguration where
  fromJSVal v = fmap AudioConfiguration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioConfiguration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioConfiguration where
  makeObject = makeObject . unAudioConfiguration


instance IsGObject AudioConfiguration where
  typeGType _ = gTypeAudioConfiguration
  {-# INLINE typeGType #-}

noAudioConfiguration :: Maybe AudioConfiguration
noAudioConfiguration = Nothing
{-# INLINE noAudioConfiguration #-}

gTypeAudioConfiguration :: JSM GType
gTypeAudioConfiguration = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AudioContext" (webaudio-1.1).
newtype AudioContext = AudioContext { unAudioContext :: JSVal }

instance PToJSVal AudioContext where
  pToJSVal = unAudioContext
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioContext where
  pFromJSVal = AudioContext
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioContext where
  toJSVal = return . unAudioContext
  {-# INLINE toJSVal #-}

instance FromJSVal AudioContext where
  fromJSVal v = fmap AudioContext <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioContext
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioContext where
  makeObject = makeObject . unAudioContext

instance IsBaseAudioContext AudioContext
instance IsEventTarget AudioContext

instance IsGObject AudioContext where
  typeGType _ = gTypeAudioContext
  {-# INLINE typeGType #-}

noAudioContext :: Maybe AudioContext
noAudioContext = Nothing
{-# INLINE noAudioContext #-}

gTypeAudioContext :: JSM GType
gTypeAudioContext = GType . Object <$> jsg "AudioContext"

-- | Dictionary AudioContextOptions (webaudio-1.1)
newtype AudioContextOptions = AudioContextOptions { unAudioContextOptions :: JSVal }

instance PToJSVal AudioContextOptions where
  pToJSVal = unAudioContextOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioContextOptions where
  pFromJSVal = AudioContextOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioContextOptions where
  toJSVal = return . unAudioContextOptions
  {-# INLINE toJSVal #-}

instance FromJSVal AudioContextOptions where
  fromJSVal v = fmap AudioContextOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioContextOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioContextOptions where
  makeObject = makeObject . unAudioContextOptions


instance IsGObject AudioContextOptions where
  typeGType _ = gTypeAudioContextOptions
  {-# INLINE typeGType #-}

noAudioContextOptions :: Maybe AudioContextOptions
noAudioContextOptions = Nothing
{-# INLINE noAudioContextOptions #-}

gTypeAudioContextOptions :: JSM GType
gTypeAudioContextOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AudioData" (webcodecs).
newtype AudioData = AudioData { unAudioData :: JSVal }

instance PToJSVal AudioData where
  pToJSVal = unAudioData
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioData where
  pFromJSVal = AudioData
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioData where
  toJSVal = return . unAudioData
  {-# INLINE toJSVal #-}

instance FromJSVal AudioData where
  fromJSVal v = fmap AudioData <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioData
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioData where
  makeObject = makeObject . unAudioData


instance IsGObject AudioData where
  typeGType _ = gTypeAudioData
  {-# INLINE typeGType #-}

noAudioData :: Maybe AudioData
noAudioData = Nothing
{-# INLINE noAudioData #-}

gTypeAudioData :: JSM GType
gTypeAudioData = GType . Object <$> jsg "AudioData"

-- | Dictionary AudioDataCopyToOptions (webcodecs)
newtype AudioDataCopyToOptions = AudioDataCopyToOptions { unAudioDataCopyToOptions :: JSVal }

instance PToJSVal AudioDataCopyToOptions where
  pToJSVal = unAudioDataCopyToOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioDataCopyToOptions where
  pFromJSVal = AudioDataCopyToOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioDataCopyToOptions where
  toJSVal = return . unAudioDataCopyToOptions
  {-# INLINE toJSVal #-}

instance FromJSVal AudioDataCopyToOptions where
  fromJSVal v = fmap AudioDataCopyToOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioDataCopyToOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioDataCopyToOptions where
  makeObject = makeObject . unAudioDataCopyToOptions


instance IsGObject AudioDataCopyToOptions where
  typeGType _ = gTypeAudioDataCopyToOptions
  {-# INLINE typeGType #-}

noAudioDataCopyToOptions :: Maybe AudioDataCopyToOptions
noAudioDataCopyToOptions = Nothing
{-# INLINE noAudioDataCopyToOptions #-}

gTypeAudioDataCopyToOptions :: JSM GType
gTypeAudioDataCopyToOptions = GType . Object <$> jsg "Object"

-- | Dictionary AudioDataInit (webcodecs)
newtype AudioDataInit = AudioDataInit { unAudioDataInit :: JSVal }

instance PToJSVal AudioDataInit where
  pToJSVal = unAudioDataInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioDataInit where
  pFromJSVal = AudioDataInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioDataInit where
  toJSVal = return . unAudioDataInit
  {-# INLINE toJSVal #-}

instance FromJSVal AudioDataInit where
  fromJSVal v = fmap AudioDataInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioDataInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioDataInit where
  makeObject = makeObject . unAudioDataInit


instance IsGObject AudioDataInit where
  typeGType _ = gTypeAudioDataInit
  {-# INLINE typeGType #-}

noAudioDataInit :: Maybe AudioDataInit
noAudioDataInit = Nothing
{-# INLINE noAudioDataInit #-}

gTypeAudioDataInit :: JSM GType
gTypeAudioDataInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AudioDecoder" (webcodecs).
newtype AudioDecoder = AudioDecoder { unAudioDecoder :: JSVal }

instance PToJSVal AudioDecoder where
  pToJSVal = unAudioDecoder
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioDecoder where
  pFromJSVal = AudioDecoder
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioDecoder where
  toJSVal = return . unAudioDecoder
  {-# INLINE toJSVal #-}

instance FromJSVal AudioDecoder where
  fromJSVal v = fmap AudioDecoder <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioDecoder
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioDecoder where
  makeObject = makeObject . unAudioDecoder

instance IsEventTarget AudioDecoder

instance IsGObject AudioDecoder where
  typeGType _ = gTypeAudioDecoder
  {-# INLINE typeGType #-}

noAudioDecoder :: Maybe AudioDecoder
noAudioDecoder = Nothing
{-# INLINE noAudioDecoder #-}

gTypeAudioDecoder :: JSM GType
gTypeAudioDecoder = GType . Object <$> jsg "AudioDecoder"

-- | Dictionary AudioDecoderConfig (webcodecs)
newtype AudioDecoderConfig = AudioDecoderConfig { unAudioDecoderConfig :: JSVal }

instance PToJSVal AudioDecoderConfig where
  pToJSVal = unAudioDecoderConfig
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioDecoderConfig where
  pFromJSVal = AudioDecoderConfig
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioDecoderConfig where
  toJSVal = return . unAudioDecoderConfig
  {-# INLINE toJSVal #-}

instance FromJSVal AudioDecoderConfig where
  fromJSVal v = fmap AudioDecoderConfig <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioDecoderConfig
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioDecoderConfig where
  makeObject = makeObject . unAudioDecoderConfig


instance IsGObject AudioDecoderConfig where
  typeGType _ = gTypeAudioDecoderConfig
  {-# INLINE typeGType #-}

noAudioDecoderConfig :: Maybe AudioDecoderConfig
noAudioDecoderConfig = Nothing
{-# INLINE noAudioDecoderConfig #-}

gTypeAudioDecoderConfig :: JSM GType
gTypeAudioDecoderConfig = GType . Object <$> jsg "Object"

-- | Dictionary AudioDecoderInit (webcodecs)
newtype AudioDecoderInit = AudioDecoderInit { unAudioDecoderInit :: JSVal }

instance PToJSVal AudioDecoderInit where
  pToJSVal = unAudioDecoderInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioDecoderInit where
  pFromJSVal = AudioDecoderInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioDecoderInit where
  toJSVal = return . unAudioDecoderInit
  {-# INLINE toJSVal #-}

instance FromJSVal AudioDecoderInit where
  fromJSVal v = fmap AudioDecoderInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioDecoderInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioDecoderInit where
  makeObject = makeObject . unAudioDecoderInit


instance IsGObject AudioDecoderInit where
  typeGType _ = gTypeAudioDecoderInit
  {-# INLINE typeGType #-}

noAudioDecoderInit :: Maybe AudioDecoderInit
noAudioDecoderInit = Nothing
{-# INLINE noAudioDecoderInit #-}

gTypeAudioDecoderInit :: JSM GType
gTypeAudioDecoderInit = GType . Object <$> jsg "Object"

-- | Dictionary AudioDecoderSupport (webcodecs)
newtype AudioDecoderSupport = AudioDecoderSupport { unAudioDecoderSupport :: JSVal }

instance PToJSVal AudioDecoderSupport where
  pToJSVal = unAudioDecoderSupport
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioDecoderSupport where
  pFromJSVal = AudioDecoderSupport
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioDecoderSupport where
  toJSVal = return . unAudioDecoderSupport
  {-# INLINE toJSVal #-}

instance FromJSVal AudioDecoderSupport where
  fromJSVal v = fmap AudioDecoderSupport <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioDecoderSupport
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioDecoderSupport where
  makeObject = makeObject . unAudioDecoderSupport


instance IsGObject AudioDecoderSupport where
  typeGType _ = gTypeAudioDecoderSupport
  {-# INLINE typeGType #-}

noAudioDecoderSupport :: Maybe AudioDecoderSupport
noAudioDecoderSupport = Nothing
{-# INLINE noAudioDecoderSupport #-}

gTypeAudioDecoderSupport :: JSM GType
gTypeAudioDecoderSupport = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AudioDestinationNode" (webaudio-1.1).
newtype AudioDestinationNode = AudioDestinationNode { unAudioDestinationNode :: JSVal }

instance PToJSVal AudioDestinationNode where
  pToJSVal = unAudioDestinationNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioDestinationNode where
  pFromJSVal = AudioDestinationNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioDestinationNode where
  toJSVal = return . unAudioDestinationNode
  {-# INLINE toJSVal #-}

instance FromJSVal AudioDestinationNode where
  fromJSVal v = fmap AudioDestinationNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioDestinationNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioDestinationNode where
  makeObject = makeObject . unAudioDestinationNode

instance IsAudioNode AudioDestinationNode
instance IsEventTarget AudioDestinationNode

instance IsGObject AudioDestinationNode where
  typeGType _ = gTypeAudioDestinationNode
  {-# INLINE typeGType #-}

noAudioDestinationNode :: Maybe AudioDestinationNode
noAudioDestinationNode = Nothing
{-# INLINE noAudioDestinationNode #-}

gTypeAudioDestinationNode :: JSM GType
gTypeAudioDestinationNode = GType . Object <$> jsg "AudioDestinationNode"

-- | Functions for this interface are in "JSDOM.AudioEncoder" (webcodecs).
newtype AudioEncoder = AudioEncoder { unAudioEncoder :: JSVal }

instance PToJSVal AudioEncoder where
  pToJSVal = unAudioEncoder
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioEncoder where
  pFromJSVal = AudioEncoder
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioEncoder where
  toJSVal = return . unAudioEncoder
  {-# INLINE toJSVal #-}

instance FromJSVal AudioEncoder where
  fromJSVal v = fmap AudioEncoder <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioEncoder
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioEncoder where
  makeObject = makeObject . unAudioEncoder

instance IsEventTarget AudioEncoder

instance IsGObject AudioEncoder where
  typeGType _ = gTypeAudioEncoder
  {-# INLINE typeGType #-}

noAudioEncoder :: Maybe AudioEncoder
noAudioEncoder = Nothing
{-# INLINE noAudioEncoder #-}

gTypeAudioEncoder :: JSM GType
gTypeAudioEncoder = GType . Object <$> jsg "AudioEncoder"

-- | Dictionary AudioEncoderConfig (webcodecs)
newtype AudioEncoderConfig = AudioEncoderConfig { unAudioEncoderConfig :: JSVal }

instance PToJSVal AudioEncoderConfig where
  pToJSVal = unAudioEncoderConfig
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioEncoderConfig where
  pFromJSVal = AudioEncoderConfig
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioEncoderConfig where
  toJSVal = return . unAudioEncoderConfig
  {-# INLINE toJSVal #-}

instance FromJSVal AudioEncoderConfig where
  fromJSVal v = fmap AudioEncoderConfig <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioEncoderConfig
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioEncoderConfig where
  makeObject = makeObject . unAudioEncoderConfig


instance IsGObject AudioEncoderConfig where
  typeGType _ = gTypeAudioEncoderConfig
  {-# INLINE typeGType #-}

noAudioEncoderConfig :: Maybe AudioEncoderConfig
noAudioEncoderConfig = Nothing
{-# INLINE noAudioEncoderConfig #-}

gTypeAudioEncoderConfig :: JSM GType
gTypeAudioEncoderConfig = GType . Object <$> jsg "Object"

-- | Dictionary AudioEncoderInit (webcodecs)
newtype AudioEncoderInit = AudioEncoderInit { unAudioEncoderInit :: JSVal }

instance PToJSVal AudioEncoderInit where
  pToJSVal = unAudioEncoderInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioEncoderInit where
  pFromJSVal = AudioEncoderInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioEncoderInit where
  toJSVal = return . unAudioEncoderInit
  {-# INLINE toJSVal #-}

instance FromJSVal AudioEncoderInit where
  fromJSVal v = fmap AudioEncoderInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioEncoderInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioEncoderInit where
  makeObject = makeObject . unAudioEncoderInit


instance IsGObject AudioEncoderInit where
  typeGType _ = gTypeAudioEncoderInit
  {-# INLINE typeGType #-}

noAudioEncoderInit :: Maybe AudioEncoderInit
noAudioEncoderInit = Nothing
{-# INLINE noAudioEncoderInit #-}

gTypeAudioEncoderInit :: JSM GType
gTypeAudioEncoderInit = GType . Object <$> jsg "Object"

-- | Dictionary AudioEncoderSupport (webcodecs)
newtype AudioEncoderSupport = AudioEncoderSupport { unAudioEncoderSupport :: JSVal }

instance PToJSVal AudioEncoderSupport where
  pToJSVal = unAudioEncoderSupport
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioEncoderSupport where
  pFromJSVal = AudioEncoderSupport
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioEncoderSupport where
  toJSVal = return . unAudioEncoderSupport
  {-# INLINE toJSVal #-}

instance FromJSVal AudioEncoderSupport where
  fromJSVal v = fmap AudioEncoderSupport <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioEncoderSupport
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioEncoderSupport where
  makeObject = makeObject . unAudioEncoderSupport


instance IsGObject AudioEncoderSupport where
  typeGType _ = gTypeAudioEncoderSupport
  {-# INLINE typeGType #-}

noAudioEncoderSupport :: Maybe AudioEncoderSupport
noAudioEncoderSupport = Nothing
{-# INLINE noAudioEncoderSupport #-}

gTypeAudioEncoderSupport :: JSM GType
gTypeAudioEncoderSupport = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AudioListener" (webaudio-1.1).
newtype AudioListener = AudioListener { unAudioListener :: JSVal }

instance PToJSVal AudioListener where
  pToJSVal = unAudioListener
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioListener where
  pFromJSVal = AudioListener
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioListener where
  toJSVal = return . unAudioListener
  {-# INLINE toJSVal #-}

instance FromJSVal AudioListener where
  fromJSVal v = fmap AudioListener <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioListener
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioListener where
  makeObject = makeObject . unAudioListener


instance IsGObject AudioListener where
  typeGType _ = gTypeAudioListener
  {-# INLINE typeGType #-}

noAudioListener :: Maybe AudioListener
noAudioListener = Nothing
{-# INLINE noAudioListener #-}

gTypeAudioListener :: JSM GType
gTypeAudioListener = GType . Object <$> jsg "AudioListener"

-- | Functions for this interface are in "JSDOM.AudioNode" (webaudio-1.1).
newtype AudioNode = AudioNode { unAudioNode :: JSVal }

instance PToJSVal AudioNode where
  pToJSVal = unAudioNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioNode where
  pFromJSVal = AudioNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioNode where
  toJSVal = return . unAudioNode
  {-# INLINE toJSVal #-}

instance FromJSVal AudioNode where
  fromJSVal v = fmap AudioNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioNode where
  makeObject = makeObject . unAudioNode

class (IsEventTarget o, IsGObject o) => IsAudioNode o
toAudioNode :: IsAudioNode o => o -> AudioNode
toAudioNode = AudioNode . coerce

instance IsAudioNode AudioNode
instance IsEventTarget AudioNode

instance IsGObject AudioNode where
  typeGType _ = gTypeAudioNode
  {-# INLINE typeGType #-}

noAudioNode :: Maybe AudioNode
noAudioNode = Nothing
{-# INLINE noAudioNode #-}

gTypeAudioNode :: JSM GType
gTypeAudioNode = GType . Object <$> jsg "AudioNode"

-- | Dictionary AudioNodeOptions (webaudio-1.1)
newtype AudioNodeOptions = AudioNodeOptions { unAudioNodeOptions :: JSVal }

instance PToJSVal AudioNodeOptions where
  pToJSVal = unAudioNodeOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioNodeOptions where
  pFromJSVal = AudioNodeOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioNodeOptions where
  toJSVal = return . unAudioNodeOptions
  {-# INLINE toJSVal #-}

instance FromJSVal AudioNodeOptions where
  fromJSVal v = fmap AudioNodeOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioNodeOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioNodeOptions where
  makeObject = makeObject . unAudioNodeOptions

class (IsGObject o) => IsAudioNodeOptions o
toAudioNodeOptions :: IsAudioNodeOptions o => o -> AudioNodeOptions
toAudioNodeOptions = AudioNodeOptions . coerce

instance IsAudioNodeOptions AudioNodeOptions

instance IsGObject AudioNodeOptions where
  typeGType _ = gTypeAudioNodeOptions
  {-# INLINE typeGType #-}

noAudioNodeOptions :: Maybe AudioNodeOptions
noAudioNodeOptions = Nothing
{-# INLINE noAudioNodeOptions #-}

gTypeAudioNodeOptions :: JSM GType
gTypeAudioNodeOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AudioParam" (webaudio-1.1).
newtype AudioParam = AudioParam { unAudioParam :: JSVal }

instance PToJSVal AudioParam where
  pToJSVal = unAudioParam
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioParam where
  pFromJSVal = AudioParam
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioParam where
  toJSVal = return . unAudioParam
  {-# INLINE toJSVal #-}

instance FromJSVal AudioParam where
  fromJSVal v = fmap AudioParam <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioParam
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioParam where
  makeObject = makeObject . unAudioParam


instance IsGObject AudioParam where
  typeGType _ = gTypeAudioParam
  {-# INLINE typeGType #-}

noAudioParam :: Maybe AudioParam
noAudioParam = Nothing
{-# INLINE noAudioParam #-}

gTypeAudioParam :: JSM GType
gTypeAudioParam = GType . Object <$> jsg "AudioParam"

-- | Functions for this interface are in "JSDOM.AudioParamMap" (webaudio-1.1).
newtype AudioParamMap = AudioParamMap { unAudioParamMap :: JSVal }

instance PToJSVal AudioParamMap where
  pToJSVal = unAudioParamMap
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioParamMap where
  pFromJSVal = AudioParamMap
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioParamMap where
  toJSVal = return . unAudioParamMap
  {-# INLINE toJSVal #-}

instance FromJSVal AudioParamMap where
  fromJSVal v = fmap AudioParamMap <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioParamMap
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioParamMap where
  makeObject = makeObject . unAudioParamMap


instance IsGObject AudioParamMap where
  typeGType _ = gTypeAudioParamMap
  {-# INLINE typeGType #-}

noAudioParamMap :: Maybe AudioParamMap
noAudioParamMap = Nothing
{-# INLINE noAudioParamMap #-}

gTypeAudioParamMap :: JSM GType
gTypeAudioParamMap = GType . Object <$> jsg "AudioParamMap"

-- | Functions for this interface are in "JSDOM.AudioProcessingEvent" (webaudio-1.1).
newtype AudioProcessingEvent = AudioProcessingEvent { unAudioProcessingEvent :: JSVal }

instance PToJSVal AudioProcessingEvent where
  pToJSVal = unAudioProcessingEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioProcessingEvent where
  pFromJSVal = AudioProcessingEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioProcessingEvent where
  toJSVal = return . unAudioProcessingEvent
  {-# INLINE toJSVal #-}

instance FromJSVal AudioProcessingEvent where
  fromJSVal v = fmap AudioProcessingEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioProcessingEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioProcessingEvent where
  makeObject = makeObject . unAudioProcessingEvent

instance IsEvent AudioProcessingEvent

instance IsGObject AudioProcessingEvent where
  typeGType _ = gTypeAudioProcessingEvent
  {-# INLINE typeGType #-}

noAudioProcessingEvent :: Maybe AudioProcessingEvent
noAudioProcessingEvent = Nothing
{-# INLINE noAudioProcessingEvent #-}

gTypeAudioProcessingEvent :: JSM GType
gTypeAudioProcessingEvent = GType . Object <$> jsg "AudioProcessingEvent"

-- | Dictionary AudioProcessingEventInit (webaudio-1.1)
newtype AudioProcessingEventInit = AudioProcessingEventInit { unAudioProcessingEventInit :: JSVal }

instance PToJSVal AudioProcessingEventInit where
  pToJSVal = unAudioProcessingEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioProcessingEventInit where
  pFromJSVal = AudioProcessingEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioProcessingEventInit where
  toJSVal = return . unAudioProcessingEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal AudioProcessingEventInit where
  fromJSVal v = fmap AudioProcessingEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioProcessingEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioProcessingEventInit where
  makeObject = makeObject . unAudioProcessingEventInit

instance IsEventInit AudioProcessingEventInit

instance IsGObject AudioProcessingEventInit where
  typeGType _ = gTypeAudioProcessingEventInit
  {-# INLINE typeGType #-}

noAudioProcessingEventInit :: Maybe AudioProcessingEventInit
noAudioProcessingEventInit = Nothing
{-# INLINE noAudioProcessingEventInit #-}

gTypeAudioProcessingEventInit :: JSM GType
gTypeAudioProcessingEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AudioScheduledSourceNode" (webaudio-1.1).
newtype AudioScheduledSourceNode = AudioScheduledSourceNode { unAudioScheduledSourceNode :: JSVal }

instance PToJSVal AudioScheduledSourceNode where
  pToJSVal = unAudioScheduledSourceNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioScheduledSourceNode where
  pFromJSVal = AudioScheduledSourceNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioScheduledSourceNode where
  toJSVal = return . unAudioScheduledSourceNode
  {-# INLINE toJSVal #-}

instance FromJSVal AudioScheduledSourceNode where
  fromJSVal v = fmap AudioScheduledSourceNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioScheduledSourceNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioScheduledSourceNode where
  makeObject = makeObject . unAudioScheduledSourceNode

class (IsAudioNode o, IsGObject o) => IsAudioScheduledSourceNode o
toAudioScheduledSourceNode :: IsAudioScheduledSourceNode o => o -> AudioScheduledSourceNode
toAudioScheduledSourceNode = AudioScheduledSourceNode . coerce

instance IsAudioScheduledSourceNode AudioScheduledSourceNode
instance IsAudioNode AudioScheduledSourceNode
instance IsEventTarget AudioScheduledSourceNode

instance IsGObject AudioScheduledSourceNode where
  typeGType _ = gTypeAudioScheduledSourceNode
  {-# INLINE typeGType #-}

noAudioScheduledSourceNode :: Maybe AudioScheduledSourceNode
noAudioScheduledSourceNode = Nothing
{-# INLINE noAudioScheduledSourceNode #-}

gTypeAudioScheduledSourceNode :: JSM GType
gTypeAudioScheduledSourceNode = GType . Object <$> jsg "AudioScheduledSourceNode"

-- | Dictionary AudioSinkOptions (webaudio-1.1)
newtype AudioSinkOptions = AudioSinkOptions { unAudioSinkOptions :: JSVal }

instance PToJSVal AudioSinkOptions where
  pToJSVal = unAudioSinkOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioSinkOptions where
  pFromJSVal = AudioSinkOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioSinkOptions where
  toJSVal = return . unAudioSinkOptions
  {-# INLINE toJSVal #-}

instance FromJSVal AudioSinkOptions where
  fromJSVal v = fmap AudioSinkOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioSinkOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioSinkOptions where
  makeObject = makeObject . unAudioSinkOptions


instance IsGObject AudioSinkOptions where
  typeGType _ = gTypeAudioSinkOptions
  {-# INLINE typeGType #-}

noAudioSinkOptions :: Maybe AudioSinkOptions
noAudioSinkOptions = Nothing
{-# INLINE noAudioSinkOptions #-}

gTypeAudioSinkOptions :: JSM GType
gTypeAudioSinkOptions = GType . Object <$> jsg "Object"

-- | Dictionary AudioTimestamp (webaudio-1.1)
newtype AudioTimestamp = AudioTimestamp { unAudioTimestamp :: JSVal }

instance PToJSVal AudioTimestamp where
  pToJSVal = unAudioTimestamp
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioTimestamp where
  pFromJSVal = AudioTimestamp
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioTimestamp where
  toJSVal = return . unAudioTimestamp
  {-# INLINE toJSVal #-}

instance FromJSVal AudioTimestamp where
  fromJSVal v = fmap AudioTimestamp <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioTimestamp
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioTimestamp where
  makeObject = makeObject . unAudioTimestamp


instance IsGObject AudioTimestamp where
  typeGType _ = gTypeAudioTimestamp
  {-# INLINE typeGType #-}

noAudioTimestamp :: Maybe AudioTimestamp
noAudioTimestamp = Nothing
{-# INLINE noAudioTimestamp #-}

gTypeAudioTimestamp :: JSM GType
gTypeAudioTimestamp = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AudioTrack" (html).
newtype AudioTrack = AudioTrack { unAudioTrack :: JSVal }

instance PToJSVal AudioTrack where
  pToJSVal = unAudioTrack
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioTrack where
  pFromJSVal = AudioTrack
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioTrack where
  toJSVal = return . unAudioTrack
  {-# INLINE toJSVal #-}

instance FromJSVal AudioTrack where
  fromJSVal v = fmap AudioTrack <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioTrack
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioTrack where
  makeObject = makeObject . unAudioTrack


instance IsGObject AudioTrack where
  typeGType _ = gTypeAudioTrack
  {-# INLINE typeGType #-}

noAudioTrack :: Maybe AudioTrack
noAudioTrack = Nothing
{-# INLINE noAudioTrack #-}

gTypeAudioTrack :: JSM GType
gTypeAudioTrack = GType . Object <$> jsg "AudioTrack"

-- | Functions for this interface are in "JSDOM.AudioTrackList" (html).
newtype AudioTrackList = AudioTrackList { unAudioTrackList :: JSVal }

instance PToJSVal AudioTrackList where
  pToJSVal = unAudioTrackList
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioTrackList where
  pFromJSVal = AudioTrackList
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioTrackList where
  toJSVal = return . unAudioTrackList
  {-# INLINE toJSVal #-}

instance FromJSVal AudioTrackList where
  fromJSVal v = fmap AudioTrackList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioTrackList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioTrackList where
  makeObject = makeObject . unAudioTrackList

instance IsEventTarget AudioTrackList

instance IsGObject AudioTrackList where
  typeGType _ = gTypeAudioTrackList
  {-# INLINE typeGType #-}

noAudioTrackList :: Maybe AudioTrackList
noAudioTrackList = Nothing
{-# INLINE noAudioTrackList #-}

gTypeAudioTrackList :: JSM GType
gTypeAudioTrackList = GType . Object <$> jsg "AudioTrackList"

-- | Functions for this interface are in "JSDOM.AudioWorklet" (webaudio-1.1).
newtype AudioWorklet = AudioWorklet { unAudioWorklet :: JSVal }

instance PToJSVal AudioWorklet where
  pToJSVal = unAudioWorklet
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioWorklet where
  pFromJSVal = AudioWorklet
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioWorklet where
  toJSVal = return . unAudioWorklet
  {-# INLINE toJSVal #-}

instance FromJSVal AudioWorklet where
  fromJSVal v = fmap AudioWorklet <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioWorklet
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioWorklet where
  makeObject = makeObject . unAudioWorklet

instance IsWorklet AudioWorklet

instance IsGObject AudioWorklet where
  typeGType _ = gTypeAudioWorklet
  {-# INLINE typeGType #-}

noAudioWorklet :: Maybe AudioWorklet
noAudioWorklet = Nothing
{-# INLINE noAudioWorklet #-}

gTypeAudioWorklet :: JSM GType
gTypeAudioWorklet = GType . Object <$> jsg "AudioWorklet"

-- | Functions for this interface are in "JSDOM.AudioWorkletGlobalScope" (webaudio-1.1).
newtype AudioWorkletGlobalScope = AudioWorkletGlobalScope { unAudioWorkletGlobalScope :: JSVal }

instance PToJSVal AudioWorkletGlobalScope where
  pToJSVal = unAudioWorkletGlobalScope
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioWorkletGlobalScope where
  pFromJSVal = AudioWorkletGlobalScope
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioWorkletGlobalScope where
  toJSVal = return . unAudioWorkletGlobalScope
  {-# INLINE toJSVal #-}

instance FromJSVal AudioWorkletGlobalScope where
  fromJSVal v = fmap AudioWorkletGlobalScope <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioWorkletGlobalScope
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioWorkletGlobalScope where
  makeObject = makeObject . unAudioWorkletGlobalScope

instance IsWorkletGlobalScope AudioWorkletGlobalScope

instance IsGObject AudioWorkletGlobalScope where
  typeGType _ = gTypeAudioWorkletGlobalScope
  {-# INLINE typeGType #-}

noAudioWorkletGlobalScope :: Maybe AudioWorkletGlobalScope
noAudioWorkletGlobalScope = Nothing
{-# INLINE noAudioWorkletGlobalScope #-}

gTypeAudioWorkletGlobalScope :: JSM GType
gTypeAudioWorkletGlobalScope = GType . Object <$> jsg "AudioWorkletGlobalScope"

-- | Functions for this interface are in "JSDOM.AudioWorkletNode" (webaudio-1.1).
newtype AudioWorkletNode = AudioWorkletNode { unAudioWorkletNode :: JSVal }

instance PToJSVal AudioWorkletNode where
  pToJSVal = unAudioWorkletNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioWorkletNode where
  pFromJSVal = AudioWorkletNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioWorkletNode where
  toJSVal = return . unAudioWorkletNode
  {-# INLINE toJSVal #-}

instance FromJSVal AudioWorkletNode where
  fromJSVal v = fmap AudioWorkletNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioWorkletNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioWorkletNode where
  makeObject = makeObject . unAudioWorkletNode

instance IsAudioNode AudioWorkletNode
instance IsEventTarget AudioWorkletNode

instance IsGObject AudioWorkletNode where
  typeGType _ = gTypeAudioWorkletNode
  {-# INLINE typeGType #-}

noAudioWorkletNode :: Maybe AudioWorkletNode
noAudioWorkletNode = Nothing
{-# INLINE noAudioWorkletNode #-}

gTypeAudioWorkletNode :: JSM GType
gTypeAudioWorkletNode = GType . Object <$> jsg "AudioWorkletNode"

-- | Dictionary AudioWorkletNodeOptions (webaudio-1.1)
newtype AudioWorkletNodeOptions = AudioWorkletNodeOptions { unAudioWorkletNodeOptions :: JSVal }

instance PToJSVal AudioWorkletNodeOptions where
  pToJSVal = unAudioWorkletNodeOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioWorkletNodeOptions where
  pFromJSVal = AudioWorkletNodeOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioWorkletNodeOptions where
  toJSVal = return . unAudioWorkletNodeOptions
  {-# INLINE toJSVal #-}

instance FromJSVal AudioWorkletNodeOptions where
  fromJSVal v = fmap AudioWorkletNodeOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioWorkletNodeOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioWorkletNodeOptions where
  makeObject = makeObject . unAudioWorkletNodeOptions

instance IsAudioNodeOptions AudioWorkletNodeOptions

instance IsGObject AudioWorkletNodeOptions where
  typeGType _ = gTypeAudioWorkletNodeOptions
  {-# INLINE typeGType #-}

noAudioWorkletNodeOptions :: Maybe AudioWorkletNodeOptions
noAudioWorkletNodeOptions = Nothing
{-# INLINE noAudioWorkletNodeOptions #-}

gTypeAudioWorkletNodeOptions :: JSM GType
gTypeAudioWorkletNodeOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AudioWorkletProcessor" (webaudio-1.1).
newtype AudioWorkletProcessor = AudioWorkletProcessor { unAudioWorkletProcessor :: JSVal }

instance PToJSVal AudioWorkletProcessor where
  pToJSVal = unAudioWorkletProcessor
  {-# INLINE pToJSVal #-}

instance PFromJSVal AudioWorkletProcessor where
  pFromJSVal = AudioWorkletProcessor
  {-# INLINE pFromJSVal #-}

instance ToJSVal AudioWorkletProcessor where
  toJSVal = return . unAudioWorkletProcessor
  {-# INLINE toJSVal #-}

instance FromJSVal AudioWorkletProcessor where
  fromJSVal v = fmap AudioWorkletProcessor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AudioWorkletProcessor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AudioWorkletProcessor where
  makeObject = makeObject . unAudioWorkletProcessor


instance IsGObject AudioWorkletProcessor where
  typeGType _ = gTypeAudioWorkletProcessor
  {-# INLINE typeGType #-}

noAudioWorkletProcessor :: Maybe AudioWorkletProcessor
noAudioWorkletProcessor = Nothing
{-# INLINE noAudioWorkletProcessor #-}

gTypeAudioWorkletProcessor :: JSM GType
gTypeAudioWorkletProcessor = GType . Object <$> jsg "AudioWorkletProcessor"

-- | Dictionary AuthenticationExtensionsClientInputs (webauthn-4)
newtype AuthenticationExtensionsClientInputs = AuthenticationExtensionsClientInputs { unAuthenticationExtensionsClientInputs :: JSVal }

instance PToJSVal AuthenticationExtensionsClientInputs where
  pToJSVal = unAuthenticationExtensionsClientInputs
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticationExtensionsClientInputs where
  pFromJSVal = AuthenticationExtensionsClientInputs
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticationExtensionsClientInputs where
  toJSVal = return . unAuthenticationExtensionsClientInputs
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticationExtensionsClientInputs where
  fromJSVal v = fmap AuthenticationExtensionsClientInputs <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticationExtensionsClientInputs
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticationExtensionsClientInputs where
  makeObject = makeObject . unAuthenticationExtensionsClientInputs


instance IsGObject AuthenticationExtensionsClientInputs where
  typeGType _ = gTypeAuthenticationExtensionsClientInputs
  {-# INLINE typeGType #-}

noAuthenticationExtensionsClientInputs :: Maybe AuthenticationExtensionsClientInputs
noAuthenticationExtensionsClientInputs = Nothing
{-# INLINE noAuthenticationExtensionsClientInputs #-}

gTypeAuthenticationExtensionsClientInputs :: JSM GType
gTypeAuthenticationExtensionsClientInputs = GType . Object <$> jsg "Object"

-- | Dictionary AuthenticationExtensionsClientInputsJSON (webauthn-4)
newtype AuthenticationExtensionsClientInputsJSON = AuthenticationExtensionsClientInputsJSON { unAuthenticationExtensionsClientInputsJSON :: JSVal }

instance PToJSVal AuthenticationExtensionsClientInputsJSON where
  pToJSVal = unAuthenticationExtensionsClientInputsJSON
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticationExtensionsClientInputsJSON where
  pFromJSVal = AuthenticationExtensionsClientInputsJSON
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticationExtensionsClientInputsJSON where
  toJSVal = return . unAuthenticationExtensionsClientInputsJSON
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticationExtensionsClientInputsJSON where
  fromJSVal v = fmap AuthenticationExtensionsClientInputsJSON <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticationExtensionsClientInputsJSON
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticationExtensionsClientInputsJSON where
  makeObject = makeObject . unAuthenticationExtensionsClientInputsJSON


instance IsGObject AuthenticationExtensionsClientInputsJSON where
  typeGType _ = gTypeAuthenticationExtensionsClientInputsJSON
  {-# INLINE typeGType #-}

noAuthenticationExtensionsClientInputsJSON :: Maybe AuthenticationExtensionsClientInputsJSON
noAuthenticationExtensionsClientInputsJSON = Nothing
{-# INLINE noAuthenticationExtensionsClientInputsJSON #-}

gTypeAuthenticationExtensionsClientInputsJSON :: JSM GType
gTypeAuthenticationExtensionsClientInputsJSON = GType . Object <$> jsg "Object"

-- | Dictionary AuthenticationExtensionsClientOutputs (webauthn-4)
newtype AuthenticationExtensionsClientOutputs = AuthenticationExtensionsClientOutputs { unAuthenticationExtensionsClientOutputs :: JSVal }

instance PToJSVal AuthenticationExtensionsClientOutputs where
  pToJSVal = unAuthenticationExtensionsClientOutputs
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticationExtensionsClientOutputs where
  pFromJSVal = AuthenticationExtensionsClientOutputs
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticationExtensionsClientOutputs where
  toJSVal = return . unAuthenticationExtensionsClientOutputs
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticationExtensionsClientOutputs where
  fromJSVal v = fmap AuthenticationExtensionsClientOutputs <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticationExtensionsClientOutputs
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticationExtensionsClientOutputs where
  makeObject = makeObject . unAuthenticationExtensionsClientOutputs


instance IsGObject AuthenticationExtensionsClientOutputs where
  typeGType _ = gTypeAuthenticationExtensionsClientOutputs
  {-# INLINE typeGType #-}

noAuthenticationExtensionsClientOutputs :: Maybe AuthenticationExtensionsClientOutputs
noAuthenticationExtensionsClientOutputs = Nothing
{-# INLINE noAuthenticationExtensionsClientOutputs #-}

gTypeAuthenticationExtensionsClientOutputs :: JSM GType
gTypeAuthenticationExtensionsClientOutputs = GType . Object <$> jsg "Object"

-- | Dictionary AuthenticationExtensionsLargeBlobInputs (webauthn-4)
newtype AuthenticationExtensionsLargeBlobInputs = AuthenticationExtensionsLargeBlobInputs { unAuthenticationExtensionsLargeBlobInputs :: JSVal }

instance PToJSVal AuthenticationExtensionsLargeBlobInputs where
  pToJSVal = unAuthenticationExtensionsLargeBlobInputs
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticationExtensionsLargeBlobInputs where
  pFromJSVal = AuthenticationExtensionsLargeBlobInputs
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticationExtensionsLargeBlobInputs where
  toJSVal = return . unAuthenticationExtensionsLargeBlobInputs
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticationExtensionsLargeBlobInputs where
  fromJSVal v = fmap AuthenticationExtensionsLargeBlobInputs <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticationExtensionsLargeBlobInputs
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticationExtensionsLargeBlobInputs where
  makeObject = makeObject . unAuthenticationExtensionsLargeBlobInputs


instance IsGObject AuthenticationExtensionsLargeBlobInputs where
  typeGType _ = gTypeAuthenticationExtensionsLargeBlobInputs
  {-# INLINE typeGType #-}

noAuthenticationExtensionsLargeBlobInputs :: Maybe AuthenticationExtensionsLargeBlobInputs
noAuthenticationExtensionsLargeBlobInputs = Nothing
{-# INLINE noAuthenticationExtensionsLargeBlobInputs #-}

gTypeAuthenticationExtensionsLargeBlobInputs :: JSM GType
gTypeAuthenticationExtensionsLargeBlobInputs = GType . Object <$> jsg "Object"

-- | Dictionary AuthenticationExtensionsLargeBlobInputsJSON (webauthn-4)
newtype AuthenticationExtensionsLargeBlobInputsJSON = AuthenticationExtensionsLargeBlobInputsJSON { unAuthenticationExtensionsLargeBlobInputsJSON :: JSVal }

instance PToJSVal AuthenticationExtensionsLargeBlobInputsJSON where
  pToJSVal = unAuthenticationExtensionsLargeBlobInputsJSON
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticationExtensionsLargeBlobInputsJSON where
  pFromJSVal = AuthenticationExtensionsLargeBlobInputsJSON
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticationExtensionsLargeBlobInputsJSON where
  toJSVal = return . unAuthenticationExtensionsLargeBlobInputsJSON
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticationExtensionsLargeBlobInputsJSON where
  fromJSVal v = fmap AuthenticationExtensionsLargeBlobInputsJSON <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticationExtensionsLargeBlobInputsJSON
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticationExtensionsLargeBlobInputsJSON where
  makeObject = makeObject . unAuthenticationExtensionsLargeBlobInputsJSON


instance IsGObject AuthenticationExtensionsLargeBlobInputsJSON where
  typeGType _ = gTypeAuthenticationExtensionsLargeBlobInputsJSON
  {-# INLINE typeGType #-}

noAuthenticationExtensionsLargeBlobInputsJSON :: Maybe AuthenticationExtensionsLargeBlobInputsJSON
noAuthenticationExtensionsLargeBlobInputsJSON = Nothing
{-# INLINE noAuthenticationExtensionsLargeBlobInputsJSON #-}

gTypeAuthenticationExtensionsLargeBlobInputsJSON :: JSM GType
gTypeAuthenticationExtensionsLargeBlobInputsJSON = GType . Object <$> jsg "Object"

-- | Dictionary AuthenticationExtensionsLargeBlobOutputs (webauthn-4)
newtype AuthenticationExtensionsLargeBlobOutputs = AuthenticationExtensionsLargeBlobOutputs { unAuthenticationExtensionsLargeBlobOutputs :: JSVal }

instance PToJSVal AuthenticationExtensionsLargeBlobOutputs where
  pToJSVal = unAuthenticationExtensionsLargeBlobOutputs
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticationExtensionsLargeBlobOutputs where
  pFromJSVal = AuthenticationExtensionsLargeBlobOutputs
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticationExtensionsLargeBlobOutputs where
  toJSVal = return . unAuthenticationExtensionsLargeBlobOutputs
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticationExtensionsLargeBlobOutputs where
  fromJSVal v = fmap AuthenticationExtensionsLargeBlobOutputs <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticationExtensionsLargeBlobOutputs
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticationExtensionsLargeBlobOutputs where
  makeObject = makeObject . unAuthenticationExtensionsLargeBlobOutputs


instance IsGObject AuthenticationExtensionsLargeBlobOutputs where
  typeGType _ = gTypeAuthenticationExtensionsLargeBlobOutputs
  {-# INLINE typeGType #-}

noAuthenticationExtensionsLargeBlobOutputs :: Maybe AuthenticationExtensionsLargeBlobOutputs
noAuthenticationExtensionsLargeBlobOutputs = Nothing
{-# INLINE noAuthenticationExtensionsLargeBlobOutputs #-}

gTypeAuthenticationExtensionsLargeBlobOutputs :: JSM GType
gTypeAuthenticationExtensionsLargeBlobOutputs = GType . Object <$> jsg "Object"

-- | Dictionary AuthenticationExtensionsPRFInputs (webauthn-4)
newtype AuthenticationExtensionsPRFInputs = AuthenticationExtensionsPRFInputs { unAuthenticationExtensionsPRFInputs :: JSVal }

instance PToJSVal AuthenticationExtensionsPRFInputs where
  pToJSVal = unAuthenticationExtensionsPRFInputs
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticationExtensionsPRFInputs where
  pFromJSVal = AuthenticationExtensionsPRFInputs
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticationExtensionsPRFInputs where
  toJSVal = return . unAuthenticationExtensionsPRFInputs
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticationExtensionsPRFInputs where
  fromJSVal v = fmap AuthenticationExtensionsPRFInputs <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticationExtensionsPRFInputs
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticationExtensionsPRFInputs where
  makeObject = makeObject . unAuthenticationExtensionsPRFInputs


instance IsGObject AuthenticationExtensionsPRFInputs where
  typeGType _ = gTypeAuthenticationExtensionsPRFInputs
  {-# INLINE typeGType #-}

noAuthenticationExtensionsPRFInputs :: Maybe AuthenticationExtensionsPRFInputs
noAuthenticationExtensionsPRFInputs = Nothing
{-# INLINE noAuthenticationExtensionsPRFInputs #-}

gTypeAuthenticationExtensionsPRFInputs :: JSM GType
gTypeAuthenticationExtensionsPRFInputs = GType . Object <$> jsg "Object"

-- | Dictionary AuthenticationExtensionsPRFInputsJSON (webauthn-4)
newtype AuthenticationExtensionsPRFInputsJSON = AuthenticationExtensionsPRFInputsJSON { unAuthenticationExtensionsPRFInputsJSON :: JSVal }

instance PToJSVal AuthenticationExtensionsPRFInputsJSON where
  pToJSVal = unAuthenticationExtensionsPRFInputsJSON
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticationExtensionsPRFInputsJSON where
  pFromJSVal = AuthenticationExtensionsPRFInputsJSON
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticationExtensionsPRFInputsJSON where
  toJSVal = return . unAuthenticationExtensionsPRFInputsJSON
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticationExtensionsPRFInputsJSON where
  fromJSVal v = fmap AuthenticationExtensionsPRFInputsJSON <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticationExtensionsPRFInputsJSON
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticationExtensionsPRFInputsJSON where
  makeObject = makeObject . unAuthenticationExtensionsPRFInputsJSON


instance IsGObject AuthenticationExtensionsPRFInputsJSON where
  typeGType _ = gTypeAuthenticationExtensionsPRFInputsJSON
  {-# INLINE typeGType #-}

noAuthenticationExtensionsPRFInputsJSON :: Maybe AuthenticationExtensionsPRFInputsJSON
noAuthenticationExtensionsPRFInputsJSON = Nothing
{-# INLINE noAuthenticationExtensionsPRFInputsJSON #-}

gTypeAuthenticationExtensionsPRFInputsJSON :: JSM GType
gTypeAuthenticationExtensionsPRFInputsJSON = GType . Object <$> jsg "Object"

-- | Dictionary AuthenticationExtensionsPRFOutputs (webauthn-4)
newtype AuthenticationExtensionsPRFOutputs = AuthenticationExtensionsPRFOutputs { unAuthenticationExtensionsPRFOutputs :: JSVal }

instance PToJSVal AuthenticationExtensionsPRFOutputs where
  pToJSVal = unAuthenticationExtensionsPRFOutputs
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticationExtensionsPRFOutputs where
  pFromJSVal = AuthenticationExtensionsPRFOutputs
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticationExtensionsPRFOutputs where
  toJSVal = return . unAuthenticationExtensionsPRFOutputs
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticationExtensionsPRFOutputs where
  fromJSVal v = fmap AuthenticationExtensionsPRFOutputs <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticationExtensionsPRFOutputs
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticationExtensionsPRFOutputs where
  makeObject = makeObject . unAuthenticationExtensionsPRFOutputs


instance IsGObject AuthenticationExtensionsPRFOutputs where
  typeGType _ = gTypeAuthenticationExtensionsPRFOutputs
  {-# INLINE typeGType #-}

noAuthenticationExtensionsPRFOutputs :: Maybe AuthenticationExtensionsPRFOutputs
noAuthenticationExtensionsPRFOutputs = Nothing
{-# INLINE noAuthenticationExtensionsPRFOutputs #-}

gTypeAuthenticationExtensionsPRFOutputs :: JSM GType
gTypeAuthenticationExtensionsPRFOutputs = GType . Object <$> jsg "Object"

-- | Dictionary AuthenticationExtensionsPRFValues (webauthn-4)
newtype AuthenticationExtensionsPRFValues = AuthenticationExtensionsPRFValues { unAuthenticationExtensionsPRFValues :: JSVal }

instance PToJSVal AuthenticationExtensionsPRFValues where
  pToJSVal = unAuthenticationExtensionsPRFValues
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticationExtensionsPRFValues where
  pFromJSVal = AuthenticationExtensionsPRFValues
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticationExtensionsPRFValues where
  toJSVal = return . unAuthenticationExtensionsPRFValues
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticationExtensionsPRFValues where
  fromJSVal v = fmap AuthenticationExtensionsPRFValues <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticationExtensionsPRFValues
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticationExtensionsPRFValues where
  makeObject = makeObject . unAuthenticationExtensionsPRFValues


instance IsGObject AuthenticationExtensionsPRFValues where
  typeGType _ = gTypeAuthenticationExtensionsPRFValues
  {-# INLINE typeGType #-}

noAuthenticationExtensionsPRFValues :: Maybe AuthenticationExtensionsPRFValues
noAuthenticationExtensionsPRFValues = Nothing
{-# INLINE noAuthenticationExtensionsPRFValues #-}

gTypeAuthenticationExtensionsPRFValues :: JSM GType
gTypeAuthenticationExtensionsPRFValues = GType . Object <$> jsg "Object"

-- | Dictionary AuthenticationExtensionsPRFValuesJSON (webauthn-4)
newtype AuthenticationExtensionsPRFValuesJSON = AuthenticationExtensionsPRFValuesJSON { unAuthenticationExtensionsPRFValuesJSON :: JSVal }

instance PToJSVal AuthenticationExtensionsPRFValuesJSON where
  pToJSVal = unAuthenticationExtensionsPRFValuesJSON
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticationExtensionsPRFValuesJSON where
  pFromJSVal = AuthenticationExtensionsPRFValuesJSON
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticationExtensionsPRFValuesJSON where
  toJSVal = return . unAuthenticationExtensionsPRFValuesJSON
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticationExtensionsPRFValuesJSON where
  fromJSVal v = fmap AuthenticationExtensionsPRFValuesJSON <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticationExtensionsPRFValuesJSON
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticationExtensionsPRFValuesJSON where
  makeObject = makeObject . unAuthenticationExtensionsPRFValuesJSON


instance IsGObject AuthenticationExtensionsPRFValuesJSON where
  typeGType _ = gTypeAuthenticationExtensionsPRFValuesJSON
  {-# INLINE typeGType #-}

noAuthenticationExtensionsPRFValuesJSON :: Maybe AuthenticationExtensionsPRFValuesJSON
noAuthenticationExtensionsPRFValuesJSON = Nothing
{-# INLINE noAuthenticationExtensionsPRFValuesJSON #-}

gTypeAuthenticationExtensionsPRFValuesJSON :: JSM GType
gTypeAuthenticationExtensionsPRFValuesJSON = GType . Object <$> jsg "Object"

-- | Dictionary AuthenticationExtensionsPaymentInputs (secure-payment-confirmation)
newtype AuthenticationExtensionsPaymentInputs = AuthenticationExtensionsPaymentInputs { unAuthenticationExtensionsPaymentInputs :: JSVal }

instance PToJSVal AuthenticationExtensionsPaymentInputs where
  pToJSVal = unAuthenticationExtensionsPaymentInputs
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticationExtensionsPaymentInputs where
  pFromJSVal = AuthenticationExtensionsPaymentInputs
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticationExtensionsPaymentInputs where
  toJSVal = return . unAuthenticationExtensionsPaymentInputs
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticationExtensionsPaymentInputs where
  fromJSVal v = fmap AuthenticationExtensionsPaymentInputs <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticationExtensionsPaymentInputs
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticationExtensionsPaymentInputs where
  makeObject = makeObject . unAuthenticationExtensionsPaymentInputs


instance IsGObject AuthenticationExtensionsPaymentInputs where
  typeGType _ = gTypeAuthenticationExtensionsPaymentInputs
  {-# INLINE typeGType #-}

noAuthenticationExtensionsPaymentInputs :: Maybe AuthenticationExtensionsPaymentInputs
noAuthenticationExtensionsPaymentInputs = Nothing
{-# INLINE noAuthenticationExtensionsPaymentInputs #-}

gTypeAuthenticationExtensionsPaymentInputs :: JSM GType
gTypeAuthenticationExtensionsPaymentInputs = GType . Object <$> jsg "Object"

-- | Dictionary AuthenticationExtensionsPaymentOutputs (secure-payment-confirmation)
newtype AuthenticationExtensionsPaymentOutputs = AuthenticationExtensionsPaymentOutputs { unAuthenticationExtensionsPaymentOutputs :: JSVal }

instance PToJSVal AuthenticationExtensionsPaymentOutputs where
  pToJSVal = unAuthenticationExtensionsPaymentOutputs
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticationExtensionsPaymentOutputs where
  pFromJSVal = AuthenticationExtensionsPaymentOutputs
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticationExtensionsPaymentOutputs where
  toJSVal = return . unAuthenticationExtensionsPaymentOutputs
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticationExtensionsPaymentOutputs where
  fromJSVal v = fmap AuthenticationExtensionsPaymentOutputs <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticationExtensionsPaymentOutputs
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticationExtensionsPaymentOutputs where
  makeObject = makeObject . unAuthenticationExtensionsPaymentOutputs


instance IsGObject AuthenticationExtensionsPaymentOutputs where
  typeGType _ = gTypeAuthenticationExtensionsPaymentOutputs
  {-# INLINE typeGType #-}

noAuthenticationExtensionsPaymentOutputs :: Maybe AuthenticationExtensionsPaymentOutputs
noAuthenticationExtensionsPaymentOutputs = Nothing
{-# INLINE noAuthenticationExtensionsPaymentOutputs #-}

gTypeAuthenticationExtensionsPaymentOutputs :: JSM GType
gTypeAuthenticationExtensionsPaymentOutputs = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AuthenticatorAssertionResponse" (webauthn-4).
newtype AuthenticatorAssertionResponse = AuthenticatorAssertionResponse { unAuthenticatorAssertionResponse :: JSVal }

instance PToJSVal AuthenticatorAssertionResponse where
  pToJSVal = unAuthenticatorAssertionResponse
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticatorAssertionResponse where
  pFromJSVal = AuthenticatorAssertionResponse
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticatorAssertionResponse where
  toJSVal = return . unAuthenticatorAssertionResponse
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticatorAssertionResponse where
  fromJSVal v = fmap AuthenticatorAssertionResponse <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticatorAssertionResponse
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticatorAssertionResponse where
  makeObject = makeObject . unAuthenticatorAssertionResponse

instance IsAuthenticatorResponse AuthenticatorAssertionResponse

instance IsGObject AuthenticatorAssertionResponse where
  typeGType _ = gTypeAuthenticatorAssertionResponse
  {-# INLINE typeGType #-}

noAuthenticatorAssertionResponse :: Maybe AuthenticatorAssertionResponse
noAuthenticatorAssertionResponse = Nothing
{-# INLINE noAuthenticatorAssertionResponse #-}

gTypeAuthenticatorAssertionResponse :: JSM GType
gTypeAuthenticatorAssertionResponse = GType . Object <$> jsg "AuthenticatorAssertionResponse"

-- | Functions for this interface are in "JSDOM.AuthenticatorAttestationResponse" (webauthn-4).
newtype AuthenticatorAttestationResponse = AuthenticatorAttestationResponse { unAuthenticatorAttestationResponse :: JSVal }

instance PToJSVal AuthenticatorAttestationResponse where
  pToJSVal = unAuthenticatorAttestationResponse
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticatorAttestationResponse where
  pFromJSVal = AuthenticatorAttestationResponse
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticatorAttestationResponse where
  toJSVal = return . unAuthenticatorAttestationResponse
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticatorAttestationResponse where
  fromJSVal v = fmap AuthenticatorAttestationResponse <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticatorAttestationResponse
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticatorAttestationResponse where
  makeObject = makeObject . unAuthenticatorAttestationResponse

instance IsAuthenticatorResponse AuthenticatorAttestationResponse

instance IsGObject AuthenticatorAttestationResponse where
  typeGType _ = gTypeAuthenticatorAttestationResponse
  {-# INLINE typeGType #-}

noAuthenticatorAttestationResponse :: Maybe AuthenticatorAttestationResponse
noAuthenticatorAttestationResponse = Nothing
{-# INLINE noAuthenticatorAttestationResponse #-}

gTypeAuthenticatorAttestationResponse :: JSM GType
gTypeAuthenticatorAttestationResponse = GType . Object <$> jsg "AuthenticatorAttestationResponse"

-- | Functions for this interface are in "JSDOM.AuthenticatorResponse" (webauthn-4).
newtype AuthenticatorResponse = AuthenticatorResponse { unAuthenticatorResponse :: JSVal }

instance PToJSVal AuthenticatorResponse where
  pToJSVal = unAuthenticatorResponse
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticatorResponse where
  pFromJSVal = AuthenticatorResponse
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticatorResponse where
  toJSVal = return . unAuthenticatorResponse
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticatorResponse where
  fromJSVal v = fmap AuthenticatorResponse <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticatorResponse
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticatorResponse where
  makeObject = makeObject . unAuthenticatorResponse

class (IsGObject o) => IsAuthenticatorResponse o
toAuthenticatorResponse :: IsAuthenticatorResponse o => o -> AuthenticatorResponse
toAuthenticatorResponse = AuthenticatorResponse . coerce

instance IsAuthenticatorResponse AuthenticatorResponse

instance IsGObject AuthenticatorResponse where
  typeGType _ = gTypeAuthenticatorResponse
  {-# INLINE typeGType #-}

noAuthenticatorResponse :: Maybe AuthenticatorResponse
noAuthenticatorResponse = Nothing
{-# INLINE noAuthenticatorResponse #-}

gTypeAuthenticatorResponse :: JSM GType
gTypeAuthenticatorResponse = GType . Object <$> jsg "AuthenticatorResponse"

-- | Dictionary AuthenticatorSelectionCriteria (webauthn-4)
newtype AuthenticatorSelectionCriteria = AuthenticatorSelectionCriteria { unAuthenticatorSelectionCriteria :: JSVal }

instance PToJSVal AuthenticatorSelectionCriteria where
  pToJSVal = unAuthenticatorSelectionCriteria
  {-# INLINE pToJSVal #-}

instance PFromJSVal AuthenticatorSelectionCriteria where
  pFromJSVal = AuthenticatorSelectionCriteria
  {-# INLINE pFromJSVal #-}

instance ToJSVal AuthenticatorSelectionCriteria where
  toJSVal = return . unAuthenticatorSelectionCriteria
  {-# INLINE toJSVal #-}

instance FromJSVal AuthenticatorSelectionCriteria where
  fromJSVal v = fmap AuthenticatorSelectionCriteria <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AuthenticatorSelectionCriteria
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AuthenticatorSelectionCriteria where
  makeObject = makeObject . unAuthenticatorSelectionCriteria


instance IsGObject AuthenticatorSelectionCriteria where
  typeGType _ = gTypeAuthenticatorSelectionCriteria
  {-# INLINE typeGType #-}

noAuthenticatorSelectionCriteria :: Maybe AuthenticatorSelectionCriteria
noAuthenticatorSelectionCriteria = Nothing
{-# INLINE noAuthenticatorSelectionCriteria #-}

gTypeAuthenticatorSelectionCriteria :: JSM GType
gTypeAuthenticatorSelectionCriteria = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.AutofillEvent" (autofill-event).
newtype AutofillEvent = AutofillEvent { unAutofillEvent :: JSVal }

instance PToJSVal AutofillEvent where
  pToJSVal = unAutofillEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal AutofillEvent where
  pFromJSVal = AutofillEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal AutofillEvent where
  toJSVal = return . unAutofillEvent
  {-# INLINE toJSVal #-}

instance FromJSVal AutofillEvent where
  fromJSVal v = fmap AutofillEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AutofillEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AutofillEvent where
  makeObject = makeObject . unAutofillEvent

instance IsEvent AutofillEvent

instance IsGObject AutofillEvent where
  typeGType _ = gTypeAutofillEvent
  {-# INLINE typeGType #-}

noAutofillEvent :: Maybe AutofillEvent
noAutofillEvent = Nothing
{-# INLINE noAutofillEvent #-}

gTypeAutofillEvent :: JSM GType
gTypeAutofillEvent = GType . Object <$> jsg "AutofillEvent"

-- | Dictionary AvcEncoderConfig (webcodecs-avc-codec-registration)
newtype AvcEncoderConfig = AvcEncoderConfig { unAvcEncoderConfig :: JSVal }

instance PToJSVal AvcEncoderConfig where
  pToJSVal = unAvcEncoderConfig
  {-# INLINE pToJSVal #-}

instance PFromJSVal AvcEncoderConfig where
  pFromJSVal = AvcEncoderConfig
  {-# INLINE pFromJSVal #-}

instance ToJSVal AvcEncoderConfig where
  toJSVal = return . unAvcEncoderConfig
  {-# INLINE toJSVal #-}

instance FromJSVal AvcEncoderConfig where
  fromJSVal v = fmap AvcEncoderConfig <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . AvcEncoderConfig
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject AvcEncoderConfig where
  makeObject = makeObject . unAvcEncoderConfig


instance IsGObject AvcEncoderConfig where
  typeGType _ = gTypeAvcEncoderConfig
  {-# INLINE typeGType #-}

noAvcEncoderConfig :: Maybe AvcEncoderConfig
noAvcEncoderConfig = Nothing
{-# INLINE noAvcEncoderConfig #-}

gTypeAvcEncoderConfig :: JSM GType
gTypeAvcEncoderConfig = GType . Object <$> jsg "Object"

-- | Dictionary BackgroundBlur (mediacapture-extensions)
newtype BackgroundBlur = BackgroundBlur { unBackgroundBlur :: JSVal }

instance PToJSVal BackgroundBlur where
  pToJSVal = unBackgroundBlur
  {-# INLINE pToJSVal #-}

instance PFromJSVal BackgroundBlur where
  pFromJSVal = BackgroundBlur
  {-# INLINE pFromJSVal #-}

instance ToJSVal BackgroundBlur where
  toJSVal = return . unBackgroundBlur
  {-# INLINE toJSVal #-}

instance FromJSVal BackgroundBlur where
  fromJSVal v = fmap BackgroundBlur <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BackgroundBlur
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BackgroundBlur where
  makeObject = makeObject . unBackgroundBlur

instance IsMediaEffectInfo BackgroundBlur

instance IsGObject BackgroundBlur where
  typeGType _ = gTypeBackgroundBlur
  {-# INLINE typeGType #-}

noBackgroundBlur :: Maybe BackgroundBlur
noBackgroundBlur = Nothing
{-# INLINE noBackgroundBlur #-}

gTypeBackgroundBlur :: JSM GType
gTypeBackgroundBlur = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.BarProp" (html).
newtype BarProp = BarProp { unBarProp :: JSVal }

instance PToJSVal BarProp where
  pToJSVal = unBarProp
  {-# INLINE pToJSVal #-}

instance PFromJSVal BarProp where
  pFromJSVal = BarProp
  {-# INLINE pFromJSVal #-}

instance ToJSVal BarProp where
  toJSVal = return . unBarProp
  {-# INLINE toJSVal #-}

instance FromJSVal BarProp where
  fromJSVal v = fmap BarProp <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BarProp
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BarProp where
  makeObject = makeObject . unBarProp


instance IsGObject BarProp where
  typeGType _ = gTypeBarProp
  {-# INLINE typeGType #-}

noBarProp :: Maybe BarProp
noBarProp = Nothing
{-# INLINE noBarProp #-}

gTypeBarProp :: JSM GType
gTypeBarProp = GType . Object <$> jsg "BarProp"

-- | Functions for this interface are in "JSDOM.BaseAudioContext" (webaudio-1.1).
newtype BaseAudioContext = BaseAudioContext { unBaseAudioContext :: JSVal }

instance PToJSVal BaseAudioContext where
  pToJSVal = unBaseAudioContext
  {-# INLINE pToJSVal #-}

instance PFromJSVal BaseAudioContext where
  pFromJSVal = BaseAudioContext
  {-# INLINE pFromJSVal #-}

instance ToJSVal BaseAudioContext where
  toJSVal = return . unBaseAudioContext
  {-# INLINE toJSVal #-}

instance FromJSVal BaseAudioContext where
  fromJSVal v = fmap BaseAudioContext <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BaseAudioContext
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BaseAudioContext where
  makeObject = makeObject . unBaseAudioContext

class (IsEventTarget o, IsGObject o) => IsBaseAudioContext o
toBaseAudioContext :: IsBaseAudioContext o => o -> BaseAudioContext
toBaseAudioContext = BaseAudioContext . coerce

instance IsBaseAudioContext BaseAudioContext
instance IsEventTarget BaseAudioContext

instance IsGObject BaseAudioContext where
  typeGType _ = gTypeBaseAudioContext
  {-# INLINE typeGType #-}

noBaseAudioContext :: Maybe BaseAudioContext
noBaseAudioContext = Nothing
{-# INLINE noBaseAudioContext #-}

gTypeBaseAudioContext :: JSM GType
gTypeBaseAudioContext = GType . Object <$> jsg "BaseAudioContext"

-- | Functions for this interface are in "JSDOM.BeforeUnloadEvent" (html).
newtype BeforeUnloadEvent = BeforeUnloadEvent { unBeforeUnloadEvent :: JSVal }

instance PToJSVal BeforeUnloadEvent where
  pToJSVal = unBeforeUnloadEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal BeforeUnloadEvent where
  pFromJSVal = BeforeUnloadEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal BeforeUnloadEvent where
  toJSVal = return . unBeforeUnloadEvent
  {-# INLINE toJSVal #-}

instance FromJSVal BeforeUnloadEvent where
  fromJSVal v = fmap BeforeUnloadEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BeforeUnloadEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BeforeUnloadEvent where
  makeObject = makeObject . unBeforeUnloadEvent

instance IsEvent BeforeUnloadEvent

instance IsGObject BeforeUnloadEvent where
  typeGType _ = gTypeBeforeUnloadEvent
  {-# INLINE typeGType #-}

noBeforeUnloadEvent :: Maybe BeforeUnloadEvent
noBeforeUnloadEvent = Nothing
{-# INLINE noBeforeUnloadEvent #-}

gTypeBeforeUnloadEvent :: JSM GType
gTypeBeforeUnloadEvent = GType . Object <$> jsg "BeforeUnloadEvent"

newtype BigInt64Array = BigInt64Array { unBigInt64Array :: JSVal }

instance PToJSVal BigInt64Array where
  pToJSVal = unBigInt64Array
  {-# INLINE pToJSVal #-}

instance PFromJSVal BigInt64Array where
  pFromJSVal = BigInt64Array
  {-# INLINE pFromJSVal #-}

instance ToJSVal BigInt64Array where
  toJSVal = return . unBigInt64Array
  {-# INLINE toJSVal #-}

instance FromJSVal BigInt64Array where
  fromJSVal v = fmap BigInt64Array <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BigInt64Array
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BigInt64Array where
  makeObject = makeObject . unBigInt64Array

instance IsArrayBufferView BigInt64Array

instance IsGObject BigInt64Array where
  typeGType _ = gTypeBigInt64Array
  {-# INLINE typeGType #-}

noBigInt64Array :: Maybe BigInt64Array
noBigInt64Array = Nothing
{-# INLINE noBigInt64Array #-}

gTypeBigInt64Array :: JSM GType
gTypeBigInt64Array = GType . Object <$> jsg "BigInt64Array"

newtype BigUint64Array = BigUint64Array { unBigUint64Array :: JSVal }

instance PToJSVal BigUint64Array where
  pToJSVal = unBigUint64Array
  {-# INLINE pToJSVal #-}

instance PFromJSVal BigUint64Array where
  pFromJSVal = BigUint64Array
  {-# INLINE pFromJSVal #-}

instance ToJSVal BigUint64Array where
  toJSVal = return . unBigUint64Array
  {-# INLINE toJSVal #-}

instance FromJSVal BigUint64Array where
  fromJSVal v = fmap BigUint64Array <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BigUint64Array
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BigUint64Array where
  makeObject = makeObject . unBigUint64Array

instance IsArrayBufferView BigUint64Array

instance IsGObject BigUint64Array where
  typeGType _ = gTypeBigUint64Array
  {-# INLINE typeGType #-}

noBigUint64Array :: Maybe BigUint64Array
noBigUint64Array = Nothing
{-# INLINE noBigUint64Array #-}

gTypeBigUint64Array :: JSM GType
gTypeBigUint64Array = GType . Object <$> jsg "BigUint64Array"

-- | Functions for this interface are in "JSDOM.BiquadFilterNode" (webaudio-1.1).
newtype BiquadFilterNode = BiquadFilterNode { unBiquadFilterNode :: JSVal }

instance PToJSVal BiquadFilterNode where
  pToJSVal = unBiquadFilterNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal BiquadFilterNode where
  pFromJSVal = BiquadFilterNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal BiquadFilterNode where
  toJSVal = return . unBiquadFilterNode
  {-# INLINE toJSVal #-}

instance FromJSVal BiquadFilterNode where
  fromJSVal v = fmap BiquadFilterNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BiquadFilterNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BiquadFilterNode where
  makeObject = makeObject . unBiquadFilterNode

instance IsAudioNode BiquadFilterNode
instance IsEventTarget BiquadFilterNode

instance IsGObject BiquadFilterNode where
  typeGType _ = gTypeBiquadFilterNode
  {-# INLINE typeGType #-}

noBiquadFilterNode :: Maybe BiquadFilterNode
noBiquadFilterNode = Nothing
{-# INLINE noBiquadFilterNode #-}

gTypeBiquadFilterNode :: JSM GType
gTypeBiquadFilterNode = GType . Object <$> jsg "BiquadFilterNode"

-- | Dictionary BiquadFilterOptions (webaudio-1.1)
newtype BiquadFilterOptions = BiquadFilterOptions { unBiquadFilterOptions :: JSVal }

instance PToJSVal BiquadFilterOptions where
  pToJSVal = unBiquadFilterOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal BiquadFilterOptions where
  pFromJSVal = BiquadFilterOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal BiquadFilterOptions where
  toJSVal = return . unBiquadFilterOptions
  {-# INLINE toJSVal #-}

instance FromJSVal BiquadFilterOptions where
  fromJSVal v = fmap BiquadFilterOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BiquadFilterOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BiquadFilterOptions where
  makeObject = makeObject . unBiquadFilterOptions

instance IsAudioNodeOptions BiquadFilterOptions

instance IsGObject BiquadFilterOptions where
  typeGType _ = gTypeBiquadFilterOptions
  {-# INLINE typeGType #-}

noBiquadFilterOptions :: Maybe BiquadFilterOptions
noBiquadFilterOptions = Nothing
{-# INLINE noBiquadFilterOptions #-}

gTypeBiquadFilterOptions :: JSM GType
gTypeBiquadFilterOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Blob" (FileAPI).
newtype Blob = Blob { unBlob :: JSVal }

instance PToJSVal Blob where
  pToJSVal = unBlob
  {-# INLINE pToJSVal #-}

instance PFromJSVal Blob where
  pFromJSVal = Blob
  {-# INLINE pFromJSVal #-}

instance ToJSVal Blob where
  toJSVal = return . unBlob
  {-# INLINE toJSVal #-}

instance FromJSVal Blob where
  fromJSVal v = fmap Blob <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Blob
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Blob where
  makeObject = makeObject . unBlob

class (IsGObject o) => IsBlob o
toBlob :: IsBlob o => o -> Blob
toBlob = Blob . coerce

instance IsBlob Blob

instance IsGObject Blob where
  typeGType _ = gTypeBlob
  {-# INLINE typeGType #-}

noBlob :: Maybe Blob
noBlob = Nothing
{-# INLINE noBlob #-}

gTypeBlob :: JSM GType
gTypeBlob = GType . Object <$> jsg "Blob"

-- | Functions for this interface are in "JSDOM.BlobEvent" (mediastream-recording).
newtype BlobEvent = BlobEvent { unBlobEvent :: JSVal }

instance PToJSVal BlobEvent where
  pToJSVal = unBlobEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal BlobEvent where
  pFromJSVal = BlobEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal BlobEvent where
  toJSVal = return . unBlobEvent
  {-# INLINE toJSVal #-}

instance FromJSVal BlobEvent where
  fromJSVal v = fmap BlobEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BlobEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BlobEvent where
  makeObject = makeObject . unBlobEvent

instance IsEvent BlobEvent

instance IsGObject BlobEvent where
  typeGType _ = gTypeBlobEvent
  {-# INLINE typeGType #-}

noBlobEvent :: Maybe BlobEvent
noBlobEvent = Nothing
{-# INLINE noBlobEvent #-}

gTypeBlobEvent :: JSM GType
gTypeBlobEvent = GType . Object <$> jsg "BlobEvent"

-- | Dictionary BlobEventInit (mediastream-recording)
newtype BlobEventInit = BlobEventInit { unBlobEventInit :: JSVal }

instance PToJSVal BlobEventInit where
  pToJSVal = unBlobEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal BlobEventInit where
  pFromJSVal = BlobEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal BlobEventInit where
  toJSVal = return . unBlobEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal BlobEventInit where
  fromJSVal v = fmap BlobEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BlobEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BlobEventInit where
  makeObject = makeObject . unBlobEventInit

instance IsEventInit BlobEventInit

instance IsGObject BlobEventInit where
  typeGType _ = gTypeBlobEventInit
  {-# INLINE typeGType #-}

noBlobEventInit :: Maybe BlobEventInit
noBlobEventInit = Nothing
{-# INLINE noBlobEventInit #-}

gTypeBlobEventInit :: JSM GType
gTypeBlobEventInit = GType . Object <$> jsg "Object"

-- | Dictionary BlobPropertyBag (FileAPI)
newtype BlobPropertyBag = BlobPropertyBag { unBlobPropertyBag :: JSVal }

instance PToJSVal BlobPropertyBag where
  pToJSVal = unBlobPropertyBag
  {-# INLINE pToJSVal #-}

instance PFromJSVal BlobPropertyBag where
  pFromJSVal = BlobPropertyBag
  {-# INLINE pFromJSVal #-}

instance ToJSVal BlobPropertyBag where
  toJSVal = return . unBlobPropertyBag
  {-# INLINE toJSVal #-}

instance FromJSVal BlobPropertyBag where
  fromJSVal v = fmap BlobPropertyBag <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BlobPropertyBag
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BlobPropertyBag where
  makeObject = makeObject . unBlobPropertyBag

class (IsGObject o) => IsBlobPropertyBag o
toBlobPropertyBag :: IsBlobPropertyBag o => o -> BlobPropertyBag
toBlobPropertyBag = BlobPropertyBag . coerce

instance IsBlobPropertyBag BlobPropertyBag

instance IsGObject BlobPropertyBag where
  typeGType _ = gTypeBlobPropertyBag
  {-# INLINE typeGType #-}

noBlobPropertyBag :: Maybe BlobPropertyBag
noBlobPropertyBag = Nothing
{-# INLINE noBlobPropertyBag #-}

gTypeBlobPropertyBag :: JSM GType
gTypeBlobPropertyBag = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Body" (fetch).
newtype Body = Body { unBody :: JSVal }

instance PToJSVal Body where
  pToJSVal = unBody
  {-# INLINE pToJSVal #-}

instance PFromJSVal Body where
  pFromJSVal = Body
  {-# INLINE pFromJSVal #-}

instance ToJSVal Body where
  toJSVal = return . unBody
  {-# INLINE toJSVal #-}

instance FromJSVal Body where
  fromJSVal v = fmap Body <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Body
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Body where
  makeObject = makeObject . unBody

class (IsGObject o) => IsBody o
toBody :: IsBody o => o -> Body
toBody = Body . coerce

instance IsBody Body

instance IsGObject Body where
  typeGType _ = gTypeBody
  {-# INLINE typeGType #-}

noBody :: Maybe Body
noBody = Nothing
{-# INLINE noBody #-}

gTypeBody :: JSM GType
gTypeBody = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.BroadcastChannel" (html).
newtype BroadcastChannel = BroadcastChannel { unBroadcastChannel :: JSVal }

instance PToJSVal BroadcastChannel where
  pToJSVal = unBroadcastChannel
  {-# INLINE pToJSVal #-}

instance PFromJSVal BroadcastChannel where
  pFromJSVal = BroadcastChannel
  {-# INLINE pFromJSVal #-}

instance ToJSVal BroadcastChannel where
  toJSVal = return . unBroadcastChannel
  {-# INLINE toJSVal #-}

instance FromJSVal BroadcastChannel where
  fromJSVal v = fmap BroadcastChannel <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BroadcastChannel
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BroadcastChannel where
  makeObject = makeObject . unBroadcastChannel

instance IsEventTarget BroadcastChannel

instance IsGObject BroadcastChannel where
  typeGType _ = gTypeBroadcastChannel
  {-# INLINE typeGType #-}

noBroadcastChannel :: Maybe BroadcastChannel
noBroadcastChannel = Nothing
{-# INLINE noBroadcastChannel #-}

gTypeBroadcastChannel :: JSM GType
gTypeBroadcastChannel = GType . Object <$> jsg "BroadcastChannel"

-- | Dictionary BrowserBoundSignature (secure-payment-confirmation)
newtype BrowserBoundSignature = BrowserBoundSignature { unBrowserBoundSignature :: JSVal }

instance PToJSVal BrowserBoundSignature where
  pToJSVal = unBrowserBoundSignature
  {-# INLINE pToJSVal #-}

instance PFromJSVal BrowserBoundSignature where
  pFromJSVal = BrowserBoundSignature
  {-# INLINE pFromJSVal #-}

instance ToJSVal BrowserBoundSignature where
  toJSVal = return . unBrowserBoundSignature
  {-# INLINE toJSVal #-}

instance FromJSVal BrowserBoundSignature where
  fromJSVal v = fmap BrowserBoundSignature <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . BrowserBoundSignature
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject BrowserBoundSignature where
  makeObject = makeObject . unBrowserBoundSignature


instance IsGObject BrowserBoundSignature where
  typeGType _ = gTypeBrowserBoundSignature
  {-# INLINE typeGType #-}

noBrowserBoundSignature :: Maybe BrowserBoundSignature
noBrowserBoundSignature = Nothing
{-# INLINE noBrowserBoundSignature #-}

gTypeBrowserBoundSignature :: JSM GType
gTypeBrowserBoundSignature = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ByteLengthQueuingStrategy" (streams).
newtype ByteLengthQueuingStrategy = ByteLengthQueuingStrategy { unByteLengthQueuingStrategy :: JSVal }

instance PToJSVal ByteLengthQueuingStrategy where
  pToJSVal = unByteLengthQueuingStrategy
  {-# INLINE pToJSVal #-}

instance PFromJSVal ByteLengthQueuingStrategy where
  pFromJSVal = ByteLengthQueuingStrategy
  {-# INLINE pFromJSVal #-}

instance ToJSVal ByteLengthQueuingStrategy where
  toJSVal = return . unByteLengthQueuingStrategy
  {-# INLINE toJSVal #-}

instance FromJSVal ByteLengthQueuingStrategy where
  fromJSVal v = fmap ByteLengthQueuingStrategy <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ByteLengthQueuingStrategy
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ByteLengthQueuingStrategy where
  makeObject = makeObject . unByteLengthQueuingStrategy


instance IsGObject ByteLengthQueuingStrategy where
  typeGType _ = gTypeByteLengthQueuingStrategy
  {-# INLINE typeGType #-}

noByteLengthQueuingStrategy :: Maybe ByteLengthQueuingStrategy
noByteLengthQueuingStrategy = Nothing
{-# INLINE noByteLengthQueuingStrategy #-}

gTypeByteLengthQueuingStrategy :: JSM GType
gTypeByteLengthQueuingStrategy = GType . Object <$> jsg "ByteLengthQueuingStrategy"

-- | Functions for this interface are in "JSDOM.CDATASection" (dom).
newtype CDATASection = CDATASection { unCDATASection :: JSVal }

instance PToJSVal CDATASection where
  pToJSVal = unCDATASection
  {-# INLINE pToJSVal #-}

instance PFromJSVal CDATASection where
  pFromJSVal = CDATASection
  {-# INLINE pFromJSVal #-}

instance ToJSVal CDATASection where
  toJSVal = return . unCDATASection
  {-# INLINE toJSVal #-}

instance FromJSVal CDATASection where
  fromJSVal v = fmap CDATASection <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CDATASection
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CDATASection where
  makeObject = makeObject . unCDATASection

instance IsText CDATASection
instance IsSlottable CDATASection
instance IsCharacterData CDATASection
instance IsChildNode CDATASection
instance IsNonDocumentTypeChildNode CDATASection
instance IsNode CDATASection
instance IsEventTarget CDATASection

instance IsGObject CDATASection where
  typeGType _ = gTypeCDATASection
  {-# INLINE typeGType #-}

noCDATASection :: Maybe CDATASection
noCDATASection = Nothing
{-# INLINE noCDATASection #-}

gTypeCDATASection :: JSM GType
gTypeCDATASection = GType . Object <$> jsg "CDATASection"

-- | Functions for this interface are in "JSDOM.CSSAnimation" (css-animations-2).
newtype CSSAnimation = CSSAnimation { unCSSAnimation :: JSVal }

instance PToJSVal CSSAnimation where
  pToJSVal = unCSSAnimation
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSAnimation where
  pFromJSVal = CSSAnimation
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSAnimation where
  toJSVal = return . unCSSAnimation
  {-# INLINE toJSVal #-}

instance FromJSVal CSSAnimation where
  fromJSVal v = fmap CSSAnimation <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSAnimation
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSAnimation where
  makeObject = makeObject . unCSSAnimation

instance IsAnimation CSSAnimation
instance IsEventTarget CSSAnimation

instance IsGObject CSSAnimation where
  typeGType _ = gTypeCSSAnimation
  {-# INLINE typeGType #-}

noCSSAnimation :: Maybe CSSAnimation
noCSSAnimation = Nothing
{-# INLINE noCSSAnimation #-}

gTypeCSSAnimation :: JSM GType
gTypeCSSAnimation = GType . Object <$> jsg "CSSAnimation"

-- | Functions for this interface are in "JSDOM.CSSConditionRule" (css-conditional-3).
newtype CSSConditionRule = CSSConditionRule { unCSSConditionRule :: JSVal }

instance PToJSVal CSSConditionRule where
  pToJSVal = unCSSConditionRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSConditionRule where
  pFromJSVal = CSSConditionRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSConditionRule where
  toJSVal = return . unCSSConditionRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSConditionRule where
  fromJSVal v = fmap CSSConditionRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSConditionRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSConditionRule where
  makeObject = makeObject . unCSSConditionRule

class (IsCSSGroupingRule o, IsGObject o) => IsCSSConditionRule o
toCSSConditionRule :: IsCSSConditionRule o => o -> CSSConditionRule
toCSSConditionRule = CSSConditionRule . coerce

instance IsCSSConditionRule CSSConditionRule
instance IsCSSGroupingRule CSSConditionRule
instance IsCSSRule CSSConditionRule

instance IsGObject CSSConditionRule where
  typeGType _ = gTypeCSSConditionRule
  {-# INLINE typeGType #-}

noCSSConditionRule :: Maybe CSSConditionRule
noCSSConditionRule = Nothing
{-# INLINE noCSSConditionRule #-}

gTypeCSSConditionRule :: JSM GType
gTypeCSSConditionRule = GType . Object <$> jsg "CSSConditionRule"

-- | Dictionary CSSContainerCondition (css-conditional-5)
newtype CSSContainerCondition = CSSContainerCondition { unCSSContainerCondition :: JSVal }

instance PToJSVal CSSContainerCondition where
  pToJSVal = unCSSContainerCondition
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSContainerCondition where
  pFromJSVal = CSSContainerCondition
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSContainerCondition where
  toJSVal = return . unCSSContainerCondition
  {-# INLINE toJSVal #-}

instance FromJSVal CSSContainerCondition where
  fromJSVal v = fmap CSSContainerCondition <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSContainerCondition
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSContainerCondition where
  makeObject = makeObject . unCSSContainerCondition


instance IsGObject CSSContainerCondition where
  typeGType _ = gTypeCSSContainerCondition
  {-# INLINE typeGType #-}

noCSSContainerCondition :: Maybe CSSContainerCondition
noCSSContainerCondition = Nothing
{-# INLINE noCSSContainerCondition #-}

gTypeCSSContainerCondition :: JSM GType
gTypeCSSContainerCondition = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CSSContainerRule" (css-conditional-5).
newtype CSSContainerRule = CSSContainerRule { unCSSContainerRule :: JSVal }

instance PToJSVal CSSContainerRule where
  pToJSVal = unCSSContainerRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSContainerRule where
  pFromJSVal = CSSContainerRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSContainerRule where
  toJSVal = return . unCSSContainerRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSContainerRule where
  fromJSVal v = fmap CSSContainerRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSContainerRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSContainerRule where
  makeObject = makeObject . unCSSContainerRule

instance IsCSSConditionRule CSSContainerRule
instance IsCSSGroupingRule CSSContainerRule
instance IsCSSRule CSSContainerRule

instance IsGObject CSSContainerRule where
  typeGType _ = gTypeCSSContainerRule
  {-# INLINE typeGType #-}

noCSSContainerRule :: Maybe CSSContainerRule
noCSSContainerRule = Nothing
{-# INLINE noCSSContainerRule #-}

gTypeCSSContainerRule :: JSM GType
gTypeCSSContainerRule = GType . Object <$> jsg "CSSContainerRule"

-- | Functions for this interface are in "JSDOM.CSSCounterStyleRule" (css-counter-styles-3).
newtype CSSCounterStyleRule = CSSCounterStyleRule { unCSSCounterStyleRule :: JSVal }

instance PToJSVal CSSCounterStyleRule where
  pToJSVal = unCSSCounterStyleRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSCounterStyleRule where
  pFromJSVal = CSSCounterStyleRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSCounterStyleRule where
  toJSVal = return . unCSSCounterStyleRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSCounterStyleRule where
  fromJSVal v = fmap CSSCounterStyleRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSCounterStyleRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSCounterStyleRule where
  makeObject = makeObject . unCSSCounterStyleRule

instance IsCSSRule CSSCounterStyleRule

instance IsGObject CSSCounterStyleRule where
  typeGType _ = gTypeCSSCounterStyleRule
  {-# INLINE typeGType #-}

noCSSCounterStyleRule :: Maybe CSSCounterStyleRule
noCSSCounterStyleRule = Nothing
{-# INLINE noCSSCounterStyleRule #-}

gTypeCSSCounterStyleRule :: JSM GType
gTypeCSSCounterStyleRule = GType . Object <$> jsg "CSSCounterStyleRule"

-- | Functions for this interface are in "JSDOM.CSSFontFaceDescriptors" (css-fonts-5).
newtype CSSFontFaceDescriptors = CSSFontFaceDescriptors { unCSSFontFaceDescriptors :: JSVal }

instance PToJSVal CSSFontFaceDescriptors where
  pToJSVal = unCSSFontFaceDescriptors
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSFontFaceDescriptors where
  pFromJSVal = CSSFontFaceDescriptors
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSFontFaceDescriptors where
  toJSVal = return . unCSSFontFaceDescriptors
  {-# INLINE toJSVal #-}

instance FromJSVal CSSFontFaceDescriptors where
  fromJSVal v = fmap CSSFontFaceDescriptors <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSFontFaceDescriptors
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSFontFaceDescriptors where
  makeObject = makeObject . unCSSFontFaceDescriptors

instance IsCSSStyleDeclaration CSSFontFaceDescriptors

instance IsGObject CSSFontFaceDescriptors where
  typeGType _ = gTypeCSSFontFaceDescriptors
  {-# INLINE typeGType #-}

noCSSFontFaceDescriptors :: Maybe CSSFontFaceDescriptors
noCSSFontFaceDescriptors = Nothing
{-# INLINE noCSSFontFaceDescriptors #-}

gTypeCSSFontFaceDescriptors :: JSM GType
gTypeCSSFontFaceDescriptors = GType . Object <$> jsg "CSSFontFaceDescriptors"

-- | Functions for this interface are in "JSDOM.CSSFontFaceRule" (css-fonts-5).
newtype CSSFontFaceRule = CSSFontFaceRule { unCSSFontFaceRule :: JSVal }

instance PToJSVal CSSFontFaceRule where
  pToJSVal = unCSSFontFaceRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSFontFaceRule where
  pFromJSVal = CSSFontFaceRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSFontFaceRule where
  toJSVal = return . unCSSFontFaceRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSFontFaceRule where
  fromJSVal v = fmap CSSFontFaceRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSFontFaceRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSFontFaceRule where
  makeObject = makeObject . unCSSFontFaceRule

instance IsCSSRule CSSFontFaceRule

instance IsGObject CSSFontFaceRule where
  typeGType _ = gTypeCSSFontFaceRule
  {-# INLINE typeGType #-}

noCSSFontFaceRule :: Maybe CSSFontFaceRule
noCSSFontFaceRule = Nothing
{-# INLINE noCSSFontFaceRule #-}

gTypeCSSFontFaceRule :: JSM GType
gTypeCSSFontFaceRule = GType . Object <$> jsg "CSSFontFaceRule"

-- | Functions for this interface are in "JSDOM.CSSFontFeatureValuesRule" (css-fonts-4).
newtype CSSFontFeatureValuesRule = CSSFontFeatureValuesRule { unCSSFontFeatureValuesRule :: JSVal }

instance PToJSVal CSSFontFeatureValuesRule where
  pToJSVal = unCSSFontFeatureValuesRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSFontFeatureValuesRule where
  pFromJSVal = CSSFontFeatureValuesRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSFontFeatureValuesRule where
  toJSVal = return . unCSSFontFeatureValuesRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSFontFeatureValuesRule where
  fromJSVal v = fmap CSSFontFeatureValuesRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSFontFeatureValuesRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSFontFeatureValuesRule where
  makeObject = makeObject . unCSSFontFeatureValuesRule

instance IsCSSRule CSSFontFeatureValuesRule

instance IsGObject CSSFontFeatureValuesRule where
  typeGType _ = gTypeCSSFontFeatureValuesRule
  {-# INLINE typeGType #-}

noCSSFontFeatureValuesRule :: Maybe CSSFontFeatureValuesRule
noCSSFontFeatureValuesRule = Nothing
{-# INLINE noCSSFontFeatureValuesRule #-}

gTypeCSSFontFeatureValuesRule :: JSM GType
gTypeCSSFontFeatureValuesRule = GType . Object <$> jsg "CSSFontFeatureValuesRule"

-- | Functions for this interface are in "JSDOM.CSSFontPaletteValuesRule" (css-fonts-4).
newtype CSSFontPaletteValuesRule = CSSFontPaletteValuesRule { unCSSFontPaletteValuesRule :: JSVal }

instance PToJSVal CSSFontPaletteValuesRule where
  pToJSVal = unCSSFontPaletteValuesRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSFontPaletteValuesRule where
  pFromJSVal = CSSFontPaletteValuesRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSFontPaletteValuesRule where
  toJSVal = return . unCSSFontPaletteValuesRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSFontPaletteValuesRule where
  fromJSVal v = fmap CSSFontPaletteValuesRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSFontPaletteValuesRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSFontPaletteValuesRule where
  makeObject = makeObject . unCSSFontPaletteValuesRule

instance IsCSSRule CSSFontPaletteValuesRule

instance IsGObject CSSFontPaletteValuesRule where
  typeGType _ = gTypeCSSFontPaletteValuesRule
  {-# INLINE typeGType #-}

noCSSFontPaletteValuesRule :: Maybe CSSFontPaletteValuesRule
noCSSFontPaletteValuesRule = Nothing
{-# INLINE noCSSFontPaletteValuesRule #-}

gTypeCSSFontPaletteValuesRule :: JSM GType
gTypeCSSFontPaletteValuesRule = GType . Object <$> jsg "CSSFontPaletteValuesRule"

-- | Functions for this interface are in "JSDOM.CSSGroupingRule" (cssom-1).
newtype CSSGroupingRule = CSSGroupingRule { unCSSGroupingRule :: JSVal }

instance PToJSVal CSSGroupingRule where
  pToJSVal = unCSSGroupingRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSGroupingRule where
  pFromJSVal = CSSGroupingRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSGroupingRule where
  toJSVal = return . unCSSGroupingRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSGroupingRule where
  fromJSVal v = fmap CSSGroupingRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSGroupingRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSGroupingRule where
  makeObject = makeObject . unCSSGroupingRule

class (IsCSSRule o, IsGObject o) => IsCSSGroupingRule o
toCSSGroupingRule :: IsCSSGroupingRule o => o -> CSSGroupingRule
toCSSGroupingRule = CSSGroupingRule . coerce

instance IsCSSGroupingRule CSSGroupingRule
instance IsCSSRule CSSGroupingRule

instance IsGObject CSSGroupingRule where
  typeGType _ = gTypeCSSGroupingRule
  {-# INLINE typeGType #-}

noCSSGroupingRule :: Maybe CSSGroupingRule
noCSSGroupingRule = Nothing
{-# INLINE noCSSGroupingRule #-}

gTypeCSSGroupingRule :: JSM GType
gTypeCSSGroupingRule = GType . Object <$> jsg "CSSGroupingRule"

-- | Functions for this interface are in "JSDOM.CSSImageValue" (css-typed-om-1).
newtype CSSImageValue = CSSImageValue { unCSSImageValue :: JSVal }

instance PToJSVal CSSImageValue where
  pToJSVal = unCSSImageValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSImageValue where
  pFromJSVal = CSSImageValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSImageValue where
  toJSVal = return . unCSSImageValue
  {-# INLINE toJSVal #-}

instance FromJSVal CSSImageValue where
  fromJSVal v = fmap CSSImageValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSImageValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSImageValue where
  makeObject = makeObject . unCSSImageValue

instance IsCSSStyleValue CSSImageValue

instance IsGObject CSSImageValue where
  typeGType _ = gTypeCSSImageValue
  {-# INLINE typeGType #-}

noCSSImageValue :: Maybe CSSImageValue
noCSSImageValue = Nothing
{-# INLINE noCSSImageValue #-}

gTypeCSSImageValue :: JSM GType
gTypeCSSImageValue = GType . Object <$> jsg "CSSImageValue"

-- | Functions for this interface are in "JSDOM.CSSImportRule" (cssom-1).
newtype CSSImportRule = CSSImportRule { unCSSImportRule :: JSVal }

instance PToJSVal CSSImportRule where
  pToJSVal = unCSSImportRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSImportRule where
  pFromJSVal = CSSImportRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSImportRule where
  toJSVal = return . unCSSImportRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSImportRule where
  fromJSVal v = fmap CSSImportRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSImportRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSImportRule where
  makeObject = makeObject . unCSSImportRule

instance IsCSSRule CSSImportRule

instance IsGObject CSSImportRule where
  typeGType _ = gTypeCSSImportRule
  {-# INLINE typeGType #-}

noCSSImportRule :: Maybe CSSImportRule
noCSSImportRule = Nothing
{-# INLINE noCSSImportRule #-}

gTypeCSSImportRule :: JSM GType
gTypeCSSImportRule = GType . Object <$> jsg "CSSImportRule"

-- | Functions for this interface are in "JSDOM.CSSKeyframeRule" (css-animations-1).
newtype CSSKeyframeRule = CSSKeyframeRule { unCSSKeyframeRule :: JSVal }

instance PToJSVal CSSKeyframeRule where
  pToJSVal = unCSSKeyframeRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSKeyframeRule where
  pFromJSVal = CSSKeyframeRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSKeyframeRule where
  toJSVal = return . unCSSKeyframeRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSKeyframeRule where
  fromJSVal v = fmap CSSKeyframeRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSKeyframeRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSKeyframeRule where
  makeObject = makeObject . unCSSKeyframeRule

instance IsCSSRule CSSKeyframeRule

instance IsGObject CSSKeyframeRule where
  typeGType _ = gTypeCSSKeyframeRule
  {-# INLINE typeGType #-}

noCSSKeyframeRule :: Maybe CSSKeyframeRule
noCSSKeyframeRule = Nothing
{-# INLINE noCSSKeyframeRule #-}

gTypeCSSKeyframeRule :: JSM GType
gTypeCSSKeyframeRule = GType . Object <$> jsg "CSSKeyframeRule"

-- | Functions for this interface are in "JSDOM.CSSKeyframesRule" (css-animations-1).
newtype CSSKeyframesRule = CSSKeyframesRule { unCSSKeyframesRule :: JSVal }

instance PToJSVal CSSKeyframesRule where
  pToJSVal = unCSSKeyframesRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSKeyframesRule where
  pFromJSVal = CSSKeyframesRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSKeyframesRule where
  toJSVal = return . unCSSKeyframesRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSKeyframesRule where
  fromJSVal v = fmap CSSKeyframesRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSKeyframesRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSKeyframesRule where
  makeObject = makeObject . unCSSKeyframesRule

instance IsCSSRule CSSKeyframesRule

instance IsGObject CSSKeyframesRule where
  typeGType _ = gTypeCSSKeyframesRule
  {-# INLINE typeGType #-}

noCSSKeyframesRule :: Maybe CSSKeyframesRule
noCSSKeyframesRule = Nothing
{-# INLINE noCSSKeyframesRule #-}

gTypeCSSKeyframesRule :: JSM GType
gTypeCSSKeyframesRule = GType . Object <$> jsg "CSSKeyframesRule"

-- | Functions for this interface are in "JSDOM.CSSKeywordValue" (css-typed-om-1).
newtype CSSKeywordValue = CSSKeywordValue { unCSSKeywordValue :: JSVal }

instance PToJSVal CSSKeywordValue where
  pToJSVal = unCSSKeywordValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSKeywordValue where
  pFromJSVal = CSSKeywordValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSKeywordValue where
  toJSVal = return . unCSSKeywordValue
  {-# INLINE toJSVal #-}

instance FromJSVal CSSKeywordValue where
  fromJSVal v = fmap CSSKeywordValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSKeywordValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSKeywordValue where
  makeObject = makeObject . unCSSKeywordValue

instance IsCSSStyleValue CSSKeywordValue

instance IsGObject CSSKeywordValue where
  typeGType _ = gTypeCSSKeywordValue
  {-# INLINE typeGType #-}

noCSSKeywordValue :: Maybe CSSKeywordValue
noCSSKeywordValue = Nothing
{-# INLINE noCSSKeywordValue #-}

gTypeCSSKeywordValue :: JSM GType
gTypeCSSKeywordValue = GType . Object <$> jsg "CSSKeywordValue"

-- | Functions for this interface are in "JSDOM.CSSLayerBlockRule" (css-cascade-5).
newtype CSSLayerBlockRule = CSSLayerBlockRule { unCSSLayerBlockRule :: JSVal }

instance PToJSVal CSSLayerBlockRule where
  pToJSVal = unCSSLayerBlockRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSLayerBlockRule where
  pFromJSVal = CSSLayerBlockRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSLayerBlockRule where
  toJSVal = return . unCSSLayerBlockRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSLayerBlockRule where
  fromJSVal v = fmap CSSLayerBlockRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSLayerBlockRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSLayerBlockRule where
  makeObject = makeObject . unCSSLayerBlockRule

instance IsCSSGroupingRule CSSLayerBlockRule
instance IsCSSRule CSSLayerBlockRule

instance IsGObject CSSLayerBlockRule where
  typeGType _ = gTypeCSSLayerBlockRule
  {-# INLINE typeGType #-}

noCSSLayerBlockRule :: Maybe CSSLayerBlockRule
noCSSLayerBlockRule = Nothing
{-# INLINE noCSSLayerBlockRule #-}

gTypeCSSLayerBlockRule :: JSM GType
gTypeCSSLayerBlockRule = GType . Object <$> jsg "CSSLayerBlockRule"

-- | Functions for this interface are in "JSDOM.CSSLayerStatementRule" (css-cascade-5).
newtype CSSLayerStatementRule = CSSLayerStatementRule { unCSSLayerStatementRule :: JSVal }

instance PToJSVal CSSLayerStatementRule where
  pToJSVal = unCSSLayerStatementRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSLayerStatementRule where
  pFromJSVal = CSSLayerStatementRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSLayerStatementRule where
  toJSVal = return . unCSSLayerStatementRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSLayerStatementRule where
  fromJSVal v = fmap CSSLayerStatementRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSLayerStatementRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSLayerStatementRule where
  makeObject = makeObject . unCSSLayerStatementRule

instance IsCSSRule CSSLayerStatementRule

instance IsGObject CSSLayerStatementRule where
  typeGType _ = gTypeCSSLayerStatementRule
  {-# INLINE typeGType #-}

noCSSLayerStatementRule :: Maybe CSSLayerStatementRule
noCSSLayerStatementRule = Nothing
{-# INLINE noCSSLayerStatementRule #-}

gTypeCSSLayerStatementRule :: JSM GType
gTypeCSSLayerStatementRule = GType . Object <$> jsg "CSSLayerStatementRule"

-- | Functions for this interface are in "JSDOM.CSSMathClamp" (css-typed-om-1).
newtype CSSMathClamp = CSSMathClamp { unCSSMathClamp :: JSVal }

instance PToJSVal CSSMathClamp where
  pToJSVal = unCSSMathClamp
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSMathClamp where
  pFromJSVal = CSSMathClamp
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSMathClamp where
  toJSVal = return . unCSSMathClamp
  {-# INLINE toJSVal #-}

instance FromJSVal CSSMathClamp where
  fromJSVal v = fmap CSSMathClamp <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSMathClamp
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSMathClamp where
  makeObject = makeObject . unCSSMathClamp

instance IsCSSMathValue CSSMathClamp
instance IsCSSNumericValue CSSMathClamp
instance IsCSSStyleValue CSSMathClamp

instance IsGObject CSSMathClamp where
  typeGType _ = gTypeCSSMathClamp
  {-# INLINE typeGType #-}

noCSSMathClamp :: Maybe CSSMathClamp
noCSSMathClamp = Nothing
{-# INLINE noCSSMathClamp #-}

gTypeCSSMathClamp :: JSM GType
gTypeCSSMathClamp = GType . Object <$> jsg "CSSMathClamp"

-- | Functions for this interface are in "JSDOM.CSSMathInvert" (css-typed-om-1).
newtype CSSMathInvert = CSSMathInvert { unCSSMathInvert :: JSVal }

instance PToJSVal CSSMathInvert where
  pToJSVal = unCSSMathInvert
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSMathInvert where
  pFromJSVal = CSSMathInvert
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSMathInvert where
  toJSVal = return . unCSSMathInvert
  {-# INLINE toJSVal #-}

instance FromJSVal CSSMathInvert where
  fromJSVal v = fmap CSSMathInvert <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSMathInvert
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSMathInvert where
  makeObject = makeObject . unCSSMathInvert

instance IsCSSMathValue CSSMathInvert
instance IsCSSNumericValue CSSMathInvert
instance IsCSSStyleValue CSSMathInvert

instance IsGObject CSSMathInvert where
  typeGType _ = gTypeCSSMathInvert
  {-# INLINE typeGType #-}

noCSSMathInvert :: Maybe CSSMathInvert
noCSSMathInvert = Nothing
{-# INLINE noCSSMathInvert #-}

gTypeCSSMathInvert :: JSM GType
gTypeCSSMathInvert = GType . Object <$> jsg "CSSMathInvert"

-- | Functions for this interface are in "JSDOM.CSSMathMax" (css-typed-om-1).
newtype CSSMathMax = CSSMathMax { unCSSMathMax :: JSVal }

instance PToJSVal CSSMathMax where
  pToJSVal = unCSSMathMax
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSMathMax where
  pFromJSVal = CSSMathMax
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSMathMax where
  toJSVal = return . unCSSMathMax
  {-# INLINE toJSVal #-}

instance FromJSVal CSSMathMax where
  fromJSVal v = fmap CSSMathMax <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSMathMax
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSMathMax where
  makeObject = makeObject . unCSSMathMax

instance IsCSSMathValue CSSMathMax
instance IsCSSNumericValue CSSMathMax
instance IsCSSStyleValue CSSMathMax

instance IsGObject CSSMathMax where
  typeGType _ = gTypeCSSMathMax
  {-# INLINE typeGType #-}

noCSSMathMax :: Maybe CSSMathMax
noCSSMathMax = Nothing
{-# INLINE noCSSMathMax #-}

gTypeCSSMathMax :: JSM GType
gTypeCSSMathMax = GType . Object <$> jsg "CSSMathMax"

-- | Functions for this interface are in "JSDOM.CSSMathMin" (css-typed-om-1).
newtype CSSMathMin = CSSMathMin { unCSSMathMin :: JSVal }

instance PToJSVal CSSMathMin where
  pToJSVal = unCSSMathMin
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSMathMin where
  pFromJSVal = CSSMathMin
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSMathMin where
  toJSVal = return . unCSSMathMin
  {-# INLINE toJSVal #-}

instance FromJSVal CSSMathMin where
  fromJSVal v = fmap CSSMathMin <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSMathMin
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSMathMin where
  makeObject = makeObject . unCSSMathMin

instance IsCSSMathValue CSSMathMin
instance IsCSSNumericValue CSSMathMin
instance IsCSSStyleValue CSSMathMin

instance IsGObject CSSMathMin where
  typeGType _ = gTypeCSSMathMin
  {-# INLINE typeGType #-}

noCSSMathMin :: Maybe CSSMathMin
noCSSMathMin = Nothing
{-# INLINE noCSSMathMin #-}

gTypeCSSMathMin :: JSM GType
gTypeCSSMathMin = GType . Object <$> jsg "CSSMathMin"

-- | Functions for this interface are in "JSDOM.CSSMathNegate" (css-typed-om-1).
newtype CSSMathNegate = CSSMathNegate { unCSSMathNegate :: JSVal }

instance PToJSVal CSSMathNegate where
  pToJSVal = unCSSMathNegate
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSMathNegate where
  pFromJSVal = CSSMathNegate
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSMathNegate where
  toJSVal = return . unCSSMathNegate
  {-# INLINE toJSVal #-}

instance FromJSVal CSSMathNegate where
  fromJSVal v = fmap CSSMathNegate <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSMathNegate
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSMathNegate where
  makeObject = makeObject . unCSSMathNegate

instance IsCSSMathValue CSSMathNegate
instance IsCSSNumericValue CSSMathNegate
instance IsCSSStyleValue CSSMathNegate

instance IsGObject CSSMathNegate where
  typeGType _ = gTypeCSSMathNegate
  {-# INLINE typeGType #-}

noCSSMathNegate :: Maybe CSSMathNegate
noCSSMathNegate = Nothing
{-# INLINE noCSSMathNegate #-}

gTypeCSSMathNegate :: JSM GType
gTypeCSSMathNegate = GType . Object <$> jsg "CSSMathNegate"

-- | Functions for this interface are in "JSDOM.CSSMathProduct" (css-typed-om-1).
newtype CSSMathProduct = CSSMathProduct { unCSSMathProduct :: JSVal }

instance PToJSVal CSSMathProduct where
  pToJSVal = unCSSMathProduct
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSMathProduct where
  pFromJSVal = CSSMathProduct
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSMathProduct where
  toJSVal = return . unCSSMathProduct
  {-# INLINE toJSVal #-}

instance FromJSVal CSSMathProduct where
  fromJSVal v = fmap CSSMathProduct <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSMathProduct
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSMathProduct where
  makeObject = makeObject . unCSSMathProduct

instance IsCSSMathValue CSSMathProduct
instance IsCSSNumericValue CSSMathProduct
instance IsCSSStyleValue CSSMathProduct

instance IsGObject CSSMathProduct where
  typeGType _ = gTypeCSSMathProduct
  {-# INLINE typeGType #-}

noCSSMathProduct :: Maybe CSSMathProduct
noCSSMathProduct = Nothing
{-# INLINE noCSSMathProduct #-}

gTypeCSSMathProduct :: JSM GType
gTypeCSSMathProduct = GType . Object <$> jsg "CSSMathProduct"

-- | Functions for this interface are in "JSDOM.CSSMathSum" (css-typed-om-1).
newtype CSSMathSum = CSSMathSum { unCSSMathSum :: JSVal }

instance PToJSVal CSSMathSum where
  pToJSVal = unCSSMathSum
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSMathSum where
  pFromJSVal = CSSMathSum
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSMathSum where
  toJSVal = return . unCSSMathSum
  {-# INLINE toJSVal #-}

instance FromJSVal CSSMathSum where
  fromJSVal v = fmap CSSMathSum <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSMathSum
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSMathSum where
  makeObject = makeObject . unCSSMathSum

instance IsCSSMathValue CSSMathSum
instance IsCSSNumericValue CSSMathSum
instance IsCSSStyleValue CSSMathSum

instance IsGObject CSSMathSum where
  typeGType _ = gTypeCSSMathSum
  {-# INLINE typeGType #-}

noCSSMathSum :: Maybe CSSMathSum
noCSSMathSum = Nothing
{-# INLINE noCSSMathSum #-}

gTypeCSSMathSum :: JSM GType
gTypeCSSMathSum = GType . Object <$> jsg "CSSMathSum"

-- | Functions for this interface are in "JSDOM.CSSMathValue" (css-typed-om-1).
newtype CSSMathValue = CSSMathValue { unCSSMathValue :: JSVal }

instance PToJSVal CSSMathValue where
  pToJSVal = unCSSMathValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSMathValue where
  pFromJSVal = CSSMathValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSMathValue where
  toJSVal = return . unCSSMathValue
  {-# INLINE toJSVal #-}

instance FromJSVal CSSMathValue where
  fromJSVal v = fmap CSSMathValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSMathValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSMathValue where
  makeObject = makeObject . unCSSMathValue

class (IsCSSNumericValue o, IsGObject o) => IsCSSMathValue o
toCSSMathValue :: IsCSSMathValue o => o -> CSSMathValue
toCSSMathValue = CSSMathValue . coerce

instance IsCSSMathValue CSSMathValue
instance IsCSSNumericValue CSSMathValue
instance IsCSSStyleValue CSSMathValue

instance IsGObject CSSMathValue where
  typeGType _ = gTypeCSSMathValue
  {-# INLINE typeGType #-}

noCSSMathValue :: Maybe CSSMathValue
noCSSMathValue = Nothing
{-# INLINE noCSSMathValue #-}

gTypeCSSMathValue :: JSM GType
gTypeCSSMathValue = GType . Object <$> jsg "CSSMathValue"

-- | Functions for this interface are in "JSDOM.CSSMatrixComponent" (css-typed-om-1).
newtype CSSMatrixComponent = CSSMatrixComponent { unCSSMatrixComponent :: JSVal }

instance PToJSVal CSSMatrixComponent where
  pToJSVal = unCSSMatrixComponent
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSMatrixComponent where
  pFromJSVal = CSSMatrixComponent
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSMatrixComponent where
  toJSVal = return . unCSSMatrixComponent
  {-# INLINE toJSVal #-}

instance FromJSVal CSSMatrixComponent where
  fromJSVal v = fmap CSSMatrixComponent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSMatrixComponent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSMatrixComponent where
  makeObject = makeObject . unCSSMatrixComponent

instance IsCSSTransformComponent CSSMatrixComponent

instance IsGObject CSSMatrixComponent where
  typeGType _ = gTypeCSSMatrixComponent
  {-# INLINE typeGType #-}

noCSSMatrixComponent :: Maybe CSSMatrixComponent
noCSSMatrixComponent = Nothing
{-# INLINE noCSSMatrixComponent #-}

gTypeCSSMatrixComponent :: JSM GType
gTypeCSSMatrixComponent = GType . Object <$> jsg "CSSMatrixComponent"

-- | Dictionary CSSMatrixComponentOptions (css-typed-om-1)
newtype CSSMatrixComponentOptions = CSSMatrixComponentOptions { unCSSMatrixComponentOptions :: JSVal }

instance PToJSVal CSSMatrixComponentOptions where
  pToJSVal = unCSSMatrixComponentOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSMatrixComponentOptions where
  pFromJSVal = CSSMatrixComponentOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSMatrixComponentOptions where
  toJSVal = return . unCSSMatrixComponentOptions
  {-# INLINE toJSVal #-}

instance FromJSVal CSSMatrixComponentOptions where
  fromJSVal v = fmap CSSMatrixComponentOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSMatrixComponentOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSMatrixComponentOptions where
  makeObject = makeObject . unCSSMatrixComponentOptions


instance IsGObject CSSMatrixComponentOptions where
  typeGType _ = gTypeCSSMatrixComponentOptions
  {-# INLINE typeGType #-}

noCSSMatrixComponentOptions :: Maybe CSSMatrixComponentOptions
noCSSMatrixComponentOptions = Nothing
{-# INLINE noCSSMatrixComponentOptions #-}

gTypeCSSMatrixComponentOptions :: JSM GType
gTypeCSSMatrixComponentOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CSSMediaRule" (css-conditional-3).
newtype CSSMediaRule = CSSMediaRule { unCSSMediaRule :: JSVal }

instance PToJSVal CSSMediaRule where
  pToJSVal = unCSSMediaRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSMediaRule where
  pFromJSVal = CSSMediaRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSMediaRule where
  toJSVal = return . unCSSMediaRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSMediaRule where
  fromJSVal v = fmap CSSMediaRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSMediaRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSMediaRule where
  makeObject = makeObject . unCSSMediaRule

instance IsCSSConditionRule CSSMediaRule
instance IsCSSGroupingRule CSSMediaRule
instance IsCSSRule CSSMediaRule

instance IsGObject CSSMediaRule where
  typeGType _ = gTypeCSSMediaRule
  {-# INLINE typeGType #-}

noCSSMediaRule :: Maybe CSSMediaRule
noCSSMediaRule = Nothing
{-# INLINE noCSSMediaRule #-}

gTypeCSSMediaRule :: JSM GType
gTypeCSSMediaRule = GType . Object <$> jsg "CSSMediaRule"

-- | Functions for this interface are in "JSDOM.CSSNamespaceRule" (cssom-1).
newtype CSSNamespaceRule = CSSNamespaceRule { unCSSNamespaceRule :: JSVal }

instance PToJSVal CSSNamespaceRule where
  pToJSVal = unCSSNamespaceRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSNamespaceRule where
  pFromJSVal = CSSNamespaceRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSNamespaceRule where
  toJSVal = return . unCSSNamespaceRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSNamespaceRule where
  fromJSVal v = fmap CSSNamespaceRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSNamespaceRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSNamespaceRule where
  makeObject = makeObject . unCSSNamespaceRule

instance IsCSSRule CSSNamespaceRule

instance IsGObject CSSNamespaceRule where
  typeGType _ = gTypeCSSNamespaceRule
  {-# INLINE typeGType #-}

noCSSNamespaceRule :: Maybe CSSNamespaceRule
noCSSNamespaceRule = Nothing
{-# INLINE noCSSNamespaceRule #-}

gTypeCSSNamespaceRule :: JSM GType
gTypeCSSNamespaceRule = GType . Object <$> jsg "CSSNamespaceRule"

-- | Functions for this interface are in "JSDOM.CSSNestedDeclarations" (css-nesting-1).
newtype CSSNestedDeclarations = CSSNestedDeclarations { unCSSNestedDeclarations :: JSVal }

instance PToJSVal CSSNestedDeclarations where
  pToJSVal = unCSSNestedDeclarations
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSNestedDeclarations where
  pFromJSVal = CSSNestedDeclarations
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSNestedDeclarations where
  toJSVal = return . unCSSNestedDeclarations
  {-# INLINE toJSVal #-}

instance FromJSVal CSSNestedDeclarations where
  fromJSVal v = fmap CSSNestedDeclarations <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSNestedDeclarations
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSNestedDeclarations where
  makeObject = makeObject . unCSSNestedDeclarations

instance IsCSSRule CSSNestedDeclarations

instance IsGObject CSSNestedDeclarations where
  typeGType _ = gTypeCSSNestedDeclarations
  {-# INLINE typeGType #-}

noCSSNestedDeclarations :: Maybe CSSNestedDeclarations
noCSSNestedDeclarations = Nothing
{-# INLINE noCSSNestedDeclarations #-}

gTypeCSSNestedDeclarations :: JSM GType
gTypeCSSNestedDeclarations = GType . Object <$> jsg "CSSNestedDeclarations"

-- | Functions for this interface are in "JSDOM.CSSNumericArray" (css-typed-om-1).
newtype CSSNumericArray = CSSNumericArray { unCSSNumericArray :: JSVal }

instance PToJSVal CSSNumericArray where
  pToJSVal = unCSSNumericArray
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSNumericArray where
  pFromJSVal = CSSNumericArray
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSNumericArray where
  toJSVal = return . unCSSNumericArray
  {-# INLINE toJSVal #-}

instance FromJSVal CSSNumericArray where
  fromJSVal v = fmap CSSNumericArray <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSNumericArray
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSNumericArray where
  makeObject = makeObject . unCSSNumericArray


instance IsGObject CSSNumericArray where
  typeGType _ = gTypeCSSNumericArray
  {-# INLINE typeGType #-}

noCSSNumericArray :: Maybe CSSNumericArray
noCSSNumericArray = Nothing
{-# INLINE noCSSNumericArray #-}

gTypeCSSNumericArray :: JSM GType
gTypeCSSNumericArray = GType . Object <$> jsg "CSSNumericArray"

-- | Dictionary CSSNumericType (css-typed-om-1)
newtype CSSNumericType = CSSNumericType { unCSSNumericType :: JSVal }

instance PToJSVal CSSNumericType where
  pToJSVal = unCSSNumericType
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSNumericType where
  pFromJSVal = CSSNumericType
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSNumericType where
  toJSVal = return . unCSSNumericType
  {-# INLINE toJSVal #-}

instance FromJSVal CSSNumericType where
  fromJSVal v = fmap CSSNumericType <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSNumericType
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSNumericType where
  makeObject = makeObject . unCSSNumericType


instance IsGObject CSSNumericType where
  typeGType _ = gTypeCSSNumericType
  {-# INLINE typeGType #-}

noCSSNumericType :: Maybe CSSNumericType
noCSSNumericType = Nothing
{-# INLINE noCSSNumericType #-}

gTypeCSSNumericType :: JSM GType
gTypeCSSNumericType = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CSSNumericValue" (css-typed-om-1).
newtype CSSNumericValue = CSSNumericValue { unCSSNumericValue :: JSVal }

instance PToJSVal CSSNumericValue where
  pToJSVal = unCSSNumericValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSNumericValue where
  pFromJSVal = CSSNumericValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSNumericValue where
  toJSVal = return . unCSSNumericValue
  {-# INLINE toJSVal #-}

instance FromJSVal CSSNumericValue where
  fromJSVal v = fmap CSSNumericValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSNumericValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSNumericValue where
  makeObject = makeObject . unCSSNumericValue

class (IsCSSStyleValue o, IsGObject o) => IsCSSNumericValue o
toCSSNumericValue :: IsCSSNumericValue o => o -> CSSNumericValue
toCSSNumericValue = CSSNumericValue . coerce

instance IsCSSNumericValue CSSNumericValue
instance IsCSSStyleValue CSSNumericValue

instance IsGObject CSSNumericValue where
  typeGType _ = gTypeCSSNumericValue
  {-# INLINE typeGType #-}

noCSSNumericValue :: Maybe CSSNumericValue
noCSSNumericValue = Nothing
{-# INLINE noCSSNumericValue #-}

gTypeCSSNumericValue :: JSM GType
gTypeCSSNumericValue = GType . Object <$> jsg "CSSNumericValue"

-- | Functions for this interface are in "JSDOM.CSSPageDescriptors" (cssom-1).
newtype CSSPageDescriptors = CSSPageDescriptors { unCSSPageDescriptors :: JSVal }

instance PToJSVal CSSPageDescriptors where
  pToJSVal = unCSSPageDescriptors
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSPageDescriptors where
  pFromJSVal = CSSPageDescriptors
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSPageDescriptors where
  toJSVal = return . unCSSPageDescriptors
  {-# INLINE toJSVal #-}

instance FromJSVal CSSPageDescriptors where
  fromJSVal v = fmap CSSPageDescriptors <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSPageDescriptors
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSPageDescriptors where
  makeObject = makeObject . unCSSPageDescriptors

instance IsCSSStyleDeclaration CSSPageDescriptors

instance IsGObject CSSPageDescriptors where
  typeGType _ = gTypeCSSPageDescriptors
  {-# INLINE typeGType #-}

noCSSPageDescriptors :: Maybe CSSPageDescriptors
noCSSPageDescriptors = Nothing
{-# INLINE noCSSPageDescriptors #-}

gTypeCSSPageDescriptors :: JSM GType
gTypeCSSPageDescriptors = GType . Object <$> jsg "CSSPageDescriptors"

-- | Functions for this interface are in "JSDOM.CSSPageRule" (cssom-1).
newtype CSSPageRule = CSSPageRule { unCSSPageRule :: JSVal }

instance PToJSVal CSSPageRule where
  pToJSVal = unCSSPageRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSPageRule where
  pFromJSVal = CSSPageRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSPageRule where
  toJSVal = return . unCSSPageRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSPageRule where
  fromJSVal v = fmap CSSPageRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSPageRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSPageRule where
  makeObject = makeObject . unCSSPageRule

instance IsCSSGroupingRule CSSPageRule
instance IsCSSRule CSSPageRule

instance IsGObject CSSPageRule where
  typeGType _ = gTypeCSSPageRule
  {-# INLINE typeGType #-}

noCSSPageRule :: Maybe CSSPageRule
noCSSPageRule = Nothing
{-# INLINE noCSSPageRule #-}

gTypeCSSPageRule :: JSM GType
gTypeCSSPageRule = GType . Object <$> jsg "CSSPageRule"

-- | Functions for this interface are in "JSDOM.CSSPerspective" (css-typed-om-1).
newtype CSSPerspective = CSSPerspective { unCSSPerspective :: JSVal }

instance PToJSVal CSSPerspective where
  pToJSVal = unCSSPerspective
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSPerspective where
  pFromJSVal = CSSPerspective
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSPerspective where
  toJSVal = return . unCSSPerspective
  {-# INLINE toJSVal #-}

instance FromJSVal CSSPerspective where
  fromJSVal v = fmap CSSPerspective <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSPerspective
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSPerspective where
  makeObject = makeObject . unCSSPerspective

instance IsCSSTransformComponent CSSPerspective

instance IsGObject CSSPerspective where
  typeGType _ = gTypeCSSPerspective
  {-# INLINE typeGType #-}

noCSSPerspective :: Maybe CSSPerspective
noCSSPerspective = Nothing
{-# INLINE noCSSPerspective #-}

gTypeCSSPerspective :: JSM GType
gTypeCSSPerspective = GType . Object <$> jsg "CSSPerspective"

-- | Functions for this interface are in "JSDOM.CSSPositionTryDescriptors" (css-anchor-position-1).
newtype CSSPositionTryDescriptors = CSSPositionTryDescriptors { unCSSPositionTryDescriptors :: JSVal }

instance PToJSVal CSSPositionTryDescriptors where
  pToJSVal = unCSSPositionTryDescriptors
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSPositionTryDescriptors where
  pFromJSVal = CSSPositionTryDescriptors
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSPositionTryDescriptors where
  toJSVal = return . unCSSPositionTryDescriptors
  {-# INLINE toJSVal #-}

instance FromJSVal CSSPositionTryDescriptors where
  fromJSVal v = fmap CSSPositionTryDescriptors <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSPositionTryDescriptors
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSPositionTryDescriptors where
  makeObject = makeObject . unCSSPositionTryDescriptors

instance IsCSSStyleDeclaration CSSPositionTryDescriptors

instance IsGObject CSSPositionTryDescriptors where
  typeGType _ = gTypeCSSPositionTryDescriptors
  {-# INLINE typeGType #-}

noCSSPositionTryDescriptors :: Maybe CSSPositionTryDescriptors
noCSSPositionTryDescriptors = Nothing
{-# INLINE noCSSPositionTryDescriptors #-}

gTypeCSSPositionTryDescriptors :: JSM GType
gTypeCSSPositionTryDescriptors = GType . Object <$> jsg "CSSPositionTryDescriptors"

-- | Functions for this interface are in "JSDOM.CSSPositionTryRule" (css-anchor-position-1).
newtype CSSPositionTryRule = CSSPositionTryRule { unCSSPositionTryRule :: JSVal }

instance PToJSVal CSSPositionTryRule where
  pToJSVal = unCSSPositionTryRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSPositionTryRule where
  pFromJSVal = CSSPositionTryRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSPositionTryRule where
  toJSVal = return . unCSSPositionTryRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSPositionTryRule where
  fromJSVal v = fmap CSSPositionTryRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSPositionTryRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSPositionTryRule where
  makeObject = makeObject . unCSSPositionTryRule

instance IsCSSRule CSSPositionTryRule

instance IsGObject CSSPositionTryRule where
  typeGType _ = gTypeCSSPositionTryRule
  {-# INLINE typeGType #-}

noCSSPositionTryRule :: Maybe CSSPositionTryRule
noCSSPositionTryRule = Nothing
{-# INLINE noCSSPositionTryRule #-}

gTypeCSSPositionTryRule :: JSM GType
gTypeCSSPositionTryRule = GType . Object <$> jsg "CSSPositionTryRule"

-- | Functions for this interface are in "JSDOM.CSSPropertyRule" (css-properties-values-api-1).
newtype CSSPropertyRule = CSSPropertyRule { unCSSPropertyRule :: JSVal }

instance PToJSVal CSSPropertyRule where
  pToJSVal = unCSSPropertyRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSPropertyRule where
  pFromJSVal = CSSPropertyRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSPropertyRule where
  toJSVal = return . unCSSPropertyRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSPropertyRule where
  fromJSVal v = fmap CSSPropertyRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSPropertyRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSPropertyRule where
  makeObject = makeObject . unCSSPropertyRule

instance IsCSSRule CSSPropertyRule

instance IsGObject CSSPropertyRule where
  typeGType _ = gTypeCSSPropertyRule
  {-# INLINE typeGType #-}

noCSSPropertyRule :: Maybe CSSPropertyRule
noCSSPropertyRule = Nothing
{-# INLINE noCSSPropertyRule #-}

gTypeCSSPropertyRule :: JSM GType
gTypeCSSPropertyRule = GType . Object <$> jsg "CSSPropertyRule"

-- | Functions for this interface are in "JSDOM.CSSRotate" (css-typed-om-1).
newtype CSSRotate = CSSRotate { unCSSRotate :: JSVal }

instance PToJSVal CSSRotate where
  pToJSVal = unCSSRotate
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSRotate where
  pFromJSVal = CSSRotate
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSRotate where
  toJSVal = return . unCSSRotate
  {-# INLINE toJSVal #-}

instance FromJSVal CSSRotate where
  fromJSVal v = fmap CSSRotate <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSRotate
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSRotate where
  makeObject = makeObject . unCSSRotate

instance IsCSSTransformComponent CSSRotate

instance IsGObject CSSRotate where
  typeGType _ = gTypeCSSRotate
  {-# INLINE typeGType #-}

noCSSRotate :: Maybe CSSRotate
noCSSRotate = Nothing
{-# INLINE noCSSRotate #-}

gTypeCSSRotate :: JSM GType
gTypeCSSRotate = GType . Object <$> jsg "CSSRotate"

-- | Functions for this interface are in "JSDOM.CSSRule" (cssom-1).
newtype CSSRule = CSSRule { unCSSRule :: JSVal }

instance PToJSVal CSSRule where
  pToJSVal = unCSSRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSRule where
  pFromJSVal = CSSRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSRule where
  toJSVal = return . unCSSRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSRule where
  fromJSVal v = fmap CSSRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSRule where
  makeObject = makeObject . unCSSRule

class (IsGObject o) => IsCSSRule o
toCSSRule :: IsCSSRule o => o -> CSSRule
toCSSRule = CSSRule . coerce

instance IsCSSRule CSSRule

instance IsGObject CSSRule where
  typeGType _ = gTypeCSSRule
  {-# INLINE typeGType #-}

noCSSRule :: Maybe CSSRule
noCSSRule = Nothing
{-# INLINE noCSSRule #-}

gTypeCSSRule :: JSM GType
gTypeCSSRule = GType . Object <$> jsg "CSSRule"

-- | Functions for this interface are in "JSDOM.CSSRuleList" (cssom-1).
newtype CSSRuleList = CSSRuleList { unCSSRuleList :: JSVal }

instance PToJSVal CSSRuleList where
  pToJSVal = unCSSRuleList
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSRuleList where
  pFromJSVal = CSSRuleList
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSRuleList where
  toJSVal = return . unCSSRuleList
  {-# INLINE toJSVal #-}

instance FromJSVal CSSRuleList where
  fromJSVal v = fmap CSSRuleList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSRuleList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSRuleList where
  makeObject = makeObject . unCSSRuleList


instance IsGObject CSSRuleList where
  typeGType _ = gTypeCSSRuleList
  {-# INLINE typeGType #-}

noCSSRuleList :: Maybe CSSRuleList
noCSSRuleList = Nothing
{-# INLINE noCSSRuleList #-}

gTypeCSSRuleList :: JSM GType
gTypeCSSRuleList = GType . Object <$> jsg "CSSRuleList"

-- | Functions for this interface are in "JSDOM.CSSScale" (css-typed-om-1).
newtype CSSScale = CSSScale { unCSSScale :: JSVal }

instance PToJSVal CSSScale where
  pToJSVal = unCSSScale
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSScale where
  pFromJSVal = CSSScale
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSScale where
  toJSVal = return . unCSSScale
  {-# INLINE toJSVal #-}

instance FromJSVal CSSScale where
  fromJSVal v = fmap CSSScale <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSScale
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSScale where
  makeObject = makeObject . unCSSScale

instance IsCSSTransformComponent CSSScale

instance IsGObject CSSScale where
  typeGType _ = gTypeCSSScale
  {-# INLINE typeGType #-}

noCSSScale :: Maybe CSSScale
noCSSScale = Nothing
{-# INLINE noCSSScale #-}

gTypeCSSScale :: JSM GType
gTypeCSSScale = GType . Object <$> jsg "CSSScale"

-- | Functions for this interface are in "JSDOM.CSSScopeRule" (css-cascade-6).
newtype CSSScopeRule = CSSScopeRule { unCSSScopeRule :: JSVal }

instance PToJSVal CSSScopeRule where
  pToJSVal = unCSSScopeRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSScopeRule where
  pFromJSVal = CSSScopeRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSScopeRule where
  toJSVal = return . unCSSScopeRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSScopeRule where
  fromJSVal v = fmap CSSScopeRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSScopeRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSScopeRule where
  makeObject = makeObject . unCSSScopeRule

instance IsCSSGroupingRule CSSScopeRule
instance IsCSSRule CSSScopeRule

instance IsGObject CSSScopeRule where
  typeGType _ = gTypeCSSScopeRule
  {-# INLINE typeGType #-}

noCSSScopeRule :: Maybe CSSScopeRule
noCSSScopeRule = Nothing
{-# INLINE noCSSScopeRule #-}

gTypeCSSScopeRule :: JSM GType
gTypeCSSScopeRule = GType . Object <$> jsg "CSSScopeRule"

-- | Functions for this interface are in "JSDOM.CSSSkew" (css-typed-om-1).
newtype CSSSkew = CSSSkew { unCSSSkew :: JSVal }

instance PToJSVal CSSSkew where
  pToJSVal = unCSSSkew
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSSkew where
  pFromJSVal = CSSSkew
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSSkew where
  toJSVal = return . unCSSSkew
  {-# INLINE toJSVal #-}

instance FromJSVal CSSSkew where
  fromJSVal v = fmap CSSSkew <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSSkew
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSSkew where
  makeObject = makeObject . unCSSSkew

instance IsCSSTransformComponent CSSSkew

instance IsGObject CSSSkew where
  typeGType _ = gTypeCSSSkew
  {-# INLINE typeGType #-}

noCSSSkew :: Maybe CSSSkew
noCSSSkew = Nothing
{-# INLINE noCSSSkew #-}

gTypeCSSSkew :: JSM GType
gTypeCSSSkew = GType . Object <$> jsg "CSSSkew"

-- | Functions for this interface are in "JSDOM.CSSSkewX" (css-typed-om-1).
newtype CSSSkewX = CSSSkewX { unCSSSkewX :: JSVal }

instance PToJSVal CSSSkewX where
  pToJSVal = unCSSSkewX
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSSkewX where
  pFromJSVal = CSSSkewX
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSSkewX where
  toJSVal = return . unCSSSkewX
  {-# INLINE toJSVal #-}

instance FromJSVal CSSSkewX where
  fromJSVal v = fmap CSSSkewX <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSSkewX
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSSkewX where
  makeObject = makeObject . unCSSSkewX

instance IsCSSTransformComponent CSSSkewX

instance IsGObject CSSSkewX where
  typeGType _ = gTypeCSSSkewX
  {-# INLINE typeGType #-}

noCSSSkewX :: Maybe CSSSkewX
noCSSSkewX = Nothing
{-# INLINE noCSSSkewX #-}

gTypeCSSSkewX :: JSM GType
gTypeCSSSkewX = GType . Object <$> jsg "CSSSkewX"

-- | Functions for this interface are in "JSDOM.CSSSkewY" (css-typed-om-1).
newtype CSSSkewY = CSSSkewY { unCSSSkewY :: JSVal }

instance PToJSVal CSSSkewY where
  pToJSVal = unCSSSkewY
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSSkewY where
  pFromJSVal = CSSSkewY
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSSkewY where
  toJSVal = return . unCSSSkewY
  {-# INLINE toJSVal #-}

instance FromJSVal CSSSkewY where
  fromJSVal v = fmap CSSSkewY <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSSkewY
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSSkewY where
  makeObject = makeObject . unCSSSkewY

instance IsCSSTransformComponent CSSSkewY

instance IsGObject CSSSkewY where
  typeGType _ = gTypeCSSSkewY
  {-# INLINE typeGType #-}

noCSSSkewY :: Maybe CSSSkewY
noCSSSkewY = Nothing
{-# INLINE noCSSSkewY #-}

gTypeCSSSkewY :: JSM GType
gTypeCSSSkewY = GType . Object <$> jsg "CSSSkewY"

-- | Functions for this interface are in "JSDOM.CSSStartingStyleRule" (css-transitions-2).
newtype CSSStartingStyleRule = CSSStartingStyleRule { unCSSStartingStyleRule :: JSVal }

instance PToJSVal CSSStartingStyleRule where
  pToJSVal = unCSSStartingStyleRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSStartingStyleRule where
  pFromJSVal = CSSStartingStyleRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSStartingStyleRule where
  toJSVal = return . unCSSStartingStyleRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSStartingStyleRule where
  fromJSVal v = fmap CSSStartingStyleRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSStartingStyleRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSStartingStyleRule where
  makeObject = makeObject . unCSSStartingStyleRule

instance IsCSSGroupingRule CSSStartingStyleRule
instance IsCSSRule CSSStartingStyleRule

instance IsGObject CSSStartingStyleRule where
  typeGType _ = gTypeCSSStartingStyleRule
  {-# INLINE typeGType #-}

noCSSStartingStyleRule :: Maybe CSSStartingStyleRule
noCSSStartingStyleRule = Nothing
{-# INLINE noCSSStartingStyleRule #-}

gTypeCSSStartingStyleRule :: JSM GType
gTypeCSSStartingStyleRule = GType . Object <$> jsg "CSSStartingStyleRule"

-- | Functions for this interface are in "JSDOM.CSSStyleDeclaration" (cssom-1).
newtype CSSStyleDeclaration = CSSStyleDeclaration { unCSSStyleDeclaration :: JSVal }

instance PToJSVal CSSStyleDeclaration where
  pToJSVal = unCSSStyleDeclaration
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSStyleDeclaration where
  pFromJSVal = CSSStyleDeclaration
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSStyleDeclaration where
  toJSVal = return . unCSSStyleDeclaration
  {-# INLINE toJSVal #-}

instance FromJSVal CSSStyleDeclaration where
  fromJSVal v = fmap CSSStyleDeclaration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSStyleDeclaration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSStyleDeclaration where
  makeObject = makeObject . unCSSStyleDeclaration

class (IsGObject o) => IsCSSStyleDeclaration o
toCSSStyleDeclaration :: IsCSSStyleDeclaration o => o -> CSSStyleDeclaration
toCSSStyleDeclaration = CSSStyleDeclaration . coerce

instance IsCSSStyleDeclaration CSSStyleDeclaration

instance IsGObject CSSStyleDeclaration where
  typeGType _ = gTypeCSSStyleDeclaration
  {-# INLINE typeGType #-}

noCSSStyleDeclaration :: Maybe CSSStyleDeclaration
noCSSStyleDeclaration = Nothing
{-# INLINE noCSSStyleDeclaration #-}

gTypeCSSStyleDeclaration :: JSM GType
gTypeCSSStyleDeclaration = GType . Object <$> jsg "CSSStyleDeclaration"

-- | Functions for this interface are in "JSDOM.CSSStyleProperties" (cssom-1).
newtype CSSStyleProperties = CSSStyleProperties { unCSSStyleProperties :: JSVal }

instance PToJSVal CSSStyleProperties where
  pToJSVal = unCSSStyleProperties
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSStyleProperties where
  pFromJSVal = CSSStyleProperties
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSStyleProperties where
  toJSVal = return . unCSSStyleProperties
  {-# INLINE toJSVal #-}

instance FromJSVal CSSStyleProperties where
  fromJSVal v = fmap CSSStyleProperties <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSStyleProperties
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSStyleProperties where
  makeObject = makeObject . unCSSStyleProperties

instance IsCSSStyleDeclaration CSSStyleProperties

instance IsGObject CSSStyleProperties where
  typeGType _ = gTypeCSSStyleProperties
  {-# INLINE typeGType #-}

noCSSStyleProperties :: Maybe CSSStyleProperties
noCSSStyleProperties = Nothing
{-# INLINE noCSSStyleProperties #-}

gTypeCSSStyleProperties :: JSM GType
gTypeCSSStyleProperties = GType . Object <$> jsg "CSSStyleProperties"

-- | Functions for this interface are in "JSDOM.CSSStyleRule" (cssom-1).
newtype CSSStyleRule = CSSStyleRule { unCSSStyleRule :: JSVal }

instance PToJSVal CSSStyleRule where
  pToJSVal = unCSSStyleRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSStyleRule where
  pFromJSVal = CSSStyleRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSStyleRule where
  toJSVal = return . unCSSStyleRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSStyleRule where
  fromJSVal v = fmap CSSStyleRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSStyleRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSStyleRule where
  makeObject = makeObject . unCSSStyleRule

instance IsCSSGroupingRule CSSStyleRule
instance IsCSSRule CSSStyleRule

instance IsGObject CSSStyleRule where
  typeGType _ = gTypeCSSStyleRule
  {-# INLINE typeGType #-}

noCSSStyleRule :: Maybe CSSStyleRule
noCSSStyleRule = Nothing
{-# INLINE noCSSStyleRule #-}

gTypeCSSStyleRule :: JSM GType
gTypeCSSStyleRule = GType . Object <$> jsg "CSSStyleRule"

-- | Functions for this interface are in "JSDOM.CSSStyleSheet" (cssom-1).
newtype CSSStyleSheet = CSSStyleSheet { unCSSStyleSheet :: JSVal }

instance PToJSVal CSSStyleSheet where
  pToJSVal = unCSSStyleSheet
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSStyleSheet where
  pFromJSVal = CSSStyleSheet
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSStyleSheet where
  toJSVal = return . unCSSStyleSheet
  {-# INLINE toJSVal #-}

instance FromJSVal CSSStyleSheet where
  fromJSVal v = fmap CSSStyleSheet <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSStyleSheet
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSStyleSheet where
  makeObject = makeObject . unCSSStyleSheet

instance IsStyleSheet CSSStyleSheet

instance IsGObject CSSStyleSheet where
  typeGType _ = gTypeCSSStyleSheet
  {-# INLINE typeGType #-}

noCSSStyleSheet :: Maybe CSSStyleSheet
noCSSStyleSheet = Nothing
{-# INLINE noCSSStyleSheet #-}

gTypeCSSStyleSheet :: JSM GType
gTypeCSSStyleSheet = GType . Object <$> jsg "CSSStyleSheet"

-- | Dictionary CSSStyleSheetInit (cssom-1)
newtype CSSStyleSheetInit = CSSStyleSheetInit { unCSSStyleSheetInit :: JSVal }

instance PToJSVal CSSStyleSheetInit where
  pToJSVal = unCSSStyleSheetInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSStyleSheetInit where
  pFromJSVal = CSSStyleSheetInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSStyleSheetInit where
  toJSVal = return . unCSSStyleSheetInit
  {-# INLINE toJSVal #-}

instance FromJSVal CSSStyleSheetInit where
  fromJSVal v = fmap CSSStyleSheetInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSStyleSheetInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSStyleSheetInit where
  makeObject = makeObject . unCSSStyleSheetInit


instance IsGObject CSSStyleSheetInit where
  typeGType _ = gTypeCSSStyleSheetInit
  {-# INLINE typeGType #-}

noCSSStyleSheetInit :: Maybe CSSStyleSheetInit
noCSSStyleSheetInit = Nothing
{-# INLINE noCSSStyleSheetInit #-}

gTypeCSSStyleSheetInit :: JSM GType
gTypeCSSStyleSheetInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CSSStyleValue" (css-typed-om-1).
newtype CSSStyleValue = CSSStyleValue { unCSSStyleValue :: JSVal }

instance PToJSVal CSSStyleValue where
  pToJSVal = unCSSStyleValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSStyleValue where
  pFromJSVal = CSSStyleValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSStyleValue where
  toJSVal = return . unCSSStyleValue
  {-# INLINE toJSVal #-}

instance FromJSVal CSSStyleValue where
  fromJSVal v = fmap CSSStyleValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSStyleValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSStyleValue where
  makeObject = makeObject . unCSSStyleValue

class (IsGObject o) => IsCSSStyleValue o
toCSSStyleValue :: IsCSSStyleValue o => o -> CSSStyleValue
toCSSStyleValue = CSSStyleValue . coerce

instance IsCSSStyleValue CSSStyleValue

instance IsGObject CSSStyleValue where
  typeGType _ = gTypeCSSStyleValue
  {-# INLINE typeGType #-}

noCSSStyleValue :: Maybe CSSStyleValue
noCSSStyleValue = Nothing
{-# INLINE noCSSStyleValue #-}

gTypeCSSStyleValue :: JSM GType
gTypeCSSStyleValue = GType . Object <$> jsg "CSSStyleValue"

-- | Functions for this interface are in "JSDOM.CSSSupportsRule" (css-conditional-3).
newtype CSSSupportsRule = CSSSupportsRule { unCSSSupportsRule :: JSVal }

instance PToJSVal CSSSupportsRule where
  pToJSVal = unCSSSupportsRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSSupportsRule where
  pFromJSVal = CSSSupportsRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSSupportsRule where
  toJSVal = return . unCSSSupportsRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSSupportsRule where
  fromJSVal v = fmap CSSSupportsRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSSupportsRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSSupportsRule where
  makeObject = makeObject . unCSSSupportsRule

instance IsCSSConditionRule CSSSupportsRule
instance IsCSSGroupingRule CSSSupportsRule
instance IsCSSRule CSSSupportsRule

instance IsGObject CSSSupportsRule where
  typeGType _ = gTypeCSSSupportsRule
  {-# INLINE typeGType #-}

noCSSSupportsRule :: Maybe CSSSupportsRule
noCSSSupportsRule = Nothing
{-# INLINE noCSSSupportsRule #-}

gTypeCSSSupportsRule :: JSM GType
gTypeCSSSupportsRule = GType . Object <$> jsg "CSSSupportsRule"

-- | Functions for this interface are in "JSDOM.CSSTransformComponent" (css-typed-om-1).
newtype CSSTransformComponent = CSSTransformComponent { unCSSTransformComponent :: JSVal }

instance PToJSVal CSSTransformComponent where
  pToJSVal = unCSSTransformComponent
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSTransformComponent where
  pFromJSVal = CSSTransformComponent
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSTransformComponent where
  toJSVal = return . unCSSTransformComponent
  {-# INLINE toJSVal #-}

instance FromJSVal CSSTransformComponent where
  fromJSVal v = fmap CSSTransformComponent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSTransformComponent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSTransformComponent where
  makeObject = makeObject . unCSSTransformComponent

class (IsGObject o) => IsCSSTransformComponent o
toCSSTransformComponent :: IsCSSTransformComponent o => o -> CSSTransformComponent
toCSSTransformComponent = CSSTransformComponent . coerce

instance IsCSSTransformComponent CSSTransformComponent

instance IsGObject CSSTransformComponent where
  typeGType _ = gTypeCSSTransformComponent
  {-# INLINE typeGType #-}

noCSSTransformComponent :: Maybe CSSTransformComponent
noCSSTransformComponent = Nothing
{-# INLINE noCSSTransformComponent #-}

gTypeCSSTransformComponent :: JSM GType
gTypeCSSTransformComponent = GType . Object <$> jsg "CSSTransformComponent"

-- | Functions for this interface are in "JSDOM.CSSTransformValue" (css-typed-om-1).
newtype CSSTransformValue = CSSTransformValue { unCSSTransformValue :: JSVal }

instance PToJSVal CSSTransformValue where
  pToJSVal = unCSSTransformValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSTransformValue where
  pFromJSVal = CSSTransformValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSTransformValue where
  toJSVal = return . unCSSTransformValue
  {-# INLINE toJSVal #-}

instance FromJSVal CSSTransformValue where
  fromJSVal v = fmap CSSTransformValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSTransformValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSTransformValue where
  makeObject = makeObject . unCSSTransformValue

instance IsCSSStyleValue CSSTransformValue

instance IsGObject CSSTransformValue where
  typeGType _ = gTypeCSSTransformValue
  {-# INLINE typeGType #-}

noCSSTransformValue :: Maybe CSSTransformValue
noCSSTransformValue = Nothing
{-# INLINE noCSSTransformValue #-}

gTypeCSSTransformValue :: JSM GType
gTypeCSSTransformValue = GType . Object <$> jsg "CSSTransformValue"

-- | Functions for this interface are in "JSDOM.CSSTransition" (css-transitions-2).
newtype CSSTransition = CSSTransition { unCSSTransition :: JSVal }

instance PToJSVal CSSTransition where
  pToJSVal = unCSSTransition
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSTransition where
  pFromJSVal = CSSTransition
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSTransition where
  toJSVal = return . unCSSTransition
  {-# INLINE toJSVal #-}

instance FromJSVal CSSTransition where
  fromJSVal v = fmap CSSTransition <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSTransition
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSTransition where
  makeObject = makeObject . unCSSTransition

instance IsAnimation CSSTransition
instance IsEventTarget CSSTransition

instance IsGObject CSSTransition where
  typeGType _ = gTypeCSSTransition
  {-# INLINE typeGType #-}

noCSSTransition :: Maybe CSSTransition
noCSSTransition = Nothing
{-# INLINE noCSSTransition #-}

gTypeCSSTransition :: JSM GType
gTypeCSSTransition = GType . Object <$> jsg "CSSTransition"

-- | Functions for this interface are in "JSDOM.CSSTranslate" (css-typed-om-1).
newtype CSSTranslate = CSSTranslate { unCSSTranslate :: JSVal }

instance PToJSVal CSSTranslate where
  pToJSVal = unCSSTranslate
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSTranslate where
  pFromJSVal = CSSTranslate
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSTranslate where
  toJSVal = return . unCSSTranslate
  {-# INLINE toJSVal #-}

instance FromJSVal CSSTranslate where
  fromJSVal v = fmap CSSTranslate <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSTranslate
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSTranslate where
  makeObject = makeObject . unCSSTranslate

instance IsCSSTransformComponent CSSTranslate

instance IsGObject CSSTranslate where
  typeGType _ = gTypeCSSTranslate
  {-# INLINE typeGType #-}

noCSSTranslate :: Maybe CSSTranslate
noCSSTranslate = Nothing
{-# INLINE noCSSTranslate #-}

gTypeCSSTranslate :: JSM GType
gTypeCSSTranslate = GType . Object <$> jsg "CSSTranslate"

-- | Functions for this interface are in "JSDOM.CSSUnitValue" (css-typed-om-1).
newtype CSSUnitValue = CSSUnitValue { unCSSUnitValue :: JSVal }

instance PToJSVal CSSUnitValue where
  pToJSVal = unCSSUnitValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSUnitValue where
  pFromJSVal = CSSUnitValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSUnitValue where
  toJSVal = return . unCSSUnitValue
  {-# INLINE toJSVal #-}

instance FromJSVal CSSUnitValue where
  fromJSVal v = fmap CSSUnitValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSUnitValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSUnitValue where
  makeObject = makeObject . unCSSUnitValue

instance IsCSSNumericValue CSSUnitValue
instance IsCSSStyleValue CSSUnitValue

instance IsGObject CSSUnitValue where
  typeGType _ = gTypeCSSUnitValue
  {-# INLINE typeGType #-}

noCSSUnitValue :: Maybe CSSUnitValue
noCSSUnitValue = Nothing
{-# INLINE noCSSUnitValue #-}

gTypeCSSUnitValue :: JSM GType
gTypeCSSUnitValue = GType . Object <$> jsg "CSSUnitValue"

-- | Functions for this interface are in "JSDOM.CSSUnparsedValue" (css-typed-om-1).
newtype CSSUnparsedValue = CSSUnparsedValue { unCSSUnparsedValue :: JSVal }

instance PToJSVal CSSUnparsedValue where
  pToJSVal = unCSSUnparsedValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSUnparsedValue where
  pFromJSVal = CSSUnparsedValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSUnparsedValue where
  toJSVal = return . unCSSUnparsedValue
  {-# INLINE toJSVal #-}

instance FromJSVal CSSUnparsedValue where
  fromJSVal v = fmap CSSUnparsedValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSUnparsedValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSUnparsedValue where
  makeObject = makeObject . unCSSUnparsedValue

instance IsCSSStyleValue CSSUnparsedValue

instance IsGObject CSSUnparsedValue where
  typeGType _ = gTypeCSSUnparsedValue
  {-# INLINE typeGType #-}

noCSSUnparsedValue :: Maybe CSSUnparsedValue
noCSSUnparsedValue = Nothing
{-# INLINE noCSSUnparsedValue #-}

gTypeCSSUnparsedValue :: JSM GType
gTypeCSSUnparsedValue = GType . Object <$> jsg "CSSUnparsedValue"

-- | Functions for this interface are in "JSDOM.CSSVariableReferenceValue" (css-typed-om-1).
newtype CSSVariableReferenceValue = CSSVariableReferenceValue { unCSSVariableReferenceValue :: JSVal }

instance PToJSVal CSSVariableReferenceValue where
  pToJSVal = unCSSVariableReferenceValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSVariableReferenceValue where
  pFromJSVal = CSSVariableReferenceValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSVariableReferenceValue where
  toJSVal = return . unCSSVariableReferenceValue
  {-# INLINE toJSVal #-}

instance FromJSVal CSSVariableReferenceValue where
  fromJSVal v = fmap CSSVariableReferenceValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSVariableReferenceValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSVariableReferenceValue where
  makeObject = makeObject . unCSSVariableReferenceValue


instance IsGObject CSSVariableReferenceValue where
  typeGType _ = gTypeCSSVariableReferenceValue
  {-# INLINE typeGType #-}

noCSSVariableReferenceValue :: Maybe CSSVariableReferenceValue
noCSSVariableReferenceValue = Nothing
{-# INLINE noCSSVariableReferenceValue #-}

gTypeCSSVariableReferenceValue :: JSM GType
gTypeCSSVariableReferenceValue = GType . Object <$> jsg "CSSVariableReferenceValue"

-- | Functions for this interface are in "JSDOM.CSSViewTransitionRule" (css-view-transitions-2).
newtype CSSViewTransitionRule = CSSViewTransitionRule { unCSSViewTransitionRule :: JSVal }

instance PToJSVal CSSViewTransitionRule where
  pToJSVal = unCSSViewTransitionRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal CSSViewTransitionRule where
  pFromJSVal = CSSViewTransitionRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal CSSViewTransitionRule where
  toJSVal = return . unCSSViewTransitionRule
  {-# INLINE toJSVal #-}

instance FromJSVal CSSViewTransitionRule where
  fromJSVal v = fmap CSSViewTransitionRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CSSViewTransitionRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CSSViewTransitionRule where
  makeObject = makeObject . unCSSViewTransitionRule

instance IsCSSRule CSSViewTransitionRule

instance IsGObject CSSViewTransitionRule where
  typeGType _ = gTypeCSSViewTransitionRule
  {-# INLINE typeGType #-}

noCSSViewTransitionRule :: Maybe CSSViewTransitionRule
noCSSViewTransitionRule = Nothing
{-# INLINE noCSSViewTransitionRule #-}

gTypeCSSViewTransitionRule :: JSM GType
gTypeCSSViewTransitionRule = GType . Object <$> jsg "CSSViewTransitionRule"

-- | Functions for this interface are in "JSDOM.Cache" (service-workers).
newtype Cache = Cache { unCache :: JSVal }

instance PToJSVal Cache where
  pToJSVal = unCache
  {-# INLINE pToJSVal #-}

instance PFromJSVal Cache where
  pFromJSVal = Cache
  {-# INLINE pFromJSVal #-}

instance ToJSVal Cache where
  toJSVal = return . unCache
  {-# INLINE toJSVal #-}

instance FromJSVal Cache where
  fromJSVal v = fmap Cache <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Cache
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Cache where
  makeObject = makeObject . unCache


instance IsGObject Cache where
  typeGType _ = gTypeCache
  {-# INLINE typeGType #-}

noCache :: Maybe Cache
noCache = Nothing
{-# INLINE noCache #-}

gTypeCache :: JSM GType
gTypeCache = GType . Object <$> jsg "Cache"

-- | Dictionary CacheQueryOptions (service-workers)
newtype CacheQueryOptions = CacheQueryOptions { unCacheQueryOptions :: JSVal }

instance PToJSVal CacheQueryOptions where
  pToJSVal = unCacheQueryOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal CacheQueryOptions where
  pFromJSVal = CacheQueryOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal CacheQueryOptions where
  toJSVal = return . unCacheQueryOptions
  {-# INLINE toJSVal #-}

instance FromJSVal CacheQueryOptions where
  fromJSVal v = fmap CacheQueryOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CacheQueryOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CacheQueryOptions where
  makeObject = makeObject . unCacheQueryOptions

class (IsGObject o) => IsCacheQueryOptions o
toCacheQueryOptions :: IsCacheQueryOptions o => o -> CacheQueryOptions
toCacheQueryOptions = CacheQueryOptions . coerce

instance IsCacheQueryOptions CacheQueryOptions

instance IsGObject CacheQueryOptions where
  typeGType _ = gTypeCacheQueryOptions
  {-# INLINE typeGType #-}

noCacheQueryOptions :: Maybe CacheQueryOptions
noCacheQueryOptions = Nothing
{-# INLINE noCacheQueryOptions #-}

gTypeCacheQueryOptions :: JSM GType
gTypeCacheQueryOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CacheStorage" (service-workers).
newtype CacheStorage = CacheStorage { unCacheStorage :: JSVal }

instance PToJSVal CacheStorage where
  pToJSVal = unCacheStorage
  {-# INLINE pToJSVal #-}

instance PFromJSVal CacheStorage where
  pFromJSVal = CacheStorage
  {-# INLINE pFromJSVal #-}

instance ToJSVal CacheStorage where
  toJSVal = return . unCacheStorage
  {-# INLINE toJSVal #-}

instance FromJSVal CacheStorage where
  fromJSVal v = fmap CacheStorage <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CacheStorage
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CacheStorage where
  makeObject = makeObject . unCacheStorage


instance IsGObject CacheStorage where
  typeGType _ = gTypeCacheStorage
  {-# INLINE typeGType #-}

noCacheStorage :: Maybe CacheStorage
noCacheStorage = Nothing
{-# INLINE noCacheStorage #-}

gTypeCacheStorage :: JSM GType
gTypeCacheStorage = GType . Object <$> jsg "CacheStorage"

-- | Functions for this interface are in "JSDOM.CanvasCaptureMediaStreamTrack" (mediacapture-fromelement).
newtype CanvasCaptureMediaStreamTrack = CanvasCaptureMediaStreamTrack { unCanvasCaptureMediaStreamTrack :: JSVal }

instance PToJSVal CanvasCaptureMediaStreamTrack where
  pToJSVal = unCanvasCaptureMediaStreamTrack
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasCaptureMediaStreamTrack where
  pFromJSVal = CanvasCaptureMediaStreamTrack
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasCaptureMediaStreamTrack where
  toJSVal = return . unCanvasCaptureMediaStreamTrack
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasCaptureMediaStreamTrack where
  fromJSVal v = fmap CanvasCaptureMediaStreamTrack <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasCaptureMediaStreamTrack
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasCaptureMediaStreamTrack where
  makeObject = makeObject . unCanvasCaptureMediaStreamTrack

instance IsMediaStreamTrack CanvasCaptureMediaStreamTrack
instance IsEventTarget CanvasCaptureMediaStreamTrack

instance IsGObject CanvasCaptureMediaStreamTrack where
  typeGType _ = gTypeCanvasCaptureMediaStreamTrack
  {-# INLINE typeGType #-}

noCanvasCaptureMediaStreamTrack :: Maybe CanvasCaptureMediaStreamTrack
noCanvasCaptureMediaStreamTrack = Nothing
{-# INLINE noCanvasCaptureMediaStreamTrack #-}

gTypeCanvasCaptureMediaStreamTrack :: JSM GType
gTypeCanvasCaptureMediaStreamTrack = GType . Object <$> jsg "CanvasCaptureMediaStreamTrack"

-- | Functions for this interface are in "JSDOM.CanvasCompositing" (html).
newtype CanvasCompositing = CanvasCompositing { unCanvasCompositing :: JSVal }

instance PToJSVal CanvasCompositing where
  pToJSVal = unCanvasCompositing
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasCompositing where
  pFromJSVal = CanvasCompositing
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasCompositing where
  toJSVal = return . unCanvasCompositing
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasCompositing where
  fromJSVal v = fmap CanvasCompositing <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasCompositing
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasCompositing where
  makeObject = makeObject . unCanvasCompositing

class (IsGObject o) => IsCanvasCompositing o
toCanvasCompositing :: IsCanvasCompositing o => o -> CanvasCompositing
toCanvasCompositing = CanvasCompositing . coerce

instance IsCanvasCompositing CanvasCompositing

instance IsGObject CanvasCompositing where
  typeGType _ = gTypeCanvasCompositing
  {-# INLINE typeGType #-}

noCanvasCompositing :: Maybe CanvasCompositing
noCanvasCompositing = Nothing
{-# INLINE noCanvasCompositing #-}

gTypeCanvasCompositing :: JSM GType
gTypeCanvasCompositing = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasDrawImage" (html).
newtype CanvasDrawImage = CanvasDrawImage { unCanvasDrawImage :: JSVal }

instance PToJSVal CanvasDrawImage where
  pToJSVal = unCanvasDrawImage
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasDrawImage where
  pFromJSVal = CanvasDrawImage
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasDrawImage where
  toJSVal = return . unCanvasDrawImage
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasDrawImage where
  fromJSVal v = fmap CanvasDrawImage <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasDrawImage
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasDrawImage where
  makeObject = makeObject . unCanvasDrawImage

class (IsGObject o) => IsCanvasDrawImage o
toCanvasDrawImage :: IsCanvasDrawImage o => o -> CanvasDrawImage
toCanvasDrawImage = CanvasDrawImage . coerce

instance IsCanvasDrawImage CanvasDrawImage

instance IsGObject CanvasDrawImage where
  typeGType _ = gTypeCanvasDrawImage
  {-# INLINE typeGType #-}

noCanvasDrawImage :: Maybe CanvasDrawImage
noCanvasDrawImage = Nothing
{-# INLINE noCanvasDrawImage #-}

gTypeCanvasDrawImage :: JSM GType
gTypeCanvasDrawImage = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasDrawPath" (html).
newtype CanvasDrawPath = CanvasDrawPath { unCanvasDrawPath :: JSVal }

instance PToJSVal CanvasDrawPath where
  pToJSVal = unCanvasDrawPath
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasDrawPath where
  pFromJSVal = CanvasDrawPath
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasDrawPath where
  toJSVal = return . unCanvasDrawPath
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasDrawPath where
  fromJSVal v = fmap CanvasDrawPath <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasDrawPath
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasDrawPath where
  makeObject = makeObject . unCanvasDrawPath

class (IsGObject o) => IsCanvasDrawPath o
toCanvasDrawPath :: IsCanvasDrawPath o => o -> CanvasDrawPath
toCanvasDrawPath = CanvasDrawPath . coerce

instance IsCanvasDrawPath CanvasDrawPath

instance IsGObject CanvasDrawPath where
  typeGType _ = gTypeCanvasDrawPath
  {-# INLINE typeGType #-}

noCanvasDrawPath :: Maybe CanvasDrawPath
noCanvasDrawPath = Nothing
{-# INLINE noCanvasDrawPath #-}

gTypeCanvasDrawPath :: JSM GType
gTypeCanvasDrawPath = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasFillStrokeStyles" (html).
newtype CanvasFillStrokeStyles = CanvasFillStrokeStyles { unCanvasFillStrokeStyles :: JSVal }

instance PToJSVal CanvasFillStrokeStyles where
  pToJSVal = unCanvasFillStrokeStyles
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasFillStrokeStyles where
  pFromJSVal = CanvasFillStrokeStyles
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasFillStrokeStyles where
  toJSVal = return . unCanvasFillStrokeStyles
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasFillStrokeStyles where
  fromJSVal v = fmap CanvasFillStrokeStyles <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasFillStrokeStyles
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasFillStrokeStyles where
  makeObject = makeObject . unCanvasFillStrokeStyles

class (IsGObject o) => IsCanvasFillStrokeStyles o
toCanvasFillStrokeStyles :: IsCanvasFillStrokeStyles o => o -> CanvasFillStrokeStyles
toCanvasFillStrokeStyles = CanvasFillStrokeStyles . coerce

instance IsCanvasFillStrokeStyles CanvasFillStrokeStyles

instance IsGObject CanvasFillStrokeStyles where
  typeGType _ = gTypeCanvasFillStrokeStyles
  {-# INLINE typeGType #-}

noCanvasFillStrokeStyles :: Maybe CanvasFillStrokeStyles
noCanvasFillStrokeStyles = Nothing
{-# INLINE noCanvasFillStrokeStyles #-}

gTypeCanvasFillStrokeStyles :: JSM GType
gTypeCanvasFillStrokeStyles = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasFilters" (html).
newtype CanvasFilters = CanvasFilters { unCanvasFilters :: JSVal }

instance PToJSVal CanvasFilters where
  pToJSVal = unCanvasFilters
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasFilters where
  pFromJSVal = CanvasFilters
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasFilters where
  toJSVal = return . unCanvasFilters
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasFilters where
  fromJSVal v = fmap CanvasFilters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasFilters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasFilters where
  makeObject = makeObject . unCanvasFilters

class (IsGObject o) => IsCanvasFilters o
toCanvasFilters :: IsCanvasFilters o => o -> CanvasFilters
toCanvasFilters = CanvasFilters . coerce

instance IsCanvasFilters CanvasFilters

instance IsGObject CanvasFilters where
  typeGType _ = gTypeCanvasFilters
  {-# INLINE typeGType #-}

noCanvasFilters :: Maybe CanvasFilters
noCanvasFilters = Nothing
{-# INLINE noCanvasFilters #-}

gTypeCanvasFilters :: JSM GType
gTypeCanvasFilters = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasGradient" (html).
newtype CanvasGradient = CanvasGradient { unCanvasGradient :: JSVal }

instance PToJSVal CanvasGradient where
  pToJSVal = unCanvasGradient
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasGradient where
  pFromJSVal = CanvasGradient
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasGradient where
  toJSVal = return . unCanvasGradient
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasGradient where
  fromJSVal v = fmap CanvasGradient <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasGradient
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasGradient where
  makeObject = makeObject . unCanvasGradient


instance IsGObject CanvasGradient where
  typeGType _ = gTypeCanvasGradient
  {-# INLINE typeGType #-}

noCanvasGradient :: Maybe CanvasGradient
noCanvasGradient = Nothing
{-# INLINE noCanvasGradient #-}

gTypeCanvasGradient :: JSM GType
gTypeCanvasGradient = GType . Object <$> jsg "CanvasGradient"

-- | Functions for this interface are in "JSDOM.CanvasImageData" (html).
newtype CanvasImageData = CanvasImageData { unCanvasImageData :: JSVal }

instance PToJSVal CanvasImageData where
  pToJSVal = unCanvasImageData
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasImageData where
  pFromJSVal = CanvasImageData
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasImageData where
  toJSVal = return . unCanvasImageData
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasImageData where
  fromJSVal v = fmap CanvasImageData <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasImageData
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasImageData where
  makeObject = makeObject . unCanvasImageData

class (IsGObject o) => IsCanvasImageData o
toCanvasImageData :: IsCanvasImageData o => o -> CanvasImageData
toCanvasImageData = CanvasImageData . coerce

instance IsCanvasImageData CanvasImageData

instance IsGObject CanvasImageData where
  typeGType _ = gTypeCanvasImageData
  {-# INLINE typeGType #-}

noCanvasImageData :: Maybe CanvasImageData
noCanvasImageData = Nothing
{-# INLINE noCanvasImageData #-}

gTypeCanvasImageData :: JSM GType
gTypeCanvasImageData = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasImageSmoothing" (html).
newtype CanvasImageSmoothing = CanvasImageSmoothing { unCanvasImageSmoothing :: JSVal }

instance PToJSVal CanvasImageSmoothing where
  pToJSVal = unCanvasImageSmoothing
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasImageSmoothing where
  pFromJSVal = CanvasImageSmoothing
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasImageSmoothing where
  toJSVal = return . unCanvasImageSmoothing
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasImageSmoothing where
  fromJSVal v = fmap CanvasImageSmoothing <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasImageSmoothing
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasImageSmoothing where
  makeObject = makeObject . unCanvasImageSmoothing

class (IsGObject o) => IsCanvasImageSmoothing o
toCanvasImageSmoothing :: IsCanvasImageSmoothing o => o -> CanvasImageSmoothing
toCanvasImageSmoothing = CanvasImageSmoothing . coerce

instance IsCanvasImageSmoothing CanvasImageSmoothing

instance IsGObject CanvasImageSmoothing where
  typeGType _ = gTypeCanvasImageSmoothing
  {-# INLINE typeGType #-}

noCanvasImageSmoothing :: Maybe CanvasImageSmoothing
noCanvasImageSmoothing = Nothing
{-# INLINE noCanvasImageSmoothing #-}

gTypeCanvasImageSmoothing :: JSM GType
gTypeCanvasImageSmoothing = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasPath" (html).
newtype CanvasPath = CanvasPath { unCanvasPath :: JSVal }

instance PToJSVal CanvasPath where
  pToJSVal = unCanvasPath
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasPath where
  pFromJSVal = CanvasPath
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasPath where
  toJSVal = return . unCanvasPath
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasPath where
  fromJSVal v = fmap CanvasPath <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasPath
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasPath where
  makeObject = makeObject . unCanvasPath

class (IsGObject o) => IsCanvasPath o
toCanvasPath :: IsCanvasPath o => o -> CanvasPath
toCanvasPath = CanvasPath . coerce

instance IsCanvasPath CanvasPath

instance IsGObject CanvasPath where
  typeGType _ = gTypeCanvasPath
  {-# INLINE typeGType #-}

noCanvasPath :: Maybe CanvasPath
noCanvasPath = Nothing
{-# INLINE noCanvasPath #-}

gTypeCanvasPath :: JSM GType
gTypeCanvasPath = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasPathDrawingStyles" (html).
newtype CanvasPathDrawingStyles = CanvasPathDrawingStyles { unCanvasPathDrawingStyles :: JSVal }

instance PToJSVal CanvasPathDrawingStyles where
  pToJSVal = unCanvasPathDrawingStyles
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasPathDrawingStyles where
  pFromJSVal = CanvasPathDrawingStyles
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasPathDrawingStyles where
  toJSVal = return . unCanvasPathDrawingStyles
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasPathDrawingStyles where
  fromJSVal v = fmap CanvasPathDrawingStyles <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasPathDrawingStyles
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasPathDrawingStyles where
  makeObject = makeObject . unCanvasPathDrawingStyles

class (IsGObject o) => IsCanvasPathDrawingStyles o
toCanvasPathDrawingStyles :: IsCanvasPathDrawingStyles o => o -> CanvasPathDrawingStyles
toCanvasPathDrawingStyles = CanvasPathDrawingStyles . coerce

instance IsCanvasPathDrawingStyles CanvasPathDrawingStyles

instance IsGObject CanvasPathDrawingStyles where
  typeGType _ = gTypeCanvasPathDrawingStyles
  {-# INLINE typeGType #-}

noCanvasPathDrawingStyles :: Maybe CanvasPathDrawingStyles
noCanvasPathDrawingStyles = Nothing
{-# INLINE noCanvasPathDrawingStyles #-}

gTypeCanvasPathDrawingStyles :: JSM GType
gTypeCanvasPathDrawingStyles = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasPattern" (html).
newtype CanvasPattern = CanvasPattern { unCanvasPattern :: JSVal }

instance PToJSVal CanvasPattern where
  pToJSVal = unCanvasPattern
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasPattern where
  pFromJSVal = CanvasPattern
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasPattern where
  toJSVal = return . unCanvasPattern
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasPattern where
  fromJSVal v = fmap CanvasPattern <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasPattern
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasPattern where
  makeObject = makeObject . unCanvasPattern


instance IsGObject CanvasPattern where
  typeGType _ = gTypeCanvasPattern
  {-# INLINE typeGType #-}

noCanvasPattern :: Maybe CanvasPattern
noCanvasPattern = Nothing
{-# INLINE noCanvasPattern #-}

gTypeCanvasPattern :: JSM GType
gTypeCanvasPattern = GType . Object <$> jsg "CanvasPattern"

-- | Functions for this interface are in "JSDOM.CanvasRect" (html).
newtype CanvasRect = CanvasRect { unCanvasRect :: JSVal }

instance PToJSVal CanvasRect where
  pToJSVal = unCanvasRect
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasRect where
  pFromJSVal = CanvasRect
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasRect where
  toJSVal = return . unCanvasRect
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasRect where
  fromJSVal v = fmap CanvasRect <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasRect
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasRect where
  makeObject = makeObject . unCanvasRect

class (IsGObject o) => IsCanvasRect o
toCanvasRect :: IsCanvasRect o => o -> CanvasRect
toCanvasRect = CanvasRect . coerce

instance IsCanvasRect CanvasRect

instance IsGObject CanvasRect where
  typeGType _ = gTypeCanvasRect
  {-# INLINE typeGType #-}

noCanvasRect :: Maybe CanvasRect
noCanvasRect = Nothing
{-# INLINE noCanvasRect #-}

gTypeCanvasRect :: JSM GType
gTypeCanvasRect = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasRenderingContext2D" (html).
newtype CanvasRenderingContext2D = CanvasRenderingContext2D { unCanvasRenderingContext2D :: JSVal }

instance PToJSVal CanvasRenderingContext2D where
  pToJSVal = unCanvasRenderingContext2D
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasRenderingContext2D where
  pFromJSVal = CanvasRenderingContext2D
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasRenderingContext2D where
  toJSVal = return . unCanvasRenderingContext2D
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasRenderingContext2D where
  fromJSVal v = fmap CanvasRenderingContext2D <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasRenderingContext2D
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasRenderingContext2D where
  makeObject = makeObject . unCanvasRenderingContext2D

instance IsCanvasCompositing CanvasRenderingContext2D
instance IsCanvasDrawImage CanvasRenderingContext2D
instance IsCanvasDrawPath CanvasRenderingContext2D
instance IsCanvasFillStrokeStyles CanvasRenderingContext2D
instance IsCanvasFilters CanvasRenderingContext2D
instance IsCanvasImageData CanvasRenderingContext2D
instance IsCanvasImageSmoothing CanvasRenderingContext2D
instance IsCanvasPath CanvasRenderingContext2D
instance IsCanvasPathDrawingStyles CanvasRenderingContext2D
instance IsCanvasRect CanvasRenderingContext2D
instance IsCanvasSettings CanvasRenderingContext2D
instance IsCanvasShadowStyles CanvasRenderingContext2D
instance IsCanvasState CanvasRenderingContext2D
instance IsCanvasText CanvasRenderingContext2D
instance IsCanvasTextDrawingStyles CanvasRenderingContext2D
instance IsCanvasTransform CanvasRenderingContext2D
instance IsCanvasUserInterface CanvasRenderingContext2D

instance IsGObject CanvasRenderingContext2D where
  typeGType _ = gTypeCanvasRenderingContext2D
  {-# INLINE typeGType #-}

noCanvasRenderingContext2D :: Maybe CanvasRenderingContext2D
noCanvasRenderingContext2D = Nothing
{-# INLINE noCanvasRenderingContext2D #-}

gTypeCanvasRenderingContext2D :: JSM GType
gTypeCanvasRenderingContext2D = GType . Object <$> jsg "CanvasRenderingContext2D"

-- | Dictionary CanvasRenderingContext2DSettings (html)
newtype CanvasRenderingContext2DSettings = CanvasRenderingContext2DSettings { unCanvasRenderingContext2DSettings :: JSVal }

instance PToJSVal CanvasRenderingContext2DSettings where
  pToJSVal = unCanvasRenderingContext2DSettings
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasRenderingContext2DSettings where
  pFromJSVal = CanvasRenderingContext2DSettings
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasRenderingContext2DSettings where
  toJSVal = return . unCanvasRenderingContext2DSettings
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasRenderingContext2DSettings where
  fromJSVal v = fmap CanvasRenderingContext2DSettings <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasRenderingContext2DSettings
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasRenderingContext2DSettings where
  makeObject = makeObject . unCanvasRenderingContext2DSettings


instance IsGObject CanvasRenderingContext2DSettings where
  typeGType _ = gTypeCanvasRenderingContext2DSettings
  {-# INLINE typeGType #-}

noCanvasRenderingContext2DSettings :: Maybe CanvasRenderingContext2DSettings
noCanvasRenderingContext2DSettings = Nothing
{-# INLINE noCanvasRenderingContext2DSettings #-}

gTypeCanvasRenderingContext2DSettings :: JSM GType
gTypeCanvasRenderingContext2DSettings = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasSettings" (html).
newtype CanvasSettings = CanvasSettings { unCanvasSettings :: JSVal }

instance PToJSVal CanvasSettings where
  pToJSVal = unCanvasSettings
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasSettings where
  pFromJSVal = CanvasSettings
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasSettings where
  toJSVal = return . unCanvasSettings
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasSettings where
  fromJSVal v = fmap CanvasSettings <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasSettings
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasSettings where
  makeObject = makeObject . unCanvasSettings

class (IsGObject o) => IsCanvasSettings o
toCanvasSettings :: IsCanvasSettings o => o -> CanvasSettings
toCanvasSettings = CanvasSettings . coerce

instance IsCanvasSettings CanvasSettings

instance IsGObject CanvasSettings where
  typeGType _ = gTypeCanvasSettings
  {-# INLINE typeGType #-}

noCanvasSettings :: Maybe CanvasSettings
noCanvasSettings = Nothing
{-# INLINE noCanvasSettings #-}

gTypeCanvasSettings :: JSM GType
gTypeCanvasSettings = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasShadowStyles" (html).
newtype CanvasShadowStyles = CanvasShadowStyles { unCanvasShadowStyles :: JSVal }

instance PToJSVal CanvasShadowStyles where
  pToJSVal = unCanvasShadowStyles
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasShadowStyles where
  pFromJSVal = CanvasShadowStyles
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasShadowStyles where
  toJSVal = return . unCanvasShadowStyles
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasShadowStyles where
  fromJSVal v = fmap CanvasShadowStyles <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasShadowStyles
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasShadowStyles where
  makeObject = makeObject . unCanvasShadowStyles

class (IsGObject o) => IsCanvasShadowStyles o
toCanvasShadowStyles :: IsCanvasShadowStyles o => o -> CanvasShadowStyles
toCanvasShadowStyles = CanvasShadowStyles . coerce

instance IsCanvasShadowStyles CanvasShadowStyles

instance IsGObject CanvasShadowStyles where
  typeGType _ = gTypeCanvasShadowStyles
  {-# INLINE typeGType #-}

noCanvasShadowStyles :: Maybe CanvasShadowStyles
noCanvasShadowStyles = Nothing
{-# INLINE noCanvasShadowStyles #-}

gTypeCanvasShadowStyles :: JSM GType
gTypeCanvasShadowStyles = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasState" (html).
newtype CanvasState = CanvasState { unCanvasState :: JSVal }

instance PToJSVal CanvasState where
  pToJSVal = unCanvasState
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasState where
  pFromJSVal = CanvasState
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasState where
  toJSVal = return . unCanvasState
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasState where
  fromJSVal v = fmap CanvasState <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasState
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasState where
  makeObject = makeObject . unCanvasState

class (IsGObject o) => IsCanvasState o
toCanvasState :: IsCanvasState o => o -> CanvasState
toCanvasState = CanvasState . coerce

instance IsCanvasState CanvasState

instance IsGObject CanvasState where
  typeGType _ = gTypeCanvasState
  {-# INLINE typeGType #-}

noCanvasState :: Maybe CanvasState
noCanvasState = Nothing
{-# INLINE noCanvasState #-}

gTypeCanvasState :: JSM GType
gTypeCanvasState = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasText" (html).
newtype CanvasText = CanvasText { unCanvasText :: JSVal }

instance PToJSVal CanvasText where
  pToJSVal = unCanvasText
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasText where
  pFromJSVal = CanvasText
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasText where
  toJSVal = return . unCanvasText
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasText where
  fromJSVal v = fmap CanvasText <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasText
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasText where
  makeObject = makeObject . unCanvasText

class (IsGObject o) => IsCanvasText o
toCanvasText :: IsCanvasText o => o -> CanvasText
toCanvasText = CanvasText . coerce

instance IsCanvasText CanvasText

instance IsGObject CanvasText where
  typeGType _ = gTypeCanvasText
  {-# INLINE typeGType #-}

noCanvasText :: Maybe CanvasText
noCanvasText = Nothing
{-# INLINE noCanvasText #-}

gTypeCanvasText :: JSM GType
gTypeCanvasText = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasTextDrawingStyles" (html).
newtype CanvasTextDrawingStyles = CanvasTextDrawingStyles { unCanvasTextDrawingStyles :: JSVal }

instance PToJSVal CanvasTextDrawingStyles where
  pToJSVal = unCanvasTextDrawingStyles
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasTextDrawingStyles where
  pFromJSVal = CanvasTextDrawingStyles
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasTextDrawingStyles where
  toJSVal = return . unCanvasTextDrawingStyles
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasTextDrawingStyles where
  fromJSVal v = fmap CanvasTextDrawingStyles <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasTextDrawingStyles
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasTextDrawingStyles where
  makeObject = makeObject . unCanvasTextDrawingStyles

class (IsGObject o) => IsCanvasTextDrawingStyles o
toCanvasTextDrawingStyles :: IsCanvasTextDrawingStyles o => o -> CanvasTextDrawingStyles
toCanvasTextDrawingStyles = CanvasTextDrawingStyles . coerce

instance IsCanvasTextDrawingStyles CanvasTextDrawingStyles

instance IsGObject CanvasTextDrawingStyles where
  typeGType _ = gTypeCanvasTextDrawingStyles
  {-# INLINE typeGType #-}

noCanvasTextDrawingStyles :: Maybe CanvasTextDrawingStyles
noCanvasTextDrawingStyles = Nothing
{-# INLINE noCanvasTextDrawingStyles #-}

gTypeCanvasTextDrawingStyles :: JSM GType
gTypeCanvasTextDrawingStyles = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasTransform" (html).
newtype CanvasTransform = CanvasTransform { unCanvasTransform :: JSVal }

instance PToJSVal CanvasTransform where
  pToJSVal = unCanvasTransform
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasTransform where
  pFromJSVal = CanvasTransform
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasTransform where
  toJSVal = return . unCanvasTransform
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasTransform where
  fromJSVal v = fmap CanvasTransform <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasTransform
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasTransform where
  makeObject = makeObject . unCanvasTransform

class (IsGObject o) => IsCanvasTransform o
toCanvasTransform :: IsCanvasTransform o => o -> CanvasTransform
toCanvasTransform = CanvasTransform . coerce

instance IsCanvasTransform CanvasTransform

instance IsGObject CanvasTransform where
  typeGType _ = gTypeCanvasTransform
  {-# INLINE typeGType #-}

noCanvasTransform :: Maybe CanvasTransform
noCanvasTransform = Nothing
{-# INLINE noCanvasTransform #-}

gTypeCanvasTransform :: JSM GType
gTypeCanvasTransform = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CanvasUserInterface" (html).
newtype CanvasUserInterface = CanvasUserInterface { unCanvasUserInterface :: JSVal }

instance PToJSVal CanvasUserInterface where
  pToJSVal = unCanvasUserInterface
  {-# INLINE pToJSVal #-}

instance PFromJSVal CanvasUserInterface where
  pFromJSVal = CanvasUserInterface
  {-# INLINE pFromJSVal #-}

instance ToJSVal CanvasUserInterface where
  toJSVal = return . unCanvasUserInterface
  {-# INLINE toJSVal #-}

instance FromJSVal CanvasUserInterface where
  fromJSVal v = fmap CanvasUserInterface <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CanvasUserInterface
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CanvasUserInterface where
  makeObject = makeObject . unCanvasUserInterface

class (IsGObject o) => IsCanvasUserInterface o
toCanvasUserInterface :: IsCanvasUserInterface o => o -> CanvasUserInterface
toCanvasUserInterface = CanvasUserInterface . coerce

instance IsCanvasUserInterface CanvasUserInterface

instance IsGObject CanvasUserInterface where
  typeGType _ = gTypeCanvasUserInterface
  {-# INLINE typeGType #-}

noCanvasUserInterface :: Maybe CanvasUserInterface
noCanvasUserInterface = Nothing
{-# INLINE noCanvasUserInterface #-}

gTypeCanvasUserInterface :: JSM GType
gTypeCanvasUserInterface = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CaptureController" (screen-capture).
newtype CaptureController = CaptureController { unCaptureController :: JSVal }

instance PToJSVal CaptureController where
  pToJSVal = unCaptureController
  {-# INLINE pToJSVal #-}

instance PFromJSVal CaptureController where
  pFromJSVal = CaptureController
  {-# INLINE pFromJSVal #-}

instance ToJSVal CaptureController where
  toJSVal = return . unCaptureController
  {-# INLINE toJSVal #-}

instance FromJSVal CaptureController where
  fromJSVal v = fmap CaptureController <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CaptureController
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CaptureController where
  makeObject = makeObject . unCaptureController

instance IsEventTarget CaptureController

instance IsGObject CaptureController where
  typeGType _ = gTypeCaptureController
  {-# INLINE typeGType #-}

noCaptureController :: Maybe CaptureController
noCaptureController = Nothing
{-# INLINE noCaptureController #-}

gTypeCaptureController :: JSM GType
gTypeCaptureController = GType . Object <$> jsg "CaptureController"

-- | Functions for this interface are in "JSDOM.CaretPosition" (cssom-view-1).
newtype CaretPosition = CaretPosition { unCaretPosition :: JSVal }

instance PToJSVal CaretPosition where
  pToJSVal = unCaretPosition
  {-# INLINE pToJSVal #-}

instance PFromJSVal CaretPosition where
  pFromJSVal = CaretPosition
  {-# INLINE pFromJSVal #-}

instance ToJSVal CaretPosition where
  toJSVal = return . unCaretPosition
  {-# INLINE toJSVal #-}

instance FromJSVal CaretPosition where
  fromJSVal v = fmap CaretPosition <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CaretPosition
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CaretPosition where
  makeObject = makeObject . unCaretPosition


instance IsGObject CaretPosition where
  typeGType _ = gTypeCaretPosition
  {-# INLINE typeGType #-}

noCaretPosition :: Maybe CaretPosition
noCaretPosition = Nothing
{-# INLINE noCaretPosition #-}

gTypeCaretPosition :: JSM GType
gTypeCaretPosition = GType . Object <$> jsg "CaretPosition"

-- | Dictionary CaretPositionFromPointOptions (cssom-view-1)
newtype CaretPositionFromPointOptions = CaretPositionFromPointOptions { unCaretPositionFromPointOptions :: JSVal }

instance PToJSVal CaretPositionFromPointOptions where
  pToJSVal = unCaretPositionFromPointOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal CaretPositionFromPointOptions where
  pFromJSVal = CaretPositionFromPointOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal CaretPositionFromPointOptions where
  toJSVal = return . unCaretPositionFromPointOptions
  {-# INLINE toJSVal #-}

instance FromJSVal CaretPositionFromPointOptions where
  fromJSVal v = fmap CaretPositionFromPointOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CaretPositionFromPointOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CaretPositionFromPointOptions where
  makeObject = makeObject . unCaretPositionFromPointOptions


instance IsGObject CaretPositionFromPointOptions where
  typeGType _ = gTypeCaretPositionFromPointOptions
  {-# INLINE typeGType #-}

noCaretPositionFromPointOptions :: Maybe CaretPositionFromPointOptions
noCaretPositionFromPointOptions = Nothing
{-# INLINE noCaretPositionFromPointOptions #-}

gTypeCaretPositionFromPointOptions :: JSM GType
gTypeCaretPositionFromPointOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ChannelMergerNode" (webaudio-1.1).
newtype ChannelMergerNode = ChannelMergerNode { unChannelMergerNode :: JSVal }

instance PToJSVal ChannelMergerNode where
  pToJSVal = unChannelMergerNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal ChannelMergerNode where
  pFromJSVal = ChannelMergerNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal ChannelMergerNode where
  toJSVal = return . unChannelMergerNode
  {-# INLINE toJSVal #-}

instance FromJSVal ChannelMergerNode where
  fromJSVal v = fmap ChannelMergerNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ChannelMergerNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ChannelMergerNode where
  makeObject = makeObject . unChannelMergerNode

instance IsAudioNode ChannelMergerNode
instance IsEventTarget ChannelMergerNode

instance IsGObject ChannelMergerNode where
  typeGType _ = gTypeChannelMergerNode
  {-# INLINE typeGType #-}

noChannelMergerNode :: Maybe ChannelMergerNode
noChannelMergerNode = Nothing
{-# INLINE noChannelMergerNode #-}

gTypeChannelMergerNode :: JSM GType
gTypeChannelMergerNode = GType . Object <$> jsg "ChannelMergerNode"

-- | Dictionary ChannelMergerOptions (webaudio-1.1)
newtype ChannelMergerOptions = ChannelMergerOptions { unChannelMergerOptions :: JSVal }

instance PToJSVal ChannelMergerOptions where
  pToJSVal = unChannelMergerOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ChannelMergerOptions where
  pFromJSVal = ChannelMergerOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ChannelMergerOptions where
  toJSVal = return . unChannelMergerOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ChannelMergerOptions where
  fromJSVal v = fmap ChannelMergerOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ChannelMergerOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ChannelMergerOptions where
  makeObject = makeObject . unChannelMergerOptions

instance IsAudioNodeOptions ChannelMergerOptions

instance IsGObject ChannelMergerOptions where
  typeGType _ = gTypeChannelMergerOptions
  {-# INLINE typeGType #-}

noChannelMergerOptions :: Maybe ChannelMergerOptions
noChannelMergerOptions = Nothing
{-# INLINE noChannelMergerOptions #-}

gTypeChannelMergerOptions :: JSM GType
gTypeChannelMergerOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ChannelSplitterNode" (webaudio-1.1).
newtype ChannelSplitterNode = ChannelSplitterNode { unChannelSplitterNode :: JSVal }

instance PToJSVal ChannelSplitterNode where
  pToJSVal = unChannelSplitterNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal ChannelSplitterNode where
  pFromJSVal = ChannelSplitterNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal ChannelSplitterNode where
  toJSVal = return . unChannelSplitterNode
  {-# INLINE toJSVal #-}

instance FromJSVal ChannelSplitterNode where
  fromJSVal v = fmap ChannelSplitterNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ChannelSplitterNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ChannelSplitterNode where
  makeObject = makeObject . unChannelSplitterNode

instance IsAudioNode ChannelSplitterNode
instance IsEventTarget ChannelSplitterNode

instance IsGObject ChannelSplitterNode where
  typeGType _ = gTypeChannelSplitterNode
  {-# INLINE typeGType #-}

noChannelSplitterNode :: Maybe ChannelSplitterNode
noChannelSplitterNode = Nothing
{-# INLINE noChannelSplitterNode #-}

gTypeChannelSplitterNode :: JSM GType
gTypeChannelSplitterNode = GType . Object <$> jsg "ChannelSplitterNode"

-- | Dictionary ChannelSplitterOptions (webaudio-1.1)
newtype ChannelSplitterOptions = ChannelSplitterOptions { unChannelSplitterOptions :: JSVal }

instance PToJSVal ChannelSplitterOptions where
  pToJSVal = unChannelSplitterOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ChannelSplitterOptions where
  pFromJSVal = ChannelSplitterOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ChannelSplitterOptions where
  toJSVal = return . unChannelSplitterOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ChannelSplitterOptions where
  fromJSVal v = fmap ChannelSplitterOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ChannelSplitterOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ChannelSplitterOptions where
  makeObject = makeObject . unChannelSplitterOptions

instance IsAudioNodeOptions ChannelSplitterOptions

instance IsGObject ChannelSplitterOptions where
  typeGType _ = gTypeChannelSplitterOptions
  {-# INLINE typeGType #-}

noChannelSplitterOptions :: Maybe ChannelSplitterOptions
noChannelSplitterOptions = Nothing
{-# INLINE noChannelSplitterOptions #-}

gTypeChannelSplitterOptions :: JSM GType
gTypeChannelSplitterOptions = GType . Object <$> jsg "Object"

-- | Dictionary ChapterInformationInit (mediasession)
newtype ChapterInformationInit = ChapterInformationInit { unChapterInformationInit :: JSVal }

instance PToJSVal ChapterInformationInit where
  pToJSVal = unChapterInformationInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal ChapterInformationInit where
  pFromJSVal = ChapterInformationInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal ChapterInformationInit where
  toJSVal = return . unChapterInformationInit
  {-# INLINE toJSVal #-}

instance FromJSVal ChapterInformationInit where
  fromJSVal v = fmap ChapterInformationInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ChapterInformationInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ChapterInformationInit where
  makeObject = makeObject . unChapterInformationInit


instance IsGObject ChapterInformationInit where
  typeGType _ = gTypeChapterInformationInit
  {-# INLINE typeGType #-}

noChapterInformationInit :: Maybe ChapterInformationInit
noChapterInformationInit = Nothing
{-# INLINE noChapterInformationInit #-}

gTypeChapterInformationInit :: JSM GType
gTypeChapterInformationInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CharacterData" (dom).
newtype CharacterData = CharacterData { unCharacterData :: JSVal }

instance PToJSVal CharacterData where
  pToJSVal = unCharacterData
  {-# INLINE pToJSVal #-}

instance PFromJSVal CharacterData where
  pFromJSVal = CharacterData
  {-# INLINE pFromJSVal #-}

instance ToJSVal CharacterData where
  toJSVal = return . unCharacterData
  {-# INLINE toJSVal #-}

instance FromJSVal CharacterData where
  fromJSVal v = fmap CharacterData <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CharacterData
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CharacterData where
  makeObject = makeObject . unCharacterData

class (IsNode o, IsChildNode o, IsNonDocumentTypeChildNode o, IsGObject o) => IsCharacterData o
toCharacterData :: IsCharacterData o => o -> CharacterData
toCharacterData = CharacterData . coerce

instance IsCharacterData CharacterData
instance IsChildNode CharacterData
instance IsNonDocumentTypeChildNode CharacterData
instance IsNode CharacterData
instance IsEventTarget CharacterData

instance IsGObject CharacterData where
  typeGType _ = gTypeCharacterData
  {-# INLINE typeGType #-}

noCharacterData :: Maybe CharacterData
noCharacterData = Nothing
{-# INLINE noCharacterData #-}

gTypeCharacterData :: JSM GType
gTypeCharacterData = GType . Object <$> jsg "CharacterData"

-- | Dictionary CheckVisibilityOptions (cssom-view-1)
newtype CheckVisibilityOptions = CheckVisibilityOptions { unCheckVisibilityOptions :: JSVal }

instance PToJSVal CheckVisibilityOptions where
  pToJSVal = unCheckVisibilityOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal CheckVisibilityOptions where
  pFromJSVal = CheckVisibilityOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal CheckVisibilityOptions where
  toJSVal = return . unCheckVisibilityOptions
  {-# INLINE toJSVal #-}

instance FromJSVal CheckVisibilityOptions where
  fromJSVal v = fmap CheckVisibilityOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CheckVisibilityOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CheckVisibilityOptions where
  makeObject = makeObject . unCheckVisibilityOptions


instance IsGObject CheckVisibilityOptions where
  typeGType _ = gTypeCheckVisibilityOptions
  {-# INLINE typeGType #-}

noCheckVisibilityOptions :: Maybe CheckVisibilityOptions
noCheckVisibilityOptions = Nothing
{-# INLINE noCheckVisibilityOptions #-}

gTypeCheckVisibilityOptions :: JSM GType
gTypeCheckVisibilityOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ChildNode" (dom).
newtype ChildNode = ChildNode { unChildNode :: JSVal }

instance PToJSVal ChildNode where
  pToJSVal = unChildNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal ChildNode where
  pFromJSVal = ChildNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal ChildNode where
  toJSVal = return . unChildNode
  {-# INLINE toJSVal #-}

instance FromJSVal ChildNode where
  fromJSVal v = fmap ChildNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ChildNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ChildNode where
  makeObject = makeObject . unChildNode

class (IsGObject o) => IsChildNode o
toChildNode :: IsChildNode o => o -> ChildNode
toChildNode = ChildNode . coerce

instance IsChildNode ChildNode

instance IsGObject ChildNode where
  typeGType _ = gTypeChildNode
  {-# INLINE typeGType #-}

noChildNode :: Maybe ChildNode
noChildNode = Nothing
{-# INLINE noChildNode #-}

gTypeChildNode :: JSM GType
gTypeChildNode = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Client" (service-workers).
newtype Client = Client { unClient :: JSVal }

instance PToJSVal Client where
  pToJSVal = unClient
  {-# INLINE pToJSVal #-}

instance PFromJSVal Client where
  pFromJSVal = Client
  {-# INLINE pFromJSVal #-}

instance ToJSVal Client where
  toJSVal = return . unClient
  {-# INLINE toJSVal #-}

instance FromJSVal Client where
  fromJSVal v = fmap Client <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Client
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Client where
  makeObject = makeObject . unClient

class (IsGObject o) => IsClient o
toClient :: IsClient o => o -> Client
toClient = Client . coerce

instance IsClient Client

instance IsGObject Client where
  typeGType _ = gTypeClient
  {-# INLINE typeGType #-}

noClient :: Maybe Client
noClient = Nothing
{-# INLINE noClient #-}

gTypeClient :: JSM GType
gTypeClient = GType . Object <$> jsg "Client"

-- | Dictionary ClientQueryOptions (service-workers)
newtype ClientQueryOptions = ClientQueryOptions { unClientQueryOptions :: JSVal }

instance PToJSVal ClientQueryOptions where
  pToJSVal = unClientQueryOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ClientQueryOptions where
  pFromJSVal = ClientQueryOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ClientQueryOptions where
  toJSVal = return . unClientQueryOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ClientQueryOptions where
  fromJSVal v = fmap ClientQueryOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ClientQueryOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ClientQueryOptions where
  makeObject = makeObject . unClientQueryOptions


instance IsGObject ClientQueryOptions where
  typeGType _ = gTypeClientQueryOptions
  {-# INLINE typeGType #-}

noClientQueryOptions :: Maybe ClientQueryOptions
noClientQueryOptions = Nothing
{-# INLINE noClientQueryOptions #-}

gTypeClientQueryOptions :: JSM GType
gTypeClientQueryOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Clients" (service-workers).
newtype Clients = Clients { unClients :: JSVal }

instance PToJSVal Clients where
  pToJSVal = unClients
  {-# INLINE pToJSVal #-}

instance PFromJSVal Clients where
  pFromJSVal = Clients
  {-# INLINE pFromJSVal #-}

instance ToJSVal Clients where
  toJSVal = return . unClients
  {-# INLINE toJSVal #-}

instance FromJSVal Clients where
  fromJSVal v = fmap Clients <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Clients
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Clients where
  makeObject = makeObject . unClients


instance IsGObject Clients where
  typeGType _ = gTypeClients
  {-# INLINE typeGType #-}

noClients :: Maybe Clients
noClients = Nothing
{-# INLINE noClients #-}

gTypeClients :: JSM GType
gTypeClients = GType . Object <$> jsg "Clients"

-- | Functions for this interface are in "JSDOM.Clipboard" (clipboard-apis).
newtype Clipboard = Clipboard { unClipboard :: JSVal }

instance PToJSVal Clipboard where
  pToJSVal = unClipboard
  {-# INLINE pToJSVal #-}

instance PFromJSVal Clipboard where
  pFromJSVal = Clipboard
  {-# INLINE pFromJSVal #-}

instance ToJSVal Clipboard where
  toJSVal = return . unClipboard
  {-# INLINE toJSVal #-}

instance FromJSVal Clipboard where
  fromJSVal v = fmap Clipboard <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Clipboard
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Clipboard where
  makeObject = makeObject . unClipboard

instance IsEventTarget Clipboard

instance IsGObject Clipboard where
  typeGType _ = gTypeClipboard
  {-# INLINE typeGType #-}

noClipboard :: Maybe Clipboard
noClipboard = Nothing
{-# INLINE noClipboard #-}

gTypeClipboard :: JSM GType
gTypeClipboard = GType . Object <$> jsg "Clipboard"

-- | Functions for this interface are in "JSDOM.ClipboardChangeEvent" (clipboard-apis).
newtype ClipboardChangeEvent = ClipboardChangeEvent { unClipboardChangeEvent :: JSVal }

instance PToJSVal ClipboardChangeEvent where
  pToJSVal = unClipboardChangeEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal ClipboardChangeEvent where
  pFromJSVal = ClipboardChangeEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal ClipboardChangeEvent where
  toJSVal = return . unClipboardChangeEvent
  {-# INLINE toJSVal #-}

instance FromJSVal ClipboardChangeEvent where
  fromJSVal v = fmap ClipboardChangeEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ClipboardChangeEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ClipboardChangeEvent where
  makeObject = makeObject . unClipboardChangeEvent

instance IsEvent ClipboardChangeEvent

instance IsGObject ClipboardChangeEvent where
  typeGType _ = gTypeClipboardChangeEvent
  {-# INLINE typeGType #-}

noClipboardChangeEvent :: Maybe ClipboardChangeEvent
noClipboardChangeEvent = Nothing
{-# INLINE noClipboardChangeEvent #-}

gTypeClipboardChangeEvent :: JSM GType
gTypeClipboardChangeEvent = GType . Object <$> jsg "ClipboardChangeEvent"

-- | Functions for this interface are in "JSDOM.ClipboardEvent" (clipboard-apis).
newtype ClipboardEvent = ClipboardEvent { unClipboardEvent :: JSVal }

instance PToJSVal ClipboardEvent where
  pToJSVal = unClipboardEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal ClipboardEvent where
  pFromJSVal = ClipboardEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal ClipboardEvent where
  toJSVal = return . unClipboardEvent
  {-# INLINE toJSVal #-}

instance FromJSVal ClipboardEvent where
  fromJSVal v = fmap ClipboardEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ClipboardEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ClipboardEvent where
  makeObject = makeObject . unClipboardEvent

instance IsEvent ClipboardEvent

instance IsGObject ClipboardEvent where
  typeGType _ = gTypeClipboardEvent
  {-# INLINE typeGType #-}

noClipboardEvent :: Maybe ClipboardEvent
noClipboardEvent = Nothing
{-# INLINE noClipboardEvent #-}

gTypeClipboardEvent :: JSM GType
gTypeClipboardEvent = GType . Object <$> jsg "ClipboardEvent"

-- | Dictionary ClipboardEventInit (clipboard-apis)
newtype ClipboardEventInit = ClipboardEventInit { unClipboardEventInit :: JSVal }

instance PToJSVal ClipboardEventInit where
  pToJSVal = unClipboardEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal ClipboardEventInit where
  pFromJSVal = ClipboardEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal ClipboardEventInit where
  toJSVal = return . unClipboardEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal ClipboardEventInit where
  fromJSVal v = fmap ClipboardEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ClipboardEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ClipboardEventInit where
  makeObject = makeObject . unClipboardEventInit

instance IsEventInit ClipboardEventInit

instance IsGObject ClipboardEventInit where
  typeGType _ = gTypeClipboardEventInit
  {-# INLINE typeGType #-}

noClipboardEventInit :: Maybe ClipboardEventInit
noClipboardEventInit = Nothing
{-# INLINE noClipboardEventInit #-}

gTypeClipboardEventInit :: JSM GType
gTypeClipboardEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ClipboardItem" (clipboard-apis).
newtype ClipboardItem = ClipboardItem { unClipboardItem :: JSVal }

instance PToJSVal ClipboardItem where
  pToJSVal = unClipboardItem
  {-# INLINE pToJSVal #-}

instance PFromJSVal ClipboardItem where
  pFromJSVal = ClipboardItem
  {-# INLINE pFromJSVal #-}

instance ToJSVal ClipboardItem where
  toJSVal = return . unClipboardItem
  {-# INLINE toJSVal #-}

instance FromJSVal ClipboardItem where
  fromJSVal v = fmap ClipboardItem <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ClipboardItem
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ClipboardItem where
  makeObject = makeObject . unClipboardItem


instance IsGObject ClipboardItem where
  typeGType _ = gTypeClipboardItem
  {-# INLINE typeGType #-}

noClipboardItem :: Maybe ClipboardItem
noClipboardItem = Nothing
{-# INLINE noClipboardItem #-}

gTypeClipboardItem :: JSM GType
gTypeClipboardItem = GType . Object <$> jsg "ClipboardItem"

-- | Dictionary ClipboardItemOptions (clipboard-apis)
newtype ClipboardItemOptions = ClipboardItemOptions { unClipboardItemOptions :: JSVal }

instance PToJSVal ClipboardItemOptions where
  pToJSVal = unClipboardItemOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ClipboardItemOptions where
  pFromJSVal = ClipboardItemOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ClipboardItemOptions where
  toJSVal = return . unClipboardItemOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ClipboardItemOptions where
  fromJSVal v = fmap ClipboardItemOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ClipboardItemOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ClipboardItemOptions where
  makeObject = makeObject . unClipboardItemOptions


instance IsGObject ClipboardItemOptions where
  typeGType _ = gTypeClipboardItemOptions
  {-# INLINE typeGType #-}

noClipboardItemOptions :: Maybe ClipboardItemOptions
noClipboardItemOptions = Nothing
{-# INLINE noClipboardItemOptions #-}

gTypeClipboardItemOptions :: JSM GType
gTypeClipboardItemOptions = GType . Object <$> jsg "Object"

-- | Dictionary ClipboardUnsanitizedFormats (clipboard-apis)
newtype ClipboardUnsanitizedFormats = ClipboardUnsanitizedFormats { unClipboardUnsanitizedFormats :: JSVal }

instance PToJSVal ClipboardUnsanitizedFormats where
  pToJSVal = unClipboardUnsanitizedFormats
  {-# INLINE pToJSVal #-}

instance PFromJSVal ClipboardUnsanitizedFormats where
  pFromJSVal = ClipboardUnsanitizedFormats
  {-# INLINE pFromJSVal #-}

instance ToJSVal ClipboardUnsanitizedFormats where
  toJSVal = return . unClipboardUnsanitizedFormats
  {-# INLINE toJSVal #-}

instance FromJSVal ClipboardUnsanitizedFormats where
  fromJSVal v = fmap ClipboardUnsanitizedFormats <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ClipboardUnsanitizedFormats
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ClipboardUnsanitizedFormats where
  makeObject = makeObject . unClipboardUnsanitizedFormats


instance IsGObject ClipboardUnsanitizedFormats where
  typeGType _ = gTypeClipboardUnsanitizedFormats
  {-# INLINE typeGType #-}

noClipboardUnsanitizedFormats :: Maybe ClipboardUnsanitizedFormats
noClipboardUnsanitizedFormats = Nothing
{-# INLINE noClipboardUnsanitizedFormats #-}

gTypeClipboardUnsanitizedFormats :: JSM GType
gTypeClipboardUnsanitizedFormats = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CloseEvent" (websockets).
newtype CloseEvent = CloseEvent { unCloseEvent :: JSVal }

instance PToJSVal CloseEvent where
  pToJSVal = unCloseEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal CloseEvent where
  pFromJSVal = CloseEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal CloseEvent where
  toJSVal = return . unCloseEvent
  {-# INLINE toJSVal #-}

instance FromJSVal CloseEvent where
  fromJSVal v = fmap CloseEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CloseEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CloseEvent where
  makeObject = makeObject . unCloseEvent

instance IsEvent CloseEvent

instance IsGObject CloseEvent where
  typeGType _ = gTypeCloseEvent
  {-# INLINE typeGType #-}

noCloseEvent :: Maybe CloseEvent
noCloseEvent = Nothing
{-# INLINE noCloseEvent #-}

gTypeCloseEvent :: JSM GType
gTypeCloseEvent = GType . Object <$> jsg "CloseEvent"

-- | Dictionary CloseEventInit (websockets)
newtype CloseEventInit = CloseEventInit { unCloseEventInit :: JSVal }

instance PToJSVal CloseEventInit where
  pToJSVal = unCloseEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal CloseEventInit where
  pFromJSVal = CloseEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal CloseEventInit where
  toJSVal = return . unCloseEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal CloseEventInit where
  fromJSVal v = fmap CloseEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CloseEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CloseEventInit where
  makeObject = makeObject . unCloseEventInit

instance IsEventInit CloseEventInit

instance IsGObject CloseEventInit where
  typeGType _ = gTypeCloseEventInit
  {-# INLINE typeGType #-}

noCloseEventInit :: Maybe CloseEventInit
noCloseEventInit = Nothing
{-# INLINE noCloseEventInit #-}

gTypeCloseEventInit :: JSM GType
gTypeCloseEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CloseWatcher" (html).
newtype CloseWatcher = CloseWatcher { unCloseWatcher :: JSVal }

instance PToJSVal CloseWatcher where
  pToJSVal = unCloseWatcher
  {-# INLINE pToJSVal #-}

instance PFromJSVal CloseWatcher where
  pFromJSVal = CloseWatcher
  {-# INLINE pFromJSVal #-}

instance ToJSVal CloseWatcher where
  toJSVal = return . unCloseWatcher
  {-# INLINE toJSVal #-}

instance FromJSVal CloseWatcher where
  fromJSVal v = fmap CloseWatcher <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CloseWatcher
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CloseWatcher where
  makeObject = makeObject . unCloseWatcher

instance IsEventTarget CloseWatcher

instance IsGObject CloseWatcher where
  typeGType _ = gTypeCloseWatcher
  {-# INLINE typeGType #-}

noCloseWatcher :: Maybe CloseWatcher
noCloseWatcher = Nothing
{-# INLINE noCloseWatcher #-}

gTypeCloseWatcher :: JSM GType
gTypeCloseWatcher = GType . Object <$> jsg "CloseWatcher"

-- | Dictionary CloseWatcherOptions (html)
newtype CloseWatcherOptions = CloseWatcherOptions { unCloseWatcherOptions :: JSVal }

instance PToJSVal CloseWatcherOptions where
  pToJSVal = unCloseWatcherOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal CloseWatcherOptions where
  pFromJSVal = CloseWatcherOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal CloseWatcherOptions where
  toJSVal = return . unCloseWatcherOptions
  {-# INLINE toJSVal #-}

instance FromJSVal CloseWatcherOptions where
  fromJSVal v = fmap CloseWatcherOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CloseWatcherOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CloseWatcherOptions where
  makeObject = makeObject . unCloseWatcherOptions


instance IsGObject CloseWatcherOptions where
  typeGType _ = gTypeCloseWatcherOptions
  {-# INLINE typeGType #-}

noCloseWatcherOptions :: Maybe CloseWatcherOptions
noCloseWatcherOptions = Nothing
{-# INLINE noCloseWatcherOptions #-}

gTypeCloseWatcherOptions :: JSM GType
gTypeCloseWatcherOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CommandEvent" (html).
newtype CommandEvent = CommandEvent { unCommandEvent :: JSVal }

instance PToJSVal CommandEvent where
  pToJSVal = unCommandEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal CommandEvent where
  pFromJSVal = CommandEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal CommandEvent where
  toJSVal = return . unCommandEvent
  {-# INLINE toJSVal #-}

instance FromJSVal CommandEvent where
  fromJSVal v = fmap CommandEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CommandEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CommandEvent where
  makeObject = makeObject . unCommandEvent

instance IsEvent CommandEvent

instance IsGObject CommandEvent where
  typeGType _ = gTypeCommandEvent
  {-# INLINE typeGType #-}

noCommandEvent :: Maybe CommandEvent
noCommandEvent = Nothing
{-# INLINE noCommandEvent #-}

gTypeCommandEvent :: JSM GType
gTypeCommandEvent = GType . Object <$> jsg "CommandEvent"

-- | Dictionary CommandEventInit (html)
newtype CommandEventInit = CommandEventInit { unCommandEventInit :: JSVal }

instance PToJSVal CommandEventInit where
  pToJSVal = unCommandEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal CommandEventInit where
  pFromJSVal = CommandEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal CommandEventInit where
  toJSVal = return . unCommandEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal CommandEventInit where
  fromJSVal v = fmap CommandEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CommandEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CommandEventInit where
  makeObject = makeObject . unCommandEventInit

instance IsEventInit CommandEventInit

instance IsGObject CommandEventInit where
  typeGType _ = gTypeCommandEventInit
  {-# INLINE typeGType #-}

noCommandEventInit :: Maybe CommandEventInit
noCommandEventInit = Nothing
{-# INLINE noCommandEventInit #-}

gTypeCommandEventInit :: JSM GType
gTypeCommandEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Comment" (dom).
newtype Comment = Comment { unComment :: JSVal }

instance PToJSVal Comment where
  pToJSVal = unComment
  {-# INLINE pToJSVal #-}

instance PFromJSVal Comment where
  pFromJSVal = Comment
  {-# INLINE pFromJSVal #-}

instance ToJSVal Comment where
  toJSVal = return . unComment
  {-# INLINE toJSVal #-}

instance FromJSVal Comment where
  fromJSVal v = fmap Comment <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Comment
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Comment where
  makeObject = makeObject . unComment

instance IsCharacterData Comment
instance IsChildNode Comment
instance IsNonDocumentTypeChildNode Comment
instance IsNode Comment
instance IsEventTarget Comment

instance IsGObject Comment where
  typeGType _ = gTypeComment
  {-# INLINE typeGType #-}

noComment :: Maybe Comment
noComment = Nothing
{-# INLINE noComment #-}

gTypeComment :: JSM GType
gTypeComment = GType . Object <$> jsg "Comment"

-- | Functions for this interface are in "JSDOM.CompositionEvent" (uievents).
newtype CompositionEvent = CompositionEvent { unCompositionEvent :: JSVal }

instance PToJSVal CompositionEvent where
  pToJSVal = unCompositionEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal CompositionEvent where
  pFromJSVal = CompositionEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal CompositionEvent where
  toJSVal = return . unCompositionEvent
  {-# INLINE toJSVal #-}

instance FromJSVal CompositionEvent where
  fromJSVal v = fmap CompositionEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CompositionEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CompositionEvent where
  makeObject = makeObject . unCompositionEvent

instance IsUIEvent CompositionEvent
instance IsEvent CompositionEvent

instance IsGObject CompositionEvent where
  typeGType _ = gTypeCompositionEvent
  {-# INLINE typeGType #-}

noCompositionEvent :: Maybe CompositionEvent
noCompositionEvent = Nothing
{-# INLINE noCompositionEvent #-}

gTypeCompositionEvent :: JSM GType
gTypeCompositionEvent = GType . Object <$> jsg "CompositionEvent"

-- | Dictionary CompositionEventInit (uievents)
newtype CompositionEventInit = CompositionEventInit { unCompositionEventInit :: JSVal }

instance PToJSVal CompositionEventInit where
  pToJSVal = unCompositionEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal CompositionEventInit where
  pFromJSVal = CompositionEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal CompositionEventInit where
  toJSVal = return . unCompositionEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal CompositionEventInit where
  fromJSVal v = fmap CompositionEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CompositionEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CompositionEventInit where
  makeObject = makeObject . unCompositionEventInit

instance IsUIEventInit CompositionEventInit
instance IsEventInit CompositionEventInit

instance IsGObject CompositionEventInit where
  typeGType _ = gTypeCompositionEventInit
  {-# INLINE typeGType #-}

noCompositionEventInit :: Maybe CompositionEventInit
noCompositionEventInit = Nothing
{-# INLINE noCompositionEventInit #-}

gTypeCompositionEventInit :: JSM GType
gTypeCompositionEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CompressionStream" (compression).
newtype CompressionStream = CompressionStream { unCompressionStream :: JSVal }

instance PToJSVal CompressionStream where
  pToJSVal = unCompressionStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal CompressionStream where
  pFromJSVal = CompressionStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal CompressionStream where
  toJSVal = return . unCompressionStream
  {-# INLINE toJSVal #-}

instance FromJSVal CompressionStream where
  fromJSVal v = fmap CompressionStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CompressionStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CompressionStream where
  makeObject = makeObject . unCompressionStream

instance IsGenericTransformStream CompressionStream

instance IsGObject CompressionStream where
  typeGType _ = gTypeCompressionStream
  {-# INLINE typeGType #-}

noCompressionStream :: Maybe CompressionStream
noCompressionStream = Nothing
{-# INLINE noCompressionStream #-}

gTypeCompressionStream :: JSM GType
gTypeCompressionStream = GType . Object <$> jsg "CompressionStream"

-- | Dictionary ComputedEffectTiming (web-animations-1)
newtype ComputedEffectTiming = ComputedEffectTiming { unComputedEffectTiming :: JSVal }

instance PToJSVal ComputedEffectTiming where
  pToJSVal = unComputedEffectTiming
  {-# INLINE pToJSVal #-}

instance PFromJSVal ComputedEffectTiming where
  pFromJSVal = ComputedEffectTiming
  {-# INLINE pFromJSVal #-}

instance ToJSVal ComputedEffectTiming where
  toJSVal = return . unComputedEffectTiming
  {-# INLINE toJSVal #-}

instance FromJSVal ComputedEffectTiming where
  fromJSVal v = fmap ComputedEffectTiming <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ComputedEffectTiming
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ComputedEffectTiming where
  makeObject = makeObject . unComputedEffectTiming

instance IsEffectTiming ComputedEffectTiming

instance IsGObject ComputedEffectTiming where
  typeGType _ = gTypeComputedEffectTiming
  {-# INLINE typeGType #-}

noComputedEffectTiming :: Maybe ComputedEffectTiming
noComputedEffectTiming = Nothing
{-# INLINE noComputedEffectTiming #-}

gTypeComputedEffectTiming :: JSM GType
gTypeComputedEffectTiming = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ConstantSourceNode" (webaudio-1.1).
newtype ConstantSourceNode = ConstantSourceNode { unConstantSourceNode :: JSVal }

instance PToJSVal ConstantSourceNode where
  pToJSVal = unConstantSourceNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstantSourceNode where
  pFromJSVal = ConstantSourceNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstantSourceNode where
  toJSVal = return . unConstantSourceNode
  {-# INLINE toJSVal #-}

instance FromJSVal ConstantSourceNode where
  fromJSVal v = fmap ConstantSourceNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstantSourceNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstantSourceNode where
  makeObject = makeObject . unConstantSourceNode

instance IsAudioScheduledSourceNode ConstantSourceNode
instance IsAudioNode ConstantSourceNode
instance IsEventTarget ConstantSourceNode

instance IsGObject ConstantSourceNode where
  typeGType _ = gTypeConstantSourceNode
  {-# INLINE typeGType #-}

noConstantSourceNode :: Maybe ConstantSourceNode
noConstantSourceNode = Nothing
{-# INLINE noConstantSourceNode #-}

gTypeConstantSourceNode :: JSM GType
gTypeConstantSourceNode = GType . Object <$> jsg "ConstantSourceNode"

-- | Dictionary ConstantSourceOptions (webaudio-1.1)
newtype ConstantSourceOptions = ConstantSourceOptions { unConstantSourceOptions :: JSVal }

instance PToJSVal ConstantSourceOptions where
  pToJSVal = unConstantSourceOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstantSourceOptions where
  pFromJSVal = ConstantSourceOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstantSourceOptions where
  toJSVal = return . unConstantSourceOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ConstantSourceOptions where
  fromJSVal v = fmap ConstantSourceOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstantSourceOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstantSourceOptions where
  makeObject = makeObject . unConstantSourceOptions


instance IsGObject ConstantSourceOptions where
  typeGType _ = gTypeConstantSourceOptions
  {-# INLINE typeGType #-}

noConstantSourceOptions :: Maybe ConstantSourceOptions
noConstantSourceOptions = Nothing
{-# INLINE noConstantSourceOptions #-}

gTypeConstantSourceOptions :: JSM GType
gTypeConstantSourceOptions = GType . Object <$> jsg "Object"

-- | Dictionary ConstrainBooleanOrDOMStringParameters (mediacapture-streams)
newtype ConstrainBooleanOrDOMStringParameters = ConstrainBooleanOrDOMStringParameters { unConstrainBooleanOrDOMStringParameters :: JSVal }

instance PToJSVal ConstrainBooleanOrDOMStringParameters where
  pToJSVal = unConstrainBooleanOrDOMStringParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstrainBooleanOrDOMStringParameters where
  pFromJSVal = ConstrainBooleanOrDOMStringParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstrainBooleanOrDOMStringParameters where
  toJSVal = return . unConstrainBooleanOrDOMStringParameters
  {-# INLINE toJSVal #-}

instance FromJSVal ConstrainBooleanOrDOMStringParameters where
  fromJSVal v = fmap ConstrainBooleanOrDOMStringParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstrainBooleanOrDOMStringParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstrainBooleanOrDOMStringParameters where
  makeObject = makeObject . unConstrainBooleanOrDOMStringParameters


instance IsGObject ConstrainBooleanOrDOMStringParameters where
  typeGType _ = gTypeConstrainBooleanOrDOMStringParameters
  {-# INLINE typeGType #-}

noConstrainBooleanOrDOMStringParameters :: Maybe ConstrainBooleanOrDOMStringParameters
noConstrainBooleanOrDOMStringParameters = Nothing
{-# INLINE noConstrainBooleanOrDOMStringParameters #-}

gTypeConstrainBooleanOrDOMStringParameters :: JSM GType
gTypeConstrainBooleanOrDOMStringParameters = GType . Object <$> jsg "Object"

-- | Dictionary ConstrainBooleanParameters (mediacapture-streams)
newtype ConstrainBooleanParameters = ConstrainBooleanParameters { unConstrainBooleanParameters :: JSVal }

instance PToJSVal ConstrainBooleanParameters where
  pToJSVal = unConstrainBooleanParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstrainBooleanParameters where
  pFromJSVal = ConstrainBooleanParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstrainBooleanParameters where
  toJSVal = return . unConstrainBooleanParameters
  {-# INLINE toJSVal #-}

instance FromJSVal ConstrainBooleanParameters where
  fromJSVal v = fmap ConstrainBooleanParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstrainBooleanParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstrainBooleanParameters where
  makeObject = makeObject . unConstrainBooleanParameters


instance IsGObject ConstrainBooleanParameters where
  typeGType _ = gTypeConstrainBooleanParameters
  {-# INLINE typeGType #-}

noConstrainBooleanParameters :: Maybe ConstrainBooleanParameters
noConstrainBooleanParameters = Nothing
{-# INLINE noConstrainBooleanParameters #-}

gTypeConstrainBooleanParameters :: JSM GType
gTypeConstrainBooleanParameters = GType . Object <$> jsg "Object"

-- | Dictionary ConstrainDOMStringParameters (mediacapture-streams)
newtype ConstrainDOMStringParameters = ConstrainDOMStringParameters { unConstrainDOMStringParameters :: JSVal }

instance PToJSVal ConstrainDOMStringParameters where
  pToJSVal = unConstrainDOMStringParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstrainDOMStringParameters where
  pFromJSVal = ConstrainDOMStringParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstrainDOMStringParameters where
  toJSVal = return . unConstrainDOMStringParameters
  {-# INLINE toJSVal #-}

instance FromJSVal ConstrainDOMStringParameters where
  fromJSVal v = fmap ConstrainDOMStringParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstrainDOMStringParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstrainDOMStringParameters where
  makeObject = makeObject . unConstrainDOMStringParameters


instance IsGObject ConstrainDOMStringParameters where
  typeGType _ = gTypeConstrainDOMStringParameters
  {-# INLINE typeGType #-}

noConstrainDOMStringParameters :: Maybe ConstrainDOMStringParameters
noConstrainDOMStringParameters = Nothing
{-# INLINE noConstrainDOMStringParameters #-}

gTypeConstrainDOMStringParameters :: JSM GType
gTypeConstrainDOMStringParameters = GType . Object <$> jsg "Object"

-- | Dictionary ConstrainDoubleRange (mediacapture-streams)
newtype ConstrainDoubleRange = ConstrainDoubleRange { unConstrainDoubleRange :: JSVal }

instance PToJSVal ConstrainDoubleRange where
  pToJSVal = unConstrainDoubleRange
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstrainDoubleRange where
  pFromJSVal = ConstrainDoubleRange
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstrainDoubleRange where
  toJSVal = return . unConstrainDoubleRange
  {-# INLINE toJSVal #-}

instance FromJSVal ConstrainDoubleRange where
  fromJSVal v = fmap ConstrainDoubleRange <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstrainDoubleRange
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstrainDoubleRange where
  makeObject = makeObject . unConstrainDoubleRange

instance IsDoubleRange ConstrainDoubleRange

instance IsGObject ConstrainDoubleRange where
  typeGType _ = gTypeConstrainDoubleRange
  {-# INLINE typeGType #-}

noConstrainDoubleRange :: Maybe ConstrainDoubleRange
noConstrainDoubleRange = Nothing
{-# INLINE noConstrainDoubleRange #-}

gTypeConstrainDoubleRange :: JSM GType
gTypeConstrainDoubleRange = GType . Object <$> jsg "Object"

-- | Dictionary ConstrainPoint2DParameters (image-capture)
newtype ConstrainPoint2DParameters = ConstrainPoint2DParameters { unConstrainPoint2DParameters :: JSVal }

instance PToJSVal ConstrainPoint2DParameters where
  pToJSVal = unConstrainPoint2DParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstrainPoint2DParameters where
  pFromJSVal = ConstrainPoint2DParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstrainPoint2DParameters where
  toJSVal = return . unConstrainPoint2DParameters
  {-# INLINE toJSVal #-}

instance FromJSVal ConstrainPoint2DParameters where
  fromJSVal v = fmap ConstrainPoint2DParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstrainPoint2DParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstrainPoint2DParameters where
  makeObject = makeObject . unConstrainPoint2DParameters


instance IsGObject ConstrainPoint2DParameters where
  typeGType _ = gTypeConstrainPoint2DParameters
  {-# INLINE typeGType #-}

noConstrainPoint2DParameters :: Maybe ConstrainPoint2DParameters
noConstrainPoint2DParameters = Nothing
{-# INLINE noConstrainPoint2DParameters #-}

gTypeConstrainPoint2DParameters :: JSM GType
gTypeConstrainPoint2DParameters = GType . Object <$> jsg "Object"

-- | Dictionary ConstrainULongRange (mediacapture-streams)
newtype ConstrainULongRange = ConstrainULongRange { unConstrainULongRange :: JSVal }

instance PToJSVal ConstrainULongRange where
  pToJSVal = unConstrainULongRange
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConstrainULongRange where
  pFromJSVal = ConstrainULongRange
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConstrainULongRange where
  toJSVal = return . unConstrainULongRange
  {-# INLINE toJSVal #-}

instance FromJSVal ConstrainULongRange where
  fromJSVal v = fmap ConstrainULongRange <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConstrainULongRange
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConstrainULongRange where
  makeObject = makeObject . unConstrainULongRange

instance IsULongRange ConstrainULongRange

instance IsGObject ConstrainULongRange where
  typeGType _ = gTypeConstrainULongRange
  {-# INLINE typeGType #-}

noConstrainULongRange :: Maybe ConstrainULongRange
noConstrainULongRange = Nothing
{-# INLINE noConstrainULongRange #-}

gTypeConstrainULongRange :: JSM GType
gTypeConstrainULongRange = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ContactAddress" (contact-picker).
newtype ContactAddress = ContactAddress { unContactAddress :: JSVal }

instance PToJSVal ContactAddress where
  pToJSVal = unContactAddress
  {-# INLINE pToJSVal #-}

instance PFromJSVal ContactAddress where
  pFromJSVal = ContactAddress
  {-# INLINE pFromJSVal #-}

instance ToJSVal ContactAddress where
  toJSVal = return . unContactAddress
  {-# INLINE toJSVal #-}

instance FromJSVal ContactAddress where
  fromJSVal v = fmap ContactAddress <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ContactAddress
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ContactAddress where
  makeObject = makeObject . unContactAddress


instance IsGObject ContactAddress where
  typeGType _ = gTypeContactAddress
  {-# INLINE typeGType #-}

noContactAddress :: Maybe ContactAddress
noContactAddress = Nothing
{-# INLINE noContactAddress #-}

gTypeContactAddress :: JSM GType
gTypeContactAddress = GType . Object <$> jsg "ContactAddress"

-- | Functions for this interface are in "JSDOM.ContentVisibilityAutoStateChangeEvent" (css-contain-2).
newtype ContentVisibilityAutoStateChangeEvent = ContentVisibilityAutoStateChangeEvent { unContentVisibilityAutoStateChangeEvent :: JSVal }

instance PToJSVal ContentVisibilityAutoStateChangeEvent where
  pToJSVal = unContentVisibilityAutoStateChangeEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal ContentVisibilityAutoStateChangeEvent where
  pFromJSVal = ContentVisibilityAutoStateChangeEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal ContentVisibilityAutoStateChangeEvent where
  toJSVal = return . unContentVisibilityAutoStateChangeEvent
  {-# INLINE toJSVal #-}

instance FromJSVal ContentVisibilityAutoStateChangeEvent where
  fromJSVal v = fmap ContentVisibilityAutoStateChangeEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ContentVisibilityAutoStateChangeEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ContentVisibilityAutoStateChangeEvent where
  makeObject = makeObject . unContentVisibilityAutoStateChangeEvent

instance IsEvent ContentVisibilityAutoStateChangeEvent

instance IsGObject ContentVisibilityAutoStateChangeEvent where
  typeGType _ = gTypeContentVisibilityAutoStateChangeEvent
  {-# INLINE typeGType #-}

noContentVisibilityAutoStateChangeEvent :: Maybe ContentVisibilityAutoStateChangeEvent
noContentVisibilityAutoStateChangeEvent = Nothing
{-# INLINE noContentVisibilityAutoStateChangeEvent #-}

gTypeContentVisibilityAutoStateChangeEvent :: JSM GType
gTypeContentVisibilityAutoStateChangeEvent = GType . Object <$> jsg "ContentVisibilityAutoStateChangeEvent"

-- | Dictionary ContentVisibilityAutoStateChangeEventInit (css-contain-2)
newtype ContentVisibilityAutoStateChangeEventInit = ContentVisibilityAutoStateChangeEventInit { unContentVisibilityAutoStateChangeEventInit :: JSVal }

instance PToJSVal ContentVisibilityAutoStateChangeEventInit where
  pToJSVal = unContentVisibilityAutoStateChangeEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal ContentVisibilityAutoStateChangeEventInit where
  pFromJSVal = ContentVisibilityAutoStateChangeEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal ContentVisibilityAutoStateChangeEventInit where
  toJSVal = return . unContentVisibilityAutoStateChangeEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal ContentVisibilityAutoStateChangeEventInit where
  fromJSVal v = fmap ContentVisibilityAutoStateChangeEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ContentVisibilityAutoStateChangeEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ContentVisibilityAutoStateChangeEventInit where
  makeObject = makeObject . unContentVisibilityAutoStateChangeEventInit

instance IsEventInit ContentVisibilityAutoStateChangeEventInit

instance IsGObject ContentVisibilityAutoStateChangeEventInit where
  typeGType _ = gTypeContentVisibilityAutoStateChangeEventInit
  {-# INLINE typeGType #-}

noContentVisibilityAutoStateChangeEventInit :: Maybe ContentVisibilityAutoStateChangeEventInit
noContentVisibilityAutoStateChangeEventInit = Nothing
{-# INLINE noContentVisibilityAutoStateChangeEventInit #-}

gTypeContentVisibilityAutoStateChangeEventInit :: JSM GType
gTypeContentVisibilityAutoStateChangeEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ConvolverNode" (webaudio-1.1).
newtype ConvolverNode = ConvolverNode { unConvolverNode :: JSVal }

instance PToJSVal ConvolverNode where
  pToJSVal = unConvolverNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConvolverNode where
  pFromJSVal = ConvolverNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConvolverNode where
  toJSVal = return . unConvolverNode
  {-# INLINE toJSVal #-}

instance FromJSVal ConvolverNode where
  fromJSVal v = fmap ConvolverNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConvolverNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConvolverNode where
  makeObject = makeObject . unConvolverNode

instance IsAudioNode ConvolverNode
instance IsEventTarget ConvolverNode

instance IsGObject ConvolverNode where
  typeGType _ = gTypeConvolverNode
  {-# INLINE typeGType #-}

noConvolverNode :: Maybe ConvolverNode
noConvolverNode = Nothing
{-# INLINE noConvolverNode #-}

gTypeConvolverNode :: JSM GType
gTypeConvolverNode = GType . Object <$> jsg "ConvolverNode"

-- | Dictionary ConvolverOptions (webaudio-1.1)
newtype ConvolverOptions = ConvolverOptions { unConvolverOptions :: JSVal }

instance PToJSVal ConvolverOptions where
  pToJSVal = unConvolverOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ConvolverOptions where
  pFromJSVal = ConvolverOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ConvolverOptions where
  toJSVal = return . unConvolverOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ConvolverOptions where
  fromJSVal v = fmap ConvolverOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ConvolverOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ConvolverOptions where
  makeObject = makeObject . unConvolverOptions

instance IsAudioNodeOptions ConvolverOptions

instance IsGObject ConvolverOptions where
  typeGType _ = gTypeConvolverOptions
  {-# INLINE typeGType #-}

noConvolverOptions :: Maybe ConvolverOptions
noConvolverOptions = Nothing
{-# INLINE noConvolverOptions #-}

gTypeConvolverOptions :: JSM GType
gTypeConvolverOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CookieChangeEvent" (cookiestore).
newtype CookieChangeEvent = CookieChangeEvent { unCookieChangeEvent :: JSVal }

instance PToJSVal CookieChangeEvent where
  pToJSVal = unCookieChangeEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal CookieChangeEvent where
  pFromJSVal = CookieChangeEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal CookieChangeEvent where
  toJSVal = return . unCookieChangeEvent
  {-# INLINE toJSVal #-}

instance FromJSVal CookieChangeEvent where
  fromJSVal v = fmap CookieChangeEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CookieChangeEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CookieChangeEvent where
  makeObject = makeObject . unCookieChangeEvent

instance IsEvent CookieChangeEvent

instance IsGObject CookieChangeEvent where
  typeGType _ = gTypeCookieChangeEvent
  {-# INLINE typeGType #-}

noCookieChangeEvent :: Maybe CookieChangeEvent
noCookieChangeEvent = Nothing
{-# INLINE noCookieChangeEvent #-}

gTypeCookieChangeEvent :: JSM GType
gTypeCookieChangeEvent = GType . Object <$> jsg "CookieChangeEvent"

-- | Dictionary CookieChangeEventInit (cookiestore)
newtype CookieChangeEventInit = CookieChangeEventInit { unCookieChangeEventInit :: JSVal }

instance PToJSVal CookieChangeEventInit where
  pToJSVal = unCookieChangeEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal CookieChangeEventInit where
  pFromJSVal = CookieChangeEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal CookieChangeEventInit where
  toJSVal = return . unCookieChangeEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal CookieChangeEventInit where
  fromJSVal v = fmap CookieChangeEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CookieChangeEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CookieChangeEventInit where
  makeObject = makeObject . unCookieChangeEventInit

instance IsEventInit CookieChangeEventInit

instance IsGObject CookieChangeEventInit where
  typeGType _ = gTypeCookieChangeEventInit
  {-# INLINE typeGType #-}

noCookieChangeEventInit :: Maybe CookieChangeEventInit
noCookieChangeEventInit = Nothing
{-# INLINE noCookieChangeEventInit #-}

gTypeCookieChangeEventInit :: JSM GType
gTypeCookieChangeEventInit = GType . Object <$> jsg "Object"

-- | Dictionary CookieInit (cookiestore)
newtype CookieInit = CookieInit { unCookieInit :: JSVal }

instance PToJSVal CookieInit where
  pToJSVal = unCookieInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal CookieInit where
  pFromJSVal = CookieInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal CookieInit where
  toJSVal = return . unCookieInit
  {-# INLINE toJSVal #-}

instance FromJSVal CookieInit where
  fromJSVal v = fmap CookieInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CookieInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CookieInit where
  makeObject = makeObject . unCookieInit


instance IsGObject CookieInit where
  typeGType _ = gTypeCookieInit
  {-# INLINE typeGType #-}

noCookieInit :: Maybe CookieInit
noCookieInit = Nothing
{-# INLINE noCookieInit #-}

gTypeCookieInit :: JSM GType
gTypeCookieInit = GType . Object <$> jsg "Object"

-- | Dictionary CookieListItem (cookiestore)
newtype CookieListItem = CookieListItem { unCookieListItem :: JSVal }

instance PToJSVal CookieListItem where
  pToJSVal = unCookieListItem
  {-# INLINE pToJSVal #-}

instance PFromJSVal CookieListItem where
  pFromJSVal = CookieListItem
  {-# INLINE pFromJSVal #-}

instance ToJSVal CookieListItem where
  toJSVal = return . unCookieListItem
  {-# INLINE toJSVal #-}

instance FromJSVal CookieListItem where
  fromJSVal v = fmap CookieListItem <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CookieListItem
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CookieListItem where
  makeObject = makeObject . unCookieListItem


instance IsGObject CookieListItem where
  typeGType _ = gTypeCookieListItem
  {-# INLINE typeGType #-}

noCookieListItem :: Maybe CookieListItem
noCookieListItem = Nothing
{-# INLINE noCookieListItem #-}

gTypeCookieListItem :: JSM GType
gTypeCookieListItem = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CookieStore" (cookiestore).
newtype CookieStore = CookieStore { unCookieStore :: JSVal }

instance PToJSVal CookieStore where
  pToJSVal = unCookieStore
  {-# INLINE pToJSVal #-}

instance PFromJSVal CookieStore where
  pFromJSVal = CookieStore
  {-# INLINE pFromJSVal #-}

instance ToJSVal CookieStore where
  toJSVal = return . unCookieStore
  {-# INLINE toJSVal #-}

instance FromJSVal CookieStore where
  fromJSVal v = fmap CookieStore <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CookieStore
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CookieStore where
  makeObject = makeObject . unCookieStore

instance IsEventTarget CookieStore

instance IsGObject CookieStore where
  typeGType _ = gTypeCookieStore
  {-# INLINE typeGType #-}

noCookieStore :: Maybe CookieStore
noCookieStore = Nothing
{-# INLINE noCookieStore #-}

gTypeCookieStore :: JSM GType
gTypeCookieStore = GType . Object <$> jsg "CookieStore"

-- | Dictionary CookieStoreDeleteOptions (cookiestore)
newtype CookieStoreDeleteOptions = CookieStoreDeleteOptions { unCookieStoreDeleteOptions :: JSVal }

instance PToJSVal CookieStoreDeleteOptions where
  pToJSVal = unCookieStoreDeleteOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal CookieStoreDeleteOptions where
  pFromJSVal = CookieStoreDeleteOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal CookieStoreDeleteOptions where
  toJSVal = return . unCookieStoreDeleteOptions
  {-# INLINE toJSVal #-}

instance FromJSVal CookieStoreDeleteOptions where
  fromJSVal v = fmap CookieStoreDeleteOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CookieStoreDeleteOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CookieStoreDeleteOptions where
  makeObject = makeObject . unCookieStoreDeleteOptions


instance IsGObject CookieStoreDeleteOptions where
  typeGType _ = gTypeCookieStoreDeleteOptions
  {-# INLINE typeGType #-}

noCookieStoreDeleteOptions :: Maybe CookieStoreDeleteOptions
noCookieStoreDeleteOptions = Nothing
{-# INLINE noCookieStoreDeleteOptions #-}

gTypeCookieStoreDeleteOptions :: JSM GType
gTypeCookieStoreDeleteOptions = GType . Object <$> jsg "Object"

-- | Dictionary CookieStoreGetOptions (cookiestore)
newtype CookieStoreGetOptions = CookieStoreGetOptions { unCookieStoreGetOptions :: JSVal }

instance PToJSVal CookieStoreGetOptions where
  pToJSVal = unCookieStoreGetOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal CookieStoreGetOptions where
  pFromJSVal = CookieStoreGetOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal CookieStoreGetOptions where
  toJSVal = return . unCookieStoreGetOptions
  {-# INLINE toJSVal #-}

instance FromJSVal CookieStoreGetOptions where
  fromJSVal v = fmap CookieStoreGetOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CookieStoreGetOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CookieStoreGetOptions where
  makeObject = makeObject . unCookieStoreGetOptions


instance IsGObject CookieStoreGetOptions where
  typeGType _ = gTypeCookieStoreGetOptions
  {-# INLINE typeGType #-}

noCookieStoreGetOptions :: Maybe CookieStoreGetOptions
noCookieStoreGetOptions = Nothing
{-# INLINE noCookieStoreGetOptions #-}

gTypeCookieStoreGetOptions :: JSM GType
gTypeCookieStoreGetOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CookieStoreManager" (cookiestore).
newtype CookieStoreManager = CookieStoreManager { unCookieStoreManager :: JSVal }

instance PToJSVal CookieStoreManager where
  pToJSVal = unCookieStoreManager
  {-# INLINE pToJSVal #-}

instance PFromJSVal CookieStoreManager where
  pFromJSVal = CookieStoreManager
  {-# INLINE pFromJSVal #-}

instance ToJSVal CookieStoreManager where
  toJSVal = return . unCookieStoreManager
  {-# INLINE toJSVal #-}

instance FromJSVal CookieStoreManager where
  fromJSVal v = fmap CookieStoreManager <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CookieStoreManager
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CookieStoreManager where
  makeObject = makeObject . unCookieStoreManager


instance IsGObject CookieStoreManager where
  typeGType _ = gTypeCookieStoreManager
  {-# INLINE typeGType #-}

noCookieStoreManager :: Maybe CookieStoreManager
noCookieStoreManager = Nothing
{-# INLINE noCookieStoreManager #-}

gTypeCookieStoreManager :: JSM GType
gTypeCookieStoreManager = GType . Object <$> jsg "CookieStoreManager"

-- | Functions for this interface are in "JSDOM.CountQueuingStrategy" (streams).
newtype CountQueuingStrategy = CountQueuingStrategy { unCountQueuingStrategy :: JSVal }

instance PToJSVal CountQueuingStrategy where
  pToJSVal = unCountQueuingStrategy
  {-# INLINE pToJSVal #-}

instance PFromJSVal CountQueuingStrategy where
  pFromJSVal = CountQueuingStrategy
  {-# INLINE pFromJSVal #-}

instance ToJSVal CountQueuingStrategy where
  toJSVal = return . unCountQueuingStrategy
  {-# INLINE toJSVal #-}

instance FromJSVal CountQueuingStrategy where
  fromJSVal v = fmap CountQueuingStrategy <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CountQueuingStrategy
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CountQueuingStrategy where
  makeObject = makeObject . unCountQueuingStrategy


instance IsGObject CountQueuingStrategy where
  typeGType _ = gTypeCountQueuingStrategy
  {-# INLINE typeGType #-}

noCountQueuingStrategy :: Maybe CountQueuingStrategy
noCountQueuingStrategy = Nothing
{-# INLINE noCountQueuingStrategy #-}

gTypeCountQueuingStrategy :: JSM GType
gTypeCountQueuingStrategy = GType . Object <$> jsg "CountQueuingStrategy"

-- | Functions for this interface are in "JSDOM.Credential" (credential-management-1).
newtype Credential = Credential { unCredential :: JSVal }

instance PToJSVal Credential where
  pToJSVal = unCredential
  {-# INLINE pToJSVal #-}

instance PFromJSVal Credential where
  pFromJSVal = Credential
  {-# INLINE pFromJSVal #-}

instance ToJSVal Credential where
  toJSVal = return . unCredential
  {-# INLINE toJSVal #-}

instance FromJSVal Credential where
  fromJSVal v = fmap Credential <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Credential
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Credential where
  makeObject = makeObject . unCredential

class (IsGObject o) => IsCredential o
toCredential :: IsCredential o => o -> Credential
toCredential = Credential . coerce

instance IsCredential Credential

instance IsGObject Credential where
  typeGType _ = gTypeCredential
  {-# INLINE typeGType #-}

noCredential :: Maybe Credential
noCredential = Nothing
{-# INLINE noCredential #-}

gTypeCredential :: JSM GType
gTypeCredential = GType . Object <$> jsg "Credential"

-- | Dictionary CredentialCreationOptions (credential-management-1)
newtype CredentialCreationOptions = CredentialCreationOptions { unCredentialCreationOptions :: JSVal }

instance PToJSVal CredentialCreationOptions where
  pToJSVal = unCredentialCreationOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal CredentialCreationOptions where
  pFromJSVal = CredentialCreationOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal CredentialCreationOptions where
  toJSVal = return . unCredentialCreationOptions
  {-# INLINE toJSVal #-}

instance FromJSVal CredentialCreationOptions where
  fromJSVal v = fmap CredentialCreationOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CredentialCreationOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CredentialCreationOptions where
  makeObject = makeObject . unCredentialCreationOptions


instance IsGObject CredentialCreationOptions where
  typeGType _ = gTypeCredentialCreationOptions
  {-# INLINE typeGType #-}

noCredentialCreationOptions :: Maybe CredentialCreationOptions
noCredentialCreationOptions = Nothing
{-# INLINE noCredentialCreationOptions #-}

gTypeCredentialCreationOptions :: JSM GType
gTypeCredentialCreationOptions = GType . Object <$> jsg "Object"

-- | Dictionary CredentialData (credential-management-1)
newtype CredentialData = CredentialData { unCredentialData :: JSVal }

instance PToJSVal CredentialData where
  pToJSVal = unCredentialData
  {-# INLINE pToJSVal #-}

instance PFromJSVal CredentialData where
  pFromJSVal = CredentialData
  {-# INLINE pFromJSVal #-}

instance ToJSVal CredentialData where
  toJSVal = return . unCredentialData
  {-# INLINE toJSVal #-}

instance FromJSVal CredentialData where
  fromJSVal v = fmap CredentialData <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CredentialData
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CredentialData where
  makeObject = makeObject . unCredentialData

class (IsGObject o) => IsCredentialData o
toCredentialData :: IsCredentialData o => o -> CredentialData
toCredentialData = CredentialData . coerce

instance IsCredentialData CredentialData

instance IsGObject CredentialData where
  typeGType _ = gTypeCredentialData
  {-# INLINE typeGType #-}

noCredentialData :: Maybe CredentialData
noCredentialData = Nothing
{-# INLINE noCredentialData #-}

gTypeCredentialData :: JSM GType
gTypeCredentialData = GType . Object <$> jsg "Object"

-- | Dictionary CredentialPropertiesOutput (webauthn-4)
newtype CredentialPropertiesOutput = CredentialPropertiesOutput { unCredentialPropertiesOutput :: JSVal }

instance PToJSVal CredentialPropertiesOutput where
  pToJSVal = unCredentialPropertiesOutput
  {-# INLINE pToJSVal #-}

instance PFromJSVal CredentialPropertiesOutput where
  pFromJSVal = CredentialPropertiesOutput
  {-# INLINE pFromJSVal #-}

instance ToJSVal CredentialPropertiesOutput where
  toJSVal = return . unCredentialPropertiesOutput
  {-# INLINE toJSVal #-}

instance FromJSVal CredentialPropertiesOutput where
  fromJSVal v = fmap CredentialPropertiesOutput <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CredentialPropertiesOutput
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CredentialPropertiesOutput where
  makeObject = makeObject . unCredentialPropertiesOutput


instance IsGObject CredentialPropertiesOutput where
  typeGType _ = gTypeCredentialPropertiesOutput
  {-# INLINE typeGType #-}

noCredentialPropertiesOutput :: Maybe CredentialPropertiesOutput
noCredentialPropertiesOutput = Nothing
{-# INLINE noCredentialPropertiesOutput #-}

gTypeCredentialPropertiesOutput :: JSM GType
gTypeCredentialPropertiesOutput = GType . Object <$> jsg "Object"

-- | Dictionary CredentialRequestOptions (credential-management-1)
newtype CredentialRequestOptions = CredentialRequestOptions { unCredentialRequestOptions :: JSVal }

instance PToJSVal CredentialRequestOptions where
  pToJSVal = unCredentialRequestOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal CredentialRequestOptions where
  pFromJSVal = CredentialRequestOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal CredentialRequestOptions where
  toJSVal = return . unCredentialRequestOptions
  {-# INLINE toJSVal #-}

instance FromJSVal CredentialRequestOptions where
  fromJSVal v = fmap CredentialRequestOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CredentialRequestOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CredentialRequestOptions where
  makeObject = makeObject . unCredentialRequestOptions


instance IsGObject CredentialRequestOptions where
  typeGType _ = gTypeCredentialRequestOptions
  {-# INLINE typeGType #-}

noCredentialRequestOptions :: Maybe CredentialRequestOptions
noCredentialRequestOptions = Nothing
{-# INLINE noCredentialRequestOptions #-}

gTypeCredentialRequestOptions :: JSM GType
gTypeCredentialRequestOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CredentialsContainer" (credential-management-1).
newtype CredentialsContainer = CredentialsContainer { unCredentialsContainer :: JSVal }

instance PToJSVal CredentialsContainer where
  pToJSVal = unCredentialsContainer
  {-# INLINE pToJSVal #-}

instance PFromJSVal CredentialsContainer where
  pFromJSVal = CredentialsContainer
  {-# INLINE pFromJSVal #-}

instance ToJSVal CredentialsContainer where
  toJSVal = return . unCredentialsContainer
  {-# INLINE toJSVal #-}

instance FromJSVal CredentialsContainer where
  fromJSVal v = fmap CredentialsContainer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CredentialsContainer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CredentialsContainer where
  makeObject = makeObject . unCredentialsContainer


instance IsGObject CredentialsContainer where
  typeGType _ = gTypeCredentialsContainer
  {-# INLINE typeGType #-}

noCredentialsContainer :: Maybe CredentialsContainer
noCredentialsContainer = Nothing
{-# INLINE noCredentialsContainer #-}

gTypeCredentialsContainer :: JSM GType
gTypeCredentialsContainer = GType . Object <$> jsg "CredentialsContainer"

-- | Functions for this interface are in "JSDOM.Crypto" (webcrypto-2).
newtype Crypto = Crypto { unCrypto :: JSVal }

instance PToJSVal Crypto where
  pToJSVal = unCrypto
  {-# INLINE pToJSVal #-}

instance PFromJSVal Crypto where
  pFromJSVal = Crypto
  {-# INLINE pFromJSVal #-}

instance ToJSVal Crypto where
  toJSVal = return . unCrypto
  {-# INLINE toJSVal #-}

instance FromJSVal Crypto where
  fromJSVal v = fmap Crypto <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Crypto
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Crypto where
  makeObject = makeObject . unCrypto


instance IsGObject Crypto where
  typeGType _ = gTypeCrypto
  {-# INLINE typeGType #-}

noCrypto :: Maybe Crypto
noCrypto = Nothing
{-# INLINE noCrypto #-}

gTypeCrypto :: JSM GType
gTypeCrypto = GType . Object <$> jsg "Crypto"

-- | Functions for this interface are in "JSDOM.CryptoKey" (webcrypto-2).
newtype CryptoKey = CryptoKey { unCryptoKey :: JSVal }

instance PToJSVal CryptoKey where
  pToJSVal = unCryptoKey
  {-# INLINE pToJSVal #-}

instance PFromJSVal CryptoKey where
  pFromJSVal = CryptoKey
  {-# INLINE pFromJSVal #-}

instance ToJSVal CryptoKey where
  toJSVal = return . unCryptoKey
  {-# INLINE toJSVal #-}

instance FromJSVal CryptoKey where
  fromJSVal v = fmap CryptoKey <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CryptoKey
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CryptoKey where
  makeObject = makeObject . unCryptoKey


instance IsGObject CryptoKey where
  typeGType _ = gTypeCryptoKey
  {-# INLINE typeGType #-}

noCryptoKey :: Maybe CryptoKey
noCryptoKey = Nothing
{-# INLINE noCryptoKey #-}

gTypeCryptoKey :: JSM GType
gTypeCryptoKey = GType . Object <$> jsg "CryptoKey"

-- | Dictionary CryptoKeyPair (webcrypto-2)
newtype CryptoKeyPair = CryptoKeyPair { unCryptoKeyPair :: JSVal }

instance PToJSVal CryptoKeyPair where
  pToJSVal = unCryptoKeyPair
  {-# INLINE pToJSVal #-}

instance PFromJSVal CryptoKeyPair where
  pFromJSVal = CryptoKeyPair
  {-# INLINE pFromJSVal #-}

instance ToJSVal CryptoKeyPair where
  toJSVal = return . unCryptoKeyPair
  {-# INLINE toJSVal #-}

instance FromJSVal CryptoKeyPair where
  fromJSVal v = fmap CryptoKeyPair <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CryptoKeyPair
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CryptoKeyPair where
  makeObject = makeObject . unCryptoKeyPair


instance IsGObject CryptoKeyPair where
  typeGType _ = gTypeCryptoKeyPair
  {-# INLINE typeGType #-}

noCryptoKeyPair :: Maybe CryptoKeyPair
noCryptoKeyPair = Nothing
{-# INLINE noCryptoKeyPair #-}

gTypeCryptoKeyPair :: JSM GType
gTypeCryptoKeyPair = GType . Object <$> jsg "Object"

-- | Dictionary CurrentUserDetailsOptions (webauthn-4)
newtype CurrentUserDetailsOptions = CurrentUserDetailsOptions { unCurrentUserDetailsOptions :: JSVal }

instance PToJSVal CurrentUserDetailsOptions where
  pToJSVal = unCurrentUserDetailsOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal CurrentUserDetailsOptions where
  pFromJSVal = CurrentUserDetailsOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal CurrentUserDetailsOptions where
  toJSVal = return . unCurrentUserDetailsOptions
  {-# INLINE toJSVal #-}

instance FromJSVal CurrentUserDetailsOptions where
  fromJSVal v = fmap CurrentUserDetailsOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CurrentUserDetailsOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CurrentUserDetailsOptions where
  makeObject = makeObject . unCurrentUserDetailsOptions


instance IsGObject CurrentUserDetailsOptions where
  typeGType _ = gTypeCurrentUserDetailsOptions
  {-# INLINE typeGType #-}

noCurrentUserDetailsOptions :: Maybe CurrentUserDetailsOptions
noCurrentUserDetailsOptions = Nothing
{-# INLINE noCurrentUserDetailsOptions #-}

gTypeCurrentUserDetailsOptions :: JSM GType
gTypeCurrentUserDetailsOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CustomElementRegistry" (html).
newtype CustomElementRegistry = CustomElementRegistry { unCustomElementRegistry :: JSVal }

instance PToJSVal CustomElementRegistry where
  pToJSVal = unCustomElementRegistry
  {-# INLINE pToJSVal #-}

instance PFromJSVal CustomElementRegistry where
  pFromJSVal = CustomElementRegistry
  {-# INLINE pFromJSVal #-}

instance ToJSVal CustomElementRegistry where
  toJSVal = return . unCustomElementRegistry
  {-# INLINE toJSVal #-}

instance FromJSVal CustomElementRegistry where
  fromJSVal v = fmap CustomElementRegistry <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CustomElementRegistry
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CustomElementRegistry where
  makeObject = makeObject . unCustomElementRegistry


instance IsGObject CustomElementRegistry where
  typeGType _ = gTypeCustomElementRegistry
  {-# INLINE typeGType #-}

noCustomElementRegistry :: Maybe CustomElementRegistry
noCustomElementRegistry = Nothing
{-# INLINE noCustomElementRegistry #-}

gTypeCustomElementRegistry :: JSM GType
gTypeCustomElementRegistry = GType . Object <$> jsg "CustomElementRegistry"

-- | Functions for this interface are in "JSDOM.CustomEvent" (dom).
newtype CustomEvent = CustomEvent { unCustomEvent :: JSVal }

instance PToJSVal CustomEvent where
  pToJSVal = unCustomEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal CustomEvent where
  pFromJSVal = CustomEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal CustomEvent where
  toJSVal = return . unCustomEvent
  {-# INLINE toJSVal #-}

instance FromJSVal CustomEvent where
  fromJSVal v = fmap CustomEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CustomEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CustomEvent where
  makeObject = makeObject . unCustomEvent

instance IsEvent CustomEvent

instance IsGObject CustomEvent where
  typeGType _ = gTypeCustomEvent
  {-# INLINE typeGType #-}

noCustomEvent :: Maybe CustomEvent
noCustomEvent = Nothing
{-# INLINE noCustomEvent #-}

gTypeCustomEvent :: JSM GType
gTypeCustomEvent = GType . Object <$> jsg "CustomEvent"

-- | Dictionary CustomEventInit (dom)
newtype CustomEventInit = CustomEventInit { unCustomEventInit :: JSVal }

instance PToJSVal CustomEventInit where
  pToJSVal = unCustomEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal CustomEventInit where
  pFromJSVal = CustomEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal CustomEventInit where
  toJSVal = return . unCustomEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal CustomEventInit where
  fromJSVal v = fmap CustomEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CustomEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CustomEventInit where
  makeObject = makeObject . unCustomEventInit

instance IsEventInit CustomEventInit

instance IsGObject CustomEventInit where
  typeGType _ = gTypeCustomEventInit
  {-# INLINE typeGType #-}

noCustomEventInit :: Maybe CustomEventInit
noCustomEventInit = Nothing
{-# INLINE noCustomEventInit #-}

gTypeCustomEventInit :: JSM GType
gTypeCustomEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.CustomStateSet" (html).
newtype CustomStateSet = CustomStateSet { unCustomStateSet :: JSVal }

instance PToJSVal CustomStateSet where
  pToJSVal = unCustomStateSet
  {-# INLINE pToJSVal #-}

instance PFromJSVal CustomStateSet where
  pFromJSVal = CustomStateSet
  {-# INLINE pFromJSVal #-}

instance ToJSVal CustomStateSet where
  toJSVal = return . unCustomStateSet
  {-# INLINE toJSVal #-}

instance FromJSVal CustomStateSet where
  fromJSVal v = fmap CustomStateSet <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . CustomStateSet
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject CustomStateSet where
  makeObject = makeObject . unCustomStateSet


instance IsGObject CustomStateSet where
  typeGType _ = gTypeCustomStateSet
  {-# INLINE typeGType #-}

noCustomStateSet :: Maybe CustomStateSet
noCustomStateSet = Nothing
{-# INLINE noCustomStateSet #-}

gTypeCustomStateSet :: JSM GType
gTypeCustomStateSet = GType . Object <$> jsg "CustomStateSet"

-- | Functions for this interface are in "JSDOM.DOMException" (webidl).
newtype DOMException = DOMException { unDOMException :: JSVal }

instance PToJSVal DOMException where
  pToJSVal = unDOMException
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMException where
  pFromJSVal = DOMException
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMException where
  toJSVal = return . unDOMException
  {-# INLINE toJSVal #-}

instance FromJSVal DOMException where
  fromJSVal v = fmap DOMException <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMException
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMException where
  makeObject = makeObject . unDOMException

class (IsGObject o) => IsDOMException o
toDOMException :: IsDOMException o => o -> DOMException
toDOMException = DOMException . coerce

instance IsDOMException DOMException

instance IsGObject DOMException where
  typeGType _ = gTypeDOMException
  {-# INLINE typeGType #-}

noDOMException :: Maybe DOMException
noDOMException = Nothing
{-# INLINE noDOMException #-}

gTypeDOMException :: JSM GType
gTypeDOMException = GType . Object <$> jsg "DOMException"

-- | Functions for this interface are in "JSDOM.DOMImplementation" (dom).
newtype DOMImplementation = DOMImplementation { unDOMImplementation :: JSVal }

instance PToJSVal DOMImplementation where
  pToJSVal = unDOMImplementation
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMImplementation where
  pFromJSVal = DOMImplementation
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMImplementation where
  toJSVal = return . unDOMImplementation
  {-# INLINE toJSVal #-}

instance FromJSVal DOMImplementation where
  fromJSVal v = fmap DOMImplementation <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMImplementation
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMImplementation where
  makeObject = makeObject . unDOMImplementation


instance IsGObject DOMImplementation where
  typeGType _ = gTypeDOMImplementation
  {-# INLINE typeGType #-}

noDOMImplementation :: Maybe DOMImplementation
noDOMImplementation = Nothing
{-# INLINE noDOMImplementation #-}

gTypeDOMImplementation :: JSM GType
gTypeDOMImplementation = GType . Object <$> jsg "DOMImplementation"

-- | Functions for this interface are in "JSDOM.DOMMatrix" (geometry-1).
newtype DOMMatrix = DOMMatrix { unDOMMatrix :: JSVal }

instance PToJSVal DOMMatrix where
  pToJSVal = unDOMMatrix
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMMatrix where
  pFromJSVal = DOMMatrix
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMMatrix where
  toJSVal = return . unDOMMatrix
  {-# INLINE toJSVal #-}

instance FromJSVal DOMMatrix where
  fromJSVal v = fmap DOMMatrix <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMMatrix
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMMatrix where
  makeObject = makeObject . unDOMMatrix

instance IsDOMMatrixReadOnly DOMMatrix

instance IsGObject DOMMatrix where
  typeGType _ = gTypeDOMMatrix
  {-# INLINE typeGType #-}

noDOMMatrix :: Maybe DOMMatrix
noDOMMatrix = Nothing
{-# INLINE noDOMMatrix #-}

gTypeDOMMatrix :: JSM GType
gTypeDOMMatrix = GType . Object <$> jsg "DOMMatrix"

-- | Dictionary DOMMatrix2DInit (geometry-1)
newtype DOMMatrix2DInit = DOMMatrix2DInit { unDOMMatrix2DInit :: JSVal }

instance PToJSVal DOMMatrix2DInit where
  pToJSVal = unDOMMatrix2DInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMMatrix2DInit where
  pFromJSVal = DOMMatrix2DInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMMatrix2DInit where
  toJSVal = return . unDOMMatrix2DInit
  {-# INLINE toJSVal #-}

instance FromJSVal DOMMatrix2DInit where
  fromJSVal v = fmap DOMMatrix2DInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMMatrix2DInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMMatrix2DInit where
  makeObject = makeObject . unDOMMatrix2DInit

class (IsGObject o) => IsDOMMatrix2DInit o
toDOMMatrix2DInit :: IsDOMMatrix2DInit o => o -> DOMMatrix2DInit
toDOMMatrix2DInit = DOMMatrix2DInit . coerce

instance IsDOMMatrix2DInit DOMMatrix2DInit

instance IsGObject DOMMatrix2DInit where
  typeGType _ = gTypeDOMMatrix2DInit
  {-# INLINE typeGType #-}

noDOMMatrix2DInit :: Maybe DOMMatrix2DInit
noDOMMatrix2DInit = Nothing
{-# INLINE noDOMMatrix2DInit #-}

gTypeDOMMatrix2DInit :: JSM GType
gTypeDOMMatrix2DInit = GType . Object <$> jsg "Object"

-- | Dictionary DOMMatrixInit (geometry-1)
newtype DOMMatrixInit = DOMMatrixInit { unDOMMatrixInit :: JSVal }

instance PToJSVal DOMMatrixInit where
  pToJSVal = unDOMMatrixInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMMatrixInit where
  pFromJSVal = DOMMatrixInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMMatrixInit where
  toJSVal = return . unDOMMatrixInit
  {-# INLINE toJSVal #-}

instance FromJSVal DOMMatrixInit where
  fromJSVal v = fmap DOMMatrixInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMMatrixInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMMatrixInit where
  makeObject = makeObject . unDOMMatrixInit

instance IsDOMMatrix2DInit DOMMatrixInit

instance IsGObject DOMMatrixInit where
  typeGType _ = gTypeDOMMatrixInit
  {-# INLINE typeGType #-}

noDOMMatrixInit :: Maybe DOMMatrixInit
noDOMMatrixInit = Nothing
{-# INLINE noDOMMatrixInit #-}

gTypeDOMMatrixInit :: JSM GType
gTypeDOMMatrixInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.DOMMatrixReadOnly" (geometry-1).
newtype DOMMatrixReadOnly = DOMMatrixReadOnly { unDOMMatrixReadOnly :: JSVal }

instance PToJSVal DOMMatrixReadOnly where
  pToJSVal = unDOMMatrixReadOnly
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMMatrixReadOnly where
  pFromJSVal = DOMMatrixReadOnly
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMMatrixReadOnly where
  toJSVal = return . unDOMMatrixReadOnly
  {-# INLINE toJSVal #-}

instance FromJSVal DOMMatrixReadOnly where
  fromJSVal v = fmap DOMMatrixReadOnly <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMMatrixReadOnly
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMMatrixReadOnly where
  makeObject = makeObject . unDOMMatrixReadOnly

class (IsGObject o) => IsDOMMatrixReadOnly o
toDOMMatrixReadOnly :: IsDOMMatrixReadOnly o => o -> DOMMatrixReadOnly
toDOMMatrixReadOnly = DOMMatrixReadOnly . coerce

instance IsDOMMatrixReadOnly DOMMatrixReadOnly

instance IsGObject DOMMatrixReadOnly where
  typeGType _ = gTypeDOMMatrixReadOnly
  {-# INLINE typeGType #-}

noDOMMatrixReadOnly :: Maybe DOMMatrixReadOnly
noDOMMatrixReadOnly = Nothing
{-# INLINE noDOMMatrixReadOnly #-}

gTypeDOMMatrixReadOnly :: JSM GType
gTypeDOMMatrixReadOnly = GType . Object <$> jsg "DOMMatrixReadOnly"

-- | Functions for this interface are in "JSDOM.DOMParser" (html).
newtype DOMParser = DOMParser { unDOMParser :: JSVal }

instance PToJSVal DOMParser where
  pToJSVal = unDOMParser
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMParser where
  pFromJSVal = DOMParser
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMParser where
  toJSVal = return . unDOMParser
  {-# INLINE toJSVal #-}

instance FromJSVal DOMParser where
  fromJSVal v = fmap DOMParser <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMParser
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMParser where
  makeObject = makeObject . unDOMParser


instance IsGObject DOMParser where
  typeGType _ = gTypeDOMParser
  {-# INLINE typeGType #-}

noDOMParser :: Maybe DOMParser
noDOMParser = Nothing
{-# INLINE noDOMParser #-}

gTypeDOMParser :: JSM GType
gTypeDOMParser = GType . Object <$> jsg "DOMParser"

-- | Functions for this interface are in "JSDOM.DOMPoint" (geometry-1).
newtype DOMPoint = DOMPoint { unDOMPoint :: JSVal }

instance PToJSVal DOMPoint where
  pToJSVal = unDOMPoint
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMPoint where
  pFromJSVal = DOMPoint
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMPoint where
  toJSVal = return . unDOMPoint
  {-# INLINE toJSVal #-}

instance FromJSVal DOMPoint where
  fromJSVal v = fmap DOMPoint <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMPoint
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMPoint where
  makeObject = makeObject . unDOMPoint

instance IsDOMPointReadOnly DOMPoint

instance IsGObject DOMPoint where
  typeGType _ = gTypeDOMPoint
  {-# INLINE typeGType #-}

noDOMPoint :: Maybe DOMPoint
noDOMPoint = Nothing
{-# INLINE noDOMPoint #-}

gTypeDOMPoint :: JSM GType
gTypeDOMPoint = GType . Object <$> jsg "DOMPoint"

-- | Dictionary DOMPointInit (geometry-1)
newtype DOMPointInit = DOMPointInit { unDOMPointInit :: JSVal }

instance PToJSVal DOMPointInit where
  pToJSVal = unDOMPointInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMPointInit where
  pFromJSVal = DOMPointInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMPointInit where
  toJSVal = return . unDOMPointInit
  {-# INLINE toJSVal #-}

instance FromJSVal DOMPointInit where
  fromJSVal v = fmap DOMPointInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMPointInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMPointInit where
  makeObject = makeObject . unDOMPointInit


instance IsGObject DOMPointInit where
  typeGType _ = gTypeDOMPointInit
  {-# INLINE typeGType #-}

noDOMPointInit :: Maybe DOMPointInit
noDOMPointInit = Nothing
{-# INLINE noDOMPointInit #-}

gTypeDOMPointInit :: JSM GType
gTypeDOMPointInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.DOMPointReadOnly" (geometry-1).
newtype DOMPointReadOnly = DOMPointReadOnly { unDOMPointReadOnly :: JSVal }

instance PToJSVal DOMPointReadOnly where
  pToJSVal = unDOMPointReadOnly
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMPointReadOnly where
  pFromJSVal = DOMPointReadOnly
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMPointReadOnly where
  toJSVal = return . unDOMPointReadOnly
  {-# INLINE toJSVal #-}

instance FromJSVal DOMPointReadOnly where
  fromJSVal v = fmap DOMPointReadOnly <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMPointReadOnly
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMPointReadOnly where
  makeObject = makeObject . unDOMPointReadOnly

class (IsGObject o) => IsDOMPointReadOnly o
toDOMPointReadOnly :: IsDOMPointReadOnly o => o -> DOMPointReadOnly
toDOMPointReadOnly = DOMPointReadOnly . coerce

instance IsDOMPointReadOnly DOMPointReadOnly

instance IsGObject DOMPointReadOnly where
  typeGType _ = gTypeDOMPointReadOnly
  {-# INLINE typeGType #-}

noDOMPointReadOnly :: Maybe DOMPointReadOnly
noDOMPointReadOnly = Nothing
{-# INLINE noDOMPointReadOnly #-}

gTypeDOMPointReadOnly :: JSM GType
gTypeDOMPointReadOnly = GType . Object <$> jsg "DOMPointReadOnly"

-- | Functions for this interface are in "JSDOM.DOMQuad" (geometry-1).
newtype DOMQuad = DOMQuad { unDOMQuad :: JSVal }

instance PToJSVal DOMQuad where
  pToJSVal = unDOMQuad
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMQuad where
  pFromJSVal = DOMQuad
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMQuad where
  toJSVal = return . unDOMQuad
  {-# INLINE toJSVal #-}

instance FromJSVal DOMQuad where
  fromJSVal v = fmap DOMQuad <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMQuad
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMQuad where
  makeObject = makeObject . unDOMQuad


instance IsGObject DOMQuad where
  typeGType _ = gTypeDOMQuad
  {-# INLINE typeGType #-}

noDOMQuad :: Maybe DOMQuad
noDOMQuad = Nothing
{-# INLINE noDOMQuad #-}

gTypeDOMQuad :: JSM GType
gTypeDOMQuad = GType . Object <$> jsg "DOMQuad"

-- | Dictionary DOMQuadInit (geometry-1)
newtype DOMQuadInit = DOMQuadInit { unDOMQuadInit :: JSVal }

instance PToJSVal DOMQuadInit where
  pToJSVal = unDOMQuadInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMQuadInit where
  pFromJSVal = DOMQuadInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMQuadInit where
  toJSVal = return . unDOMQuadInit
  {-# INLINE toJSVal #-}

instance FromJSVal DOMQuadInit where
  fromJSVal v = fmap DOMQuadInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMQuadInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMQuadInit where
  makeObject = makeObject . unDOMQuadInit


instance IsGObject DOMQuadInit where
  typeGType _ = gTypeDOMQuadInit
  {-# INLINE typeGType #-}

noDOMQuadInit :: Maybe DOMQuadInit
noDOMQuadInit = Nothing
{-# INLINE noDOMQuadInit #-}

gTypeDOMQuadInit :: JSM GType
gTypeDOMQuadInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.DOMRect" (geometry-1).
newtype DOMRect = DOMRect { unDOMRect :: JSVal }

instance PToJSVal DOMRect where
  pToJSVal = unDOMRect
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMRect where
  pFromJSVal = DOMRect
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMRect where
  toJSVal = return . unDOMRect
  {-# INLINE toJSVal #-}

instance FromJSVal DOMRect where
  fromJSVal v = fmap DOMRect <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMRect
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMRect where
  makeObject = makeObject . unDOMRect

instance IsDOMRectReadOnly DOMRect

instance IsGObject DOMRect where
  typeGType _ = gTypeDOMRect
  {-# INLINE typeGType #-}

noDOMRect :: Maybe DOMRect
noDOMRect = Nothing
{-# INLINE noDOMRect #-}

gTypeDOMRect :: JSM GType
gTypeDOMRect = GType . Object <$> jsg "DOMRect"

-- | Dictionary DOMRectInit (geometry-1)
newtype DOMRectInit = DOMRectInit { unDOMRectInit :: JSVal }

instance PToJSVal DOMRectInit where
  pToJSVal = unDOMRectInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMRectInit where
  pFromJSVal = DOMRectInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMRectInit where
  toJSVal = return . unDOMRectInit
  {-# INLINE toJSVal #-}

instance FromJSVal DOMRectInit where
  fromJSVal v = fmap DOMRectInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMRectInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMRectInit where
  makeObject = makeObject . unDOMRectInit


instance IsGObject DOMRectInit where
  typeGType _ = gTypeDOMRectInit
  {-# INLINE typeGType #-}

noDOMRectInit :: Maybe DOMRectInit
noDOMRectInit = Nothing
{-# INLINE noDOMRectInit #-}

gTypeDOMRectInit :: JSM GType
gTypeDOMRectInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.DOMRectList" (geometry-1).
newtype DOMRectList = DOMRectList { unDOMRectList :: JSVal }

instance PToJSVal DOMRectList where
  pToJSVal = unDOMRectList
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMRectList where
  pFromJSVal = DOMRectList
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMRectList where
  toJSVal = return . unDOMRectList
  {-# INLINE toJSVal #-}

instance FromJSVal DOMRectList where
  fromJSVal v = fmap DOMRectList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMRectList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMRectList where
  makeObject = makeObject . unDOMRectList


instance IsGObject DOMRectList where
  typeGType _ = gTypeDOMRectList
  {-# INLINE typeGType #-}

noDOMRectList :: Maybe DOMRectList
noDOMRectList = Nothing
{-# INLINE noDOMRectList #-}

gTypeDOMRectList :: JSM GType
gTypeDOMRectList = GType . Object <$> jsg "DOMRectList"

-- | Functions for this interface are in "JSDOM.DOMRectReadOnly" (geometry-1).
newtype DOMRectReadOnly = DOMRectReadOnly { unDOMRectReadOnly :: JSVal }

instance PToJSVal DOMRectReadOnly where
  pToJSVal = unDOMRectReadOnly
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMRectReadOnly where
  pFromJSVal = DOMRectReadOnly
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMRectReadOnly where
  toJSVal = return . unDOMRectReadOnly
  {-# INLINE toJSVal #-}

instance FromJSVal DOMRectReadOnly where
  fromJSVal v = fmap DOMRectReadOnly <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMRectReadOnly
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMRectReadOnly where
  makeObject = makeObject . unDOMRectReadOnly

class (IsGObject o) => IsDOMRectReadOnly o
toDOMRectReadOnly :: IsDOMRectReadOnly o => o -> DOMRectReadOnly
toDOMRectReadOnly = DOMRectReadOnly . coerce

instance IsDOMRectReadOnly DOMRectReadOnly

instance IsGObject DOMRectReadOnly where
  typeGType _ = gTypeDOMRectReadOnly
  {-# INLINE typeGType #-}

noDOMRectReadOnly :: Maybe DOMRectReadOnly
noDOMRectReadOnly = Nothing
{-# INLINE noDOMRectReadOnly #-}

gTypeDOMRectReadOnly :: JSM GType
gTypeDOMRectReadOnly = GType . Object <$> jsg "DOMRectReadOnly"

-- | Functions for this interface are in "JSDOM.DOMStringList" (html).
newtype DOMStringList = DOMStringList { unDOMStringList :: JSVal }

instance PToJSVal DOMStringList where
  pToJSVal = unDOMStringList
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMStringList where
  pFromJSVal = DOMStringList
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMStringList where
  toJSVal = return . unDOMStringList
  {-# INLINE toJSVal #-}

instance FromJSVal DOMStringList where
  fromJSVal v = fmap DOMStringList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMStringList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMStringList where
  makeObject = makeObject . unDOMStringList


instance IsGObject DOMStringList where
  typeGType _ = gTypeDOMStringList
  {-# INLINE typeGType #-}

noDOMStringList :: Maybe DOMStringList
noDOMStringList = Nothing
{-# INLINE noDOMStringList #-}

gTypeDOMStringList :: JSM GType
gTypeDOMStringList = GType . Object <$> jsg "DOMStringList"

-- | Functions for this interface are in "JSDOM.DOMStringMap" (html).
newtype DOMStringMap = DOMStringMap { unDOMStringMap :: JSVal }

instance PToJSVal DOMStringMap where
  pToJSVal = unDOMStringMap
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMStringMap where
  pFromJSVal = DOMStringMap
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMStringMap where
  toJSVal = return . unDOMStringMap
  {-# INLINE toJSVal #-}

instance FromJSVal DOMStringMap where
  fromJSVal v = fmap DOMStringMap <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMStringMap
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMStringMap where
  makeObject = makeObject . unDOMStringMap


instance IsGObject DOMStringMap where
  typeGType _ = gTypeDOMStringMap
  {-# INLINE typeGType #-}

noDOMStringMap :: Maybe DOMStringMap
noDOMStringMap = Nothing
{-# INLINE noDOMStringMap #-}

gTypeDOMStringMap :: JSM GType
gTypeDOMStringMap = GType . Object <$> jsg "DOMStringMap"

-- | Functions for this interface are in "JSDOM.DOMTokenList" (dom).
newtype DOMTokenList = DOMTokenList { unDOMTokenList :: JSVal }

instance PToJSVal DOMTokenList where
  pToJSVal = unDOMTokenList
  {-# INLINE pToJSVal #-}

instance PFromJSVal DOMTokenList where
  pFromJSVal = DOMTokenList
  {-# INLINE pFromJSVal #-}

instance ToJSVal DOMTokenList where
  toJSVal = return . unDOMTokenList
  {-# INLINE toJSVal #-}

instance FromJSVal DOMTokenList where
  fromJSVal v = fmap DOMTokenList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DOMTokenList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DOMTokenList where
  makeObject = makeObject . unDOMTokenList


instance IsGObject DOMTokenList where
  typeGType _ = gTypeDOMTokenList
  {-# INLINE typeGType #-}

noDOMTokenList :: Maybe DOMTokenList
noDOMTokenList = Nothing
{-# INLINE noDOMTokenList #-}

gTypeDOMTokenList :: JSM GType
gTypeDOMTokenList = GType . Object <$> jsg "DOMTokenList"

-- | Functions for this interface are in "JSDOM.DataCue" (datacue).
newtype DataCue = DataCue { unDataCue :: JSVal }

instance PToJSVal DataCue where
  pToJSVal = unDataCue
  {-# INLINE pToJSVal #-}

instance PFromJSVal DataCue where
  pFromJSVal = DataCue
  {-# INLINE pFromJSVal #-}

instance ToJSVal DataCue where
  toJSVal = return . unDataCue
  {-# INLINE toJSVal #-}

instance FromJSVal DataCue where
  fromJSVal v = fmap DataCue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DataCue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DataCue where
  makeObject = makeObject . unDataCue

instance IsTextTrackCue DataCue
instance IsEventTarget DataCue

instance IsGObject DataCue where
  typeGType _ = gTypeDataCue
  {-# INLINE typeGType #-}

noDataCue :: Maybe DataCue
noDataCue = Nothing
{-# INLINE noDataCue #-}

gTypeDataCue :: JSM GType
gTypeDataCue = GType . Object <$> jsg "DataCue"

-- | Functions for this interface are in "JSDOM.DataTransfer" (html).
newtype DataTransfer = DataTransfer { unDataTransfer :: JSVal }

instance PToJSVal DataTransfer where
  pToJSVal = unDataTransfer
  {-# INLINE pToJSVal #-}

instance PFromJSVal DataTransfer where
  pFromJSVal = DataTransfer
  {-# INLINE pFromJSVal #-}

instance ToJSVal DataTransfer where
  toJSVal = return . unDataTransfer
  {-# INLINE toJSVal #-}

instance FromJSVal DataTransfer where
  fromJSVal v = fmap DataTransfer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DataTransfer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DataTransfer where
  makeObject = makeObject . unDataTransfer


instance IsGObject DataTransfer where
  typeGType _ = gTypeDataTransfer
  {-# INLINE typeGType #-}

noDataTransfer :: Maybe DataTransfer
noDataTransfer = Nothing
{-# INLINE noDataTransfer #-}

gTypeDataTransfer :: JSM GType
gTypeDataTransfer = GType . Object <$> jsg "DataTransfer"

-- | Functions for this interface are in "JSDOM.DataTransferItem" (html).
newtype DataTransferItem = DataTransferItem { unDataTransferItem :: JSVal }

instance PToJSVal DataTransferItem where
  pToJSVal = unDataTransferItem
  {-# INLINE pToJSVal #-}

instance PFromJSVal DataTransferItem where
  pFromJSVal = DataTransferItem
  {-# INLINE pFromJSVal #-}

instance ToJSVal DataTransferItem where
  toJSVal = return . unDataTransferItem
  {-# INLINE toJSVal #-}

instance FromJSVal DataTransferItem where
  fromJSVal v = fmap DataTransferItem <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DataTransferItem
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DataTransferItem where
  makeObject = makeObject . unDataTransferItem


instance IsGObject DataTransferItem where
  typeGType _ = gTypeDataTransferItem
  {-# INLINE typeGType #-}

noDataTransferItem :: Maybe DataTransferItem
noDataTransferItem = Nothing
{-# INLINE noDataTransferItem #-}

gTypeDataTransferItem :: JSM GType
gTypeDataTransferItem = GType . Object <$> jsg "DataTransferItem"

-- | Functions for this interface are in "JSDOM.DataTransferItemList" (html).
newtype DataTransferItemList = DataTransferItemList { unDataTransferItemList :: JSVal }

instance PToJSVal DataTransferItemList where
  pToJSVal = unDataTransferItemList
  {-# INLINE pToJSVal #-}

instance PFromJSVal DataTransferItemList where
  pFromJSVal = DataTransferItemList
  {-# INLINE pFromJSVal #-}

instance ToJSVal DataTransferItemList where
  toJSVal = return . unDataTransferItemList
  {-# INLINE toJSVal #-}

instance FromJSVal DataTransferItemList where
  fromJSVal v = fmap DataTransferItemList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DataTransferItemList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DataTransferItemList where
  makeObject = makeObject . unDataTransferItemList


instance IsGObject DataTransferItemList where
  typeGType _ = gTypeDataTransferItemList
  {-# INLINE typeGType #-}

noDataTransferItemList :: Maybe DataTransferItemList
noDataTransferItemList = Nothing
{-# INLINE noDataTransferItemList #-}

gTypeDataTransferItemList :: JSM GType
gTypeDataTransferItemList = GType . Object <$> jsg "DataTransferItemList"

newtype DataView = DataView { unDataView :: JSVal }

instance PToJSVal DataView where
  pToJSVal = unDataView
  {-# INLINE pToJSVal #-}

instance PFromJSVal DataView where
  pFromJSVal = DataView
  {-# INLINE pFromJSVal #-}

instance ToJSVal DataView where
  toJSVal = return . unDataView
  {-# INLINE toJSVal #-}

instance FromJSVal DataView where
  fromJSVal v = fmap DataView <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DataView
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DataView where
  makeObject = makeObject . unDataView

instance IsArrayBufferView DataView

instance IsGObject DataView where
  typeGType _ = gTypeDataView
  {-# INLINE typeGType #-}

noDataView :: Maybe DataView
noDataView = Nothing
{-# INLINE noDataView #-}

gTypeDataView :: JSM GType
gTypeDataView = GType . Object <$> jsg "DataView"

-- | Functions for this interface are in "JSDOM.DecompressionStream" (compression).
newtype DecompressionStream = DecompressionStream { unDecompressionStream :: JSVal }

instance PToJSVal DecompressionStream where
  pToJSVal = unDecompressionStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal DecompressionStream where
  pFromJSVal = DecompressionStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal DecompressionStream where
  toJSVal = return . unDecompressionStream
  {-# INLINE toJSVal #-}

instance FromJSVal DecompressionStream where
  fromJSVal v = fmap DecompressionStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DecompressionStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DecompressionStream where
  makeObject = makeObject . unDecompressionStream

instance IsGenericTransformStream DecompressionStream

instance IsGObject DecompressionStream where
  typeGType _ = gTypeDecompressionStream
  {-# INLINE typeGType #-}

noDecompressionStream :: Maybe DecompressionStream
noDecompressionStream = Nothing
{-# INLINE noDecompressionStream #-}

gTypeDecompressionStream :: JSM GType
gTypeDecompressionStream = GType . Object <$> jsg "DecompressionStream"

-- | Functions for this interface are in "JSDOM.DedicatedWorkerGlobalScope" (html).
newtype DedicatedWorkerGlobalScope = DedicatedWorkerGlobalScope { unDedicatedWorkerGlobalScope :: JSVal }

instance PToJSVal DedicatedWorkerGlobalScope where
  pToJSVal = unDedicatedWorkerGlobalScope
  {-# INLINE pToJSVal #-}

instance PFromJSVal DedicatedWorkerGlobalScope where
  pFromJSVal = DedicatedWorkerGlobalScope
  {-# INLINE pFromJSVal #-}

instance ToJSVal DedicatedWorkerGlobalScope where
  toJSVal = return . unDedicatedWorkerGlobalScope
  {-# INLINE toJSVal #-}

instance FromJSVal DedicatedWorkerGlobalScope where
  fromJSVal v = fmap DedicatedWorkerGlobalScope <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DedicatedWorkerGlobalScope
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DedicatedWorkerGlobalScope where
  makeObject = makeObject . unDedicatedWorkerGlobalScope

instance IsAnimationFrameProvider DedicatedWorkerGlobalScope
instance IsMessageEventTarget DedicatedWorkerGlobalScope
instance IsWorkerGlobalScope DedicatedWorkerGlobalScope
instance IsFontFaceSource DedicatedWorkerGlobalScope
instance IsWindowOrWorkerGlobalScope DedicatedWorkerGlobalScope
instance IsEventTarget DedicatedWorkerGlobalScope

instance IsGObject DedicatedWorkerGlobalScope where
  typeGType _ = gTypeDedicatedWorkerGlobalScope
  {-# INLINE typeGType #-}

noDedicatedWorkerGlobalScope :: Maybe DedicatedWorkerGlobalScope
noDedicatedWorkerGlobalScope = Nothing
{-# INLINE noDedicatedWorkerGlobalScope #-}

gTypeDedicatedWorkerGlobalScope :: JSM GType
gTypeDedicatedWorkerGlobalScope = GType . Object <$> jsg "DedicatedWorkerGlobalScope"

-- | Functions for this interface are in "JSDOM.DelayNode" (webaudio-1.1).
newtype DelayNode = DelayNode { unDelayNode :: JSVal }

instance PToJSVal DelayNode where
  pToJSVal = unDelayNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal DelayNode where
  pFromJSVal = DelayNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal DelayNode where
  toJSVal = return . unDelayNode
  {-# INLINE toJSVal #-}

instance FromJSVal DelayNode where
  fromJSVal v = fmap DelayNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DelayNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DelayNode where
  makeObject = makeObject . unDelayNode

instance IsAudioNode DelayNode
instance IsEventTarget DelayNode

instance IsGObject DelayNode where
  typeGType _ = gTypeDelayNode
  {-# INLINE typeGType #-}

noDelayNode :: Maybe DelayNode
noDelayNode = Nothing
{-# INLINE noDelayNode #-}

gTypeDelayNode :: JSM GType
gTypeDelayNode = GType . Object <$> jsg "DelayNode"

-- | Dictionary DelayOptions (webaudio-1.1)
newtype DelayOptions = DelayOptions { unDelayOptions :: JSVal }

instance PToJSVal DelayOptions where
  pToJSVal = unDelayOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal DelayOptions where
  pFromJSVal = DelayOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal DelayOptions where
  toJSVal = return . unDelayOptions
  {-# INLINE toJSVal #-}

instance FromJSVal DelayOptions where
  fromJSVal v = fmap DelayOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DelayOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DelayOptions where
  makeObject = makeObject . unDelayOptions

instance IsAudioNodeOptions DelayOptions

instance IsGObject DelayOptions where
  typeGType _ = gTypeDelayOptions
  {-# INLINE typeGType #-}

noDelayOptions :: Maybe DelayOptions
noDelayOptions = Nothing
{-# INLINE noDelayOptions #-}

gTypeDelayOptions :: JSM GType
gTypeDelayOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.DeviceChangeEvent" (mediacapture-streams).
newtype DeviceChangeEvent = DeviceChangeEvent { unDeviceChangeEvent :: JSVal }

instance PToJSVal DeviceChangeEvent where
  pToJSVal = unDeviceChangeEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal DeviceChangeEvent where
  pFromJSVal = DeviceChangeEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal DeviceChangeEvent where
  toJSVal = return . unDeviceChangeEvent
  {-# INLINE toJSVal #-}

instance FromJSVal DeviceChangeEvent where
  fromJSVal v = fmap DeviceChangeEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DeviceChangeEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DeviceChangeEvent where
  makeObject = makeObject . unDeviceChangeEvent

instance IsEvent DeviceChangeEvent

instance IsGObject DeviceChangeEvent where
  typeGType _ = gTypeDeviceChangeEvent
  {-# INLINE typeGType #-}

noDeviceChangeEvent :: Maybe DeviceChangeEvent
noDeviceChangeEvent = Nothing
{-# INLINE noDeviceChangeEvent #-}

gTypeDeviceChangeEvent :: JSM GType
gTypeDeviceChangeEvent = GType . Object <$> jsg "DeviceChangeEvent"

-- | Functions for this interface are in "JSDOM.DeviceMotionEvent" (orientation-event).
newtype DeviceMotionEvent = DeviceMotionEvent { unDeviceMotionEvent :: JSVal }

instance PToJSVal DeviceMotionEvent where
  pToJSVal = unDeviceMotionEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal DeviceMotionEvent where
  pFromJSVal = DeviceMotionEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal DeviceMotionEvent where
  toJSVal = return . unDeviceMotionEvent
  {-# INLINE toJSVal #-}

instance FromJSVal DeviceMotionEvent where
  fromJSVal v = fmap DeviceMotionEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DeviceMotionEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DeviceMotionEvent where
  makeObject = makeObject . unDeviceMotionEvent

instance IsEvent DeviceMotionEvent

instance IsGObject DeviceMotionEvent where
  typeGType _ = gTypeDeviceMotionEvent
  {-# INLINE typeGType #-}

noDeviceMotionEvent :: Maybe DeviceMotionEvent
noDeviceMotionEvent = Nothing
{-# INLINE noDeviceMotionEvent #-}

gTypeDeviceMotionEvent :: JSM GType
gTypeDeviceMotionEvent = GType . Object <$> jsg "DeviceMotionEvent"

-- | Functions for this interface are in "JSDOM.DeviceMotionEventAcceleration" (orientation-event).
newtype DeviceMotionEventAcceleration = DeviceMotionEventAcceleration { unDeviceMotionEventAcceleration :: JSVal }

instance PToJSVal DeviceMotionEventAcceleration where
  pToJSVal = unDeviceMotionEventAcceleration
  {-# INLINE pToJSVal #-}

instance PFromJSVal DeviceMotionEventAcceleration where
  pFromJSVal = DeviceMotionEventAcceleration
  {-# INLINE pFromJSVal #-}

instance ToJSVal DeviceMotionEventAcceleration where
  toJSVal = return . unDeviceMotionEventAcceleration
  {-# INLINE toJSVal #-}

instance FromJSVal DeviceMotionEventAcceleration where
  fromJSVal v = fmap DeviceMotionEventAcceleration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DeviceMotionEventAcceleration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DeviceMotionEventAcceleration where
  makeObject = makeObject . unDeviceMotionEventAcceleration


instance IsGObject DeviceMotionEventAcceleration where
  typeGType _ = gTypeDeviceMotionEventAcceleration
  {-# INLINE typeGType #-}

noDeviceMotionEventAcceleration :: Maybe DeviceMotionEventAcceleration
noDeviceMotionEventAcceleration = Nothing
{-# INLINE noDeviceMotionEventAcceleration #-}

gTypeDeviceMotionEventAcceleration :: JSM GType
gTypeDeviceMotionEventAcceleration = GType . Object <$> jsg "DeviceMotionEventAcceleration"

-- | Dictionary DeviceMotionEventAccelerationInit (orientation-event)
newtype DeviceMotionEventAccelerationInit = DeviceMotionEventAccelerationInit { unDeviceMotionEventAccelerationInit :: JSVal }

instance PToJSVal DeviceMotionEventAccelerationInit where
  pToJSVal = unDeviceMotionEventAccelerationInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DeviceMotionEventAccelerationInit where
  pFromJSVal = DeviceMotionEventAccelerationInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DeviceMotionEventAccelerationInit where
  toJSVal = return . unDeviceMotionEventAccelerationInit
  {-# INLINE toJSVal #-}

instance FromJSVal DeviceMotionEventAccelerationInit where
  fromJSVal v = fmap DeviceMotionEventAccelerationInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DeviceMotionEventAccelerationInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DeviceMotionEventAccelerationInit where
  makeObject = makeObject . unDeviceMotionEventAccelerationInit


instance IsGObject DeviceMotionEventAccelerationInit where
  typeGType _ = gTypeDeviceMotionEventAccelerationInit
  {-# INLINE typeGType #-}

noDeviceMotionEventAccelerationInit :: Maybe DeviceMotionEventAccelerationInit
noDeviceMotionEventAccelerationInit = Nothing
{-# INLINE noDeviceMotionEventAccelerationInit #-}

gTypeDeviceMotionEventAccelerationInit :: JSM GType
gTypeDeviceMotionEventAccelerationInit = GType . Object <$> jsg "Object"

-- | Dictionary DeviceMotionEventInit (orientation-event)
newtype DeviceMotionEventInit = DeviceMotionEventInit { unDeviceMotionEventInit :: JSVal }

instance PToJSVal DeviceMotionEventInit where
  pToJSVal = unDeviceMotionEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DeviceMotionEventInit where
  pFromJSVal = DeviceMotionEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DeviceMotionEventInit where
  toJSVal = return . unDeviceMotionEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal DeviceMotionEventInit where
  fromJSVal v = fmap DeviceMotionEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DeviceMotionEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DeviceMotionEventInit where
  makeObject = makeObject . unDeviceMotionEventInit

instance IsEventInit DeviceMotionEventInit

instance IsGObject DeviceMotionEventInit where
  typeGType _ = gTypeDeviceMotionEventInit
  {-# INLINE typeGType #-}

noDeviceMotionEventInit :: Maybe DeviceMotionEventInit
noDeviceMotionEventInit = Nothing
{-# INLINE noDeviceMotionEventInit #-}

gTypeDeviceMotionEventInit :: JSM GType
gTypeDeviceMotionEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.DeviceMotionEventRotationRate" (orientation-event).
newtype DeviceMotionEventRotationRate = DeviceMotionEventRotationRate { unDeviceMotionEventRotationRate :: JSVal }

instance PToJSVal DeviceMotionEventRotationRate where
  pToJSVal = unDeviceMotionEventRotationRate
  {-# INLINE pToJSVal #-}

instance PFromJSVal DeviceMotionEventRotationRate where
  pFromJSVal = DeviceMotionEventRotationRate
  {-# INLINE pFromJSVal #-}

instance ToJSVal DeviceMotionEventRotationRate where
  toJSVal = return . unDeviceMotionEventRotationRate
  {-# INLINE toJSVal #-}

instance FromJSVal DeviceMotionEventRotationRate where
  fromJSVal v = fmap DeviceMotionEventRotationRate <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DeviceMotionEventRotationRate
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DeviceMotionEventRotationRate where
  makeObject = makeObject . unDeviceMotionEventRotationRate


instance IsGObject DeviceMotionEventRotationRate where
  typeGType _ = gTypeDeviceMotionEventRotationRate
  {-# INLINE typeGType #-}

noDeviceMotionEventRotationRate :: Maybe DeviceMotionEventRotationRate
noDeviceMotionEventRotationRate = Nothing
{-# INLINE noDeviceMotionEventRotationRate #-}

gTypeDeviceMotionEventRotationRate :: JSM GType
gTypeDeviceMotionEventRotationRate = GType . Object <$> jsg "DeviceMotionEventRotationRate"

-- | Dictionary DeviceMotionEventRotationRateInit (orientation-event)
newtype DeviceMotionEventRotationRateInit = DeviceMotionEventRotationRateInit { unDeviceMotionEventRotationRateInit :: JSVal }

instance PToJSVal DeviceMotionEventRotationRateInit where
  pToJSVal = unDeviceMotionEventRotationRateInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DeviceMotionEventRotationRateInit where
  pFromJSVal = DeviceMotionEventRotationRateInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DeviceMotionEventRotationRateInit where
  toJSVal = return . unDeviceMotionEventRotationRateInit
  {-# INLINE toJSVal #-}

instance FromJSVal DeviceMotionEventRotationRateInit where
  fromJSVal v = fmap DeviceMotionEventRotationRateInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DeviceMotionEventRotationRateInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DeviceMotionEventRotationRateInit where
  makeObject = makeObject . unDeviceMotionEventRotationRateInit


instance IsGObject DeviceMotionEventRotationRateInit where
  typeGType _ = gTypeDeviceMotionEventRotationRateInit
  {-# INLINE typeGType #-}

noDeviceMotionEventRotationRateInit :: Maybe DeviceMotionEventRotationRateInit
noDeviceMotionEventRotationRateInit = Nothing
{-# INLINE noDeviceMotionEventRotationRateInit #-}

gTypeDeviceMotionEventRotationRateInit :: JSM GType
gTypeDeviceMotionEventRotationRateInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.DeviceOrientationEvent" (orientation-event).
newtype DeviceOrientationEvent = DeviceOrientationEvent { unDeviceOrientationEvent :: JSVal }

instance PToJSVal DeviceOrientationEvent where
  pToJSVal = unDeviceOrientationEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal DeviceOrientationEvent where
  pFromJSVal = DeviceOrientationEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal DeviceOrientationEvent where
  toJSVal = return . unDeviceOrientationEvent
  {-# INLINE toJSVal #-}

instance FromJSVal DeviceOrientationEvent where
  fromJSVal v = fmap DeviceOrientationEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DeviceOrientationEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DeviceOrientationEvent where
  makeObject = makeObject . unDeviceOrientationEvent

instance IsEvent DeviceOrientationEvent

instance IsGObject DeviceOrientationEvent where
  typeGType _ = gTypeDeviceOrientationEvent
  {-# INLINE typeGType #-}

noDeviceOrientationEvent :: Maybe DeviceOrientationEvent
noDeviceOrientationEvent = Nothing
{-# INLINE noDeviceOrientationEvent #-}

gTypeDeviceOrientationEvent :: JSM GType
gTypeDeviceOrientationEvent = GType . Object <$> jsg "DeviceOrientationEvent"

-- | Dictionary DeviceOrientationEventInit (orientation-event)
newtype DeviceOrientationEventInit = DeviceOrientationEventInit { unDeviceOrientationEventInit :: JSVal }

instance PToJSVal DeviceOrientationEventInit where
  pToJSVal = unDeviceOrientationEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DeviceOrientationEventInit where
  pFromJSVal = DeviceOrientationEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DeviceOrientationEventInit where
  toJSVal = return . unDeviceOrientationEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal DeviceOrientationEventInit where
  fromJSVal v = fmap DeviceOrientationEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DeviceOrientationEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DeviceOrientationEventInit where
  makeObject = makeObject . unDeviceOrientationEventInit

instance IsEventInit DeviceOrientationEventInit

instance IsGObject DeviceOrientationEventInit where
  typeGType _ = gTypeDeviceOrientationEventInit
  {-# INLINE typeGType #-}

noDeviceOrientationEventInit :: Maybe DeviceOrientationEventInit
noDeviceOrientationEventInit = Nothing
{-# INLINE noDeviceOrientationEventInit #-}

gTypeDeviceOrientationEventInit :: JSM GType
gTypeDeviceOrientationEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.DigitalCredential" (digital-credentials).
newtype DigitalCredential = DigitalCredential { unDigitalCredential :: JSVal }

instance PToJSVal DigitalCredential where
  pToJSVal = unDigitalCredential
  {-# INLINE pToJSVal #-}

instance PFromJSVal DigitalCredential where
  pFromJSVal = DigitalCredential
  {-# INLINE pFromJSVal #-}

instance ToJSVal DigitalCredential where
  toJSVal = return . unDigitalCredential
  {-# INLINE toJSVal #-}

instance FromJSVal DigitalCredential where
  fromJSVal v = fmap DigitalCredential <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DigitalCredential
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DigitalCredential where
  makeObject = makeObject . unDigitalCredential

instance IsCredential DigitalCredential

instance IsGObject DigitalCredential where
  typeGType _ = gTypeDigitalCredential
  {-# INLINE typeGType #-}

noDigitalCredential :: Maybe DigitalCredential
noDigitalCredential = Nothing
{-# INLINE noDigitalCredential #-}

gTypeDigitalCredential :: JSM GType
gTypeDigitalCredential = GType . Object <$> jsg "DigitalCredential"

-- | Dictionary DigitalCredentialCreateRequest (digital-credentials)
newtype DigitalCredentialCreateRequest = DigitalCredentialCreateRequest { unDigitalCredentialCreateRequest :: JSVal }

instance PToJSVal DigitalCredentialCreateRequest where
  pToJSVal = unDigitalCredentialCreateRequest
  {-# INLINE pToJSVal #-}

instance PFromJSVal DigitalCredentialCreateRequest where
  pFromJSVal = DigitalCredentialCreateRequest
  {-# INLINE pFromJSVal #-}

instance ToJSVal DigitalCredentialCreateRequest where
  toJSVal = return . unDigitalCredentialCreateRequest
  {-# INLINE toJSVal #-}

instance FromJSVal DigitalCredentialCreateRequest where
  fromJSVal v = fmap DigitalCredentialCreateRequest <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DigitalCredentialCreateRequest
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DigitalCredentialCreateRequest where
  makeObject = makeObject . unDigitalCredentialCreateRequest


instance IsGObject DigitalCredentialCreateRequest where
  typeGType _ = gTypeDigitalCredentialCreateRequest
  {-# INLINE typeGType #-}

noDigitalCredentialCreateRequest :: Maybe DigitalCredentialCreateRequest
noDigitalCredentialCreateRequest = Nothing
{-# INLINE noDigitalCredentialCreateRequest #-}

gTypeDigitalCredentialCreateRequest :: JSM GType
gTypeDigitalCredentialCreateRequest = GType . Object <$> jsg "Object"

-- | Dictionary DigitalCredentialCreationOptions (digital-credentials)
newtype DigitalCredentialCreationOptions = DigitalCredentialCreationOptions { unDigitalCredentialCreationOptions :: JSVal }

instance PToJSVal DigitalCredentialCreationOptions where
  pToJSVal = unDigitalCredentialCreationOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal DigitalCredentialCreationOptions where
  pFromJSVal = DigitalCredentialCreationOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal DigitalCredentialCreationOptions where
  toJSVal = return . unDigitalCredentialCreationOptions
  {-# INLINE toJSVal #-}

instance FromJSVal DigitalCredentialCreationOptions where
  fromJSVal v = fmap DigitalCredentialCreationOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DigitalCredentialCreationOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DigitalCredentialCreationOptions where
  makeObject = makeObject . unDigitalCredentialCreationOptions


instance IsGObject DigitalCredentialCreationOptions where
  typeGType _ = gTypeDigitalCredentialCreationOptions
  {-# INLINE typeGType #-}

noDigitalCredentialCreationOptions :: Maybe DigitalCredentialCreationOptions
noDigitalCredentialCreationOptions = Nothing
{-# INLINE noDigitalCredentialCreationOptions #-}

gTypeDigitalCredentialCreationOptions :: JSM GType
gTypeDigitalCredentialCreationOptions = GType . Object <$> jsg "Object"

-- | Dictionary DigitalCredentialGetRequest (digital-credentials)
newtype DigitalCredentialGetRequest = DigitalCredentialGetRequest { unDigitalCredentialGetRequest :: JSVal }

instance PToJSVal DigitalCredentialGetRequest where
  pToJSVal = unDigitalCredentialGetRequest
  {-# INLINE pToJSVal #-}

instance PFromJSVal DigitalCredentialGetRequest where
  pFromJSVal = DigitalCredentialGetRequest
  {-# INLINE pFromJSVal #-}

instance ToJSVal DigitalCredentialGetRequest where
  toJSVal = return . unDigitalCredentialGetRequest
  {-# INLINE toJSVal #-}

instance FromJSVal DigitalCredentialGetRequest where
  fromJSVal v = fmap DigitalCredentialGetRequest <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DigitalCredentialGetRequest
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DigitalCredentialGetRequest where
  makeObject = makeObject . unDigitalCredentialGetRequest


instance IsGObject DigitalCredentialGetRequest where
  typeGType _ = gTypeDigitalCredentialGetRequest
  {-# INLINE typeGType #-}

noDigitalCredentialGetRequest :: Maybe DigitalCredentialGetRequest
noDigitalCredentialGetRequest = Nothing
{-# INLINE noDigitalCredentialGetRequest #-}

gTypeDigitalCredentialGetRequest :: JSM GType
gTypeDigitalCredentialGetRequest = GType . Object <$> jsg "Object"

-- | Dictionary DigitalCredentialRequestOptions (digital-credentials)
newtype DigitalCredentialRequestOptions = DigitalCredentialRequestOptions { unDigitalCredentialRequestOptions :: JSVal }

instance PToJSVal DigitalCredentialRequestOptions where
  pToJSVal = unDigitalCredentialRequestOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal DigitalCredentialRequestOptions where
  pFromJSVal = DigitalCredentialRequestOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal DigitalCredentialRequestOptions where
  toJSVal = return . unDigitalCredentialRequestOptions
  {-# INLINE toJSVal #-}

instance FromJSVal DigitalCredentialRequestOptions where
  fromJSVal v = fmap DigitalCredentialRequestOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DigitalCredentialRequestOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DigitalCredentialRequestOptions where
  makeObject = makeObject . unDigitalCredentialRequestOptions


instance IsGObject DigitalCredentialRequestOptions where
  typeGType _ = gTypeDigitalCredentialRequestOptions
  {-# INLINE typeGType #-}

noDigitalCredentialRequestOptions :: Maybe DigitalCredentialRequestOptions
noDigitalCredentialRequestOptions = Nothing
{-# INLINE noDigitalCredentialRequestOptions #-}

gTypeDigitalCredentialRequestOptions :: JSM GType
gTypeDigitalCredentialRequestOptions = GType . Object <$> jsg "Object"

-- | Dictionary DisplayMediaStreamOptions (screen-capture)
newtype DisplayMediaStreamOptions = DisplayMediaStreamOptions { unDisplayMediaStreamOptions :: JSVal }

instance PToJSVal DisplayMediaStreamOptions where
  pToJSVal = unDisplayMediaStreamOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal DisplayMediaStreamOptions where
  pFromJSVal = DisplayMediaStreamOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal DisplayMediaStreamOptions where
  toJSVal = return . unDisplayMediaStreamOptions
  {-# INLINE toJSVal #-}

instance FromJSVal DisplayMediaStreamOptions where
  fromJSVal v = fmap DisplayMediaStreamOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DisplayMediaStreamOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DisplayMediaStreamOptions where
  makeObject = makeObject . unDisplayMediaStreamOptions


instance IsGObject DisplayMediaStreamOptions where
  typeGType _ = gTypeDisplayMediaStreamOptions
  {-# INLINE typeGType #-}

noDisplayMediaStreamOptions :: Maybe DisplayMediaStreamOptions
noDisplayMediaStreamOptions = Nothing
{-# INLINE noDisplayMediaStreamOptions #-}

gTypeDisplayMediaStreamOptions :: JSM GType
gTypeDisplayMediaStreamOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Document" (dom).
newtype Document = Document { unDocument :: JSVal }

instance PToJSVal Document where
  pToJSVal = unDocument
  {-# INLINE pToJSVal #-}

instance PFromJSVal Document where
  pFromJSVal = Document
  {-# INLINE pFromJSVal #-}

instance ToJSVal Document where
  toJSVal = return . unDocument
  {-# INLINE toJSVal #-}

instance FromJSVal Document where
  fromJSVal v = fmap Document <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Document
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Document where
  makeObject = makeObject . unDocument

class (IsNode o, IsARIANotifyMixin o, IsDocumentOrShadowRoot o, IsFontFaceSource o, IsGlobalEventHandlers o, IsNonElementParentNode o, IsParentNode o, IsXPathEvaluatorBase o, IsGObject o) => IsDocument o
toDocument :: IsDocument o => o -> Document
toDocument = Document . coerce

instance IsDocument Document
instance IsARIANotifyMixin Document
instance IsDocumentOrShadowRoot Document
instance IsFontFaceSource Document
instance IsGlobalEventHandlers Document
instance IsNonElementParentNode Document
instance IsParentNode Document
instance IsXPathEvaluatorBase Document
instance IsNode Document
instance IsEventTarget Document

instance IsGObject Document where
  typeGType _ = gTypeDocument
  {-# INLINE typeGType #-}

noDocument :: Maybe Document
noDocument = Nothing
{-# INLINE noDocument #-}

gTypeDocument :: JSM GType
gTypeDocument = GType . Object <$> jsg "Document"

-- | Functions for this interface are in "JSDOM.DocumentFragment" (dom).
newtype DocumentFragment = DocumentFragment { unDocumentFragment :: JSVal }

instance PToJSVal DocumentFragment where
  pToJSVal = unDocumentFragment
  {-# INLINE pToJSVal #-}

instance PFromJSVal DocumentFragment where
  pFromJSVal = DocumentFragment
  {-# INLINE pFromJSVal #-}

instance ToJSVal DocumentFragment where
  toJSVal = return . unDocumentFragment
  {-# INLINE toJSVal #-}

instance FromJSVal DocumentFragment where
  fromJSVal v = fmap DocumentFragment <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DocumentFragment
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DocumentFragment where
  makeObject = makeObject . unDocumentFragment

class (IsNode o, IsNonElementParentNode o, IsParentNode o, IsGObject o) => IsDocumentFragment o
toDocumentFragment :: IsDocumentFragment o => o -> DocumentFragment
toDocumentFragment = DocumentFragment . coerce

instance IsDocumentFragment DocumentFragment
instance IsNonElementParentNode DocumentFragment
instance IsParentNode DocumentFragment
instance IsNode DocumentFragment
instance IsEventTarget DocumentFragment

instance IsGObject DocumentFragment where
  typeGType _ = gTypeDocumentFragment
  {-# INLINE typeGType #-}

noDocumentFragment :: Maybe DocumentFragment
noDocumentFragment = Nothing
{-# INLINE noDocumentFragment #-}

gTypeDocumentFragment :: JSM GType
gTypeDocumentFragment = GType . Object <$> jsg "DocumentFragment"

-- | Functions for this interface are in "JSDOM.DocumentOrShadowRoot" (dom).
newtype DocumentOrShadowRoot = DocumentOrShadowRoot { unDocumentOrShadowRoot :: JSVal }

instance PToJSVal DocumentOrShadowRoot where
  pToJSVal = unDocumentOrShadowRoot
  {-# INLINE pToJSVal #-}

instance PFromJSVal DocumentOrShadowRoot where
  pFromJSVal = DocumentOrShadowRoot
  {-# INLINE pFromJSVal #-}

instance ToJSVal DocumentOrShadowRoot where
  toJSVal = return . unDocumentOrShadowRoot
  {-# INLINE toJSVal #-}

instance FromJSVal DocumentOrShadowRoot where
  fromJSVal v = fmap DocumentOrShadowRoot <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DocumentOrShadowRoot
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DocumentOrShadowRoot where
  makeObject = makeObject . unDocumentOrShadowRoot

class (IsGObject o) => IsDocumentOrShadowRoot o
toDocumentOrShadowRoot :: IsDocumentOrShadowRoot o => o -> DocumentOrShadowRoot
toDocumentOrShadowRoot = DocumentOrShadowRoot . coerce

instance IsDocumentOrShadowRoot DocumentOrShadowRoot

instance IsGObject DocumentOrShadowRoot where
  typeGType _ = gTypeDocumentOrShadowRoot
  {-# INLINE typeGType #-}

noDocumentOrShadowRoot :: Maybe DocumentOrShadowRoot
noDocumentOrShadowRoot = Nothing
{-# INLINE noDocumentOrShadowRoot #-}

gTypeDocumentOrShadowRoot :: JSM GType
gTypeDocumentOrShadowRoot = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.DocumentPictureInPicture" (document-picture-in-picture).
newtype DocumentPictureInPicture = DocumentPictureInPicture { unDocumentPictureInPicture :: JSVal }

instance PToJSVal DocumentPictureInPicture where
  pToJSVal = unDocumentPictureInPicture
  {-# INLINE pToJSVal #-}

instance PFromJSVal DocumentPictureInPicture where
  pFromJSVal = DocumentPictureInPicture
  {-# INLINE pFromJSVal #-}

instance ToJSVal DocumentPictureInPicture where
  toJSVal = return . unDocumentPictureInPicture
  {-# INLINE toJSVal #-}

instance FromJSVal DocumentPictureInPicture where
  fromJSVal v = fmap DocumentPictureInPicture <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DocumentPictureInPicture
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DocumentPictureInPicture where
  makeObject = makeObject . unDocumentPictureInPicture

instance IsEventTarget DocumentPictureInPicture

instance IsGObject DocumentPictureInPicture where
  typeGType _ = gTypeDocumentPictureInPicture
  {-# INLINE typeGType #-}

noDocumentPictureInPicture :: Maybe DocumentPictureInPicture
noDocumentPictureInPicture = Nothing
{-# INLINE noDocumentPictureInPicture #-}

gTypeDocumentPictureInPicture :: JSM GType
gTypeDocumentPictureInPicture = GType . Object <$> jsg "DocumentPictureInPicture"

-- | Functions for this interface are in "JSDOM.DocumentPictureInPictureEvent" (document-picture-in-picture).
newtype DocumentPictureInPictureEvent = DocumentPictureInPictureEvent { unDocumentPictureInPictureEvent :: JSVal }

instance PToJSVal DocumentPictureInPictureEvent where
  pToJSVal = unDocumentPictureInPictureEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal DocumentPictureInPictureEvent where
  pFromJSVal = DocumentPictureInPictureEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal DocumentPictureInPictureEvent where
  toJSVal = return . unDocumentPictureInPictureEvent
  {-# INLINE toJSVal #-}

instance FromJSVal DocumentPictureInPictureEvent where
  fromJSVal v = fmap DocumentPictureInPictureEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DocumentPictureInPictureEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DocumentPictureInPictureEvent where
  makeObject = makeObject . unDocumentPictureInPictureEvent

instance IsEvent DocumentPictureInPictureEvent

instance IsGObject DocumentPictureInPictureEvent where
  typeGType _ = gTypeDocumentPictureInPictureEvent
  {-# INLINE typeGType #-}

noDocumentPictureInPictureEvent :: Maybe DocumentPictureInPictureEvent
noDocumentPictureInPictureEvent = Nothing
{-# INLINE noDocumentPictureInPictureEvent #-}

gTypeDocumentPictureInPictureEvent :: JSM GType
gTypeDocumentPictureInPictureEvent = GType . Object <$> jsg "DocumentPictureInPictureEvent"

-- | Dictionary DocumentPictureInPictureEventInit (document-picture-in-picture)
newtype DocumentPictureInPictureEventInit = DocumentPictureInPictureEventInit { unDocumentPictureInPictureEventInit :: JSVal }

instance PToJSVal DocumentPictureInPictureEventInit where
  pToJSVal = unDocumentPictureInPictureEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DocumentPictureInPictureEventInit where
  pFromJSVal = DocumentPictureInPictureEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DocumentPictureInPictureEventInit where
  toJSVal = return . unDocumentPictureInPictureEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal DocumentPictureInPictureEventInit where
  fromJSVal v = fmap DocumentPictureInPictureEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DocumentPictureInPictureEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DocumentPictureInPictureEventInit where
  makeObject = makeObject . unDocumentPictureInPictureEventInit

instance IsEventInit DocumentPictureInPictureEventInit

instance IsGObject DocumentPictureInPictureEventInit where
  typeGType _ = gTypeDocumentPictureInPictureEventInit
  {-# INLINE typeGType #-}

noDocumentPictureInPictureEventInit :: Maybe DocumentPictureInPictureEventInit
noDocumentPictureInPictureEventInit = Nothing
{-# INLINE noDocumentPictureInPictureEventInit #-}

gTypeDocumentPictureInPictureEventInit :: JSM GType
gTypeDocumentPictureInPictureEventInit = GType . Object <$> jsg "Object"

-- | Dictionary DocumentPictureInPictureOptions (document-picture-in-picture)
newtype DocumentPictureInPictureOptions = DocumentPictureInPictureOptions { unDocumentPictureInPictureOptions :: JSVal }

instance PToJSVal DocumentPictureInPictureOptions where
  pToJSVal = unDocumentPictureInPictureOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal DocumentPictureInPictureOptions where
  pFromJSVal = DocumentPictureInPictureOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal DocumentPictureInPictureOptions where
  toJSVal = return . unDocumentPictureInPictureOptions
  {-# INLINE toJSVal #-}

instance FromJSVal DocumentPictureInPictureOptions where
  fromJSVal v = fmap DocumentPictureInPictureOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DocumentPictureInPictureOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DocumentPictureInPictureOptions where
  makeObject = makeObject . unDocumentPictureInPictureOptions


instance IsGObject DocumentPictureInPictureOptions where
  typeGType _ = gTypeDocumentPictureInPictureOptions
  {-# INLINE typeGType #-}

noDocumentPictureInPictureOptions :: Maybe DocumentPictureInPictureOptions
noDocumentPictureInPictureOptions = Nothing
{-# INLINE noDocumentPictureInPictureOptions #-}

gTypeDocumentPictureInPictureOptions :: JSM GType
gTypeDocumentPictureInPictureOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.DocumentTimeline" (web-animations-1).
newtype DocumentTimeline = DocumentTimeline { unDocumentTimeline :: JSVal }

instance PToJSVal DocumentTimeline where
  pToJSVal = unDocumentTimeline
  {-# INLINE pToJSVal #-}

instance PFromJSVal DocumentTimeline where
  pFromJSVal = DocumentTimeline
  {-# INLINE pFromJSVal #-}

instance ToJSVal DocumentTimeline where
  toJSVal = return . unDocumentTimeline
  {-# INLINE toJSVal #-}

instance FromJSVal DocumentTimeline where
  fromJSVal v = fmap DocumentTimeline <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DocumentTimeline
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DocumentTimeline where
  makeObject = makeObject . unDocumentTimeline

instance IsAnimationTimeline DocumentTimeline

instance IsGObject DocumentTimeline where
  typeGType _ = gTypeDocumentTimeline
  {-# INLINE typeGType #-}

noDocumentTimeline :: Maybe DocumentTimeline
noDocumentTimeline = Nothing
{-# INLINE noDocumentTimeline #-}

gTypeDocumentTimeline :: JSM GType
gTypeDocumentTimeline = GType . Object <$> jsg "DocumentTimeline"

-- | Dictionary DocumentTimelineOptions (web-animations-1)
newtype DocumentTimelineOptions = DocumentTimelineOptions { unDocumentTimelineOptions :: JSVal }

instance PToJSVal DocumentTimelineOptions where
  pToJSVal = unDocumentTimelineOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal DocumentTimelineOptions where
  pFromJSVal = DocumentTimelineOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal DocumentTimelineOptions where
  toJSVal = return . unDocumentTimelineOptions
  {-# INLINE toJSVal #-}

instance FromJSVal DocumentTimelineOptions where
  fromJSVal v = fmap DocumentTimelineOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DocumentTimelineOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DocumentTimelineOptions where
  makeObject = makeObject . unDocumentTimelineOptions


instance IsGObject DocumentTimelineOptions where
  typeGType _ = gTypeDocumentTimelineOptions
  {-# INLINE typeGType #-}

noDocumentTimelineOptions :: Maybe DocumentTimelineOptions
noDocumentTimelineOptions = Nothing
{-# INLINE noDocumentTimelineOptions #-}

gTypeDocumentTimelineOptions :: JSM GType
gTypeDocumentTimelineOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.DocumentType" (dom).
newtype DocumentType = DocumentType { unDocumentType :: JSVal }

instance PToJSVal DocumentType where
  pToJSVal = unDocumentType
  {-# INLINE pToJSVal #-}

instance PFromJSVal DocumentType where
  pFromJSVal = DocumentType
  {-# INLINE pFromJSVal #-}

instance ToJSVal DocumentType where
  toJSVal = return . unDocumentType
  {-# INLINE toJSVal #-}

instance FromJSVal DocumentType where
  fromJSVal v = fmap DocumentType <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DocumentType
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DocumentType where
  makeObject = makeObject . unDocumentType

instance IsChildNode DocumentType
instance IsNode DocumentType
instance IsEventTarget DocumentType

instance IsGObject DocumentType where
  typeGType _ = gTypeDocumentType
  {-# INLINE typeGType #-}

noDocumentType :: Maybe DocumentType
noDocumentType = Nothing
{-# INLINE noDocumentType #-}

gTypeDocumentType :: JSM GType
gTypeDocumentType = GType . Object <$> jsg "DocumentType"

-- | Dictionary DoubleRange (mediacapture-streams)
newtype DoubleRange = DoubleRange { unDoubleRange :: JSVal }

instance PToJSVal DoubleRange where
  pToJSVal = unDoubleRange
  {-# INLINE pToJSVal #-}

instance PFromJSVal DoubleRange where
  pFromJSVal = DoubleRange
  {-# INLINE pFromJSVal #-}

instance ToJSVal DoubleRange where
  toJSVal = return . unDoubleRange
  {-# INLINE toJSVal #-}

instance FromJSVal DoubleRange where
  fromJSVal v = fmap DoubleRange <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DoubleRange
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DoubleRange where
  makeObject = makeObject . unDoubleRange

class (IsGObject o) => IsDoubleRange o
toDoubleRange :: IsDoubleRange o => o -> DoubleRange
toDoubleRange = DoubleRange . coerce

instance IsDoubleRange DoubleRange

instance IsGObject DoubleRange where
  typeGType _ = gTypeDoubleRange
  {-# INLINE typeGType #-}

noDoubleRange :: Maybe DoubleRange
noDoubleRange = Nothing
{-# INLINE noDoubleRange #-}

gTypeDoubleRange :: JSM GType
gTypeDoubleRange = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.DragEvent" (html).
newtype DragEvent = DragEvent { unDragEvent :: JSVal }

instance PToJSVal DragEvent where
  pToJSVal = unDragEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal DragEvent where
  pFromJSVal = DragEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal DragEvent where
  toJSVal = return . unDragEvent
  {-# INLINE toJSVal #-}

instance FromJSVal DragEvent where
  fromJSVal v = fmap DragEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DragEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DragEvent where
  makeObject = makeObject . unDragEvent

instance IsMouseEvent DragEvent
instance IsUIEvent DragEvent
instance IsEvent DragEvent

instance IsGObject DragEvent where
  typeGType _ = gTypeDragEvent
  {-# INLINE typeGType #-}

noDragEvent :: Maybe DragEvent
noDragEvent = Nothing
{-# INLINE noDragEvent #-}

gTypeDragEvent :: JSM GType
gTypeDragEvent = GType . Object <$> jsg "DragEvent"

-- | Dictionary DragEventInit (html)
newtype DragEventInit = DragEventInit { unDragEventInit :: JSVal }

instance PToJSVal DragEventInit where
  pToJSVal = unDragEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal DragEventInit where
  pFromJSVal = DragEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal DragEventInit where
  toJSVal = return . unDragEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal DragEventInit where
  fromJSVal v = fmap DragEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DragEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DragEventInit where
  makeObject = makeObject . unDragEventInit

instance IsMouseEventInit DragEventInit
instance IsEventModifierInit DragEventInit
instance IsUIEventInit DragEventInit
instance IsEventInit DragEventInit

instance IsGObject DragEventInit where
  typeGType _ = gTypeDragEventInit
  {-# INLINE typeGType #-}

noDragEventInit :: Maybe DragEventInit
noDragEventInit = Nothing
{-# INLINE noDragEventInit #-}

gTypeDragEventInit :: JSM GType
gTypeDragEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.DynamicsCompressorNode" (webaudio-1.1).
newtype DynamicsCompressorNode = DynamicsCompressorNode { unDynamicsCompressorNode :: JSVal }

instance PToJSVal DynamicsCompressorNode where
  pToJSVal = unDynamicsCompressorNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal DynamicsCompressorNode where
  pFromJSVal = DynamicsCompressorNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal DynamicsCompressorNode where
  toJSVal = return . unDynamicsCompressorNode
  {-# INLINE toJSVal #-}

instance FromJSVal DynamicsCompressorNode where
  fromJSVal v = fmap DynamicsCompressorNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DynamicsCompressorNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DynamicsCompressorNode where
  makeObject = makeObject . unDynamicsCompressorNode

instance IsAudioNode DynamicsCompressorNode
instance IsEventTarget DynamicsCompressorNode

instance IsGObject DynamicsCompressorNode where
  typeGType _ = gTypeDynamicsCompressorNode
  {-# INLINE typeGType #-}

noDynamicsCompressorNode :: Maybe DynamicsCompressorNode
noDynamicsCompressorNode = Nothing
{-# INLINE noDynamicsCompressorNode #-}

gTypeDynamicsCompressorNode :: JSM GType
gTypeDynamicsCompressorNode = GType . Object <$> jsg "DynamicsCompressorNode"

-- | Dictionary DynamicsCompressorOptions (webaudio-1.1)
newtype DynamicsCompressorOptions = DynamicsCompressorOptions { unDynamicsCompressorOptions :: JSVal }

instance PToJSVal DynamicsCompressorOptions where
  pToJSVal = unDynamicsCompressorOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal DynamicsCompressorOptions where
  pFromJSVal = DynamicsCompressorOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal DynamicsCompressorOptions where
  toJSVal = return . unDynamicsCompressorOptions
  {-# INLINE toJSVal #-}

instance FromJSVal DynamicsCompressorOptions where
  fromJSVal v = fmap DynamicsCompressorOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . DynamicsCompressorOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject DynamicsCompressorOptions where
  makeObject = makeObject . unDynamicsCompressorOptions

instance IsAudioNodeOptions DynamicsCompressorOptions

instance IsGObject DynamicsCompressorOptions where
  typeGType _ = gTypeDynamicsCompressorOptions
  {-# INLINE typeGType #-}

noDynamicsCompressorOptions :: Maybe DynamicsCompressorOptions
noDynamicsCompressorOptions = Nothing
{-# INLINE noDynamicsCompressorOptions #-}

gTypeDynamicsCompressorOptions :: JSM GType
gTypeDynamicsCompressorOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_blend_minmax" (EXT_blend_minmax).
newtype EXT_blend_minmax = EXT_blend_minmax { unEXT_blend_minmax :: JSVal }

instance PToJSVal EXT_blend_minmax where
  pToJSVal = unEXT_blend_minmax
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_blend_minmax where
  pFromJSVal = EXT_blend_minmax
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_blend_minmax where
  toJSVal = return . unEXT_blend_minmax
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_blend_minmax where
  fromJSVal v = fmap EXT_blend_minmax <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_blend_minmax
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_blend_minmax where
  makeObject = makeObject . unEXT_blend_minmax


instance IsGObject EXT_blend_minmax where
  typeGType _ = gTypeEXT_blend_minmax
  {-# INLINE typeGType #-}

noEXT_blend_minmax :: Maybe EXT_blend_minmax
noEXT_blend_minmax = Nothing
{-# INLINE noEXT_blend_minmax #-}

gTypeEXT_blend_minmax :: JSM GType
gTypeEXT_blend_minmax = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_clip_control" (EXT_clip_control).
newtype EXT_clip_control = EXT_clip_control { unEXT_clip_control :: JSVal }

instance PToJSVal EXT_clip_control where
  pToJSVal = unEXT_clip_control
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_clip_control where
  pFromJSVal = EXT_clip_control
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_clip_control where
  toJSVal = return . unEXT_clip_control
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_clip_control where
  fromJSVal v = fmap EXT_clip_control <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_clip_control
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_clip_control where
  makeObject = makeObject . unEXT_clip_control


instance IsGObject EXT_clip_control where
  typeGType _ = gTypeEXT_clip_control
  {-# INLINE typeGType #-}

noEXT_clip_control :: Maybe EXT_clip_control
noEXT_clip_control = Nothing
{-# INLINE noEXT_clip_control #-}

gTypeEXT_clip_control :: JSM GType
gTypeEXT_clip_control = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_color_buffer_float" (EXT_color_buffer_float).
newtype EXT_color_buffer_float = EXT_color_buffer_float { unEXT_color_buffer_float :: JSVal }

instance PToJSVal EXT_color_buffer_float where
  pToJSVal = unEXT_color_buffer_float
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_color_buffer_float where
  pFromJSVal = EXT_color_buffer_float
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_color_buffer_float where
  toJSVal = return . unEXT_color_buffer_float
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_color_buffer_float where
  fromJSVal v = fmap EXT_color_buffer_float <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_color_buffer_float
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_color_buffer_float where
  makeObject = makeObject . unEXT_color_buffer_float


instance IsGObject EXT_color_buffer_float where
  typeGType _ = gTypeEXT_color_buffer_float
  {-# INLINE typeGType #-}

noEXT_color_buffer_float :: Maybe EXT_color_buffer_float
noEXT_color_buffer_float = Nothing
{-# INLINE noEXT_color_buffer_float #-}

gTypeEXT_color_buffer_float :: JSM GType
gTypeEXT_color_buffer_float = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_color_buffer_half_float" (EXT_color_buffer_half_float).
newtype EXT_color_buffer_half_float = EXT_color_buffer_half_float { unEXT_color_buffer_half_float :: JSVal }

instance PToJSVal EXT_color_buffer_half_float where
  pToJSVal = unEXT_color_buffer_half_float
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_color_buffer_half_float where
  pFromJSVal = EXT_color_buffer_half_float
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_color_buffer_half_float where
  toJSVal = return . unEXT_color_buffer_half_float
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_color_buffer_half_float where
  fromJSVal v = fmap EXT_color_buffer_half_float <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_color_buffer_half_float
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_color_buffer_half_float where
  makeObject = makeObject . unEXT_color_buffer_half_float


instance IsGObject EXT_color_buffer_half_float where
  typeGType _ = gTypeEXT_color_buffer_half_float
  {-# INLINE typeGType #-}

noEXT_color_buffer_half_float :: Maybe EXT_color_buffer_half_float
noEXT_color_buffer_half_float = Nothing
{-# INLINE noEXT_color_buffer_half_float #-}

gTypeEXT_color_buffer_half_float :: JSM GType
gTypeEXT_color_buffer_half_float = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_float_blend" (EXT_float_blend).
newtype EXT_float_blend = EXT_float_blend { unEXT_float_blend :: JSVal }

instance PToJSVal EXT_float_blend where
  pToJSVal = unEXT_float_blend
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_float_blend where
  pFromJSVal = EXT_float_blend
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_float_blend where
  toJSVal = return . unEXT_float_blend
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_float_blend where
  fromJSVal v = fmap EXT_float_blend <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_float_blend
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_float_blend where
  makeObject = makeObject . unEXT_float_blend


instance IsGObject EXT_float_blend where
  typeGType _ = gTypeEXT_float_blend
  {-# INLINE typeGType #-}

noEXT_float_blend :: Maybe EXT_float_blend
noEXT_float_blend = Nothing
{-# INLINE noEXT_float_blend #-}

gTypeEXT_float_blend :: JSM GType
gTypeEXT_float_blend = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_frag_depth" (EXT_frag_depth).
newtype EXT_frag_depth = EXT_frag_depth { unEXT_frag_depth :: JSVal }

instance PToJSVal EXT_frag_depth where
  pToJSVal = unEXT_frag_depth
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_frag_depth where
  pFromJSVal = EXT_frag_depth
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_frag_depth where
  toJSVal = return . unEXT_frag_depth
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_frag_depth where
  fromJSVal v = fmap EXT_frag_depth <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_frag_depth
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_frag_depth where
  makeObject = makeObject . unEXT_frag_depth


instance IsGObject EXT_frag_depth where
  typeGType _ = gTypeEXT_frag_depth
  {-# INLINE typeGType #-}

noEXT_frag_depth :: Maybe EXT_frag_depth
noEXT_frag_depth = Nothing
{-# INLINE noEXT_frag_depth #-}

gTypeEXT_frag_depth :: JSM GType
gTypeEXT_frag_depth = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_polygon_offset_clamp" (EXT_polygon_offset_clamp).
newtype EXT_polygon_offset_clamp = EXT_polygon_offset_clamp { unEXT_polygon_offset_clamp :: JSVal }

instance PToJSVal EXT_polygon_offset_clamp where
  pToJSVal = unEXT_polygon_offset_clamp
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_polygon_offset_clamp where
  pFromJSVal = EXT_polygon_offset_clamp
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_polygon_offset_clamp where
  toJSVal = return . unEXT_polygon_offset_clamp
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_polygon_offset_clamp where
  fromJSVal v = fmap EXT_polygon_offset_clamp <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_polygon_offset_clamp
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_polygon_offset_clamp where
  makeObject = makeObject . unEXT_polygon_offset_clamp


instance IsGObject EXT_polygon_offset_clamp where
  typeGType _ = gTypeEXT_polygon_offset_clamp
  {-# INLINE typeGType #-}

noEXT_polygon_offset_clamp :: Maybe EXT_polygon_offset_clamp
noEXT_polygon_offset_clamp = Nothing
{-# INLINE noEXT_polygon_offset_clamp #-}

gTypeEXT_polygon_offset_clamp :: JSM GType
gTypeEXT_polygon_offset_clamp = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_sRGB" (EXT_sRGB).
newtype EXT_sRGB = EXT_sRGB { unEXT_sRGB :: JSVal }

instance PToJSVal EXT_sRGB where
  pToJSVal = unEXT_sRGB
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_sRGB where
  pFromJSVal = EXT_sRGB
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_sRGB where
  toJSVal = return . unEXT_sRGB
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_sRGB where
  fromJSVal v = fmap EXT_sRGB <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_sRGB
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_sRGB where
  makeObject = makeObject . unEXT_sRGB


instance IsGObject EXT_sRGB where
  typeGType _ = gTypeEXT_sRGB
  {-# INLINE typeGType #-}

noEXT_sRGB :: Maybe EXT_sRGB
noEXT_sRGB = Nothing
{-# INLINE noEXT_sRGB #-}

gTypeEXT_sRGB :: JSM GType
gTypeEXT_sRGB = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_shader_texture_lod" (EXT_shader_texture_lod).
newtype EXT_shader_texture_lod = EXT_shader_texture_lod { unEXT_shader_texture_lod :: JSVal }

instance PToJSVal EXT_shader_texture_lod where
  pToJSVal = unEXT_shader_texture_lod
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_shader_texture_lod where
  pFromJSVal = EXT_shader_texture_lod
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_shader_texture_lod where
  toJSVal = return . unEXT_shader_texture_lod
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_shader_texture_lod where
  fromJSVal v = fmap EXT_shader_texture_lod <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_shader_texture_lod
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_shader_texture_lod where
  makeObject = makeObject . unEXT_shader_texture_lod


instance IsGObject EXT_shader_texture_lod where
  typeGType _ = gTypeEXT_shader_texture_lod
  {-# INLINE typeGType #-}

noEXT_shader_texture_lod :: Maybe EXT_shader_texture_lod
noEXT_shader_texture_lod = Nothing
{-# INLINE noEXT_shader_texture_lod #-}

gTypeEXT_shader_texture_lod :: JSM GType
gTypeEXT_shader_texture_lod = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_texture_compression_bptc" (EXT_texture_compression_bptc).
newtype EXT_texture_compression_bptc = EXT_texture_compression_bptc { unEXT_texture_compression_bptc :: JSVal }

instance PToJSVal EXT_texture_compression_bptc where
  pToJSVal = unEXT_texture_compression_bptc
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_texture_compression_bptc where
  pFromJSVal = EXT_texture_compression_bptc
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_texture_compression_bptc where
  toJSVal = return . unEXT_texture_compression_bptc
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_texture_compression_bptc where
  fromJSVal v = fmap EXT_texture_compression_bptc <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_texture_compression_bptc
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_texture_compression_bptc where
  makeObject = makeObject . unEXT_texture_compression_bptc


instance IsGObject EXT_texture_compression_bptc where
  typeGType _ = gTypeEXT_texture_compression_bptc
  {-# INLINE typeGType #-}

noEXT_texture_compression_bptc :: Maybe EXT_texture_compression_bptc
noEXT_texture_compression_bptc = Nothing
{-# INLINE noEXT_texture_compression_bptc #-}

gTypeEXT_texture_compression_bptc :: JSM GType
gTypeEXT_texture_compression_bptc = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_texture_compression_rgtc" (EXT_texture_compression_rgtc).
newtype EXT_texture_compression_rgtc = EXT_texture_compression_rgtc { unEXT_texture_compression_rgtc :: JSVal }

instance PToJSVal EXT_texture_compression_rgtc where
  pToJSVal = unEXT_texture_compression_rgtc
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_texture_compression_rgtc where
  pFromJSVal = EXT_texture_compression_rgtc
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_texture_compression_rgtc where
  toJSVal = return . unEXT_texture_compression_rgtc
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_texture_compression_rgtc where
  fromJSVal v = fmap EXT_texture_compression_rgtc <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_texture_compression_rgtc
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_texture_compression_rgtc where
  makeObject = makeObject . unEXT_texture_compression_rgtc


instance IsGObject EXT_texture_compression_rgtc where
  typeGType _ = gTypeEXT_texture_compression_rgtc
  {-# INLINE typeGType #-}

noEXT_texture_compression_rgtc :: Maybe EXT_texture_compression_rgtc
noEXT_texture_compression_rgtc = Nothing
{-# INLINE noEXT_texture_compression_rgtc #-}

gTypeEXT_texture_compression_rgtc :: JSM GType
gTypeEXT_texture_compression_rgtc = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_texture_filter_anisotropic" (EXT_texture_filter_anisotropic).
newtype EXT_texture_filter_anisotropic = EXT_texture_filter_anisotropic { unEXT_texture_filter_anisotropic :: JSVal }

instance PToJSVal EXT_texture_filter_anisotropic where
  pToJSVal = unEXT_texture_filter_anisotropic
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_texture_filter_anisotropic where
  pFromJSVal = EXT_texture_filter_anisotropic
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_texture_filter_anisotropic where
  toJSVal = return . unEXT_texture_filter_anisotropic
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_texture_filter_anisotropic where
  fromJSVal v = fmap EXT_texture_filter_anisotropic <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_texture_filter_anisotropic
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_texture_filter_anisotropic where
  makeObject = makeObject . unEXT_texture_filter_anisotropic


instance IsGObject EXT_texture_filter_anisotropic where
  typeGType _ = gTypeEXT_texture_filter_anisotropic
  {-# INLINE typeGType #-}

noEXT_texture_filter_anisotropic :: Maybe EXT_texture_filter_anisotropic
noEXT_texture_filter_anisotropic = Nothing
{-# INLINE noEXT_texture_filter_anisotropic #-}

gTypeEXT_texture_filter_anisotropic :: JSM GType
gTypeEXT_texture_filter_anisotropic = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_texture_mirror_clamp_to_edge" (EXT_texture_mirror_clamp_to_edge).
newtype EXT_texture_mirror_clamp_to_edge = EXT_texture_mirror_clamp_to_edge { unEXT_texture_mirror_clamp_to_edge :: JSVal }

instance PToJSVal EXT_texture_mirror_clamp_to_edge where
  pToJSVal = unEXT_texture_mirror_clamp_to_edge
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_texture_mirror_clamp_to_edge where
  pFromJSVal = EXT_texture_mirror_clamp_to_edge
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_texture_mirror_clamp_to_edge where
  toJSVal = return . unEXT_texture_mirror_clamp_to_edge
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_texture_mirror_clamp_to_edge where
  fromJSVal v = fmap EXT_texture_mirror_clamp_to_edge <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_texture_mirror_clamp_to_edge
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_texture_mirror_clamp_to_edge where
  makeObject = makeObject . unEXT_texture_mirror_clamp_to_edge


instance IsGObject EXT_texture_mirror_clamp_to_edge where
  typeGType _ = gTypeEXT_texture_mirror_clamp_to_edge
  {-# INLINE typeGType #-}

noEXT_texture_mirror_clamp_to_edge :: Maybe EXT_texture_mirror_clamp_to_edge
noEXT_texture_mirror_clamp_to_edge = Nothing
{-# INLINE noEXT_texture_mirror_clamp_to_edge #-}

gTypeEXT_texture_mirror_clamp_to_edge :: JSM GType
gTypeEXT_texture_mirror_clamp_to_edge = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EXT_texture_norm16" (EXT_texture_norm16).
newtype EXT_texture_norm16 = EXT_texture_norm16 { unEXT_texture_norm16 :: JSVal }

instance PToJSVal EXT_texture_norm16 where
  pToJSVal = unEXT_texture_norm16
  {-# INLINE pToJSVal #-}

instance PFromJSVal EXT_texture_norm16 where
  pFromJSVal = EXT_texture_norm16
  {-# INLINE pFromJSVal #-}

instance ToJSVal EXT_texture_norm16 where
  toJSVal = return . unEXT_texture_norm16
  {-# INLINE toJSVal #-}

instance FromJSVal EXT_texture_norm16 where
  fromJSVal v = fmap EXT_texture_norm16 <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EXT_texture_norm16
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EXT_texture_norm16 where
  makeObject = makeObject . unEXT_texture_norm16


instance IsGObject EXT_texture_norm16 where
  typeGType _ = gTypeEXT_texture_norm16
  {-# INLINE typeGType #-}

noEXT_texture_norm16 :: Maybe EXT_texture_norm16
noEXT_texture_norm16 = Nothing
{-# INLINE noEXT_texture_norm16 #-}

gTypeEXT_texture_norm16 :: JSM GType
gTypeEXT_texture_norm16 = GType . Object <$> jsg "Object"

-- | Dictionary EffectTiming (web-animations-1)
newtype EffectTiming = EffectTiming { unEffectTiming :: JSVal }

instance PToJSVal EffectTiming where
  pToJSVal = unEffectTiming
  {-# INLINE pToJSVal #-}

instance PFromJSVal EffectTiming where
  pFromJSVal = EffectTiming
  {-# INLINE pFromJSVal #-}

instance ToJSVal EffectTiming where
  toJSVal = return . unEffectTiming
  {-# INLINE toJSVal #-}

instance FromJSVal EffectTiming where
  fromJSVal v = fmap EffectTiming <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EffectTiming
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EffectTiming where
  makeObject = makeObject . unEffectTiming

class (IsGObject o) => IsEffectTiming o
toEffectTiming :: IsEffectTiming o => o -> EffectTiming
toEffectTiming = EffectTiming . coerce

instance IsEffectTiming EffectTiming

instance IsGObject EffectTiming where
  typeGType _ = gTypeEffectTiming
  {-# INLINE typeGType #-}

noEffectTiming :: Maybe EffectTiming
noEffectTiming = Nothing
{-# INLINE noEffectTiming #-}

gTypeEffectTiming :: JSM GType
gTypeEffectTiming = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Element" (dom).
newtype Element = Element { unElement :: JSVal }

instance PToJSVal Element where
  pToJSVal = unElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal Element where
  pFromJSVal = Element
  {-# INLINE pFromJSVal #-}

instance ToJSVal Element where
  toJSVal = return . unElement
  {-# INLINE toJSVal #-}

instance FromJSVal Element where
  fromJSVal v = fmap Element <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Element
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Element where
  makeObject = makeObject . unElement

class (IsNode o, IsARIAMixin o, IsARIANotifyMixin o, IsAnimatable o, IsChildNode o, IsNonDocumentTypeChildNode o, IsParentNode o, IsSlottable o, IsGObject o) => IsElement o
toElement :: IsElement o => o -> Element
toElement = Element . coerce

instance IsElement Element
instance IsARIAMixin Element
instance IsARIANotifyMixin Element
instance IsAnimatable Element
instance IsChildNode Element
instance IsNonDocumentTypeChildNode Element
instance IsParentNode Element
instance IsSlottable Element
instance IsNode Element
instance IsEventTarget Element

instance IsGObject Element where
  typeGType _ = gTypeElement
  {-# INLINE typeGType #-}

noElement :: Maybe Element
noElement = Nothing
{-# INLINE noElement #-}

gTypeElement :: JSM GType
gTypeElement = GType . Object <$> jsg "Element"

-- | Functions for this interface are in "JSDOM.ElementCSSInlineStyle" (cssom-1).
newtype ElementCSSInlineStyle = ElementCSSInlineStyle { unElementCSSInlineStyle :: JSVal }

instance PToJSVal ElementCSSInlineStyle where
  pToJSVal = unElementCSSInlineStyle
  {-# INLINE pToJSVal #-}

instance PFromJSVal ElementCSSInlineStyle where
  pFromJSVal = ElementCSSInlineStyle
  {-# INLINE pFromJSVal #-}

instance ToJSVal ElementCSSInlineStyle where
  toJSVal = return . unElementCSSInlineStyle
  {-# INLINE toJSVal #-}

instance FromJSVal ElementCSSInlineStyle where
  fromJSVal v = fmap ElementCSSInlineStyle <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ElementCSSInlineStyle
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ElementCSSInlineStyle where
  makeObject = makeObject . unElementCSSInlineStyle

class (IsGObject o) => IsElementCSSInlineStyle o
toElementCSSInlineStyle :: IsElementCSSInlineStyle o => o -> ElementCSSInlineStyle
toElementCSSInlineStyle = ElementCSSInlineStyle . coerce

instance IsElementCSSInlineStyle ElementCSSInlineStyle

instance IsGObject ElementCSSInlineStyle where
  typeGType _ = gTypeElementCSSInlineStyle
  {-# INLINE typeGType #-}

noElementCSSInlineStyle :: Maybe ElementCSSInlineStyle
noElementCSSInlineStyle = Nothing
{-# INLINE noElementCSSInlineStyle #-}

gTypeElementCSSInlineStyle :: JSM GType
gTypeElementCSSInlineStyle = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ElementContentEditable" (html).
newtype ElementContentEditable = ElementContentEditable { unElementContentEditable :: JSVal }

instance PToJSVal ElementContentEditable where
  pToJSVal = unElementContentEditable
  {-# INLINE pToJSVal #-}

instance PFromJSVal ElementContentEditable where
  pFromJSVal = ElementContentEditable
  {-# INLINE pFromJSVal #-}

instance ToJSVal ElementContentEditable where
  toJSVal = return . unElementContentEditable
  {-# INLINE toJSVal #-}

instance FromJSVal ElementContentEditable where
  fromJSVal v = fmap ElementContentEditable <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ElementContentEditable
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ElementContentEditable where
  makeObject = makeObject . unElementContentEditable

class (IsGObject o) => IsElementContentEditable o
toElementContentEditable :: IsElementContentEditable o => o -> ElementContentEditable
toElementContentEditable = ElementContentEditable . coerce

instance IsElementContentEditable ElementContentEditable

instance IsGObject ElementContentEditable where
  typeGType _ = gTypeElementContentEditable
  {-# INLINE typeGType #-}

noElementContentEditable :: Maybe ElementContentEditable
noElementContentEditable = Nothing
{-# INLINE noElementContentEditable #-}

gTypeElementContentEditable :: JSM GType
gTypeElementContentEditable = GType . Object <$> jsg "Object"

-- | Dictionary ElementCreationOptions (dom)
newtype ElementCreationOptions = ElementCreationOptions { unElementCreationOptions :: JSVal }

instance PToJSVal ElementCreationOptions where
  pToJSVal = unElementCreationOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ElementCreationOptions where
  pFromJSVal = ElementCreationOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ElementCreationOptions where
  toJSVal = return . unElementCreationOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ElementCreationOptions where
  fromJSVal v = fmap ElementCreationOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ElementCreationOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ElementCreationOptions where
  makeObject = makeObject . unElementCreationOptions


instance IsGObject ElementCreationOptions where
  typeGType _ = gTypeElementCreationOptions
  {-# INLINE typeGType #-}

noElementCreationOptions :: Maybe ElementCreationOptions
noElementCreationOptions = Nothing
{-# INLINE noElementCreationOptions #-}

gTypeElementCreationOptions :: JSM GType
gTypeElementCreationOptions = GType . Object <$> jsg "Object"

-- | Dictionary ElementDefinitionOptions (html)
newtype ElementDefinitionOptions = ElementDefinitionOptions { unElementDefinitionOptions :: JSVal }

instance PToJSVal ElementDefinitionOptions where
  pToJSVal = unElementDefinitionOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ElementDefinitionOptions where
  pFromJSVal = ElementDefinitionOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ElementDefinitionOptions where
  toJSVal = return . unElementDefinitionOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ElementDefinitionOptions where
  fromJSVal v = fmap ElementDefinitionOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ElementDefinitionOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ElementDefinitionOptions where
  makeObject = makeObject . unElementDefinitionOptions


instance IsGObject ElementDefinitionOptions where
  typeGType _ = gTypeElementDefinitionOptions
  {-# INLINE typeGType #-}

noElementDefinitionOptions :: Maybe ElementDefinitionOptions
noElementDefinitionOptions = Nothing
{-# INLINE noElementDefinitionOptions #-}

gTypeElementDefinitionOptions :: JSM GType
gTypeElementDefinitionOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ElementInternals" (html).
newtype ElementInternals = ElementInternals { unElementInternals :: JSVal }

instance PToJSVal ElementInternals where
  pToJSVal = unElementInternals
  {-# INLINE pToJSVal #-}

instance PFromJSVal ElementInternals where
  pFromJSVal = ElementInternals
  {-# INLINE pFromJSVal #-}

instance ToJSVal ElementInternals where
  toJSVal = return . unElementInternals
  {-# INLINE toJSVal #-}

instance FromJSVal ElementInternals where
  fromJSVal v = fmap ElementInternals <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ElementInternals
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ElementInternals where
  makeObject = makeObject . unElementInternals

instance IsARIAMixin ElementInternals

instance IsGObject ElementInternals where
  typeGType _ = gTypeElementInternals
  {-# INLINE typeGType #-}

noElementInternals :: Maybe ElementInternals
noElementInternals = Nothing
{-# INLINE noElementInternals #-}

gTypeElementInternals :: JSM GType
gTypeElementInternals = GType . Object <$> jsg "ElementInternals"

-- | Functions for this interface are in "JSDOM.EncodedAudioChunk" (webcodecs).
newtype EncodedAudioChunk = EncodedAudioChunk { unEncodedAudioChunk :: JSVal }

instance PToJSVal EncodedAudioChunk where
  pToJSVal = unEncodedAudioChunk
  {-# INLINE pToJSVal #-}

instance PFromJSVal EncodedAudioChunk where
  pFromJSVal = EncodedAudioChunk
  {-# INLINE pFromJSVal #-}

instance ToJSVal EncodedAudioChunk where
  toJSVal = return . unEncodedAudioChunk
  {-# INLINE toJSVal #-}

instance FromJSVal EncodedAudioChunk where
  fromJSVal v = fmap EncodedAudioChunk <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EncodedAudioChunk
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EncodedAudioChunk where
  makeObject = makeObject . unEncodedAudioChunk


instance IsGObject EncodedAudioChunk where
  typeGType _ = gTypeEncodedAudioChunk
  {-# INLINE typeGType #-}

noEncodedAudioChunk :: Maybe EncodedAudioChunk
noEncodedAudioChunk = Nothing
{-# INLINE noEncodedAudioChunk #-}

gTypeEncodedAudioChunk :: JSM GType
gTypeEncodedAudioChunk = GType . Object <$> jsg "EncodedAudioChunk"

-- | Dictionary EncodedAudioChunkInit (webcodecs)
newtype EncodedAudioChunkInit = EncodedAudioChunkInit { unEncodedAudioChunkInit :: JSVal }

instance PToJSVal EncodedAudioChunkInit where
  pToJSVal = unEncodedAudioChunkInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal EncodedAudioChunkInit where
  pFromJSVal = EncodedAudioChunkInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal EncodedAudioChunkInit where
  toJSVal = return . unEncodedAudioChunkInit
  {-# INLINE toJSVal #-}

instance FromJSVal EncodedAudioChunkInit where
  fromJSVal v = fmap EncodedAudioChunkInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EncodedAudioChunkInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EncodedAudioChunkInit where
  makeObject = makeObject . unEncodedAudioChunkInit


instance IsGObject EncodedAudioChunkInit where
  typeGType _ = gTypeEncodedAudioChunkInit
  {-# INLINE typeGType #-}

noEncodedAudioChunkInit :: Maybe EncodedAudioChunkInit
noEncodedAudioChunkInit = Nothing
{-# INLINE noEncodedAudioChunkInit #-}

gTypeEncodedAudioChunkInit :: JSM GType
gTypeEncodedAudioChunkInit = GType . Object <$> jsg "Object"

-- | Dictionary EncodedAudioChunkMetadata (webcodecs)
newtype EncodedAudioChunkMetadata = EncodedAudioChunkMetadata { unEncodedAudioChunkMetadata :: JSVal }

instance PToJSVal EncodedAudioChunkMetadata where
  pToJSVal = unEncodedAudioChunkMetadata
  {-# INLINE pToJSVal #-}

instance PFromJSVal EncodedAudioChunkMetadata where
  pFromJSVal = EncodedAudioChunkMetadata
  {-# INLINE pFromJSVal #-}

instance ToJSVal EncodedAudioChunkMetadata where
  toJSVal = return . unEncodedAudioChunkMetadata
  {-# INLINE toJSVal #-}

instance FromJSVal EncodedAudioChunkMetadata where
  fromJSVal v = fmap EncodedAudioChunkMetadata <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EncodedAudioChunkMetadata
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EncodedAudioChunkMetadata where
  makeObject = makeObject . unEncodedAudioChunkMetadata


instance IsGObject EncodedAudioChunkMetadata where
  typeGType _ = gTypeEncodedAudioChunkMetadata
  {-# INLINE typeGType #-}

noEncodedAudioChunkMetadata :: Maybe EncodedAudioChunkMetadata
noEncodedAudioChunkMetadata = Nothing
{-# INLINE noEncodedAudioChunkMetadata #-}

gTypeEncodedAudioChunkMetadata :: JSM GType
gTypeEncodedAudioChunkMetadata = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EncodedVideoChunk" (webcodecs).
newtype EncodedVideoChunk = EncodedVideoChunk { unEncodedVideoChunk :: JSVal }

instance PToJSVal EncodedVideoChunk where
  pToJSVal = unEncodedVideoChunk
  {-# INLINE pToJSVal #-}

instance PFromJSVal EncodedVideoChunk where
  pFromJSVal = EncodedVideoChunk
  {-# INLINE pFromJSVal #-}

instance ToJSVal EncodedVideoChunk where
  toJSVal = return . unEncodedVideoChunk
  {-# INLINE toJSVal #-}

instance FromJSVal EncodedVideoChunk where
  fromJSVal v = fmap EncodedVideoChunk <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EncodedVideoChunk
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EncodedVideoChunk where
  makeObject = makeObject . unEncodedVideoChunk


instance IsGObject EncodedVideoChunk where
  typeGType _ = gTypeEncodedVideoChunk
  {-# INLINE typeGType #-}

noEncodedVideoChunk :: Maybe EncodedVideoChunk
noEncodedVideoChunk = Nothing
{-# INLINE noEncodedVideoChunk #-}

gTypeEncodedVideoChunk :: JSM GType
gTypeEncodedVideoChunk = GType . Object <$> jsg "EncodedVideoChunk"

-- | Dictionary EncodedVideoChunkInit (webcodecs)
newtype EncodedVideoChunkInit = EncodedVideoChunkInit { unEncodedVideoChunkInit :: JSVal }

instance PToJSVal EncodedVideoChunkInit where
  pToJSVal = unEncodedVideoChunkInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal EncodedVideoChunkInit where
  pFromJSVal = EncodedVideoChunkInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal EncodedVideoChunkInit where
  toJSVal = return . unEncodedVideoChunkInit
  {-# INLINE toJSVal #-}

instance FromJSVal EncodedVideoChunkInit where
  fromJSVal v = fmap EncodedVideoChunkInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EncodedVideoChunkInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EncodedVideoChunkInit where
  makeObject = makeObject . unEncodedVideoChunkInit


instance IsGObject EncodedVideoChunkInit where
  typeGType _ = gTypeEncodedVideoChunkInit
  {-# INLINE typeGType #-}

noEncodedVideoChunkInit :: Maybe EncodedVideoChunkInit
noEncodedVideoChunkInit = Nothing
{-# INLINE noEncodedVideoChunkInit #-}

gTypeEncodedVideoChunkInit :: JSM GType
gTypeEncodedVideoChunkInit = GType . Object <$> jsg "Object"

-- | Dictionary EncodedVideoChunkMetadata (webcodecs)
newtype EncodedVideoChunkMetadata = EncodedVideoChunkMetadata { unEncodedVideoChunkMetadata :: JSVal }

instance PToJSVal EncodedVideoChunkMetadata where
  pToJSVal = unEncodedVideoChunkMetadata
  {-# INLINE pToJSVal #-}

instance PFromJSVal EncodedVideoChunkMetadata where
  pFromJSVal = EncodedVideoChunkMetadata
  {-# INLINE pFromJSVal #-}

instance ToJSVal EncodedVideoChunkMetadata where
  toJSVal = return . unEncodedVideoChunkMetadata
  {-# INLINE toJSVal #-}

instance FromJSVal EncodedVideoChunkMetadata where
  fromJSVal v = fmap EncodedVideoChunkMetadata <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EncodedVideoChunkMetadata
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EncodedVideoChunkMetadata where
  makeObject = makeObject . unEncodedVideoChunkMetadata


instance IsGObject EncodedVideoChunkMetadata where
  typeGType _ = gTypeEncodedVideoChunkMetadata
  {-# INLINE typeGType #-}

noEncodedVideoChunkMetadata :: Maybe EncodedVideoChunkMetadata
noEncodedVideoChunkMetadata = Nothing
{-# INLINE noEncodedVideoChunkMetadata #-}

gTypeEncodedVideoChunkMetadata :: JSM GType
gTypeEncodedVideoChunkMetadata = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ErrorEvent" (html).
newtype ErrorEvent = ErrorEvent { unErrorEvent :: JSVal }

instance PToJSVal ErrorEvent where
  pToJSVal = unErrorEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal ErrorEvent where
  pFromJSVal = ErrorEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal ErrorEvent where
  toJSVal = return . unErrorEvent
  {-# INLINE toJSVal #-}

instance FromJSVal ErrorEvent where
  fromJSVal v = fmap ErrorEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ErrorEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ErrorEvent where
  makeObject = makeObject . unErrorEvent

instance IsEvent ErrorEvent

instance IsGObject ErrorEvent where
  typeGType _ = gTypeErrorEvent
  {-# INLINE typeGType #-}

noErrorEvent :: Maybe ErrorEvent
noErrorEvent = Nothing
{-# INLINE noErrorEvent #-}

gTypeErrorEvent :: JSM GType
gTypeErrorEvent = GType . Object <$> jsg "ErrorEvent"

-- | Dictionary ErrorEventInit (html)
newtype ErrorEventInit = ErrorEventInit { unErrorEventInit :: JSVal }

instance PToJSVal ErrorEventInit where
  pToJSVal = unErrorEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal ErrorEventInit where
  pFromJSVal = ErrorEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal ErrorEventInit where
  toJSVal = return . unErrorEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal ErrorEventInit where
  fromJSVal v = fmap ErrorEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ErrorEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ErrorEventInit where
  makeObject = makeObject . unErrorEventInit

instance IsEventInit ErrorEventInit

instance IsGObject ErrorEventInit where
  typeGType _ = gTypeErrorEventInit
  {-# INLINE typeGType #-}

noErrorEventInit :: Maybe ErrorEventInit
noErrorEventInit = Nothing
{-# INLINE noErrorEventInit #-}

gTypeErrorEventInit :: JSM GType
gTypeErrorEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Event" (dom).
newtype Event = Event { unEvent :: JSVal }

instance PToJSVal Event where
  pToJSVal = unEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal Event where
  pFromJSVal = Event
  {-# INLINE pFromJSVal #-}

instance ToJSVal Event where
  toJSVal = return . unEvent
  {-# INLINE toJSVal #-}

instance FromJSVal Event where
  fromJSVal v = fmap Event <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Event
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Event where
  makeObject = makeObject . unEvent

class (IsGObject o) => IsEvent o
toEvent :: IsEvent o => o -> Event
toEvent = Event . coerce

instance IsEvent Event

instance IsGObject Event where
  typeGType _ = gTypeEvent
  {-# INLINE typeGType #-}

noEvent :: Maybe Event
noEvent = Nothing
{-# INLINE noEvent #-}

gTypeEvent :: JSM GType
gTypeEvent = GType . Object <$> jsg "Event"

-- | Functions for this interface are in "JSDOM.EventCounts" (event-timing).
newtype EventCounts = EventCounts { unEventCounts :: JSVal }

instance PToJSVal EventCounts where
  pToJSVal = unEventCounts
  {-# INLINE pToJSVal #-}

instance PFromJSVal EventCounts where
  pFromJSVal = EventCounts
  {-# INLINE pFromJSVal #-}

instance ToJSVal EventCounts where
  toJSVal = return . unEventCounts
  {-# INLINE toJSVal #-}

instance FromJSVal EventCounts where
  fromJSVal v = fmap EventCounts <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EventCounts
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EventCounts where
  makeObject = makeObject . unEventCounts


instance IsGObject EventCounts where
  typeGType _ = gTypeEventCounts
  {-# INLINE typeGType #-}

noEventCounts :: Maybe EventCounts
noEventCounts = Nothing
{-# INLINE noEventCounts #-}

gTypeEventCounts :: JSM GType
gTypeEventCounts = GType . Object <$> jsg "EventCounts"

-- | Dictionary EventInit (dom)
newtype EventInit = EventInit { unEventInit :: JSVal }

instance PToJSVal EventInit where
  pToJSVal = unEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal EventInit where
  pFromJSVal = EventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal EventInit where
  toJSVal = return . unEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal EventInit where
  fromJSVal v = fmap EventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EventInit where
  makeObject = makeObject . unEventInit

class (IsGObject o) => IsEventInit o
toEventInit :: IsEventInit o => o -> EventInit
toEventInit = EventInit . coerce

instance IsEventInit EventInit

instance IsGObject EventInit where
  typeGType _ = gTypeEventInit
  {-# INLINE typeGType #-}

noEventInit :: Maybe EventInit
noEventInit = Nothing
{-# INLINE noEventInit #-}

gTypeEventInit :: JSM GType
gTypeEventInit = GType . Object <$> jsg "Object"

-- | Dictionary EventListener (dom)
newtype EventListener = EventListener { unEventListener :: JSVal }

instance PToJSVal EventListener where
  pToJSVal = unEventListener
  {-# INLINE pToJSVal #-}

instance PFromJSVal EventListener where
  pFromJSVal = EventListener
  {-# INLINE pFromJSVal #-}

instance ToJSVal EventListener where
  toJSVal = return . unEventListener
  {-# INLINE toJSVal #-}

instance FromJSVal EventListener where
  fromJSVal v = fmap EventListener <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EventListener
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EventListener where
  makeObject = makeObject . unEventListener


instance IsGObject EventListener where
  typeGType _ = gTypeEventListener
  {-# INLINE typeGType #-}

noEventListener :: Maybe EventListener
noEventListener = Nothing
{-# INLINE noEventListener #-}

gTypeEventListener :: JSM GType
gTypeEventListener = GType . Object <$> jsg "Object"

-- | Dictionary EventListenerOptions (dom)
newtype EventListenerOptions = EventListenerOptions { unEventListenerOptions :: JSVal }

instance PToJSVal EventListenerOptions where
  pToJSVal = unEventListenerOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal EventListenerOptions where
  pFromJSVal = EventListenerOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal EventListenerOptions where
  toJSVal = return . unEventListenerOptions
  {-# INLINE toJSVal #-}

instance FromJSVal EventListenerOptions where
  fromJSVal v = fmap EventListenerOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EventListenerOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EventListenerOptions where
  makeObject = makeObject . unEventListenerOptions

class (IsGObject o) => IsEventListenerOptions o
toEventListenerOptions :: IsEventListenerOptions o => o -> EventListenerOptions
toEventListenerOptions = EventListenerOptions . coerce

instance IsEventListenerOptions EventListenerOptions

instance IsGObject EventListenerOptions where
  typeGType _ = gTypeEventListenerOptions
  {-# INLINE typeGType #-}

noEventListenerOptions :: Maybe EventListenerOptions
noEventListenerOptions = Nothing
{-# INLINE noEventListenerOptions #-}

gTypeEventListenerOptions :: JSM GType
gTypeEventListenerOptions = GType . Object <$> jsg "Object"

-- | Dictionary EventModifierInit (uievents)
newtype EventModifierInit = EventModifierInit { unEventModifierInit :: JSVal }

instance PToJSVal EventModifierInit where
  pToJSVal = unEventModifierInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal EventModifierInit where
  pFromJSVal = EventModifierInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal EventModifierInit where
  toJSVal = return . unEventModifierInit
  {-# INLINE toJSVal #-}

instance FromJSVal EventModifierInit where
  fromJSVal v = fmap EventModifierInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EventModifierInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EventModifierInit where
  makeObject = makeObject . unEventModifierInit

class (IsUIEventInit o, IsGObject o) => IsEventModifierInit o
toEventModifierInit :: IsEventModifierInit o => o -> EventModifierInit
toEventModifierInit = EventModifierInit . coerce

instance IsEventModifierInit EventModifierInit
instance IsUIEventInit EventModifierInit
instance IsEventInit EventModifierInit

instance IsGObject EventModifierInit where
  typeGType _ = gTypeEventModifierInit
  {-# INLINE typeGType #-}

noEventModifierInit :: Maybe EventModifierInit
noEventModifierInit = Nothing
{-# INLINE noEventModifierInit #-}

gTypeEventModifierInit :: JSM GType
gTypeEventModifierInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EventSource" (html).
newtype EventSource = EventSource { unEventSource :: JSVal }

instance PToJSVal EventSource where
  pToJSVal = unEventSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal EventSource where
  pFromJSVal = EventSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal EventSource where
  toJSVal = return . unEventSource
  {-# INLINE toJSVal #-}

instance FromJSVal EventSource where
  fromJSVal v = fmap EventSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EventSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EventSource where
  makeObject = makeObject . unEventSource

instance IsEventTarget EventSource

instance IsGObject EventSource where
  typeGType _ = gTypeEventSource
  {-# INLINE typeGType #-}

noEventSource :: Maybe EventSource
noEventSource = Nothing
{-# INLINE noEventSource #-}

gTypeEventSource :: JSM GType
gTypeEventSource = GType . Object <$> jsg "EventSource"

-- | Dictionary EventSourceInit (html)
newtype EventSourceInit = EventSourceInit { unEventSourceInit :: JSVal }

instance PToJSVal EventSourceInit where
  pToJSVal = unEventSourceInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal EventSourceInit where
  pFromJSVal = EventSourceInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal EventSourceInit where
  toJSVal = return . unEventSourceInit
  {-# INLINE toJSVal #-}

instance FromJSVal EventSourceInit where
  fromJSVal v = fmap EventSourceInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EventSourceInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EventSourceInit where
  makeObject = makeObject . unEventSourceInit


instance IsGObject EventSourceInit where
  typeGType _ = gTypeEventSourceInit
  {-# INLINE typeGType #-}

noEventSourceInit :: Maybe EventSourceInit
noEventSourceInit = Nothing
{-# INLINE noEventSourceInit #-}

gTypeEventSourceInit :: JSM GType
gTypeEventSourceInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.EventTarget" (dom).
newtype EventTarget = EventTarget { unEventTarget :: JSVal }

instance PToJSVal EventTarget where
  pToJSVal = unEventTarget
  {-# INLINE pToJSVal #-}

instance PFromJSVal EventTarget where
  pFromJSVal = EventTarget
  {-# INLINE pFromJSVal #-}

instance ToJSVal EventTarget where
  toJSVal = return . unEventTarget
  {-# INLINE toJSVal #-}

instance FromJSVal EventTarget where
  fromJSVal v = fmap EventTarget <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . EventTarget
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject EventTarget where
  makeObject = makeObject . unEventTarget

class (IsGObject o) => IsEventTarget o
toEventTarget :: IsEventTarget o => o -> EventTarget
toEventTarget = EventTarget . coerce

instance IsEventTarget EventTarget

instance IsGObject EventTarget where
  typeGType _ = gTypeEventTarget
  {-# INLINE typeGType #-}

noEventTarget :: Maybe EventTarget
noEventTarget = Nothing
{-# INLINE noEventTarget #-}

gTypeEventTarget :: JSM GType
gTypeEventTarget = GType . Object <$> jsg "EventTarget"

-- | Functions for this interface are in "JSDOM.ExtendableCookieChangeEvent" (cookiestore).
newtype ExtendableCookieChangeEvent = ExtendableCookieChangeEvent { unExtendableCookieChangeEvent :: JSVal }

instance PToJSVal ExtendableCookieChangeEvent where
  pToJSVal = unExtendableCookieChangeEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal ExtendableCookieChangeEvent where
  pFromJSVal = ExtendableCookieChangeEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal ExtendableCookieChangeEvent where
  toJSVal = return . unExtendableCookieChangeEvent
  {-# INLINE toJSVal #-}

instance FromJSVal ExtendableCookieChangeEvent where
  fromJSVal v = fmap ExtendableCookieChangeEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ExtendableCookieChangeEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ExtendableCookieChangeEvent where
  makeObject = makeObject . unExtendableCookieChangeEvent

instance IsExtendableEvent ExtendableCookieChangeEvent
instance IsEvent ExtendableCookieChangeEvent

instance IsGObject ExtendableCookieChangeEvent where
  typeGType _ = gTypeExtendableCookieChangeEvent
  {-# INLINE typeGType #-}

noExtendableCookieChangeEvent :: Maybe ExtendableCookieChangeEvent
noExtendableCookieChangeEvent = Nothing
{-# INLINE noExtendableCookieChangeEvent #-}

gTypeExtendableCookieChangeEvent :: JSM GType
gTypeExtendableCookieChangeEvent = GType . Object <$> jsg "ExtendableCookieChangeEvent"

-- | Dictionary ExtendableCookieChangeEventInit (cookiestore)
newtype ExtendableCookieChangeEventInit = ExtendableCookieChangeEventInit { unExtendableCookieChangeEventInit :: JSVal }

instance PToJSVal ExtendableCookieChangeEventInit where
  pToJSVal = unExtendableCookieChangeEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal ExtendableCookieChangeEventInit where
  pFromJSVal = ExtendableCookieChangeEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal ExtendableCookieChangeEventInit where
  toJSVal = return . unExtendableCookieChangeEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal ExtendableCookieChangeEventInit where
  fromJSVal v = fmap ExtendableCookieChangeEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ExtendableCookieChangeEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ExtendableCookieChangeEventInit where
  makeObject = makeObject . unExtendableCookieChangeEventInit

instance IsExtendableEventInit ExtendableCookieChangeEventInit
instance IsEventInit ExtendableCookieChangeEventInit

instance IsGObject ExtendableCookieChangeEventInit where
  typeGType _ = gTypeExtendableCookieChangeEventInit
  {-# INLINE typeGType #-}

noExtendableCookieChangeEventInit :: Maybe ExtendableCookieChangeEventInit
noExtendableCookieChangeEventInit = Nothing
{-# INLINE noExtendableCookieChangeEventInit #-}

gTypeExtendableCookieChangeEventInit :: JSM GType
gTypeExtendableCookieChangeEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ExtendableEvent" (service-workers).
newtype ExtendableEvent = ExtendableEvent { unExtendableEvent :: JSVal }

instance PToJSVal ExtendableEvent where
  pToJSVal = unExtendableEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal ExtendableEvent where
  pFromJSVal = ExtendableEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal ExtendableEvent where
  toJSVal = return . unExtendableEvent
  {-# INLINE toJSVal #-}

instance FromJSVal ExtendableEvent where
  fromJSVal v = fmap ExtendableEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ExtendableEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ExtendableEvent where
  makeObject = makeObject . unExtendableEvent

class (IsEvent o, IsGObject o) => IsExtendableEvent o
toExtendableEvent :: IsExtendableEvent o => o -> ExtendableEvent
toExtendableEvent = ExtendableEvent . coerce

instance IsExtendableEvent ExtendableEvent
instance IsEvent ExtendableEvent

instance IsGObject ExtendableEvent where
  typeGType _ = gTypeExtendableEvent
  {-# INLINE typeGType #-}

noExtendableEvent :: Maybe ExtendableEvent
noExtendableEvent = Nothing
{-# INLINE noExtendableEvent #-}

gTypeExtendableEvent :: JSM GType
gTypeExtendableEvent = GType . Object <$> jsg "ExtendableEvent"

-- | Dictionary ExtendableEventInit (service-workers)
newtype ExtendableEventInit = ExtendableEventInit { unExtendableEventInit :: JSVal }

instance PToJSVal ExtendableEventInit where
  pToJSVal = unExtendableEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal ExtendableEventInit where
  pFromJSVal = ExtendableEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal ExtendableEventInit where
  toJSVal = return . unExtendableEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal ExtendableEventInit where
  fromJSVal v = fmap ExtendableEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ExtendableEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ExtendableEventInit where
  makeObject = makeObject . unExtendableEventInit

class (IsEventInit o, IsGObject o) => IsExtendableEventInit o
toExtendableEventInit :: IsExtendableEventInit o => o -> ExtendableEventInit
toExtendableEventInit = ExtendableEventInit . coerce

instance IsExtendableEventInit ExtendableEventInit
instance IsEventInit ExtendableEventInit

instance IsGObject ExtendableEventInit where
  typeGType _ = gTypeExtendableEventInit
  {-# INLINE typeGType #-}

noExtendableEventInit :: Maybe ExtendableEventInit
noExtendableEventInit = Nothing
{-# INLINE noExtendableEventInit #-}

gTypeExtendableEventInit :: JSM GType
gTypeExtendableEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ExtendableMessageEvent" (service-workers).
newtype ExtendableMessageEvent = ExtendableMessageEvent { unExtendableMessageEvent :: JSVal }

instance PToJSVal ExtendableMessageEvent where
  pToJSVal = unExtendableMessageEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal ExtendableMessageEvent where
  pFromJSVal = ExtendableMessageEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal ExtendableMessageEvent where
  toJSVal = return . unExtendableMessageEvent
  {-# INLINE toJSVal #-}

instance FromJSVal ExtendableMessageEvent where
  fromJSVal v = fmap ExtendableMessageEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ExtendableMessageEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ExtendableMessageEvent where
  makeObject = makeObject . unExtendableMessageEvent

instance IsExtendableEvent ExtendableMessageEvent
instance IsEvent ExtendableMessageEvent

instance IsGObject ExtendableMessageEvent where
  typeGType _ = gTypeExtendableMessageEvent
  {-# INLINE typeGType #-}

noExtendableMessageEvent :: Maybe ExtendableMessageEvent
noExtendableMessageEvent = Nothing
{-# INLINE noExtendableMessageEvent #-}

gTypeExtendableMessageEvent :: JSM GType
gTypeExtendableMessageEvent = GType . Object <$> jsg "ExtendableMessageEvent"

-- | Dictionary ExtendableMessageEventInit (service-workers)
newtype ExtendableMessageEventInit = ExtendableMessageEventInit { unExtendableMessageEventInit :: JSVal }

instance PToJSVal ExtendableMessageEventInit where
  pToJSVal = unExtendableMessageEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal ExtendableMessageEventInit where
  pFromJSVal = ExtendableMessageEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal ExtendableMessageEventInit where
  toJSVal = return . unExtendableMessageEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal ExtendableMessageEventInit where
  fromJSVal v = fmap ExtendableMessageEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ExtendableMessageEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ExtendableMessageEventInit where
  makeObject = makeObject . unExtendableMessageEventInit

instance IsExtendableEventInit ExtendableMessageEventInit
instance IsEventInit ExtendableMessageEventInit

instance IsGObject ExtendableMessageEventInit where
  typeGType _ = gTypeExtendableMessageEventInit
  {-# INLINE typeGType #-}

noExtendableMessageEventInit :: Maybe ExtendableMessageEventInit
noExtendableMessageEventInit = Nothing
{-# INLINE noExtendableMessageEventInit #-}

gTypeExtendableMessageEventInit :: JSM GType
gTypeExtendableMessageEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.External" (html).
newtype External = External { unExternal :: JSVal }

instance PToJSVal External where
  pToJSVal = unExternal
  {-# INLINE pToJSVal #-}

instance PFromJSVal External where
  pFromJSVal = External
  {-# INLINE pFromJSVal #-}

instance ToJSVal External where
  toJSVal = return . unExternal
  {-# INLINE toJSVal #-}

instance FromJSVal External where
  fromJSVal v = fmap External <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . External
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject External where
  makeObject = makeObject . unExternal


instance IsGObject External where
  typeGType _ = gTypeExternal
  {-# INLINE typeGType #-}

noExternal :: Maybe External
noExternal = Nothing
{-# INLINE noExternal #-}

gTypeExternal :: JSM GType
gTypeExternal = GType . Object <$> jsg "External"

-- | Dictionary FederatedCredentialInit (credential-management-1)
newtype FederatedCredentialInit = FederatedCredentialInit { unFederatedCredentialInit :: JSVal }

instance PToJSVal FederatedCredentialInit where
  pToJSVal = unFederatedCredentialInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal FederatedCredentialInit where
  pFromJSVal = FederatedCredentialInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal FederatedCredentialInit where
  toJSVal = return . unFederatedCredentialInit
  {-# INLINE toJSVal #-}

instance FromJSVal FederatedCredentialInit where
  fromJSVal v = fmap FederatedCredentialInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FederatedCredentialInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FederatedCredentialInit where
  makeObject = makeObject . unFederatedCredentialInit

instance IsCredentialData FederatedCredentialInit

instance IsGObject FederatedCredentialInit where
  typeGType _ = gTypeFederatedCredentialInit
  {-# INLINE typeGType #-}

noFederatedCredentialInit :: Maybe FederatedCredentialInit
noFederatedCredentialInit = Nothing
{-# INLINE noFederatedCredentialInit #-}

gTypeFederatedCredentialInit :: JSM GType
gTypeFederatedCredentialInit = GType . Object <$> jsg "Object"

-- | Dictionary FederatedCredentialRequestOptions (credential-management-1)
newtype FederatedCredentialRequestOptions = FederatedCredentialRequestOptions { unFederatedCredentialRequestOptions :: JSVal }

instance PToJSVal FederatedCredentialRequestOptions where
  pToJSVal = unFederatedCredentialRequestOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal FederatedCredentialRequestOptions where
  pFromJSVal = FederatedCredentialRequestOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal FederatedCredentialRequestOptions where
  toJSVal = return . unFederatedCredentialRequestOptions
  {-# INLINE toJSVal #-}

instance FromJSVal FederatedCredentialRequestOptions where
  fromJSVal v = fmap FederatedCredentialRequestOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FederatedCredentialRequestOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FederatedCredentialRequestOptions where
  makeObject = makeObject . unFederatedCredentialRequestOptions


instance IsGObject FederatedCredentialRequestOptions where
  typeGType _ = gTypeFederatedCredentialRequestOptions
  {-# INLINE typeGType #-}

noFederatedCredentialRequestOptions :: Maybe FederatedCredentialRequestOptions
noFederatedCredentialRequestOptions = Nothing
{-# INLINE noFederatedCredentialRequestOptions #-}

gTypeFederatedCredentialRequestOptions :: JSM GType
gTypeFederatedCredentialRequestOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.FetchEvent" (service-workers).
newtype FetchEvent = FetchEvent { unFetchEvent :: JSVal }

instance PToJSVal FetchEvent where
  pToJSVal = unFetchEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal FetchEvent where
  pFromJSVal = FetchEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal FetchEvent where
  toJSVal = return . unFetchEvent
  {-# INLINE toJSVal #-}

instance FromJSVal FetchEvent where
  fromJSVal v = fmap FetchEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FetchEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FetchEvent where
  makeObject = makeObject . unFetchEvent

instance IsExtendableEvent FetchEvent
instance IsEvent FetchEvent

instance IsGObject FetchEvent where
  typeGType _ = gTypeFetchEvent
  {-# INLINE typeGType #-}

noFetchEvent :: Maybe FetchEvent
noFetchEvent = Nothing
{-# INLINE noFetchEvent #-}

gTypeFetchEvent :: JSM GType
gTypeFetchEvent = GType . Object <$> jsg "FetchEvent"

-- | Dictionary FetchEventInit (service-workers)
newtype FetchEventInit = FetchEventInit { unFetchEventInit :: JSVal }

instance PToJSVal FetchEventInit where
  pToJSVal = unFetchEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal FetchEventInit where
  pFromJSVal = FetchEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal FetchEventInit where
  toJSVal = return . unFetchEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal FetchEventInit where
  fromJSVal v = fmap FetchEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FetchEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FetchEventInit where
  makeObject = makeObject . unFetchEventInit

instance IsExtendableEventInit FetchEventInit
instance IsEventInit FetchEventInit

instance IsGObject FetchEventInit where
  typeGType _ = gTypeFetchEventInit
  {-# INLINE typeGType #-}

noFetchEventInit :: Maybe FetchEventInit
noFetchEventInit = Nothing
{-# INLINE noFetchEventInit #-}

gTypeFetchEventInit :: JSM GType
gTypeFetchEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.File" (FileAPI).
newtype File = File { unFile :: JSVal }

instance PToJSVal File where
  pToJSVal = unFile
  {-# INLINE pToJSVal #-}

instance PFromJSVal File where
  pFromJSVal = File
  {-# INLINE pFromJSVal #-}

instance ToJSVal File where
  toJSVal = return . unFile
  {-# INLINE toJSVal #-}

instance FromJSVal File where
  fromJSVal v = fmap File <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . File
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject File where
  makeObject = makeObject . unFile

instance IsBlob File

instance IsGObject File where
  typeGType _ = gTypeFile
  {-# INLINE typeGType #-}

noFile :: Maybe File
noFile = Nothing
{-# INLINE noFile #-}

gTypeFile :: JSM GType
gTypeFile = GType . Object <$> jsg "File"

-- | Functions for this interface are in "JSDOM.FileList" (FileAPI).
newtype FileList = FileList { unFileList :: JSVal }

instance PToJSVal FileList where
  pToJSVal = unFileList
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileList where
  pFromJSVal = FileList
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileList where
  toJSVal = return . unFileList
  {-# INLINE toJSVal #-}

instance FromJSVal FileList where
  fromJSVal v = fmap FileList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileList where
  makeObject = makeObject . unFileList


instance IsGObject FileList where
  typeGType _ = gTypeFileList
  {-# INLINE typeGType #-}

noFileList :: Maybe FileList
noFileList = Nothing
{-# INLINE noFileList #-}

gTypeFileList :: JSM GType
gTypeFileList = GType . Object <$> jsg "FileList"

-- | Dictionary FilePropertyBag (FileAPI)
newtype FilePropertyBag = FilePropertyBag { unFilePropertyBag :: JSVal }

instance PToJSVal FilePropertyBag where
  pToJSVal = unFilePropertyBag
  {-# INLINE pToJSVal #-}

instance PFromJSVal FilePropertyBag where
  pFromJSVal = FilePropertyBag
  {-# INLINE pFromJSVal #-}

instance ToJSVal FilePropertyBag where
  toJSVal = return . unFilePropertyBag
  {-# INLINE toJSVal #-}

instance FromJSVal FilePropertyBag where
  fromJSVal v = fmap FilePropertyBag <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FilePropertyBag
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FilePropertyBag where
  makeObject = makeObject . unFilePropertyBag

instance IsBlobPropertyBag FilePropertyBag

instance IsGObject FilePropertyBag where
  typeGType _ = gTypeFilePropertyBag
  {-# INLINE typeGType #-}

noFilePropertyBag :: Maybe FilePropertyBag
noFilePropertyBag = Nothing
{-# INLINE noFilePropertyBag #-}

gTypeFilePropertyBag :: JSM GType
gTypeFilePropertyBag = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.FileReader" (FileAPI).
newtype FileReader = FileReader { unFileReader :: JSVal }

instance PToJSVal FileReader where
  pToJSVal = unFileReader
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileReader where
  pFromJSVal = FileReader
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileReader where
  toJSVal = return . unFileReader
  {-# INLINE toJSVal #-}

instance FromJSVal FileReader where
  fromJSVal v = fmap FileReader <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileReader
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileReader where
  makeObject = makeObject . unFileReader

instance IsEventTarget FileReader

instance IsGObject FileReader where
  typeGType _ = gTypeFileReader
  {-# INLINE typeGType #-}

noFileReader :: Maybe FileReader
noFileReader = Nothing
{-# INLINE noFileReader #-}

gTypeFileReader :: JSM GType
gTypeFileReader = GType . Object <$> jsg "FileReader"

-- | Functions for this interface are in "JSDOM.FileReaderSync" (FileAPI).
newtype FileReaderSync = FileReaderSync { unFileReaderSync :: JSVal }

instance PToJSVal FileReaderSync where
  pToJSVal = unFileReaderSync
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileReaderSync where
  pFromJSVal = FileReaderSync
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileReaderSync where
  toJSVal = return . unFileReaderSync
  {-# INLINE toJSVal #-}

instance FromJSVal FileReaderSync where
  fromJSVal v = fmap FileReaderSync <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileReaderSync
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileReaderSync where
  makeObject = makeObject . unFileReaderSync


instance IsGObject FileReaderSync where
  typeGType _ = gTypeFileReaderSync
  {-# INLINE typeGType #-}

noFileReaderSync :: Maybe FileReaderSync
noFileReaderSync = Nothing
{-# INLINE noFileReaderSync #-}

gTypeFileReaderSync :: JSM GType
gTypeFileReaderSync = GType . Object <$> jsg "FileReaderSync"

-- | Functions for this interface are in "JSDOM.FileSystem" (entries-api).
newtype FileSystem = FileSystem { unFileSystem :: JSVal }

instance PToJSVal FileSystem where
  pToJSVal = unFileSystem
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystem where
  pFromJSVal = FileSystem
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystem where
  toJSVal = return . unFileSystem
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystem where
  fromJSVal v = fmap FileSystem <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystem
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystem where
  makeObject = makeObject . unFileSystem


instance IsGObject FileSystem where
  typeGType _ = gTypeFileSystem
  {-# INLINE typeGType #-}

noFileSystem :: Maybe FileSystem
noFileSystem = Nothing
{-# INLINE noFileSystem #-}

gTypeFileSystem :: JSM GType
gTypeFileSystem = GType . Object <$> jsg "FileSystem"

-- | Dictionary FileSystemCreateWritableOptions (fs)
newtype FileSystemCreateWritableOptions = FileSystemCreateWritableOptions { unFileSystemCreateWritableOptions :: JSVal }

instance PToJSVal FileSystemCreateWritableOptions where
  pToJSVal = unFileSystemCreateWritableOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemCreateWritableOptions where
  pFromJSVal = FileSystemCreateWritableOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemCreateWritableOptions where
  toJSVal = return . unFileSystemCreateWritableOptions
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemCreateWritableOptions where
  fromJSVal v = fmap FileSystemCreateWritableOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemCreateWritableOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemCreateWritableOptions where
  makeObject = makeObject . unFileSystemCreateWritableOptions


instance IsGObject FileSystemCreateWritableOptions where
  typeGType _ = gTypeFileSystemCreateWritableOptions
  {-# INLINE typeGType #-}

noFileSystemCreateWritableOptions :: Maybe FileSystemCreateWritableOptions
noFileSystemCreateWritableOptions = Nothing
{-# INLINE noFileSystemCreateWritableOptions #-}

gTypeFileSystemCreateWritableOptions :: JSM GType
gTypeFileSystemCreateWritableOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.FileSystemDirectoryEntry" (entries-api).
newtype FileSystemDirectoryEntry = FileSystemDirectoryEntry { unFileSystemDirectoryEntry :: JSVal }

instance PToJSVal FileSystemDirectoryEntry where
  pToJSVal = unFileSystemDirectoryEntry
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemDirectoryEntry where
  pFromJSVal = FileSystemDirectoryEntry
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemDirectoryEntry where
  toJSVal = return . unFileSystemDirectoryEntry
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemDirectoryEntry where
  fromJSVal v = fmap FileSystemDirectoryEntry <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemDirectoryEntry
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemDirectoryEntry where
  makeObject = makeObject . unFileSystemDirectoryEntry

instance IsFileSystemEntry FileSystemDirectoryEntry

instance IsGObject FileSystemDirectoryEntry where
  typeGType _ = gTypeFileSystemDirectoryEntry
  {-# INLINE typeGType #-}

noFileSystemDirectoryEntry :: Maybe FileSystemDirectoryEntry
noFileSystemDirectoryEntry = Nothing
{-# INLINE noFileSystemDirectoryEntry #-}

gTypeFileSystemDirectoryEntry :: JSM GType
gTypeFileSystemDirectoryEntry = GType . Object <$> jsg "FileSystemDirectoryEntry"

-- | Functions for this interface are in "JSDOM.FileSystemDirectoryHandle" (fs).
newtype FileSystemDirectoryHandle = FileSystemDirectoryHandle { unFileSystemDirectoryHandle :: JSVal }

instance PToJSVal FileSystemDirectoryHandle where
  pToJSVal = unFileSystemDirectoryHandle
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemDirectoryHandle where
  pFromJSVal = FileSystemDirectoryHandle
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemDirectoryHandle where
  toJSVal = return . unFileSystemDirectoryHandle
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemDirectoryHandle where
  fromJSVal v = fmap FileSystemDirectoryHandle <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemDirectoryHandle
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemDirectoryHandle where
  makeObject = makeObject . unFileSystemDirectoryHandle

instance IsFileSystemHandle FileSystemDirectoryHandle

instance IsGObject FileSystemDirectoryHandle where
  typeGType _ = gTypeFileSystemDirectoryHandle
  {-# INLINE typeGType #-}

noFileSystemDirectoryHandle :: Maybe FileSystemDirectoryHandle
noFileSystemDirectoryHandle = Nothing
{-# INLINE noFileSystemDirectoryHandle #-}

gTypeFileSystemDirectoryHandle :: JSM GType
gTypeFileSystemDirectoryHandle = GType . Object <$> jsg "FileSystemDirectoryHandle"

-- | Functions for this interface are in "JSDOM.FileSystemDirectoryReader" (entries-api).
newtype FileSystemDirectoryReader = FileSystemDirectoryReader { unFileSystemDirectoryReader :: JSVal }

instance PToJSVal FileSystemDirectoryReader where
  pToJSVal = unFileSystemDirectoryReader
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemDirectoryReader where
  pFromJSVal = FileSystemDirectoryReader
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemDirectoryReader where
  toJSVal = return . unFileSystemDirectoryReader
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemDirectoryReader where
  fromJSVal v = fmap FileSystemDirectoryReader <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemDirectoryReader
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemDirectoryReader where
  makeObject = makeObject . unFileSystemDirectoryReader


instance IsGObject FileSystemDirectoryReader where
  typeGType _ = gTypeFileSystemDirectoryReader
  {-# INLINE typeGType #-}

noFileSystemDirectoryReader :: Maybe FileSystemDirectoryReader
noFileSystemDirectoryReader = Nothing
{-# INLINE noFileSystemDirectoryReader #-}

gTypeFileSystemDirectoryReader :: JSM GType
gTypeFileSystemDirectoryReader = GType . Object <$> jsg "FileSystemDirectoryReader"

-- | Functions for this interface are in "JSDOM.FileSystemEntry" (entries-api).
newtype FileSystemEntry = FileSystemEntry { unFileSystemEntry :: JSVal }

instance PToJSVal FileSystemEntry where
  pToJSVal = unFileSystemEntry
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemEntry where
  pFromJSVal = FileSystemEntry
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemEntry where
  toJSVal = return . unFileSystemEntry
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemEntry where
  fromJSVal v = fmap FileSystemEntry <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemEntry
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemEntry where
  makeObject = makeObject . unFileSystemEntry

class (IsGObject o) => IsFileSystemEntry o
toFileSystemEntry :: IsFileSystemEntry o => o -> FileSystemEntry
toFileSystemEntry = FileSystemEntry . coerce

instance IsFileSystemEntry FileSystemEntry

instance IsGObject FileSystemEntry where
  typeGType _ = gTypeFileSystemEntry
  {-# INLINE typeGType #-}

noFileSystemEntry :: Maybe FileSystemEntry
noFileSystemEntry = Nothing
{-# INLINE noFileSystemEntry #-}

gTypeFileSystemEntry :: JSM GType
gTypeFileSystemEntry = GType . Object <$> jsg "FileSystemEntry"

-- | Functions for this interface are in "JSDOM.FileSystemFileEntry" (entries-api).
newtype FileSystemFileEntry = FileSystemFileEntry { unFileSystemFileEntry :: JSVal }

instance PToJSVal FileSystemFileEntry where
  pToJSVal = unFileSystemFileEntry
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemFileEntry where
  pFromJSVal = FileSystemFileEntry
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemFileEntry where
  toJSVal = return . unFileSystemFileEntry
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemFileEntry where
  fromJSVal v = fmap FileSystemFileEntry <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemFileEntry
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemFileEntry where
  makeObject = makeObject . unFileSystemFileEntry

instance IsFileSystemEntry FileSystemFileEntry

instance IsGObject FileSystemFileEntry where
  typeGType _ = gTypeFileSystemFileEntry
  {-# INLINE typeGType #-}

noFileSystemFileEntry :: Maybe FileSystemFileEntry
noFileSystemFileEntry = Nothing
{-# INLINE noFileSystemFileEntry #-}

gTypeFileSystemFileEntry :: JSM GType
gTypeFileSystemFileEntry = GType . Object <$> jsg "FileSystemFileEntry"

-- | Functions for this interface are in "JSDOM.FileSystemFileHandle" (fs).
newtype FileSystemFileHandle = FileSystemFileHandle { unFileSystemFileHandle :: JSVal }

instance PToJSVal FileSystemFileHandle where
  pToJSVal = unFileSystemFileHandle
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemFileHandle where
  pFromJSVal = FileSystemFileHandle
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemFileHandle where
  toJSVal = return . unFileSystemFileHandle
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemFileHandle where
  fromJSVal v = fmap FileSystemFileHandle <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemFileHandle
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemFileHandle where
  makeObject = makeObject . unFileSystemFileHandle

instance IsFileSystemHandle FileSystemFileHandle

instance IsGObject FileSystemFileHandle where
  typeGType _ = gTypeFileSystemFileHandle
  {-# INLINE typeGType #-}

noFileSystemFileHandle :: Maybe FileSystemFileHandle
noFileSystemFileHandle = Nothing
{-# INLINE noFileSystemFileHandle #-}

gTypeFileSystemFileHandle :: JSM GType
gTypeFileSystemFileHandle = GType . Object <$> jsg "FileSystemFileHandle"

-- | Dictionary FileSystemFlags (entries-api)
newtype FileSystemFlags = FileSystemFlags { unFileSystemFlags :: JSVal }

instance PToJSVal FileSystemFlags where
  pToJSVal = unFileSystemFlags
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemFlags where
  pFromJSVal = FileSystemFlags
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemFlags where
  toJSVal = return . unFileSystemFlags
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemFlags where
  fromJSVal v = fmap FileSystemFlags <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemFlags
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemFlags where
  makeObject = makeObject . unFileSystemFlags


instance IsGObject FileSystemFlags where
  typeGType _ = gTypeFileSystemFlags
  {-# INLINE typeGType #-}

noFileSystemFlags :: Maybe FileSystemFlags
noFileSystemFlags = Nothing
{-# INLINE noFileSystemFlags #-}

gTypeFileSystemFlags :: JSM GType
gTypeFileSystemFlags = GType . Object <$> jsg "Object"

-- | Dictionary FileSystemGetDirectoryOptions (fs)
newtype FileSystemGetDirectoryOptions = FileSystemGetDirectoryOptions { unFileSystemGetDirectoryOptions :: JSVal }

instance PToJSVal FileSystemGetDirectoryOptions where
  pToJSVal = unFileSystemGetDirectoryOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemGetDirectoryOptions where
  pFromJSVal = FileSystemGetDirectoryOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemGetDirectoryOptions where
  toJSVal = return . unFileSystemGetDirectoryOptions
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemGetDirectoryOptions where
  fromJSVal v = fmap FileSystemGetDirectoryOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemGetDirectoryOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemGetDirectoryOptions where
  makeObject = makeObject . unFileSystemGetDirectoryOptions


instance IsGObject FileSystemGetDirectoryOptions where
  typeGType _ = gTypeFileSystemGetDirectoryOptions
  {-# INLINE typeGType #-}

noFileSystemGetDirectoryOptions :: Maybe FileSystemGetDirectoryOptions
noFileSystemGetDirectoryOptions = Nothing
{-# INLINE noFileSystemGetDirectoryOptions #-}

gTypeFileSystemGetDirectoryOptions :: JSM GType
gTypeFileSystemGetDirectoryOptions = GType . Object <$> jsg "Object"

-- | Dictionary FileSystemGetFileOptions (fs)
newtype FileSystemGetFileOptions = FileSystemGetFileOptions { unFileSystemGetFileOptions :: JSVal }

instance PToJSVal FileSystemGetFileOptions where
  pToJSVal = unFileSystemGetFileOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemGetFileOptions where
  pFromJSVal = FileSystemGetFileOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemGetFileOptions where
  toJSVal = return . unFileSystemGetFileOptions
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemGetFileOptions where
  fromJSVal v = fmap FileSystemGetFileOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemGetFileOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemGetFileOptions where
  makeObject = makeObject . unFileSystemGetFileOptions


instance IsGObject FileSystemGetFileOptions where
  typeGType _ = gTypeFileSystemGetFileOptions
  {-# INLINE typeGType #-}

noFileSystemGetFileOptions :: Maybe FileSystemGetFileOptions
noFileSystemGetFileOptions = Nothing
{-# INLINE noFileSystemGetFileOptions #-}

gTypeFileSystemGetFileOptions :: JSM GType
gTypeFileSystemGetFileOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.FileSystemHandle" (fs).
newtype FileSystemHandle = FileSystemHandle { unFileSystemHandle :: JSVal }

instance PToJSVal FileSystemHandle where
  pToJSVal = unFileSystemHandle
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemHandle where
  pFromJSVal = FileSystemHandle
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemHandle where
  toJSVal = return . unFileSystemHandle
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemHandle where
  fromJSVal v = fmap FileSystemHandle <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemHandle
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemHandle where
  makeObject = makeObject . unFileSystemHandle

class (IsGObject o) => IsFileSystemHandle o
toFileSystemHandle :: IsFileSystemHandle o => o -> FileSystemHandle
toFileSystemHandle = FileSystemHandle . coerce

instance IsFileSystemHandle FileSystemHandle

instance IsGObject FileSystemHandle where
  typeGType _ = gTypeFileSystemHandle
  {-# INLINE typeGType #-}

noFileSystemHandle :: Maybe FileSystemHandle
noFileSystemHandle = Nothing
{-# INLINE noFileSystemHandle #-}

gTypeFileSystemHandle :: JSM GType
gTypeFileSystemHandle = GType . Object <$> jsg "FileSystemHandle"

-- | Dictionary FileSystemReadWriteOptions (fs)
newtype FileSystemReadWriteOptions = FileSystemReadWriteOptions { unFileSystemReadWriteOptions :: JSVal }

instance PToJSVal FileSystemReadWriteOptions where
  pToJSVal = unFileSystemReadWriteOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemReadWriteOptions where
  pFromJSVal = FileSystemReadWriteOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemReadWriteOptions where
  toJSVal = return . unFileSystemReadWriteOptions
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemReadWriteOptions where
  fromJSVal v = fmap FileSystemReadWriteOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemReadWriteOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemReadWriteOptions where
  makeObject = makeObject . unFileSystemReadWriteOptions


instance IsGObject FileSystemReadWriteOptions where
  typeGType _ = gTypeFileSystemReadWriteOptions
  {-# INLINE typeGType #-}

noFileSystemReadWriteOptions :: Maybe FileSystemReadWriteOptions
noFileSystemReadWriteOptions = Nothing
{-# INLINE noFileSystemReadWriteOptions #-}

gTypeFileSystemReadWriteOptions :: JSM GType
gTypeFileSystemReadWriteOptions = GType . Object <$> jsg "Object"

-- | Dictionary FileSystemRemoveOptions (fs)
newtype FileSystemRemoveOptions = FileSystemRemoveOptions { unFileSystemRemoveOptions :: JSVal }

instance PToJSVal FileSystemRemoveOptions where
  pToJSVal = unFileSystemRemoveOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemRemoveOptions where
  pFromJSVal = FileSystemRemoveOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemRemoveOptions where
  toJSVal = return . unFileSystemRemoveOptions
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemRemoveOptions where
  fromJSVal v = fmap FileSystemRemoveOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemRemoveOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemRemoveOptions where
  makeObject = makeObject . unFileSystemRemoveOptions


instance IsGObject FileSystemRemoveOptions where
  typeGType _ = gTypeFileSystemRemoveOptions
  {-# INLINE typeGType #-}

noFileSystemRemoveOptions :: Maybe FileSystemRemoveOptions
noFileSystemRemoveOptions = Nothing
{-# INLINE noFileSystemRemoveOptions #-}

gTypeFileSystemRemoveOptions :: JSM GType
gTypeFileSystemRemoveOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.FileSystemSyncAccessHandle" (fs).
newtype FileSystemSyncAccessHandle = FileSystemSyncAccessHandle { unFileSystemSyncAccessHandle :: JSVal }

instance PToJSVal FileSystemSyncAccessHandle where
  pToJSVal = unFileSystemSyncAccessHandle
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemSyncAccessHandle where
  pFromJSVal = FileSystemSyncAccessHandle
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemSyncAccessHandle where
  toJSVal = return . unFileSystemSyncAccessHandle
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemSyncAccessHandle where
  fromJSVal v = fmap FileSystemSyncAccessHandle <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemSyncAccessHandle
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemSyncAccessHandle where
  makeObject = makeObject . unFileSystemSyncAccessHandle


instance IsGObject FileSystemSyncAccessHandle where
  typeGType _ = gTypeFileSystemSyncAccessHandle
  {-# INLINE typeGType #-}

noFileSystemSyncAccessHandle :: Maybe FileSystemSyncAccessHandle
noFileSystemSyncAccessHandle = Nothing
{-# INLINE noFileSystemSyncAccessHandle #-}

gTypeFileSystemSyncAccessHandle :: JSM GType
gTypeFileSystemSyncAccessHandle = GType . Object <$> jsg "FileSystemSyncAccessHandle"

-- | Functions for this interface are in "JSDOM.FileSystemWritableFileStream" (fs).
newtype FileSystemWritableFileStream = FileSystemWritableFileStream { unFileSystemWritableFileStream :: JSVal }

instance PToJSVal FileSystemWritableFileStream where
  pToJSVal = unFileSystemWritableFileStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal FileSystemWritableFileStream where
  pFromJSVal = FileSystemWritableFileStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal FileSystemWritableFileStream where
  toJSVal = return . unFileSystemWritableFileStream
  {-# INLINE toJSVal #-}

instance FromJSVal FileSystemWritableFileStream where
  fromJSVal v = fmap FileSystemWritableFileStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FileSystemWritableFileStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FileSystemWritableFileStream where
  makeObject = makeObject . unFileSystemWritableFileStream

instance IsWritableStream FileSystemWritableFileStream

instance IsGObject FileSystemWritableFileStream where
  typeGType _ = gTypeFileSystemWritableFileStream
  {-# INLINE typeGType #-}

noFileSystemWritableFileStream :: Maybe FileSystemWritableFileStream
noFileSystemWritableFileStream = Nothing
{-# INLINE noFileSystemWritableFileStream #-}

gTypeFileSystemWritableFileStream :: JSM GType
gTypeFileSystemWritableFileStream = GType . Object <$> jsg "FileSystemWritableFileStream"

-- | Dictionary FlacEncoderConfig (webcodecs-flac-codec-registration)
newtype FlacEncoderConfig = FlacEncoderConfig { unFlacEncoderConfig :: JSVal }

instance PToJSVal FlacEncoderConfig where
  pToJSVal = unFlacEncoderConfig
  {-# INLINE pToJSVal #-}

instance PFromJSVal FlacEncoderConfig where
  pFromJSVal = FlacEncoderConfig
  {-# INLINE pFromJSVal #-}

instance ToJSVal FlacEncoderConfig where
  toJSVal = return . unFlacEncoderConfig
  {-# INLINE toJSVal #-}

instance FromJSVal FlacEncoderConfig where
  fromJSVal v = fmap FlacEncoderConfig <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FlacEncoderConfig
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FlacEncoderConfig where
  makeObject = makeObject . unFlacEncoderConfig


instance IsGObject FlacEncoderConfig where
  typeGType _ = gTypeFlacEncoderConfig
  {-# INLINE typeGType #-}

noFlacEncoderConfig :: Maybe FlacEncoderConfig
noFlacEncoderConfig = Nothing
{-# INLINE noFlacEncoderConfig #-}

gTypeFlacEncoderConfig :: JSM GType
gTypeFlacEncoderConfig = GType . Object <$> jsg "Object"

newtype Float16Array = Float16Array { unFloat16Array :: JSVal }

instance PToJSVal Float16Array where
  pToJSVal = unFloat16Array
  {-# INLINE pToJSVal #-}

instance PFromJSVal Float16Array where
  pFromJSVal = Float16Array
  {-# INLINE pFromJSVal #-}

instance ToJSVal Float16Array where
  toJSVal = return . unFloat16Array
  {-# INLINE toJSVal #-}

instance FromJSVal Float16Array where
  fromJSVal v = fmap Float16Array <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Float16Array
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Float16Array where
  makeObject = makeObject . unFloat16Array

instance IsArrayBufferView Float16Array

instance IsGObject Float16Array where
  typeGType _ = gTypeFloat16Array
  {-# INLINE typeGType #-}

noFloat16Array :: Maybe Float16Array
noFloat16Array = Nothing
{-# INLINE noFloat16Array #-}

gTypeFloat16Array :: JSM GType
gTypeFloat16Array = GType . Object <$> jsg "Float16Array"

-- | Functions for this interface are in "JSDOM.FocusEvent" (uievents).
newtype FocusEvent = FocusEvent { unFocusEvent :: JSVal }

instance PToJSVal FocusEvent where
  pToJSVal = unFocusEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal FocusEvent where
  pFromJSVal = FocusEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal FocusEvent where
  toJSVal = return . unFocusEvent
  {-# INLINE toJSVal #-}

instance FromJSVal FocusEvent where
  fromJSVal v = fmap FocusEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FocusEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FocusEvent where
  makeObject = makeObject . unFocusEvent

instance IsUIEvent FocusEvent
instance IsEvent FocusEvent

instance IsGObject FocusEvent where
  typeGType _ = gTypeFocusEvent
  {-# INLINE typeGType #-}

noFocusEvent :: Maybe FocusEvent
noFocusEvent = Nothing
{-# INLINE noFocusEvent #-}

gTypeFocusEvent :: JSM GType
gTypeFocusEvent = GType . Object <$> jsg "FocusEvent"

-- | Dictionary FocusEventInit (uievents)
newtype FocusEventInit = FocusEventInit { unFocusEventInit :: JSVal }

instance PToJSVal FocusEventInit where
  pToJSVal = unFocusEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal FocusEventInit where
  pFromJSVal = FocusEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal FocusEventInit where
  toJSVal = return . unFocusEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal FocusEventInit where
  fromJSVal v = fmap FocusEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FocusEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FocusEventInit where
  makeObject = makeObject . unFocusEventInit

instance IsUIEventInit FocusEventInit
instance IsEventInit FocusEventInit

instance IsGObject FocusEventInit where
  typeGType _ = gTypeFocusEventInit
  {-# INLINE typeGType #-}

noFocusEventInit :: Maybe FocusEventInit
noFocusEventInit = Nothing
{-# INLINE noFocusEventInit #-}

gTypeFocusEventInit :: JSM GType
gTypeFocusEventInit = GType . Object <$> jsg "Object"

-- | Dictionary FocusOptions (html)
newtype FocusOptions = FocusOptions { unFocusOptions :: JSVal }

instance PToJSVal FocusOptions where
  pToJSVal = unFocusOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal FocusOptions where
  pFromJSVal = FocusOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal FocusOptions where
  toJSVal = return . unFocusOptions
  {-# INLINE toJSVal #-}

instance FromJSVal FocusOptions where
  fromJSVal v = fmap FocusOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FocusOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FocusOptions where
  makeObject = makeObject . unFocusOptions


instance IsGObject FocusOptions where
  typeGType _ = gTypeFocusOptions
  {-# INLINE typeGType #-}

noFocusOptions :: Maybe FocusOptions
noFocusOptions = Nothing
{-# INLINE noFocusOptions #-}

gTypeFocusOptions :: JSM GType
gTypeFocusOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.FontFace" (css-font-loading-3).
newtype FontFace = FontFace { unFontFace :: JSVal }

instance PToJSVal FontFace where
  pToJSVal = unFontFace
  {-# INLINE pToJSVal #-}

instance PFromJSVal FontFace where
  pFromJSVal = FontFace
  {-# INLINE pFromJSVal #-}

instance ToJSVal FontFace where
  toJSVal = return . unFontFace
  {-# INLINE toJSVal #-}

instance FromJSVal FontFace where
  fromJSVal v = fmap FontFace <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FontFace
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FontFace where
  makeObject = makeObject . unFontFace


instance IsGObject FontFace where
  typeGType _ = gTypeFontFace
  {-# INLINE typeGType #-}

noFontFace :: Maybe FontFace
noFontFace = Nothing
{-# INLINE noFontFace #-}

gTypeFontFace :: JSM GType
gTypeFontFace = GType . Object <$> jsg "FontFace"

-- | Dictionary FontFaceDescriptors (css-font-loading-3)
newtype FontFaceDescriptors = FontFaceDescriptors { unFontFaceDescriptors :: JSVal }

instance PToJSVal FontFaceDescriptors where
  pToJSVal = unFontFaceDescriptors
  {-# INLINE pToJSVal #-}

instance PFromJSVal FontFaceDescriptors where
  pFromJSVal = FontFaceDescriptors
  {-# INLINE pFromJSVal #-}

instance ToJSVal FontFaceDescriptors where
  toJSVal = return . unFontFaceDescriptors
  {-# INLINE toJSVal #-}

instance FromJSVal FontFaceDescriptors where
  fromJSVal v = fmap FontFaceDescriptors <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FontFaceDescriptors
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FontFaceDescriptors where
  makeObject = makeObject . unFontFaceDescriptors


instance IsGObject FontFaceDescriptors where
  typeGType _ = gTypeFontFaceDescriptors
  {-# INLINE typeGType #-}

noFontFaceDescriptors :: Maybe FontFaceDescriptors
noFontFaceDescriptors = Nothing
{-# INLINE noFontFaceDescriptors #-}

gTypeFontFaceDescriptors :: JSM GType
gTypeFontFaceDescriptors = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.FontFaceSet" (css-font-loading-3).
newtype FontFaceSet = FontFaceSet { unFontFaceSet :: JSVal }

instance PToJSVal FontFaceSet where
  pToJSVal = unFontFaceSet
  {-# INLINE pToJSVal #-}

instance PFromJSVal FontFaceSet where
  pFromJSVal = FontFaceSet
  {-# INLINE pFromJSVal #-}

instance ToJSVal FontFaceSet where
  toJSVal = return . unFontFaceSet
  {-# INLINE toJSVal #-}

instance FromJSVal FontFaceSet where
  fromJSVal v = fmap FontFaceSet <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FontFaceSet
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FontFaceSet where
  makeObject = makeObject . unFontFaceSet

instance IsEventTarget FontFaceSet

instance IsGObject FontFaceSet where
  typeGType _ = gTypeFontFaceSet
  {-# INLINE typeGType #-}

noFontFaceSet :: Maybe FontFaceSet
noFontFaceSet = Nothing
{-# INLINE noFontFaceSet #-}

gTypeFontFaceSet :: JSM GType
gTypeFontFaceSet = GType . Object <$> jsg "FontFaceSet"

-- | Functions for this interface are in "JSDOM.FontFaceSetLoadEvent" (css-font-loading-3).
newtype FontFaceSetLoadEvent = FontFaceSetLoadEvent { unFontFaceSetLoadEvent :: JSVal }

instance PToJSVal FontFaceSetLoadEvent where
  pToJSVal = unFontFaceSetLoadEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal FontFaceSetLoadEvent where
  pFromJSVal = FontFaceSetLoadEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal FontFaceSetLoadEvent where
  toJSVal = return . unFontFaceSetLoadEvent
  {-# INLINE toJSVal #-}

instance FromJSVal FontFaceSetLoadEvent where
  fromJSVal v = fmap FontFaceSetLoadEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FontFaceSetLoadEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FontFaceSetLoadEvent where
  makeObject = makeObject . unFontFaceSetLoadEvent

instance IsEvent FontFaceSetLoadEvent

instance IsGObject FontFaceSetLoadEvent where
  typeGType _ = gTypeFontFaceSetLoadEvent
  {-# INLINE typeGType #-}

noFontFaceSetLoadEvent :: Maybe FontFaceSetLoadEvent
noFontFaceSetLoadEvent = Nothing
{-# INLINE noFontFaceSetLoadEvent #-}

gTypeFontFaceSetLoadEvent :: JSM GType
gTypeFontFaceSetLoadEvent = GType . Object <$> jsg "FontFaceSetLoadEvent"

-- | Dictionary FontFaceSetLoadEventInit (css-font-loading-3)
newtype FontFaceSetLoadEventInit = FontFaceSetLoadEventInit { unFontFaceSetLoadEventInit :: JSVal }

instance PToJSVal FontFaceSetLoadEventInit where
  pToJSVal = unFontFaceSetLoadEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal FontFaceSetLoadEventInit where
  pFromJSVal = FontFaceSetLoadEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal FontFaceSetLoadEventInit where
  toJSVal = return . unFontFaceSetLoadEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal FontFaceSetLoadEventInit where
  fromJSVal v = fmap FontFaceSetLoadEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FontFaceSetLoadEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FontFaceSetLoadEventInit where
  makeObject = makeObject . unFontFaceSetLoadEventInit

instance IsEventInit FontFaceSetLoadEventInit

instance IsGObject FontFaceSetLoadEventInit where
  typeGType _ = gTypeFontFaceSetLoadEventInit
  {-# INLINE typeGType #-}

noFontFaceSetLoadEventInit :: Maybe FontFaceSetLoadEventInit
noFontFaceSetLoadEventInit = Nothing
{-# INLINE noFontFaceSetLoadEventInit #-}

gTypeFontFaceSetLoadEventInit :: JSM GType
gTypeFontFaceSetLoadEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.FontFaceSource" (css-font-loading-3).
newtype FontFaceSource = FontFaceSource { unFontFaceSource :: JSVal }

instance PToJSVal FontFaceSource where
  pToJSVal = unFontFaceSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal FontFaceSource where
  pFromJSVal = FontFaceSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal FontFaceSource where
  toJSVal = return . unFontFaceSource
  {-# INLINE toJSVal #-}

instance FromJSVal FontFaceSource where
  fromJSVal v = fmap FontFaceSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FontFaceSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FontFaceSource where
  makeObject = makeObject . unFontFaceSource

class (IsGObject o) => IsFontFaceSource o
toFontFaceSource :: IsFontFaceSource o => o -> FontFaceSource
toFontFaceSource = FontFaceSource . coerce

instance IsFontFaceSource FontFaceSource

instance IsGObject FontFaceSource where
  typeGType _ = gTypeFontFaceSource
  {-# INLINE typeGType #-}

noFontFaceSource :: Maybe FontFaceSource
noFontFaceSource = Nothing
{-# INLINE noFontFaceSource #-}

gTypeFontFaceSource :: JSM GType
gTypeFontFaceSource = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.FormData" (xhr).
newtype FormData = FormData { unFormData :: JSVal }

instance PToJSVal FormData where
  pToJSVal = unFormData
  {-# INLINE pToJSVal #-}

instance PFromJSVal FormData where
  pFromJSVal = FormData
  {-# INLINE pFromJSVal #-}

instance ToJSVal FormData where
  toJSVal = return . unFormData
  {-# INLINE toJSVal #-}

instance FromJSVal FormData where
  fromJSVal v = fmap FormData <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FormData
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FormData where
  makeObject = makeObject . unFormData


instance IsGObject FormData where
  typeGType _ = gTypeFormData
  {-# INLINE typeGType #-}

noFormData :: Maybe FormData
noFormData = Nothing
{-# INLINE noFormData #-}

gTypeFormData :: JSM GType
gTypeFormData = GType . Object <$> jsg "FormData"

-- | Functions for this interface are in "JSDOM.FormDataEvent" (html).
newtype FormDataEvent = FormDataEvent { unFormDataEvent :: JSVal }

instance PToJSVal FormDataEvent where
  pToJSVal = unFormDataEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal FormDataEvent where
  pFromJSVal = FormDataEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal FormDataEvent where
  toJSVal = return . unFormDataEvent
  {-# INLINE toJSVal #-}

instance FromJSVal FormDataEvent where
  fromJSVal v = fmap FormDataEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FormDataEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FormDataEvent where
  makeObject = makeObject . unFormDataEvent

instance IsEvent FormDataEvent

instance IsGObject FormDataEvent where
  typeGType _ = gTypeFormDataEvent
  {-# INLINE typeGType #-}

noFormDataEvent :: Maybe FormDataEvent
noFormDataEvent = Nothing
{-# INLINE noFormDataEvent #-}

gTypeFormDataEvent :: JSM GType
gTypeFormDataEvent = GType . Object <$> jsg "FormDataEvent"

-- | Dictionary FormDataEventInit (html)
newtype FormDataEventInit = FormDataEventInit { unFormDataEventInit :: JSVal }

instance PToJSVal FormDataEventInit where
  pToJSVal = unFormDataEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal FormDataEventInit where
  pFromJSVal = FormDataEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal FormDataEventInit where
  toJSVal = return . unFormDataEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal FormDataEventInit where
  fromJSVal v = fmap FormDataEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FormDataEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FormDataEventInit where
  makeObject = makeObject . unFormDataEventInit

instance IsEventInit FormDataEventInit

instance IsGObject FormDataEventInit where
  typeGType _ = gTypeFormDataEventInit
  {-# INLINE typeGType #-}

noFormDataEventInit :: Maybe FormDataEventInit
noFormDataEventInit = Nothing
{-# INLINE noFormDataEventInit #-}

gTypeFormDataEventInit :: JSM GType
gTypeFormDataEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.FragmentDirective" (scroll-to-text-fragment).
newtype FragmentDirective = FragmentDirective { unFragmentDirective :: JSVal }

instance PToJSVal FragmentDirective where
  pToJSVal = unFragmentDirective
  {-# INLINE pToJSVal #-}

instance PFromJSVal FragmentDirective where
  pFromJSVal = FragmentDirective
  {-# INLINE pFromJSVal #-}

instance ToJSVal FragmentDirective where
  toJSVal = return . unFragmentDirective
  {-# INLINE toJSVal #-}

instance FromJSVal FragmentDirective where
  fromJSVal v = fmap FragmentDirective <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FragmentDirective
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FragmentDirective where
  makeObject = makeObject . unFragmentDirective


instance IsGObject FragmentDirective where
  typeGType _ = gTypeFragmentDirective
  {-# INLINE typeGType #-}

noFragmentDirective :: Maybe FragmentDirective
noFragmentDirective = Nothing
{-# INLINE noFragmentDirective #-}

gTypeFragmentDirective :: JSM GType
gTypeFragmentDirective = GType . Object <$> jsg "FragmentDirective"

-- | Dictionary FullscreenOptions (fullscreen)
newtype FullscreenOptions = FullscreenOptions { unFullscreenOptions :: JSVal }

instance PToJSVal FullscreenOptions where
  pToJSVal = unFullscreenOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal FullscreenOptions where
  pFromJSVal = FullscreenOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal FullscreenOptions where
  toJSVal = return . unFullscreenOptions
  {-# INLINE toJSVal #-}

instance FromJSVal FullscreenOptions where
  fromJSVal v = fmap FullscreenOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . FullscreenOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject FullscreenOptions where
  makeObject = makeObject . unFullscreenOptions


instance IsGObject FullscreenOptions where
  typeGType _ = gTypeFullscreenOptions
  {-# INLINE typeGType #-}

noFullscreenOptions :: Maybe FullscreenOptions
noFullscreenOptions = Nothing
{-# INLINE noFullscreenOptions #-}

gTypeFullscreenOptions :: JSM GType
gTypeFullscreenOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPU" (webgpu).
newtype GPU = GPU { unGPU :: JSVal }

instance PToJSVal GPU where
  pToJSVal = unGPU
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPU where
  pFromJSVal = GPU
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPU where
  toJSVal = return . unGPU
  {-# INLINE toJSVal #-}

instance FromJSVal GPU where
  fromJSVal v = fmap GPU <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPU
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPU where
  makeObject = makeObject . unGPU


instance IsGObject GPU where
  typeGType _ = gTypeGPU
  {-# INLINE typeGType #-}

noGPU :: Maybe GPU
noGPU = Nothing
{-# INLINE noGPU #-}

gTypeGPU :: JSM GType
gTypeGPU = GType . Object <$> jsg "GPU"

-- | Functions for this interface are in "JSDOM.GPUAdapter" (webgpu).
newtype GPUAdapter = GPUAdapter { unGPUAdapter :: JSVal }

instance PToJSVal GPUAdapter where
  pToJSVal = unGPUAdapter
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUAdapter where
  pFromJSVal = GPUAdapter
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUAdapter where
  toJSVal = return . unGPUAdapter
  {-# INLINE toJSVal #-}

instance FromJSVal GPUAdapter where
  fromJSVal v = fmap GPUAdapter <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUAdapter
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUAdapter where
  makeObject = makeObject . unGPUAdapter


instance IsGObject GPUAdapter where
  typeGType _ = gTypeGPUAdapter
  {-# INLINE typeGType #-}

noGPUAdapter :: Maybe GPUAdapter
noGPUAdapter = Nothing
{-# INLINE noGPUAdapter #-}

gTypeGPUAdapter :: JSM GType
gTypeGPUAdapter = GType . Object <$> jsg "GPUAdapter"

-- | Functions for this interface are in "JSDOM.GPUAdapterInfo" (webgpu).
newtype GPUAdapterInfo = GPUAdapterInfo { unGPUAdapterInfo :: JSVal }

instance PToJSVal GPUAdapterInfo where
  pToJSVal = unGPUAdapterInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUAdapterInfo where
  pFromJSVal = GPUAdapterInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUAdapterInfo where
  toJSVal = return . unGPUAdapterInfo
  {-# INLINE toJSVal #-}

instance FromJSVal GPUAdapterInfo where
  fromJSVal v = fmap GPUAdapterInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUAdapterInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUAdapterInfo where
  makeObject = makeObject . unGPUAdapterInfo


instance IsGObject GPUAdapterInfo where
  typeGType _ = gTypeGPUAdapterInfo
  {-# INLINE typeGType #-}

noGPUAdapterInfo :: Maybe GPUAdapterInfo
noGPUAdapterInfo = Nothing
{-# INLINE noGPUAdapterInfo #-}

gTypeGPUAdapterInfo :: JSM GType
gTypeGPUAdapterInfo = GType . Object <$> jsg "GPUAdapterInfo"

-- | Functions for this interface are in "JSDOM.GPUBindGroup" (webgpu).
newtype GPUBindGroup = GPUBindGroup { unGPUBindGroup :: JSVal }

instance PToJSVal GPUBindGroup where
  pToJSVal = unGPUBindGroup
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBindGroup where
  pFromJSVal = GPUBindGroup
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBindGroup where
  toJSVal = return . unGPUBindGroup
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBindGroup where
  fromJSVal v = fmap GPUBindGroup <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBindGroup
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBindGroup where
  makeObject = makeObject . unGPUBindGroup

instance IsGPUObjectBase GPUBindGroup

instance IsGObject GPUBindGroup where
  typeGType _ = gTypeGPUBindGroup
  {-# INLINE typeGType #-}

noGPUBindGroup :: Maybe GPUBindGroup
noGPUBindGroup = Nothing
{-# INLINE noGPUBindGroup #-}

gTypeGPUBindGroup :: JSM GType
gTypeGPUBindGroup = GType . Object <$> jsg "GPUBindGroup"

-- | Dictionary GPUBindGroupDescriptor (webgpu)
newtype GPUBindGroupDescriptor = GPUBindGroupDescriptor { unGPUBindGroupDescriptor :: JSVal }

instance PToJSVal GPUBindGroupDescriptor where
  pToJSVal = unGPUBindGroupDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBindGroupDescriptor where
  pFromJSVal = GPUBindGroupDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBindGroupDescriptor where
  toJSVal = return . unGPUBindGroupDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBindGroupDescriptor where
  fromJSVal v = fmap GPUBindGroupDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBindGroupDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBindGroupDescriptor where
  makeObject = makeObject . unGPUBindGroupDescriptor

instance IsGPUObjectDescriptorBase GPUBindGroupDescriptor

instance IsGObject GPUBindGroupDescriptor where
  typeGType _ = gTypeGPUBindGroupDescriptor
  {-# INLINE typeGType #-}

noGPUBindGroupDescriptor :: Maybe GPUBindGroupDescriptor
noGPUBindGroupDescriptor = Nothing
{-# INLINE noGPUBindGroupDescriptor #-}

gTypeGPUBindGroupDescriptor :: JSM GType
gTypeGPUBindGroupDescriptor = GType . Object <$> jsg "Object"

-- | Dictionary GPUBindGroupEntry (webgpu)
newtype GPUBindGroupEntry = GPUBindGroupEntry { unGPUBindGroupEntry :: JSVal }

instance PToJSVal GPUBindGroupEntry where
  pToJSVal = unGPUBindGroupEntry
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBindGroupEntry where
  pFromJSVal = GPUBindGroupEntry
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBindGroupEntry where
  toJSVal = return . unGPUBindGroupEntry
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBindGroupEntry where
  fromJSVal v = fmap GPUBindGroupEntry <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBindGroupEntry
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBindGroupEntry where
  makeObject = makeObject . unGPUBindGroupEntry


instance IsGObject GPUBindGroupEntry where
  typeGType _ = gTypeGPUBindGroupEntry
  {-# INLINE typeGType #-}

noGPUBindGroupEntry :: Maybe GPUBindGroupEntry
noGPUBindGroupEntry = Nothing
{-# INLINE noGPUBindGroupEntry #-}

gTypeGPUBindGroupEntry :: JSM GType
gTypeGPUBindGroupEntry = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUBindGroupLayout" (webgpu).
newtype GPUBindGroupLayout = GPUBindGroupLayout { unGPUBindGroupLayout :: JSVal }

instance PToJSVal GPUBindGroupLayout where
  pToJSVal = unGPUBindGroupLayout
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBindGroupLayout where
  pFromJSVal = GPUBindGroupLayout
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBindGroupLayout where
  toJSVal = return . unGPUBindGroupLayout
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBindGroupLayout where
  fromJSVal v = fmap GPUBindGroupLayout <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBindGroupLayout
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBindGroupLayout where
  makeObject = makeObject . unGPUBindGroupLayout

instance IsGPUObjectBase GPUBindGroupLayout

instance IsGObject GPUBindGroupLayout where
  typeGType _ = gTypeGPUBindGroupLayout
  {-# INLINE typeGType #-}

noGPUBindGroupLayout :: Maybe GPUBindGroupLayout
noGPUBindGroupLayout = Nothing
{-# INLINE noGPUBindGroupLayout #-}

gTypeGPUBindGroupLayout :: JSM GType
gTypeGPUBindGroupLayout = GType . Object <$> jsg "GPUBindGroupLayout"

-- | Dictionary GPUBindGroupLayoutDescriptor (webgpu)
newtype GPUBindGroupLayoutDescriptor = GPUBindGroupLayoutDescriptor { unGPUBindGroupLayoutDescriptor :: JSVal }

instance PToJSVal GPUBindGroupLayoutDescriptor where
  pToJSVal = unGPUBindGroupLayoutDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBindGroupLayoutDescriptor where
  pFromJSVal = GPUBindGroupLayoutDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBindGroupLayoutDescriptor where
  toJSVal = return . unGPUBindGroupLayoutDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBindGroupLayoutDescriptor where
  fromJSVal v = fmap GPUBindGroupLayoutDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBindGroupLayoutDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBindGroupLayoutDescriptor where
  makeObject = makeObject . unGPUBindGroupLayoutDescriptor

instance IsGPUObjectDescriptorBase GPUBindGroupLayoutDescriptor

instance IsGObject GPUBindGroupLayoutDescriptor where
  typeGType _ = gTypeGPUBindGroupLayoutDescriptor
  {-# INLINE typeGType #-}

noGPUBindGroupLayoutDescriptor :: Maybe GPUBindGroupLayoutDescriptor
noGPUBindGroupLayoutDescriptor = Nothing
{-# INLINE noGPUBindGroupLayoutDescriptor #-}

gTypeGPUBindGroupLayoutDescriptor :: JSM GType
gTypeGPUBindGroupLayoutDescriptor = GType . Object <$> jsg "Object"

-- | Dictionary GPUBindGroupLayoutEntry (webgpu)
newtype GPUBindGroupLayoutEntry = GPUBindGroupLayoutEntry { unGPUBindGroupLayoutEntry :: JSVal }

instance PToJSVal GPUBindGroupLayoutEntry where
  pToJSVal = unGPUBindGroupLayoutEntry
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBindGroupLayoutEntry where
  pFromJSVal = GPUBindGroupLayoutEntry
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBindGroupLayoutEntry where
  toJSVal = return . unGPUBindGroupLayoutEntry
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBindGroupLayoutEntry where
  fromJSVal v = fmap GPUBindGroupLayoutEntry <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBindGroupLayoutEntry
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBindGroupLayoutEntry where
  makeObject = makeObject . unGPUBindGroupLayoutEntry


instance IsGObject GPUBindGroupLayoutEntry where
  typeGType _ = gTypeGPUBindGroupLayoutEntry
  {-# INLINE typeGType #-}

noGPUBindGroupLayoutEntry :: Maybe GPUBindGroupLayoutEntry
noGPUBindGroupLayoutEntry = Nothing
{-# INLINE noGPUBindGroupLayoutEntry #-}

gTypeGPUBindGroupLayoutEntry :: JSM GType
gTypeGPUBindGroupLayoutEntry = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUBindingCommandsMixin" (webgpu).
newtype GPUBindingCommandsMixin = GPUBindingCommandsMixin { unGPUBindingCommandsMixin :: JSVal }

instance PToJSVal GPUBindingCommandsMixin where
  pToJSVal = unGPUBindingCommandsMixin
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBindingCommandsMixin where
  pFromJSVal = GPUBindingCommandsMixin
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBindingCommandsMixin where
  toJSVal = return . unGPUBindingCommandsMixin
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBindingCommandsMixin where
  fromJSVal v = fmap GPUBindingCommandsMixin <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBindingCommandsMixin
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBindingCommandsMixin where
  makeObject = makeObject . unGPUBindingCommandsMixin

class (IsGObject o) => IsGPUBindingCommandsMixin o
toGPUBindingCommandsMixin :: IsGPUBindingCommandsMixin o => o -> GPUBindingCommandsMixin
toGPUBindingCommandsMixin = GPUBindingCommandsMixin . coerce

instance IsGPUBindingCommandsMixin GPUBindingCommandsMixin

instance IsGObject GPUBindingCommandsMixin where
  typeGType _ = gTypeGPUBindingCommandsMixin
  {-# INLINE typeGType #-}

noGPUBindingCommandsMixin :: Maybe GPUBindingCommandsMixin
noGPUBindingCommandsMixin = Nothing
{-# INLINE noGPUBindingCommandsMixin #-}

gTypeGPUBindingCommandsMixin :: JSM GType
gTypeGPUBindingCommandsMixin = GType . Object <$> jsg "Object"

-- | Dictionary GPUBlendComponent (webgpu)
newtype GPUBlendComponent = GPUBlendComponent { unGPUBlendComponent :: JSVal }

instance PToJSVal GPUBlendComponent where
  pToJSVal = unGPUBlendComponent
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBlendComponent where
  pFromJSVal = GPUBlendComponent
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBlendComponent where
  toJSVal = return . unGPUBlendComponent
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBlendComponent where
  fromJSVal v = fmap GPUBlendComponent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBlendComponent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBlendComponent where
  makeObject = makeObject . unGPUBlendComponent


instance IsGObject GPUBlendComponent where
  typeGType _ = gTypeGPUBlendComponent
  {-# INLINE typeGType #-}

noGPUBlendComponent :: Maybe GPUBlendComponent
noGPUBlendComponent = Nothing
{-# INLINE noGPUBlendComponent #-}

gTypeGPUBlendComponent :: JSM GType
gTypeGPUBlendComponent = GType . Object <$> jsg "Object"

-- | Dictionary GPUBlendState (webgpu)
newtype GPUBlendState = GPUBlendState { unGPUBlendState :: JSVal }

instance PToJSVal GPUBlendState where
  pToJSVal = unGPUBlendState
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBlendState where
  pFromJSVal = GPUBlendState
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBlendState where
  toJSVal = return . unGPUBlendState
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBlendState where
  fromJSVal v = fmap GPUBlendState <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBlendState
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBlendState where
  makeObject = makeObject . unGPUBlendState


instance IsGObject GPUBlendState where
  typeGType _ = gTypeGPUBlendState
  {-# INLINE typeGType #-}

noGPUBlendState :: Maybe GPUBlendState
noGPUBlendState = Nothing
{-# INLINE noGPUBlendState #-}

gTypeGPUBlendState :: JSM GType
gTypeGPUBlendState = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUBuffer" (webgpu).
newtype GPUBuffer = GPUBuffer { unGPUBuffer :: JSVal }

instance PToJSVal GPUBuffer where
  pToJSVal = unGPUBuffer
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBuffer where
  pFromJSVal = GPUBuffer
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBuffer where
  toJSVal = return . unGPUBuffer
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBuffer where
  fromJSVal v = fmap GPUBuffer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBuffer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBuffer where
  makeObject = makeObject . unGPUBuffer

instance IsGPUObjectBase GPUBuffer

instance IsGObject GPUBuffer where
  typeGType _ = gTypeGPUBuffer
  {-# INLINE typeGType #-}

noGPUBuffer :: Maybe GPUBuffer
noGPUBuffer = Nothing
{-# INLINE noGPUBuffer #-}

gTypeGPUBuffer :: JSM GType
gTypeGPUBuffer = GType . Object <$> jsg "GPUBuffer"

-- | Dictionary GPUBufferBinding (webgpu)
newtype GPUBufferBinding = GPUBufferBinding { unGPUBufferBinding :: JSVal }

instance PToJSVal GPUBufferBinding where
  pToJSVal = unGPUBufferBinding
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBufferBinding where
  pFromJSVal = GPUBufferBinding
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBufferBinding where
  toJSVal = return . unGPUBufferBinding
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBufferBinding where
  fromJSVal v = fmap GPUBufferBinding <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBufferBinding
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBufferBinding where
  makeObject = makeObject . unGPUBufferBinding


instance IsGObject GPUBufferBinding where
  typeGType _ = gTypeGPUBufferBinding
  {-# INLINE typeGType #-}

noGPUBufferBinding :: Maybe GPUBufferBinding
noGPUBufferBinding = Nothing
{-# INLINE noGPUBufferBinding #-}

gTypeGPUBufferBinding :: JSM GType
gTypeGPUBufferBinding = GType . Object <$> jsg "Object"

-- | Dictionary GPUBufferBindingLayout (webgpu)
newtype GPUBufferBindingLayout = GPUBufferBindingLayout { unGPUBufferBindingLayout :: JSVal }

instance PToJSVal GPUBufferBindingLayout where
  pToJSVal = unGPUBufferBindingLayout
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBufferBindingLayout where
  pFromJSVal = GPUBufferBindingLayout
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBufferBindingLayout where
  toJSVal = return . unGPUBufferBindingLayout
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBufferBindingLayout where
  fromJSVal v = fmap GPUBufferBindingLayout <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBufferBindingLayout
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBufferBindingLayout where
  makeObject = makeObject . unGPUBufferBindingLayout


instance IsGObject GPUBufferBindingLayout where
  typeGType _ = gTypeGPUBufferBindingLayout
  {-# INLINE typeGType #-}

noGPUBufferBindingLayout :: Maybe GPUBufferBindingLayout
noGPUBufferBindingLayout = Nothing
{-# INLINE noGPUBufferBindingLayout #-}

gTypeGPUBufferBindingLayout :: JSM GType
gTypeGPUBufferBindingLayout = GType . Object <$> jsg "Object"

-- | Dictionary GPUBufferDescriptor (webgpu)
newtype GPUBufferDescriptor = GPUBufferDescriptor { unGPUBufferDescriptor :: JSVal }

instance PToJSVal GPUBufferDescriptor where
  pToJSVal = unGPUBufferDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUBufferDescriptor where
  pFromJSVal = GPUBufferDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUBufferDescriptor where
  toJSVal = return . unGPUBufferDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUBufferDescriptor where
  fromJSVal v = fmap GPUBufferDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUBufferDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUBufferDescriptor where
  makeObject = makeObject . unGPUBufferDescriptor

instance IsGPUObjectDescriptorBase GPUBufferDescriptor

instance IsGObject GPUBufferDescriptor where
  typeGType _ = gTypeGPUBufferDescriptor
  {-# INLINE typeGType #-}

noGPUBufferDescriptor :: Maybe GPUBufferDescriptor
noGPUBufferDescriptor = Nothing
{-# INLINE noGPUBufferDescriptor #-}

gTypeGPUBufferDescriptor :: JSM GType
gTypeGPUBufferDescriptor = GType . Object <$> jsg "Object"

-- | Dictionary GPUCanvasConfiguration (webgpu)
newtype GPUCanvasConfiguration = GPUCanvasConfiguration { unGPUCanvasConfiguration :: JSVal }

instance PToJSVal GPUCanvasConfiguration where
  pToJSVal = unGPUCanvasConfiguration
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUCanvasConfiguration where
  pFromJSVal = GPUCanvasConfiguration
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUCanvasConfiguration where
  toJSVal = return . unGPUCanvasConfiguration
  {-# INLINE toJSVal #-}

instance FromJSVal GPUCanvasConfiguration where
  fromJSVal v = fmap GPUCanvasConfiguration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUCanvasConfiguration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUCanvasConfiguration where
  makeObject = makeObject . unGPUCanvasConfiguration


instance IsGObject GPUCanvasConfiguration where
  typeGType _ = gTypeGPUCanvasConfiguration
  {-# INLINE typeGType #-}

noGPUCanvasConfiguration :: Maybe GPUCanvasConfiguration
noGPUCanvasConfiguration = Nothing
{-# INLINE noGPUCanvasConfiguration #-}

gTypeGPUCanvasConfiguration :: JSM GType
gTypeGPUCanvasConfiguration = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUCanvasContext" (webgpu).
newtype GPUCanvasContext = GPUCanvasContext { unGPUCanvasContext :: JSVal }

instance PToJSVal GPUCanvasContext where
  pToJSVal = unGPUCanvasContext
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUCanvasContext where
  pFromJSVal = GPUCanvasContext
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUCanvasContext where
  toJSVal = return . unGPUCanvasContext
  {-# INLINE toJSVal #-}

instance FromJSVal GPUCanvasContext where
  fromJSVal v = fmap GPUCanvasContext <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUCanvasContext
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUCanvasContext where
  makeObject = makeObject . unGPUCanvasContext


instance IsGObject GPUCanvasContext where
  typeGType _ = gTypeGPUCanvasContext
  {-# INLINE typeGType #-}

noGPUCanvasContext :: Maybe GPUCanvasContext
noGPUCanvasContext = Nothing
{-# INLINE noGPUCanvasContext #-}

gTypeGPUCanvasContext :: JSM GType
gTypeGPUCanvasContext = GType . Object <$> jsg "GPUCanvasContext"

-- | Dictionary GPUCanvasToneMapping (webgpu)
newtype GPUCanvasToneMapping = GPUCanvasToneMapping { unGPUCanvasToneMapping :: JSVal }

instance PToJSVal GPUCanvasToneMapping where
  pToJSVal = unGPUCanvasToneMapping
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUCanvasToneMapping where
  pFromJSVal = GPUCanvasToneMapping
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUCanvasToneMapping where
  toJSVal = return . unGPUCanvasToneMapping
  {-# INLINE toJSVal #-}

instance FromJSVal GPUCanvasToneMapping where
  fromJSVal v = fmap GPUCanvasToneMapping <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUCanvasToneMapping
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUCanvasToneMapping where
  makeObject = makeObject . unGPUCanvasToneMapping


instance IsGObject GPUCanvasToneMapping where
  typeGType _ = gTypeGPUCanvasToneMapping
  {-# INLINE typeGType #-}

noGPUCanvasToneMapping :: Maybe GPUCanvasToneMapping
noGPUCanvasToneMapping = Nothing
{-# INLINE noGPUCanvasToneMapping #-}

gTypeGPUCanvasToneMapping :: JSM GType
gTypeGPUCanvasToneMapping = GType . Object <$> jsg "Object"

-- | Dictionary GPUColorDict (webgpu)
newtype GPUColorDict = GPUColorDict { unGPUColorDict :: JSVal }

instance PToJSVal GPUColorDict where
  pToJSVal = unGPUColorDict
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUColorDict where
  pFromJSVal = GPUColorDict
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUColorDict where
  toJSVal = return . unGPUColorDict
  {-# INLINE toJSVal #-}

instance FromJSVal GPUColorDict where
  fromJSVal v = fmap GPUColorDict <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUColorDict
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUColorDict where
  makeObject = makeObject . unGPUColorDict


instance IsGObject GPUColorDict where
  typeGType _ = gTypeGPUColorDict
  {-# INLINE typeGType #-}

noGPUColorDict :: Maybe GPUColorDict
noGPUColorDict = Nothing
{-# INLINE noGPUColorDict #-}

gTypeGPUColorDict :: JSM GType
gTypeGPUColorDict = GType . Object <$> jsg "Object"

-- | Dictionary GPUColorTargetState (webgpu)
newtype GPUColorTargetState = GPUColorTargetState { unGPUColorTargetState :: JSVal }

instance PToJSVal GPUColorTargetState where
  pToJSVal = unGPUColorTargetState
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUColorTargetState where
  pFromJSVal = GPUColorTargetState
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUColorTargetState where
  toJSVal = return . unGPUColorTargetState
  {-# INLINE toJSVal #-}

instance FromJSVal GPUColorTargetState where
  fromJSVal v = fmap GPUColorTargetState <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUColorTargetState
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUColorTargetState where
  makeObject = makeObject . unGPUColorTargetState


instance IsGObject GPUColorTargetState where
  typeGType _ = gTypeGPUColorTargetState
  {-# INLINE typeGType #-}

noGPUColorTargetState :: Maybe GPUColorTargetState
noGPUColorTargetState = Nothing
{-# INLINE noGPUColorTargetState #-}

gTypeGPUColorTargetState :: JSM GType
gTypeGPUColorTargetState = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUCommandBuffer" (webgpu).
newtype GPUCommandBuffer = GPUCommandBuffer { unGPUCommandBuffer :: JSVal }

instance PToJSVal GPUCommandBuffer where
  pToJSVal = unGPUCommandBuffer
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUCommandBuffer where
  pFromJSVal = GPUCommandBuffer
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUCommandBuffer where
  toJSVal = return . unGPUCommandBuffer
  {-# INLINE toJSVal #-}

instance FromJSVal GPUCommandBuffer where
  fromJSVal v = fmap GPUCommandBuffer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUCommandBuffer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUCommandBuffer where
  makeObject = makeObject . unGPUCommandBuffer

instance IsGPUObjectBase GPUCommandBuffer

instance IsGObject GPUCommandBuffer where
  typeGType _ = gTypeGPUCommandBuffer
  {-# INLINE typeGType #-}

noGPUCommandBuffer :: Maybe GPUCommandBuffer
noGPUCommandBuffer = Nothing
{-# INLINE noGPUCommandBuffer #-}

gTypeGPUCommandBuffer :: JSM GType
gTypeGPUCommandBuffer = GType . Object <$> jsg "GPUCommandBuffer"

-- | Dictionary GPUCommandBufferDescriptor (webgpu)
newtype GPUCommandBufferDescriptor = GPUCommandBufferDescriptor { unGPUCommandBufferDescriptor :: JSVal }

instance PToJSVal GPUCommandBufferDescriptor where
  pToJSVal = unGPUCommandBufferDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUCommandBufferDescriptor where
  pFromJSVal = GPUCommandBufferDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUCommandBufferDescriptor where
  toJSVal = return . unGPUCommandBufferDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUCommandBufferDescriptor where
  fromJSVal v = fmap GPUCommandBufferDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUCommandBufferDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUCommandBufferDescriptor where
  makeObject = makeObject . unGPUCommandBufferDescriptor

instance IsGPUObjectDescriptorBase GPUCommandBufferDescriptor

instance IsGObject GPUCommandBufferDescriptor where
  typeGType _ = gTypeGPUCommandBufferDescriptor
  {-# INLINE typeGType #-}

noGPUCommandBufferDescriptor :: Maybe GPUCommandBufferDescriptor
noGPUCommandBufferDescriptor = Nothing
{-# INLINE noGPUCommandBufferDescriptor #-}

gTypeGPUCommandBufferDescriptor :: JSM GType
gTypeGPUCommandBufferDescriptor = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUCommandEncoder" (webgpu).
newtype GPUCommandEncoder = GPUCommandEncoder { unGPUCommandEncoder :: JSVal }

instance PToJSVal GPUCommandEncoder where
  pToJSVal = unGPUCommandEncoder
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUCommandEncoder where
  pFromJSVal = GPUCommandEncoder
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUCommandEncoder where
  toJSVal = return . unGPUCommandEncoder
  {-# INLINE toJSVal #-}

instance FromJSVal GPUCommandEncoder where
  fromJSVal v = fmap GPUCommandEncoder <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUCommandEncoder
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUCommandEncoder where
  makeObject = makeObject . unGPUCommandEncoder

instance IsGPUDebugCommandsMixin GPUCommandEncoder
instance IsGPUObjectBase GPUCommandEncoder

instance IsGObject GPUCommandEncoder where
  typeGType _ = gTypeGPUCommandEncoder
  {-# INLINE typeGType #-}

noGPUCommandEncoder :: Maybe GPUCommandEncoder
noGPUCommandEncoder = Nothing
{-# INLINE noGPUCommandEncoder #-}

gTypeGPUCommandEncoder :: JSM GType
gTypeGPUCommandEncoder = GType . Object <$> jsg "GPUCommandEncoder"

-- | Dictionary GPUCommandEncoderDescriptor (webgpu)
newtype GPUCommandEncoderDescriptor = GPUCommandEncoderDescriptor { unGPUCommandEncoderDescriptor :: JSVal }

instance PToJSVal GPUCommandEncoderDescriptor where
  pToJSVal = unGPUCommandEncoderDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUCommandEncoderDescriptor where
  pFromJSVal = GPUCommandEncoderDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUCommandEncoderDescriptor where
  toJSVal = return . unGPUCommandEncoderDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUCommandEncoderDescriptor where
  fromJSVal v = fmap GPUCommandEncoderDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUCommandEncoderDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUCommandEncoderDescriptor where
  makeObject = makeObject . unGPUCommandEncoderDescriptor

instance IsGPUObjectDescriptorBase GPUCommandEncoderDescriptor

instance IsGObject GPUCommandEncoderDescriptor where
  typeGType _ = gTypeGPUCommandEncoderDescriptor
  {-# INLINE typeGType #-}

noGPUCommandEncoderDescriptor :: Maybe GPUCommandEncoderDescriptor
noGPUCommandEncoderDescriptor = Nothing
{-# INLINE noGPUCommandEncoderDescriptor #-}

gTypeGPUCommandEncoderDescriptor :: JSM GType
gTypeGPUCommandEncoderDescriptor = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUCompilationInfo" (webgpu).
newtype GPUCompilationInfo = GPUCompilationInfo { unGPUCompilationInfo :: JSVal }

instance PToJSVal GPUCompilationInfo where
  pToJSVal = unGPUCompilationInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUCompilationInfo where
  pFromJSVal = GPUCompilationInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUCompilationInfo where
  toJSVal = return . unGPUCompilationInfo
  {-# INLINE toJSVal #-}

instance FromJSVal GPUCompilationInfo where
  fromJSVal v = fmap GPUCompilationInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUCompilationInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUCompilationInfo where
  makeObject = makeObject . unGPUCompilationInfo


instance IsGObject GPUCompilationInfo where
  typeGType _ = gTypeGPUCompilationInfo
  {-# INLINE typeGType #-}

noGPUCompilationInfo :: Maybe GPUCompilationInfo
noGPUCompilationInfo = Nothing
{-# INLINE noGPUCompilationInfo #-}

gTypeGPUCompilationInfo :: JSM GType
gTypeGPUCompilationInfo = GType . Object <$> jsg "GPUCompilationInfo"

-- | Functions for this interface are in "JSDOM.GPUCompilationMessage" (webgpu).
newtype GPUCompilationMessage = GPUCompilationMessage { unGPUCompilationMessage :: JSVal }

instance PToJSVal GPUCompilationMessage where
  pToJSVal = unGPUCompilationMessage
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUCompilationMessage where
  pFromJSVal = GPUCompilationMessage
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUCompilationMessage where
  toJSVal = return . unGPUCompilationMessage
  {-# INLINE toJSVal #-}

instance FromJSVal GPUCompilationMessage where
  fromJSVal v = fmap GPUCompilationMessage <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUCompilationMessage
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUCompilationMessage where
  makeObject = makeObject . unGPUCompilationMessage


instance IsGObject GPUCompilationMessage where
  typeGType _ = gTypeGPUCompilationMessage
  {-# INLINE typeGType #-}

noGPUCompilationMessage :: Maybe GPUCompilationMessage
noGPUCompilationMessage = Nothing
{-# INLINE noGPUCompilationMessage #-}

gTypeGPUCompilationMessage :: JSM GType
gTypeGPUCompilationMessage = GType . Object <$> jsg "GPUCompilationMessage"

-- | Dictionary GPUComputePassDescriptor (webgpu)
newtype GPUComputePassDescriptor = GPUComputePassDescriptor { unGPUComputePassDescriptor :: JSVal }

instance PToJSVal GPUComputePassDescriptor where
  pToJSVal = unGPUComputePassDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUComputePassDescriptor where
  pFromJSVal = GPUComputePassDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUComputePassDescriptor where
  toJSVal = return . unGPUComputePassDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUComputePassDescriptor where
  fromJSVal v = fmap GPUComputePassDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUComputePassDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUComputePassDescriptor where
  makeObject = makeObject . unGPUComputePassDescriptor

instance IsGPUObjectDescriptorBase GPUComputePassDescriptor

instance IsGObject GPUComputePassDescriptor where
  typeGType _ = gTypeGPUComputePassDescriptor
  {-# INLINE typeGType #-}

noGPUComputePassDescriptor :: Maybe GPUComputePassDescriptor
noGPUComputePassDescriptor = Nothing
{-# INLINE noGPUComputePassDescriptor #-}

gTypeGPUComputePassDescriptor :: JSM GType
gTypeGPUComputePassDescriptor = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUComputePassEncoder" (webgpu).
newtype GPUComputePassEncoder = GPUComputePassEncoder { unGPUComputePassEncoder :: JSVal }

instance PToJSVal GPUComputePassEncoder where
  pToJSVal = unGPUComputePassEncoder
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUComputePassEncoder where
  pFromJSVal = GPUComputePassEncoder
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUComputePassEncoder where
  toJSVal = return . unGPUComputePassEncoder
  {-# INLINE toJSVal #-}

instance FromJSVal GPUComputePassEncoder where
  fromJSVal v = fmap GPUComputePassEncoder <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUComputePassEncoder
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUComputePassEncoder where
  makeObject = makeObject . unGPUComputePassEncoder

instance IsGPUBindingCommandsMixin GPUComputePassEncoder
instance IsGPUDebugCommandsMixin GPUComputePassEncoder
instance IsGPUObjectBase GPUComputePassEncoder

instance IsGObject GPUComputePassEncoder where
  typeGType _ = gTypeGPUComputePassEncoder
  {-# INLINE typeGType #-}

noGPUComputePassEncoder :: Maybe GPUComputePassEncoder
noGPUComputePassEncoder = Nothing
{-# INLINE noGPUComputePassEncoder #-}

gTypeGPUComputePassEncoder :: JSM GType
gTypeGPUComputePassEncoder = GType . Object <$> jsg "GPUComputePassEncoder"

-- | Dictionary GPUComputePassTimestampWrites (webgpu)
newtype GPUComputePassTimestampWrites = GPUComputePassTimestampWrites { unGPUComputePassTimestampWrites :: JSVal }

instance PToJSVal GPUComputePassTimestampWrites where
  pToJSVal = unGPUComputePassTimestampWrites
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUComputePassTimestampWrites where
  pFromJSVal = GPUComputePassTimestampWrites
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUComputePassTimestampWrites where
  toJSVal = return . unGPUComputePassTimestampWrites
  {-# INLINE toJSVal #-}

instance FromJSVal GPUComputePassTimestampWrites where
  fromJSVal v = fmap GPUComputePassTimestampWrites <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUComputePassTimestampWrites
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUComputePassTimestampWrites where
  makeObject = makeObject . unGPUComputePassTimestampWrites


instance IsGObject GPUComputePassTimestampWrites where
  typeGType _ = gTypeGPUComputePassTimestampWrites
  {-# INLINE typeGType #-}

noGPUComputePassTimestampWrites :: Maybe GPUComputePassTimestampWrites
noGPUComputePassTimestampWrites = Nothing
{-# INLINE noGPUComputePassTimestampWrites #-}

gTypeGPUComputePassTimestampWrites :: JSM GType
gTypeGPUComputePassTimestampWrites = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUComputePipeline" (webgpu).
newtype GPUComputePipeline = GPUComputePipeline { unGPUComputePipeline :: JSVal }

instance PToJSVal GPUComputePipeline where
  pToJSVal = unGPUComputePipeline
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUComputePipeline where
  pFromJSVal = GPUComputePipeline
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUComputePipeline where
  toJSVal = return . unGPUComputePipeline
  {-# INLINE toJSVal #-}

instance FromJSVal GPUComputePipeline where
  fromJSVal v = fmap GPUComputePipeline <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUComputePipeline
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUComputePipeline where
  makeObject = makeObject . unGPUComputePipeline

instance IsGPUObjectBase GPUComputePipeline
instance IsGPUPipelineBase GPUComputePipeline

instance IsGObject GPUComputePipeline where
  typeGType _ = gTypeGPUComputePipeline
  {-# INLINE typeGType #-}

noGPUComputePipeline :: Maybe GPUComputePipeline
noGPUComputePipeline = Nothing
{-# INLINE noGPUComputePipeline #-}

gTypeGPUComputePipeline :: JSM GType
gTypeGPUComputePipeline = GType . Object <$> jsg "GPUComputePipeline"

-- | Dictionary GPUComputePipelineDescriptor (webgpu)
newtype GPUComputePipelineDescriptor = GPUComputePipelineDescriptor { unGPUComputePipelineDescriptor :: JSVal }

instance PToJSVal GPUComputePipelineDescriptor where
  pToJSVal = unGPUComputePipelineDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUComputePipelineDescriptor where
  pFromJSVal = GPUComputePipelineDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUComputePipelineDescriptor where
  toJSVal = return . unGPUComputePipelineDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUComputePipelineDescriptor where
  fromJSVal v = fmap GPUComputePipelineDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUComputePipelineDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUComputePipelineDescriptor where
  makeObject = makeObject . unGPUComputePipelineDescriptor

instance IsGPUPipelineDescriptorBase GPUComputePipelineDescriptor
instance IsGPUObjectDescriptorBase GPUComputePipelineDescriptor

instance IsGObject GPUComputePipelineDescriptor where
  typeGType _ = gTypeGPUComputePipelineDescriptor
  {-# INLINE typeGType #-}

noGPUComputePipelineDescriptor :: Maybe GPUComputePipelineDescriptor
noGPUComputePipelineDescriptor = Nothing
{-# INLINE noGPUComputePipelineDescriptor #-}

gTypeGPUComputePipelineDescriptor :: JSM GType
gTypeGPUComputePipelineDescriptor = GType . Object <$> jsg "Object"

-- | Dictionary GPUCopyExternalImageDestInfo (webgpu)
newtype GPUCopyExternalImageDestInfo = GPUCopyExternalImageDestInfo { unGPUCopyExternalImageDestInfo :: JSVal }

instance PToJSVal GPUCopyExternalImageDestInfo where
  pToJSVal = unGPUCopyExternalImageDestInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUCopyExternalImageDestInfo where
  pFromJSVal = GPUCopyExternalImageDestInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUCopyExternalImageDestInfo where
  toJSVal = return . unGPUCopyExternalImageDestInfo
  {-# INLINE toJSVal #-}

instance FromJSVal GPUCopyExternalImageDestInfo where
  fromJSVal v = fmap GPUCopyExternalImageDestInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUCopyExternalImageDestInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUCopyExternalImageDestInfo where
  makeObject = makeObject . unGPUCopyExternalImageDestInfo

instance IsGPUTexelCopyTextureInfo GPUCopyExternalImageDestInfo

instance IsGObject GPUCopyExternalImageDestInfo where
  typeGType _ = gTypeGPUCopyExternalImageDestInfo
  {-# INLINE typeGType #-}

noGPUCopyExternalImageDestInfo :: Maybe GPUCopyExternalImageDestInfo
noGPUCopyExternalImageDestInfo = Nothing
{-# INLINE noGPUCopyExternalImageDestInfo #-}

gTypeGPUCopyExternalImageDestInfo :: JSM GType
gTypeGPUCopyExternalImageDestInfo = GType . Object <$> jsg "Object"

-- | Dictionary GPUCopyExternalImageSourceInfo (webgpu)
newtype GPUCopyExternalImageSourceInfo = GPUCopyExternalImageSourceInfo { unGPUCopyExternalImageSourceInfo :: JSVal }

instance PToJSVal GPUCopyExternalImageSourceInfo where
  pToJSVal = unGPUCopyExternalImageSourceInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUCopyExternalImageSourceInfo where
  pFromJSVal = GPUCopyExternalImageSourceInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUCopyExternalImageSourceInfo where
  toJSVal = return . unGPUCopyExternalImageSourceInfo
  {-# INLINE toJSVal #-}

instance FromJSVal GPUCopyExternalImageSourceInfo where
  fromJSVal v = fmap GPUCopyExternalImageSourceInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUCopyExternalImageSourceInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUCopyExternalImageSourceInfo where
  makeObject = makeObject . unGPUCopyExternalImageSourceInfo


instance IsGObject GPUCopyExternalImageSourceInfo where
  typeGType _ = gTypeGPUCopyExternalImageSourceInfo
  {-# INLINE typeGType #-}

noGPUCopyExternalImageSourceInfo :: Maybe GPUCopyExternalImageSourceInfo
noGPUCopyExternalImageSourceInfo = Nothing
{-# INLINE noGPUCopyExternalImageSourceInfo #-}

gTypeGPUCopyExternalImageSourceInfo :: JSM GType
gTypeGPUCopyExternalImageSourceInfo = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUDebugCommandsMixin" (webgpu).
newtype GPUDebugCommandsMixin = GPUDebugCommandsMixin { unGPUDebugCommandsMixin :: JSVal }

instance PToJSVal GPUDebugCommandsMixin where
  pToJSVal = unGPUDebugCommandsMixin
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUDebugCommandsMixin where
  pFromJSVal = GPUDebugCommandsMixin
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUDebugCommandsMixin where
  toJSVal = return . unGPUDebugCommandsMixin
  {-# INLINE toJSVal #-}

instance FromJSVal GPUDebugCommandsMixin where
  fromJSVal v = fmap GPUDebugCommandsMixin <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUDebugCommandsMixin
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUDebugCommandsMixin where
  makeObject = makeObject . unGPUDebugCommandsMixin

class (IsGObject o) => IsGPUDebugCommandsMixin o
toGPUDebugCommandsMixin :: IsGPUDebugCommandsMixin o => o -> GPUDebugCommandsMixin
toGPUDebugCommandsMixin = GPUDebugCommandsMixin . coerce

instance IsGPUDebugCommandsMixin GPUDebugCommandsMixin

instance IsGObject GPUDebugCommandsMixin where
  typeGType _ = gTypeGPUDebugCommandsMixin
  {-# INLINE typeGType #-}

noGPUDebugCommandsMixin :: Maybe GPUDebugCommandsMixin
noGPUDebugCommandsMixin = Nothing
{-# INLINE noGPUDebugCommandsMixin #-}

gTypeGPUDebugCommandsMixin :: JSM GType
gTypeGPUDebugCommandsMixin = GType . Object <$> jsg "Object"

-- | Dictionary GPUDepthStencilState (webgpu)
newtype GPUDepthStencilState = GPUDepthStencilState { unGPUDepthStencilState :: JSVal }

instance PToJSVal GPUDepthStencilState where
  pToJSVal = unGPUDepthStencilState
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUDepthStencilState where
  pFromJSVal = GPUDepthStencilState
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUDepthStencilState where
  toJSVal = return . unGPUDepthStencilState
  {-# INLINE toJSVal #-}

instance FromJSVal GPUDepthStencilState where
  fromJSVal v = fmap GPUDepthStencilState <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUDepthStencilState
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUDepthStencilState where
  makeObject = makeObject . unGPUDepthStencilState


instance IsGObject GPUDepthStencilState where
  typeGType _ = gTypeGPUDepthStencilState
  {-# INLINE typeGType #-}

noGPUDepthStencilState :: Maybe GPUDepthStencilState
noGPUDepthStencilState = Nothing
{-# INLINE noGPUDepthStencilState #-}

gTypeGPUDepthStencilState :: JSM GType
gTypeGPUDepthStencilState = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUDevice" (webgpu).
newtype GPUDevice = GPUDevice { unGPUDevice :: JSVal }

instance PToJSVal GPUDevice where
  pToJSVal = unGPUDevice
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUDevice where
  pFromJSVal = GPUDevice
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUDevice where
  toJSVal = return . unGPUDevice
  {-# INLINE toJSVal #-}

instance FromJSVal GPUDevice where
  fromJSVal v = fmap GPUDevice <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUDevice
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUDevice where
  makeObject = makeObject . unGPUDevice

instance IsGPUObjectBase GPUDevice
instance IsEventTarget GPUDevice

instance IsGObject GPUDevice where
  typeGType _ = gTypeGPUDevice
  {-# INLINE typeGType #-}

noGPUDevice :: Maybe GPUDevice
noGPUDevice = Nothing
{-# INLINE noGPUDevice #-}

gTypeGPUDevice :: JSM GType
gTypeGPUDevice = GType . Object <$> jsg "GPUDevice"

-- | Dictionary GPUDeviceDescriptor (webgpu)
newtype GPUDeviceDescriptor = GPUDeviceDescriptor { unGPUDeviceDescriptor :: JSVal }

instance PToJSVal GPUDeviceDescriptor where
  pToJSVal = unGPUDeviceDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUDeviceDescriptor where
  pFromJSVal = GPUDeviceDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUDeviceDescriptor where
  toJSVal = return . unGPUDeviceDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUDeviceDescriptor where
  fromJSVal v = fmap GPUDeviceDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUDeviceDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUDeviceDescriptor where
  makeObject = makeObject . unGPUDeviceDescriptor

instance IsGPUObjectDescriptorBase GPUDeviceDescriptor

instance IsGObject GPUDeviceDescriptor where
  typeGType _ = gTypeGPUDeviceDescriptor
  {-# INLINE typeGType #-}

noGPUDeviceDescriptor :: Maybe GPUDeviceDescriptor
noGPUDeviceDescriptor = Nothing
{-# INLINE noGPUDeviceDescriptor #-}

gTypeGPUDeviceDescriptor :: JSM GType
gTypeGPUDeviceDescriptor = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUDeviceLostInfo" (webgpu).
newtype GPUDeviceLostInfo = GPUDeviceLostInfo { unGPUDeviceLostInfo :: JSVal }

instance PToJSVal GPUDeviceLostInfo where
  pToJSVal = unGPUDeviceLostInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUDeviceLostInfo where
  pFromJSVal = GPUDeviceLostInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUDeviceLostInfo where
  toJSVal = return . unGPUDeviceLostInfo
  {-# INLINE toJSVal #-}

instance FromJSVal GPUDeviceLostInfo where
  fromJSVal v = fmap GPUDeviceLostInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUDeviceLostInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUDeviceLostInfo where
  makeObject = makeObject . unGPUDeviceLostInfo


instance IsGObject GPUDeviceLostInfo where
  typeGType _ = gTypeGPUDeviceLostInfo
  {-# INLINE typeGType #-}

noGPUDeviceLostInfo :: Maybe GPUDeviceLostInfo
noGPUDeviceLostInfo = Nothing
{-# INLINE noGPUDeviceLostInfo #-}

gTypeGPUDeviceLostInfo :: JSM GType
gTypeGPUDeviceLostInfo = GType . Object <$> jsg "GPUDeviceLostInfo"

-- | Functions for this interface are in "JSDOM.GPUError" (webgpu).
newtype GPUError = GPUError { unGPUError :: JSVal }

instance PToJSVal GPUError where
  pToJSVal = unGPUError
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUError where
  pFromJSVal = GPUError
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUError where
  toJSVal = return . unGPUError
  {-# INLINE toJSVal #-}

instance FromJSVal GPUError where
  fromJSVal v = fmap GPUError <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUError
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUError where
  makeObject = makeObject . unGPUError

class (IsGObject o) => IsGPUError o
toGPUError :: IsGPUError o => o -> GPUError
toGPUError = GPUError . coerce

instance IsGPUError GPUError

instance IsGObject GPUError where
  typeGType _ = gTypeGPUError
  {-# INLINE typeGType #-}

noGPUError :: Maybe GPUError
noGPUError = Nothing
{-# INLINE noGPUError #-}

gTypeGPUError :: JSM GType
gTypeGPUError = GType . Object <$> jsg "GPUError"

-- | Dictionary GPUExtent3DDict (webgpu)
newtype GPUExtent3DDict = GPUExtent3DDict { unGPUExtent3DDict :: JSVal }

instance PToJSVal GPUExtent3DDict where
  pToJSVal = unGPUExtent3DDict
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUExtent3DDict where
  pFromJSVal = GPUExtent3DDict
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUExtent3DDict where
  toJSVal = return . unGPUExtent3DDict
  {-# INLINE toJSVal #-}

instance FromJSVal GPUExtent3DDict where
  fromJSVal v = fmap GPUExtent3DDict <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUExtent3DDict
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUExtent3DDict where
  makeObject = makeObject . unGPUExtent3DDict


instance IsGObject GPUExtent3DDict where
  typeGType _ = gTypeGPUExtent3DDict
  {-# INLINE typeGType #-}

noGPUExtent3DDict :: Maybe GPUExtent3DDict
noGPUExtent3DDict = Nothing
{-# INLINE noGPUExtent3DDict #-}

gTypeGPUExtent3DDict :: JSM GType
gTypeGPUExtent3DDict = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUExternalTexture" (webgpu).
newtype GPUExternalTexture = GPUExternalTexture { unGPUExternalTexture :: JSVal }

instance PToJSVal GPUExternalTexture where
  pToJSVal = unGPUExternalTexture
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUExternalTexture where
  pFromJSVal = GPUExternalTexture
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUExternalTexture where
  toJSVal = return . unGPUExternalTexture
  {-# INLINE toJSVal #-}

instance FromJSVal GPUExternalTexture where
  fromJSVal v = fmap GPUExternalTexture <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUExternalTexture
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUExternalTexture where
  makeObject = makeObject . unGPUExternalTexture

instance IsGPUObjectBase GPUExternalTexture

instance IsGObject GPUExternalTexture where
  typeGType _ = gTypeGPUExternalTexture
  {-# INLINE typeGType #-}

noGPUExternalTexture :: Maybe GPUExternalTexture
noGPUExternalTexture = Nothing
{-# INLINE noGPUExternalTexture #-}

gTypeGPUExternalTexture :: JSM GType
gTypeGPUExternalTexture = GType . Object <$> jsg "GPUExternalTexture"

-- | Dictionary GPUExternalTextureBindingLayout (webgpu)
newtype GPUExternalTextureBindingLayout = GPUExternalTextureBindingLayout { unGPUExternalTextureBindingLayout :: JSVal }

instance PToJSVal GPUExternalTextureBindingLayout where
  pToJSVal = unGPUExternalTextureBindingLayout
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUExternalTextureBindingLayout where
  pFromJSVal = GPUExternalTextureBindingLayout
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUExternalTextureBindingLayout where
  toJSVal = return . unGPUExternalTextureBindingLayout
  {-# INLINE toJSVal #-}

instance FromJSVal GPUExternalTextureBindingLayout where
  fromJSVal v = fmap GPUExternalTextureBindingLayout <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUExternalTextureBindingLayout
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUExternalTextureBindingLayout where
  makeObject = makeObject . unGPUExternalTextureBindingLayout


instance IsGObject GPUExternalTextureBindingLayout where
  typeGType _ = gTypeGPUExternalTextureBindingLayout
  {-# INLINE typeGType #-}

noGPUExternalTextureBindingLayout :: Maybe GPUExternalTextureBindingLayout
noGPUExternalTextureBindingLayout = Nothing
{-# INLINE noGPUExternalTextureBindingLayout #-}

gTypeGPUExternalTextureBindingLayout :: JSM GType
gTypeGPUExternalTextureBindingLayout = GType . Object <$> jsg "Object"

-- | Dictionary GPUExternalTextureDescriptor (webgpu)
newtype GPUExternalTextureDescriptor = GPUExternalTextureDescriptor { unGPUExternalTextureDescriptor :: JSVal }

instance PToJSVal GPUExternalTextureDescriptor where
  pToJSVal = unGPUExternalTextureDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUExternalTextureDescriptor where
  pFromJSVal = GPUExternalTextureDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUExternalTextureDescriptor where
  toJSVal = return . unGPUExternalTextureDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUExternalTextureDescriptor where
  fromJSVal v = fmap GPUExternalTextureDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUExternalTextureDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUExternalTextureDescriptor where
  makeObject = makeObject . unGPUExternalTextureDescriptor

instance IsGPUObjectDescriptorBase GPUExternalTextureDescriptor

instance IsGObject GPUExternalTextureDescriptor where
  typeGType _ = gTypeGPUExternalTextureDescriptor
  {-# INLINE typeGType #-}

noGPUExternalTextureDescriptor :: Maybe GPUExternalTextureDescriptor
noGPUExternalTextureDescriptor = Nothing
{-# INLINE noGPUExternalTextureDescriptor #-}

gTypeGPUExternalTextureDescriptor :: JSM GType
gTypeGPUExternalTextureDescriptor = GType . Object <$> jsg "Object"

-- | Dictionary GPUFragmentState (webgpu)
newtype GPUFragmentState = GPUFragmentState { unGPUFragmentState :: JSVal }

instance PToJSVal GPUFragmentState where
  pToJSVal = unGPUFragmentState
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUFragmentState where
  pFromJSVal = GPUFragmentState
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUFragmentState where
  toJSVal = return . unGPUFragmentState
  {-# INLINE toJSVal #-}

instance FromJSVal GPUFragmentState where
  fromJSVal v = fmap GPUFragmentState <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUFragmentState
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUFragmentState where
  makeObject = makeObject . unGPUFragmentState

instance IsGPUProgrammableStage GPUFragmentState

instance IsGObject GPUFragmentState where
  typeGType _ = gTypeGPUFragmentState
  {-# INLINE typeGType #-}

noGPUFragmentState :: Maybe GPUFragmentState
noGPUFragmentState = Nothing
{-# INLINE noGPUFragmentState #-}

gTypeGPUFragmentState :: JSM GType
gTypeGPUFragmentState = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUInternalError" (webgpu).
newtype GPUInternalError = GPUInternalError { unGPUInternalError :: JSVal }

instance PToJSVal GPUInternalError where
  pToJSVal = unGPUInternalError
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUInternalError where
  pFromJSVal = GPUInternalError
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUInternalError where
  toJSVal = return . unGPUInternalError
  {-# INLINE toJSVal #-}

instance FromJSVal GPUInternalError where
  fromJSVal v = fmap GPUInternalError <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUInternalError
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUInternalError where
  makeObject = makeObject . unGPUInternalError

instance IsGPUError GPUInternalError

instance IsGObject GPUInternalError where
  typeGType _ = gTypeGPUInternalError
  {-# INLINE typeGType #-}

noGPUInternalError :: Maybe GPUInternalError
noGPUInternalError = Nothing
{-# INLINE noGPUInternalError #-}

gTypeGPUInternalError :: JSM GType
gTypeGPUInternalError = GType . Object <$> jsg "GPUInternalError"

-- | Dictionary GPUMultisampleState (webgpu)
newtype GPUMultisampleState = GPUMultisampleState { unGPUMultisampleState :: JSVal }

instance PToJSVal GPUMultisampleState where
  pToJSVal = unGPUMultisampleState
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUMultisampleState where
  pFromJSVal = GPUMultisampleState
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUMultisampleState where
  toJSVal = return . unGPUMultisampleState
  {-# INLINE toJSVal #-}

instance FromJSVal GPUMultisampleState where
  fromJSVal v = fmap GPUMultisampleState <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUMultisampleState
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUMultisampleState where
  makeObject = makeObject . unGPUMultisampleState


instance IsGObject GPUMultisampleState where
  typeGType _ = gTypeGPUMultisampleState
  {-# INLINE typeGType #-}

noGPUMultisampleState :: Maybe GPUMultisampleState
noGPUMultisampleState = Nothing
{-# INLINE noGPUMultisampleState #-}

gTypeGPUMultisampleState :: JSM GType
gTypeGPUMultisampleState = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUObjectBase" (webgpu).
newtype GPUObjectBase = GPUObjectBase { unGPUObjectBase :: JSVal }

instance PToJSVal GPUObjectBase where
  pToJSVal = unGPUObjectBase
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUObjectBase where
  pFromJSVal = GPUObjectBase
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUObjectBase where
  toJSVal = return . unGPUObjectBase
  {-# INLINE toJSVal #-}

instance FromJSVal GPUObjectBase where
  fromJSVal v = fmap GPUObjectBase <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUObjectBase
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUObjectBase where
  makeObject = makeObject . unGPUObjectBase

class (IsGObject o) => IsGPUObjectBase o
toGPUObjectBase :: IsGPUObjectBase o => o -> GPUObjectBase
toGPUObjectBase = GPUObjectBase . coerce

instance IsGPUObjectBase GPUObjectBase

instance IsGObject GPUObjectBase where
  typeGType _ = gTypeGPUObjectBase
  {-# INLINE typeGType #-}

noGPUObjectBase :: Maybe GPUObjectBase
noGPUObjectBase = Nothing
{-# INLINE noGPUObjectBase #-}

gTypeGPUObjectBase :: JSM GType
gTypeGPUObjectBase = GType . Object <$> jsg "Object"

-- | Dictionary GPUObjectDescriptorBase (webgpu)
newtype GPUObjectDescriptorBase = GPUObjectDescriptorBase { unGPUObjectDescriptorBase :: JSVal }

instance PToJSVal GPUObjectDescriptorBase where
  pToJSVal = unGPUObjectDescriptorBase
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUObjectDescriptorBase where
  pFromJSVal = GPUObjectDescriptorBase
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUObjectDescriptorBase where
  toJSVal = return . unGPUObjectDescriptorBase
  {-# INLINE toJSVal #-}

instance FromJSVal GPUObjectDescriptorBase where
  fromJSVal v = fmap GPUObjectDescriptorBase <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUObjectDescriptorBase
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUObjectDescriptorBase where
  makeObject = makeObject . unGPUObjectDescriptorBase

class (IsGObject o) => IsGPUObjectDescriptorBase o
toGPUObjectDescriptorBase :: IsGPUObjectDescriptorBase o => o -> GPUObjectDescriptorBase
toGPUObjectDescriptorBase = GPUObjectDescriptorBase . coerce

instance IsGPUObjectDescriptorBase GPUObjectDescriptorBase

instance IsGObject GPUObjectDescriptorBase where
  typeGType _ = gTypeGPUObjectDescriptorBase
  {-# INLINE typeGType #-}

noGPUObjectDescriptorBase :: Maybe GPUObjectDescriptorBase
noGPUObjectDescriptorBase = Nothing
{-# INLINE noGPUObjectDescriptorBase #-}

gTypeGPUObjectDescriptorBase :: JSM GType
gTypeGPUObjectDescriptorBase = GType . Object <$> jsg "Object"

-- | Dictionary GPUOrigin2DDict (webgpu)
newtype GPUOrigin2DDict = GPUOrigin2DDict { unGPUOrigin2DDict :: JSVal }

instance PToJSVal GPUOrigin2DDict where
  pToJSVal = unGPUOrigin2DDict
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUOrigin2DDict where
  pFromJSVal = GPUOrigin2DDict
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUOrigin2DDict where
  toJSVal = return . unGPUOrigin2DDict
  {-# INLINE toJSVal #-}

instance FromJSVal GPUOrigin2DDict where
  fromJSVal v = fmap GPUOrigin2DDict <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUOrigin2DDict
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUOrigin2DDict where
  makeObject = makeObject . unGPUOrigin2DDict


instance IsGObject GPUOrigin2DDict where
  typeGType _ = gTypeGPUOrigin2DDict
  {-# INLINE typeGType #-}

noGPUOrigin2DDict :: Maybe GPUOrigin2DDict
noGPUOrigin2DDict = Nothing
{-# INLINE noGPUOrigin2DDict #-}

gTypeGPUOrigin2DDict :: JSM GType
gTypeGPUOrigin2DDict = GType . Object <$> jsg "Object"

-- | Dictionary GPUOrigin3DDict (webgpu)
newtype GPUOrigin3DDict = GPUOrigin3DDict { unGPUOrigin3DDict :: JSVal }

instance PToJSVal GPUOrigin3DDict where
  pToJSVal = unGPUOrigin3DDict
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUOrigin3DDict where
  pFromJSVal = GPUOrigin3DDict
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUOrigin3DDict where
  toJSVal = return . unGPUOrigin3DDict
  {-# INLINE toJSVal #-}

instance FromJSVal GPUOrigin3DDict where
  fromJSVal v = fmap GPUOrigin3DDict <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUOrigin3DDict
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUOrigin3DDict where
  makeObject = makeObject . unGPUOrigin3DDict


instance IsGObject GPUOrigin3DDict where
  typeGType _ = gTypeGPUOrigin3DDict
  {-# INLINE typeGType #-}

noGPUOrigin3DDict :: Maybe GPUOrigin3DDict
noGPUOrigin3DDict = Nothing
{-# INLINE noGPUOrigin3DDict #-}

gTypeGPUOrigin3DDict :: JSM GType
gTypeGPUOrigin3DDict = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUOutOfMemoryError" (webgpu).
newtype GPUOutOfMemoryError = GPUOutOfMemoryError { unGPUOutOfMemoryError :: JSVal }

instance PToJSVal GPUOutOfMemoryError where
  pToJSVal = unGPUOutOfMemoryError
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUOutOfMemoryError where
  pFromJSVal = GPUOutOfMemoryError
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUOutOfMemoryError where
  toJSVal = return . unGPUOutOfMemoryError
  {-# INLINE toJSVal #-}

instance FromJSVal GPUOutOfMemoryError where
  fromJSVal v = fmap GPUOutOfMemoryError <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUOutOfMemoryError
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUOutOfMemoryError where
  makeObject = makeObject . unGPUOutOfMemoryError

instance IsGPUError GPUOutOfMemoryError

instance IsGObject GPUOutOfMemoryError where
  typeGType _ = gTypeGPUOutOfMemoryError
  {-# INLINE typeGType #-}

noGPUOutOfMemoryError :: Maybe GPUOutOfMemoryError
noGPUOutOfMemoryError = Nothing
{-# INLINE noGPUOutOfMemoryError #-}

gTypeGPUOutOfMemoryError :: JSM GType
gTypeGPUOutOfMemoryError = GType . Object <$> jsg "GPUOutOfMemoryError"

-- | Functions for this interface are in "JSDOM.GPUPipelineBase" (webgpu).
newtype GPUPipelineBase = GPUPipelineBase { unGPUPipelineBase :: JSVal }

instance PToJSVal GPUPipelineBase where
  pToJSVal = unGPUPipelineBase
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUPipelineBase where
  pFromJSVal = GPUPipelineBase
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUPipelineBase where
  toJSVal = return . unGPUPipelineBase
  {-# INLINE toJSVal #-}

instance FromJSVal GPUPipelineBase where
  fromJSVal v = fmap GPUPipelineBase <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUPipelineBase
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUPipelineBase where
  makeObject = makeObject . unGPUPipelineBase

class (IsGObject o) => IsGPUPipelineBase o
toGPUPipelineBase :: IsGPUPipelineBase o => o -> GPUPipelineBase
toGPUPipelineBase = GPUPipelineBase . coerce

instance IsGPUPipelineBase GPUPipelineBase

instance IsGObject GPUPipelineBase where
  typeGType _ = gTypeGPUPipelineBase
  {-# INLINE typeGType #-}

noGPUPipelineBase :: Maybe GPUPipelineBase
noGPUPipelineBase = Nothing
{-# INLINE noGPUPipelineBase #-}

gTypeGPUPipelineBase :: JSM GType
gTypeGPUPipelineBase = GType . Object <$> jsg "Object"

-- | Dictionary GPUPipelineDescriptorBase (webgpu)
newtype GPUPipelineDescriptorBase = GPUPipelineDescriptorBase { unGPUPipelineDescriptorBase :: JSVal }

instance PToJSVal GPUPipelineDescriptorBase where
  pToJSVal = unGPUPipelineDescriptorBase
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUPipelineDescriptorBase where
  pFromJSVal = GPUPipelineDescriptorBase
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUPipelineDescriptorBase where
  toJSVal = return . unGPUPipelineDescriptorBase
  {-# INLINE toJSVal #-}

instance FromJSVal GPUPipelineDescriptorBase where
  fromJSVal v = fmap GPUPipelineDescriptorBase <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUPipelineDescriptorBase
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUPipelineDescriptorBase where
  makeObject = makeObject . unGPUPipelineDescriptorBase

class (IsGPUObjectDescriptorBase o, IsGObject o) => IsGPUPipelineDescriptorBase o
toGPUPipelineDescriptorBase :: IsGPUPipelineDescriptorBase o => o -> GPUPipelineDescriptorBase
toGPUPipelineDescriptorBase = GPUPipelineDescriptorBase . coerce

instance IsGPUPipelineDescriptorBase GPUPipelineDescriptorBase
instance IsGPUObjectDescriptorBase GPUPipelineDescriptorBase

instance IsGObject GPUPipelineDescriptorBase where
  typeGType _ = gTypeGPUPipelineDescriptorBase
  {-# INLINE typeGType #-}

noGPUPipelineDescriptorBase :: Maybe GPUPipelineDescriptorBase
noGPUPipelineDescriptorBase = Nothing
{-# INLINE noGPUPipelineDescriptorBase #-}

gTypeGPUPipelineDescriptorBase :: JSM GType
gTypeGPUPipelineDescriptorBase = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUPipelineError" (webgpu).
newtype GPUPipelineError = GPUPipelineError { unGPUPipelineError :: JSVal }

instance PToJSVal GPUPipelineError where
  pToJSVal = unGPUPipelineError
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUPipelineError where
  pFromJSVal = GPUPipelineError
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUPipelineError where
  toJSVal = return . unGPUPipelineError
  {-# INLINE toJSVal #-}

instance FromJSVal GPUPipelineError where
  fromJSVal v = fmap GPUPipelineError <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUPipelineError
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUPipelineError where
  makeObject = makeObject . unGPUPipelineError

instance IsDOMException GPUPipelineError

instance IsGObject GPUPipelineError where
  typeGType _ = gTypeGPUPipelineError
  {-# INLINE typeGType #-}

noGPUPipelineError :: Maybe GPUPipelineError
noGPUPipelineError = Nothing
{-# INLINE noGPUPipelineError #-}

gTypeGPUPipelineError :: JSM GType
gTypeGPUPipelineError = GType . Object <$> jsg "GPUPipelineError"

-- | Dictionary GPUPipelineErrorInit (webgpu)
newtype GPUPipelineErrorInit = GPUPipelineErrorInit { unGPUPipelineErrorInit :: JSVal }

instance PToJSVal GPUPipelineErrorInit where
  pToJSVal = unGPUPipelineErrorInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUPipelineErrorInit where
  pFromJSVal = GPUPipelineErrorInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUPipelineErrorInit where
  toJSVal = return . unGPUPipelineErrorInit
  {-# INLINE toJSVal #-}

instance FromJSVal GPUPipelineErrorInit where
  fromJSVal v = fmap GPUPipelineErrorInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUPipelineErrorInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUPipelineErrorInit where
  makeObject = makeObject . unGPUPipelineErrorInit


instance IsGObject GPUPipelineErrorInit where
  typeGType _ = gTypeGPUPipelineErrorInit
  {-# INLINE typeGType #-}

noGPUPipelineErrorInit :: Maybe GPUPipelineErrorInit
noGPUPipelineErrorInit = Nothing
{-# INLINE noGPUPipelineErrorInit #-}

gTypeGPUPipelineErrorInit :: JSM GType
gTypeGPUPipelineErrorInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUPipelineLayout" (webgpu).
newtype GPUPipelineLayout = GPUPipelineLayout { unGPUPipelineLayout :: JSVal }

instance PToJSVal GPUPipelineLayout where
  pToJSVal = unGPUPipelineLayout
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUPipelineLayout where
  pFromJSVal = GPUPipelineLayout
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUPipelineLayout where
  toJSVal = return . unGPUPipelineLayout
  {-# INLINE toJSVal #-}

instance FromJSVal GPUPipelineLayout where
  fromJSVal v = fmap GPUPipelineLayout <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUPipelineLayout
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUPipelineLayout where
  makeObject = makeObject . unGPUPipelineLayout

instance IsGPUObjectBase GPUPipelineLayout

instance IsGObject GPUPipelineLayout where
  typeGType _ = gTypeGPUPipelineLayout
  {-# INLINE typeGType #-}

noGPUPipelineLayout :: Maybe GPUPipelineLayout
noGPUPipelineLayout = Nothing
{-# INLINE noGPUPipelineLayout #-}

gTypeGPUPipelineLayout :: JSM GType
gTypeGPUPipelineLayout = GType . Object <$> jsg "GPUPipelineLayout"

-- | Dictionary GPUPipelineLayoutDescriptor (webgpu)
newtype GPUPipelineLayoutDescriptor = GPUPipelineLayoutDescriptor { unGPUPipelineLayoutDescriptor :: JSVal }

instance PToJSVal GPUPipelineLayoutDescriptor where
  pToJSVal = unGPUPipelineLayoutDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUPipelineLayoutDescriptor where
  pFromJSVal = GPUPipelineLayoutDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUPipelineLayoutDescriptor where
  toJSVal = return . unGPUPipelineLayoutDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUPipelineLayoutDescriptor where
  fromJSVal v = fmap GPUPipelineLayoutDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUPipelineLayoutDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUPipelineLayoutDescriptor where
  makeObject = makeObject . unGPUPipelineLayoutDescriptor

instance IsGPUObjectDescriptorBase GPUPipelineLayoutDescriptor

instance IsGObject GPUPipelineLayoutDescriptor where
  typeGType _ = gTypeGPUPipelineLayoutDescriptor
  {-# INLINE typeGType #-}

noGPUPipelineLayoutDescriptor :: Maybe GPUPipelineLayoutDescriptor
noGPUPipelineLayoutDescriptor = Nothing
{-# INLINE noGPUPipelineLayoutDescriptor #-}

gTypeGPUPipelineLayoutDescriptor :: JSM GType
gTypeGPUPipelineLayoutDescriptor = GType . Object <$> jsg "Object"

-- | Dictionary GPUPrimitiveState (webgpu)
newtype GPUPrimitiveState = GPUPrimitiveState { unGPUPrimitiveState :: JSVal }

instance PToJSVal GPUPrimitiveState where
  pToJSVal = unGPUPrimitiveState
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUPrimitiveState where
  pFromJSVal = GPUPrimitiveState
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUPrimitiveState where
  toJSVal = return . unGPUPrimitiveState
  {-# INLINE toJSVal #-}

instance FromJSVal GPUPrimitiveState where
  fromJSVal v = fmap GPUPrimitiveState <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUPrimitiveState
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUPrimitiveState where
  makeObject = makeObject . unGPUPrimitiveState


instance IsGObject GPUPrimitiveState where
  typeGType _ = gTypeGPUPrimitiveState
  {-# INLINE typeGType #-}

noGPUPrimitiveState :: Maybe GPUPrimitiveState
noGPUPrimitiveState = Nothing
{-# INLINE noGPUPrimitiveState #-}

gTypeGPUPrimitiveState :: JSM GType
gTypeGPUPrimitiveState = GType . Object <$> jsg "Object"

-- | Dictionary GPUProgrammableStage (webgpu)
newtype GPUProgrammableStage = GPUProgrammableStage { unGPUProgrammableStage :: JSVal }

instance PToJSVal GPUProgrammableStage where
  pToJSVal = unGPUProgrammableStage
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUProgrammableStage where
  pFromJSVal = GPUProgrammableStage
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUProgrammableStage where
  toJSVal = return . unGPUProgrammableStage
  {-# INLINE toJSVal #-}

instance FromJSVal GPUProgrammableStage where
  fromJSVal v = fmap GPUProgrammableStage <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUProgrammableStage
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUProgrammableStage where
  makeObject = makeObject . unGPUProgrammableStage

class (IsGObject o) => IsGPUProgrammableStage o
toGPUProgrammableStage :: IsGPUProgrammableStage o => o -> GPUProgrammableStage
toGPUProgrammableStage = GPUProgrammableStage . coerce

instance IsGPUProgrammableStage GPUProgrammableStage

instance IsGObject GPUProgrammableStage where
  typeGType _ = gTypeGPUProgrammableStage
  {-# INLINE typeGType #-}

noGPUProgrammableStage :: Maybe GPUProgrammableStage
noGPUProgrammableStage = Nothing
{-# INLINE noGPUProgrammableStage #-}

gTypeGPUProgrammableStage :: JSM GType
gTypeGPUProgrammableStage = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUQuerySet" (webgpu).
newtype GPUQuerySet = GPUQuerySet { unGPUQuerySet :: JSVal }

instance PToJSVal GPUQuerySet where
  pToJSVal = unGPUQuerySet
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUQuerySet where
  pFromJSVal = GPUQuerySet
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUQuerySet where
  toJSVal = return . unGPUQuerySet
  {-# INLINE toJSVal #-}

instance FromJSVal GPUQuerySet where
  fromJSVal v = fmap GPUQuerySet <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUQuerySet
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUQuerySet where
  makeObject = makeObject . unGPUQuerySet

instance IsGPUObjectBase GPUQuerySet

instance IsGObject GPUQuerySet where
  typeGType _ = gTypeGPUQuerySet
  {-# INLINE typeGType #-}

noGPUQuerySet :: Maybe GPUQuerySet
noGPUQuerySet = Nothing
{-# INLINE noGPUQuerySet #-}

gTypeGPUQuerySet :: JSM GType
gTypeGPUQuerySet = GType . Object <$> jsg "GPUQuerySet"

-- | Dictionary GPUQuerySetDescriptor (webgpu)
newtype GPUQuerySetDescriptor = GPUQuerySetDescriptor { unGPUQuerySetDescriptor :: JSVal }

instance PToJSVal GPUQuerySetDescriptor where
  pToJSVal = unGPUQuerySetDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUQuerySetDescriptor where
  pFromJSVal = GPUQuerySetDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUQuerySetDescriptor where
  toJSVal = return . unGPUQuerySetDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUQuerySetDescriptor where
  fromJSVal v = fmap GPUQuerySetDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUQuerySetDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUQuerySetDescriptor where
  makeObject = makeObject . unGPUQuerySetDescriptor

instance IsGPUObjectDescriptorBase GPUQuerySetDescriptor

instance IsGObject GPUQuerySetDescriptor where
  typeGType _ = gTypeGPUQuerySetDescriptor
  {-# INLINE typeGType #-}

noGPUQuerySetDescriptor :: Maybe GPUQuerySetDescriptor
noGPUQuerySetDescriptor = Nothing
{-# INLINE noGPUQuerySetDescriptor #-}

gTypeGPUQuerySetDescriptor :: JSM GType
gTypeGPUQuerySetDescriptor = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUQueue" (webgpu).
newtype GPUQueue = GPUQueue { unGPUQueue :: JSVal }

instance PToJSVal GPUQueue where
  pToJSVal = unGPUQueue
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUQueue where
  pFromJSVal = GPUQueue
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUQueue where
  toJSVal = return . unGPUQueue
  {-# INLINE toJSVal #-}

instance FromJSVal GPUQueue where
  fromJSVal v = fmap GPUQueue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUQueue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUQueue where
  makeObject = makeObject . unGPUQueue

instance IsGPUObjectBase GPUQueue

instance IsGObject GPUQueue where
  typeGType _ = gTypeGPUQueue
  {-# INLINE typeGType #-}

noGPUQueue :: Maybe GPUQueue
noGPUQueue = Nothing
{-# INLINE noGPUQueue #-}

gTypeGPUQueue :: JSM GType
gTypeGPUQueue = GType . Object <$> jsg "GPUQueue"

-- | Dictionary GPUQueueDescriptor (webgpu)
newtype GPUQueueDescriptor = GPUQueueDescriptor { unGPUQueueDescriptor :: JSVal }

instance PToJSVal GPUQueueDescriptor where
  pToJSVal = unGPUQueueDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUQueueDescriptor where
  pFromJSVal = GPUQueueDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUQueueDescriptor where
  toJSVal = return . unGPUQueueDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUQueueDescriptor where
  fromJSVal v = fmap GPUQueueDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUQueueDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUQueueDescriptor where
  makeObject = makeObject . unGPUQueueDescriptor

instance IsGPUObjectDescriptorBase GPUQueueDescriptor

instance IsGObject GPUQueueDescriptor where
  typeGType _ = gTypeGPUQueueDescriptor
  {-# INLINE typeGType #-}

noGPUQueueDescriptor :: Maybe GPUQueueDescriptor
noGPUQueueDescriptor = Nothing
{-# INLINE noGPUQueueDescriptor #-}

gTypeGPUQueueDescriptor :: JSM GType
gTypeGPUQueueDescriptor = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPURenderBundle" (webgpu).
newtype GPURenderBundle = GPURenderBundle { unGPURenderBundle :: JSVal }

instance PToJSVal GPURenderBundle where
  pToJSVal = unGPURenderBundle
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURenderBundle where
  pFromJSVal = GPURenderBundle
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURenderBundle where
  toJSVal = return . unGPURenderBundle
  {-# INLINE toJSVal #-}

instance FromJSVal GPURenderBundle where
  fromJSVal v = fmap GPURenderBundle <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURenderBundle
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURenderBundle where
  makeObject = makeObject . unGPURenderBundle

instance IsGPUObjectBase GPURenderBundle

instance IsGObject GPURenderBundle where
  typeGType _ = gTypeGPURenderBundle
  {-# INLINE typeGType #-}

noGPURenderBundle :: Maybe GPURenderBundle
noGPURenderBundle = Nothing
{-# INLINE noGPURenderBundle #-}

gTypeGPURenderBundle :: JSM GType
gTypeGPURenderBundle = GType . Object <$> jsg "GPURenderBundle"

-- | Dictionary GPURenderBundleDescriptor (webgpu)
newtype GPURenderBundleDescriptor = GPURenderBundleDescriptor { unGPURenderBundleDescriptor :: JSVal }

instance PToJSVal GPURenderBundleDescriptor where
  pToJSVal = unGPURenderBundleDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURenderBundleDescriptor where
  pFromJSVal = GPURenderBundleDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURenderBundleDescriptor where
  toJSVal = return . unGPURenderBundleDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPURenderBundleDescriptor where
  fromJSVal v = fmap GPURenderBundleDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURenderBundleDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURenderBundleDescriptor where
  makeObject = makeObject . unGPURenderBundleDescriptor

instance IsGPUObjectDescriptorBase GPURenderBundleDescriptor

instance IsGObject GPURenderBundleDescriptor where
  typeGType _ = gTypeGPURenderBundleDescriptor
  {-# INLINE typeGType #-}

noGPURenderBundleDescriptor :: Maybe GPURenderBundleDescriptor
noGPURenderBundleDescriptor = Nothing
{-# INLINE noGPURenderBundleDescriptor #-}

gTypeGPURenderBundleDescriptor :: JSM GType
gTypeGPURenderBundleDescriptor = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPURenderBundleEncoder" (webgpu).
newtype GPURenderBundleEncoder = GPURenderBundleEncoder { unGPURenderBundleEncoder :: JSVal }

instance PToJSVal GPURenderBundleEncoder where
  pToJSVal = unGPURenderBundleEncoder
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURenderBundleEncoder where
  pFromJSVal = GPURenderBundleEncoder
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURenderBundleEncoder where
  toJSVal = return . unGPURenderBundleEncoder
  {-# INLINE toJSVal #-}

instance FromJSVal GPURenderBundleEncoder where
  fromJSVal v = fmap GPURenderBundleEncoder <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURenderBundleEncoder
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURenderBundleEncoder where
  makeObject = makeObject . unGPURenderBundleEncoder

instance IsGPUBindingCommandsMixin GPURenderBundleEncoder
instance IsGPUDebugCommandsMixin GPURenderBundleEncoder
instance IsGPUObjectBase GPURenderBundleEncoder
instance IsGPURenderCommandsMixin GPURenderBundleEncoder

instance IsGObject GPURenderBundleEncoder where
  typeGType _ = gTypeGPURenderBundleEncoder
  {-# INLINE typeGType #-}

noGPURenderBundleEncoder :: Maybe GPURenderBundleEncoder
noGPURenderBundleEncoder = Nothing
{-# INLINE noGPURenderBundleEncoder #-}

gTypeGPURenderBundleEncoder :: JSM GType
gTypeGPURenderBundleEncoder = GType . Object <$> jsg "GPURenderBundleEncoder"

-- | Dictionary GPURenderBundleEncoderDescriptor (webgpu)
newtype GPURenderBundleEncoderDescriptor = GPURenderBundleEncoderDescriptor { unGPURenderBundleEncoderDescriptor :: JSVal }

instance PToJSVal GPURenderBundleEncoderDescriptor where
  pToJSVal = unGPURenderBundleEncoderDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURenderBundleEncoderDescriptor where
  pFromJSVal = GPURenderBundleEncoderDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURenderBundleEncoderDescriptor where
  toJSVal = return . unGPURenderBundleEncoderDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPURenderBundleEncoderDescriptor where
  fromJSVal v = fmap GPURenderBundleEncoderDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURenderBundleEncoderDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURenderBundleEncoderDescriptor where
  makeObject = makeObject . unGPURenderBundleEncoderDescriptor

instance IsGPURenderPassLayout GPURenderBundleEncoderDescriptor
instance IsGPUObjectDescriptorBase GPURenderBundleEncoderDescriptor

instance IsGObject GPURenderBundleEncoderDescriptor where
  typeGType _ = gTypeGPURenderBundleEncoderDescriptor
  {-# INLINE typeGType #-}

noGPURenderBundleEncoderDescriptor :: Maybe GPURenderBundleEncoderDescriptor
noGPURenderBundleEncoderDescriptor = Nothing
{-# INLINE noGPURenderBundleEncoderDescriptor #-}

gTypeGPURenderBundleEncoderDescriptor :: JSM GType
gTypeGPURenderBundleEncoderDescriptor = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPURenderCommandsMixin" (webgpu).
newtype GPURenderCommandsMixin = GPURenderCommandsMixin { unGPURenderCommandsMixin :: JSVal }

instance PToJSVal GPURenderCommandsMixin where
  pToJSVal = unGPURenderCommandsMixin
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURenderCommandsMixin where
  pFromJSVal = GPURenderCommandsMixin
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURenderCommandsMixin where
  toJSVal = return . unGPURenderCommandsMixin
  {-# INLINE toJSVal #-}

instance FromJSVal GPURenderCommandsMixin where
  fromJSVal v = fmap GPURenderCommandsMixin <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURenderCommandsMixin
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURenderCommandsMixin where
  makeObject = makeObject . unGPURenderCommandsMixin

class (IsGObject o) => IsGPURenderCommandsMixin o
toGPURenderCommandsMixin :: IsGPURenderCommandsMixin o => o -> GPURenderCommandsMixin
toGPURenderCommandsMixin = GPURenderCommandsMixin . coerce

instance IsGPURenderCommandsMixin GPURenderCommandsMixin

instance IsGObject GPURenderCommandsMixin where
  typeGType _ = gTypeGPURenderCommandsMixin
  {-# INLINE typeGType #-}

noGPURenderCommandsMixin :: Maybe GPURenderCommandsMixin
noGPURenderCommandsMixin = Nothing
{-# INLINE noGPURenderCommandsMixin #-}

gTypeGPURenderCommandsMixin :: JSM GType
gTypeGPURenderCommandsMixin = GType . Object <$> jsg "Object"

-- | Dictionary GPURenderPassColorAttachment (webgpu)
newtype GPURenderPassColorAttachment = GPURenderPassColorAttachment { unGPURenderPassColorAttachment :: JSVal }

instance PToJSVal GPURenderPassColorAttachment where
  pToJSVal = unGPURenderPassColorAttachment
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURenderPassColorAttachment where
  pFromJSVal = GPURenderPassColorAttachment
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURenderPassColorAttachment where
  toJSVal = return . unGPURenderPassColorAttachment
  {-# INLINE toJSVal #-}

instance FromJSVal GPURenderPassColorAttachment where
  fromJSVal v = fmap GPURenderPassColorAttachment <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURenderPassColorAttachment
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURenderPassColorAttachment where
  makeObject = makeObject . unGPURenderPassColorAttachment


instance IsGObject GPURenderPassColorAttachment where
  typeGType _ = gTypeGPURenderPassColorAttachment
  {-# INLINE typeGType #-}

noGPURenderPassColorAttachment :: Maybe GPURenderPassColorAttachment
noGPURenderPassColorAttachment = Nothing
{-# INLINE noGPURenderPassColorAttachment #-}

gTypeGPURenderPassColorAttachment :: JSM GType
gTypeGPURenderPassColorAttachment = GType . Object <$> jsg "Object"

-- | Dictionary GPURenderPassDepthStencilAttachment (webgpu)
newtype GPURenderPassDepthStencilAttachment = GPURenderPassDepthStencilAttachment { unGPURenderPassDepthStencilAttachment :: JSVal }

instance PToJSVal GPURenderPassDepthStencilAttachment where
  pToJSVal = unGPURenderPassDepthStencilAttachment
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURenderPassDepthStencilAttachment where
  pFromJSVal = GPURenderPassDepthStencilAttachment
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURenderPassDepthStencilAttachment where
  toJSVal = return . unGPURenderPassDepthStencilAttachment
  {-# INLINE toJSVal #-}

instance FromJSVal GPURenderPassDepthStencilAttachment where
  fromJSVal v = fmap GPURenderPassDepthStencilAttachment <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURenderPassDepthStencilAttachment
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURenderPassDepthStencilAttachment where
  makeObject = makeObject . unGPURenderPassDepthStencilAttachment


instance IsGObject GPURenderPassDepthStencilAttachment where
  typeGType _ = gTypeGPURenderPassDepthStencilAttachment
  {-# INLINE typeGType #-}

noGPURenderPassDepthStencilAttachment :: Maybe GPURenderPassDepthStencilAttachment
noGPURenderPassDepthStencilAttachment = Nothing
{-# INLINE noGPURenderPassDepthStencilAttachment #-}

gTypeGPURenderPassDepthStencilAttachment :: JSM GType
gTypeGPURenderPassDepthStencilAttachment = GType . Object <$> jsg "Object"

-- | Dictionary GPURenderPassDescriptor (webgpu)
newtype GPURenderPassDescriptor = GPURenderPassDescriptor { unGPURenderPassDescriptor :: JSVal }

instance PToJSVal GPURenderPassDescriptor where
  pToJSVal = unGPURenderPassDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURenderPassDescriptor where
  pFromJSVal = GPURenderPassDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURenderPassDescriptor where
  toJSVal = return . unGPURenderPassDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPURenderPassDescriptor where
  fromJSVal v = fmap GPURenderPassDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURenderPassDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURenderPassDescriptor where
  makeObject = makeObject . unGPURenderPassDescriptor

instance IsGPUObjectDescriptorBase GPURenderPassDescriptor

instance IsGObject GPURenderPassDescriptor where
  typeGType _ = gTypeGPURenderPassDescriptor
  {-# INLINE typeGType #-}

noGPURenderPassDescriptor :: Maybe GPURenderPassDescriptor
noGPURenderPassDescriptor = Nothing
{-# INLINE noGPURenderPassDescriptor #-}

gTypeGPURenderPassDescriptor :: JSM GType
gTypeGPURenderPassDescriptor = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPURenderPassEncoder" (webgpu).
newtype GPURenderPassEncoder = GPURenderPassEncoder { unGPURenderPassEncoder :: JSVal }

instance PToJSVal GPURenderPassEncoder where
  pToJSVal = unGPURenderPassEncoder
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURenderPassEncoder where
  pFromJSVal = GPURenderPassEncoder
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURenderPassEncoder where
  toJSVal = return . unGPURenderPassEncoder
  {-# INLINE toJSVal #-}

instance FromJSVal GPURenderPassEncoder where
  fromJSVal v = fmap GPURenderPassEncoder <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURenderPassEncoder
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURenderPassEncoder where
  makeObject = makeObject . unGPURenderPassEncoder

instance IsGPUBindingCommandsMixin GPURenderPassEncoder
instance IsGPUDebugCommandsMixin GPURenderPassEncoder
instance IsGPUObjectBase GPURenderPassEncoder
instance IsGPURenderCommandsMixin GPURenderPassEncoder

instance IsGObject GPURenderPassEncoder where
  typeGType _ = gTypeGPURenderPassEncoder
  {-# INLINE typeGType #-}

noGPURenderPassEncoder :: Maybe GPURenderPassEncoder
noGPURenderPassEncoder = Nothing
{-# INLINE noGPURenderPassEncoder #-}

gTypeGPURenderPassEncoder :: JSM GType
gTypeGPURenderPassEncoder = GType . Object <$> jsg "GPURenderPassEncoder"

-- | Dictionary GPURenderPassLayout (webgpu)
newtype GPURenderPassLayout = GPURenderPassLayout { unGPURenderPassLayout :: JSVal }

instance PToJSVal GPURenderPassLayout where
  pToJSVal = unGPURenderPassLayout
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURenderPassLayout where
  pFromJSVal = GPURenderPassLayout
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURenderPassLayout where
  toJSVal = return . unGPURenderPassLayout
  {-# INLINE toJSVal #-}

instance FromJSVal GPURenderPassLayout where
  fromJSVal v = fmap GPURenderPassLayout <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURenderPassLayout
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURenderPassLayout where
  makeObject = makeObject . unGPURenderPassLayout

class (IsGPUObjectDescriptorBase o, IsGObject o) => IsGPURenderPassLayout o
toGPURenderPassLayout :: IsGPURenderPassLayout o => o -> GPURenderPassLayout
toGPURenderPassLayout = GPURenderPassLayout . coerce

instance IsGPURenderPassLayout GPURenderPassLayout
instance IsGPUObjectDescriptorBase GPURenderPassLayout

instance IsGObject GPURenderPassLayout where
  typeGType _ = gTypeGPURenderPassLayout
  {-# INLINE typeGType #-}

noGPURenderPassLayout :: Maybe GPURenderPassLayout
noGPURenderPassLayout = Nothing
{-# INLINE noGPURenderPassLayout #-}

gTypeGPURenderPassLayout :: JSM GType
gTypeGPURenderPassLayout = GType . Object <$> jsg "Object"

-- | Dictionary GPURenderPassTimestampWrites (webgpu)
newtype GPURenderPassTimestampWrites = GPURenderPassTimestampWrites { unGPURenderPassTimestampWrites :: JSVal }

instance PToJSVal GPURenderPassTimestampWrites where
  pToJSVal = unGPURenderPassTimestampWrites
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURenderPassTimestampWrites where
  pFromJSVal = GPURenderPassTimestampWrites
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURenderPassTimestampWrites where
  toJSVal = return . unGPURenderPassTimestampWrites
  {-# INLINE toJSVal #-}

instance FromJSVal GPURenderPassTimestampWrites where
  fromJSVal v = fmap GPURenderPassTimestampWrites <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURenderPassTimestampWrites
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURenderPassTimestampWrites where
  makeObject = makeObject . unGPURenderPassTimestampWrites


instance IsGObject GPURenderPassTimestampWrites where
  typeGType _ = gTypeGPURenderPassTimestampWrites
  {-# INLINE typeGType #-}

noGPURenderPassTimestampWrites :: Maybe GPURenderPassTimestampWrites
noGPURenderPassTimestampWrites = Nothing
{-# INLINE noGPURenderPassTimestampWrites #-}

gTypeGPURenderPassTimestampWrites :: JSM GType
gTypeGPURenderPassTimestampWrites = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPURenderPipeline" (webgpu).
newtype GPURenderPipeline = GPURenderPipeline { unGPURenderPipeline :: JSVal }

instance PToJSVal GPURenderPipeline where
  pToJSVal = unGPURenderPipeline
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURenderPipeline where
  pFromJSVal = GPURenderPipeline
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURenderPipeline where
  toJSVal = return . unGPURenderPipeline
  {-# INLINE toJSVal #-}

instance FromJSVal GPURenderPipeline where
  fromJSVal v = fmap GPURenderPipeline <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURenderPipeline
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURenderPipeline where
  makeObject = makeObject . unGPURenderPipeline

instance IsGPUObjectBase GPURenderPipeline
instance IsGPUPipelineBase GPURenderPipeline

instance IsGObject GPURenderPipeline where
  typeGType _ = gTypeGPURenderPipeline
  {-# INLINE typeGType #-}

noGPURenderPipeline :: Maybe GPURenderPipeline
noGPURenderPipeline = Nothing
{-# INLINE noGPURenderPipeline #-}

gTypeGPURenderPipeline :: JSM GType
gTypeGPURenderPipeline = GType . Object <$> jsg "GPURenderPipeline"

-- | Dictionary GPURenderPipelineDescriptor (webgpu)
newtype GPURenderPipelineDescriptor = GPURenderPipelineDescriptor { unGPURenderPipelineDescriptor :: JSVal }

instance PToJSVal GPURenderPipelineDescriptor where
  pToJSVal = unGPURenderPipelineDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURenderPipelineDescriptor where
  pFromJSVal = GPURenderPipelineDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURenderPipelineDescriptor where
  toJSVal = return . unGPURenderPipelineDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPURenderPipelineDescriptor where
  fromJSVal v = fmap GPURenderPipelineDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURenderPipelineDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURenderPipelineDescriptor where
  makeObject = makeObject . unGPURenderPipelineDescriptor

instance IsGPUPipelineDescriptorBase GPURenderPipelineDescriptor
instance IsGPUObjectDescriptorBase GPURenderPipelineDescriptor

instance IsGObject GPURenderPipelineDescriptor where
  typeGType _ = gTypeGPURenderPipelineDescriptor
  {-# INLINE typeGType #-}

noGPURenderPipelineDescriptor :: Maybe GPURenderPipelineDescriptor
noGPURenderPipelineDescriptor = Nothing
{-# INLINE noGPURenderPipelineDescriptor #-}

gTypeGPURenderPipelineDescriptor :: JSM GType
gTypeGPURenderPipelineDescriptor = GType . Object <$> jsg "Object"

-- | Dictionary GPURequestAdapterOptions (webgpu)
newtype GPURequestAdapterOptions = GPURequestAdapterOptions { unGPURequestAdapterOptions :: JSVal }

instance PToJSVal GPURequestAdapterOptions where
  pToJSVal = unGPURequestAdapterOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPURequestAdapterOptions where
  pFromJSVal = GPURequestAdapterOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPURequestAdapterOptions where
  toJSVal = return . unGPURequestAdapterOptions
  {-# INLINE toJSVal #-}

instance FromJSVal GPURequestAdapterOptions where
  fromJSVal v = fmap GPURequestAdapterOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPURequestAdapterOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPURequestAdapterOptions where
  makeObject = makeObject . unGPURequestAdapterOptions


instance IsGObject GPURequestAdapterOptions where
  typeGType _ = gTypeGPURequestAdapterOptions
  {-# INLINE typeGType #-}

noGPURequestAdapterOptions :: Maybe GPURequestAdapterOptions
noGPURequestAdapterOptions = Nothing
{-# INLINE noGPURequestAdapterOptions #-}

gTypeGPURequestAdapterOptions :: JSM GType
gTypeGPURequestAdapterOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUSampler" (webgpu).
newtype GPUSampler = GPUSampler { unGPUSampler :: JSVal }

instance PToJSVal GPUSampler where
  pToJSVal = unGPUSampler
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUSampler where
  pFromJSVal = GPUSampler
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUSampler where
  toJSVal = return . unGPUSampler
  {-# INLINE toJSVal #-}

instance FromJSVal GPUSampler where
  fromJSVal v = fmap GPUSampler <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUSampler
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUSampler where
  makeObject = makeObject . unGPUSampler

instance IsGPUObjectBase GPUSampler

instance IsGObject GPUSampler where
  typeGType _ = gTypeGPUSampler
  {-# INLINE typeGType #-}

noGPUSampler :: Maybe GPUSampler
noGPUSampler = Nothing
{-# INLINE noGPUSampler #-}

gTypeGPUSampler :: JSM GType
gTypeGPUSampler = GType . Object <$> jsg "GPUSampler"

-- | Dictionary GPUSamplerBindingLayout (webgpu)
newtype GPUSamplerBindingLayout = GPUSamplerBindingLayout { unGPUSamplerBindingLayout :: JSVal }

instance PToJSVal GPUSamplerBindingLayout where
  pToJSVal = unGPUSamplerBindingLayout
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUSamplerBindingLayout where
  pFromJSVal = GPUSamplerBindingLayout
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUSamplerBindingLayout where
  toJSVal = return . unGPUSamplerBindingLayout
  {-# INLINE toJSVal #-}

instance FromJSVal GPUSamplerBindingLayout where
  fromJSVal v = fmap GPUSamplerBindingLayout <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUSamplerBindingLayout
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUSamplerBindingLayout where
  makeObject = makeObject . unGPUSamplerBindingLayout


instance IsGObject GPUSamplerBindingLayout where
  typeGType _ = gTypeGPUSamplerBindingLayout
  {-# INLINE typeGType #-}

noGPUSamplerBindingLayout :: Maybe GPUSamplerBindingLayout
noGPUSamplerBindingLayout = Nothing
{-# INLINE noGPUSamplerBindingLayout #-}

gTypeGPUSamplerBindingLayout :: JSM GType
gTypeGPUSamplerBindingLayout = GType . Object <$> jsg "Object"

-- | Dictionary GPUSamplerDescriptor (webgpu)
newtype GPUSamplerDescriptor = GPUSamplerDescriptor { unGPUSamplerDescriptor :: JSVal }

instance PToJSVal GPUSamplerDescriptor where
  pToJSVal = unGPUSamplerDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUSamplerDescriptor where
  pFromJSVal = GPUSamplerDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUSamplerDescriptor where
  toJSVal = return . unGPUSamplerDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUSamplerDescriptor where
  fromJSVal v = fmap GPUSamplerDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUSamplerDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUSamplerDescriptor where
  makeObject = makeObject . unGPUSamplerDescriptor

instance IsGPUObjectDescriptorBase GPUSamplerDescriptor

instance IsGObject GPUSamplerDescriptor where
  typeGType _ = gTypeGPUSamplerDescriptor
  {-# INLINE typeGType #-}

noGPUSamplerDescriptor :: Maybe GPUSamplerDescriptor
noGPUSamplerDescriptor = Nothing
{-# INLINE noGPUSamplerDescriptor #-}

gTypeGPUSamplerDescriptor :: JSM GType
gTypeGPUSamplerDescriptor = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUShaderModule" (webgpu).
newtype GPUShaderModule = GPUShaderModule { unGPUShaderModule :: JSVal }

instance PToJSVal GPUShaderModule where
  pToJSVal = unGPUShaderModule
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUShaderModule where
  pFromJSVal = GPUShaderModule
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUShaderModule where
  toJSVal = return . unGPUShaderModule
  {-# INLINE toJSVal #-}

instance FromJSVal GPUShaderModule where
  fromJSVal v = fmap GPUShaderModule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUShaderModule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUShaderModule where
  makeObject = makeObject . unGPUShaderModule

instance IsGPUObjectBase GPUShaderModule

instance IsGObject GPUShaderModule where
  typeGType _ = gTypeGPUShaderModule
  {-# INLINE typeGType #-}

noGPUShaderModule :: Maybe GPUShaderModule
noGPUShaderModule = Nothing
{-# INLINE noGPUShaderModule #-}

gTypeGPUShaderModule :: JSM GType
gTypeGPUShaderModule = GType . Object <$> jsg "GPUShaderModule"

-- | Dictionary GPUShaderModuleCompilationHint (webgpu)
newtype GPUShaderModuleCompilationHint = GPUShaderModuleCompilationHint { unGPUShaderModuleCompilationHint :: JSVal }

instance PToJSVal GPUShaderModuleCompilationHint where
  pToJSVal = unGPUShaderModuleCompilationHint
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUShaderModuleCompilationHint where
  pFromJSVal = GPUShaderModuleCompilationHint
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUShaderModuleCompilationHint where
  toJSVal = return . unGPUShaderModuleCompilationHint
  {-# INLINE toJSVal #-}

instance FromJSVal GPUShaderModuleCompilationHint where
  fromJSVal v = fmap GPUShaderModuleCompilationHint <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUShaderModuleCompilationHint
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUShaderModuleCompilationHint where
  makeObject = makeObject . unGPUShaderModuleCompilationHint


instance IsGObject GPUShaderModuleCompilationHint where
  typeGType _ = gTypeGPUShaderModuleCompilationHint
  {-# INLINE typeGType #-}

noGPUShaderModuleCompilationHint :: Maybe GPUShaderModuleCompilationHint
noGPUShaderModuleCompilationHint = Nothing
{-# INLINE noGPUShaderModuleCompilationHint #-}

gTypeGPUShaderModuleCompilationHint :: JSM GType
gTypeGPUShaderModuleCompilationHint = GType . Object <$> jsg "Object"

-- | Dictionary GPUShaderModuleDescriptor (webgpu)
newtype GPUShaderModuleDescriptor = GPUShaderModuleDescriptor { unGPUShaderModuleDescriptor :: JSVal }

instance PToJSVal GPUShaderModuleDescriptor where
  pToJSVal = unGPUShaderModuleDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUShaderModuleDescriptor where
  pFromJSVal = GPUShaderModuleDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUShaderModuleDescriptor where
  toJSVal = return . unGPUShaderModuleDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUShaderModuleDescriptor where
  fromJSVal v = fmap GPUShaderModuleDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUShaderModuleDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUShaderModuleDescriptor where
  makeObject = makeObject . unGPUShaderModuleDescriptor

instance IsGPUObjectDescriptorBase GPUShaderModuleDescriptor

instance IsGObject GPUShaderModuleDescriptor where
  typeGType _ = gTypeGPUShaderModuleDescriptor
  {-# INLINE typeGType #-}

noGPUShaderModuleDescriptor :: Maybe GPUShaderModuleDescriptor
noGPUShaderModuleDescriptor = Nothing
{-# INLINE noGPUShaderModuleDescriptor #-}

gTypeGPUShaderModuleDescriptor :: JSM GType
gTypeGPUShaderModuleDescriptor = GType . Object <$> jsg "Object"

-- | Dictionary GPUStencilFaceState (webgpu)
newtype GPUStencilFaceState = GPUStencilFaceState { unGPUStencilFaceState :: JSVal }

instance PToJSVal GPUStencilFaceState where
  pToJSVal = unGPUStencilFaceState
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUStencilFaceState where
  pFromJSVal = GPUStencilFaceState
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUStencilFaceState where
  toJSVal = return . unGPUStencilFaceState
  {-# INLINE toJSVal #-}

instance FromJSVal GPUStencilFaceState where
  fromJSVal v = fmap GPUStencilFaceState <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUStencilFaceState
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUStencilFaceState where
  makeObject = makeObject . unGPUStencilFaceState


instance IsGObject GPUStencilFaceState where
  typeGType _ = gTypeGPUStencilFaceState
  {-# INLINE typeGType #-}

noGPUStencilFaceState :: Maybe GPUStencilFaceState
noGPUStencilFaceState = Nothing
{-# INLINE noGPUStencilFaceState #-}

gTypeGPUStencilFaceState :: JSM GType
gTypeGPUStencilFaceState = GType . Object <$> jsg "Object"

-- | Dictionary GPUStorageTextureBindingLayout (webgpu)
newtype GPUStorageTextureBindingLayout = GPUStorageTextureBindingLayout { unGPUStorageTextureBindingLayout :: JSVal }

instance PToJSVal GPUStorageTextureBindingLayout where
  pToJSVal = unGPUStorageTextureBindingLayout
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUStorageTextureBindingLayout where
  pFromJSVal = GPUStorageTextureBindingLayout
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUStorageTextureBindingLayout where
  toJSVal = return . unGPUStorageTextureBindingLayout
  {-# INLINE toJSVal #-}

instance FromJSVal GPUStorageTextureBindingLayout where
  fromJSVal v = fmap GPUStorageTextureBindingLayout <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUStorageTextureBindingLayout
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUStorageTextureBindingLayout where
  makeObject = makeObject . unGPUStorageTextureBindingLayout


instance IsGObject GPUStorageTextureBindingLayout where
  typeGType _ = gTypeGPUStorageTextureBindingLayout
  {-# INLINE typeGType #-}

noGPUStorageTextureBindingLayout :: Maybe GPUStorageTextureBindingLayout
noGPUStorageTextureBindingLayout = Nothing
{-# INLINE noGPUStorageTextureBindingLayout #-}

gTypeGPUStorageTextureBindingLayout :: JSM GType
gTypeGPUStorageTextureBindingLayout = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUSupportedFeatures" (webgpu).
newtype GPUSupportedFeatures = GPUSupportedFeatures { unGPUSupportedFeatures :: JSVal }

instance PToJSVal GPUSupportedFeatures where
  pToJSVal = unGPUSupportedFeatures
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUSupportedFeatures where
  pFromJSVal = GPUSupportedFeatures
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUSupportedFeatures where
  toJSVal = return . unGPUSupportedFeatures
  {-# INLINE toJSVal #-}

instance FromJSVal GPUSupportedFeatures where
  fromJSVal v = fmap GPUSupportedFeatures <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUSupportedFeatures
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUSupportedFeatures where
  makeObject = makeObject . unGPUSupportedFeatures


instance IsGObject GPUSupportedFeatures where
  typeGType _ = gTypeGPUSupportedFeatures
  {-# INLINE typeGType #-}

noGPUSupportedFeatures :: Maybe GPUSupportedFeatures
noGPUSupportedFeatures = Nothing
{-# INLINE noGPUSupportedFeatures #-}

gTypeGPUSupportedFeatures :: JSM GType
gTypeGPUSupportedFeatures = GType . Object <$> jsg "GPUSupportedFeatures"

-- | Functions for this interface are in "JSDOM.GPUSupportedLimits" (webgpu).
newtype GPUSupportedLimits = GPUSupportedLimits { unGPUSupportedLimits :: JSVal }

instance PToJSVal GPUSupportedLimits where
  pToJSVal = unGPUSupportedLimits
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUSupportedLimits where
  pFromJSVal = GPUSupportedLimits
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUSupportedLimits where
  toJSVal = return . unGPUSupportedLimits
  {-# INLINE toJSVal #-}

instance FromJSVal GPUSupportedLimits where
  fromJSVal v = fmap GPUSupportedLimits <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUSupportedLimits
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUSupportedLimits where
  makeObject = makeObject . unGPUSupportedLimits


instance IsGObject GPUSupportedLimits where
  typeGType _ = gTypeGPUSupportedLimits
  {-# INLINE typeGType #-}

noGPUSupportedLimits :: Maybe GPUSupportedLimits
noGPUSupportedLimits = Nothing
{-# INLINE noGPUSupportedLimits #-}

gTypeGPUSupportedLimits :: JSM GType
gTypeGPUSupportedLimits = GType . Object <$> jsg "GPUSupportedLimits"

-- | Dictionary GPUTexelCopyBufferInfo (webgpu)
newtype GPUTexelCopyBufferInfo = GPUTexelCopyBufferInfo { unGPUTexelCopyBufferInfo :: JSVal }

instance PToJSVal GPUTexelCopyBufferInfo where
  pToJSVal = unGPUTexelCopyBufferInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUTexelCopyBufferInfo where
  pFromJSVal = GPUTexelCopyBufferInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUTexelCopyBufferInfo where
  toJSVal = return . unGPUTexelCopyBufferInfo
  {-# INLINE toJSVal #-}

instance FromJSVal GPUTexelCopyBufferInfo where
  fromJSVal v = fmap GPUTexelCopyBufferInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUTexelCopyBufferInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUTexelCopyBufferInfo where
  makeObject = makeObject . unGPUTexelCopyBufferInfo

instance IsGPUTexelCopyBufferLayout GPUTexelCopyBufferInfo

instance IsGObject GPUTexelCopyBufferInfo where
  typeGType _ = gTypeGPUTexelCopyBufferInfo
  {-# INLINE typeGType #-}

noGPUTexelCopyBufferInfo :: Maybe GPUTexelCopyBufferInfo
noGPUTexelCopyBufferInfo = Nothing
{-# INLINE noGPUTexelCopyBufferInfo #-}

gTypeGPUTexelCopyBufferInfo :: JSM GType
gTypeGPUTexelCopyBufferInfo = GType . Object <$> jsg "Object"

-- | Dictionary GPUTexelCopyBufferLayout (webgpu)
newtype GPUTexelCopyBufferLayout = GPUTexelCopyBufferLayout { unGPUTexelCopyBufferLayout :: JSVal }

instance PToJSVal GPUTexelCopyBufferLayout where
  pToJSVal = unGPUTexelCopyBufferLayout
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUTexelCopyBufferLayout where
  pFromJSVal = GPUTexelCopyBufferLayout
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUTexelCopyBufferLayout where
  toJSVal = return . unGPUTexelCopyBufferLayout
  {-# INLINE toJSVal #-}

instance FromJSVal GPUTexelCopyBufferLayout where
  fromJSVal v = fmap GPUTexelCopyBufferLayout <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUTexelCopyBufferLayout
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUTexelCopyBufferLayout where
  makeObject = makeObject . unGPUTexelCopyBufferLayout

class (IsGObject o) => IsGPUTexelCopyBufferLayout o
toGPUTexelCopyBufferLayout :: IsGPUTexelCopyBufferLayout o => o -> GPUTexelCopyBufferLayout
toGPUTexelCopyBufferLayout = GPUTexelCopyBufferLayout . coerce

instance IsGPUTexelCopyBufferLayout GPUTexelCopyBufferLayout

instance IsGObject GPUTexelCopyBufferLayout where
  typeGType _ = gTypeGPUTexelCopyBufferLayout
  {-# INLINE typeGType #-}

noGPUTexelCopyBufferLayout :: Maybe GPUTexelCopyBufferLayout
noGPUTexelCopyBufferLayout = Nothing
{-# INLINE noGPUTexelCopyBufferLayout #-}

gTypeGPUTexelCopyBufferLayout :: JSM GType
gTypeGPUTexelCopyBufferLayout = GType . Object <$> jsg "Object"

-- | Dictionary GPUTexelCopyTextureInfo (webgpu)
newtype GPUTexelCopyTextureInfo = GPUTexelCopyTextureInfo { unGPUTexelCopyTextureInfo :: JSVal }

instance PToJSVal GPUTexelCopyTextureInfo where
  pToJSVal = unGPUTexelCopyTextureInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUTexelCopyTextureInfo where
  pFromJSVal = GPUTexelCopyTextureInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUTexelCopyTextureInfo where
  toJSVal = return . unGPUTexelCopyTextureInfo
  {-# INLINE toJSVal #-}

instance FromJSVal GPUTexelCopyTextureInfo where
  fromJSVal v = fmap GPUTexelCopyTextureInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUTexelCopyTextureInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUTexelCopyTextureInfo where
  makeObject = makeObject . unGPUTexelCopyTextureInfo

class (IsGObject o) => IsGPUTexelCopyTextureInfo o
toGPUTexelCopyTextureInfo :: IsGPUTexelCopyTextureInfo o => o -> GPUTexelCopyTextureInfo
toGPUTexelCopyTextureInfo = GPUTexelCopyTextureInfo . coerce

instance IsGPUTexelCopyTextureInfo GPUTexelCopyTextureInfo

instance IsGObject GPUTexelCopyTextureInfo where
  typeGType _ = gTypeGPUTexelCopyTextureInfo
  {-# INLINE typeGType #-}

noGPUTexelCopyTextureInfo :: Maybe GPUTexelCopyTextureInfo
noGPUTexelCopyTextureInfo = Nothing
{-# INLINE noGPUTexelCopyTextureInfo #-}

gTypeGPUTexelCopyTextureInfo :: JSM GType
gTypeGPUTexelCopyTextureInfo = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUTexture" (webgpu).
newtype GPUTexture = GPUTexture { unGPUTexture :: JSVal }

instance PToJSVal GPUTexture where
  pToJSVal = unGPUTexture
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUTexture where
  pFromJSVal = GPUTexture
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUTexture where
  toJSVal = return . unGPUTexture
  {-# INLINE toJSVal #-}

instance FromJSVal GPUTexture where
  fromJSVal v = fmap GPUTexture <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUTexture
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUTexture where
  makeObject = makeObject . unGPUTexture

instance IsGPUObjectBase GPUTexture

instance IsGObject GPUTexture where
  typeGType _ = gTypeGPUTexture
  {-# INLINE typeGType #-}

noGPUTexture :: Maybe GPUTexture
noGPUTexture = Nothing
{-# INLINE noGPUTexture #-}

gTypeGPUTexture :: JSM GType
gTypeGPUTexture = GType . Object <$> jsg "GPUTexture"

-- | Dictionary GPUTextureBindingLayout (webgpu)
newtype GPUTextureBindingLayout = GPUTextureBindingLayout { unGPUTextureBindingLayout :: JSVal }

instance PToJSVal GPUTextureBindingLayout where
  pToJSVal = unGPUTextureBindingLayout
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUTextureBindingLayout where
  pFromJSVal = GPUTextureBindingLayout
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUTextureBindingLayout where
  toJSVal = return . unGPUTextureBindingLayout
  {-# INLINE toJSVal #-}

instance FromJSVal GPUTextureBindingLayout where
  fromJSVal v = fmap GPUTextureBindingLayout <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUTextureBindingLayout
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUTextureBindingLayout where
  makeObject = makeObject . unGPUTextureBindingLayout


instance IsGObject GPUTextureBindingLayout where
  typeGType _ = gTypeGPUTextureBindingLayout
  {-# INLINE typeGType #-}

noGPUTextureBindingLayout :: Maybe GPUTextureBindingLayout
noGPUTextureBindingLayout = Nothing
{-# INLINE noGPUTextureBindingLayout #-}

gTypeGPUTextureBindingLayout :: JSM GType
gTypeGPUTextureBindingLayout = GType . Object <$> jsg "Object"

-- | Dictionary GPUTextureDescriptor (webgpu)
newtype GPUTextureDescriptor = GPUTextureDescriptor { unGPUTextureDescriptor :: JSVal }

instance PToJSVal GPUTextureDescriptor where
  pToJSVal = unGPUTextureDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUTextureDescriptor where
  pFromJSVal = GPUTextureDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUTextureDescriptor where
  toJSVal = return . unGPUTextureDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUTextureDescriptor where
  fromJSVal v = fmap GPUTextureDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUTextureDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUTextureDescriptor where
  makeObject = makeObject . unGPUTextureDescriptor

instance IsGPUObjectDescriptorBase GPUTextureDescriptor

instance IsGObject GPUTextureDescriptor where
  typeGType _ = gTypeGPUTextureDescriptor
  {-# INLINE typeGType #-}

noGPUTextureDescriptor :: Maybe GPUTextureDescriptor
noGPUTextureDescriptor = Nothing
{-# INLINE noGPUTextureDescriptor #-}

gTypeGPUTextureDescriptor :: JSM GType
gTypeGPUTextureDescriptor = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUTextureView" (webgpu).
newtype GPUTextureView = GPUTextureView { unGPUTextureView :: JSVal }

instance PToJSVal GPUTextureView where
  pToJSVal = unGPUTextureView
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUTextureView where
  pFromJSVal = GPUTextureView
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUTextureView where
  toJSVal = return . unGPUTextureView
  {-# INLINE toJSVal #-}

instance FromJSVal GPUTextureView where
  fromJSVal v = fmap GPUTextureView <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUTextureView
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUTextureView where
  makeObject = makeObject . unGPUTextureView

instance IsGPUObjectBase GPUTextureView

instance IsGObject GPUTextureView where
  typeGType _ = gTypeGPUTextureView
  {-# INLINE typeGType #-}

noGPUTextureView :: Maybe GPUTextureView
noGPUTextureView = Nothing
{-# INLINE noGPUTextureView #-}

gTypeGPUTextureView :: JSM GType
gTypeGPUTextureView = GType . Object <$> jsg "GPUTextureView"

-- | Dictionary GPUTextureViewDescriptor (webgpu)
newtype GPUTextureViewDescriptor = GPUTextureViewDescriptor { unGPUTextureViewDescriptor :: JSVal }

instance PToJSVal GPUTextureViewDescriptor where
  pToJSVal = unGPUTextureViewDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUTextureViewDescriptor where
  pFromJSVal = GPUTextureViewDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUTextureViewDescriptor where
  toJSVal = return . unGPUTextureViewDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal GPUTextureViewDescriptor where
  fromJSVal v = fmap GPUTextureViewDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUTextureViewDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUTextureViewDescriptor where
  makeObject = makeObject . unGPUTextureViewDescriptor

instance IsGPUObjectDescriptorBase GPUTextureViewDescriptor

instance IsGObject GPUTextureViewDescriptor where
  typeGType _ = gTypeGPUTextureViewDescriptor
  {-# INLINE typeGType #-}

noGPUTextureViewDescriptor :: Maybe GPUTextureViewDescriptor
noGPUTextureViewDescriptor = Nothing
{-# INLINE noGPUTextureViewDescriptor #-}

gTypeGPUTextureViewDescriptor :: JSM GType
gTypeGPUTextureViewDescriptor = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUUncapturedErrorEvent" (webgpu).
newtype GPUUncapturedErrorEvent = GPUUncapturedErrorEvent { unGPUUncapturedErrorEvent :: JSVal }

instance PToJSVal GPUUncapturedErrorEvent where
  pToJSVal = unGPUUncapturedErrorEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUUncapturedErrorEvent where
  pFromJSVal = GPUUncapturedErrorEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUUncapturedErrorEvent where
  toJSVal = return . unGPUUncapturedErrorEvent
  {-# INLINE toJSVal #-}

instance FromJSVal GPUUncapturedErrorEvent where
  fromJSVal v = fmap GPUUncapturedErrorEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUUncapturedErrorEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUUncapturedErrorEvent where
  makeObject = makeObject . unGPUUncapturedErrorEvent

instance IsEvent GPUUncapturedErrorEvent

instance IsGObject GPUUncapturedErrorEvent where
  typeGType _ = gTypeGPUUncapturedErrorEvent
  {-# INLINE typeGType #-}

noGPUUncapturedErrorEvent :: Maybe GPUUncapturedErrorEvent
noGPUUncapturedErrorEvent = Nothing
{-# INLINE noGPUUncapturedErrorEvent #-}

gTypeGPUUncapturedErrorEvent :: JSM GType
gTypeGPUUncapturedErrorEvent = GType . Object <$> jsg "GPUUncapturedErrorEvent"

-- | Dictionary GPUUncapturedErrorEventInit (webgpu)
newtype GPUUncapturedErrorEventInit = GPUUncapturedErrorEventInit { unGPUUncapturedErrorEventInit :: JSVal }

instance PToJSVal GPUUncapturedErrorEventInit where
  pToJSVal = unGPUUncapturedErrorEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUUncapturedErrorEventInit where
  pFromJSVal = GPUUncapturedErrorEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUUncapturedErrorEventInit where
  toJSVal = return . unGPUUncapturedErrorEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal GPUUncapturedErrorEventInit where
  fromJSVal v = fmap GPUUncapturedErrorEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUUncapturedErrorEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUUncapturedErrorEventInit where
  makeObject = makeObject . unGPUUncapturedErrorEventInit

instance IsEventInit GPUUncapturedErrorEventInit

instance IsGObject GPUUncapturedErrorEventInit where
  typeGType _ = gTypeGPUUncapturedErrorEventInit
  {-# INLINE typeGType #-}

noGPUUncapturedErrorEventInit :: Maybe GPUUncapturedErrorEventInit
noGPUUncapturedErrorEventInit = Nothing
{-# INLINE noGPUUncapturedErrorEventInit #-}

gTypeGPUUncapturedErrorEventInit :: JSM GType
gTypeGPUUncapturedErrorEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GPUValidationError" (webgpu).
newtype GPUValidationError = GPUValidationError { unGPUValidationError :: JSVal }

instance PToJSVal GPUValidationError where
  pToJSVal = unGPUValidationError
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUValidationError where
  pFromJSVal = GPUValidationError
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUValidationError where
  toJSVal = return . unGPUValidationError
  {-# INLINE toJSVal #-}

instance FromJSVal GPUValidationError where
  fromJSVal v = fmap GPUValidationError <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUValidationError
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUValidationError where
  makeObject = makeObject . unGPUValidationError

instance IsGPUError GPUValidationError

instance IsGObject GPUValidationError where
  typeGType _ = gTypeGPUValidationError
  {-# INLINE typeGType #-}

noGPUValidationError :: Maybe GPUValidationError
noGPUValidationError = Nothing
{-# INLINE noGPUValidationError #-}

gTypeGPUValidationError :: JSM GType
gTypeGPUValidationError = GType . Object <$> jsg "GPUValidationError"

-- | Dictionary GPUVertexAttribute (webgpu)
newtype GPUVertexAttribute = GPUVertexAttribute { unGPUVertexAttribute :: JSVal }

instance PToJSVal GPUVertexAttribute where
  pToJSVal = unGPUVertexAttribute
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUVertexAttribute where
  pFromJSVal = GPUVertexAttribute
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUVertexAttribute where
  toJSVal = return . unGPUVertexAttribute
  {-# INLINE toJSVal #-}

instance FromJSVal GPUVertexAttribute where
  fromJSVal v = fmap GPUVertexAttribute <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUVertexAttribute
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUVertexAttribute where
  makeObject = makeObject . unGPUVertexAttribute


instance IsGObject GPUVertexAttribute where
  typeGType _ = gTypeGPUVertexAttribute
  {-# INLINE typeGType #-}

noGPUVertexAttribute :: Maybe GPUVertexAttribute
noGPUVertexAttribute = Nothing
{-# INLINE noGPUVertexAttribute #-}

gTypeGPUVertexAttribute :: JSM GType
gTypeGPUVertexAttribute = GType . Object <$> jsg "Object"

-- | Dictionary GPUVertexBufferLayout (webgpu)
newtype GPUVertexBufferLayout = GPUVertexBufferLayout { unGPUVertexBufferLayout :: JSVal }

instance PToJSVal GPUVertexBufferLayout where
  pToJSVal = unGPUVertexBufferLayout
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUVertexBufferLayout where
  pFromJSVal = GPUVertexBufferLayout
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUVertexBufferLayout where
  toJSVal = return . unGPUVertexBufferLayout
  {-# INLINE toJSVal #-}

instance FromJSVal GPUVertexBufferLayout where
  fromJSVal v = fmap GPUVertexBufferLayout <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUVertexBufferLayout
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUVertexBufferLayout where
  makeObject = makeObject . unGPUVertexBufferLayout


instance IsGObject GPUVertexBufferLayout where
  typeGType _ = gTypeGPUVertexBufferLayout
  {-# INLINE typeGType #-}

noGPUVertexBufferLayout :: Maybe GPUVertexBufferLayout
noGPUVertexBufferLayout = Nothing
{-# INLINE noGPUVertexBufferLayout #-}

gTypeGPUVertexBufferLayout :: JSM GType
gTypeGPUVertexBufferLayout = GType . Object <$> jsg "Object"

-- | Dictionary GPUVertexState (webgpu)
newtype GPUVertexState = GPUVertexState { unGPUVertexState :: JSVal }

instance PToJSVal GPUVertexState where
  pToJSVal = unGPUVertexState
  {-# INLINE pToJSVal #-}

instance PFromJSVal GPUVertexState where
  pFromJSVal = GPUVertexState
  {-# INLINE pFromJSVal #-}

instance ToJSVal GPUVertexState where
  toJSVal = return . unGPUVertexState
  {-# INLINE toJSVal #-}

instance FromJSVal GPUVertexState where
  fromJSVal v = fmap GPUVertexState <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GPUVertexState
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GPUVertexState where
  makeObject = makeObject . unGPUVertexState

instance IsGPUProgrammableStage GPUVertexState

instance IsGObject GPUVertexState where
  typeGType _ = gTypeGPUVertexState
  {-# INLINE typeGType #-}

noGPUVertexState :: Maybe GPUVertexState
noGPUVertexState = Nothing
{-# INLINE noGPUVertexState #-}

gTypeGPUVertexState :: JSM GType
gTypeGPUVertexState = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GainNode" (webaudio-1.1).
newtype GainNode = GainNode { unGainNode :: JSVal }

instance PToJSVal GainNode where
  pToJSVal = unGainNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal GainNode where
  pFromJSVal = GainNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal GainNode where
  toJSVal = return . unGainNode
  {-# INLINE toJSVal #-}

instance FromJSVal GainNode where
  fromJSVal v = fmap GainNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GainNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GainNode where
  makeObject = makeObject . unGainNode

instance IsAudioNode GainNode
instance IsEventTarget GainNode

instance IsGObject GainNode where
  typeGType _ = gTypeGainNode
  {-# INLINE typeGType #-}

noGainNode :: Maybe GainNode
noGainNode = Nothing
{-# INLINE noGainNode #-}

gTypeGainNode :: JSM GType
gTypeGainNode = GType . Object <$> jsg "GainNode"

-- | Dictionary GainOptions (webaudio-1.1)
newtype GainOptions = GainOptions { unGainOptions :: JSVal }

instance PToJSVal GainOptions where
  pToJSVal = unGainOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal GainOptions where
  pFromJSVal = GainOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal GainOptions where
  toJSVal = return . unGainOptions
  {-# INLINE toJSVal #-}

instance FromJSVal GainOptions where
  fromJSVal v = fmap GainOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GainOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GainOptions where
  makeObject = makeObject . unGainOptions

instance IsAudioNodeOptions GainOptions

instance IsGObject GainOptions where
  typeGType _ = gTypeGainOptions
  {-# INLINE typeGType #-}

noGainOptions :: Maybe GainOptions
noGainOptions = Nothing
{-# INLINE noGainOptions #-}

gTypeGainOptions :: JSM GType
gTypeGainOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Gamepad" (gamepad).
newtype Gamepad = Gamepad { unGamepad :: JSVal }

instance PToJSVal Gamepad where
  pToJSVal = unGamepad
  {-# INLINE pToJSVal #-}

instance PFromJSVal Gamepad where
  pFromJSVal = Gamepad
  {-# INLINE pFromJSVal #-}

instance ToJSVal Gamepad where
  toJSVal = return . unGamepad
  {-# INLINE toJSVal #-}

instance FromJSVal Gamepad where
  fromJSVal v = fmap Gamepad <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Gamepad
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Gamepad where
  makeObject = makeObject . unGamepad


instance IsGObject Gamepad where
  typeGType _ = gTypeGamepad
  {-# INLINE typeGType #-}

noGamepad :: Maybe Gamepad
noGamepad = Nothing
{-# INLINE noGamepad #-}

gTypeGamepad :: JSM GType
gTypeGamepad = GType . Object <$> jsg "Gamepad"

-- | Functions for this interface are in "JSDOM.GamepadButton" (gamepad).
newtype GamepadButton = GamepadButton { unGamepadButton :: JSVal }

instance PToJSVal GamepadButton where
  pToJSVal = unGamepadButton
  {-# INLINE pToJSVal #-}

instance PFromJSVal GamepadButton where
  pFromJSVal = GamepadButton
  {-# INLINE pFromJSVal #-}

instance ToJSVal GamepadButton where
  toJSVal = return . unGamepadButton
  {-# INLINE toJSVal #-}

instance FromJSVal GamepadButton where
  fromJSVal v = fmap GamepadButton <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GamepadButton
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GamepadButton where
  makeObject = makeObject . unGamepadButton


instance IsGObject GamepadButton where
  typeGType _ = gTypeGamepadButton
  {-# INLINE typeGType #-}

noGamepadButton :: Maybe GamepadButton
noGamepadButton = Nothing
{-# INLINE noGamepadButton #-}

gTypeGamepadButton :: JSM GType
gTypeGamepadButton = GType . Object <$> jsg "GamepadButton"

-- | Dictionary GamepadEffectParameters (gamepad)
newtype GamepadEffectParameters = GamepadEffectParameters { unGamepadEffectParameters :: JSVal }

instance PToJSVal GamepadEffectParameters where
  pToJSVal = unGamepadEffectParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal GamepadEffectParameters where
  pFromJSVal = GamepadEffectParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal GamepadEffectParameters where
  toJSVal = return . unGamepadEffectParameters
  {-# INLINE toJSVal #-}

instance FromJSVal GamepadEffectParameters where
  fromJSVal v = fmap GamepadEffectParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GamepadEffectParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GamepadEffectParameters where
  makeObject = makeObject . unGamepadEffectParameters


instance IsGObject GamepadEffectParameters where
  typeGType _ = gTypeGamepadEffectParameters
  {-# INLINE typeGType #-}

noGamepadEffectParameters :: Maybe GamepadEffectParameters
noGamepadEffectParameters = Nothing
{-# INLINE noGamepadEffectParameters #-}

gTypeGamepadEffectParameters :: JSM GType
gTypeGamepadEffectParameters = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GamepadEvent" (gamepad).
newtype GamepadEvent = GamepadEvent { unGamepadEvent :: JSVal }

instance PToJSVal GamepadEvent where
  pToJSVal = unGamepadEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal GamepadEvent where
  pFromJSVal = GamepadEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal GamepadEvent where
  toJSVal = return . unGamepadEvent
  {-# INLINE toJSVal #-}

instance FromJSVal GamepadEvent where
  fromJSVal v = fmap GamepadEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GamepadEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GamepadEvent where
  makeObject = makeObject . unGamepadEvent

instance IsEvent GamepadEvent

instance IsGObject GamepadEvent where
  typeGType _ = gTypeGamepadEvent
  {-# INLINE typeGType #-}

noGamepadEvent :: Maybe GamepadEvent
noGamepadEvent = Nothing
{-# INLINE noGamepadEvent #-}

gTypeGamepadEvent :: JSM GType
gTypeGamepadEvent = GType . Object <$> jsg "GamepadEvent"

-- | Dictionary GamepadEventInit (gamepad)
newtype GamepadEventInit = GamepadEventInit { unGamepadEventInit :: JSVal }

instance PToJSVal GamepadEventInit where
  pToJSVal = unGamepadEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal GamepadEventInit where
  pFromJSVal = GamepadEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal GamepadEventInit where
  toJSVal = return . unGamepadEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal GamepadEventInit where
  fromJSVal v = fmap GamepadEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GamepadEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GamepadEventInit where
  makeObject = makeObject . unGamepadEventInit

instance IsEventInit GamepadEventInit

instance IsGObject GamepadEventInit where
  typeGType _ = gTypeGamepadEventInit
  {-# INLINE typeGType #-}

noGamepadEventInit :: Maybe GamepadEventInit
noGamepadEventInit = Nothing
{-# INLINE noGamepadEventInit #-}

gTypeGamepadEventInit :: JSM GType
gTypeGamepadEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GamepadHapticActuator" (gamepad).
newtype GamepadHapticActuator = GamepadHapticActuator { unGamepadHapticActuator :: JSVal }

instance PToJSVal GamepadHapticActuator where
  pToJSVal = unGamepadHapticActuator
  {-# INLINE pToJSVal #-}

instance PFromJSVal GamepadHapticActuator where
  pFromJSVal = GamepadHapticActuator
  {-# INLINE pFromJSVal #-}

instance ToJSVal GamepadHapticActuator where
  toJSVal = return . unGamepadHapticActuator
  {-# INLINE toJSVal #-}

instance FromJSVal GamepadHapticActuator where
  fromJSVal v = fmap GamepadHapticActuator <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GamepadHapticActuator
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GamepadHapticActuator where
  makeObject = makeObject . unGamepadHapticActuator


instance IsGObject GamepadHapticActuator where
  typeGType _ = gTypeGamepadHapticActuator
  {-# INLINE typeGType #-}

noGamepadHapticActuator :: Maybe GamepadHapticActuator
noGamepadHapticActuator = Nothing
{-# INLINE noGamepadHapticActuator #-}

gTypeGamepadHapticActuator :: JSM GType
gTypeGamepadHapticActuator = GType . Object <$> jsg "GamepadHapticActuator"

-- | Functions for this interface are in "JSDOM.GenericTransformStream" (streams).
newtype GenericTransformStream = GenericTransformStream { unGenericTransformStream :: JSVal }

instance PToJSVal GenericTransformStream where
  pToJSVal = unGenericTransformStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal GenericTransformStream where
  pFromJSVal = GenericTransformStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal GenericTransformStream where
  toJSVal = return . unGenericTransformStream
  {-# INLINE toJSVal #-}

instance FromJSVal GenericTransformStream where
  fromJSVal v = fmap GenericTransformStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GenericTransformStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GenericTransformStream where
  makeObject = makeObject . unGenericTransformStream

class (IsGObject o) => IsGenericTransformStream o
toGenericTransformStream :: IsGenericTransformStream o => o -> GenericTransformStream
toGenericTransformStream = GenericTransformStream . coerce

instance IsGenericTransformStream GenericTransformStream

instance IsGObject GenericTransformStream where
  typeGType _ = gTypeGenericTransformStream
  {-# INLINE typeGType #-}

noGenericTransformStream :: Maybe GenericTransformStream
noGenericTransformStream = Nothing
{-# INLINE noGenericTransformStream #-}

gTypeGenericTransformStream :: JSM GType
gTypeGenericTransformStream = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Geolocation" (geolocation).
newtype Geolocation = Geolocation { unGeolocation :: JSVal }

instance PToJSVal Geolocation where
  pToJSVal = unGeolocation
  {-# INLINE pToJSVal #-}

instance PFromJSVal Geolocation where
  pFromJSVal = Geolocation
  {-# INLINE pFromJSVal #-}

instance ToJSVal Geolocation where
  toJSVal = return . unGeolocation
  {-# INLINE toJSVal #-}

instance FromJSVal Geolocation where
  fromJSVal v = fmap Geolocation <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Geolocation
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Geolocation where
  makeObject = makeObject . unGeolocation


instance IsGObject Geolocation where
  typeGType _ = gTypeGeolocation
  {-# INLINE typeGType #-}

noGeolocation :: Maybe Geolocation
noGeolocation = Nothing
{-# INLINE noGeolocation #-}

gTypeGeolocation :: JSM GType
gTypeGeolocation = GType . Object <$> jsg "Geolocation"

-- | Functions for this interface are in "JSDOM.GeolocationCoordinates" (geolocation).
newtype GeolocationCoordinates = GeolocationCoordinates { unGeolocationCoordinates :: JSVal }

instance PToJSVal GeolocationCoordinates where
  pToJSVal = unGeolocationCoordinates
  {-# INLINE pToJSVal #-}

instance PFromJSVal GeolocationCoordinates where
  pFromJSVal = GeolocationCoordinates
  {-# INLINE pFromJSVal #-}

instance ToJSVal GeolocationCoordinates where
  toJSVal = return . unGeolocationCoordinates
  {-# INLINE toJSVal #-}

instance FromJSVal GeolocationCoordinates where
  fromJSVal v = fmap GeolocationCoordinates <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GeolocationCoordinates
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GeolocationCoordinates where
  makeObject = makeObject . unGeolocationCoordinates


instance IsGObject GeolocationCoordinates where
  typeGType _ = gTypeGeolocationCoordinates
  {-# INLINE typeGType #-}

noGeolocationCoordinates :: Maybe GeolocationCoordinates
noGeolocationCoordinates = Nothing
{-# INLINE noGeolocationCoordinates #-}

gTypeGeolocationCoordinates :: JSM GType
gTypeGeolocationCoordinates = GType . Object <$> jsg "GeolocationCoordinates"

-- | Functions for this interface are in "JSDOM.GeolocationPosition" (geolocation).
newtype GeolocationPosition = GeolocationPosition { unGeolocationPosition :: JSVal }

instance PToJSVal GeolocationPosition where
  pToJSVal = unGeolocationPosition
  {-# INLINE pToJSVal #-}

instance PFromJSVal GeolocationPosition where
  pFromJSVal = GeolocationPosition
  {-# INLINE pFromJSVal #-}

instance ToJSVal GeolocationPosition where
  toJSVal = return . unGeolocationPosition
  {-# INLINE toJSVal #-}

instance FromJSVal GeolocationPosition where
  fromJSVal v = fmap GeolocationPosition <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GeolocationPosition
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GeolocationPosition where
  makeObject = makeObject . unGeolocationPosition


instance IsGObject GeolocationPosition where
  typeGType _ = gTypeGeolocationPosition
  {-# INLINE typeGType #-}

noGeolocationPosition :: Maybe GeolocationPosition
noGeolocationPosition = Nothing
{-# INLINE noGeolocationPosition #-}

gTypeGeolocationPosition :: JSM GType
gTypeGeolocationPosition = GType . Object <$> jsg "GeolocationPosition"

-- | Functions for this interface are in "JSDOM.GeolocationPositionError" (geolocation).
newtype GeolocationPositionError = GeolocationPositionError { unGeolocationPositionError :: JSVal }

instance PToJSVal GeolocationPositionError where
  pToJSVal = unGeolocationPositionError
  {-# INLINE pToJSVal #-}

instance PFromJSVal GeolocationPositionError where
  pFromJSVal = GeolocationPositionError
  {-# INLINE pFromJSVal #-}

instance ToJSVal GeolocationPositionError where
  toJSVal = return . unGeolocationPositionError
  {-# INLINE toJSVal #-}

instance FromJSVal GeolocationPositionError where
  fromJSVal v = fmap GeolocationPositionError <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GeolocationPositionError
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GeolocationPositionError where
  makeObject = makeObject . unGeolocationPositionError


instance IsGObject GeolocationPositionError where
  typeGType _ = gTypeGeolocationPositionError
  {-# INLINE typeGType #-}

noGeolocationPositionError :: Maybe GeolocationPositionError
noGeolocationPositionError = Nothing
{-# INLINE noGeolocationPositionError #-}

gTypeGeolocationPositionError :: JSM GType
gTypeGeolocationPositionError = GType . Object <$> jsg "GeolocationPositionError"

-- | Dictionary GetAnimationsOptions (web-animations-1)
newtype GetAnimationsOptions = GetAnimationsOptions { unGetAnimationsOptions :: JSVal }

instance PToJSVal GetAnimationsOptions where
  pToJSVal = unGetAnimationsOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal GetAnimationsOptions where
  pFromJSVal = GetAnimationsOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal GetAnimationsOptions where
  toJSVal = return . unGetAnimationsOptions
  {-# INLINE toJSVal #-}

instance FromJSVal GetAnimationsOptions where
  fromJSVal v = fmap GetAnimationsOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GetAnimationsOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GetAnimationsOptions where
  makeObject = makeObject . unGetAnimationsOptions


instance IsGObject GetAnimationsOptions where
  typeGType _ = gTypeGetAnimationsOptions
  {-# INLINE typeGType #-}

noGetAnimationsOptions :: Maybe GetAnimationsOptions
noGetAnimationsOptions = Nothing
{-# INLINE noGetAnimationsOptions #-}

gTypeGetAnimationsOptions :: JSM GType
gTypeGetAnimationsOptions = GType . Object <$> jsg "Object"

-- | Dictionary GetComposedRangesOptions (selection-api)
newtype GetComposedRangesOptions = GetComposedRangesOptions { unGetComposedRangesOptions :: JSVal }

instance PToJSVal GetComposedRangesOptions where
  pToJSVal = unGetComposedRangesOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal GetComposedRangesOptions where
  pFromJSVal = GetComposedRangesOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal GetComposedRangesOptions where
  toJSVal = return . unGetComposedRangesOptions
  {-# INLINE toJSVal #-}

instance FromJSVal GetComposedRangesOptions where
  fromJSVal v = fmap GetComposedRangesOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GetComposedRangesOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GetComposedRangesOptions where
  makeObject = makeObject . unGetComposedRangesOptions


instance IsGObject GetComposedRangesOptions where
  typeGType _ = gTypeGetComposedRangesOptions
  {-# INLINE typeGType #-}

noGetComposedRangesOptions :: Maybe GetComposedRangesOptions
noGetComposedRangesOptions = Nothing
{-# INLINE noGetComposedRangesOptions #-}

gTypeGetComposedRangesOptions :: JSM GType
gTypeGetComposedRangesOptions = GType . Object <$> jsg "Object"

-- | Dictionary GetHTMLOptions (html)
newtype GetHTMLOptions = GetHTMLOptions { unGetHTMLOptions :: JSVal }

instance PToJSVal GetHTMLOptions where
  pToJSVal = unGetHTMLOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal GetHTMLOptions where
  pFromJSVal = GetHTMLOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal GetHTMLOptions where
  toJSVal = return . unGetHTMLOptions
  {-# INLINE toJSVal #-}

instance FromJSVal GetHTMLOptions where
  fromJSVal v = fmap GetHTMLOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GetHTMLOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GetHTMLOptions where
  makeObject = makeObject . unGetHTMLOptions


instance IsGObject GetHTMLOptions where
  typeGType _ = gTypeGetHTMLOptions
  {-# INLINE typeGType #-}

noGetHTMLOptions :: Maybe GetHTMLOptions
noGetHTMLOptions = Nothing
{-# INLINE noGetHTMLOptions #-}

gTypeGetHTMLOptions :: JSM GType
gTypeGetHTMLOptions = GType . Object <$> jsg "Object"

-- | Dictionary GetNotificationOptions (notifications)
newtype GetNotificationOptions = GetNotificationOptions { unGetNotificationOptions :: JSVal }

instance PToJSVal GetNotificationOptions where
  pToJSVal = unGetNotificationOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal GetNotificationOptions where
  pFromJSVal = GetNotificationOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal GetNotificationOptions where
  toJSVal = return . unGetNotificationOptions
  {-# INLINE toJSVal #-}

instance FromJSVal GetNotificationOptions where
  fromJSVal v = fmap GetNotificationOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GetNotificationOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GetNotificationOptions where
  makeObject = makeObject . unGetNotificationOptions


instance IsGObject GetNotificationOptions where
  typeGType _ = gTypeGetNotificationOptions
  {-# INLINE typeGType #-}

noGetNotificationOptions :: Maybe GetNotificationOptions
noGetNotificationOptions = Nothing
{-# INLINE noGetNotificationOptions #-}

gTypeGetNotificationOptions :: JSM GType
gTypeGetNotificationOptions = GType . Object <$> jsg "Object"

-- | Dictionary GetRootNodeOptions (dom)
newtype GetRootNodeOptions = GetRootNodeOptions { unGetRootNodeOptions :: JSVal }

instance PToJSVal GetRootNodeOptions where
  pToJSVal = unGetRootNodeOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal GetRootNodeOptions where
  pFromJSVal = GetRootNodeOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal GetRootNodeOptions where
  toJSVal = return . unGetRootNodeOptions
  {-# INLINE toJSVal #-}

instance FromJSVal GetRootNodeOptions where
  fromJSVal v = fmap GetRootNodeOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GetRootNodeOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GetRootNodeOptions where
  makeObject = makeObject . unGetRootNodeOptions


instance IsGObject GetRootNodeOptions where
  typeGType _ = gTypeGetRootNodeOptions
  {-# INLINE typeGType #-}

noGetRootNodeOptions :: Maybe GetRootNodeOptions
noGetRootNodeOptions = Nothing
{-# INLINE noGetRootNodeOptions #-}

gTypeGetRootNodeOptions :: JSM GType
gTypeGetRootNodeOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.GlobalEventHandlers" (html).
newtype GlobalEventHandlers = GlobalEventHandlers { unGlobalEventHandlers :: JSVal }

instance PToJSVal GlobalEventHandlers where
  pToJSVal = unGlobalEventHandlers
  {-# INLINE pToJSVal #-}

instance PFromJSVal GlobalEventHandlers where
  pFromJSVal = GlobalEventHandlers
  {-# INLINE pFromJSVal #-}

instance ToJSVal GlobalEventHandlers where
  toJSVal = return . unGlobalEventHandlers
  {-# INLINE toJSVal #-}

instance FromJSVal GlobalEventHandlers where
  fromJSVal v = fmap GlobalEventHandlers <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . GlobalEventHandlers
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject GlobalEventHandlers where
  makeObject = makeObject . unGlobalEventHandlers

class (IsGObject o) => IsGlobalEventHandlers o
toGlobalEventHandlers :: IsGlobalEventHandlers o => o -> GlobalEventHandlers
toGlobalEventHandlers = GlobalEventHandlers . coerce

instance IsGlobalEventHandlers GlobalEventHandlers

instance IsGObject GlobalEventHandlers where
  typeGType _ = gTypeGlobalEventHandlers
  {-# INLINE typeGType #-}

noGlobalEventHandlers :: Maybe GlobalEventHandlers
noGlobalEventHandlers = Nothing
{-# INLINE noGlobalEventHandlers #-}

gTypeGlobalEventHandlers :: JSM GType
gTypeGlobalEventHandlers = GType . Object <$> jsg "Object"

-- | Dictionary HMACGetSecretInput (fido-client-to-authenticator-protocol-v2.3)
newtype HMACGetSecretInput = HMACGetSecretInput { unHMACGetSecretInput :: JSVal }

instance PToJSVal HMACGetSecretInput where
  pToJSVal = unHMACGetSecretInput
  {-# INLINE pToJSVal #-}

instance PFromJSVal HMACGetSecretInput where
  pFromJSVal = HMACGetSecretInput
  {-# INLINE pFromJSVal #-}

instance ToJSVal HMACGetSecretInput where
  toJSVal = return . unHMACGetSecretInput
  {-# INLINE toJSVal #-}

instance FromJSVal HMACGetSecretInput where
  fromJSVal v = fmap HMACGetSecretInput <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HMACGetSecretInput
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HMACGetSecretInput where
  makeObject = makeObject . unHMACGetSecretInput


instance IsGObject HMACGetSecretInput where
  typeGType _ = gTypeHMACGetSecretInput
  {-# INLINE typeGType #-}

noHMACGetSecretInput :: Maybe HMACGetSecretInput
noHMACGetSecretInput = Nothing
{-# INLINE noHMACGetSecretInput #-}

gTypeHMACGetSecretInput :: JSM GType
gTypeHMACGetSecretInput = GType . Object <$> jsg "Object"

-- | Dictionary HMACGetSecretOutput (fido-client-to-authenticator-protocol-v2.3)
newtype HMACGetSecretOutput = HMACGetSecretOutput { unHMACGetSecretOutput :: JSVal }

instance PToJSVal HMACGetSecretOutput where
  pToJSVal = unHMACGetSecretOutput
  {-# INLINE pToJSVal #-}

instance PFromJSVal HMACGetSecretOutput where
  pFromJSVal = HMACGetSecretOutput
  {-# INLINE pFromJSVal #-}

instance ToJSVal HMACGetSecretOutput where
  toJSVal = return . unHMACGetSecretOutput
  {-# INLINE toJSVal #-}

instance FromJSVal HMACGetSecretOutput where
  fromJSVal v = fmap HMACGetSecretOutput <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HMACGetSecretOutput
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HMACGetSecretOutput where
  makeObject = makeObject . unHMACGetSecretOutput


instance IsGObject HMACGetSecretOutput where
  typeGType _ = gTypeHMACGetSecretOutput
  {-# INLINE typeGType #-}

noHMACGetSecretOutput :: Maybe HMACGetSecretOutput
noHMACGetSecretOutput = Nothing
{-# INLINE noHMACGetSecretOutput #-}

gTypeHMACGetSecretOutput :: JSM GType
gTypeHMACGetSecretOutput = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.HTMLAllCollection" (html).
newtype HTMLAllCollection = HTMLAllCollection { unHTMLAllCollection :: JSVal }

instance PToJSVal HTMLAllCollection where
  pToJSVal = unHTMLAllCollection
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLAllCollection where
  pFromJSVal = HTMLAllCollection
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLAllCollection where
  toJSVal = return . unHTMLAllCollection
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLAllCollection where
  fromJSVal v = fmap HTMLAllCollection <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLAllCollection
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLAllCollection where
  makeObject = makeObject . unHTMLAllCollection


instance IsGObject HTMLAllCollection where
  typeGType _ = gTypeHTMLAllCollection
  {-# INLINE typeGType #-}

noHTMLAllCollection :: Maybe HTMLAllCollection
noHTMLAllCollection = Nothing
{-# INLINE noHTMLAllCollection #-}

gTypeHTMLAllCollection :: JSM GType
gTypeHTMLAllCollection = GType . Object <$> jsg "HTMLAllCollection"

-- | Functions for this interface are in "JSDOM.HTMLAnchorElement" (html).
newtype HTMLAnchorElement = HTMLAnchorElement { unHTMLAnchorElement :: JSVal }

instance PToJSVal HTMLAnchorElement where
  pToJSVal = unHTMLAnchorElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLAnchorElement where
  pFromJSVal = HTMLAnchorElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLAnchorElement where
  toJSVal = return . unHTMLAnchorElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLAnchorElement where
  fromJSVal v = fmap HTMLAnchorElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLAnchorElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLAnchorElement where
  makeObject = makeObject . unHTMLAnchorElement

instance IsHTMLHyperlinkElementUtils HTMLAnchorElement
instance IsHyperlinkElementUtils HTMLAnchorElement
instance IsHTMLElement HTMLAnchorElement
instance IsElementCSSInlineStyle HTMLAnchorElement
instance IsElementContentEditable HTMLAnchorElement
instance IsGlobalEventHandlers HTMLAnchorElement
instance IsHTMLOrSVGOrMathMLElement HTMLAnchorElement
instance IsElement HTMLAnchorElement
instance IsARIAMixin HTMLAnchorElement
instance IsARIANotifyMixin HTMLAnchorElement
instance IsAnimatable HTMLAnchorElement
instance IsChildNode HTMLAnchorElement
instance IsNonDocumentTypeChildNode HTMLAnchorElement
instance IsParentNode HTMLAnchorElement
instance IsSlottable HTMLAnchorElement
instance IsNode HTMLAnchorElement
instance IsEventTarget HTMLAnchorElement

instance IsGObject HTMLAnchorElement where
  typeGType _ = gTypeHTMLAnchorElement
  {-# INLINE typeGType #-}

noHTMLAnchorElement :: Maybe HTMLAnchorElement
noHTMLAnchorElement = Nothing
{-# INLINE noHTMLAnchorElement #-}

gTypeHTMLAnchorElement :: JSM GType
gTypeHTMLAnchorElement = GType . Object <$> jsg "HTMLAnchorElement"

-- | Functions for this interface are in "JSDOM.HTMLAreaElement" (html).
newtype HTMLAreaElement = HTMLAreaElement { unHTMLAreaElement :: JSVal }

instance PToJSVal HTMLAreaElement where
  pToJSVal = unHTMLAreaElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLAreaElement where
  pFromJSVal = HTMLAreaElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLAreaElement where
  toJSVal = return . unHTMLAreaElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLAreaElement where
  fromJSVal v = fmap HTMLAreaElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLAreaElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLAreaElement where
  makeObject = makeObject . unHTMLAreaElement

instance IsHTMLHyperlinkElementUtils HTMLAreaElement
instance IsHyperlinkElementUtils HTMLAreaElement
instance IsHTMLElement HTMLAreaElement
instance IsElementCSSInlineStyle HTMLAreaElement
instance IsElementContentEditable HTMLAreaElement
instance IsGlobalEventHandlers HTMLAreaElement
instance IsHTMLOrSVGOrMathMLElement HTMLAreaElement
instance IsElement HTMLAreaElement
instance IsARIAMixin HTMLAreaElement
instance IsARIANotifyMixin HTMLAreaElement
instance IsAnimatable HTMLAreaElement
instance IsChildNode HTMLAreaElement
instance IsNonDocumentTypeChildNode HTMLAreaElement
instance IsParentNode HTMLAreaElement
instance IsSlottable HTMLAreaElement
instance IsNode HTMLAreaElement
instance IsEventTarget HTMLAreaElement

instance IsGObject HTMLAreaElement where
  typeGType _ = gTypeHTMLAreaElement
  {-# INLINE typeGType #-}

noHTMLAreaElement :: Maybe HTMLAreaElement
noHTMLAreaElement = Nothing
{-# INLINE noHTMLAreaElement #-}

gTypeHTMLAreaElement :: JSM GType
gTypeHTMLAreaElement = GType . Object <$> jsg "HTMLAreaElement"

-- | Functions for this interface are in "JSDOM.HTMLAudioElement" (html).
newtype HTMLAudioElement = HTMLAudioElement { unHTMLAudioElement :: JSVal }

instance PToJSVal HTMLAudioElement where
  pToJSVal = unHTMLAudioElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLAudioElement where
  pFromJSVal = HTMLAudioElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLAudioElement where
  toJSVal = return . unHTMLAudioElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLAudioElement where
  fromJSVal v = fmap HTMLAudioElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLAudioElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLAudioElement where
  makeObject = makeObject . unHTMLAudioElement

instance IsHTMLMediaElement HTMLAudioElement
instance IsHTMLElement HTMLAudioElement
instance IsElementCSSInlineStyle HTMLAudioElement
instance IsElementContentEditable HTMLAudioElement
instance IsGlobalEventHandlers HTMLAudioElement
instance IsHTMLOrSVGOrMathMLElement HTMLAudioElement
instance IsElement HTMLAudioElement
instance IsARIAMixin HTMLAudioElement
instance IsARIANotifyMixin HTMLAudioElement
instance IsAnimatable HTMLAudioElement
instance IsChildNode HTMLAudioElement
instance IsNonDocumentTypeChildNode HTMLAudioElement
instance IsParentNode HTMLAudioElement
instance IsSlottable HTMLAudioElement
instance IsNode HTMLAudioElement
instance IsEventTarget HTMLAudioElement

instance IsGObject HTMLAudioElement where
  typeGType _ = gTypeHTMLAudioElement
  {-# INLINE typeGType #-}

noHTMLAudioElement :: Maybe HTMLAudioElement
noHTMLAudioElement = Nothing
{-# INLINE noHTMLAudioElement #-}

gTypeHTMLAudioElement :: JSM GType
gTypeHTMLAudioElement = GType . Object <$> jsg "HTMLAudioElement"

-- | Functions for this interface are in "JSDOM.HTMLBRElement" (html).
newtype HTMLBRElement = HTMLBRElement { unHTMLBRElement :: JSVal }

instance PToJSVal HTMLBRElement where
  pToJSVal = unHTMLBRElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLBRElement where
  pFromJSVal = HTMLBRElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLBRElement where
  toJSVal = return . unHTMLBRElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLBRElement where
  fromJSVal v = fmap HTMLBRElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLBRElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLBRElement where
  makeObject = makeObject . unHTMLBRElement

instance IsHTMLElement HTMLBRElement
instance IsElementCSSInlineStyle HTMLBRElement
instance IsElementContentEditable HTMLBRElement
instance IsGlobalEventHandlers HTMLBRElement
instance IsHTMLOrSVGOrMathMLElement HTMLBRElement
instance IsElement HTMLBRElement
instance IsARIAMixin HTMLBRElement
instance IsARIANotifyMixin HTMLBRElement
instance IsAnimatable HTMLBRElement
instance IsChildNode HTMLBRElement
instance IsNonDocumentTypeChildNode HTMLBRElement
instance IsParentNode HTMLBRElement
instance IsSlottable HTMLBRElement
instance IsNode HTMLBRElement
instance IsEventTarget HTMLBRElement

instance IsGObject HTMLBRElement where
  typeGType _ = gTypeHTMLBRElement
  {-# INLINE typeGType #-}

noHTMLBRElement :: Maybe HTMLBRElement
noHTMLBRElement = Nothing
{-# INLINE noHTMLBRElement #-}

gTypeHTMLBRElement :: JSM GType
gTypeHTMLBRElement = GType . Object <$> jsg "HTMLBRElement"

-- | Functions for this interface are in "JSDOM.HTMLBaseElement" (html).
newtype HTMLBaseElement = HTMLBaseElement { unHTMLBaseElement :: JSVal }

instance PToJSVal HTMLBaseElement where
  pToJSVal = unHTMLBaseElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLBaseElement where
  pFromJSVal = HTMLBaseElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLBaseElement where
  toJSVal = return . unHTMLBaseElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLBaseElement where
  fromJSVal v = fmap HTMLBaseElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLBaseElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLBaseElement where
  makeObject = makeObject . unHTMLBaseElement

instance IsHTMLElement HTMLBaseElement
instance IsElementCSSInlineStyle HTMLBaseElement
instance IsElementContentEditable HTMLBaseElement
instance IsGlobalEventHandlers HTMLBaseElement
instance IsHTMLOrSVGOrMathMLElement HTMLBaseElement
instance IsElement HTMLBaseElement
instance IsARIAMixin HTMLBaseElement
instance IsARIANotifyMixin HTMLBaseElement
instance IsAnimatable HTMLBaseElement
instance IsChildNode HTMLBaseElement
instance IsNonDocumentTypeChildNode HTMLBaseElement
instance IsParentNode HTMLBaseElement
instance IsSlottable HTMLBaseElement
instance IsNode HTMLBaseElement
instance IsEventTarget HTMLBaseElement

instance IsGObject HTMLBaseElement where
  typeGType _ = gTypeHTMLBaseElement
  {-# INLINE typeGType #-}

noHTMLBaseElement :: Maybe HTMLBaseElement
noHTMLBaseElement = Nothing
{-# INLINE noHTMLBaseElement #-}

gTypeHTMLBaseElement :: JSM GType
gTypeHTMLBaseElement = GType . Object <$> jsg "HTMLBaseElement"

-- | Functions for this interface are in "JSDOM.HTMLBodyElement" (html).
newtype HTMLBodyElement = HTMLBodyElement { unHTMLBodyElement :: JSVal }

instance PToJSVal HTMLBodyElement where
  pToJSVal = unHTMLBodyElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLBodyElement where
  pFromJSVal = HTMLBodyElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLBodyElement where
  toJSVal = return . unHTMLBodyElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLBodyElement where
  fromJSVal v = fmap HTMLBodyElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLBodyElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLBodyElement where
  makeObject = makeObject . unHTMLBodyElement

instance IsWindowEventHandlers HTMLBodyElement
instance IsHTMLElement HTMLBodyElement
instance IsElementCSSInlineStyle HTMLBodyElement
instance IsElementContentEditable HTMLBodyElement
instance IsGlobalEventHandlers HTMLBodyElement
instance IsHTMLOrSVGOrMathMLElement HTMLBodyElement
instance IsElement HTMLBodyElement
instance IsARIAMixin HTMLBodyElement
instance IsARIANotifyMixin HTMLBodyElement
instance IsAnimatable HTMLBodyElement
instance IsChildNode HTMLBodyElement
instance IsNonDocumentTypeChildNode HTMLBodyElement
instance IsParentNode HTMLBodyElement
instance IsSlottable HTMLBodyElement
instance IsNode HTMLBodyElement
instance IsEventTarget HTMLBodyElement

instance IsGObject HTMLBodyElement where
  typeGType _ = gTypeHTMLBodyElement
  {-# INLINE typeGType #-}

noHTMLBodyElement :: Maybe HTMLBodyElement
noHTMLBodyElement = Nothing
{-# INLINE noHTMLBodyElement #-}

gTypeHTMLBodyElement :: JSM GType
gTypeHTMLBodyElement = GType . Object <$> jsg "HTMLBodyElement"

-- | Functions for this interface are in "JSDOM.HTMLButtonElement" (html).
newtype HTMLButtonElement = HTMLButtonElement { unHTMLButtonElement :: JSVal }

instance PToJSVal HTMLButtonElement where
  pToJSVal = unHTMLButtonElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLButtonElement where
  pFromJSVal = HTMLButtonElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLButtonElement where
  toJSVal = return . unHTMLButtonElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLButtonElement where
  fromJSVal v = fmap HTMLButtonElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLButtonElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLButtonElement where
  makeObject = makeObject . unHTMLButtonElement

instance IsPopoverTargetAttributes HTMLButtonElement
instance IsHTMLElement HTMLButtonElement
instance IsElementCSSInlineStyle HTMLButtonElement
instance IsElementContentEditable HTMLButtonElement
instance IsGlobalEventHandlers HTMLButtonElement
instance IsHTMLOrSVGOrMathMLElement HTMLButtonElement
instance IsElement HTMLButtonElement
instance IsARIAMixin HTMLButtonElement
instance IsARIANotifyMixin HTMLButtonElement
instance IsAnimatable HTMLButtonElement
instance IsChildNode HTMLButtonElement
instance IsNonDocumentTypeChildNode HTMLButtonElement
instance IsParentNode HTMLButtonElement
instance IsSlottable HTMLButtonElement
instance IsNode HTMLButtonElement
instance IsEventTarget HTMLButtonElement

instance IsGObject HTMLButtonElement where
  typeGType _ = gTypeHTMLButtonElement
  {-# INLINE typeGType #-}

noHTMLButtonElement :: Maybe HTMLButtonElement
noHTMLButtonElement = Nothing
{-# INLINE noHTMLButtonElement #-}

gTypeHTMLButtonElement :: JSM GType
gTypeHTMLButtonElement = GType . Object <$> jsg "HTMLButtonElement"

-- | Functions for this interface are in "JSDOM.HTMLCanvasElement" (html).
newtype HTMLCanvasElement = HTMLCanvasElement { unHTMLCanvasElement :: JSVal }

instance PToJSVal HTMLCanvasElement where
  pToJSVal = unHTMLCanvasElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLCanvasElement where
  pFromJSVal = HTMLCanvasElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLCanvasElement where
  toJSVal = return . unHTMLCanvasElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLCanvasElement where
  fromJSVal v = fmap HTMLCanvasElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLCanvasElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLCanvasElement where
  makeObject = makeObject . unHTMLCanvasElement

instance IsHTMLElement HTMLCanvasElement
instance IsElementCSSInlineStyle HTMLCanvasElement
instance IsElementContentEditable HTMLCanvasElement
instance IsGlobalEventHandlers HTMLCanvasElement
instance IsHTMLOrSVGOrMathMLElement HTMLCanvasElement
instance IsElement HTMLCanvasElement
instance IsARIAMixin HTMLCanvasElement
instance IsARIANotifyMixin HTMLCanvasElement
instance IsAnimatable HTMLCanvasElement
instance IsChildNode HTMLCanvasElement
instance IsNonDocumentTypeChildNode HTMLCanvasElement
instance IsParentNode HTMLCanvasElement
instance IsSlottable HTMLCanvasElement
instance IsNode HTMLCanvasElement
instance IsEventTarget HTMLCanvasElement

instance IsGObject HTMLCanvasElement where
  typeGType _ = gTypeHTMLCanvasElement
  {-# INLINE typeGType #-}

noHTMLCanvasElement :: Maybe HTMLCanvasElement
noHTMLCanvasElement = Nothing
{-# INLINE noHTMLCanvasElement #-}

gTypeHTMLCanvasElement :: JSM GType
gTypeHTMLCanvasElement = GType . Object <$> jsg "HTMLCanvasElement"

-- | Functions for this interface are in "JSDOM.HTMLCollection" (dom).
newtype HTMLCollection = HTMLCollection { unHTMLCollection :: JSVal }

instance PToJSVal HTMLCollection where
  pToJSVal = unHTMLCollection
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLCollection where
  pFromJSVal = HTMLCollection
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLCollection where
  toJSVal = return . unHTMLCollection
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLCollection where
  fromJSVal v = fmap HTMLCollection <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLCollection
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLCollection where
  makeObject = makeObject . unHTMLCollection

class (IsGObject o) => IsHTMLCollection o
toHTMLCollection :: IsHTMLCollection o => o -> HTMLCollection
toHTMLCollection = HTMLCollection . coerce

instance IsHTMLCollection HTMLCollection

instance IsGObject HTMLCollection where
  typeGType _ = gTypeHTMLCollection
  {-# INLINE typeGType #-}

noHTMLCollection :: Maybe HTMLCollection
noHTMLCollection = Nothing
{-# INLINE noHTMLCollection #-}

gTypeHTMLCollection :: JSM GType
gTypeHTMLCollection = GType . Object <$> jsg "HTMLCollection"

-- | Functions for this interface are in "JSDOM.HTMLDListElement" (html).
newtype HTMLDListElement = HTMLDListElement { unHTMLDListElement :: JSVal }

instance PToJSVal HTMLDListElement where
  pToJSVal = unHTMLDListElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLDListElement where
  pFromJSVal = HTMLDListElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLDListElement where
  toJSVal = return . unHTMLDListElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLDListElement where
  fromJSVal v = fmap HTMLDListElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLDListElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLDListElement where
  makeObject = makeObject . unHTMLDListElement

instance IsHTMLElement HTMLDListElement
instance IsElementCSSInlineStyle HTMLDListElement
instance IsElementContentEditable HTMLDListElement
instance IsGlobalEventHandlers HTMLDListElement
instance IsHTMLOrSVGOrMathMLElement HTMLDListElement
instance IsElement HTMLDListElement
instance IsARIAMixin HTMLDListElement
instance IsARIANotifyMixin HTMLDListElement
instance IsAnimatable HTMLDListElement
instance IsChildNode HTMLDListElement
instance IsNonDocumentTypeChildNode HTMLDListElement
instance IsParentNode HTMLDListElement
instance IsSlottable HTMLDListElement
instance IsNode HTMLDListElement
instance IsEventTarget HTMLDListElement

instance IsGObject HTMLDListElement where
  typeGType _ = gTypeHTMLDListElement
  {-# INLINE typeGType #-}

noHTMLDListElement :: Maybe HTMLDListElement
noHTMLDListElement = Nothing
{-# INLINE noHTMLDListElement #-}

gTypeHTMLDListElement :: JSM GType
gTypeHTMLDListElement = GType . Object <$> jsg "HTMLDListElement"

-- | Functions for this interface are in "JSDOM.HTMLDataElement" (html).
newtype HTMLDataElement = HTMLDataElement { unHTMLDataElement :: JSVal }

instance PToJSVal HTMLDataElement where
  pToJSVal = unHTMLDataElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLDataElement where
  pFromJSVal = HTMLDataElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLDataElement where
  toJSVal = return . unHTMLDataElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLDataElement where
  fromJSVal v = fmap HTMLDataElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLDataElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLDataElement where
  makeObject = makeObject . unHTMLDataElement

instance IsHTMLElement HTMLDataElement
instance IsElementCSSInlineStyle HTMLDataElement
instance IsElementContentEditable HTMLDataElement
instance IsGlobalEventHandlers HTMLDataElement
instance IsHTMLOrSVGOrMathMLElement HTMLDataElement
instance IsElement HTMLDataElement
instance IsARIAMixin HTMLDataElement
instance IsARIANotifyMixin HTMLDataElement
instance IsAnimatable HTMLDataElement
instance IsChildNode HTMLDataElement
instance IsNonDocumentTypeChildNode HTMLDataElement
instance IsParentNode HTMLDataElement
instance IsSlottable HTMLDataElement
instance IsNode HTMLDataElement
instance IsEventTarget HTMLDataElement

instance IsGObject HTMLDataElement where
  typeGType _ = gTypeHTMLDataElement
  {-# INLINE typeGType #-}

noHTMLDataElement :: Maybe HTMLDataElement
noHTMLDataElement = Nothing
{-# INLINE noHTMLDataElement #-}

gTypeHTMLDataElement :: JSM GType
gTypeHTMLDataElement = GType . Object <$> jsg "HTMLDataElement"

-- | Functions for this interface are in "JSDOM.HTMLDataListElement" (html).
newtype HTMLDataListElement = HTMLDataListElement { unHTMLDataListElement :: JSVal }

instance PToJSVal HTMLDataListElement where
  pToJSVal = unHTMLDataListElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLDataListElement where
  pFromJSVal = HTMLDataListElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLDataListElement where
  toJSVal = return . unHTMLDataListElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLDataListElement where
  fromJSVal v = fmap HTMLDataListElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLDataListElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLDataListElement where
  makeObject = makeObject . unHTMLDataListElement

instance IsHTMLElement HTMLDataListElement
instance IsElementCSSInlineStyle HTMLDataListElement
instance IsElementContentEditable HTMLDataListElement
instance IsGlobalEventHandlers HTMLDataListElement
instance IsHTMLOrSVGOrMathMLElement HTMLDataListElement
instance IsElement HTMLDataListElement
instance IsARIAMixin HTMLDataListElement
instance IsARIANotifyMixin HTMLDataListElement
instance IsAnimatable HTMLDataListElement
instance IsChildNode HTMLDataListElement
instance IsNonDocumentTypeChildNode HTMLDataListElement
instance IsParentNode HTMLDataListElement
instance IsSlottable HTMLDataListElement
instance IsNode HTMLDataListElement
instance IsEventTarget HTMLDataListElement

instance IsGObject HTMLDataListElement where
  typeGType _ = gTypeHTMLDataListElement
  {-# INLINE typeGType #-}

noHTMLDataListElement :: Maybe HTMLDataListElement
noHTMLDataListElement = Nothing
{-# INLINE noHTMLDataListElement #-}

gTypeHTMLDataListElement :: JSM GType
gTypeHTMLDataListElement = GType . Object <$> jsg "HTMLDataListElement"

-- | Functions for this interface are in "JSDOM.HTMLDetailsElement" (html).
newtype HTMLDetailsElement = HTMLDetailsElement { unHTMLDetailsElement :: JSVal }

instance PToJSVal HTMLDetailsElement where
  pToJSVal = unHTMLDetailsElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLDetailsElement where
  pFromJSVal = HTMLDetailsElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLDetailsElement where
  toJSVal = return . unHTMLDetailsElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLDetailsElement where
  fromJSVal v = fmap HTMLDetailsElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLDetailsElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLDetailsElement where
  makeObject = makeObject . unHTMLDetailsElement

instance IsHTMLElement HTMLDetailsElement
instance IsElementCSSInlineStyle HTMLDetailsElement
instance IsElementContentEditable HTMLDetailsElement
instance IsGlobalEventHandlers HTMLDetailsElement
instance IsHTMLOrSVGOrMathMLElement HTMLDetailsElement
instance IsElement HTMLDetailsElement
instance IsARIAMixin HTMLDetailsElement
instance IsARIANotifyMixin HTMLDetailsElement
instance IsAnimatable HTMLDetailsElement
instance IsChildNode HTMLDetailsElement
instance IsNonDocumentTypeChildNode HTMLDetailsElement
instance IsParentNode HTMLDetailsElement
instance IsSlottable HTMLDetailsElement
instance IsNode HTMLDetailsElement
instance IsEventTarget HTMLDetailsElement

instance IsGObject HTMLDetailsElement where
  typeGType _ = gTypeHTMLDetailsElement
  {-# INLINE typeGType #-}

noHTMLDetailsElement :: Maybe HTMLDetailsElement
noHTMLDetailsElement = Nothing
{-# INLINE noHTMLDetailsElement #-}

gTypeHTMLDetailsElement :: JSM GType
gTypeHTMLDetailsElement = GType . Object <$> jsg "HTMLDetailsElement"

-- | Functions for this interface are in "JSDOM.HTMLDialogElement" (html).
newtype HTMLDialogElement = HTMLDialogElement { unHTMLDialogElement :: JSVal }

instance PToJSVal HTMLDialogElement where
  pToJSVal = unHTMLDialogElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLDialogElement where
  pFromJSVal = HTMLDialogElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLDialogElement where
  toJSVal = return . unHTMLDialogElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLDialogElement where
  fromJSVal v = fmap HTMLDialogElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLDialogElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLDialogElement where
  makeObject = makeObject . unHTMLDialogElement

instance IsHTMLElement HTMLDialogElement
instance IsElementCSSInlineStyle HTMLDialogElement
instance IsElementContentEditable HTMLDialogElement
instance IsGlobalEventHandlers HTMLDialogElement
instance IsHTMLOrSVGOrMathMLElement HTMLDialogElement
instance IsElement HTMLDialogElement
instance IsARIAMixin HTMLDialogElement
instance IsARIANotifyMixin HTMLDialogElement
instance IsAnimatable HTMLDialogElement
instance IsChildNode HTMLDialogElement
instance IsNonDocumentTypeChildNode HTMLDialogElement
instance IsParentNode HTMLDialogElement
instance IsSlottable HTMLDialogElement
instance IsNode HTMLDialogElement
instance IsEventTarget HTMLDialogElement

instance IsGObject HTMLDialogElement where
  typeGType _ = gTypeHTMLDialogElement
  {-# INLINE typeGType #-}

noHTMLDialogElement :: Maybe HTMLDialogElement
noHTMLDialogElement = Nothing
{-# INLINE noHTMLDialogElement #-}

gTypeHTMLDialogElement :: JSM GType
gTypeHTMLDialogElement = GType . Object <$> jsg "HTMLDialogElement"

-- | Functions for this interface are in "JSDOM.HTMLDirectoryElement" (html).
newtype HTMLDirectoryElement = HTMLDirectoryElement { unHTMLDirectoryElement :: JSVal }

instance PToJSVal HTMLDirectoryElement where
  pToJSVal = unHTMLDirectoryElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLDirectoryElement where
  pFromJSVal = HTMLDirectoryElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLDirectoryElement where
  toJSVal = return . unHTMLDirectoryElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLDirectoryElement where
  fromJSVal v = fmap HTMLDirectoryElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLDirectoryElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLDirectoryElement where
  makeObject = makeObject . unHTMLDirectoryElement

instance IsHTMLElement HTMLDirectoryElement
instance IsElementCSSInlineStyle HTMLDirectoryElement
instance IsElementContentEditable HTMLDirectoryElement
instance IsGlobalEventHandlers HTMLDirectoryElement
instance IsHTMLOrSVGOrMathMLElement HTMLDirectoryElement
instance IsElement HTMLDirectoryElement
instance IsARIAMixin HTMLDirectoryElement
instance IsARIANotifyMixin HTMLDirectoryElement
instance IsAnimatable HTMLDirectoryElement
instance IsChildNode HTMLDirectoryElement
instance IsNonDocumentTypeChildNode HTMLDirectoryElement
instance IsParentNode HTMLDirectoryElement
instance IsSlottable HTMLDirectoryElement
instance IsNode HTMLDirectoryElement
instance IsEventTarget HTMLDirectoryElement

instance IsGObject HTMLDirectoryElement where
  typeGType _ = gTypeHTMLDirectoryElement
  {-# INLINE typeGType #-}

noHTMLDirectoryElement :: Maybe HTMLDirectoryElement
noHTMLDirectoryElement = Nothing
{-# INLINE noHTMLDirectoryElement #-}

gTypeHTMLDirectoryElement :: JSM GType
gTypeHTMLDirectoryElement = GType . Object <$> jsg "HTMLDirectoryElement"

-- | Functions for this interface are in "JSDOM.HTMLDivElement" (html).
newtype HTMLDivElement = HTMLDivElement { unHTMLDivElement :: JSVal }

instance PToJSVal HTMLDivElement where
  pToJSVal = unHTMLDivElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLDivElement where
  pFromJSVal = HTMLDivElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLDivElement where
  toJSVal = return . unHTMLDivElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLDivElement where
  fromJSVal v = fmap HTMLDivElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLDivElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLDivElement where
  makeObject = makeObject . unHTMLDivElement

instance IsHTMLElement HTMLDivElement
instance IsElementCSSInlineStyle HTMLDivElement
instance IsElementContentEditable HTMLDivElement
instance IsGlobalEventHandlers HTMLDivElement
instance IsHTMLOrSVGOrMathMLElement HTMLDivElement
instance IsElement HTMLDivElement
instance IsARIAMixin HTMLDivElement
instance IsARIANotifyMixin HTMLDivElement
instance IsAnimatable HTMLDivElement
instance IsChildNode HTMLDivElement
instance IsNonDocumentTypeChildNode HTMLDivElement
instance IsParentNode HTMLDivElement
instance IsSlottable HTMLDivElement
instance IsNode HTMLDivElement
instance IsEventTarget HTMLDivElement

instance IsGObject HTMLDivElement where
  typeGType _ = gTypeHTMLDivElement
  {-# INLINE typeGType #-}

noHTMLDivElement :: Maybe HTMLDivElement
noHTMLDivElement = Nothing
{-# INLINE noHTMLDivElement #-}

gTypeHTMLDivElement :: JSM GType
gTypeHTMLDivElement = GType . Object <$> jsg "HTMLDivElement"

-- | Functions for this interface are in "JSDOM.HTMLElement" (html).
newtype HTMLElement = HTMLElement { unHTMLElement :: JSVal }

instance PToJSVal HTMLElement where
  pToJSVal = unHTMLElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLElement where
  pFromJSVal = HTMLElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLElement where
  toJSVal = return . unHTMLElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLElement where
  fromJSVal v = fmap HTMLElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLElement where
  makeObject = makeObject . unHTMLElement

class (IsElement o, IsElementCSSInlineStyle o, IsElementContentEditable o, IsGlobalEventHandlers o, IsHTMLOrSVGOrMathMLElement o, IsGObject o) => IsHTMLElement o
toHTMLElement :: IsHTMLElement o => o -> HTMLElement
toHTMLElement = HTMLElement . coerce

instance IsHTMLElement HTMLElement
instance IsElementCSSInlineStyle HTMLElement
instance IsElementContentEditable HTMLElement
instance IsGlobalEventHandlers HTMLElement
instance IsHTMLOrSVGOrMathMLElement HTMLElement
instance IsElement HTMLElement
instance IsARIAMixin HTMLElement
instance IsARIANotifyMixin HTMLElement
instance IsAnimatable HTMLElement
instance IsChildNode HTMLElement
instance IsNonDocumentTypeChildNode HTMLElement
instance IsParentNode HTMLElement
instance IsSlottable HTMLElement
instance IsNode HTMLElement
instance IsEventTarget HTMLElement

instance IsGObject HTMLElement where
  typeGType _ = gTypeHTMLElement
  {-# INLINE typeGType #-}

noHTMLElement :: Maybe HTMLElement
noHTMLElement = Nothing
{-# INLINE noHTMLElement #-}

gTypeHTMLElement :: JSM GType
gTypeHTMLElement = GType . Object <$> jsg "HTMLElement"

-- | Functions for this interface are in "JSDOM.HTMLEmbedElement" (html).
newtype HTMLEmbedElement = HTMLEmbedElement { unHTMLEmbedElement :: JSVal }

instance PToJSVal HTMLEmbedElement where
  pToJSVal = unHTMLEmbedElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLEmbedElement where
  pFromJSVal = HTMLEmbedElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLEmbedElement where
  toJSVal = return . unHTMLEmbedElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLEmbedElement where
  fromJSVal v = fmap HTMLEmbedElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLEmbedElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLEmbedElement where
  makeObject = makeObject . unHTMLEmbedElement

instance IsHTMLElement HTMLEmbedElement
instance IsElementCSSInlineStyle HTMLEmbedElement
instance IsElementContentEditable HTMLEmbedElement
instance IsGlobalEventHandlers HTMLEmbedElement
instance IsHTMLOrSVGOrMathMLElement HTMLEmbedElement
instance IsElement HTMLEmbedElement
instance IsARIAMixin HTMLEmbedElement
instance IsARIANotifyMixin HTMLEmbedElement
instance IsAnimatable HTMLEmbedElement
instance IsChildNode HTMLEmbedElement
instance IsNonDocumentTypeChildNode HTMLEmbedElement
instance IsParentNode HTMLEmbedElement
instance IsSlottable HTMLEmbedElement
instance IsNode HTMLEmbedElement
instance IsEventTarget HTMLEmbedElement

instance IsGObject HTMLEmbedElement where
  typeGType _ = gTypeHTMLEmbedElement
  {-# INLINE typeGType #-}

noHTMLEmbedElement :: Maybe HTMLEmbedElement
noHTMLEmbedElement = Nothing
{-# INLINE noHTMLEmbedElement #-}

gTypeHTMLEmbedElement :: JSM GType
gTypeHTMLEmbedElement = GType . Object <$> jsg "HTMLEmbedElement"

-- | Functions for this interface are in "JSDOM.HTMLFieldSetElement" (html).
newtype HTMLFieldSetElement = HTMLFieldSetElement { unHTMLFieldSetElement :: JSVal }

instance PToJSVal HTMLFieldSetElement where
  pToJSVal = unHTMLFieldSetElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLFieldSetElement where
  pFromJSVal = HTMLFieldSetElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLFieldSetElement where
  toJSVal = return . unHTMLFieldSetElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLFieldSetElement where
  fromJSVal v = fmap HTMLFieldSetElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLFieldSetElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLFieldSetElement where
  makeObject = makeObject . unHTMLFieldSetElement

instance IsHTMLElement HTMLFieldSetElement
instance IsElementCSSInlineStyle HTMLFieldSetElement
instance IsElementContentEditable HTMLFieldSetElement
instance IsGlobalEventHandlers HTMLFieldSetElement
instance IsHTMLOrSVGOrMathMLElement HTMLFieldSetElement
instance IsElement HTMLFieldSetElement
instance IsARIAMixin HTMLFieldSetElement
instance IsARIANotifyMixin HTMLFieldSetElement
instance IsAnimatable HTMLFieldSetElement
instance IsChildNode HTMLFieldSetElement
instance IsNonDocumentTypeChildNode HTMLFieldSetElement
instance IsParentNode HTMLFieldSetElement
instance IsSlottable HTMLFieldSetElement
instance IsNode HTMLFieldSetElement
instance IsEventTarget HTMLFieldSetElement

instance IsGObject HTMLFieldSetElement where
  typeGType _ = gTypeHTMLFieldSetElement
  {-# INLINE typeGType #-}

noHTMLFieldSetElement :: Maybe HTMLFieldSetElement
noHTMLFieldSetElement = Nothing
{-# INLINE noHTMLFieldSetElement #-}

gTypeHTMLFieldSetElement :: JSM GType
gTypeHTMLFieldSetElement = GType . Object <$> jsg "HTMLFieldSetElement"

-- | Functions for this interface are in "JSDOM.HTMLFontElement" (html).
newtype HTMLFontElement = HTMLFontElement { unHTMLFontElement :: JSVal }

instance PToJSVal HTMLFontElement where
  pToJSVal = unHTMLFontElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLFontElement where
  pFromJSVal = HTMLFontElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLFontElement where
  toJSVal = return . unHTMLFontElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLFontElement where
  fromJSVal v = fmap HTMLFontElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLFontElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLFontElement where
  makeObject = makeObject . unHTMLFontElement

instance IsHTMLElement HTMLFontElement
instance IsElementCSSInlineStyle HTMLFontElement
instance IsElementContentEditable HTMLFontElement
instance IsGlobalEventHandlers HTMLFontElement
instance IsHTMLOrSVGOrMathMLElement HTMLFontElement
instance IsElement HTMLFontElement
instance IsARIAMixin HTMLFontElement
instance IsARIANotifyMixin HTMLFontElement
instance IsAnimatable HTMLFontElement
instance IsChildNode HTMLFontElement
instance IsNonDocumentTypeChildNode HTMLFontElement
instance IsParentNode HTMLFontElement
instance IsSlottable HTMLFontElement
instance IsNode HTMLFontElement
instance IsEventTarget HTMLFontElement

instance IsGObject HTMLFontElement where
  typeGType _ = gTypeHTMLFontElement
  {-# INLINE typeGType #-}

noHTMLFontElement :: Maybe HTMLFontElement
noHTMLFontElement = Nothing
{-# INLINE noHTMLFontElement #-}

gTypeHTMLFontElement :: JSM GType
gTypeHTMLFontElement = GType . Object <$> jsg "HTMLFontElement"

-- | Functions for this interface are in "JSDOM.HTMLFormControlsCollection" (html).
newtype HTMLFormControlsCollection = HTMLFormControlsCollection { unHTMLFormControlsCollection :: JSVal }

instance PToJSVal HTMLFormControlsCollection where
  pToJSVal = unHTMLFormControlsCollection
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLFormControlsCollection where
  pFromJSVal = HTMLFormControlsCollection
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLFormControlsCollection where
  toJSVal = return . unHTMLFormControlsCollection
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLFormControlsCollection where
  fromJSVal v = fmap HTMLFormControlsCollection <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLFormControlsCollection
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLFormControlsCollection where
  makeObject = makeObject . unHTMLFormControlsCollection

instance IsHTMLCollection HTMLFormControlsCollection

instance IsGObject HTMLFormControlsCollection where
  typeGType _ = gTypeHTMLFormControlsCollection
  {-# INLINE typeGType #-}

noHTMLFormControlsCollection :: Maybe HTMLFormControlsCollection
noHTMLFormControlsCollection = Nothing
{-# INLINE noHTMLFormControlsCollection #-}

gTypeHTMLFormControlsCollection :: JSM GType
gTypeHTMLFormControlsCollection = GType . Object <$> jsg "HTMLFormControlsCollection"

-- | Functions for this interface are in "JSDOM.HTMLFormElement" (html).
newtype HTMLFormElement = HTMLFormElement { unHTMLFormElement :: JSVal }

instance PToJSVal HTMLFormElement where
  pToJSVal = unHTMLFormElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLFormElement where
  pFromJSVal = HTMLFormElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLFormElement where
  toJSVal = return . unHTMLFormElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLFormElement where
  fromJSVal v = fmap HTMLFormElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLFormElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLFormElement where
  makeObject = makeObject . unHTMLFormElement

instance IsHTMLElement HTMLFormElement
instance IsElementCSSInlineStyle HTMLFormElement
instance IsElementContentEditable HTMLFormElement
instance IsGlobalEventHandlers HTMLFormElement
instance IsHTMLOrSVGOrMathMLElement HTMLFormElement
instance IsElement HTMLFormElement
instance IsARIAMixin HTMLFormElement
instance IsARIANotifyMixin HTMLFormElement
instance IsAnimatable HTMLFormElement
instance IsChildNode HTMLFormElement
instance IsNonDocumentTypeChildNode HTMLFormElement
instance IsParentNode HTMLFormElement
instance IsSlottable HTMLFormElement
instance IsNode HTMLFormElement
instance IsEventTarget HTMLFormElement

instance IsGObject HTMLFormElement where
  typeGType _ = gTypeHTMLFormElement
  {-# INLINE typeGType #-}

noHTMLFormElement :: Maybe HTMLFormElement
noHTMLFormElement = Nothing
{-# INLINE noHTMLFormElement #-}

gTypeHTMLFormElement :: JSM GType
gTypeHTMLFormElement = GType . Object <$> jsg "HTMLFormElement"

-- | Functions for this interface are in "JSDOM.HTMLFrameElement" (html).
newtype HTMLFrameElement = HTMLFrameElement { unHTMLFrameElement :: JSVal }

instance PToJSVal HTMLFrameElement where
  pToJSVal = unHTMLFrameElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLFrameElement where
  pFromJSVal = HTMLFrameElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLFrameElement where
  toJSVal = return . unHTMLFrameElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLFrameElement where
  fromJSVal v = fmap HTMLFrameElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLFrameElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLFrameElement where
  makeObject = makeObject . unHTMLFrameElement

instance IsHTMLElement HTMLFrameElement
instance IsElementCSSInlineStyle HTMLFrameElement
instance IsElementContentEditable HTMLFrameElement
instance IsGlobalEventHandlers HTMLFrameElement
instance IsHTMLOrSVGOrMathMLElement HTMLFrameElement
instance IsElement HTMLFrameElement
instance IsARIAMixin HTMLFrameElement
instance IsARIANotifyMixin HTMLFrameElement
instance IsAnimatable HTMLFrameElement
instance IsChildNode HTMLFrameElement
instance IsNonDocumentTypeChildNode HTMLFrameElement
instance IsParentNode HTMLFrameElement
instance IsSlottable HTMLFrameElement
instance IsNode HTMLFrameElement
instance IsEventTarget HTMLFrameElement

instance IsGObject HTMLFrameElement where
  typeGType _ = gTypeHTMLFrameElement
  {-# INLINE typeGType #-}

noHTMLFrameElement :: Maybe HTMLFrameElement
noHTMLFrameElement = Nothing
{-# INLINE noHTMLFrameElement #-}

gTypeHTMLFrameElement :: JSM GType
gTypeHTMLFrameElement = GType . Object <$> jsg "HTMLFrameElement"

-- | Functions for this interface are in "JSDOM.HTMLFrameSetElement" (html).
newtype HTMLFrameSetElement = HTMLFrameSetElement { unHTMLFrameSetElement :: JSVal }

instance PToJSVal HTMLFrameSetElement where
  pToJSVal = unHTMLFrameSetElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLFrameSetElement where
  pFromJSVal = HTMLFrameSetElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLFrameSetElement where
  toJSVal = return . unHTMLFrameSetElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLFrameSetElement where
  fromJSVal v = fmap HTMLFrameSetElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLFrameSetElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLFrameSetElement where
  makeObject = makeObject . unHTMLFrameSetElement

instance IsWindowEventHandlers HTMLFrameSetElement
instance IsHTMLElement HTMLFrameSetElement
instance IsElementCSSInlineStyle HTMLFrameSetElement
instance IsElementContentEditable HTMLFrameSetElement
instance IsGlobalEventHandlers HTMLFrameSetElement
instance IsHTMLOrSVGOrMathMLElement HTMLFrameSetElement
instance IsElement HTMLFrameSetElement
instance IsARIAMixin HTMLFrameSetElement
instance IsARIANotifyMixin HTMLFrameSetElement
instance IsAnimatable HTMLFrameSetElement
instance IsChildNode HTMLFrameSetElement
instance IsNonDocumentTypeChildNode HTMLFrameSetElement
instance IsParentNode HTMLFrameSetElement
instance IsSlottable HTMLFrameSetElement
instance IsNode HTMLFrameSetElement
instance IsEventTarget HTMLFrameSetElement

instance IsGObject HTMLFrameSetElement where
  typeGType _ = gTypeHTMLFrameSetElement
  {-# INLINE typeGType #-}

noHTMLFrameSetElement :: Maybe HTMLFrameSetElement
noHTMLFrameSetElement = Nothing
{-# INLINE noHTMLFrameSetElement #-}

gTypeHTMLFrameSetElement :: JSM GType
gTypeHTMLFrameSetElement = GType . Object <$> jsg "HTMLFrameSetElement"

-- | Functions for this interface are in "JSDOM.HTMLHRElement" (html).
newtype HTMLHRElement = HTMLHRElement { unHTMLHRElement :: JSVal }

instance PToJSVal HTMLHRElement where
  pToJSVal = unHTMLHRElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLHRElement where
  pFromJSVal = HTMLHRElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLHRElement where
  toJSVal = return . unHTMLHRElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLHRElement where
  fromJSVal v = fmap HTMLHRElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLHRElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLHRElement where
  makeObject = makeObject . unHTMLHRElement

instance IsHTMLElement HTMLHRElement
instance IsElementCSSInlineStyle HTMLHRElement
instance IsElementContentEditable HTMLHRElement
instance IsGlobalEventHandlers HTMLHRElement
instance IsHTMLOrSVGOrMathMLElement HTMLHRElement
instance IsElement HTMLHRElement
instance IsARIAMixin HTMLHRElement
instance IsARIANotifyMixin HTMLHRElement
instance IsAnimatable HTMLHRElement
instance IsChildNode HTMLHRElement
instance IsNonDocumentTypeChildNode HTMLHRElement
instance IsParentNode HTMLHRElement
instance IsSlottable HTMLHRElement
instance IsNode HTMLHRElement
instance IsEventTarget HTMLHRElement

instance IsGObject HTMLHRElement where
  typeGType _ = gTypeHTMLHRElement
  {-# INLINE typeGType #-}

noHTMLHRElement :: Maybe HTMLHRElement
noHTMLHRElement = Nothing
{-# INLINE noHTMLHRElement #-}

gTypeHTMLHRElement :: JSM GType
gTypeHTMLHRElement = GType . Object <$> jsg "HTMLHRElement"

-- | Functions for this interface are in "JSDOM.HTMLHeadElement" (html).
newtype HTMLHeadElement = HTMLHeadElement { unHTMLHeadElement :: JSVal }

instance PToJSVal HTMLHeadElement where
  pToJSVal = unHTMLHeadElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLHeadElement where
  pFromJSVal = HTMLHeadElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLHeadElement where
  toJSVal = return . unHTMLHeadElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLHeadElement where
  fromJSVal v = fmap HTMLHeadElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLHeadElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLHeadElement where
  makeObject = makeObject . unHTMLHeadElement

instance IsHTMLElement HTMLHeadElement
instance IsElementCSSInlineStyle HTMLHeadElement
instance IsElementContentEditable HTMLHeadElement
instance IsGlobalEventHandlers HTMLHeadElement
instance IsHTMLOrSVGOrMathMLElement HTMLHeadElement
instance IsElement HTMLHeadElement
instance IsARIAMixin HTMLHeadElement
instance IsARIANotifyMixin HTMLHeadElement
instance IsAnimatable HTMLHeadElement
instance IsChildNode HTMLHeadElement
instance IsNonDocumentTypeChildNode HTMLHeadElement
instance IsParentNode HTMLHeadElement
instance IsSlottable HTMLHeadElement
instance IsNode HTMLHeadElement
instance IsEventTarget HTMLHeadElement

instance IsGObject HTMLHeadElement where
  typeGType _ = gTypeHTMLHeadElement
  {-# INLINE typeGType #-}

noHTMLHeadElement :: Maybe HTMLHeadElement
noHTMLHeadElement = Nothing
{-# INLINE noHTMLHeadElement #-}

gTypeHTMLHeadElement :: JSM GType
gTypeHTMLHeadElement = GType . Object <$> jsg "HTMLHeadElement"

-- | Functions for this interface are in "JSDOM.HTMLHeadingElement" (html).
newtype HTMLHeadingElement = HTMLHeadingElement { unHTMLHeadingElement :: JSVal }

instance PToJSVal HTMLHeadingElement where
  pToJSVal = unHTMLHeadingElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLHeadingElement where
  pFromJSVal = HTMLHeadingElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLHeadingElement where
  toJSVal = return . unHTMLHeadingElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLHeadingElement where
  fromJSVal v = fmap HTMLHeadingElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLHeadingElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLHeadingElement where
  makeObject = makeObject . unHTMLHeadingElement

instance IsHTMLElement HTMLHeadingElement
instance IsElementCSSInlineStyle HTMLHeadingElement
instance IsElementContentEditable HTMLHeadingElement
instance IsGlobalEventHandlers HTMLHeadingElement
instance IsHTMLOrSVGOrMathMLElement HTMLHeadingElement
instance IsElement HTMLHeadingElement
instance IsARIAMixin HTMLHeadingElement
instance IsARIANotifyMixin HTMLHeadingElement
instance IsAnimatable HTMLHeadingElement
instance IsChildNode HTMLHeadingElement
instance IsNonDocumentTypeChildNode HTMLHeadingElement
instance IsParentNode HTMLHeadingElement
instance IsSlottable HTMLHeadingElement
instance IsNode HTMLHeadingElement
instance IsEventTarget HTMLHeadingElement

instance IsGObject HTMLHeadingElement where
  typeGType _ = gTypeHTMLHeadingElement
  {-# INLINE typeGType #-}

noHTMLHeadingElement :: Maybe HTMLHeadingElement
noHTMLHeadingElement = Nothing
{-# INLINE noHTMLHeadingElement #-}

gTypeHTMLHeadingElement :: JSM GType
gTypeHTMLHeadingElement = GType . Object <$> jsg "HTMLHeadingElement"

-- | Functions for this interface are in "JSDOM.HTMLHtmlElement" (html).
newtype HTMLHtmlElement = HTMLHtmlElement { unHTMLHtmlElement :: JSVal }

instance PToJSVal HTMLHtmlElement where
  pToJSVal = unHTMLHtmlElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLHtmlElement where
  pFromJSVal = HTMLHtmlElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLHtmlElement where
  toJSVal = return . unHTMLHtmlElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLHtmlElement where
  fromJSVal v = fmap HTMLHtmlElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLHtmlElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLHtmlElement where
  makeObject = makeObject . unHTMLHtmlElement

instance IsHTMLElement HTMLHtmlElement
instance IsElementCSSInlineStyle HTMLHtmlElement
instance IsElementContentEditable HTMLHtmlElement
instance IsGlobalEventHandlers HTMLHtmlElement
instance IsHTMLOrSVGOrMathMLElement HTMLHtmlElement
instance IsElement HTMLHtmlElement
instance IsARIAMixin HTMLHtmlElement
instance IsARIANotifyMixin HTMLHtmlElement
instance IsAnimatable HTMLHtmlElement
instance IsChildNode HTMLHtmlElement
instance IsNonDocumentTypeChildNode HTMLHtmlElement
instance IsParentNode HTMLHtmlElement
instance IsSlottable HTMLHtmlElement
instance IsNode HTMLHtmlElement
instance IsEventTarget HTMLHtmlElement

instance IsGObject HTMLHtmlElement where
  typeGType _ = gTypeHTMLHtmlElement
  {-# INLINE typeGType #-}

noHTMLHtmlElement :: Maybe HTMLHtmlElement
noHTMLHtmlElement = Nothing
{-# INLINE noHTMLHtmlElement #-}

gTypeHTMLHtmlElement :: JSM GType
gTypeHTMLHtmlElement = GType . Object <$> jsg "HTMLHtmlElement"

-- | Functions for this interface are in "JSDOM.HTMLHyperlinkElementUtils" (html).
newtype HTMLHyperlinkElementUtils = HTMLHyperlinkElementUtils { unHTMLHyperlinkElementUtils :: JSVal }

instance PToJSVal HTMLHyperlinkElementUtils where
  pToJSVal = unHTMLHyperlinkElementUtils
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLHyperlinkElementUtils where
  pFromJSVal = HTMLHyperlinkElementUtils
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLHyperlinkElementUtils where
  toJSVal = return . unHTMLHyperlinkElementUtils
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLHyperlinkElementUtils where
  fromJSVal v = fmap HTMLHyperlinkElementUtils <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLHyperlinkElementUtils
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLHyperlinkElementUtils where
  makeObject = makeObject . unHTMLHyperlinkElementUtils

class (IsGObject o) => IsHTMLHyperlinkElementUtils o
toHTMLHyperlinkElementUtils :: IsHTMLHyperlinkElementUtils o => o -> HTMLHyperlinkElementUtils
toHTMLHyperlinkElementUtils = HTMLHyperlinkElementUtils . coerce

instance IsHTMLHyperlinkElementUtils HTMLHyperlinkElementUtils

instance IsGObject HTMLHyperlinkElementUtils where
  typeGType _ = gTypeHTMLHyperlinkElementUtils
  {-# INLINE typeGType #-}

noHTMLHyperlinkElementUtils :: Maybe HTMLHyperlinkElementUtils
noHTMLHyperlinkElementUtils = Nothing
{-# INLINE noHTMLHyperlinkElementUtils #-}

gTypeHTMLHyperlinkElementUtils :: JSM GType
gTypeHTMLHyperlinkElementUtils = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.HTMLIFrameElement" (html).
newtype HTMLIFrameElement = HTMLIFrameElement { unHTMLIFrameElement :: JSVal }

instance PToJSVal HTMLIFrameElement where
  pToJSVal = unHTMLIFrameElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLIFrameElement where
  pFromJSVal = HTMLIFrameElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLIFrameElement where
  toJSVal = return . unHTMLIFrameElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLIFrameElement where
  fromJSVal v = fmap HTMLIFrameElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLIFrameElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLIFrameElement where
  makeObject = makeObject . unHTMLIFrameElement

instance IsHTMLElement HTMLIFrameElement
instance IsElementCSSInlineStyle HTMLIFrameElement
instance IsElementContentEditable HTMLIFrameElement
instance IsGlobalEventHandlers HTMLIFrameElement
instance IsHTMLOrSVGOrMathMLElement HTMLIFrameElement
instance IsElement HTMLIFrameElement
instance IsARIAMixin HTMLIFrameElement
instance IsARIANotifyMixin HTMLIFrameElement
instance IsAnimatable HTMLIFrameElement
instance IsChildNode HTMLIFrameElement
instance IsNonDocumentTypeChildNode HTMLIFrameElement
instance IsParentNode HTMLIFrameElement
instance IsSlottable HTMLIFrameElement
instance IsNode HTMLIFrameElement
instance IsEventTarget HTMLIFrameElement

instance IsGObject HTMLIFrameElement where
  typeGType _ = gTypeHTMLIFrameElement
  {-# INLINE typeGType #-}

noHTMLIFrameElement :: Maybe HTMLIFrameElement
noHTMLIFrameElement = Nothing
{-# INLINE noHTMLIFrameElement #-}

gTypeHTMLIFrameElement :: JSM GType
gTypeHTMLIFrameElement = GType . Object <$> jsg "HTMLIFrameElement"

-- | Functions for this interface are in "JSDOM.HTMLImageElement" (html).
newtype HTMLImageElement = HTMLImageElement { unHTMLImageElement :: JSVal }

instance PToJSVal HTMLImageElement where
  pToJSVal = unHTMLImageElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLImageElement where
  pFromJSVal = HTMLImageElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLImageElement where
  toJSVal = return . unHTMLImageElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLImageElement where
  fromJSVal v = fmap HTMLImageElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLImageElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLImageElement where
  makeObject = makeObject . unHTMLImageElement

instance IsHTMLElement HTMLImageElement
instance IsElementCSSInlineStyle HTMLImageElement
instance IsElementContentEditable HTMLImageElement
instance IsGlobalEventHandlers HTMLImageElement
instance IsHTMLOrSVGOrMathMLElement HTMLImageElement
instance IsElement HTMLImageElement
instance IsARIAMixin HTMLImageElement
instance IsARIANotifyMixin HTMLImageElement
instance IsAnimatable HTMLImageElement
instance IsChildNode HTMLImageElement
instance IsNonDocumentTypeChildNode HTMLImageElement
instance IsParentNode HTMLImageElement
instance IsSlottable HTMLImageElement
instance IsNode HTMLImageElement
instance IsEventTarget HTMLImageElement

instance IsGObject HTMLImageElement where
  typeGType _ = gTypeHTMLImageElement
  {-# INLINE typeGType #-}

noHTMLImageElement :: Maybe HTMLImageElement
noHTMLImageElement = Nothing
{-# INLINE noHTMLImageElement #-}

gTypeHTMLImageElement :: JSM GType
gTypeHTMLImageElement = GType . Object <$> jsg "HTMLImageElement"

-- | Functions for this interface are in "JSDOM.HTMLInputElement" (html).
newtype HTMLInputElement = HTMLInputElement { unHTMLInputElement :: JSVal }

instance PToJSVal HTMLInputElement where
  pToJSVal = unHTMLInputElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLInputElement where
  pFromJSVal = HTMLInputElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLInputElement where
  toJSVal = return . unHTMLInputElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLInputElement where
  fromJSVal v = fmap HTMLInputElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLInputElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLInputElement where
  makeObject = makeObject . unHTMLInputElement

instance IsPopoverTargetAttributes HTMLInputElement
instance IsHTMLElement HTMLInputElement
instance IsElementCSSInlineStyle HTMLInputElement
instance IsElementContentEditable HTMLInputElement
instance IsGlobalEventHandlers HTMLInputElement
instance IsHTMLOrSVGOrMathMLElement HTMLInputElement
instance IsElement HTMLInputElement
instance IsARIAMixin HTMLInputElement
instance IsARIANotifyMixin HTMLInputElement
instance IsAnimatable HTMLInputElement
instance IsChildNode HTMLInputElement
instance IsNonDocumentTypeChildNode HTMLInputElement
instance IsParentNode HTMLInputElement
instance IsSlottable HTMLInputElement
instance IsNode HTMLInputElement
instance IsEventTarget HTMLInputElement

instance IsGObject HTMLInputElement where
  typeGType _ = gTypeHTMLInputElement
  {-# INLINE typeGType #-}

noHTMLInputElement :: Maybe HTMLInputElement
noHTMLInputElement = Nothing
{-# INLINE noHTMLInputElement #-}

gTypeHTMLInputElement :: JSM GType
gTypeHTMLInputElement = GType . Object <$> jsg "HTMLInputElement"

-- | Functions for this interface are in "JSDOM.HTMLLIElement" (html).
newtype HTMLLIElement = HTMLLIElement { unHTMLLIElement :: JSVal }

instance PToJSVal HTMLLIElement where
  pToJSVal = unHTMLLIElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLLIElement where
  pFromJSVal = HTMLLIElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLLIElement where
  toJSVal = return . unHTMLLIElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLLIElement where
  fromJSVal v = fmap HTMLLIElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLLIElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLLIElement where
  makeObject = makeObject . unHTMLLIElement

instance IsHTMLElement HTMLLIElement
instance IsElementCSSInlineStyle HTMLLIElement
instance IsElementContentEditable HTMLLIElement
instance IsGlobalEventHandlers HTMLLIElement
instance IsHTMLOrSVGOrMathMLElement HTMLLIElement
instance IsElement HTMLLIElement
instance IsARIAMixin HTMLLIElement
instance IsARIANotifyMixin HTMLLIElement
instance IsAnimatable HTMLLIElement
instance IsChildNode HTMLLIElement
instance IsNonDocumentTypeChildNode HTMLLIElement
instance IsParentNode HTMLLIElement
instance IsSlottable HTMLLIElement
instance IsNode HTMLLIElement
instance IsEventTarget HTMLLIElement

instance IsGObject HTMLLIElement where
  typeGType _ = gTypeHTMLLIElement
  {-# INLINE typeGType #-}

noHTMLLIElement :: Maybe HTMLLIElement
noHTMLLIElement = Nothing
{-# INLINE noHTMLLIElement #-}

gTypeHTMLLIElement :: JSM GType
gTypeHTMLLIElement = GType . Object <$> jsg "HTMLLIElement"

-- | Functions for this interface are in "JSDOM.HTMLLabelElement" (html).
newtype HTMLLabelElement = HTMLLabelElement { unHTMLLabelElement :: JSVal }

instance PToJSVal HTMLLabelElement where
  pToJSVal = unHTMLLabelElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLLabelElement where
  pFromJSVal = HTMLLabelElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLLabelElement where
  toJSVal = return . unHTMLLabelElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLLabelElement where
  fromJSVal v = fmap HTMLLabelElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLLabelElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLLabelElement where
  makeObject = makeObject . unHTMLLabelElement

instance IsHTMLElement HTMLLabelElement
instance IsElementCSSInlineStyle HTMLLabelElement
instance IsElementContentEditable HTMLLabelElement
instance IsGlobalEventHandlers HTMLLabelElement
instance IsHTMLOrSVGOrMathMLElement HTMLLabelElement
instance IsElement HTMLLabelElement
instance IsARIAMixin HTMLLabelElement
instance IsARIANotifyMixin HTMLLabelElement
instance IsAnimatable HTMLLabelElement
instance IsChildNode HTMLLabelElement
instance IsNonDocumentTypeChildNode HTMLLabelElement
instance IsParentNode HTMLLabelElement
instance IsSlottable HTMLLabelElement
instance IsNode HTMLLabelElement
instance IsEventTarget HTMLLabelElement

instance IsGObject HTMLLabelElement where
  typeGType _ = gTypeHTMLLabelElement
  {-# INLINE typeGType #-}

noHTMLLabelElement :: Maybe HTMLLabelElement
noHTMLLabelElement = Nothing
{-# INLINE noHTMLLabelElement #-}

gTypeHTMLLabelElement :: JSM GType
gTypeHTMLLabelElement = GType . Object <$> jsg "HTMLLabelElement"

-- | Functions for this interface are in "JSDOM.HTMLLegendElement" (html).
newtype HTMLLegendElement = HTMLLegendElement { unHTMLLegendElement :: JSVal }

instance PToJSVal HTMLLegendElement where
  pToJSVal = unHTMLLegendElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLLegendElement where
  pFromJSVal = HTMLLegendElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLLegendElement where
  toJSVal = return . unHTMLLegendElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLLegendElement where
  fromJSVal v = fmap HTMLLegendElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLLegendElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLLegendElement where
  makeObject = makeObject . unHTMLLegendElement

instance IsHTMLElement HTMLLegendElement
instance IsElementCSSInlineStyle HTMLLegendElement
instance IsElementContentEditable HTMLLegendElement
instance IsGlobalEventHandlers HTMLLegendElement
instance IsHTMLOrSVGOrMathMLElement HTMLLegendElement
instance IsElement HTMLLegendElement
instance IsARIAMixin HTMLLegendElement
instance IsARIANotifyMixin HTMLLegendElement
instance IsAnimatable HTMLLegendElement
instance IsChildNode HTMLLegendElement
instance IsNonDocumentTypeChildNode HTMLLegendElement
instance IsParentNode HTMLLegendElement
instance IsSlottable HTMLLegendElement
instance IsNode HTMLLegendElement
instance IsEventTarget HTMLLegendElement

instance IsGObject HTMLLegendElement where
  typeGType _ = gTypeHTMLLegendElement
  {-# INLINE typeGType #-}

noHTMLLegendElement :: Maybe HTMLLegendElement
noHTMLLegendElement = Nothing
{-# INLINE noHTMLLegendElement #-}

gTypeHTMLLegendElement :: JSM GType
gTypeHTMLLegendElement = GType . Object <$> jsg "HTMLLegendElement"

-- | Functions for this interface are in "JSDOM.HTMLLinkElement" (html).
newtype HTMLLinkElement = HTMLLinkElement { unHTMLLinkElement :: JSVal }

instance PToJSVal HTMLLinkElement where
  pToJSVal = unHTMLLinkElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLLinkElement where
  pFromJSVal = HTMLLinkElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLLinkElement where
  toJSVal = return . unHTMLLinkElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLLinkElement where
  fromJSVal v = fmap HTMLLinkElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLLinkElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLLinkElement where
  makeObject = makeObject . unHTMLLinkElement

instance IsLinkStyle HTMLLinkElement
instance IsHTMLElement HTMLLinkElement
instance IsElementCSSInlineStyle HTMLLinkElement
instance IsElementContentEditable HTMLLinkElement
instance IsGlobalEventHandlers HTMLLinkElement
instance IsHTMLOrSVGOrMathMLElement HTMLLinkElement
instance IsElement HTMLLinkElement
instance IsARIAMixin HTMLLinkElement
instance IsARIANotifyMixin HTMLLinkElement
instance IsAnimatable HTMLLinkElement
instance IsChildNode HTMLLinkElement
instance IsNonDocumentTypeChildNode HTMLLinkElement
instance IsParentNode HTMLLinkElement
instance IsSlottable HTMLLinkElement
instance IsNode HTMLLinkElement
instance IsEventTarget HTMLLinkElement

instance IsGObject HTMLLinkElement where
  typeGType _ = gTypeHTMLLinkElement
  {-# INLINE typeGType #-}

noHTMLLinkElement :: Maybe HTMLLinkElement
noHTMLLinkElement = Nothing
{-# INLINE noHTMLLinkElement #-}

gTypeHTMLLinkElement :: JSM GType
gTypeHTMLLinkElement = GType . Object <$> jsg "HTMLLinkElement"

-- | Functions for this interface are in "JSDOM.HTMLMapElement" (html).
newtype HTMLMapElement = HTMLMapElement { unHTMLMapElement :: JSVal }

instance PToJSVal HTMLMapElement where
  pToJSVal = unHTMLMapElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLMapElement where
  pFromJSVal = HTMLMapElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLMapElement where
  toJSVal = return . unHTMLMapElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLMapElement where
  fromJSVal v = fmap HTMLMapElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLMapElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLMapElement where
  makeObject = makeObject . unHTMLMapElement

instance IsHTMLElement HTMLMapElement
instance IsElementCSSInlineStyle HTMLMapElement
instance IsElementContentEditable HTMLMapElement
instance IsGlobalEventHandlers HTMLMapElement
instance IsHTMLOrSVGOrMathMLElement HTMLMapElement
instance IsElement HTMLMapElement
instance IsARIAMixin HTMLMapElement
instance IsARIANotifyMixin HTMLMapElement
instance IsAnimatable HTMLMapElement
instance IsChildNode HTMLMapElement
instance IsNonDocumentTypeChildNode HTMLMapElement
instance IsParentNode HTMLMapElement
instance IsSlottable HTMLMapElement
instance IsNode HTMLMapElement
instance IsEventTarget HTMLMapElement

instance IsGObject HTMLMapElement where
  typeGType _ = gTypeHTMLMapElement
  {-# INLINE typeGType #-}

noHTMLMapElement :: Maybe HTMLMapElement
noHTMLMapElement = Nothing
{-# INLINE noHTMLMapElement #-}

gTypeHTMLMapElement :: JSM GType
gTypeHTMLMapElement = GType . Object <$> jsg "HTMLMapElement"

-- | Functions for this interface are in "JSDOM.HTMLMarqueeElement" (html).
newtype HTMLMarqueeElement = HTMLMarqueeElement { unHTMLMarqueeElement :: JSVal }

instance PToJSVal HTMLMarqueeElement where
  pToJSVal = unHTMLMarqueeElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLMarqueeElement where
  pFromJSVal = HTMLMarqueeElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLMarqueeElement where
  toJSVal = return . unHTMLMarqueeElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLMarqueeElement where
  fromJSVal v = fmap HTMLMarqueeElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLMarqueeElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLMarqueeElement where
  makeObject = makeObject . unHTMLMarqueeElement

instance IsHTMLElement HTMLMarqueeElement
instance IsElementCSSInlineStyle HTMLMarqueeElement
instance IsElementContentEditable HTMLMarqueeElement
instance IsGlobalEventHandlers HTMLMarqueeElement
instance IsHTMLOrSVGOrMathMLElement HTMLMarqueeElement
instance IsElement HTMLMarqueeElement
instance IsARIAMixin HTMLMarqueeElement
instance IsARIANotifyMixin HTMLMarqueeElement
instance IsAnimatable HTMLMarqueeElement
instance IsChildNode HTMLMarqueeElement
instance IsNonDocumentTypeChildNode HTMLMarqueeElement
instance IsParentNode HTMLMarqueeElement
instance IsSlottable HTMLMarqueeElement
instance IsNode HTMLMarqueeElement
instance IsEventTarget HTMLMarqueeElement

instance IsGObject HTMLMarqueeElement where
  typeGType _ = gTypeHTMLMarqueeElement
  {-# INLINE typeGType #-}

noHTMLMarqueeElement :: Maybe HTMLMarqueeElement
noHTMLMarqueeElement = Nothing
{-# INLINE noHTMLMarqueeElement #-}

gTypeHTMLMarqueeElement :: JSM GType
gTypeHTMLMarqueeElement = GType . Object <$> jsg "HTMLMarqueeElement"

-- | Functions for this interface are in "JSDOM.HTMLMediaElement" (html).
newtype HTMLMediaElement = HTMLMediaElement { unHTMLMediaElement :: JSVal }

instance PToJSVal HTMLMediaElement where
  pToJSVal = unHTMLMediaElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLMediaElement where
  pFromJSVal = HTMLMediaElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLMediaElement where
  toJSVal = return . unHTMLMediaElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLMediaElement where
  fromJSVal v = fmap HTMLMediaElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLMediaElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLMediaElement where
  makeObject = makeObject . unHTMLMediaElement

class (IsHTMLElement o, IsGObject o) => IsHTMLMediaElement o
toHTMLMediaElement :: IsHTMLMediaElement o => o -> HTMLMediaElement
toHTMLMediaElement = HTMLMediaElement . coerce

instance IsHTMLMediaElement HTMLMediaElement
instance IsHTMLElement HTMLMediaElement
instance IsElementCSSInlineStyle HTMLMediaElement
instance IsElementContentEditable HTMLMediaElement
instance IsGlobalEventHandlers HTMLMediaElement
instance IsHTMLOrSVGOrMathMLElement HTMLMediaElement
instance IsElement HTMLMediaElement
instance IsARIAMixin HTMLMediaElement
instance IsARIANotifyMixin HTMLMediaElement
instance IsAnimatable HTMLMediaElement
instance IsChildNode HTMLMediaElement
instance IsNonDocumentTypeChildNode HTMLMediaElement
instance IsParentNode HTMLMediaElement
instance IsSlottable HTMLMediaElement
instance IsNode HTMLMediaElement
instance IsEventTarget HTMLMediaElement

instance IsGObject HTMLMediaElement where
  typeGType _ = gTypeHTMLMediaElement
  {-# INLINE typeGType #-}

noHTMLMediaElement :: Maybe HTMLMediaElement
noHTMLMediaElement = Nothing
{-# INLINE noHTMLMediaElement #-}

gTypeHTMLMediaElement :: JSM GType
gTypeHTMLMediaElement = GType . Object <$> jsg "HTMLMediaElement"

-- | Functions for this interface are in "JSDOM.HTMLMenuElement" (html).
newtype HTMLMenuElement = HTMLMenuElement { unHTMLMenuElement :: JSVal }

instance PToJSVal HTMLMenuElement where
  pToJSVal = unHTMLMenuElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLMenuElement where
  pFromJSVal = HTMLMenuElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLMenuElement where
  toJSVal = return . unHTMLMenuElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLMenuElement where
  fromJSVal v = fmap HTMLMenuElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLMenuElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLMenuElement where
  makeObject = makeObject . unHTMLMenuElement

instance IsHTMLElement HTMLMenuElement
instance IsElementCSSInlineStyle HTMLMenuElement
instance IsElementContentEditable HTMLMenuElement
instance IsGlobalEventHandlers HTMLMenuElement
instance IsHTMLOrSVGOrMathMLElement HTMLMenuElement
instance IsElement HTMLMenuElement
instance IsARIAMixin HTMLMenuElement
instance IsARIANotifyMixin HTMLMenuElement
instance IsAnimatable HTMLMenuElement
instance IsChildNode HTMLMenuElement
instance IsNonDocumentTypeChildNode HTMLMenuElement
instance IsParentNode HTMLMenuElement
instance IsSlottable HTMLMenuElement
instance IsNode HTMLMenuElement
instance IsEventTarget HTMLMenuElement

instance IsGObject HTMLMenuElement where
  typeGType _ = gTypeHTMLMenuElement
  {-# INLINE typeGType #-}

noHTMLMenuElement :: Maybe HTMLMenuElement
noHTMLMenuElement = Nothing
{-# INLINE noHTMLMenuElement #-}

gTypeHTMLMenuElement :: JSM GType
gTypeHTMLMenuElement = GType . Object <$> jsg "HTMLMenuElement"

-- | Functions for this interface are in "JSDOM.HTMLMetaElement" (html).
newtype HTMLMetaElement = HTMLMetaElement { unHTMLMetaElement :: JSVal }

instance PToJSVal HTMLMetaElement where
  pToJSVal = unHTMLMetaElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLMetaElement where
  pFromJSVal = HTMLMetaElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLMetaElement where
  toJSVal = return . unHTMLMetaElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLMetaElement where
  fromJSVal v = fmap HTMLMetaElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLMetaElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLMetaElement where
  makeObject = makeObject . unHTMLMetaElement

instance IsHTMLElement HTMLMetaElement
instance IsElementCSSInlineStyle HTMLMetaElement
instance IsElementContentEditable HTMLMetaElement
instance IsGlobalEventHandlers HTMLMetaElement
instance IsHTMLOrSVGOrMathMLElement HTMLMetaElement
instance IsElement HTMLMetaElement
instance IsARIAMixin HTMLMetaElement
instance IsARIANotifyMixin HTMLMetaElement
instance IsAnimatable HTMLMetaElement
instance IsChildNode HTMLMetaElement
instance IsNonDocumentTypeChildNode HTMLMetaElement
instance IsParentNode HTMLMetaElement
instance IsSlottable HTMLMetaElement
instance IsNode HTMLMetaElement
instance IsEventTarget HTMLMetaElement

instance IsGObject HTMLMetaElement where
  typeGType _ = gTypeHTMLMetaElement
  {-# INLINE typeGType #-}

noHTMLMetaElement :: Maybe HTMLMetaElement
noHTMLMetaElement = Nothing
{-# INLINE noHTMLMetaElement #-}

gTypeHTMLMetaElement :: JSM GType
gTypeHTMLMetaElement = GType . Object <$> jsg "HTMLMetaElement"

-- | Functions for this interface are in "JSDOM.HTMLMeterElement" (html).
newtype HTMLMeterElement = HTMLMeterElement { unHTMLMeterElement :: JSVal }

instance PToJSVal HTMLMeterElement where
  pToJSVal = unHTMLMeterElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLMeterElement where
  pFromJSVal = HTMLMeterElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLMeterElement where
  toJSVal = return . unHTMLMeterElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLMeterElement where
  fromJSVal v = fmap HTMLMeterElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLMeterElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLMeterElement where
  makeObject = makeObject . unHTMLMeterElement

instance IsHTMLElement HTMLMeterElement
instance IsElementCSSInlineStyle HTMLMeterElement
instance IsElementContentEditable HTMLMeterElement
instance IsGlobalEventHandlers HTMLMeterElement
instance IsHTMLOrSVGOrMathMLElement HTMLMeterElement
instance IsElement HTMLMeterElement
instance IsARIAMixin HTMLMeterElement
instance IsARIANotifyMixin HTMLMeterElement
instance IsAnimatable HTMLMeterElement
instance IsChildNode HTMLMeterElement
instance IsNonDocumentTypeChildNode HTMLMeterElement
instance IsParentNode HTMLMeterElement
instance IsSlottable HTMLMeterElement
instance IsNode HTMLMeterElement
instance IsEventTarget HTMLMeterElement

instance IsGObject HTMLMeterElement where
  typeGType _ = gTypeHTMLMeterElement
  {-# INLINE typeGType #-}

noHTMLMeterElement :: Maybe HTMLMeterElement
noHTMLMeterElement = Nothing
{-# INLINE noHTMLMeterElement #-}

gTypeHTMLMeterElement :: JSM GType
gTypeHTMLMeterElement = GType . Object <$> jsg "HTMLMeterElement"

-- | Functions for this interface are in "JSDOM.HTMLModElement" (html).
newtype HTMLModElement = HTMLModElement { unHTMLModElement :: JSVal }

instance PToJSVal HTMLModElement where
  pToJSVal = unHTMLModElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLModElement where
  pFromJSVal = HTMLModElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLModElement where
  toJSVal = return . unHTMLModElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLModElement where
  fromJSVal v = fmap HTMLModElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLModElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLModElement where
  makeObject = makeObject . unHTMLModElement

instance IsHTMLElement HTMLModElement
instance IsElementCSSInlineStyle HTMLModElement
instance IsElementContentEditable HTMLModElement
instance IsGlobalEventHandlers HTMLModElement
instance IsHTMLOrSVGOrMathMLElement HTMLModElement
instance IsElement HTMLModElement
instance IsARIAMixin HTMLModElement
instance IsARIANotifyMixin HTMLModElement
instance IsAnimatable HTMLModElement
instance IsChildNode HTMLModElement
instance IsNonDocumentTypeChildNode HTMLModElement
instance IsParentNode HTMLModElement
instance IsSlottable HTMLModElement
instance IsNode HTMLModElement
instance IsEventTarget HTMLModElement

instance IsGObject HTMLModElement where
  typeGType _ = gTypeHTMLModElement
  {-# INLINE typeGType #-}

noHTMLModElement :: Maybe HTMLModElement
noHTMLModElement = Nothing
{-# INLINE noHTMLModElement #-}

gTypeHTMLModElement :: JSM GType
gTypeHTMLModElement = GType . Object <$> jsg "HTMLModElement"

-- | Functions for this interface are in "JSDOM.HTMLOListElement" (html).
newtype HTMLOListElement = HTMLOListElement { unHTMLOListElement :: JSVal }

instance PToJSVal HTMLOListElement where
  pToJSVal = unHTMLOListElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLOListElement where
  pFromJSVal = HTMLOListElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLOListElement where
  toJSVal = return . unHTMLOListElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLOListElement where
  fromJSVal v = fmap HTMLOListElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLOListElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLOListElement where
  makeObject = makeObject . unHTMLOListElement

instance IsHTMLElement HTMLOListElement
instance IsElementCSSInlineStyle HTMLOListElement
instance IsElementContentEditable HTMLOListElement
instance IsGlobalEventHandlers HTMLOListElement
instance IsHTMLOrSVGOrMathMLElement HTMLOListElement
instance IsElement HTMLOListElement
instance IsARIAMixin HTMLOListElement
instance IsARIANotifyMixin HTMLOListElement
instance IsAnimatable HTMLOListElement
instance IsChildNode HTMLOListElement
instance IsNonDocumentTypeChildNode HTMLOListElement
instance IsParentNode HTMLOListElement
instance IsSlottable HTMLOListElement
instance IsNode HTMLOListElement
instance IsEventTarget HTMLOListElement

instance IsGObject HTMLOListElement where
  typeGType _ = gTypeHTMLOListElement
  {-# INLINE typeGType #-}

noHTMLOListElement :: Maybe HTMLOListElement
noHTMLOListElement = Nothing
{-# INLINE noHTMLOListElement #-}

gTypeHTMLOListElement :: JSM GType
gTypeHTMLOListElement = GType . Object <$> jsg "HTMLOListElement"

-- | Functions for this interface are in "JSDOM.HTMLObjectElement" (html).
newtype HTMLObjectElement = HTMLObjectElement { unHTMLObjectElement :: JSVal }

instance PToJSVal HTMLObjectElement where
  pToJSVal = unHTMLObjectElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLObjectElement where
  pFromJSVal = HTMLObjectElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLObjectElement where
  toJSVal = return . unHTMLObjectElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLObjectElement where
  fromJSVal v = fmap HTMLObjectElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLObjectElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLObjectElement where
  makeObject = makeObject . unHTMLObjectElement

instance IsHTMLElement HTMLObjectElement
instance IsElementCSSInlineStyle HTMLObjectElement
instance IsElementContentEditable HTMLObjectElement
instance IsGlobalEventHandlers HTMLObjectElement
instance IsHTMLOrSVGOrMathMLElement HTMLObjectElement
instance IsElement HTMLObjectElement
instance IsARIAMixin HTMLObjectElement
instance IsARIANotifyMixin HTMLObjectElement
instance IsAnimatable HTMLObjectElement
instance IsChildNode HTMLObjectElement
instance IsNonDocumentTypeChildNode HTMLObjectElement
instance IsParentNode HTMLObjectElement
instance IsSlottable HTMLObjectElement
instance IsNode HTMLObjectElement
instance IsEventTarget HTMLObjectElement

instance IsGObject HTMLObjectElement where
  typeGType _ = gTypeHTMLObjectElement
  {-# INLINE typeGType #-}

noHTMLObjectElement :: Maybe HTMLObjectElement
noHTMLObjectElement = Nothing
{-# INLINE noHTMLObjectElement #-}

gTypeHTMLObjectElement :: JSM GType
gTypeHTMLObjectElement = GType . Object <$> jsg "HTMLObjectElement"

-- | Functions for this interface are in "JSDOM.HTMLOptGroupElement" (html).
newtype HTMLOptGroupElement = HTMLOptGroupElement { unHTMLOptGroupElement :: JSVal }

instance PToJSVal HTMLOptGroupElement where
  pToJSVal = unHTMLOptGroupElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLOptGroupElement where
  pFromJSVal = HTMLOptGroupElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLOptGroupElement where
  toJSVal = return . unHTMLOptGroupElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLOptGroupElement where
  fromJSVal v = fmap HTMLOptGroupElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLOptGroupElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLOptGroupElement where
  makeObject = makeObject . unHTMLOptGroupElement

instance IsHTMLElement HTMLOptGroupElement
instance IsElementCSSInlineStyle HTMLOptGroupElement
instance IsElementContentEditable HTMLOptGroupElement
instance IsGlobalEventHandlers HTMLOptGroupElement
instance IsHTMLOrSVGOrMathMLElement HTMLOptGroupElement
instance IsElement HTMLOptGroupElement
instance IsARIAMixin HTMLOptGroupElement
instance IsARIANotifyMixin HTMLOptGroupElement
instance IsAnimatable HTMLOptGroupElement
instance IsChildNode HTMLOptGroupElement
instance IsNonDocumentTypeChildNode HTMLOptGroupElement
instance IsParentNode HTMLOptGroupElement
instance IsSlottable HTMLOptGroupElement
instance IsNode HTMLOptGroupElement
instance IsEventTarget HTMLOptGroupElement

instance IsGObject HTMLOptGroupElement where
  typeGType _ = gTypeHTMLOptGroupElement
  {-# INLINE typeGType #-}

noHTMLOptGroupElement :: Maybe HTMLOptGroupElement
noHTMLOptGroupElement = Nothing
{-# INLINE noHTMLOptGroupElement #-}

gTypeHTMLOptGroupElement :: JSM GType
gTypeHTMLOptGroupElement = GType . Object <$> jsg "HTMLOptGroupElement"

-- | Functions for this interface are in "JSDOM.HTMLOptionElement" (html).
newtype HTMLOptionElement = HTMLOptionElement { unHTMLOptionElement :: JSVal }

instance PToJSVal HTMLOptionElement where
  pToJSVal = unHTMLOptionElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLOptionElement where
  pFromJSVal = HTMLOptionElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLOptionElement where
  toJSVal = return . unHTMLOptionElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLOptionElement where
  fromJSVal v = fmap HTMLOptionElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLOptionElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLOptionElement where
  makeObject = makeObject . unHTMLOptionElement

instance IsHTMLElement HTMLOptionElement
instance IsElementCSSInlineStyle HTMLOptionElement
instance IsElementContentEditable HTMLOptionElement
instance IsGlobalEventHandlers HTMLOptionElement
instance IsHTMLOrSVGOrMathMLElement HTMLOptionElement
instance IsElement HTMLOptionElement
instance IsARIAMixin HTMLOptionElement
instance IsARIANotifyMixin HTMLOptionElement
instance IsAnimatable HTMLOptionElement
instance IsChildNode HTMLOptionElement
instance IsNonDocumentTypeChildNode HTMLOptionElement
instance IsParentNode HTMLOptionElement
instance IsSlottable HTMLOptionElement
instance IsNode HTMLOptionElement
instance IsEventTarget HTMLOptionElement

instance IsGObject HTMLOptionElement where
  typeGType _ = gTypeHTMLOptionElement
  {-# INLINE typeGType #-}

noHTMLOptionElement :: Maybe HTMLOptionElement
noHTMLOptionElement = Nothing
{-# INLINE noHTMLOptionElement #-}

gTypeHTMLOptionElement :: JSM GType
gTypeHTMLOptionElement = GType . Object <$> jsg "HTMLOptionElement"

-- | Functions for this interface are in "JSDOM.HTMLOptionsCollection" (html).
newtype HTMLOptionsCollection = HTMLOptionsCollection { unHTMLOptionsCollection :: JSVal }

instance PToJSVal HTMLOptionsCollection where
  pToJSVal = unHTMLOptionsCollection
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLOptionsCollection where
  pFromJSVal = HTMLOptionsCollection
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLOptionsCollection where
  toJSVal = return . unHTMLOptionsCollection
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLOptionsCollection where
  fromJSVal v = fmap HTMLOptionsCollection <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLOptionsCollection
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLOptionsCollection where
  makeObject = makeObject . unHTMLOptionsCollection

instance IsHTMLCollection HTMLOptionsCollection

instance IsGObject HTMLOptionsCollection where
  typeGType _ = gTypeHTMLOptionsCollection
  {-# INLINE typeGType #-}

noHTMLOptionsCollection :: Maybe HTMLOptionsCollection
noHTMLOptionsCollection = Nothing
{-# INLINE noHTMLOptionsCollection #-}

gTypeHTMLOptionsCollection :: JSM GType
gTypeHTMLOptionsCollection = GType . Object <$> jsg "HTMLOptionsCollection"

-- | Functions for this interface are in "JSDOM.HTMLOrSVGOrMathMLElement" (html).
newtype HTMLOrSVGOrMathMLElement = HTMLOrSVGOrMathMLElement { unHTMLOrSVGOrMathMLElement :: JSVal }

instance PToJSVal HTMLOrSVGOrMathMLElement where
  pToJSVal = unHTMLOrSVGOrMathMLElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLOrSVGOrMathMLElement where
  pFromJSVal = HTMLOrSVGOrMathMLElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLOrSVGOrMathMLElement where
  toJSVal = return . unHTMLOrSVGOrMathMLElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLOrSVGOrMathMLElement where
  fromJSVal v = fmap HTMLOrSVGOrMathMLElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLOrSVGOrMathMLElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLOrSVGOrMathMLElement where
  makeObject = makeObject . unHTMLOrSVGOrMathMLElement

class (IsGObject o) => IsHTMLOrSVGOrMathMLElement o
toHTMLOrSVGOrMathMLElement :: IsHTMLOrSVGOrMathMLElement o => o -> HTMLOrSVGOrMathMLElement
toHTMLOrSVGOrMathMLElement = HTMLOrSVGOrMathMLElement . coerce

instance IsHTMLOrSVGOrMathMLElement HTMLOrSVGOrMathMLElement

instance IsGObject HTMLOrSVGOrMathMLElement where
  typeGType _ = gTypeHTMLOrSVGOrMathMLElement
  {-# INLINE typeGType #-}

noHTMLOrSVGOrMathMLElement :: Maybe HTMLOrSVGOrMathMLElement
noHTMLOrSVGOrMathMLElement = Nothing
{-# INLINE noHTMLOrSVGOrMathMLElement #-}

gTypeHTMLOrSVGOrMathMLElement :: JSM GType
gTypeHTMLOrSVGOrMathMLElement = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.HTMLOutputElement" (html).
newtype HTMLOutputElement = HTMLOutputElement { unHTMLOutputElement :: JSVal }

instance PToJSVal HTMLOutputElement where
  pToJSVal = unHTMLOutputElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLOutputElement where
  pFromJSVal = HTMLOutputElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLOutputElement where
  toJSVal = return . unHTMLOutputElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLOutputElement where
  fromJSVal v = fmap HTMLOutputElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLOutputElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLOutputElement where
  makeObject = makeObject . unHTMLOutputElement

instance IsHTMLElement HTMLOutputElement
instance IsElementCSSInlineStyle HTMLOutputElement
instance IsElementContentEditable HTMLOutputElement
instance IsGlobalEventHandlers HTMLOutputElement
instance IsHTMLOrSVGOrMathMLElement HTMLOutputElement
instance IsElement HTMLOutputElement
instance IsARIAMixin HTMLOutputElement
instance IsARIANotifyMixin HTMLOutputElement
instance IsAnimatable HTMLOutputElement
instance IsChildNode HTMLOutputElement
instance IsNonDocumentTypeChildNode HTMLOutputElement
instance IsParentNode HTMLOutputElement
instance IsSlottable HTMLOutputElement
instance IsNode HTMLOutputElement
instance IsEventTarget HTMLOutputElement

instance IsGObject HTMLOutputElement where
  typeGType _ = gTypeHTMLOutputElement
  {-# INLINE typeGType #-}

noHTMLOutputElement :: Maybe HTMLOutputElement
noHTMLOutputElement = Nothing
{-# INLINE noHTMLOutputElement #-}

gTypeHTMLOutputElement :: JSM GType
gTypeHTMLOutputElement = GType . Object <$> jsg "HTMLOutputElement"

-- | Functions for this interface are in "JSDOM.HTMLParagraphElement" (html).
newtype HTMLParagraphElement = HTMLParagraphElement { unHTMLParagraphElement :: JSVal }

instance PToJSVal HTMLParagraphElement where
  pToJSVal = unHTMLParagraphElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLParagraphElement where
  pFromJSVal = HTMLParagraphElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLParagraphElement where
  toJSVal = return . unHTMLParagraphElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLParagraphElement where
  fromJSVal v = fmap HTMLParagraphElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLParagraphElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLParagraphElement where
  makeObject = makeObject . unHTMLParagraphElement

instance IsHTMLElement HTMLParagraphElement
instance IsElementCSSInlineStyle HTMLParagraphElement
instance IsElementContentEditable HTMLParagraphElement
instance IsGlobalEventHandlers HTMLParagraphElement
instance IsHTMLOrSVGOrMathMLElement HTMLParagraphElement
instance IsElement HTMLParagraphElement
instance IsARIAMixin HTMLParagraphElement
instance IsARIANotifyMixin HTMLParagraphElement
instance IsAnimatable HTMLParagraphElement
instance IsChildNode HTMLParagraphElement
instance IsNonDocumentTypeChildNode HTMLParagraphElement
instance IsParentNode HTMLParagraphElement
instance IsSlottable HTMLParagraphElement
instance IsNode HTMLParagraphElement
instance IsEventTarget HTMLParagraphElement

instance IsGObject HTMLParagraphElement where
  typeGType _ = gTypeHTMLParagraphElement
  {-# INLINE typeGType #-}

noHTMLParagraphElement :: Maybe HTMLParagraphElement
noHTMLParagraphElement = Nothing
{-# INLINE noHTMLParagraphElement #-}

gTypeHTMLParagraphElement :: JSM GType
gTypeHTMLParagraphElement = GType . Object <$> jsg "HTMLParagraphElement"

-- | Functions for this interface are in "JSDOM.HTMLParamElement" (html).
newtype HTMLParamElement = HTMLParamElement { unHTMLParamElement :: JSVal }

instance PToJSVal HTMLParamElement where
  pToJSVal = unHTMLParamElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLParamElement where
  pFromJSVal = HTMLParamElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLParamElement where
  toJSVal = return . unHTMLParamElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLParamElement where
  fromJSVal v = fmap HTMLParamElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLParamElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLParamElement where
  makeObject = makeObject . unHTMLParamElement

instance IsHTMLElement HTMLParamElement
instance IsElementCSSInlineStyle HTMLParamElement
instance IsElementContentEditable HTMLParamElement
instance IsGlobalEventHandlers HTMLParamElement
instance IsHTMLOrSVGOrMathMLElement HTMLParamElement
instance IsElement HTMLParamElement
instance IsARIAMixin HTMLParamElement
instance IsARIANotifyMixin HTMLParamElement
instance IsAnimatable HTMLParamElement
instance IsChildNode HTMLParamElement
instance IsNonDocumentTypeChildNode HTMLParamElement
instance IsParentNode HTMLParamElement
instance IsSlottable HTMLParamElement
instance IsNode HTMLParamElement
instance IsEventTarget HTMLParamElement

instance IsGObject HTMLParamElement where
  typeGType _ = gTypeHTMLParamElement
  {-# INLINE typeGType #-}

noHTMLParamElement :: Maybe HTMLParamElement
noHTMLParamElement = Nothing
{-# INLINE noHTMLParamElement #-}

gTypeHTMLParamElement :: JSM GType
gTypeHTMLParamElement = GType . Object <$> jsg "HTMLParamElement"

-- | Functions for this interface are in "JSDOM.HTMLPictureElement" (html).
newtype HTMLPictureElement = HTMLPictureElement { unHTMLPictureElement :: JSVal }

instance PToJSVal HTMLPictureElement where
  pToJSVal = unHTMLPictureElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLPictureElement where
  pFromJSVal = HTMLPictureElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLPictureElement where
  toJSVal = return . unHTMLPictureElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLPictureElement where
  fromJSVal v = fmap HTMLPictureElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLPictureElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLPictureElement where
  makeObject = makeObject . unHTMLPictureElement

instance IsHTMLElement HTMLPictureElement
instance IsElementCSSInlineStyle HTMLPictureElement
instance IsElementContentEditable HTMLPictureElement
instance IsGlobalEventHandlers HTMLPictureElement
instance IsHTMLOrSVGOrMathMLElement HTMLPictureElement
instance IsElement HTMLPictureElement
instance IsARIAMixin HTMLPictureElement
instance IsARIANotifyMixin HTMLPictureElement
instance IsAnimatable HTMLPictureElement
instance IsChildNode HTMLPictureElement
instance IsNonDocumentTypeChildNode HTMLPictureElement
instance IsParentNode HTMLPictureElement
instance IsSlottable HTMLPictureElement
instance IsNode HTMLPictureElement
instance IsEventTarget HTMLPictureElement

instance IsGObject HTMLPictureElement where
  typeGType _ = gTypeHTMLPictureElement
  {-# INLINE typeGType #-}

noHTMLPictureElement :: Maybe HTMLPictureElement
noHTMLPictureElement = Nothing
{-# INLINE noHTMLPictureElement #-}

gTypeHTMLPictureElement :: JSM GType
gTypeHTMLPictureElement = GType . Object <$> jsg "HTMLPictureElement"

-- | Functions for this interface are in "JSDOM.HTMLPreElement" (html).
newtype HTMLPreElement = HTMLPreElement { unHTMLPreElement :: JSVal }

instance PToJSVal HTMLPreElement where
  pToJSVal = unHTMLPreElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLPreElement where
  pFromJSVal = HTMLPreElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLPreElement where
  toJSVal = return . unHTMLPreElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLPreElement where
  fromJSVal v = fmap HTMLPreElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLPreElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLPreElement where
  makeObject = makeObject . unHTMLPreElement

instance IsHTMLElement HTMLPreElement
instance IsElementCSSInlineStyle HTMLPreElement
instance IsElementContentEditable HTMLPreElement
instance IsGlobalEventHandlers HTMLPreElement
instance IsHTMLOrSVGOrMathMLElement HTMLPreElement
instance IsElement HTMLPreElement
instance IsARIAMixin HTMLPreElement
instance IsARIANotifyMixin HTMLPreElement
instance IsAnimatable HTMLPreElement
instance IsChildNode HTMLPreElement
instance IsNonDocumentTypeChildNode HTMLPreElement
instance IsParentNode HTMLPreElement
instance IsSlottable HTMLPreElement
instance IsNode HTMLPreElement
instance IsEventTarget HTMLPreElement

instance IsGObject HTMLPreElement where
  typeGType _ = gTypeHTMLPreElement
  {-# INLINE typeGType #-}

noHTMLPreElement :: Maybe HTMLPreElement
noHTMLPreElement = Nothing
{-# INLINE noHTMLPreElement #-}

gTypeHTMLPreElement :: JSM GType
gTypeHTMLPreElement = GType . Object <$> jsg "HTMLPreElement"

-- | Functions for this interface are in "JSDOM.HTMLProgressElement" (html).
newtype HTMLProgressElement = HTMLProgressElement { unHTMLProgressElement :: JSVal }

instance PToJSVal HTMLProgressElement where
  pToJSVal = unHTMLProgressElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLProgressElement where
  pFromJSVal = HTMLProgressElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLProgressElement where
  toJSVal = return . unHTMLProgressElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLProgressElement where
  fromJSVal v = fmap HTMLProgressElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLProgressElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLProgressElement where
  makeObject = makeObject . unHTMLProgressElement

instance IsHTMLElement HTMLProgressElement
instance IsElementCSSInlineStyle HTMLProgressElement
instance IsElementContentEditable HTMLProgressElement
instance IsGlobalEventHandlers HTMLProgressElement
instance IsHTMLOrSVGOrMathMLElement HTMLProgressElement
instance IsElement HTMLProgressElement
instance IsARIAMixin HTMLProgressElement
instance IsARIANotifyMixin HTMLProgressElement
instance IsAnimatable HTMLProgressElement
instance IsChildNode HTMLProgressElement
instance IsNonDocumentTypeChildNode HTMLProgressElement
instance IsParentNode HTMLProgressElement
instance IsSlottable HTMLProgressElement
instance IsNode HTMLProgressElement
instance IsEventTarget HTMLProgressElement

instance IsGObject HTMLProgressElement where
  typeGType _ = gTypeHTMLProgressElement
  {-# INLINE typeGType #-}

noHTMLProgressElement :: Maybe HTMLProgressElement
noHTMLProgressElement = Nothing
{-# INLINE noHTMLProgressElement #-}

gTypeHTMLProgressElement :: JSM GType
gTypeHTMLProgressElement = GType . Object <$> jsg "HTMLProgressElement"

-- | Functions for this interface are in "JSDOM.HTMLQuoteElement" (html).
newtype HTMLQuoteElement = HTMLQuoteElement { unHTMLQuoteElement :: JSVal }

instance PToJSVal HTMLQuoteElement where
  pToJSVal = unHTMLQuoteElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLQuoteElement where
  pFromJSVal = HTMLQuoteElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLQuoteElement where
  toJSVal = return . unHTMLQuoteElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLQuoteElement where
  fromJSVal v = fmap HTMLQuoteElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLQuoteElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLQuoteElement where
  makeObject = makeObject . unHTMLQuoteElement

instance IsHTMLElement HTMLQuoteElement
instance IsElementCSSInlineStyle HTMLQuoteElement
instance IsElementContentEditable HTMLQuoteElement
instance IsGlobalEventHandlers HTMLQuoteElement
instance IsHTMLOrSVGOrMathMLElement HTMLQuoteElement
instance IsElement HTMLQuoteElement
instance IsARIAMixin HTMLQuoteElement
instance IsARIANotifyMixin HTMLQuoteElement
instance IsAnimatable HTMLQuoteElement
instance IsChildNode HTMLQuoteElement
instance IsNonDocumentTypeChildNode HTMLQuoteElement
instance IsParentNode HTMLQuoteElement
instance IsSlottable HTMLQuoteElement
instance IsNode HTMLQuoteElement
instance IsEventTarget HTMLQuoteElement

instance IsGObject HTMLQuoteElement where
  typeGType _ = gTypeHTMLQuoteElement
  {-# INLINE typeGType #-}

noHTMLQuoteElement :: Maybe HTMLQuoteElement
noHTMLQuoteElement = Nothing
{-# INLINE noHTMLQuoteElement #-}

gTypeHTMLQuoteElement :: JSM GType
gTypeHTMLQuoteElement = GType . Object <$> jsg "HTMLQuoteElement"

-- | Functions for this interface are in "JSDOM.HTMLScriptElement" (html).
newtype HTMLScriptElement = HTMLScriptElement { unHTMLScriptElement :: JSVal }

instance PToJSVal HTMLScriptElement where
  pToJSVal = unHTMLScriptElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLScriptElement where
  pFromJSVal = HTMLScriptElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLScriptElement where
  toJSVal = return . unHTMLScriptElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLScriptElement where
  fromJSVal v = fmap HTMLScriptElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLScriptElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLScriptElement where
  makeObject = makeObject . unHTMLScriptElement

instance IsHTMLElement HTMLScriptElement
instance IsElementCSSInlineStyle HTMLScriptElement
instance IsElementContentEditable HTMLScriptElement
instance IsGlobalEventHandlers HTMLScriptElement
instance IsHTMLOrSVGOrMathMLElement HTMLScriptElement
instance IsElement HTMLScriptElement
instance IsARIAMixin HTMLScriptElement
instance IsARIANotifyMixin HTMLScriptElement
instance IsAnimatable HTMLScriptElement
instance IsChildNode HTMLScriptElement
instance IsNonDocumentTypeChildNode HTMLScriptElement
instance IsParentNode HTMLScriptElement
instance IsSlottable HTMLScriptElement
instance IsNode HTMLScriptElement
instance IsEventTarget HTMLScriptElement

instance IsGObject HTMLScriptElement where
  typeGType _ = gTypeHTMLScriptElement
  {-# INLINE typeGType #-}

noHTMLScriptElement :: Maybe HTMLScriptElement
noHTMLScriptElement = Nothing
{-# INLINE noHTMLScriptElement #-}

gTypeHTMLScriptElement :: JSM GType
gTypeHTMLScriptElement = GType . Object <$> jsg "HTMLScriptElement"

-- | Functions for this interface are in "JSDOM.HTMLSelectElement" (html).
newtype HTMLSelectElement = HTMLSelectElement { unHTMLSelectElement :: JSVal }

instance PToJSVal HTMLSelectElement where
  pToJSVal = unHTMLSelectElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLSelectElement where
  pFromJSVal = HTMLSelectElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLSelectElement where
  toJSVal = return . unHTMLSelectElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLSelectElement where
  fromJSVal v = fmap HTMLSelectElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLSelectElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLSelectElement where
  makeObject = makeObject . unHTMLSelectElement

instance IsHTMLElement HTMLSelectElement
instance IsElementCSSInlineStyle HTMLSelectElement
instance IsElementContentEditable HTMLSelectElement
instance IsGlobalEventHandlers HTMLSelectElement
instance IsHTMLOrSVGOrMathMLElement HTMLSelectElement
instance IsElement HTMLSelectElement
instance IsARIAMixin HTMLSelectElement
instance IsARIANotifyMixin HTMLSelectElement
instance IsAnimatable HTMLSelectElement
instance IsChildNode HTMLSelectElement
instance IsNonDocumentTypeChildNode HTMLSelectElement
instance IsParentNode HTMLSelectElement
instance IsSlottable HTMLSelectElement
instance IsNode HTMLSelectElement
instance IsEventTarget HTMLSelectElement

instance IsGObject HTMLSelectElement where
  typeGType _ = gTypeHTMLSelectElement
  {-# INLINE typeGType #-}

noHTMLSelectElement :: Maybe HTMLSelectElement
noHTMLSelectElement = Nothing
{-# INLINE noHTMLSelectElement #-}

gTypeHTMLSelectElement :: JSM GType
gTypeHTMLSelectElement = GType . Object <$> jsg "HTMLSelectElement"

-- | Functions for this interface are in "JSDOM.HTMLSelectedContentElement" (html).
newtype HTMLSelectedContentElement = HTMLSelectedContentElement { unHTMLSelectedContentElement :: JSVal }

instance PToJSVal HTMLSelectedContentElement where
  pToJSVal = unHTMLSelectedContentElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLSelectedContentElement where
  pFromJSVal = HTMLSelectedContentElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLSelectedContentElement where
  toJSVal = return . unHTMLSelectedContentElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLSelectedContentElement where
  fromJSVal v = fmap HTMLSelectedContentElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLSelectedContentElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLSelectedContentElement where
  makeObject = makeObject . unHTMLSelectedContentElement

instance IsHTMLElement HTMLSelectedContentElement
instance IsElementCSSInlineStyle HTMLSelectedContentElement
instance IsElementContentEditable HTMLSelectedContentElement
instance IsGlobalEventHandlers HTMLSelectedContentElement
instance IsHTMLOrSVGOrMathMLElement HTMLSelectedContentElement
instance IsElement HTMLSelectedContentElement
instance IsARIAMixin HTMLSelectedContentElement
instance IsARIANotifyMixin HTMLSelectedContentElement
instance IsAnimatable HTMLSelectedContentElement
instance IsChildNode HTMLSelectedContentElement
instance IsNonDocumentTypeChildNode HTMLSelectedContentElement
instance IsParentNode HTMLSelectedContentElement
instance IsSlottable HTMLSelectedContentElement
instance IsNode HTMLSelectedContentElement
instance IsEventTarget HTMLSelectedContentElement

instance IsGObject HTMLSelectedContentElement where
  typeGType _ = gTypeHTMLSelectedContentElement
  {-# INLINE typeGType #-}

noHTMLSelectedContentElement :: Maybe HTMLSelectedContentElement
noHTMLSelectedContentElement = Nothing
{-# INLINE noHTMLSelectedContentElement #-}

gTypeHTMLSelectedContentElement :: JSM GType
gTypeHTMLSelectedContentElement = GType . Object <$> jsg "HTMLSelectedContentElement"

-- | Functions for this interface are in "JSDOM.HTMLSlotElement" (html).
newtype HTMLSlotElement = HTMLSlotElement { unHTMLSlotElement :: JSVal }

instance PToJSVal HTMLSlotElement where
  pToJSVal = unHTMLSlotElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLSlotElement where
  pFromJSVal = HTMLSlotElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLSlotElement where
  toJSVal = return . unHTMLSlotElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLSlotElement where
  fromJSVal v = fmap HTMLSlotElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLSlotElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLSlotElement where
  makeObject = makeObject . unHTMLSlotElement

instance IsHTMLElement HTMLSlotElement
instance IsElementCSSInlineStyle HTMLSlotElement
instance IsElementContentEditable HTMLSlotElement
instance IsGlobalEventHandlers HTMLSlotElement
instance IsHTMLOrSVGOrMathMLElement HTMLSlotElement
instance IsElement HTMLSlotElement
instance IsARIAMixin HTMLSlotElement
instance IsARIANotifyMixin HTMLSlotElement
instance IsAnimatable HTMLSlotElement
instance IsChildNode HTMLSlotElement
instance IsNonDocumentTypeChildNode HTMLSlotElement
instance IsParentNode HTMLSlotElement
instance IsSlottable HTMLSlotElement
instance IsNode HTMLSlotElement
instance IsEventTarget HTMLSlotElement

instance IsGObject HTMLSlotElement where
  typeGType _ = gTypeHTMLSlotElement
  {-# INLINE typeGType #-}

noHTMLSlotElement :: Maybe HTMLSlotElement
noHTMLSlotElement = Nothing
{-# INLINE noHTMLSlotElement #-}

gTypeHTMLSlotElement :: JSM GType
gTypeHTMLSlotElement = GType . Object <$> jsg "HTMLSlotElement"

-- | Functions for this interface are in "JSDOM.HTMLSourceElement" (html).
newtype HTMLSourceElement = HTMLSourceElement { unHTMLSourceElement :: JSVal }

instance PToJSVal HTMLSourceElement where
  pToJSVal = unHTMLSourceElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLSourceElement where
  pFromJSVal = HTMLSourceElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLSourceElement where
  toJSVal = return . unHTMLSourceElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLSourceElement where
  fromJSVal v = fmap HTMLSourceElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLSourceElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLSourceElement where
  makeObject = makeObject . unHTMLSourceElement

instance IsHTMLElement HTMLSourceElement
instance IsElementCSSInlineStyle HTMLSourceElement
instance IsElementContentEditable HTMLSourceElement
instance IsGlobalEventHandlers HTMLSourceElement
instance IsHTMLOrSVGOrMathMLElement HTMLSourceElement
instance IsElement HTMLSourceElement
instance IsARIAMixin HTMLSourceElement
instance IsARIANotifyMixin HTMLSourceElement
instance IsAnimatable HTMLSourceElement
instance IsChildNode HTMLSourceElement
instance IsNonDocumentTypeChildNode HTMLSourceElement
instance IsParentNode HTMLSourceElement
instance IsSlottable HTMLSourceElement
instance IsNode HTMLSourceElement
instance IsEventTarget HTMLSourceElement

instance IsGObject HTMLSourceElement where
  typeGType _ = gTypeHTMLSourceElement
  {-# INLINE typeGType #-}

noHTMLSourceElement :: Maybe HTMLSourceElement
noHTMLSourceElement = Nothing
{-# INLINE noHTMLSourceElement #-}

gTypeHTMLSourceElement :: JSM GType
gTypeHTMLSourceElement = GType . Object <$> jsg "HTMLSourceElement"

-- | Functions for this interface are in "JSDOM.HTMLSpanElement" (html).
newtype HTMLSpanElement = HTMLSpanElement { unHTMLSpanElement :: JSVal }

instance PToJSVal HTMLSpanElement where
  pToJSVal = unHTMLSpanElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLSpanElement where
  pFromJSVal = HTMLSpanElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLSpanElement where
  toJSVal = return . unHTMLSpanElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLSpanElement where
  fromJSVal v = fmap HTMLSpanElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLSpanElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLSpanElement where
  makeObject = makeObject . unHTMLSpanElement

instance IsHTMLElement HTMLSpanElement
instance IsElementCSSInlineStyle HTMLSpanElement
instance IsElementContentEditable HTMLSpanElement
instance IsGlobalEventHandlers HTMLSpanElement
instance IsHTMLOrSVGOrMathMLElement HTMLSpanElement
instance IsElement HTMLSpanElement
instance IsARIAMixin HTMLSpanElement
instance IsARIANotifyMixin HTMLSpanElement
instance IsAnimatable HTMLSpanElement
instance IsChildNode HTMLSpanElement
instance IsNonDocumentTypeChildNode HTMLSpanElement
instance IsParentNode HTMLSpanElement
instance IsSlottable HTMLSpanElement
instance IsNode HTMLSpanElement
instance IsEventTarget HTMLSpanElement

instance IsGObject HTMLSpanElement where
  typeGType _ = gTypeHTMLSpanElement
  {-# INLINE typeGType #-}

noHTMLSpanElement :: Maybe HTMLSpanElement
noHTMLSpanElement = Nothing
{-# INLINE noHTMLSpanElement #-}

gTypeHTMLSpanElement :: JSM GType
gTypeHTMLSpanElement = GType . Object <$> jsg "HTMLSpanElement"

-- | Functions for this interface are in "JSDOM.HTMLStyleElement" (html).
newtype HTMLStyleElement = HTMLStyleElement { unHTMLStyleElement :: JSVal }

instance PToJSVal HTMLStyleElement where
  pToJSVal = unHTMLStyleElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLStyleElement where
  pFromJSVal = HTMLStyleElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLStyleElement where
  toJSVal = return . unHTMLStyleElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLStyleElement where
  fromJSVal v = fmap HTMLStyleElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLStyleElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLStyleElement where
  makeObject = makeObject . unHTMLStyleElement

instance IsLinkStyle HTMLStyleElement
instance IsHTMLElement HTMLStyleElement
instance IsElementCSSInlineStyle HTMLStyleElement
instance IsElementContentEditable HTMLStyleElement
instance IsGlobalEventHandlers HTMLStyleElement
instance IsHTMLOrSVGOrMathMLElement HTMLStyleElement
instance IsElement HTMLStyleElement
instance IsARIAMixin HTMLStyleElement
instance IsARIANotifyMixin HTMLStyleElement
instance IsAnimatable HTMLStyleElement
instance IsChildNode HTMLStyleElement
instance IsNonDocumentTypeChildNode HTMLStyleElement
instance IsParentNode HTMLStyleElement
instance IsSlottable HTMLStyleElement
instance IsNode HTMLStyleElement
instance IsEventTarget HTMLStyleElement

instance IsGObject HTMLStyleElement where
  typeGType _ = gTypeHTMLStyleElement
  {-# INLINE typeGType #-}

noHTMLStyleElement :: Maybe HTMLStyleElement
noHTMLStyleElement = Nothing
{-# INLINE noHTMLStyleElement #-}

gTypeHTMLStyleElement :: JSM GType
gTypeHTMLStyleElement = GType . Object <$> jsg "HTMLStyleElement"

-- | Functions for this interface are in "JSDOM.HTMLTableCaptionElement" (html).
newtype HTMLTableCaptionElement = HTMLTableCaptionElement { unHTMLTableCaptionElement :: JSVal }

instance PToJSVal HTMLTableCaptionElement where
  pToJSVal = unHTMLTableCaptionElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLTableCaptionElement where
  pFromJSVal = HTMLTableCaptionElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLTableCaptionElement where
  toJSVal = return . unHTMLTableCaptionElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLTableCaptionElement where
  fromJSVal v = fmap HTMLTableCaptionElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLTableCaptionElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLTableCaptionElement where
  makeObject = makeObject . unHTMLTableCaptionElement

instance IsHTMLElement HTMLTableCaptionElement
instance IsElementCSSInlineStyle HTMLTableCaptionElement
instance IsElementContentEditable HTMLTableCaptionElement
instance IsGlobalEventHandlers HTMLTableCaptionElement
instance IsHTMLOrSVGOrMathMLElement HTMLTableCaptionElement
instance IsElement HTMLTableCaptionElement
instance IsARIAMixin HTMLTableCaptionElement
instance IsARIANotifyMixin HTMLTableCaptionElement
instance IsAnimatable HTMLTableCaptionElement
instance IsChildNode HTMLTableCaptionElement
instance IsNonDocumentTypeChildNode HTMLTableCaptionElement
instance IsParentNode HTMLTableCaptionElement
instance IsSlottable HTMLTableCaptionElement
instance IsNode HTMLTableCaptionElement
instance IsEventTarget HTMLTableCaptionElement

instance IsGObject HTMLTableCaptionElement where
  typeGType _ = gTypeHTMLTableCaptionElement
  {-# INLINE typeGType #-}

noHTMLTableCaptionElement :: Maybe HTMLTableCaptionElement
noHTMLTableCaptionElement = Nothing
{-# INLINE noHTMLTableCaptionElement #-}

gTypeHTMLTableCaptionElement :: JSM GType
gTypeHTMLTableCaptionElement = GType . Object <$> jsg "HTMLTableCaptionElement"

-- | Functions for this interface are in "JSDOM.HTMLTableCellElement" (html).
newtype HTMLTableCellElement = HTMLTableCellElement { unHTMLTableCellElement :: JSVal }

instance PToJSVal HTMLTableCellElement where
  pToJSVal = unHTMLTableCellElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLTableCellElement where
  pFromJSVal = HTMLTableCellElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLTableCellElement where
  toJSVal = return . unHTMLTableCellElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLTableCellElement where
  fromJSVal v = fmap HTMLTableCellElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLTableCellElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLTableCellElement where
  makeObject = makeObject . unHTMLTableCellElement

instance IsHTMLElement HTMLTableCellElement
instance IsElementCSSInlineStyle HTMLTableCellElement
instance IsElementContentEditable HTMLTableCellElement
instance IsGlobalEventHandlers HTMLTableCellElement
instance IsHTMLOrSVGOrMathMLElement HTMLTableCellElement
instance IsElement HTMLTableCellElement
instance IsARIAMixin HTMLTableCellElement
instance IsARIANotifyMixin HTMLTableCellElement
instance IsAnimatable HTMLTableCellElement
instance IsChildNode HTMLTableCellElement
instance IsNonDocumentTypeChildNode HTMLTableCellElement
instance IsParentNode HTMLTableCellElement
instance IsSlottable HTMLTableCellElement
instance IsNode HTMLTableCellElement
instance IsEventTarget HTMLTableCellElement

instance IsGObject HTMLTableCellElement where
  typeGType _ = gTypeHTMLTableCellElement
  {-# INLINE typeGType #-}

noHTMLTableCellElement :: Maybe HTMLTableCellElement
noHTMLTableCellElement = Nothing
{-# INLINE noHTMLTableCellElement #-}

gTypeHTMLTableCellElement :: JSM GType
gTypeHTMLTableCellElement = GType . Object <$> jsg "HTMLTableCellElement"

-- | Functions for this interface are in "JSDOM.HTMLTableColElement" (html).
newtype HTMLTableColElement = HTMLTableColElement { unHTMLTableColElement :: JSVal }

instance PToJSVal HTMLTableColElement where
  pToJSVal = unHTMLTableColElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLTableColElement where
  pFromJSVal = HTMLTableColElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLTableColElement where
  toJSVal = return . unHTMLTableColElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLTableColElement where
  fromJSVal v = fmap HTMLTableColElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLTableColElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLTableColElement where
  makeObject = makeObject . unHTMLTableColElement

instance IsHTMLElement HTMLTableColElement
instance IsElementCSSInlineStyle HTMLTableColElement
instance IsElementContentEditable HTMLTableColElement
instance IsGlobalEventHandlers HTMLTableColElement
instance IsHTMLOrSVGOrMathMLElement HTMLTableColElement
instance IsElement HTMLTableColElement
instance IsARIAMixin HTMLTableColElement
instance IsARIANotifyMixin HTMLTableColElement
instance IsAnimatable HTMLTableColElement
instance IsChildNode HTMLTableColElement
instance IsNonDocumentTypeChildNode HTMLTableColElement
instance IsParentNode HTMLTableColElement
instance IsSlottable HTMLTableColElement
instance IsNode HTMLTableColElement
instance IsEventTarget HTMLTableColElement

instance IsGObject HTMLTableColElement where
  typeGType _ = gTypeHTMLTableColElement
  {-# INLINE typeGType #-}

noHTMLTableColElement :: Maybe HTMLTableColElement
noHTMLTableColElement = Nothing
{-# INLINE noHTMLTableColElement #-}

gTypeHTMLTableColElement :: JSM GType
gTypeHTMLTableColElement = GType . Object <$> jsg "HTMLTableColElement"

-- | Functions for this interface are in "JSDOM.HTMLTableElement" (html).
newtype HTMLTableElement = HTMLTableElement { unHTMLTableElement :: JSVal }

instance PToJSVal HTMLTableElement where
  pToJSVal = unHTMLTableElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLTableElement where
  pFromJSVal = HTMLTableElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLTableElement where
  toJSVal = return . unHTMLTableElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLTableElement where
  fromJSVal v = fmap HTMLTableElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLTableElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLTableElement where
  makeObject = makeObject . unHTMLTableElement

instance IsHTMLElement HTMLTableElement
instance IsElementCSSInlineStyle HTMLTableElement
instance IsElementContentEditable HTMLTableElement
instance IsGlobalEventHandlers HTMLTableElement
instance IsHTMLOrSVGOrMathMLElement HTMLTableElement
instance IsElement HTMLTableElement
instance IsARIAMixin HTMLTableElement
instance IsARIANotifyMixin HTMLTableElement
instance IsAnimatable HTMLTableElement
instance IsChildNode HTMLTableElement
instance IsNonDocumentTypeChildNode HTMLTableElement
instance IsParentNode HTMLTableElement
instance IsSlottable HTMLTableElement
instance IsNode HTMLTableElement
instance IsEventTarget HTMLTableElement

instance IsGObject HTMLTableElement where
  typeGType _ = gTypeHTMLTableElement
  {-# INLINE typeGType #-}

noHTMLTableElement :: Maybe HTMLTableElement
noHTMLTableElement = Nothing
{-# INLINE noHTMLTableElement #-}

gTypeHTMLTableElement :: JSM GType
gTypeHTMLTableElement = GType . Object <$> jsg "HTMLTableElement"

-- | Functions for this interface are in "JSDOM.HTMLTableRowElement" (html).
newtype HTMLTableRowElement = HTMLTableRowElement { unHTMLTableRowElement :: JSVal }

instance PToJSVal HTMLTableRowElement where
  pToJSVal = unHTMLTableRowElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLTableRowElement where
  pFromJSVal = HTMLTableRowElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLTableRowElement where
  toJSVal = return . unHTMLTableRowElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLTableRowElement where
  fromJSVal v = fmap HTMLTableRowElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLTableRowElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLTableRowElement where
  makeObject = makeObject . unHTMLTableRowElement

instance IsHTMLElement HTMLTableRowElement
instance IsElementCSSInlineStyle HTMLTableRowElement
instance IsElementContentEditable HTMLTableRowElement
instance IsGlobalEventHandlers HTMLTableRowElement
instance IsHTMLOrSVGOrMathMLElement HTMLTableRowElement
instance IsElement HTMLTableRowElement
instance IsARIAMixin HTMLTableRowElement
instance IsARIANotifyMixin HTMLTableRowElement
instance IsAnimatable HTMLTableRowElement
instance IsChildNode HTMLTableRowElement
instance IsNonDocumentTypeChildNode HTMLTableRowElement
instance IsParentNode HTMLTableRowElement
instance IsSlottable HTMLTableRowElement
instance IsNode HTMLTableRowElement
instance IsEventTarget HTMLTableRowElement

instance IsGObject HTMLTableRowElement where
  typeGType _ = gTypeHTMLTableRowElement
  {-# INLINE typeGType #-}

noHTMLTableRowElement :: Maybe HTMLTableRowElement
noHTMLTableRowElement = Nothing
{-# INLINE noHTMLTableRowElement #-}

gTypeHTMLTableRowElement :: JSM GType
gTypeHTMLTableRowElement = GType . Object <$> jsg "HTMLTableRowElement"

-- | Functions for this interface are in "JSDOM.HTMLTableSectionElement" (html).
newtype HTMLTableSectionElement = HTMLTableSectionElement { unHTMLTableSectionElement :: JSVal }

instance PToJSVal HTMLTableSectionElement where
  pToJSVal = unHTMLTableSectionElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLTableSectionElement where
  pFromJSVal = HTMLTableSectionElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLTableSectionElement where
  toJSVal = return . unHTMLTableSectionElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLTableSectionElement where
  fromJSVal v = fmap HTMLTableSectionElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLTableSectionElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLTableSectionElement where
  makeObject = makeObject . unHTMLTableSectionElement

instance IsHTMLElement HTMLTableSectionElement
instance IsElementCSSInlineStyle HTMLTableSectionElement
instance IsElementContentEditable HTMLTableSectionElement
instance IsGlobalEventHandlers HTMLTableSectionElement
instance IsHTMLOrSVGOrMathMLElement HTMLTableSectionElement
instance IsElement HTMLTableSectionElement
instance IsARIAMixin HTMLTableSectionElement
instance IsARIANotifyMixin HTMLTableSectionElement
instance IsAnimatable HTMLTableSectionElement
instance IsChildNode HTMLTableSectionElement
instance IsNonDocumentTypeChildNode HTMLTableSectionElement
instance IsParentNode HTMLTableSectionElement
instance IsSlottable HTMLTableSectionElement
instance IsNode HTMLTableSectionElement
instance IsEventTarget HTMLTableSectionElement

instance IsGObject HTMLTableSectionElement where
  typeGType _ = gTypeHTMLTableSectionElement
  {-# INLINE typeGType #-}

noHTMLTableSectionElement :: Maybe HTMLTableSectionElement
noHTMLTableSectionElement = Nothing
{-# INLINE noHTMLTableSectionElement #-}

gTypeHTMLTableSectionElement :: JSM GType
gTypeHTMLTableSectionElement = GType . Object <$> jsg "HTMLTableSectionElement"

-- | Functions for this interface are in "JSDOM.HTMLTemplateElement" (html).
newtype HTMLTemplateElement = HTMLTemplateElement { unHTMLTemplateElement :: JSVal }

instance PToJSVal HTMLTemplateElement where
  pToJSVal = unHTMLTemplateElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLTemplateElement where
  pFromJSVal = HTMLTemplateElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLTemplateElement where
  toJSVal = return . unHTMLTemplateElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLTemplateElement where
  fromJSVal v = fmap HTMLTemplateElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLTemplateElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLTemplateElement where
  makeObject = makeObject . unHTMLTemplateElement

instance IsHTMLElement HTMLTemplateElement
instance IsElementCSSInlineStyle HTMLTemplateElement
instance IsElementContentEditable HTMLTemplateElement
instance IsGlobalEventHandlers HTMLTemplateElement
instance IsHTMLOrSVGOrMathMLElement HTMLTemplateElement
instance IsElement HTMLTemplateElement
instance IsARIAMixin HTMLTemplateElement
instance IsARIANotifyMixin HTMLTemplateElement
instance IsAnimatable HTMLTemplateElement
instance IsChildNode HTMLTemplateElement
instance IsNonDocumentTypeChildNode HTMLTemplateElement
instance IsParentNode HTMLTemplateElement
instance IsSlottable HTMLTemplateElement
instance IsNode HTMLTemplateElement
instance IsEventTarget HTMLTemplateElement

instance IsGObject HTMLTemplateElement where
  typeGType _ = gTypeHTMLTemplateElement
  {-# INLINE typeGType #-}

noHTMLTemplateElement :: Maybe HTMLTemplateElement
noHTMLTemplateElement = Nothing
{-# INLINE noHTMLTemplateElement #-}

gTypeHTMLTemplateElement :: JSM GType
gTypeHTMLTemplateElement = GType . Object <$> jsg "HTMLTemplateElement"

-- | Functions for this interface are in "JSDOM.HTMLTextAreaElement" (html).
newtype HTMLTextAreaElement = HTMLTextAreaElement { unHTMLTextAreaElement :: JSVal }

instance PToJSVal HTMLTextAreaElement where
  pToJSVal = unHTMLTextAreaElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLTextAreaElement where
  pFromJSVal = HTMLTextAreaElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLTextAreaElement where
  toJSVal = return . unHTMLTextAreaElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLTextAreaElement where
  fromJSVal v = fmap HTMLTextAreaElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLTextAreaElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLTextAreaElement where
  makeObject = makeObject . unHTMLTextAreaElement

instance IsHTMLElement HTMLTextAreaElement
instance IsElementCSSInlineStyle HTMLTextAreaElement
instance IsElementContentEditable HTMLTextAreaElement
instance IsGlobalEventHandlers HTMLTextAreaElement
instance IsHTMLOrSVGOrMathMLElement HTMLTextAreaElement
instance IsElement HTMLTextAreaElement
instance IsARIAMixin HTMLTextAreaElement
instance IsARIANotifyMixin HTMLTextAreaElement
instance IsAnimatable HTMLTextAreaElement
instance IsChildNode HTMLTextAreaElement
instance IsNonDocumentTypeChildNode HTMLTextAreaElement
instance IsParentNode HTMLTextAreaElement
instance IsSlottable HTMLTextAreaElement
instance IsNode HTMLTextAreaElement
instance IsEventTarget HTMLTextAreaElement

instance IsGObject HTMLTextAreaElement where
  typeGType _ = gTypeHTMLTextAreaElement
  {-# INLINE typeGType #-}

noHTMLTextAreaElement :: Maybe HTMLTextAreaElement
noHTMLTextAreaElement = Nothing
{-# INLINE noHTMLTextAreaElement #-}

gTypeHTMLTextAreaElement :: JSM GType
gTypeHTMLTextAreaElement = GType . Object <$> jsg "HTMLTextAreaElement"

-- | Functions for this interface are in "JSDOM.HTMLTimeElement" (html).
newtype HTMLTimeElement = HTMLTimeElement { unHTMLTimeElement :: JSVal }

instance PToJSVal HTMLTimeElement where
  pToJSVal = unHTMLTimeElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLTimeElement where
  pFromJSVal = HTMLTimeElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLTimeElement where
  toJSVal = return . unHTMLTimeElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLTimeElement where
  fromJSVal v = fmap HTMLTimeElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLTimeElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLTimeElement where
  makeObject = makeObject . unHTMLTimeElement

instance IsHTMLElement HTMLTimeElement
instance IsElementCSSInlineStyle HTMLTimeElement
instance IsElementContentEditable HTMLTimeElement
instance IsGlobalEventHandlers HTMLTimeElement
instance IsHTMLOrSVGOrMathMLElement HTMLTimeElement
instance IsElement HTMLTimeElement
instance IsARIAMixin HTMLTimeElement
instance IsARIANotifyMixin HTMLTimeElement
instance IsAnimatable HTMLTimeElement
instance IsChildNode HTMLTimeElement
instance IsNonDocumentTypeChildNode HTMLTimeElement
instance IsParentNode HTMLTimeElement
instance IsSlottable HTMLTimeElement
instance IsNode HTMLTimeElement
instance IsEventTarget HTMLTimeElement

instance IsGObject HTMLTimeElement where
  typeGType _ = gTypeHTMLTimeElement
  {-# INLINE typeGType #-}

noHTMLTimeElement :: Maybe HTMLTimeElement
noHTMLTimeElement = Nothing
{-# INLINE noHTMLTimeElement #-}

gTypeHTMLTimeElement :: JSM GType
gTypeHTMLTimeElement = GType . Object <$> jsg "HTMLTimeElement"

-- | Functions for this interface are in "JSDOM.HTMLTitleElement" (html).
newtype HTMLTitleElement = HTMLTitleElement { unHTMLTitleElement :: JSVal }

instance PToJSVal HTMLTitleElement where
  pToJSVal = unHTMLTitleElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLTitleElement where
  pFromJSVal = HTMLTitleElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLTitleElement where
  toJSVal = return . unHTMLTitleElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLTitleElement where
  fromJSVal v = fmap HTMLTitleElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLTitleElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLTitleElement where
  makeObject = makeObject . unHTMLTitleElement

instance IsHTMLElement HTMLTitleElement
instance IsElementCSSInlineStyle HTMLTitleElement
instance IsElementContentEditable HTMLTitleElement
instance IsGlobalEventHandlers HTMLTitleElement
instance IsHTMLOrSVGOrMathMLElement HTMLTitleElement
instance IsElement HTMLTitleElement
instance IsARIAMixin HTMLTitleElement
instance IsARIANotifyMixin HTMLTitleElement
instance IsAnimatable HTMLTitleElement
instance IsChildNode HTMLTitleElement
instance IsNonDocumentTypeChildNode HTMLTitleElement
instance IsParentNode HTMLTitleElement
instance IsSlottable HTMLTitleElement
instance IsNode HTMLTitleElement
instance IsEventTarget HTMLTitleElement

instance IsGObject HTMLTitleElement where
  typeGType _ = gTypeHTMLTitleElement
  {-# INLINE typeGType #-}

noHTMLTitleElement :: Maybe HTMLTitleElement
noHTMLTitleElement = Nothing
{-# INLINE noHTMLTitleElement #-}

gTypeHTMLTitleElement :: JSM GType
gTypeHTMLTitleElement = GType . Object <$> jsg "HTMLTitleElement"

-- | Functions for this interface are in "JSDOM.HTMLTrackElement" (html).
newtype HTMLTrackElement = HTMLTrackElement { unHTMLTrackElement :: JSVal }

instance PToJSVal HTMLTrackElement where
  pToJSVal = unHTMLTrackElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLTrackElement where
  pFromJSVal = HTMLTrackElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLTrackElement where
  toJSVal = return . unHTMLTrackElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLTrackElement where
  fromJSVal v = fmap HTMLTrackElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLTrackElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLTrackElement where
  makeObject = makeObject . unHTMLTrackElement

instance IsHTMLElement HTMLTrackElement
instance IsElementCSSInlineStyle HTMLTrackElement
instance IsElementContentEditable HTMLTrackElement
instance IsGlobalEventHandlers HTMLTrackElement
instance IsHTMLOrSVGOrMathMLElement HTMLTrackElement
instance IsElement HTMLTrackElement
instance IsARIAMixin HTMLTrackElement
instance IsARIANotifyMixin HTMLTrackElement
instance IsAnimatable HTMLTrackElement
instance IsChildNode HTMLTrackElement
instance IsNonDocumentTypeChildNode HTMLTrackElement
instance IsParentNode HTMLTrackElement
instance IsSlottable HTMLTrackElement
instance IsNode HTMLTrackElement
instance IsEventTarget HTMLTrackElement

instance IsGObject HTMLTrackElement where
  typeGType _ = gTypeHTMLTrackElement
  {-# INLINE typeGType #-}

noHTMLTrackElement :: Maybe HTMLTrackElement
noHTMLTrackElement = Nothing
{-# INLINE noHTMLTrackElement #-}

gTypeHTMLTrackElement :: JSM GType
gTypeHTMLTrackElement = GType . Object <$> jsg "HTMLTrackElement"

-- | Functions for this interface are in "JSDOM.HTMLUListElement" (html).
newtype HTMLUListElement = HTMLUListElement { unHTMLUListElement :: JSVal }

instance PToJSVal HTMLUListElement where
  pToJSVal = unHTMLUListElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLUListElement where
  pFromJSVal = HTMLUListElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLUListElement where
  toJSVal = return . unHTMLUListElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLUListElement where
  fromJSVal v = fmap HTMLUListElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLUListElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLUListElement where
  makeObject = makeObject . unHTMLUListElement

instance IsHTMLElement HTMLUListElement
instance IsElementCSSInlineStyle HTMLUListElement
instance IsElementContentEditable HTMLUListElement
instance IsGlobalEventHandlers HTMLUListElement
instance IsHTMLOrSVGOrMathMLElement HTMLUListElement
instance IsElement HTMLUListElement
instance IsARIAMixin HTMLUListElement
instance IsARIANotifyMixin HTMLUListElement
instance IsAnimatable HTMLUListElement
instance IsChildNode HTMLUListElement
instance IsNonDocumentTypeChildNode HTMLUListElement
instance IsParentNode HTMLUListElement
instance IsSlottable HTMLUListElement
instance IsNode HTMLUListElement
instance IsEventTarget HTMLUListElement

instance IsGObject HTMLUListElement where
  typeGType _ = gTypeHTMLUListElement
  {-# INLINE typeGType #-}

noHTMLUListElement :: Maybe HTMLUListElement
noHTMLUListElement = Nothing
{-# INLINE noHTMLUListElement #-}

gTypeHTMLUListElement :: JSM GType
gTypeHTMLUListElement = GType . Object <$> jsg "HTMLUListElement"

-- | Functions for this interface are in "JSDOM.HTMLUnknownElement" (html).
newtype HTMLUnknownElement = HTMLUnknownElement { unHTMLUnknownElement :: JSVal }

instance PToJSVal HTMLUnknownElement where
  pToJSVal = unHTMLUnknownElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLUnknownElement where
  pFromJSVal = HTMLUnknownElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLUnknownElement where
  toJSVal = return . unHTMLUnknownElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLUnknownElement where
  fromJSVal v = fmap HTMLUnknownElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLUnknownElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLUnknownElement where
  makeObject = makeObject . unHTMLUnknownElement

instance IsHTMLElement HTMLUnknownElement
instance IsElementCSSInlineStyle HTMLUnknownElement
instance IsElementContentEditable HTMLUnknownElement
instance IsGlobalEventHandlers HTMLUnknownElement
instance IsHTMLOrSVGOrMathMLElement HTMLUnknownElement
instance IsElement HTMLUnknownElement
instance IsARIAMixin HTMLUnknownElement
instance IsARIANotifyMixin HTMLUnknownElement
instance IsAnimatable HTMLUnknownElement
instance IsChildNode HTMLUnknownElement
instance IsNonDocumentTypeChildNode HTMLUnknownElement
instance IsParentNode HTMLUnknownElement
instance IsSlottable HTMLUnknownElement
instance IsNode HTMLUnknownElement
instance IsEventTarget HTMLUnknownElement

instance IsGObject HTMLUnknownElement where
  typeGType _ = gTypeHTMLUnknownElement
  {-# INLINE typeGType #-}

noHTMLUnknownElement :: Maybe HTMLUnknownElement
noHTMLUnknownElement = Nothing
{-# INLINE noHTMLUnknownElement #-}

gTypeHTMLUnknownElement :: JSM GType
gTypeHTMLUnknownElement = GType . Object <$> jsg "HTMLUnknownElement"

-- | Functions for this interface are in "JSDOM.HTMLVideoElement" (html).
newtype HTMLVideoElement = HTMLVideoElement { unHTMLVideoElement :: JSVal }

instance PToJSVal HTMLVideoElement where
  pToJSVal = unHTMLVideoElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal HTMLVideoElement where
  pFromJSVal = HTMLVideoElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal HTMLVideoElement where
  toJSVal = return . unHTMLVideoElement
  {-# INLINE toJSVal #-}

instance FromJSVal HTMLVideoElement where
  fromJSVal v = fmap HTMLVideoElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HTMLVideoElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HTMLVideoElement where
  makeObject = makeObject . unHTMLVideoElement

instance IsHTMLMediaElement HTMLVideoElement
instance IsHTMLElement HTMLVideoElement
instance IsElementCSSInlineStyle HTMLVideoElement
instance IsElementContentEditable HTMLVideoElement
instance IsGlobalEventHandlers HTMLVideoElement
instance IsHTMLOrSVGOrMathMLElement HTMLVideoElement
instance IsElement HTMLVideoElement
instance IsARIAMixin HTMLVideoElement
instance IsARIANotifyMixin HTMLVideoElement
instance IsAnimatable HTMLVideoElement
instance IsChildNode HTMLVideoElement
instance IsNonDocumentTypeChildNode HTMLVideoElement
instance IsParentNode HTMLVideoElement
instance IsSlottable HTMLVideoElement
instance IsNode HTMLVideoElement
instance IsEventTarget HTMLVideoElement

instance IsGObject HTMLVideoElement where
  typeGType _ = gTypeHTMLVideoElement
  {-# INLINE typeGType #-}

noHTMLVideoElement :: Maybe HTMLVideoElement
noHTMLVideoElement = Nothing
{-# INLINE noHTMLVideoElement #-}

gTypeHTMLVideoElement :: JSM GType
gTypeHTMLVideoElement = GType . Object <$> jsg "HTMLVideoElement"

-- | Functions for this interface are in "JSDOM.HashChangeEvent" (html).
newtype HashChangeEvent = HashChangeEvent { unHashChangeEvent :: JSVal }

instance PToJSVal HashChangeEvent where
  pToJSVal = unHashChangeEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal HashChangeEvent where
  pFromJSVal = HashChangeEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal HashChangeEvent where
  toJSVal = return . unHashChangeEvent
  {-# INLINE toJSVal #-}

instance FromJSVal HashChangeEvent where
  fromJSVal v = fmap HashChangeEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HashChangeEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HashChangeEvent where
  makeObject = makeObject . unHashChangeEvent

instance IsEvent HashChangeEvent

instance IsGObject HashChangeEvent where
  typeGType _ = gTypeHashChangeEvent
  {-# INLINE typeGType #-}

noHashChangeEvent :: Maybe HashChangeEvent
noHashChangeEvent = Nothing
{-# INLINE noHashChangeEvent #-}

gTypeHashChangeEvent :: JSM GType
gTypeHashChangeEvent = GType . Object <$> jsg "HashChangeEvent"

-- | Dictionary HashChangeEventInit (html)
newtype HashChangeEventInit = HashChangeEventInit { unHashChangeEventInit :: JSVal }

instance PToJSVal HashChangeEventInit where
  pToJSVal = unHashChangeEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal HashChangeEventInit where
  pFromJSVal = HashChangeEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal HashChangeEventInit where
  toJSVal = return . unHashChangeEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal HashChangeEventInit where
  fromJSVal v = fmap HashChangeEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HashChangeEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HashChangeEventInit where
  makeObject = makeObject . unHashChangeEventInit

instance IsEventInit HashChangeEventInit

instance IsGObject HashChangeEventInit where
  typeGType _ = gTypeHashChangeEventInit
  {-# INLINE typeGType #-}

noHashChangeEventInit :: Maybe HashChangeEventInit
noHashChangeEventInit = Nothing
{-# INLINE noHashChangeEventInit #-}

gTypeHashChangeEventInit :: JSM GType
gTypeHashChangeEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Headers" (fetch).
newtype Headers = Headers { unHeaders :: JSVal }

instance PToJSVal Headers where
  pToJSVal = unHeaders
  {-# INLINE pToJSVal #-}

instance PFromJSVal Headers where
  pFromJSVal = Headers
  {-# INLINE pFromJSVal #-}

instance ToJSVal Headers where
  toJSVal = return . unHeaders
  {-# INLINE toJSVal #-}

instance FromJSVal Headers where
  fromJSVal v = fmap Headers <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Headers
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Headers where
  makeObject = makeObject . unHeaders


instance IsGObject Headers where
  typeGType _ = gTypeHeaders
  {-# INLINE typeGType #-}

noHeaders :: Maybe Headers
noHeaders = Nothing
{-# INLINE noHeaders #-}

gTypeHeaders :: JSM GType
gTypeHeaders = GType . Object <$> jsg "Headers"

-- | Dictionary HevcEncoderConfig (webcodecs-hevc-codec-registration)
newtype HevcEncoderConfig = HevcEncoderConfig { unHevcEncoderConfig :: JSVal }

instance PToJSVal HevcEncoderConfig where
  pToJSVal = unHevcEncoderConfig
  {-# INLINE pToJSVal #-}

instance PFromJSVal HevcEncoderConfig where
  pFromJSVal = HevcEncoderConfig
  {-# INLINE pFromJSVal #-}

instance ToJSVal HevcEncoderConfig where
  toJSVal = return . unHevcEncoderConfig
  {-# INLINE toJSVal #-}

instance FromJSVal HevcEncoderConfig where
  fromJSVal v = fmap HevcEncoderConfig <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HevcEncoderConfig
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HevcEncoderConfig where
  makeObject = makeObject . unHevcEncoderConfig


instance IsGObject HevcEncoderConfig where
  typeGType _ = gTypeHevcEncoderConfig
  {-# INLINE typeGType #-}

noHevcEncoderConfig :: Maybe HevcEncoderConfig
noHevcEncoderConfig = Nothing
{-# INLINE noHevcEncoderConfig #-}

gTypeHevcEncoderConfig :: JSM GType
gTypeHevcEncoderConfig = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Highlight" (css-highlight-api-1).
newtype Highlight = Highlight { unHighlight :: JSVal }

instance PToJSVal Highlight where
  pToJSVal = unHighlight
  {-# INLINE pToJSVal #-}

instance PFromJSVal Highlight where
  pFromJSVal = Highlight
  {-# INLINE pFromJSVal #-}

instance ToJSVal Highlight where
  toJSVal = return . unHighlight
  {-# INLINE toJSVal #-}

instance FromJSVal Highlight where
  fromJSVal v = fmap Highlight <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Highlight
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Highlight where
  makeObject = makeObject . unHighlight


instance IsGObject Highlight where
  typeGType _ = gTypeHighlight
  {-# INLINE typeGType #-}

noHighlight :: Maybe Highlight
noHighlight = Nothing
{-# INLINE noHighlight #-}

gTypeHighlight :: JSM GType
gTypeHighlight = GType . Object <$> jsg "Highlight"

-- | Dictionary HighlightHitResult (css-highlight-api-1)
newtype HighlightHitResult = HighlightHitResult { unHighlightHitResult :: JSVal }

instance PToJSVal HighlightHitResult where
  pToJSVal = unHighlightHitResult
  {-# INLINE pToJSVal #-}

instance PFromJSVal HighlightHitResult where
  pFromJSVal = HighlightHitResult
  {-# INLINE pFromJSVal #-}

instance ToJSVal HighlightHitResult where
  toJSVal = return . unHighlightHitResult
  {-# INLINE toJSVal #-}

instance FromJSVal HighlightHitResult where
  fromJSVal v = fmap HighlightHitResult <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HighlightHitResult
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HighlightHitResult where
  makeObject = makeObject . unHighlightHitResult


instance IsGObject HighlightHitResult where
  typeGType _ = gTypeHighlightHitResult
  {-# INLINE typeGType #-}

noHighlightHitResult :: Maybe HighlightHitResult
noHighlightHitResult = Nothing
{-# INLINE noHighlightHitResult #-}

gTypeHighlightHitResult :: JSM GType
gTypeHighlightHitResult = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.HighlightRegistry" (css-highlight-api-1).
newtype HighlightRegistry = HighlightRegistry { unHighlightRegistry :: JSVal }

instance PToJSVal HighlightRegistry where
  pToJSVal = unHighlightRegistry
  {-# INLINE pToJSVal #-}

instance PFromJSVal HighlightRegistry where
  pFromJSVal = HighlightRegistry
  {-# INLINE pFromJSVal #-}

instance ToJSVal HighlightRegistry where
  toJSVal = return . unHighlightRegistry
  {-# INLINE toJSVal #-}

instance FromJSVal HighlightRegistry where
  fromJSVal v = fmap HighlightRegistry <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HighlightRegistry
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HighlightRegistry where
  makeObject = makeObject . unHighlightRegistry


instance IsGObject HighlightRegistry where
  typeGType _ = gTypeHighlightRegistry
  {-# INLINE typeGType #-}

noHighlightRegistry :: Maybe HighlightRegistry
noHighlightRegistry = Nothing
{-# INLINE noHighlightRegistry #-}

gTypeHighlightRegistry :: JSM GType
gTypeHighlightRegistry = GType . Object <$> jsg "HighlightRegistry"

-- | Dictionary HighlightsFromPointOptions (css-highlight-api-1)
newtype HighlightsFromPointOptions = HighlightsFromPointOptions { unHighlightsFromPointOptions :: JSVal }

instance PToJSVal HighlightsFromPointOptions where
  pToJSVal = unHighlightsFromPointOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal HighlightsFromPointOptions where
  pFromJSVal = HighlightsFromPointOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal HighlightsFromPointOptions where
  toJSVal = return . unHighlightsFromPointOptions
  {-# INLINE toJSVal #-}

instance FromJSVal HighlightsFromPointOptions where
  fromJSVal v = fmap HighlightsFromPointOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HighlightsFromPointOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HighlightsFromPointOptions where
  makeObject = makeObject . unHighlightsFromPointOptions


instance IsGObject HighlightsFromPointOptions where
  typeGType _ = gTypeHighlightsFromPointOptions
  {-# INLINE typeGType #-}

noHighlightsFromPointOptions :: Maybe HighlightsFromPointOptions
noHighlightsFromPointOptions = Nothing
{-# INLINE noHighlightsFromPointOptions #-}

gTypeHighlightsFromPointOptions :: JSM GType
gTypeHighlightsFromPointOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.History" (html).
newtype History = History { unHistory :: JSVal }

instance PToJSVal History where
  pToJSVal = unHistory
  {-# INLINE pToJSVal #-}

instance PFromJSVal History where
  pFromJSVal = History
  {-# INLINE pFromJSVal #-}

instance ToJSVal History where
  toJSVal = return . unHistory
  {-# INLINE toJSVal #-}

instance FromJSVal History where
  fromJSVal v = fmap History <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . History
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject History where
  makeObject = makeObject . unHistory


instance IsGObject History where
  typeGType _ = gTypeHistory
  {-# INLINE typeGType #-}

noHistory :: Maybe History
noHistory = Nothing
{-# INLINE noHistory #-}

gTypeHistory :: JSM GType
gTypeHistory = GType . Object <$> jsg "History"

-- | Functions for this interface are in "JSDOM.HyperlinkElementUtils" (html).
newtype HyperlinkElementUtils = HyperlinkElementUtils { unHyperlinkElementUtils :: JSVal }

instance PToJSVal HyperlinkElementUtils where
  pToJSVal = unHyperlinkElementUtils
  {-# INLINE pToJSVal #-}

instance PFromJSVal HyperlinkElementUtils where
  pFromJSVal = HyperlinkElementUtils
  {-# INLINE pFromJSVal #-}

instance ToJSVal HyperlinkElementUtils where
  toJSVal = return . unHyperlinkElementUtils
  {-# INLINE toJSVal #-}

instance FromJSVal HyperlinkElementUtils where
  fromJSVal v = fmap HyperlinkElementUtils <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . HyperlinkElementUtils
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject HyperlinkElementUtils where
  makeObject = makeObject . unHyperlinkElementUtils

class (IsGObject o) => IsHyperlinkElementUtils o
toHyperlinkElementUtils :: IsHyperlinkElementUtils o => o -> HyperlinkElementUtils
toHyperlinkElementUtils = HyperlinkElementUtils . coerce

instance IsHyperlinkElementUtils HyperlinkElementUtils

instance IsGObject HyperlinkElementUtils where
  typeGType _ = gTypeHyperlinkElementUtils
  {-# INLINE typeGType #-}

noHyperlinkElementUtils :: Maybe HyperlinkElementUtils
noHyperlinkElementUtils = Nothing
{-# INLINE noHyperlinkElementUtils #-}

gTypeHyperlinkElementUtils :: JSM GType
gTypeHyperlinkElementUtils = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.IDBCursor" (IndexedDB-3).
newtype IDBCursor = IDBCursor { unIDBCursor :: JSVal }

instance PToJSVal IDBCursor where
  pToJSVal = unIDBCursor
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBCursor where
  pFromJSVal = IDBCursor
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBCursor where
  toJSVal = return . unIDBCursor
  {-# INLINE toJSVal #-}

instance FromJSVal IDBCursor where
  fromJSVal v = fmap IDBCursor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBCursor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBCursor where
  makeObject = makeObject . unIDBCursor

class (IsGObject o) => IsIDBCursor o
toIDBCursor :: IsIDBCursor o => o -> IDBCursor
toIDBCursor = IDBCursor . coerce

instance IsIDBCursor IDBCursor

instance IsGObject IDBCursor where
  typeGType _ = gTypeIDBCursor
  {-# INLINE typeGType #-}

noIDBCursor :: Maybe IDBCursor
noIDBCursor = Nothing
{-# INLINE noIDBCursor #-}

gTypeIDBCursor :: JSM GType
gTypeIDBCursor = GType . Object <$> jsg "IDBCursor"

-- | Functions for this interface are in "JSDOM.IDBCursorWithValue" (IndexedDB-3).
newtype IDBCursorWithValue = IDBCursorWithValue { unIDBCursorWithValue :: JSVal }

instance PToJSVal IDBCursorWithValue where
  pToJSVal = unIDBCursorWithValue
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBCursorWithValue where
  pFromJSVal = IDBCursorWithValue
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBCursorWithValue where
  toJSVal = return . unIDBCursorWithValue
  {-# INLINE toJSVal #-}

instance FromJSVal IDBCursorWithValue where
  fromJSVal v = fmap IDBCursorWithValue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBCursorWithValue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBCursorWithValue where
  makeObject = makeObject . unIDBCursorWithValue

instance IsIDBCursor IDBCursorWithValue

instance IsGObject IDBCursorWithValue where
  typeGType _ = gTypeIDBCursorWithValue
  {-# INLINE typeGType #-}

noIDBCursorWithValue :: Maybe IDBCursorWithValue
noIDBCursorWithValue = Nothing
{-# INLINE noIDBCursorWithValue #-}

gTypeIDBCursorWithValue :: JSM GType
gTypeIDBCursorWithValue = GType . Object <$> jsg "IDBCursorWithValue"

-- | Functions for this interface are in "JSDOM.IDBDatabase" (IndexedDB-3).
newtype IDBDatabase = IDBDatabase { unIDBDatabase :: JSVal }

instance PToJSVal IDBDatabase where
  pToJSVal = unIDBDatabase
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBDatabase where
  pFromJSVal = IDBDatabase
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBDatabase where
  toJSVal = return . unIDBDatabase
  {-# INLINE toJSVal #-}

instance FromJSVal IDBDatabase where
  fromJSVal v = fmap IDBDatabase <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBDatabase
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBDatabase where
  makeObject = makeObject . unIDBDatabase

instance IsEventTarget IDBDatabase

instance IsGObject IDBDatabase where
  typeGType _ = gTypeIDBDatabase
  {-# INLINE typeGType #-}

noIDBDatabase :: Maybe IDBDatabase
noIDBDatabase = Nothing
{-# INLINE noIDBDatabase #-}

gTypeIDBDatabase :: JSM GType
gTypeIDBDatabase = GType . Object <$> jsg "IDBDatabase"

-- | Dictionary IDBDatabaseInfo (IndexedDB-3)
newtype IDBDatabaseInfo = IDBDatabaseInfo { unIDBDatabaseInfo :: JSVal }

instance PToJSVal IDBDatabaseInfo where
  pToJSVal = unIDBDatabaseInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBDatabaseInfo where
  pFromJSVal = IDBDatabaseInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBDatabaseInfo where
  toJSVal = return . unIDBDatabaseInfo
  {-# INLINE toJSVal #-}

instance FromJSVal IDBDatabaseInfo where
  fromJSVal v = fmap IDBDatabaseInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBDatabaseInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBDatabaseInfo where
  makeObject = makeObject . unIDBDatabaseInfo


instance IsGObject IDBDatabaseInfo where
  typeGType _ = gTypeIDBDatabaseInfo
  {-# INLINE typeGType #-}

noIDBDatabaseInfo :: Maybe IDBDatabaseInfo
noIDBDatabaseInfo = Nothing
{-# INLINE noIDBDatabaseInfo #-}

gTypeIDBDatabaseInfo :: JSM GType
gTypeIDBDatabaseInfo = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.IDBFactory" (IndexedDB-3).
newtype IDBFactory = IDBFactory { unIDBFactory :: JSVal }

instance PToJSVal IDBFactory where
  pToJSVal = unIDBFactory
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBFactory where
  pFromJSVal = IDBFactory
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBFactory where
  toJSVal = return . unIDBFactory
  {-# INLINE toJSVal #-}

instance FromJSVal IDBFactory where
  fromJSVal v = fmap IDBFactory <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBFactory
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBFactory where
  makeObject = makeObject . unIDBFactory


instance IsGObject IDBFactory where
  typeGType _ = gTypeIDBFactory
  {-# INLINE typeGType #-}

noIDBFactory :: Maybe IDBFactory
noIDBFactory = Nothing
{-# INLINE noIDBFactory #-}

gTypeIDBFactory :: JSM GType
gTypeIDBFactory = GType . Object <$> jsg "IDBFactory"

-- | Dictionary IDBGetAllOptions (IndexedDB-3)
newtype IDBGetAllOptions = IDBGetAllOptions { unIDBGetAllOptions :: JSVal }

instance PToJSVal IDBGetAllOptions where
  pToJSVal = unIDBGetAllOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBGetAllOptions where
  pFromJSVal = IDBGetAllOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBGetAllOptions where
  toJSVal = return . unIDBGetAllOptions
  {-# INLINE toJSVal #-}

instance FromJSVal IDBGetAllOptions where
  fromJSVal v = fmap IDBGetAllOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBGetAllOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBGetAllOptions where
  makeObject = makeObject . unIDBGetAllOptions


instance IsGObject IDBGetAllOptions where
  typeGType _ = gTypeIDBGetAllOptions
  {-# INLINE typeGType #-}

noIDBGetAllOptions :: Maybe IDBGetAllOptions
noIDBGetAllOptions = Nothing
{-# INLINE noIDBGetAllOptions #-}

gTypeIDBGetAllOptions :: JSM GType
gTypeIDBGetAllOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.IDBIndex" (IndexedDB-3).
newtype IDBIndex = IDBIndex { unIDBIndex :: JSVal }

instance PToJSVal IDBIndex where
  pToJSVal = unIDBIndex
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBIndex where
  pFromJSVal = IDBIndex
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBIndex where
  toJSVal = return . unIDBIndex
  {-# INLINE toJSVal #-}

instance FromJSVal IDBIndex where
  fromJSVal v = fmap IDBIndex <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBIndex
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBIndex where
  makeObject = makeObject . unIDBIndex


instance IsGObject IDBIndex where
  typeGType _ = gTypeIDBIndex
  {-# INLINE typeGType #-}

noIDBIndex :: Maybe IDBIndex
noIDBIndex = Nothing
{-# INLINE noIDBIndex #-}

gTypeIDBIndex :: JSM GType
gTypeIDBIndex = GType . Object <$> jsg "IDBIndex"

-- | Dictionary IDBIndexParameters (IndexedDB-3)
newtype IDBIndexParameters = IDBIndexParameters { unIDBIndexParameters :: JSVal }

instance PToJSVal IDBIndexParameters where
  pToJSVal = unIDBIndexParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBIndexParameters where
  pFromJSVal = IDBIndexParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBIndexParameters where
  toJSVal = return . unIDBIndexParameters
  {-# INLINE toJSVal #-}

instance FromJSVal IDBIndexParameters where
  fromJSVal v = fmap IDBIndexParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBIndexParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBIndexParameters where
  makeObject = makeObject . unIDBIndexParameters


instance IsGObject IDBIndexParameters where
  typeGType _ = gTypeIDBIndexParameters
  {-# INLINE typeGType #-}

noIDBIndexParameters :: Maybe IDBIndexParameters
noIDBIndexParameters = Nothing
{-# INLINE noIDBIndexParameters #-}

gTypeIDBIndexParameters :: JSM GType
gTypeIDBIndexParameters = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.IDBKeyRange" (IndexedDB-3).
newtype IDBKeyRange = IDBKeyRange { unIDBKeyRange :: JSVal }

instance PToJSVal IDBKeyRange where
  pToJSVal = unIDBKeyRange
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBKeyRange where
  pFromJSVal = IDBKeyRange
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBKeyRange where
  toJSVal = return . unIDBKeyRange
  {-# INLINE toJSVal #-}

instance FromJSVal IDBKeyRange where
  fromJSVal v = fmap IDBKeyRange <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBKeyRange
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBKeyRange where
  makeObject = makeObject . unIDBKeyRange


instance IsGObject IDBKeyRange where
  typeGType _ = gTypeIDBKeyRange
  {-# INLINE typeGType #-}

noIDBKeyRange :: Maybe IDBKeyRange
noIDBKeyRange = Nothing
{-# INLINE noIDBKeyRange #-}

gTypeIDBKeyRange :: JSM GType
gTypeIDBKeyRange = GType . Object <$> jsg "IDBKeyRange"

-- | Functions for this interface are in "JSDOM.IDBObjectStore" (IndexedDB-3).
newtype IDBObjectStore = IDBObjectStore { unIDBObjectStore :: JSVal }

instance PToJSVal IDBObjectStore where
  pToJSVal = unIDBObjectStore
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBObjectStore where
  pFromJSVal = IDBObjectStore
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBObjectStore where
  toJSVal = return . unIDBObjectStore
  {-# INLINE toJSVal #-}

instance FromJSVal IDBObjectStore where
  fromJSVal v = fmap IDBObjectStore <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBObjectStore
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBObjectStore where
  makeObject = makeObject . unIDBObjectStore


instance IsGObject IDBObjectStore where
  typeGType _ = gTypeIDBObjectStore
  {-# INLINE typeGType #-}

noIDBObjectStore :: Maybe IDBObjectStore
noIDBObjectStore = Nothing
{-# INLINE noIDBObjectStore #-}

gTypeIDBObjectStore :: JSM GType
gTypeIDBObjectStore = GType . Object <$> jsg "IDBObjectStore"

-- | Dictionary IDBObjectStoreParameters (IndexedDB-3)
newtype IDBObjectStoreParameters = IDBObjectStoreParameters { unIDBObjectStoreParameters :: JSVal }

instance PToJSVal IDBObjectStoreParameters where
  pToJSVal = unIDBObjectStoreParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBObjectStoreParameters where
  pFromJSVal = IDBObjectStoreParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBObjectStoreParameters where
  toJSVal = return . unIDBObjectStoreParameters
  {-# INLINE toJSVal #-}

instance FromJSVal IDBObjectStoreParameters where
  fromJSVal v = fmap IDBObjectStoreParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBObjectStoreParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBObjectStoreParameters where
  makeObject = makeObject . unIDBObjectStoreParameters


instance IsGObject IDBObjectStoreParameters where
  typeGType _ = gTypeIDBObjectStoreParameters
  {-# INLINE typeGType #-}

noIDBObjectStoreParameters :: Maybe IDBObjectStoreParameters
noIDBObjectStoreParameters = Nothing
{-# INLINE noIDBObjectStoreParameters #-}

gTypeIDBObjectStoreParameters :: JSM GType
gTypeIDBObjectStoreParameters = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.IDBOpenDBRequest" (IndexedDB-3).
newtype IDBOpenDBRequest = IDBOpenDBRequest { unIDBOpenDBRequest :: JSVal }

instance PToJSVal IDBOpenDBRequest where
  pToJSVal = unIDBOpenDBRequest
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBOpenDBRequest where
  pFromJSVal = IDBOpenDBRequest
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBOpenDBRequest where
  toJSVal = return . unIDBOpenDBRequest
  {-# INLINE toJSVal #-}

instance FromJSVal IDBOpenDBRequest where
  fromJSVal v = fmap IDBOpenDBRequest <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBOpenDBRequest
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBOpenDBRequest where
  makeObject = makeObject . unIDBOpenDBRequest

instance IsIDBRequest IDBOpenDBRequest
instance IsEventTarget IDBOpenDBRequest

instance IsGObject IDBOpenDBRequest where
  typeGType _ = gTypeIDBOpenDBRequest
  {-# INLINE typeGType #-}

noIDBOpenDBRequest :: Maybe IDBOpenDBRequest
noIDBOpenDBRequest = Nothing
{-# INLINE noIDBOpenDBRequest #-}

gTypeIDBOpenDBRequest :: JSM GType
gTypeIDBOpenDBRequest = GType . Object <$> jsg "IDBOpenDBRequest"

-- | Functions for this interface are in "JSDOM.IDBRecord" (IndexedDB-3).
newtype IDBRecord = IDBRecord { unIDBRecord :: JSVal }

instance PToJSVal IDBRecord where
  pToJSVal = unIDBRecord
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBRecord where
  pFromJSVal = IDBRecord
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBRecord where
  toJSVal = return . unIDBRecord
  {-# INLINE toJSVal #-}

instance FromJSVal IDBRecord where
  fromJSVal v = fmap IDBRecord <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBRecord
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBRecord where
  makeObject = makeObject . unIDBRecord


instance IsGObject IDBRecord where
  typeGType _ = gTypeIDBRecord
  {-# INLINE typeGType #-}

noIDBRecord :: Maybe IDBRecord
noIDBRecord = Nothing
{-# INLINE noIDBRecord #-}

gTypeIDBRecord :: JSM GType
gTypeIDBRecord = GType . Object <$> jsg "IDBRecord"

-- | Functions for this interface are in "JSDOM.IDBRequest" (IndexedDB-3).
newtype IDBRequest = IDBRequest { unIDBRequest :: JSVal }

instance PToJSVal IDBRequest where
  pToJSVal = unIDBRequest
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBRequest where
  pFromJSVal = IDBRequest
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBRequest where
  toJSVal = return . unIDBRequest
  {-# INLINE toJSVal #-}

instance FromJSVal IDBRequest where
  fromJSVal v = fmap IDBRequest <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBRequest
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBRequest where
  makeObject = makeObject . unIDBRequest

class (IsEventTarget o, IsGObject o) => IsIDBRequest o
toIDBRequest :: IsIDBRequest o => o -> IDBRequest
toIDBRequest = IDBRequest . coerce

instance IsIDBRequest IDBRequest
instance IsEventTarget IDBRequest

instance IsGObject IDBRequest where
  typeGType _ = gTypeIDBRequest
  {-# INLINE typeGType #-}

noIDBRequest :: Maybe IDBRequest
noIDBRequest = Nothing
{-# INLINE noIDBRequest #-}

gTypeIDBRequest :: JSM GType
gTypeIDBRequest = GType . Object <$> jsg "IDBRequest"

-- | Functions for this interface are in "JSDOM.IDBTransaction" (IndexedDB-3).
newtype IDBTransaction = IDBTransaction { unIDBTransaction :: JSVal }

instance PToJSVal IDBTransaction where
  pToJSVal = unIDBTransaction
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBTransaction where
  pFromJSVal = IDBTransaction
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBTransaction where
  toJSVal = return . unIDBTransaction
  {-# INLINE toJSVal #-}

instance FromJSVal IDBTransaction where
  fromJSVal v = fmap IDBTransaction <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBTransaction
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBTransaction where
  makeObject = makeObject . unIDBTransaction

instance IsEventTarget IDBTransaction

instance IsGObject IDBTransaction where
  typeGType _ = gTypeIDBTransaction
  {-# INLINE typeGType #-}

noIDBTransaction :: Maybe IDBTransaction
noIDBTransaction = Nothing
{-# INLINE noIDBTransaction #-}

gTypeIDBTransaction :: JSM GType
gTypeIDBTransaction = GType . Object <$> jsg "IDBTransaction"

-- | Dictionary IDBTransactionOptions (IndexedDB-3)
newtype IDBTransactionOptions = IDBTransactionOptions { unIDBTransactionOptions :: JSVal }

instance PToJSVal IDBTransactionOptions where
  pToJSVal = unIDBTransactionOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBTransactionOptions where
  pFromJSVal = IDBTransactionOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBTransactionOptions where
  toJSVal = return . unIDBTransactionOptions
  {-# INLINE toJSVal #-}

instance FromJSVal IDBTransactionOptions where
  fromJSVal v = fmap IDBTransactionOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBTransactionOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBTransactionOptions where
  makeObject = makeObject . unIDBTransactionOptions


instance IsGObject IDBTransactionOptions where
  typeGType _ = gTypeIDBTransactionOptions
  {-# INLINE typeGType #-}

noIDBTransactionOptions :: Maybe IDBTransactionOptions
noIDBTransactionOptions = Nothing
{-# INLINE noIDBTransactionOptions #-}

gTypeIDBTransactionOptions :: JSM GType
gTypeIDBTransactionOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.IDBVersionChangeEvent" (IndexedDB-3).
newtype IDBVersionChangeEvent = IDBVersionChangeEvent { unIDBVersionChangeEvent :: JSVal }

instance PToJSVal IDBVersionChangeEvent where
  pToJSVal = unIDBVersionChangeEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBVersionChangeEvent where
  pFromJSVal = IDBVersionChangeEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBVersionChangeEvent where
  toJSVal = return . unIDBVersionChangeEvent
  {-# INLINE toJSVal #-}

instance FromJSVal IDBVersionChangeEvent where
  fromJSVal v = fmap IDBVersionChangeEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBVersionChangeEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBVersionChangeEvent where
  makeObject = makeObject . unIDBVersionChangeEvent

instance IsEvent IDBVersionChangeEvent

instance IsGObject IDBVersionChangeEvent where
  typeGType _ = gTypeIDBVersionChangeEvent
  {-# INLINE typeGType #-}

noIDBVersionChangeEvent :: Maybe IDBVersionChangeEvent
noIDBVersionChangeEvent = Nothing
{-# INLINE noIDBVersionChangeEvent #-}

gTypeIDBVersionChangeEvent :: JSM GType
gTypeIDBVersionChangeEvent = GType . Object <$> jsg "IDBVersionChangeEvent"

-- | Dictionary IDBVersionChangeEventInit (IndexedDB-3)
newtype IDBVersionChangeEventInit = IDBVersionChangeEventInit { unIDBVersionChangeEventInit :: JSVal }

instance PToJSVal IDBVersionChangeEventInit where
  pToJSVal = unIDBVersionChangeEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal IDBVersionChangeEventInit where
  pFromJSVal = IDBVersionChangeEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal IDBVersionChangeEventInit where
  toJSVal = return . unIDBVersionChangeEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal IDBVersionChangeEventInit where
  fromJSVal v = fmap IDBVersionChangeEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IDBVersionChangeEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IDBVersionChangeEventInit where
  makeObject = makeObject . unIDBVersionChangeEventInit

instance IsEventInit IDBVersionChangeEventInit

instance IsGObject IDBVersionChangeEventInit where
  typeGType _ = gTypeIDBVersionChangeEventInit
  {-# INLINE typeGType #-}

noIDBVersionChangeEventInit :: Maybe IDBVersionChangeEventInit
noIDBVersionChangeEventInit = Nothing
{-# INLINE noIDBVersionChangeEventInit #-}

gTypeIDBVersionChangeEventInit :: JSM GType
gTypeIDBVersionChangeEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.IIRFilterNode" (webaudio-1.1).
newtype IIRFilterNode = IIRFilterNode { unIIRFilterNode :: JSVal }

instance PToJSVal IIRFilterNode where
  pToJSVal = unIIRFilterNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal IIRFilterNode where
  pFromJSVal = IIRFilterNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal IIRFilterNode where
  toJSVal = return . unIIRFilterNode
  {-# INLINE toJSVal #-}

instance FromJSVal IIRFilterNode where
  fromJSVal v = fmap IIRFilterNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IIRFilterNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IIRFilterNode where
  makeObject = makeObject . unIIRFilterNode

instance IsAudioNode IIRFilterNode
instance IsEventTarget IIRFilterNode

instance IsGObject IIRFilterNode where
  typeGType _ = gTypeIIRFilterNode
  {-# INLINE typeGType #-}

noIIRFilterNode :: Maybe IIRFilterNode
noIIRFilterNode = Nothing
{-# INLINE noIIRFilterNode #-}

gTypeIIRFilterNode :: JSM GType
gTypeIIRFilterNode = GType . Object <$> jsg "IIRFilterNode"

-- | Dictionary IIRFilterOptions (webaudio-1.1)
newtype IIRFilterOptions = IIRFilterOptions { unIIRFilterOptions :: JSVal }

instance PToJSVal IIRFilterOptions where
  pToJSVal = unIIRFilterOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal IIRFilterOptions where
  pFromJSVal = IIRFilterOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal IIRFilterOptions where
  toJSVal = return . unIIRFilterOptions
  {-# INLINE toJSVal #-}

instance FromJSVal IIRFilterOptions where
  fromJSVal v = fmap IIRFilterOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IIRFilterOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IIRFilterOptions where
  makeObject = makeObject . unIIRFilterOptions

instance IsAudioNodeOptions IIRFilterOptions

instance IsGObject IIRFilterOptions where
  typeGType _ = gTypeIIRFilterOptions
  {-# INLINE typeGType #-}

noIIRFilterOptions :: Maybe IIRFilterOptions
noIIRFilterOptions = Nothing
{-# INLINE noIIRFilterOptions #-}

gTypeIIRFilterOptions :: JSM GType
gTypeIIRFilterOptions = GType . Object <$> jsg "Object"

-- | Dictionary IdentityCredentialRequestOptions (fedcm-1)
newtype IdentityCredentialRequestOptions = IdentityCredentialRequestOptions { unIdentityCredentialRequestOptions :: JSVal }

instance PToJSVal IdentityCredentialRequestOptions where
  pToJSVal = unIdentityCredentialRequestOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal IdentityCredentialRequestOptions where
  pFromJSVal = IdentityCredentialRequestOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal IdentityCredentialRequestOptions where
  toJSVal = return . unIdentityCredentialRequestOptions
  {-# INLINE toJSVal #-}

instance FromJSVal IdentityCredentialRequestOptions where
  fromJSVal v = fmap IdentityCredentialRequestOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IdentityCredentialRequestOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IdentityCredentialRequestOptions where
  makeObject = makeObject . unIdentityCredentialRequestOptions


instance IsGObject IdentityCredentialRequestOptions where
  typeGType _ = gTypeIdentityCredentialRequestOptions
  {-# INLINE typeGType #-}

noIdentityCredentialRequestOptions :: Maybe IdentityCredentialRequestOptions
noIdentityCredentialRequestOptions = Nothing
{-# INLINE noIdentityCredentialRequestOptions #-}

gTypeIdentityCredentialRequestOptions :: JSM GType
gTypeIdentityCredentialRequestOptions = GType . Object <$> jsg "Object"

-- | Dictionary IdentityProviderConfig (fedcm-1)
newtype IdentityProviderConfig = IdentityProviderConfig { unIdentityProviderConfig :: JSVal }

instance PToJSVal IdentityProviderConfig where
  pToJSVal = unIdentityProviderConfig
  {-# INLINE pToJSVal #-}

instance PFromJSVal IdentityProviderConfig where
  pFromJSVal = IdentityProviderConfig
  {-# INLINE pFromJSVal #-}

instance ToJSVal IdentityProviderConfig where
  toJSVal = return . unIdentityProviderConfig
  {-# INLINE toJSVal #-}

instance FromJSVal IdentityProviderConfig where
  fromJSVal v = fmap IdentityProviderConfig <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IdentityProviderConfig
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IdentityProviderConfig where
  makeObject = makeObject . unIdentityProviderConfig

class (IsGObject o) => IsIdentityProviderConfig o
toIdentityProviderConfig :: IsIdentityProviderConfig o => o -> IdentityProviderConfig
toIdentityProviderConfig = IdentityProviderConfig . coerce

instance IsIdentityProviderConfig IdentityProviderConfig

instance IsGObject IdentityProviderConfig where
  typeGType _ = gTypeIdentityProviderConfig
  {-# INLINE typeGType #-}

noIdentityProviderConfig :: Maybe IdentityProviderConfig
noIdentityProviderConfig = Nothing
{-# INLINE noIdentityProviderConfig #-}

gTypeIdentityProviderConfig :: JSM GType
gTypeIdentityProviderConfig = GType . Object <$> jsg "Object"

-- | Dictionary IdentityProviderRequestOptions (fedcm-1)
newtype IdentityProviderRequestOptions = IdentityProviderRequestOptions { unIdentityProviderRequestOptions :: JSVal }

instance PToJSVal IdentityProviderRequestOptions where
  pToJSVal = unIdentityProviderRequestOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal IdentityProviderRequestOptions where
  pFromJSVal = IdentityProviderRequestOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal IdentityProviderRequestOptions where
  toJSVal = return . unIdentityProviderRequestOptions
  {-# INLINE toJSVal #-}

instance FromJSVal IdentityProviderRequestOptions where
  fromJSVal v = fmap IdentityProviderRequestOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IdentityProviderRequestOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IdentityProviderRequestOptions where
  makeObject = makeObject . unIdentityProviderRequestOptions

instance IsIdentityProviderConfig IdentityProviderRequestOptions

instance IsGObject IdentityProviderRequestOptions where
  typeGType _ = gTypeIdentityProviderRequestOptions
  {-# INLINE typeGType #-}

noIdentityProviderRequestOptions :: Maybe IdentityProviderRequestOptions
noIdentityProviderRequestOptions = Nothing
{-# INLINE noIdentityProviderRequestOptions #-}

gTypeIdentityProviderRequestOptions :: JSM GType
gTypeIdentityProviderRequestOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.IdleDeadline" (requestidlecallback).
newtype IdleDeadline = IdleDeadline { unIdleDeadline :: JSVal }

instance PToJSVal IdleDeadline where
  pToJSVal = unIdleDeadline
  {-# INLINE pToJSVal #-}

instance PFromJSVal IdleDeadline where
  pFromJSVal = IdleDeadline
  {-# INLINE pFromJSVal #-}

instance ToJSVal IdleDeadline where
  toJSVal = return . unIdleDeadline
  {-# INLINE toJSVal #-}

instance FromJSVal IdleDeadline where
  fromJSVal v = fmap IdleDeadline <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IdleDeadline
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IdleDeadline where
  makeObject = makeObject . unIdleDeadline


instance IsGObject IdleDeadline where
  typeGType _ = gTypeIdleDeadline
  {-# INLINE typeGType #-}

noIdleDeadline :: Maybe IdleDeadline
noIdleDeadline = Nothing
{-# INLINE noIdleDeadline #-}

gTypeIdleDeadline :: JSM GType
gTypeIdleDeadline = GType . Object <$> jsg "IdleDeadline"

-- | Dictionary IdleRequestOptions (requestidlecallback)
newtype IdleRequestOptions = IdleRequestOptions { unIdleRequestOptions :: JSVal }

instance PToJSVal IdleRequestOptions where
  pToJSVal = unIdleRequestOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal IdleRequestOptions where
  pFromJSVal = IdleRequestOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal IdleRequestOptions where
  toJSVal = return . unIdleRequestOptions
  {-# INLINE toJSVal #-}

instance FromJSVal IdleRequestOptions where
  fromJSVal v = fmap IdleRequestOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IdleRequestOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IdleRequestOptions where
  makeObject = makeObject . unIdleRequestOptions


instance IsGObject IdleRequestOptions where
  typeGType _ = gTypeIdleRequestOptions
  {-# INLINE typeGType #-}

noIdleRequestOptions :: Maybe IdleRequestOptions
noIdleRequestOptions = Nothing
{-# INLINE noIdleRequestOptions #-}

gTypeIdleRequestOptions :: JSM GType
gTypeIdleRequestOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ImageBitmap" (html).
newtype ImageBitmap = ImageBitmap { unImageBitmap :: JSVal }

instance PToJSVal ImageBitmap where
  pToJSVal = unImageBitmap
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageBitmap where
  pFromJSVal = ImageBitmap
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageBitmap where
  toJSVal = return . unImageBitmap
  {-# INLINE toJSVal #-}

instance FromJSVal ImageBitmap where
  fromJSVal v = fmap ImageBitmap <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageBitmap
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageBitmap where
  makeObject = makeObject . unImageBitmap


instance IsGObject ImageBitmap where
  typeGType _ = gTypeImageBitmap
  {-# INLINE typeGType #-}

noImageBitmap :: Maybe ImageBitmap
noImageBitmap = Nothing
{-# INLINE noImageBitmap #-}

gTypeImageBitmap :: JSM GType
gTypeImageBitmap = GType . Object <$> jsg "ImageBitmap"

-- | Functions for this interface are in "JSDOM.ImageBitmapRenderingContext" (html).
newtype ImageBitmapRenderingContext = ImageBitmapRenderingContext { unImageBitmapRenderingContext :: JSVal }

instance PToJSVal ImageBitmapRenderingContext where
  pToJSVal = unImageBitmapRenderingContext
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageBitmapRenderingContext where
  pFromJSVal = ImageBitmapRenderingContext
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageBitmapRenderingContext where
  toJSVal = return . unImageBitmapRenderingContext
  {-# INLINE toJSVal #-}

instance FromJSVal ImageBitmapRenderingContext where
  fromJSVal v = fmap ImageBitmapRenderingContext <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageBitmapRenderingContext
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageBitmapRenderingContext where
  makeObject = makeObject . unImageBitmapRenderingContext


instance IsGObject ImageBitmapRenderingContext where
  typeGType _ = gTypeImageBitmapRenderingContext
  {-# INLINE typeGType #-}

noImageBitmapRenderingContext :: Maybe ImageBitmapRenderingContext
noImageBitmapRenderingContext = Nothing
{-# INLINE noImageBitmapRenderingContext #-}

gTypeImageBitmapRenderingContext :: JSM GType
gTypeImageBitmapRenderingContext = GType . Object <$> jsg "ImageBitmapRenderingContext"

-- | Functions for this interface are in "JSDOM.ImageCapture" (image-capture).
newtype ImageCapture = ImageCapture { unImageCapture :: JSVal }

instance PToJSVal ImageCapture where
  pToJSVal = unImageCapture
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageCapture where
  pFromJSVal = ImageCapture
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageCapture where
  toJSVal = return . unImageCapture
  {-# INLINE toJSVal #-}

instance FromJSVal ImageCapture where
  fromJSVal v = fmap ImageCapture <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageCapture
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageCapture where
  makeObject = makeObject . unImageCapture


instance IsGObject ImageCapture where
  typeGType _ = gTypeImageCapture
  {-# INLINE typeGType #-}

noImageCapture :: Maybe ImageCapture
noImageCapture = Nothing
{-# INLINE noImageCapture #-}

gTypeImageCapture :: JSM GType
gTypeImageCapture = GType . Object <$> jsg "ImageCapture"

-- | Functions for this interface are in "JSDOM.ImageData" (html).
newtype ImageData = ImageData { unImageData :: JSVal }

instance PToJSVal ImageData where
  pToJSVal = unImageData
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageData where
  pFromJSVal = ImageData
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageData where
  toJSVal = return . unImageData
  {-# INLINE toJSVal #-}

instance FromJSVal ImageData where
  fromJSVal v = fmap ImageData <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageData
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageData where
  makeObject = makeObject . unImageData


instance IsGObject ImageData where
  typeGType _ = gTypeImageData
  {-# INLINE typeGType #-}

noImageData :: Maybe ImageData
noImageData = Nothing
{-# INLINE noImageData #-}

gTypeImageData :: JSM GType
gTypeImageData = GType . Object <$> jsg "ImageData"

-- | Dictionary ImageDataSettings (html)
newtype ImageDataSettings = ImageDataSettings { unImageDataSettings :: JSVal }

instance PToJSVal ImageDataSettings where
  pToJSVal = unImageDataSettings
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageDataSettings where
  pFromJSVal = ImageDataSettings
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageDataSettings where
  toJSVal = return . unImageDataSettings
  {-# INLINE toJSVal #-}

instance FromJSVal ImageDataSettings where
  fromJSVal v = fmap ImageDataSettings <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageDataSettings
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageDataSettings where
  makeObject = makeObject . unImageDataSettings


instance IsGObject ImageDataSettings where
  typeGType _ = gTypeImageDataSettings
  {-# INLINE typeGType #-}

noImageDataSettings :: Maybe ImageDataSettings
noImageDataSettings = Nothing
{-# INLINE noImageDataSettings #-}

gTypeImageDataSettings :: JSM GType
gTypeImageDataSettings = GType . Object <$> jsg "Object"

-- | Dictionary ImageDecodeOptions (webcodecs)
newtype ImageDecodeOptions = ImageDecodeOptions { unImageDecodeOptions :: JSVal }

instance PToJSVal ImageDecodeOptions where
  pToJSVal = unImageDecodeOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageDecodeOptions where
  pFromJSVal = ImageDecodeOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageDecodeOptions where
  toJSVal = return . unImageDecodeOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ImageDecodeOptions where
  fromJSVal v = fmap ImageDecodeOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageDecodeOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageDecodeOptions where
  makeObject = makeObject . unImageDecodeOptions


instance IsGObject ImageDecodeOptions where
  typeGType _ = gTypeImageDecodeOptions
  {-# INLINE typeGType #-}

noImageDecodeOptions :: Maybe ImageDecodeOptions
noImageDecodeOptions = Nothing
{-# INLINE noImageDecodeOptions #-}

gTypeImageDecodeOptions :: JSM GType
gTypeImageDecodeOptions = GType . Object <$> jsg "Object"

-- | Dictionary ImageDecodeResult (webcodecs)
newtype ImageDecodeResult = ImageDecodeResult { unImageDecodeResult :: JSVal }

instance PToJSVal ImageDecodeResult where
  pToJSVal = unImageDecodeResult
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageDecodeResult where
  pFromJSVal = ImageDecodeResult
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageDecodeResult where
  toJSVal = return . unImageDecodeResult
  {-# INLINE toJSVal #-}

instance FromJSVal ImageDecodeResult where
  fromJSVal v = fmap ImageDecodeResult <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageDecodeResult
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageDecodeResult where
  makeObject = makeObject . unImageDecodeResult


instance IsGObject ImageDecodeResult where
  typeGType _ = gTypeImageDecodeResult
  {-# INLINE typeGType #-}

noImageDecodeResult :: Maybe ImageDecodeResult
noImageDecodeResult = Nothing
{-# INLINE noImageDecodeResult #-}

gTypeImageDecodeResult :: JSM GType
gTypeImageDecodeResult = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ImageDecoder" (webcodecs).
newtype ImageDecoder = ImageDecoder { unImageDecoder :: JSVal }

instance PToJSVal ImageDecoder where
  pToJSVal = unImageDecoder
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageDecoder where
  pFromJSVal = ImageDecoder
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageDecoder where
  toJSVal = return . unImageDecoder
  {-# INLINE toJSVal #-}

instance FromJSVal ImageDecoder where
  fromJSVal v = fmap ImageDecoder <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageDecoder
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageDecoder where
  makeObject = makeObject . unImageDecoder


instance IsGObject ImageDecoder where
  typeGType _ = gTypeImageDecoder
  {-# INLINE typeGType #-}

noImageDecoder :: Maybe ImageDecoder
noImageDecoder = Nothing
{-# INLINE noImageDecoder #-}

gTypeImageDecoder :: JSM GType
gTypeImageDecoder = GType . Object <$> jsg "ImageDecoder"

-- | Dictionary ImageDecoderInit (webcodecs)
newtype ImageDecoderInit = ImageDecoderInit { unImageDecoderInit :: JSVal }

instance PToJSVal ImageDecoderInit where
  pToJSVal = unImageDecoderInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageDecoderInit where
  pFromJSVal = ImageDecoderInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageDecoderInit where
  toJSVal = return . unImageDecoderInit
  {-# INLINE toJSVal #-}

instance FromJSVal ImageDecoderInit where
  fromJSVal v = fmap ImageDecoderInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageDecoderInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageDecoderInit where
  makeObject = makeObject . unImageDecoderInit


instance IsGObject ImageDecoderInit where
  typeGType _ = gTypeImageDecoderInit
  {-# INLINE typeGType #-}

noImageDecoderInit :: Maybe ImageDecoderInit
noImageDecoderInit = Nothing
{-# INLINE noImageDecoderInit #-}

gTypeImageDecoderInit :: JSM GType
gTypeImageDecoderInit = GType . Object <$> jsg "Object"

-- | Dictionary ImageEncodeOptions (html)
newtype ImageEncodeOptions = ImageEncodeOptions { unImageEncodeOptions :: JSVal }

instance PToJSVal ImageEncodeOptions where
  pToJSVal = unImageEncodeOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageEncodeOptions where
  pFromJSVal = ImageEncodeOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageEncodeOptions where
  toJSVal = return . unImageEncodeOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ImageEncodeOptions where
  fromJSVal v = fmap ImageEncodeOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageEncodeOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageEncodeOptions where
  makeObject = makeObject . unImageEncodeOptions


instance IsGObject ImageEncodeOptions where
  typeGType _ = gTypeImageEncodeOptions
  {-# INLINE typeGType #-}

noImageEncodeOptions :: Maybe ImageEncodeOptions
noImageEncodeOptions = Nothing
{-# INLINE noImageEncodeOptions #-}

gTypeImageEncodeOptions :: JSM GType
gTypeImageEncodeOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ImageTrack" (webcodecs).
newtype ImageTrack = ImageTrack { unImageTrack :: JSVal }

instance PToJSVal ImageTrack where
  pToJSVal = unImageTrack
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageTrack where
  pFromJSVal = ImageTrack
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageTrack where
  toJSVal = return . unImageTrack
  {-# INLINE toJSVal #-}

instance FromJSVal ImageTrack where
  fromJSVal v = fmap ImageTrack <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageTrack
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageTrack where
  makeObject = makeObject . unImageTrack


instance IsGObject ImageTrack where
  typeGType _ = gTypeImageTrack
  {-# INLINE typeGType #-}

noImageTrack :: Maybe ImageTrack
noImageTrack = Nothing
{-# INLINE noImageTrack #-}

gTypeImageTrack :: JSM GType
gTypeImageTrack = GType . Object <$> jsg "ImageTrack"

-- | Functions for this interface are in "JSDOM.ImageTrackList" (webcodecs).
newtype ImageTrackList = ImageTrackList { unImageTrackList :: JSVal }

instance PToJSVal ImageTrackList where
  pToJSVal = unImageTrackList
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImageTrackList where
  pFromJSVal = ImageTrackList
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImageTrackList where
  toJSVal = return . unImageTrackList
  {-# INLINE toJSVal #-}

instance FromJSVal ImageTrackList where
  fromJSVal v = fmap ImageTrackList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImageTrackList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImageTrackList where
  makeObject = makeObject . unImageTrackList


instance IsGObject ImageTrackList where
  typeGType _ = gTypeImageTrackList
  {-# INLINE typeGType #-}

noImageTrackList :: Maybe ImageTrackList
noImageTrackList = Nothing
{-# INLINE noImageTrackList #-}

gTypeImageTrackList :: JSM GType
gTypeImageTrackList = GType . Object <$> jsg "ImageTrackList"

-- | Dictionary ImportNodeOptions (dom)
newtype ImportNodeOptions = ImportNodeOptions { unImportNodeOptions :: JSVal }

instance PToJSVal ImportNodeOptions where
  pToJSVal = unImportNodeOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ImportNodeOptions where
  pFromJSVal = ImportNodeOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ImportNodeOptions where
  toJSVal = return . unImportNodeOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ImportNodeOptions where
  fromJSVal v = fmap ImportNodeOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ImportNodeOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ImportNodeOptions where
  makeObject = makeObject . unImportNodeOptions


instance IsGObject ImportNodeOptions where
  typeGType _ = gTypeImportNodeOptions
  {-# INLINE typeGType #-}

noImportNodeOptions :: Maybe ImportNodeOptions
noImportNodeOptions = Nothing
{-# INLINE noImportNodeOptions #-}

gTypeImportNodeOptions :: JSM GType
gTypeImportNodeOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.InputDeviceCapabilities" (input-device-capabilities).
newtype InputDeviceCapabilities = InputDeviceCapabilities { unInputDeviceCapabilities :: JSVal }

instance PToJSVal InputDeviceCapabilities where
  pToJSVal = unInputDeviceCapabilities
  {-# INLINE pToJSVal #-}

instance PFromJSVal InputDeviceCapabilities where
  pFromJSVal = InputDeviceCapabilities
  {-# INLINE pFromJSVal #-}

instance ToJSVal InputDeviceCapabilities where
  toJSVal = return . unInputDeviceCapabilities
  {-# INLINE toJSVal #-}

instance FromJSVal InputDeviceCapabilities where
  fromJSVal v = fmap InputDeviceCapabilities <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . InputDeviceCapabilities
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject InputDeviceCapabilities where
  makeObject = makeObject . unInputDeviceCapabilities


instance IsGObject InputDeviceCapabilities where
  typeGType _ = gTypeInputDeviceCapabilities
  {-# INLINE typeGType #-}

noInputDeviceCapabilities :: Maybe InputDeviceCapabilities
noInputDeviceCapabilities = Nothing
{-# INLINE noInputDeviceCapabilities #-}

gTypeInputDeviceCapabilities :: JSM GType
gTypeInputDeviceCapabilities = GType . Object <$> jsg "InputDeviceCapabilities"

-- | Functions for this interface are in "JSDOM.InputDeviceInfo" (mediacapture-streams).
newtype InputDeviceInfo = InputDeviceInfo { unInputDeviceInfo :: JSVal }

instance PToJSVal InputDeviceInfo where
  pToJSVal = unInputDeviceInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal InputDeviceInfo where
  pFromJSVal = InputDeviceInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal InputDeviceInfo where
  toJSVal = return . unInputDeviceInfo
  {-# INLINE toJSVal #-}

instance FromJSVal InputDeviceInfo where
  fromJSVal v = fmap InputDeviceInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . InputDeviceInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject InputDeviceInfo where
  makeObject = makeObject . unInputDeviceInfo

instance IsMediaDeviceInfo InputDeviceInfo

instance IsGObject InputDeviceInfo where
  typeGType _ = gTypeInputDeviceInfo
  {-# INLINE typeGType #-}

noInputDeviceInfo :: Maybe InputDeviceInfo
noInputDeviceInfo = Nothing
{-# INLINE noInputDeviceInfo #-}

gTypeInputDeviceInfo :: JSM GType
gTypeInputDeviceInfo = GType . Object <$> jsg "InputDeviceInfo"

-- | Functions for this interface are in "JSDOM.InputEvent" (uievents).
newtype InputEvent = InputEvent { unInputEvent :: JSVal }

instance PToJSVal InputEvent where
  pToJSVal = unInputEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal InputEvent where
  pFromJSVal = InputEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal InputEvent where
  toJSVal = return . unInputEvent
  {-# INLINE toJSVal #-}

instance FromJSVal InputEvent where
  fromJSVal v = fmap InputEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . InputEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject InputEvent where
  makeObject = makeObject . unInputEvent

instance IsUIEvent InputEvent
instance IsEvent InputEvent

instance IsGObject InputEvent where
  typeGType _ = gTypeInputEvent
  {-# INLINE typeGType #-}

noInputEvent :: Maybe InputEvent
noInputEvent = Nothing
{-# INLINE noInputEvent #-}

gTypeInputEvent :: JSM GType
gTypeInputEvent = GType . Object <$> jsg "InputEvent"

-- | Dictionary InputEventInit (uievents)
newtype InputEventInit = InputEventInit { unInputEventInit :: JSVal }

instance PToJSVal InputEventInit where
  pToJSVal = unInputEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal InputEventInit where
  pFromJSVal = InputEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal InputEventInit where
  toJSVal = return . unInputEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal InputEventInit where
  fromJSVal v = fmap InputEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . InputEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject InputEventInit where
  makeObject = makeObject . unInputEventInit

instance IsUIEventInit InputEventInit
instance IsEventInit InputEventInit

instance IsGObject InputEventInit where
  typeGType _ = gTypeInputEventInit
  {-# INLINE typeGType #-}

noInputEventInit :: Maybe InputEventInit
noInputEventInit = Nothing
{-# INLINE noInputEventInit #-}

gTypeInputEventInit :: JSM GType
gTypeInputEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.InstallEvent" (service-workers).
newtype InstallEvent = InstallEvent { unInstallEvent :: JSVal }

instance PToJSVal InstallEvent where
  pToJSVal = unInstallEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal InstallEvent where
  pFromJSVal = InstallEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal InstallEvent where
  toJSVal = return . unInstallEvent
  {-# INLINE toJSVal #-}

instance FromJSVal InstallEvent where
  fromJSVal v = fmap InstallEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . InstallEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject InstallEvent where
  makeObject = makeObject . unInstallEvent

instance IsExtendableEvent InstallEvent
instance IsEvent InstallEvent

instance IsGObject InstallEvent where
  typeGType _ = gTypeInstallEvent
  {-# INLINE typeGType #-}

noInstallEvent :: Maybe InstallEvent
noInstallEvent = Nothing
{-# INLINE noInstallEvent #-}

gTypeInstallEvent :: JSM GType
gTypeInstallEvent = GType . Object <$> jsg "InstallEvent"

-- | Functions for this interface are in "JSDOM.IntersectionObserver" (intersection-observer).
newtype IntersectionObserver = IntersectionObserver { unIntersectionObserver :: JSVal }

instance PToJSVal IntersectionObserver where
  pToJSVal = unIntersectionObserver
  {-# INLINE pToJSVal #-}

instance PFromJSVal IntersectionObserver where
  pFromJSVal = IntersectionObserver
  {-# INLINE pFromJSVal #-}

instance ToJSVal IntersectionObserver where
  toJSVal = return . unIntersectionObserver
  {-# INLINE toJSVal #-}

instance FromJSVal IntersectionObserver where
  fromJSVal v = fmap IntersectionObserver <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IntersectionObserver
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IntersectionObserver where
  makeObject = makeObject . unIntersectionObserver


instance IsGObject IntersectionObserver where
  typeGType _ = gTypeIntersectionObserver
  {-# INLINE typeGType #-}

noIntersectionObserver :: Maybe IntersectionObserver
noIntersectionObserver = Nothing
{-# INLINE noIntersectionObserver #-}

gTypeIntersectionObserver :: JSM GType
gTypeIntersectionObserver = GType . Object <$> jsg "IntersectionObserver"

-- | Functions for this interface are in "JSDOM.IntersectionObserverEntry" (intersection-observer).
newtype IntersectionObserverEntry = IntersectionObserverEntry { unIntersectionObserverEntry :: JSVal }

instance PToJSVal IntersectionObserverEntry where
  pToJSVal = unIntersectionObserverEntry
  {-# INLINE pToJSVal #-}

instance PFromJSVal IntersectionObserverEntry where
  pFromJSVal = IntersectionObserverEntry
  {-# INLINE pFromJSVal #-}

instance ToJSVal IntersectionObserverEntry where
  toJSVal = return . unIntersectionObserverEntry
  {-# INLINE toJSVal #-}

instance FromJSVal IntersectionObserverEntry where
  fromJSVal v = fmap IntersectionObserverEntry <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IntersectionObserverEntry
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IntersectionObserverEntry where
  makeObject = makeObject . unIntersectionObserverEntry


instance IsGObject IntersectionObserverEntry where
  typeGType _ = gTypeIntersectionObserverEntry
  {-# INLINE typeGType #-}

noIntersectionObserverEntry :: Maybe IntersectionObserverEntry
noIntersectionObserverEntry = Nothing
{-# INLINE noIntersectionObserverEntry #-}

gTypeIntersectionObserverEntry :: JSM GType
gTypeIntersectionObserverEntry = GType . Object <$> jsg "IntersectionObserverEntry"

-- | Dictionary IntersectionObserverEntryInit (intersection-observer)
newtype IntersectionObserverEntryInit = IntersectionObserverEntryInit { unIntersectionObserverEntryInit :: JSVal }

instance PToJSVal IntersectionObserverEntryInit where
  pToJSVal = unIntersectionObserverEntryInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal IntersectionObserverEntryInit where
  pFromJSVal = IntersectionObserverEntryInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal IntersectionObserverEntryInit where
  toJSVal = return . unIntersectionObserverEntryInit
  {-# INLINE toJSVal #-}

instance FromJSVal IntersectionObserverEntryInit where
  fromJSVal v = fmap IntersectionObserverEntryInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IntersectionObserverEntryInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IntersectionObserverEntryInit where
  makeObject = makeObject . unIntersectionObserverEntryInit


instance IsGObject IntersectionObserverEntryInit where
  typeGType _ = gTypeIntersectionObserverEntryInit
  {-# INLINE typeGType #-}

noIntersectionObserverEntryInit :: Maybe IntersectionObserverEntryInit
noIntersectionObserverEntryInit = Nothing
{-# INLINE noIntersectionObserverEntryInit #-}

gTypeIntersectionObserverEntryInit :: JSM GType
gTypeIntersectionObserverEntryInit = GType . Object <$> jsg "Object"

-- | Dictionary IntersectionObserverInit (intersection-observer)
newtype IntersectionObserverInit = IntersectionObserverInit { unIntersectionObserverInit :: JSVal }

instance PToJSVal IntersectionObserverInit where
  pToJSVal = unIntersectionObserverInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal IntersectionObserverInit where
  pFromJSVal = IntersectionObserverInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal IntersectionObserverInit where
  toJSVal = return . unIntersectionObserverInit
  {-# INLINE toJSVal #-}

instance FromJSVal IntersectionObserverInit where
  fromJSVal v = fmap IntersectionObserverInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . IntersectionObserverInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject IntersectionObserverInit where
  makeObject = makeObject . unIntersectionObserverInit


instance IsGObject IntersectionObserverInit where
  typeGType _ = gTypeIntersectionObserverInit
  {-# INLINE typeGType #-}

noIntersectionObserverInit :: Maybe IntersectionObserverInit
noIntersectionObserverInit = Nothing
{-# INLINE noIntersectionObserverInit #-}

gTypeIntersectionObserverInit :: JSM GType
gTypeIntersectionObserverInit = GType . Object <$> jsg "Object"

-- | Dictionary JsonWebKey (webcrypto-2)
newtype JsonWebKey = JsonWebKey { unJsonWebKey :: JSVal }

instance PToJSVal JsonWebKey where
  pToJSVal = unJsonWebKey
  {-# INLINE pToJSVal #-}

instance PFromJSVal JsonWebKey where
  pFromJSVal = JsonWebKey
  {-# INLINE pFromJSVal #-}

instance ToJSVal JsonWebKey where
  toJSVal = return . unJsonWebKey
  {-# INLINE toJSVal #-}

instance FromJSVal JsonWebKey where
  fromJSVal v = fmap JsonWebKey <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . JsonWebKey
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject JsonWebKey where
  makeObject = makeObject . unJsonWebKey


instance IsGObject JsonWebKey where
  typeGType _ = gTypeJsonWebKey
  {-# INLINE typeGType #-}

noJsonWebKey :: Maybe JsonWebKey
noJsonWebKey = Nothing
{-# INLINE noJsonWebKey #-}

gTypeJsonWebKey :: JSM GType
gTypeJsonWebKey = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.KHR_parallel_shader_compile" (KHR_parallel_shader_compile).
newtype KHR_parallel_shader_compile = KHR_parallel_shader_compile { unKHR_parallel_shader_compile :: JSVal }

instance PToJSVal KHR_parallel_shader_compile where
  pToJSVal = unKHR_parallel_shader_compile
  {-# INLINE pToJSVal #-}

instance PFromJSVal KHR_parallel_shader_compile where
  pFromJSVal = KHR_parallel_shader_compile
  {-# INLINE pFromJSVal #-}

instance ToJSVal KHR_parallel_shader_compile where
  toJSVal = return . unKHR_parallel_shader_compile
  {-# INLINE toJSVal #-}

instance FromJSVal KHR_parallel_shader_compile where
  fromJSVal v = fmap KHR_parallel_shader_compile <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . KHR_parallel_shader_compile
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject KHR_parallel_shader_compile where
  makeObject = makeObject . unKHR_parallel_shader_compile


instance IsGObject KHR_parallel_shader_compile where
  typeGType _ = gTypeKHR_parallel_shader_compile
  {-# INLINE typeGType #-}

noKHR_parallel_shader_compile :: Maybe KHR_parallel_shader_compile
noKHR_parallel_shader_compile = Nothing
{-# INLINE noKHR_parallel_shader_compile #-}

gTypeKHR_parallel_shader_compile :: JSM GType
gTypeKHR_parallel_shader_compile = GType . Object <$> jsg "Object"

-- | Dictionary KeySystemTrackConfiguration (media-capabilities)
newtype KeySystemTrackConfiguration = KeySystemTrackConfiguration { unKeySystemTrackConfiguration :: JSVal }

instance PToJSVal KeySystemTrackConfiguration where
  pToJSVal = unKeySystemTrackConfiguration
  {-# INLINE pToJSVal #-}

instance PFromJSVal KeySystemTrackConfiguration where
  pFromJSVal = KeySystemTrackConfiguration
  {-# INLINE pFromJSVal #-}

instance ToJSVal KeySystemTrackConfiguration where
  toJSVal = return . unKeySystemTrackConfiguration
  {-# INLINE toJSVal #-}

instance FromJSVal KeySystemTrackConfiguration where
  fromJSVal v = fmap KeySystemTrackConfiguration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . KeySystemTrackConfiguration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject KeySystemTrackConfiguration where
  makeObject = makeObject . unKeySystemTrackConfiguration


instance IsGObject KeySystemTrackConfiguration where
  typeGType _ = gTypeKeySystemTrackConfiguration
  {-# INLINE typeGType #-}

noKeySystemTrackConfiguration :: Maybe KeySystemTrackConfiguration
noKeySystemTrackConfiguration = Nothing
{-# INLINE noKeySystemTrackConfiguration #-}

gTypeKeySystemTrackConfiguration :: JSM GType
gTypeKeySystemTrackConfiguration = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.KeyboardEvent" (uievents).
newtype KeyboardEvent = KeyboardEvent { unKeyboardEvent :: JSVal }

instance PToJSVal KeyboardEvent where
  pToJSVal = unKeyboardEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal KeyboardEvent where
  pFromJSVal = KeyboardEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal KeyboardEvent where
  toJSVal = return . unKeyboardEvent
  {-# INLINE toJSVal #-}

instance FromJSVal KeyboardEvent where
  fromJSVal v = fmap KeyboardEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . KeyboardEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject KeyboardEvent where
  makeObject = makeObject . unKeyboardEvent

instance IsUIEvent KeyboardEvent
instance IsEvent KeyboardEvent

instance IsGObject KeyboardEvent where
  typeGType _ = gTypeKeyboardEvent
  {-# INLINE typeGType #-}

noKeyboardEvent :: Maybe KeyboardEvent
noKeyboardEvent = Nothing
{-# INLINE noKeyboardEvent #-}

gTypeKeyboardEvent :: JSM GType
gTypeKeyboardEvent = GType . Object <$> jsg "KeyboardEvent"

-- | Dictionary KeyboardEventInit (uievents)
newtype KeyboardEventInit = KeyboardEventInit { unKeyboardEventInit :: JSVal }

instance PToJSVal KeyboardEventInit where
  pToJSVal = unKeyboardEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal KeyboardEventInit where
  pFromJSVal = KeyboardEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal KeyboardEventInit where
  toJSVal = return . unKeyboardEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal KeyboardEventInit where
  fromJSVal v = fmap KeyboardEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . KeyboardEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject KeyboardEventInit where
  makeObject = makeObject . unKeyboardEventInit

instance IsEventModifierInit KeyboardEventInit
instance IsUIEventInit KeyboardEventInit
instance IsEventInit KeyboardEventInit

instance IsGObject KeyboardEventInit where
  typeGType _ = gTypeKeyboardEventInit
  {-# INLINE typeGType #-}

noKeyboardEventInit :: Maybe KeyboardEventInit
noKeyboardEventInit = Nothing
{-# INLINE noKeyboardEventInit #-}

gTypeKeyboardEventInit :: JSM GType
gTypeKeyboardEventInit = GType . Object <$> jsg "Object"

-- | Dictionary KeyframeAnimationOptions (web-animations-1)
newtype KeyframeAnimationOptions = KeyframeAnimationOptions { unKeyframeAnimationOptions :: JSVal }

instance PToJSVal KeyframeAnimationOptions where
  pToJSVal = unKeyframeAnimationOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal KeyframeAnimationOptions where
  pFromJSVal = KeyframeAnimationOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal KeyframeAnimationOptions where
  toJSVal = return . unKeyframeAnimationOptions
  {-# INLINE toJSVal #-}

instance FromJSVal KeyframeAnimationOptions where
  fromJSVal v = fmap KeyframeAnimationOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . KeyframeAnimationOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject KeyframeAnimationOptions where
  makeObject = makeObject . unKeyframeAnimationOptions

instance IsKeyframeEffectOptions KeyframeAnimationOptions
instance IsEffectTiming KeyframeAnimationOptions

instance IsGObject KeyframeAnimationOptions where
  typeGType _ = gTypeKeyframeAnimationOptions
  {-# INLINE typeGType #-}

noKeyframeAnimationOptions :: Maybe KeyframeAnimationOptions
noKeyframeAnimationOptions = Nothing
{-# INLINE noKeyframeAnimationOptions #-}

gTypeKeyframeAnimationOptions :: JSM GType
gTypeKeyframeAnimationOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.KeyframeEffect" (web-animations-1).
newtype KeyframeEffect = KeyframeEffect { unKeyframeEffect :: JSVal }

instance PToJSVal KeyframeEffect where
  pToJSVal = unKeyframeEffect
  {-# INLINE pToJSVal #-}

instance PFromJSVal KeyframeEffect where
  pFromJSVal = KeyframeEffect
  {-# INLINE pFromJSVal #-}

instance ToJSVal KeyframeEffect where
  toJSVal = return . unKeyframeEffect
  {-# INLINE toJSVal #-}

instance FromJSVal KeyframeEffect where
  fromJSVal v = fmap KeyframeEffect <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . KeyframeEffect
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject KeyframeEffect where
  makeObject = makeObject . unKeyframeEffect

instance IsAnimationEffect KeyframeEffect

instance IsGObject KeyframeEffect where
  typeGType _ = gTypeKeyframeEffect
  {-# INLINE typeGType #-}

noKeyframeEffect :: Maybe KeyframeEffect
noKeyframeEffect = Nothing
{-# INLINE noKeyframeEffect #-}

gTypeKeyframeEffect :: JSM GType
gTypeKeyframeEffect = GType . Object <$> jsg "KeyframeEffect"

-- | Dictionary KeyframeEffectOptions (web-animations-1)
newtype KeyframeEffectOptions = KeyframeEffectOptions { unKeyframeEffectOptions :: JSVal }

instance PToJSVal KeyframeEffectOptions where
  pToJSVal = unKeyframeEffectOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal KeyframeEffectOptions where
  pFromJSVal = KeyframeEffectOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal KeyframeEffectOptions where
  toJSVal = return . unKeyframeEffectOptions
  {-# INLINE toJSVal #-}

instance FromJSVal KeyframeEffectOptions where
  fromJSVal v = fmap KeyframeEffectOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . KeyframeEffectOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject KeyframeEffectOptions where
  makeObject = makeObject . unKeyframeEffectOptions

class (IsEffectTiming o, IsGObject o) => IsKeyframeEffectOptions o
toKeyframeEffectOptions :: IsKeyframeEffectOptions o => o -> KeyframeEffectOptions
toKeyframeEffectOptions = KeyframeEffectOptions . coerce

instance IsKeyframeEffectOptions KeyframeEffectOptions
instance IsEffectTiming KeyframeEffectOptions

instance IsGObject KeyframeEffectOptions where
  typeGType _ = gTypeKeyframeEffectOptions
  {-# INLINE typeGType #-}

noKeyframeEffectOptions :: Maybe KeyframeEffectOptions
noKeyframeEffectOptions = Nothing
{-# INLINE noKeyframeEffectOptions #-}

gTypeKeyframeEffectOptions :: JSM GType
gTypeKeyframeEffectOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.LargestContentfulPaint" (largest-contentful-paint).
newtype LargestContentfulPaint = LargestContentfulPaint { unLargestContentfulPaint :: JSVal }

instance PToJSVal LargestContentfulPaint where
  pToJSVal = unLargestContentfulPaint
  {-# INLINE pToJSVal #-}

instance PFromJSVal LargestContentfulPaint where
  pFromJSVal = LargestContentfulPaint
  {-# INLINE pFromJSVal #-}

instance ToJSVal LargestContentfulPaint where
  toJSVal = return . unLargestContentfulPaint
  {-# INLINE toJSVal #-}

instance FromJSVal LargestContentfulPaint where
  fromJSVal v = fmap LargestContentfulPaint <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . LargestContentfulPaint
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject LargestContentfulPaint where
  makeObject = makeObject . unLargestContentfulPaint

instance IsPaintTimingMixin LargestContentfulPaint
instance IsPerformanceEntry LargestContentfulPaint

instance IsGObject LargestContentfulPaint where
  typeGType _ = gTypeLargestContentfulPaint
  {-# INLINE typeGType #-}

noLargestContentfulPaint :: Maybe LargestContentfulPaint
noLargestContentfulPaint = Nothing
{-# INLINE noLargestContentfulPaint #-}

gTypeLargestContentfulPaint :: JSM GType
gTypeLargestContentfulPaint = GType . Object <$> jsg "LargestContentfulPaint"

-- | Functions for this interface are in "JSDOM.LinkStyle" (cssom-1).
newtype LinkStyle = LinkStyle { unLinkStyle :: JSVal }

instance PToJSVal LinkStyle where
  pToJSVal = unLinkStyle
  {-# INLINE pToJSVal #-}

instance PFromJSVal LinkStyle where
  pFromJSVal = LinkStyle
  {-# INLINE pFromJSVal #-}

instance ToJSVal LinkStyle where
  toJSVal = return . unLinkStyle
  {-# INLINE toJSVal #-}

instance FromJSVal LinkStyle where
  fromJSVal v = fmap LinkStyle <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . LinkStyle
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject LinkStyle where
  makeObject = makeObject . unLinkStyle

class (IsGObject o) => IsLinkStyle o
toLinkStyle :: IsLinkStyle o => o -> LinkStyle
toLinkStyle = LinkStyle . coerce

instance IsLinkStyle LinkStyle

instance IsGObject LinkStyle where
  typeGType _ = gTypeLinkStyle
  {-# INLINE typeGType #-}

noLinkStyle :: Maybe LinkStyle
noLinkStyle = Nothing
{-# INLINE noLinkStyle #-}

gTypeLinkStyle :: JSM GType
gTypeLinkStyle = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Location" (html).
newtype Location = Location { unLocation :: JSVal }

instance PToJSVal Location where
  pToJSVal = unLocation
  {-# INLINE pToJSVal #-}

instance PFromJSVal Location where
  pFromJSVal = Location
  {-# INLINE pFromJSVal #-}

instance ToJSVal Location where
  toJSVal = return . unLocation
  {-# INLINE toJSVal #-}

instance FromJSVal Location where
  fromJSVal v = fmap Location <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Location
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Location where
  makeObject = makeObject . unLocation


instance IsGObject Location where
  typeGType _ = gTypeLocation
  {-# INLINE typeGType #-}

noLocation :: Maybe Location
noLocation = Nothing
{-# INLINE noLocation #-}

gTypeLocation :: JSM GType
gTypeLocation = GType . Object <$> jsg "Location"

-- | Functions for this interface are in "JSDOM.Lock" (web-locks).
newtype Lock = Lock { unLock :: JSVal }

instance PToJSVal Lock where
  pToJSVal = unLock
  {-# INLINE pToJSVal #-}

instance PFromJSVal Lock where
  pFromJSVal = Lock
  {-# INLINE pFromJSVal #-}

instance ToJSVal Lock where
  toJSVal = return . unLock
  {-# INLINE toJSVal #-}

instance FromJSVal Lock where
  fromJSVal v = fmap Lock <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Lock
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Lock where
  makeObject = makeObject . unLock


instance IsGObject Lock where
  typeGType _ = gTypeLock
  {-# INLINE typeGType #-}

noLock :: Maybe Lock
noLock = Nothing
{-# INLINE noLock #-}

gTypeLock :: JSM GType
gTypeLock = GType . Object <$> jsg "Lock"

-- | Dictionary LockInfo (web-locks)
newtype LockInfo = LockInfo { unLockInfo :: JSVal }

instance PToJSVal LockInfo where
  pToJSVal = unLockInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal LockInfo where
  pFromJSVal = LockInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal LockInfo where
  toJSVal = return . unLockInfo
  {-# INLINE toJSVal #-}

instance FromJSVal LockInfo where
  fromJSVal v = fmap LockInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . LockInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject LockInfo where
  makeObject = makeObject . unLockInfo


instance IsGObject LockInfo where
  typeGType _ = gTypeLockInfo
  {-# INLINE typeGType #-}

noLockInfo :: Maybe LockInfo
noLockInfo = Nothing
{-# INLINE noLockInfo #-}

gTypeLockInfo :: JSM GType
gTypeLockInfo = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.LockManager" (web-locks).
newtype LockManager = LockManager { unLockManager :: JSVal }

instance PToJSVal LockManager where
  pToJSVal = unLockManager
  {-# INLINE pToJSVal #-}

instance PFromJSVal LockManager where
  pFromJSVal = LockManager
  {-# INLINE pFromJSVal #-}

instance ToJSVal LockManager where
  toJSVal = return . unLockManager
  {-# INLINE toJSVal #-}

instance FromJSVal LockManager where
  fromJSVal v = fmap LockManager <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . LockManager
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject LockManager where
  makeObject = makeObject . unLockManager


instance IsGObject LockManager where
  typeGType _ = gTypeLockManager
  {-# INLINE typeGType #-}

noLockManager :: Maybe LockManager
noLockManager = Nothing
{-# INLINE noLockManager #-}

gTypeLockManager :: JSM GType
gTypeLockManager = GType . Object <$> jsg "LockManager"

-- | Dictionary LockManagerSnapshot (web-locks)
newtype LockManagerSnapshot = LockManagerSnapshot { unLockManagerSnapshot :: JSVal }

instance PToJSVal LockManagerSnapshot where
  pToJSVal = unLockManagerSnapshot
  {-# INLINE pToJSVal #-}

instance PFromJSVal LockManagerSnapshot where
  pFromJSVal = LockManagerSnapshot
  {-# INLINE pFromJSVal #-}

instance ToJSVal LockManagerSnapshot where
  toJSVal = return . unLockManagerSnapshot
  {-# INLINE toJSVal #-}

instance FromJSVal LockManagerSnapshot where
  fromJSVal v = fmap LockManagerSnapshot <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . LockManagerSnapshot
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject LockManagerSnapshot where
  makeObject = makeObject . unLockManagerSnapshot


instance IsGObject LockManagerSnapshot where
  typeGType _ = gTypeLockManagerSnapshot
  {-# INLINE typeGType #-}

noLockManagerSnapshot :: Maybe LockManagerSnapshot
noLockManagerSnapshot = Nothing
{-# INLINE noLockManagerSnapshot #-}

gTypeLockManagerSnapshot :: JSM GType
gTypeLockManagerSnapshot = GType . Object <$> jsg "Object"

-- | Dictionary LockOptions (web-locks)
newtype LockOptions = LockOptions { unLockOptions :: JSVal }

instance PToJSVal LockOptions where
  pToJSVal = unLockOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal LockOptions where
  pFromJSVal = LockOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal LockOptions where
  toJSVal = return . unLockOptions
  {-# INLINE toJSVal #-}

instance FromJSVal LockOptions where
  fromJSVal v = fmap LockOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . LockOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject LockOptions where
  makeObject = makeObject . unLockOptions


instance IsGObject LockOptions where
  typeGType _ = gTypeLockOptions
  {-# INLINE typeGType #-}

noLockOptions :: Maybe LockOptions
noLockOptions = Nothing
{-# INLINE noLockOptions #-}

gTypeLockOptions :: JSM GType
gTypeLockOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MIDIAccess" (webmidi).
newtype MIDIAccess = MIDIAccess { unMIDIAccess :: JSVal }

instance PToJSVal MIDIAccess where
  pToJSVal = unMIDIAccess
  {-# INLINE pToJSVal #-}

instance PFromJSVal MIDIAccess where
  pFromJSVal = MIDIAccess
  {-# INLINE pFromJSVal #-}

instance ToJSVal MIDIAccess where
  toJSVal = return . unMIDIAccess
  {-# INLINE toJSVal #-}

instance FromJSVal MIDIAccess where
  fromJSVal v = fmap MIDIAccess <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MIDIAccess
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MIDIAccess where
  makeObject = makeObject . unMIDIAccess

instance IsEventTarget MIDIAccess

instance IsGObject MIDIAccess where
  typeGType _ = gTypeMIDIAccess
  {-# INLINE typeGType #-}

noMIDIAccess :: Maybe MIDIAccess
noMIDIAccess = Nothing
{-# INLINE noMIDIAccess #-}

gTypeMIDIAccess :: JSM GType
gTypeMIDIAccess = GType . Object <$> jsg "MIDIAccess"

-- | Functions for this interface are in "JSDOM.MIDIConnectionEvent" (webmidi).
newtype MIDIConnectionEvent = MIDIConnectionEvent { unMIDIConnectionEvent :: JSVal }

instance PToJSVal MIDIConnectionEvent where
  pToJSVal = unMIDIConnectionEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal MIDIConnectionEvent where
  pFromJSVal = MIDIConnectionEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal MIDIConnectionEvent where
  toJSVal = return . unMIDIConnectionEvent
  {-# INLINE toJSVal #-}

instance FromJSVal MIDIConnectionEvent where
  fromJSVal v = fmap MIDIConnectionEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MIDIConnectionEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MIDIConnectionEvent where
  makeObject = makeObject . unMIDIConnectionEvent

instance IsEvent MIDIConnectionEvent

instance IsGObject MIDIConnectionEvent where
  typeGType _ = gTypeMIDIConnectionEvent
  {-# INLINE typeGType #-}

noMIDIConnectionEvent :: Maybe MIDIConnectionEvent
noMIDIConnectionEvent = Nothing
{-# INLINE noMIDIConnectionEvent #-}

gTypeMIDIConnectionEvent :: JSM GType
gTypeMIDIConnectionEvent = GType . Object <$> jsg "MIDIConnectionEvent"

-- | Dictionary MIDIConnectionEventInit (webmidi)
newtype MIDIConnectionEventInit = MIDIConnectionEventInit { unMIDIConnectionEventInit :: JSVal }

instance PToJSVal MIDIConnectionEventInit where
  pToJSVal = unMIDIConnectionEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal MIDIConnectionEventInit where
  pFromJSVal = MIDIConnectionEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal MIDIConnectionEventInit where
  toJSVal = return . unMIDIConnectionEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal MIDIConnectionEventInit where
  fromJSVal v = fmap MIDIConnectionEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MIDIConnectionEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MIDIConnectionEventInit where
  makeObject = makeObject . unMIDIConnectionEventInit

instance IsEventInit MIDIConnectionEventInit

instance IsGObject MIDIConnectionEventInit where
  typeGType _ = gTypeMIDIConnectionEventInit
  {-# INLINE typeGType #-}

noMIDIConnectionEventInit :: Maybe MIDIConnectionEventInit
noMIDIConnectionEventInit = Nothing
{-# INLINE noMIDIConnectionEventInit #-}

gTypeMIDIConnectionEventInit :: JSM GType
gTypeMIDIConnectionEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MIDIInput" (webmidi).
newtype MIDIInput = MIDIInput { unMIDIInput :: JSVal }

instance PToJSVal MIDIInput where
  pToJSVal = unMIDIInput
  {-# INLINE pToJSVal #-}

instance PFromJSVal MIDIInput where
  pFromJSVal = MIDIInput
  {-# INLINE pFromJSVal #-}

instance ToJSVal MIDIInput where
  toJSVal = return . unMIDIInput
  {-# INLINE toJSVal #-}

instance FromJSVal MIDIInput where
  fromJSVal v = fmap MIDIInput <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MIDIInput
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MIDIInput where
  makeObject = makeObject . unMIDIInput

instance IsMIDIPort MIDIInput
instance IsEventTarget MIDIInput

instance IsGObject MIDIInput where
  typeGType _ = gTypeMIDIInput
  {-# INLINE typeGType #-}

noMIDIInput :: Maybe MIDIInput
noMIDIInput = Nothing
{-# INLINE noMIDIInput #-}

gTypeMIDIInput :: JSM GType
gTypeMIDIInput = GType . Object <$> jsg "MIDIInput"

-- | Functions for this interface are in "JSDOM.MIDIInputMap" (webmidi).
newtype MIDIInputMap = MIDIInputMap { unMIDIInputMap :: JSVal }

instance PToJSVal MIDIInputMap where
  pToJSVal = unMIDIInputMap
  {-# INLINE pToJSVal #-}

instance PFromJSVal MIDIInputMap where
  pFromJSVal = MIDIInputMap
  {-# INLINE pFromJSVal #-}

instance ToJSVal MIDIInputMap where
  toJSVal = return . unMIDIInputMap
  {-# INLINE toJSVal #-}

instance FromJSVal MIDIInputMap where
  fromJSVal v = fmap MIDIInputMap <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MIDIInputMap
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MIDIInputMap where
  makeObject = makeObject . unMIDIInputMap


instance IsGObject MIDIInputMap where
  typeGType _ = gTypeMIDIInputMap
  {-# INLINE typeGType #-}

noMIDIInputMap :: Maybe MIDIInputMap
noMIDIInputMap = Nothing
{-# INLINE noMIDIInputMap #-}

gTypeMIDIInputMap :: JSM GType
gTypeMIDIInputMap = GType . Object <$> jsg "MIDIInputMap"

-- | Functions for this interface are in "JSDOM.MIDIMessageEvent" (webmidi).
newtype MIDIMessageEvent = MIDIMessageEvent { unMIDIMessageEvent :: JSVal }

instance PToJSVal MIDIMessageEvent where
  pToJSVal = unMIDIMessageEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal MIDIMessageEvent where
  pFromJSVal = MIDIMessageEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal MIDIMessageEvent where
  toJSVal = return . unMIDIMessageEvent
  {-# INLINE toJSVal #-}

instance FromJSVal MIDIMessageEvent where
  fromJSVal v = fmap MIDIMessageEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MIDIMessageEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MIDIMessageEvent where
  makeObject = makeObject . unMIDIMessageEvent

instance IsEvent MIDIMessageEvent

instance IsGObject MIDIMessageEvent where
  typeGType _ = gTypeMIDIMessageEvent
  {-# INLINE typeGType #-}

noMIDIMessageEvent :: Maybe MIDIMessageEvent
noMIDIMessageEvent = Nothing
{-# INLINE noMIDIMessageEvent #-}

gTypeMIDIMessageEvent :: JSM GType
gTypeMIDIMessageEvent = GType . Object <$> jsg "MIDIMessageEvent"

-- | Dictionary MIDIMessageEventInit (webmidi)
newtype MIDIMessageEventInit = MIDIMessageEventInit { unMIDIMessageEventInit :: JSVal }

instance PToJSVal MIDIMessageEventInit where
  pToJSVal = unMIDIMessageEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal MIDIMessageEventInit where
  pFromJSVal = MIDIMessageEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal MIDIMessageEventInit where
  toJSVal = return . unMIDIMessageEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal MIDIMessageEventInit where
  fromJSVal v = fmap MIDIMessageEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MIDIMessageEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MIDIMessageEventInit where
  makeObject = makeObject . unMIDIMessageEventInit

instance IsEventInit MIDIMessageEventInit

instance IsGObject MIDIMessageEventInit where
  typeGType _ = gTypeMIDIMessageEventInit
  {-# INLINE typeGType #-}

noMIDIMessageEventInit :: Maybe MIDIMessageEventInit
noMIDIMessageEventInit = Nothing
{-# INLINE noMIDIMessageEventInit #-}

gTypeMIDIMessageEventInit :: JSM GType
gTypeMIDIMessageEventInit = GType . Object <$> jsg "Object"

-- | Dictionary MIDIOptions (webmidi)
newtype MIDIOptions = MIDIOptions { unMIDIOptions :: JSVal }

instance PToJSVal MIDIOptions where
  pToJSVal = unMIDIOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal MIDIOptions where
  pFromJSVal = MIDIOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal MIDIOptions where
  toJSVal = return . unMIDIOptions
  {-# INLINE toJSVal #-}

instance FromJSVal MIDIOptions where
  fromJSVal v = fmap MIDIOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MIDIOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MIDIOptions where
  makeObject = makeObject . unMIDIOptions


instance IsGObject MIDIOptions where
  typeGType _ = gTypeMIDIOptions
  {-# INLINE typeGType #-}

noMIDIOptions :: Maybe MIDIOptions
noMIDIOptions = Nothing
{-# INLINE noMIDIOptions #-}

gTypeMIDIOptions :: JSM GType
gTypeMIDIOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MIDIOutput" (webmidi).
newtype MIDIOutput = MIDIOutput { unMIDIOutput :: JSVal }

instance PToJSVal MIDIOutput where
  pToJSVal = unMIDIOutput
  {-# INLINE pToJSVal #-}

instance PFromJSVal MIDIOutput where
  pFromJSVal = MIDIOutput
  {-# INLINE pFromJSVal #-}

instance ToJSVal MIDIOutput where
  toJSVal = return . unMIDIOutput
  {-# INLINE toJSVal #-}

instance FromJSVal MIDIOutput where
  fromJSVal v = fmap MIDIOutput <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MIDIOutput
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MIDIOutput where
  makeObject = makeObject . unMIDIOutput

instance IsMIDIPort MIDIOutput
instance IsEventTarget MIDIOutput

instance IsGObject MIDIOutput where
  typeGType _ = gTypeMIDIOutput
  {-# INLINE typeGType #-}

noMIDIOutput :: Maybe MIDIOutput
noMIDIOutput = Nothing
{-# INLINE noMIDIOutput #-}

gTypeMIDIOutput :: JSM GType
gTypeMIDIOutput = GType . Object <$> jsg "MIDIOutput"

-- | Functions for this interface are in "JSDOM.MIDIOutputMap" (webmidi).
newtype MIDIOutputMap = MIDIOutputMap { unMIDIOutputMap :: JSVal }

instance PToJSVal MIDIOutputMap where
  pToJSVal = unMIDIOutputMap
  {-# INLINE pToJSVal #-}

instance PFromJSVal MIDIOutputMap where
  pFromJSVal = MIDIOutputMap
  {-# INLINE pFromJSVal #-}

instance ToJSVal MIDIOutputMap where
  toJSVal = return . unMIDIOutputMap
  {-# INLINE toJSVal #-}

instance FromJSVal MIDIOutputMap where
  fromJSVal v = fmap MIDIOutputMap <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MIDIOutputMap
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MIDIOutputMap where
  makeObject = makeObject . unMIDIOutputMap


instance IsGObject MIDIOutputMap where
  typeGType _ = gTypeMIDIOutputMap
  {-# INLINE typeGType #-}

noMIDIOutputMap :: Maybe MIDIOutputMap
noMIDIOutputMap = Nothing
{-# INLINE noMIDIOutputMap #-}

gTypeMIDIOutputMap :: JSM GType
gTypeMIDIOutputMap = GType . Object <$> jsg "MIDIOutputMap"

-- | Functions for this interface are in "JSDOM.MIDIPort" (webmidi).
newtype MIDIPort = MIDIPort { unMIDIPort :: JSVal }

instance PToJSVal MIDIPort where
  pToJSVal = unMIDIPort
  {-# INLINE pToJSVal #-}

instance PFromJSVal MIDIPort where
  pFromJSVal = MIDIPort
  {-# INLINE pFromJSVal #-}

instance ToJSVal MIDIPort where
  toJSVal = return . unMIDIPort
  {-# INLINE toJSVal #-}

instance FromJSVal MIDIPort where
  fromJSVal v = fmap MIDIPort <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MIDIPort
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MIDIPort where
  makeObject = makeObject . unMIDIPort

class (IsEventTarget o, IsGObject o) => IsMIDIPort o
toMIDIPort :: IsMIDIPort o => o -> MIDIPort
toMIDIPort = MIDIPort . coerce

instance IsMIDIPort MIDIPort
instance IsEventTarget MIDIPort

instance IsGObject MIDIPort where
  typeGType _ = gTypeMIDIPort
  {-# INLINE typeGType #-}

noMIDIPort :: Maybe MIDIPort
noMIDIPort = Nothing
{-# INLINE noMIDIPort #-}

gTypeMIDIPort :: JSM GType
gTypeMIDIPort = GType . Object <$> jsg "MIDIPort"

-- | Functions for this interface are in "JSDOM.MathMLElement" (mathml-core).
newtype MathMLElement = MathMLElement { unMathMLElement :: JSVal }

instance PToJSVal MathMLElement where
  pToJSVal = unMathMLElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal MathMLElement where
  pFromJSVal = MathMLElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal MathMLElement where
  toJSVal = return . unMathMLElement
  {-# INLINE toJSVal #-}

instance FromJSVal MathMLElement where
  fromJSVal v = fmap MathMLElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MathMLElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MathMLElement where
  makeObject = makeObject . unMathMLElement

instance IsElementCSSInlineStyle MathMLElement
instance IsGlobalEventHandlers MathMLElement
instance IsHTMLOrSVGOrMathMLElement MathMLElement
instance IsElement MathMLElement
instance IsARIAMixin MathMLElement
instance IsARIANotifyMixin MathMLElement
instance IsAnimatable MathMLElement
instance IsChildNode MathMLElement
instance IsNonDocumentTypeChildNode MathMLElement
instance IsParentNode MathMLElement
instance IsSlottable MathMLElement
instance IsNode MathMLElement
instance IsEventTarget MathMLElement

instance IsGObject MathMLElement where
  typeGType _ = gTypeMathMLElement
  {-# INLINE typeGType #-}

noMathMLElement :: Maybe MathMLElement
noMathMLElement = Nothing
{-# INLINE noMathMLElement #-}

gTypeMathMLElement :: JSM GType
gTypeMathMLElement = GType . Object <$> jsg "MathMLElement"

-- | Functions for this interface are in "JSDOM.MediaCapabilities" (media-capabilities).
newtype MediaCapabilities = MediaCapabilities { unMediaCapabilities :: JSVal }

instance PToJSVal MediaCapabilities where
  pToJSVal = unMediaCapabilities
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaCapabilities where
  pFromJSVal = MediaCapabilities
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaCapabilities where
  toJSVal = return . unMediaCapabilities
  {-# INLINE toJSVal #-}

instance FromJSVal MediaCapabilities where
  fromJSVal v = fmap MediaCapabilities <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaCapabilities
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaCapabilities where
  makeObject = makeObject . unMediaCapabilities


instance IsGObject MediaCapabilities where
  typeGType _ = gTypeMediaCapabilities
  {-# INLINE typeGType #-}

noMediaCapabilities :: Maybe MediaCapabilities
noMediaCapabilities = Nothing
{-# INLINE noMediaCapabilities #-}

gTypeMediaCapabilities :: JSM GType
gTypeMediaCapabilities = GType . Object <$> jsg "MediaCapabilities"

-- | Dictionary MediaCapabilitiesDecodingInfo (media-capabilities)
newtype MediaCapabilitiesDecodingInfo = MediaCapabilitiesDecodingInfo { unMediaCapabilitiesDecodingInfo :: JSVal }

instance PToJSVal MediaCapabilitiesDecodingInfo where
  pToJSVal = unMediaCapabilitiesDecodingInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaCapabilitiesDecodingInfo where
  pFromJSVal = MediaCapabilitiesDecodingInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaCapabilitiesDecodingInfo where
  toJSVal = return . unMediaCapabilitiesDecodingInfo
  {-# INLINE toJSVal #-}

instance FromJSVal MediaCapabilitiesDecodingInfo where
  fromJSVal v = fmap MediaCapabilitiesDecodingInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaCapabilitiesDecodingInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaCapabilitiesDecodingInfo where
  makeObject = makeObject . unMediaCapabilitiesDecodingInfo

instance IsMediaCapabilitiesInfo MediaCapabilitiesDecodingInfo

instance IsGObject MediaCapabilitiesDecodingInfo where
  typeGType _ = gTypeMediaCapabilitiesDecodingInfo
  {-# INLINE typeGType #-}

noMediaCapabilitiesDecodingInfo :: Maybe MediaCapabilitiesDecodingInfo
noMediaCapabilitiesDecodingInfo = Nothing
{-# INLINE noMediaCapabilitiesDecodingInfo #-}

gTypeMediaCapabilitiesDecodingInfo :: JSM GType
gTypeMediaCapabilitiesDecodingInfo = GType . Object <$> jsg "Object"

-- | Dictionary MediaCapabilitiesEncodingInfo (media-capabilities)
newtype MediaCapabilitiesEncodingInfo = MediaCapabilitiesEncodingInfo { unMediaCapabilitiesEncodingInfo :: JSVal }

instance PToJSVal MediaCapabilitiesEncodingInfo where
  pToJSVal = unMediaCapabilitiesEncodingInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaCapabilitiesEncodingInfo where
  pFromJSVal = MediaCapabilitiesEncodingInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaCapabilitiesEncodingInfo where
  toJSVal = return . unMediaCapabilitiesEncodingInfo
  {-# INLINE toJSVal #-}

instance FromJSVal MediaCapabilitiesEncodingInfo where
  fromJSVal v = fmap MediaCapabilitiesEncodingInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaCapabilitiesEncodingInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaCapabilitiesEncodingInfo where
  makeObject = makeObject . unMediaCapabilitiesEncodingInfo

instance IsMediaCapabilitiesInfo MediaCapabilitiesEncodingInfo

instance IsGObject MediaCapabilitiesEncodingInfo where
  typeGType _ = gTypeMediaCapabilitiesEncodingInfo
  {-# INLINE typeGType #-}

noMediaCapabilitiesEncodingInfo :: Maybe MediaCapabilitiesEncodingInfo
noMediaCapabilitiesEncodingInfo = Nothing
{-# INLINE noMediaCapabilitiesEncodingInfo #-}

gTypeMediaCapabilitiesEncodingInfo :: JSM GType
gTypeMediaCapabilitiesEncodingInfo = GType . Object <$> jsg "Object"

-- | Dictionary MediaCapabilitiesInfo (media-capabilities)
newtype MediaCapabilitiesInfo = MediaCapabilitiesInfo { unMediaCapabilitiesInfo :: JSVal }

instance PToJSVal MediaCapabilitiesInfo where
  pToJSVal = unMediaCapabilitiesInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaCapabilitiesInfo where
  pFromJSVal = MediaCapabilitiesInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaCapabilitiesInfo where
  toJSVal = return . unMediaCapabilitiesInfo
  {-# INLINE toJSVal #-}

instance FromJSVal MediaCapabilitiesInfo where
  fromJSVal v = fmap MediaCapabilitiesInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaCapabilitiesInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaCapabilitiesInfo where
  makeObject = makeObject . unMediaCapabilitiesInfo

class (IsGObject o) => IsMediaCapabilitiesInfo o
toMediaCapabilitiesInfo :: IsMediaCapabilitiesInfo o => o -> MediaCapabilitiesInfo
toMediaCapabilitiesInfo = MediaCapabilitiesInfo . coerce

instance IsMediaCapabilitiesInfo MediaCapabilitiesInfo

instance IsGObject MediaCapabilitiesInfo where
  typeGType _ = gTypeMediaCapabilitiesInfo
  {-# INLINE typeGType #-}

noMediaCapabilitiesInfo :: Maybe MediaCapabilitiesInfo
noMediaCapabilitiesInfo = Nothing
{-# INLINE noMediaCapabilitiesInfo #-}

gTypeMediaCapabilitiesInfo :: JSM GType
gTypeMediaCapabilitiesInfo = GType . Object <$> jsg "Object"

-- | Dictionary MediaCapabilitiesKeySystemConfiguration (media-capabilities)
newtype MediaCapabilitiesKeySystemConfiguration = MediaCapabilitiesKeySystemConfiguration { unMediaCapabilitiesKeySystemConfiguration :: JSVal }

instance PToJSVal MediaCapabilitiesKeySystemConfiguration where
  pToJSVal = unMediaCapabilitiesKeySystemConfiguration
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaCapabilitiesKeySystemConfiguration where
  pFromJSVal = MediaCapabilitiesKeySystemConfiguration
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaCapabilitiesKeySystemConfiguration where
  toJSVal = return . unMediaCapabilitiesKeySystemConfiguration
  {-# INLINE toJSVal #-}

instance FromJSVal MediaCapabilitiesKeySystemConfiguration where
  fromJSVal v = fmap MediaCapabilitiesKeySystemConfiguration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaCapabilitiesKeySystemConfiguration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaCapabilitiesKeySystemConfiguration where
  makeObject = makeObject . unMediaCapabilitiesKeySystemConfiguration


instance IsGObject MediaCapabilitiesKeySystemConfiguration where
  typeGType _ = gTypeMediaCapabilitiesKeySystemConfiguration
  {-# INLINE typeGType #-}

noMediaCapabilitiesKeySystemConfiguration :: Maybe MediaCapabilitiesKeySystemConfiguration
noMediaCapabilitiesKeySystemConfiguration = Nothing
{-# INLINE noMediaCapabilitiesKeySystemConfiguration #-}

gTypeMediaCapabilitiesKeySystemConfiguration :: JSM GType
gTypeMediaCapabilitiesKeySystemConfiguration = GType . Object <$> jsg "Object"

-- | Dictionary MediaConfiguration (media-capabilities)
newtype MediaConfiguration = MediaConfiguration { unMediaConfiguration :: JSVal }

instance PToJSVal MediaConfiguration where
  pToJSVal = unMediaConfiguration
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaConfiguration where
  pFromJSVal = MediaConfiguration
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaConfiguration where
  toJSVal = return . unMediaConfiguration
  {-# INLINE toJSVal #-}

instance FromJSVal MediaConfiguration where
  fromJSVal v = fmap MediaConfiguration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaConfiguration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaConfiguration where
  makeObject = makeObject . unMediaConfiguration

class (IsGObject o) => IsMediaConfiguration o
toMediaConfiguration :: IsMediaConfiguration o => o -> MediaConfiguration
toMediaConfiguration = MediaConfiguration . coerce

instance IsMediaConfiguration MediaConfiguration

instance IsGObject MediaConfiguration where
  typeGType _ = gTypeMediaConfiguration
  {-# INLINE typeGType #-}

noMediaConfiguration :: Maybe MediaConfiguration
noMediaConfiguration = Nothing
{-# INLINE noMediaConfiguration #-}

gTypeMediaConfiguration :: JSM GType
gTypeMediaConfiguration = GType . Object <$> jsg "Object"

-- | Dictionary MediaDecodingConfiguration (media-capabilities)
newtype MediaDecodingConfiguration = MediaDecodingConfiguration { unMediaDecodingConfiguration :: JSVal }

instance PToJSVal MediaDecodingConfiguration where
  pToJSVal = unMediaDecodingConfiguration
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaDecodingConfiguration where
  pFromJSVal = MediaDecodingConfiguration
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaDecodingConfiguration where
  toJSVal = return . unMediaDecodingConfiguration
  {-# INLINE toJSVal #-}

instance FromJSVal MediaDecodingConfiguration where
  fromJSVal v = fmap MediaDecodingConfiguration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaDecodingConfiguration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaDecodingConfiguration where
  makeObject = makeObject . unMediaDecodingConfiguration

instance IsMediaConfiguration MediaDecodingConfiguration

instance IsGObject MediaDecodingConfiguration where
  typeGType _ = gTypeMediaDecodingConfiguration
  {-# INLINE typeGType #-}

noMediaDecodingConfiguration :: Maybe MediaDecodingConfiguration
noMediaDecodingConfiguration = Nothing
{-# INLINE noMediaDecodingConfiguration #-}

gTypeMediaDecodingConfiguration :: JSM GType
gTypeMediaDecodingConfiguration = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaDeviceInfo" (mediacapture-streams).
newtype MediaDeviceInfo = MediaDeviceInfo { unMediaDeviceInfo :: JSVal }

instance PToJSVal MediaDeviceInfo where
  pToJSVal = unMediaDeviceInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaDeviceInfo where
  pFromJSVal = MediaDeviceInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaDeviceInfo where
  toJSVal = return . unMediaDeviceInfo
  {-# INLINE toJSVal #-}

instance FromJSVal MediaDeviceInfo where
  fromJSVal v = fmap MediaDeviceInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaDeviceInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaDeviceInfo where
  makeObject = makeObject . unMediaDeviceInfo

class (IsGObject o) => IsMediaDeviceInfo o
toMediaDeviceInfo :: IsMediaDeviceInfo o => o -> MediaDeviceInfo
toMediaDeviceInfo = MediaDeviceInfo . coerce

instance IsMediaDeviceInfo MediaDeviceInfo

instance IsGObject MediaDeviceInfo where
  typeGType _ = gTypeMediaDeviceInfo
  {-# INLINE typeGType #-}

noMediaDeviceInfo :: Maybe MediaDeviceInfo
noMediaDeviceInfo = Nothing
{-# INLINE noMediaDeviceInfo #-}

gTypeMediaDeviceInfo :: JSM GType
gTypeMediaDeviceInfo = GType . Object <$> jsg "MediaDeviceInfo"

-- | Functions for this interface are in "JSDOM.MediaDevices" (mediacapture-streams).
newtype MediaDevices = MediaDevices { unMediaDevices :: JSVal }

instance PToJSVal MediaDevices where
  pToJSVal = unMediaDevices
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaDevices where
  pFromJSVal = MediaDevices
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaDevices where
  toJSVal = return . unMediaDevices
  {-# INLINE toJSVal #-}

instance FromJSVal MediaDevices where
  fromJSVal v = fmap MediaDevices <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaDevices
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaDevices where
  makeObject = makeObject . unMediaDevices

instance IsEventTarget MediaDevices

instance IsGObject MediaDevices where
  typeGType _ = gTypeMediaDevices
  {-# INLINE typeGType #-}

noMediaDevices :: Maybe MediaDevices
noMediaDevices = Nothing
{-# INLINE noMediaDevices #-}

gTypeMediaDevices :: JSM GType
gTypeMediaDevices = GType . Object <$> jsg "MediaDevices"

-- | Dictionary MediaEffectInfo (mediacapture-extensions)
newtype MediaEffectInfo = MediaEffectInfo { unMediaEffectInfo :: JSVal }

instance PToJSVal MediaEffectInfo where
  pToJSVal = unMediaEffectInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaEffectInfo where
  pFromJSVal = MediaEffectInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaEffectInfo where
  toJSVal = return . unMediaEffectInfo
  {-# INLINE toJSVal #-}

instance FromJSVal MediaEffectInfo where
  fromJSVal v = fmap MediaEffectInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaEffectInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaEffectInfo where
  makeObject = makeObject . unMediaEffectInfo

class (IsGObject o) => IsMediaEffectInfo o
toMediaEffectInfo :: IsMediaEffectInfo o => o -> MediaEffectInfo
toMediaEffectInfo = MediaEffectInfo . coerce

instance IsMediaEffectInfo MediaEffectInfo

instance IsGObject MediaEffectInfo where
  typeGType _ = gTypeMediaEffectInfo
  {-# INLINE typeGType #-}

noMediaEffectInfo :: Maybe MediaEffectInfo
noMediaEffectInfo = Nothing
{-# INLINE noMediaEffectInfo #-}

gTypeMediaEffectInfo :: JSM GType
gTypeMediaEffectInfo = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaElementAudioSourceNode" (webaudio-1.1).
newtype MediaElementAudioSourceNode = MediaElementAudioSourceNode { unMediaElementAudioSourceNode :: JSVal }

instance PToJSVal MediaElementAudioSourceNode where
  pToJSVal = unMediaElementAudioSourceNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaElementAudioSourceNode where
  pFromJSVal = MediaElementAudioSourceNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaElementAudioSourceNode where
  toJSVal = return . unMediaElementAudioSourceNode
  {-# INLINE toJSVal #-}

instance FromJSVal MediaElementAudioSourceNode where
  fromJSVal v = fmap MediaElementAudioSourceNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaElementAudioSourceNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaElementAudioSourceNode where
  makeObject = makeObject . unMediaElementAudioSourceNode

instance IsAudioNode MediaElementAudioSourceNode
instance IsEventTarget MediaElementAudioSourceNode

instance IsGObject MediaElementAudioSourceNode where
  typeGType _ = gTypeMediaElementAudioSourceNode
  {-# INLINE typeGType #-}

noMediaElementAudioSourceNode :: Maybe MediaElementAudioSourceNode
noMediaElementAudioSourceNode = Nothing
{-# INLINE noMediaElementAudioSourceNode #-}

gTypeMediaElementAudioSourceNode :: JSM GType
gTypeMediaElementAudioSourceNode = GType . Object <$> jsg "MediaElementAudioSourceNode"

-- | Dictionary MediaElementAudioSourceOptions (webaudio-1.1)
newtype MediaElementAudioSourceOptions = MediaElementAudioSourceOptions { unMediaElementAudioSourceOptions :: JSVal }

instance PToJSVal MediaElementAudioSourceOptions where
  pToJSVal = unMediaElementAudioSourceOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaElementAudioSourceOptions where
  pFromJSVal = MediaElementAudioSourceOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaElementAudioSourceOptions where
  toJSVal = return . unMediaElementAudioSourceOptions
  {-# INLINE toJSVal #-}

instance FromJSVal MediaElementAudioSourceOptions where
  fromJSVal v = fmap MediaElementAudioSourceOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaElementAudioSourceOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaElementAudioSourceOptions where
  makeObject = makeObject . unMediaElementAudioSourceOptions


instance IsGObject MediaElementAudioSourceOptions where
  typeGType _ = gTypeMediaElementAudioSourceOptions
  {-# INLINE typeGType #-}

noMediaElementAudioSourceOptions :: Maybe MediaElementAudioSourceOptions
noMediaElementAudioSourceOptions = Nothing
{-# INLINE noMediaElementAudioSourceOptions #-}

gTypeMediaElementAudioSourceOptions :: JSM GType
gTypeMediaElementAudioSourceOptions = GType . Object <$> jsg "Object"

-- | Dictionary MediaEncodingConfiguration (media-capabilities)
newtype MediaEncodingConfiguration = MediaEncodingConfiguration { unMediaEncodingConfiguration :: JSVal }

instance PToJSVal MediaEncodingConfiguration where
  pToJSVal = unMediaEncodingConfiguration
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaEncodingConfiguration where
  pFromJSVal = MediaEncodingConfiguration
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaEncodingConfiguration where
  toJSVal = return . unMediaEncodingConfiguration
  {-# INLINE toJSVal #-}

instance FromJSVal MediaEncodingConfiguration where
  fromJSVal v = fmap MediaEncodingConfiguration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaEncodingConfiguration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaEncodingConfiguration where
  makeObject = makeObject . unMediaEncodingConfiguration

instance IsMediaConfiguration MediaEncodingConfiguration

instance IsGObject MediaEncodingConfiguration where
  typeGType _ = gTypeMediaEncodingConfiguration
  {-# INLINE typeGType #-}

noMediaEncodingConfiguration :: Maybe MediaEncodingConfiguration
noMediaEncodingConfiguration = Nothing
{-# INLINE noMediaEncodingConfiguration #-}

gTypeMediaEncodingConfiguration :: JSM GType
gTypeMediaEncodingConfiguration = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaEncryptedEvent" (encrypted-media-2).
newtype MediaEncryptedEvent = MediaEncryptedEvent { unMediaEncryptedEvent :: JSVal }

instance PToJSVal MediaEncryptedEvent where
  pToJSVal = unMediaEncryptedEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaEncryptedEvent where
  pFromJSVal = MediaEncryptedEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaEncryptedEvent where
  toJSVal = return . unMediaEncryptedEvent
  {-# INLINE toJSVal #-}

instance FromJSVal MediaEncryptedEvent where
  fromJSVal v = fmap MediaEncryptedEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaEncryptedEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaEncryptedEvent where
  makeObject = makeObject . unMediaEncryptedEvent

instance IsEvent MediaEncryptedEvent

instance IsGObject MediaEncryptedEvent where
  typeGType _ = gTypeMediaEncryptedEvent
  {-# INLINE typeGType #-}

noMediaEncryptedEvent :: Maybe MediaEncryptedEvent
noMediaEncryptedEvent = Nothing
{-# INLINE noMediaEncryptedEvent #-}

gTypeMediaEncryptedEvent :: JSM GType
gTypeMediaEncryptedEvent = GType . Object <$> jsg "MediaEncryptedEvent"

-- | Dictionary MediaEncryptedEventInit (encrypted-media-2)
newtype MediaEncryptedEventInit = MediaEncryptedEventInit { unMediaEncryptedEventInit :: JSVal }

instance PToJSVal MediaEncryptedEventInit where
  pToJSVal = unMediaEncryptedEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaEncryptedEventInit where
  pFromJSVal = MediaEncryptedEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaEncryptedEventInit where
  toJSVal = return . unMediaEncryptedEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal MediaEncryptedEventInit where
  fromJSVal v = fmap MediaEncryptedEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaEncryptedEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaEncryptedEventInit where
  makeObject = makeObject . unMediaEncryptedEventInit

instance IsEventInit MediaEncryptedEventInit

instance IsGObject MediaEncryptedEventInit where
  typeGType _ = gTypeMediaEncryptedEventInit
  {-# INLINE typeGType #-}

noMediaEncryptedEventInit :: Maybe MediaEncryptedEventInit
noMediaEncryptedEventInit = Nothing
{-# INLINE noMediaEncryptedEventInit #-}

gTypeMediaEncryptedEventInit :: JSM GType
gTypeMediaEncryptedEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaError" (html).
newtype MediaError = MediaError { unMediaError :: JSVal }

instance PToJSVal MediaError where
  pToJSVal = unMediaError
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaError where
  pFromJSVal = MediaError
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaError where
  toJSVal = return . unMediaError
  {-# INLINE toJSVal #-}

instance FromJSVal MediaError where
  fromJSVal v = fmap MediaError <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaError
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaError where
  makeObject = makeObject . unMediaError


instance IsGObject MediaError where
  typeGType _ = gTypeMediaError
  {-# INLINE typeGType #-}

noMediaError :: Maybe MediaError
noMediaError = Nothing
{-# INLINE noMediaError #-}

gTypeMediaError :: JSM GType
gTypeMediaError = GType . Object <$> jsg "MediaError"

-- | Dictionary MediaImage (mediasession)
newtype MediaImage = MediaImage { unMediaImage :: JSVal }

instance PToJSVal MediaImage where
  pToJSVal = unMediaImage
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaImage where
  pFromJSVal = MediaImage
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaImage where
  toJSVal = return . unMediaImage
  {-# INLINE toJSVal #-}

instance FromJSVal MediaImage where
  fromJSVal v = fmap MediaImage <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaImage
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaImage where
  makeObject = makeObject . unMediaImage


instance IsGObject MediaImage where
  typeGType _ = gTypeMediaImage
  {-# INLINE typeGType #-}

noMediaImage :: Maybe MediaImage
noMediaImage = Nothing
{-# INLINE noMediaImage #-}

gTypeMediaImage :: JSM GType
gTypeMediaImage = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaKeyMessageEvent" (encrypted-media-2).
newtype MediaKeyMessageEvent = MediaKeyMessageEvent { unMediaKeyMessageEvent :: JSVal }

instance PToJSVal MediaKeyMessageEvent where
  pToJSVal = unMediaKeyMessageEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaKeyMessageEvent where
  pFromJSVal = MediaKeyMessageEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaKeyMessageEvent where
  toJSVal = return . unMediaKeyMessageEvent
  {-# INLINE toJSVal #-}

instance FromJSVal MediaKeyMessageEvent where
  fromJSVal v = fmap MediaKeyMessageEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaKeyMessageEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaKeyMessageEvent where
  makeObject = makeObject . unMediaKeyMessageEvent

instance IsEvent MediaKeyMessageEvent

instance IsGObject MediaKeyMessageEvent where
  typeGType _ = gTypeMediaKeyMessageEvent
  {-# INLINE typeGType #-}

noMediaKeyMessageEvent :: Maybe MediaKeyMessageEvent
noMediaKeyMessageEvent = Nothing
{-# INLINE noMediaKeyMessageEvent #-}

gTypeMediaKeyMessageEvent :: JSM GType
gTypeMediaKeyMessageEvent = GType . Object <$> jsg "MediaKeyMessageEvent"

-- | Dictionary MediaKeyMessageEventInit (encrypted-media-2)
newtype MediaKeyMessageEventInit = MediaKeyMessageEventInit { unMediaKeyMessageEventInit :: JSVal }

instance PToJSVal MediaKeyMessageEventInit where
  pToJSVal = unMediaKeyMessageEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaKeyMessageEventInit where
  pFromJSVal = MediaKeyMessageEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaKeyMessageEventInit where
  toJSVal = return . unMediaKeyMessageEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal MediaKeyMessageEventInit where
  fromJSVal v = fmap MediaKeyMessageEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaKeyMessageEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaKeyMessageEventInit where
  makeObject = makeObject . unMediaKeyMessageEventInit

instance IsEventInit MediaKeyMessageEventInit

instance IsGObject MediaKeyMessageEventInit where
  typeGType _ = gTypeMediaKeyMessageEventInit
  {-# INLINE typeGType #-}

noMediaKeyMessageEventInit :: Maybe MediaKeyMessageEventInit
noMediaKeyMessageEventInit = Nothing
{-# INLINE noMediaKeyMessageEventInit #-}

gTypeMediaKeyMessageEventInit :: JSM GType
gTypeMediaKeyMessageEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaKeySession" (encrypted-media-2).
newtype MediaKeySession = MediaKeySession { unMediaKeySession :: JSVal }

instance PToJSVal MediaKeySession where
  pToJSVal = unMediaKeySession
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaKeySession where
  pFromJSVal = MediaKeySession
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaKeySession where
  toJSVal = return . unMediaKeySession
  {-# INLINE toJSVal #-}

instance FromJSVal MediaKeySession where
  fromJSVal v = fmap MediaKeySession <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaKeySession
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaKeySession where
  makeObject = makeObject . unMediaKeySession

instance IsEventTarget MediaKeySession

instance IsGObject MediaKeySession where
  typeGType _ = gTypeMediaKeySession
  {-# INLINE typeGType #-}

noMediaKeySession :: Maybe MediaKeySession
noMediaKeySession = Nothing
{-# INLINE noMediaKeySession #-}

gTypeMediaKeySession :: JSM GType
gTypeMediaKeySession = GType . Object <$> jsg "MediaKeySession"

-- | Functions for this interface are in "JSDOM.MediaKeyStatusMap" (encrypted-media-2).
newtype MediaKeyStatusMap = MediaKeyStatusMap { unMediaKeyStatusMap :: JSVal }

instance PToJSVal MediaKeyStatusMap where
  pToJSVal = unMediaKeyStatusMap
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaKeyStatusMap where
  pFromJSVal = MediaKeyStatusMap
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaKeyStatusMap where
  toJSVal = return . unMediaKeyStatusMap
  {-# INLINE toJSVal #-}

instance FromJSVal MediaKeyStatusMap where
  fromJSVal v = fmap MediaKeyStatusMap <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaKeyStatusMap
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaKeyStatusMap where
  makeObject = makeObject . unMediaKeyStatusMap


instance IsGObject MediaKeyStatusMap where
  typeGType _ = gTypeMediaKeyStatusMap
  {-# INLINE typeGType #-}

noMediaKeyStatusMap :: Maybe MediaKeyStatusMap
noMediaKeyStatusMap = Nothing
{-# INLINE noMediaKeyStatusMap #-}

gTypeMediaKeyStatusMap :: JSM GType
gTypeMediaKeyStatusMap = GType . Object <$> jsg "MediaKeyStatusMap"

-- | Functions for this interface are in "JSDOM.MediaKeySystemAccess" (encrypted-media-2).
newtype MediaKeySystemAccess = MediaKeySystemAccess { unMediaKeySystemAccess :: JSVal }

instance PToJSVal MediaKeySystemAccess where
  pToJSVal = unMediaKeySystemAccess
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaKeySystemAccess where
  pFromJSVal = MediaKeySystemAccess
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaKeySystemAccess where
  toJSVal = return . unMediaKeySystemAccess
  {-# INLINE toJSVal #-}

instance FromJSVal MediaKeySystemAccess where
  fromJSVal v = fmap MediaKeySystemAccess <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaKeySystemAccess
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaKeySystemAccess where
  makeObject = makeObject . unMediaKeySystemAccess


instance IsGObject MediaKeySystemAccess where
  typeGType _ = gTypeMediaKeySystemAccess
  {-# INLINE typeGType #-}

noMediaKeySystemAccess :: Maybe MediaKeySystemAccess
noMediaKeySystemAccess = Nothing
{-# INLINE noMediaKeySystemAccess #-}

gTypeMediaKeySystemAccess :: JSM GType
gTypeMediaKeySystemAccess = GType . Object <$> jsg "MediaKeySystemAccess"

-- | Dictionary MediaKeySystemConfiguration (encrypted-media-2)
newtype MediaKeySystemConfiguration = MediaKeySystemConfiguration { unMediaKeySystemConfiguration :: JSVal }

instance PToJSVal MediaKeySystemConfiguration where
  pToJSVal = unMediaKeySystemConfiguration
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaKeySystemConfiguration where
  pFromJSVal = MediaKeySystemConfiguration
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaKeySystemConfiguration where
  toJSVal = return . unMediaKeySystemConfiguration
  {-# INLINE toJSVal #-}

instance FromJSVal MediaKeySystemConfiguration where
  fromJSVal v = fmap MediaKeySystemConfiguration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaKeySystemConfiguration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaKeySystemConfiguration where
  makeObject = makeObject . unMediaKeySystemConfiguration


instance IsGObject MediaKeySystemConfiguration where
  typeGType _ = gTypeMediaKeySystemConfiguration
  {-# INLINE typeGType #-}

noMediaKeySystemConfiguration :: Maybe MediaKeySystemConfiguration
noMediaKeySystemConfiguration = Nothing
{-# INLINE noMediaKeySystemConfiguration #-}

gTypeMediaKeySystemConfiguration :: JSM GType
gTypeMediaKeySystemConfiguration = GType . Object <$> jsg "Object"

-- | Dictionary MediaKeySystemMediaCapability (encrypted-media-2)
newtype MediaKeySystemMediaCapability = MediaKeySystemMediaCapability { unMediaKeySystemMediaCapability :: JSVal }

instance PToJSVal MediaKeySystemMediaCapability where
  pToJSVal = unMediaKeySystemMediaCapability
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaKeySystemMediaCapability where
  pFromJSVal = MediaKeySystemMediaCapability
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaKeySystemMediaCapability where
  toJSVal = return . unMediaKeySystemMediaCapability
  {-# INLINE toJSVal #-}

instance FromJSVal MediaKeySystemMediaCapability where
  fromJSVal v = fmap MediaKeySystemMediaCapability <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaKeySystemMediaCapability
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaKeySystemMediaCapability where
  makeObject = makeObject . unMediaKeySystemMediaCapability


instance IsGObject MediaKeySystemMediaCapability where
  typeGType _ = gTypeMediaKeySystemMediaCapability
  {-# INLINE typeGType #-}

noMediaKeySystemMediaCapability :: Maybe MediaKeySystemMediaCapability
noMediaKeySystemMediaCapability = Nothing
{-# INLINE noMediaKeySystemMediaCapability #-}

gTypeMediaKeySystemMediaCapability :: JSM GType
gTypeMediaKeySystemMediaCapability = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaKeys" (encrypted-media-2).
newtype MediaKeys = MediaKeys { unMediaKeys :: JSVal }

instance PToJSVal MediaKeys where
  pToJSVal = unMediaKeys
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaKeys where
  pFromJSVal = MediaKeys
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaKeys where
  toJSVal = return . unMediaKeys
  {-# INLINE toJSVal #-}

instance FromJSVal MediaKeys where
  fromJSVal v = fmap MediaKeys <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaKeys
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaKeys where
  makeObject = makeObject . unMediaKeys


instance IsGObject MediaKeys where
  typeGType _ = gTypeMediaKeys
  {-# INLINE typeGType #-}

noMediaKeys :: Maybe MediaKeys
noMediaKeys = Nothing
{-# INLINE noMediaKeys #-}

gTypeMediaKeys :: JSM GType
gTypeMediaKeys = GType . Object <$> jsg "MediaKeys"

-- | Dictionary MediaKeysPolicy (encrypted-media-2)
newtype MediaKeysPolicy = MediaKeysPolicy { unMediaKeysPolicy :: JSVal }

instance PToJSVal MediaKeysPolicy where
  pToJSVal = unMediaKeysPolicy
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaKeysPolicy where
  pFromJSVal = MediaKeysPolicy
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaKeysPolicy where
  toJSVal = return . unMediaKeysPolicy
  {-# INLINE toJSVal #-}

instance FromJSVal MediaKeysPolicy where
  fromJSVal v = fmap MediaKeysPolicy <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaKeysPolicy
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaKeysPolicy where
  makeObject = makeObject . unMediaKeysPolicy


instance IsGObject MediaKeysPolicy where
  typeGType _ = gTypeMediaKeysPolicy
  {-# INLINE typeGType #-}

noMediaKeysPolicy :: Maybe MediaKeysPolicy
noMediaKeysPolicy = Nothing
{-# INLINE noMediaKeysPolicy #-}

gTypeMediaKeysPolicy :: JSM GType
gTypeMediaKeysPolicy = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaList" (cssom-1).
newtype MediaList = MediaList { unMediaList :: JSVal }

instance PToJSVal MediaList where
  pToJSVal = unMediaList
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaList where
  pFromJSVal = MediaList
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaList where
  toJSVal = return . unMediaList
  {-# INLINE toJSVal #-}

instance FromJSVal MediaList where
  fromJSVal v = fmap MediaList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaList where
  makeObject = makeObject . unMediaList


instance IsGObject MediaList where
  typeGType _ = gTypeMediaList
  {-# INLINE typeGType #-}

noMediaList :: Maybe MediaList
noMediaList = Nothing
{-# INLINE noMediaList #-}

gTypeMediaList :: JSM GType
gTypeMediaList = GType . Object <$> jsg "MediaList"

-- | Functions for this interface are in "JSDOM.MediaMetadata" (mediasession).
newtype MediaMetadata = MediaMetadata { unMediaMetadata :: JSVal }

instance PToJSVal MediaMetadata where
  pToJSVal = unMediaMetadata
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaMetadata where
  pFromJSVal = MediaMetadata
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaMetadata where
  toJSVal = return . unMediaMetadata
  {-# INLINE toJSVal #-}

instance FromJSVal MediaMetadata where
  fromJSVal v = fmap MediaMetadata <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaMetadata
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaMetadata where
  makeObject = makeObject . unMediaMetadata


instance IsGObject MediaMetadata where
  typeGType _ = gTypeMediaMetadata
  {-# INLINE typeGType #-}

noMediaMetadata :: Maybe MediaMetadata
noMediaMetadata = Nothing
{-# INLINE noMediaMetadata #-}

gTypeMediaMetadata :: JSM GType
gTypeMediaMetadata = GType . Object <$> jsg "MediaMetadata"

-- | Dictionary MediaMetadataInit (mediasession)
newtype MediaMetadataInit = MediaMetadataInit { unMediaMetadataInit :: JSVal }

instance PToJSVal MediaMetadataInit where
  pToJSVal = unMediaMetadataInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaMetadataInit where
  pFromJSVal = MediaMetadataInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaMetadataInit where
  toJSVal = return . unMediaMetadataInit
  {-# INLINE toJSVal #-}

instance FromJSVal MediaMetadataInit where
  fromJSVal v = fmap MediaMetadataInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaMetadataInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaMetadataInit where
  makeObject = makeObject . unMediaMetadataInit


instance IsGObject MediaMetadataInit where
  typeGType _ = gTypeMediaMetadataInit
  {-# INLINE typeGType #-}

noMediaMetadataInit :: Maybe MediaMetadataInit
noMediaMetadataInit = Nothing
{-# INLINE noMediaMetadataInit #-}

gTypeMediaMetadataInit :: JSM GType
gTypeMediaMetadataInit = GType . Object <$> jsg "Object"

-- | Dictionary MediaPositionState (mediasession)
newtype MediaPositionState = MediaPositionState { unMediaPositionState :: JSVal }

instance PToJSVal MediaPositionState where
  pToJSVal = unMediaPositionState
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaPositionState where
  pFromJSVal = MediaPositionState
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaPositionState where
  toJSVal = return . unMediaPositionState
  {-# INLINE toJSVal #-}

instance FromJSVal MediaPositionState where
  fromJSVal v = fmap MediaPositionState <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaPositionState
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaPositionState where
  makeObject = makeObject . unMediaPositionState


instance IsGObject MediaPositionState where
  typeGType _ = gTypeMediaPositionState
  {-# INLINE typeGType #-}

noMediaPositionState :: Maybe MediaPositionState
noMediaPositionState = Nothing
{-# INLINE noMediaPositionState #-}

gTypeMediaPositionState :: JSM GType
gTypeMediaPositionState = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaQueryList" (cssom-view-1).
newtype MediaQueryList = MediaQueryList { unMediaQueryList :: JSVal }

instance PToJSVal MediaQueryList where
  pToJSVal = unMediaQueryList
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaQueryList where
  pFromJSVal = MediaQueryList
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaQueryList where
  toJSVal = return . unMediaQueryList
  {-# INLINE toJSVal #-}

instance FromJSVal MediaQueryList where
  fromJSVal v = fmap MediaQueryList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaQueryList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaQueryList where
  makeObject = makeObject . unMediaQueryList

instance IsEventTarget MediaQueryList

instance IsGObject MediaQueryList where
  typeGType _ = gTypeMediaQueryList
  {-# INLINE typeGType #-}

noMediaQueryList :: Maybe MediaQueryList
noMediaQueryList = Nothing
{-# INLINE noMediaQueryList #-}

gTypeMediaQueryList :: JSM GType
gTypeMediaQueryList = GType . Object <$> jsg "MediaQueryList"

-- | Functions for this interface are in "JSDOM.MediaQueryListEvent" (cssom-view-1).
newtype MediaQueryListEvent = MediaQueryListEvent { unMediaQueryListEvent :: JSVal }

instance PToJSVal MediaQueryListEvent where
  pToJSVal = unMediaQueryListEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaQueryListEvent where
  pFromJSVal = MediaQueryListEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaQueryListEvent where
  toJSVal = return . unMediaQueryListEvent
  {-# INLINE toJSVal #-}

instance FromJSVal MediaQueryListEvent where
  fromJSVal v = fmap MediaQueryListEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaQueryListEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaQueryListEvent where
  makeObject = makeObject . unMediaQueryListEvent

instance IsEvent MediaQueryListEvent

instance IsGObject MediaQueryListEvent where
  typeGType _ = gTypeMediaQueryListEvent
  {-# INLINE typeGType #-}

noMediaQueryListEvent :: Maybe MediaQueryListEvent
noMediaQueryListEvent = Nothing
{-# INLINE noMediaQueryListEvent #-}

gTypeMediaQueryListEvent :: JSM GType
gTypeMediaQueryListEvent = GType . Object <$> jsg "MediaQueryListEvent"

-- | Dictionary MediaQueryListEventInit (cssom-view-1)
newtype MediaQueryListEventInit = MediaQueryListEventInit { unMediaQueryListEventInit :: JSVal }

instance PToJSVal MediaQueryListEventInit where
  pToJSVal = unMediaQueryListEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaQueryListEventInit where
  pFromJSVal = MediaQueryListEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaQueryListEventInit where
  toJSVal = return . unMediaQueryListEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal MediaQueryListEventInit where
  fromJSVal v = fmap MediaQueryListEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaQueryListEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaQueryListEventInit where
  makeObject = makeObject . unMediaQueryListEventInit

instance IsEventInit MediaQueryListEventInit

instance IsGObject MediaQueryListEventInit where
  typeGType _ = gTypeMediaQueryListEventInit
  {-# INLINE typeGType #-}

noMediaQueryListEventInit :: Maybe MediaQueryListEventInit
noMediaQueryListEventInit = Nothing
{-# INLINE noMediaQueryListEventInit #-}

gTypeMediaQueryListEventInit :: JSM GType
gTypeMediaQueryListEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaRecorder" (mediastream-recording).
newtype MediaRecorder = MediaRecorder { unMediaRecorder :: JSVal }

instance PToJSVal MediaRecorder where
  pToJSVal = unMediaRecorder
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaRecorder where
  pFromJSVal = MediaRecorder
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaRecorder where
  toJSVal = return . unMediaRecorder
  {-# INLINE toJSVal #-}

instance FromJSVal MediaRecorder where
  fromJSVal v = fmap MediaRecorder <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaRecorder
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaRecorder where
  makeObject = makeObject . unMediaRecorder

instance IsEventTarget MediaRecorder

instance IsGObject MediaRecorder where
  typeGType _ = gTypeMediaRecorder
  {-# INLINE typeGType #-}

noMediaRecorder :: Maybe MediaRecorder
noMediaRecorder = Nothing
{-# INLINE noMediaRecorder #-}

gTypeMediaRecorder :: JSM GType
gTypeMediaRecorder = GType . Object <$> jsg "MediaRecorder"

-- | Dictionary MediaRecorderOptions (mediastream-recording)
newtype MediaRecorderOptions = MediaRecorderOptions { unMediaRecorderOptions :: JSVal }

instance PToJSVal MediaRecorderOptions where
  pToJSVal = unMediaRecorderOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaRecorderOptions where
  pFromJSVal = MediaRecorderOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaRecorderOptions where
  toJSVal = return . unMediaRecorderOptions
  {-# INLINE toJSVal #-}

instance FromJSVal MediaRecorderOptions where
  fromJSVal v = fmap MediaRecorderOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaRecorderOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaRecorderOptions where
  makeObject = makeObject . unMediaRecorderOptions


instance IsGObject MediaRecorderOptions where
  typeGType _ = gTypeMediaRecorderOptions
  {-# INLINE typeGType #-}

noMediaRecorderOptions :: Maybe MediaRecorderOptions
noMediaRecorderOptions = Nothing
{-# INLINE noMediaRecorderOptions #-}

gTypeMediaRecorderOptions :: JSM GType
gTypeMediaRecorderOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaSession" (mediasession).
newtype MediaSession = MediaSession { unMediaSession :: JSVal }

instance PToJSVal MediaSession where
  pToJSVal = unMediaSession
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaSession where
  pFromJSVal = MediaSession
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaSession where
  toJSVal = return . unMediaSession
  {-# INLINE toJSVal #-}

instance FromJSVal MediaSession where
  fromJSVal v = fmap MediaSession <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaSession
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaSession where
  makeObject = makeObject . unMediaSession


instance IsGObject MediaSession where
  typeGType _ = gTypeMediaSession
  {-# INLINE typeGType #-}

noMediaSession :: Maybe MediaSession
noMediaSession = Nothing
{-# INLINE noMediaSession #-}

gTypeMediaSession :: JSM GType
gTypeMediaSession = GType . Object <$> jsg "MediaSession"

-- | Dictionary MediaSessionActionDetails (mediasession)
newtype MediaSessionActionDetails = MediaSessionActionDetails { unMediaSessionActionDetails :: JSVal }

instance PToJSVal MediaSessionActionDetails where
  pToJSVal = unMediaSessionActionDetails
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaSessionActionDetails where
  pFromJSVal = MediaSessionActionDetails
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaSessionActionDetails where
  toJSVal = return . unMediaSessionActionDetails
  {-# INLINE toJSVal #-}

instance FromJSVal MediaSessionActionDetails where
  fromJSVal v = fmap MediaSessionActionDetails <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaSessionActionDetails
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaSessionActionDetails where
  makeObject = makeObject . unMediaSessionActionDetails


instance IsGObject MediaSessionActionDetails where
  typeGType _ = gTypeMediaSessionActionDetails
  {-# INLINE typeGType #-}

noMediaSessionActionDetails :: Maybe MediaSessionActionDetails
noMediaSessionActionDetails = Nothing
{-# INLINE noMediaSessionActionDetails #-}

gTypeMediaSessionActionDetails :: JSM GType
gTypeMediaSessionActionDetails = GType . Object <$> jsg "Object"

-- | Dictionary MediaSettingsRange (image-capture)
newtype MediaSettingsRange = MediaSettingsRange { unMediaSettingsRange :: JSVal }

instance PToJSVal MediaSettingsRange where
  pToJSVal = unMediaSettingsRange
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaSettingsRange where
  pFromJSVal = MediaSettingsRange
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaSettingsRange where
  toJSVal = return . unMediaSettingsRange
  {-# INLINE toJSVal #-}

instance FromJSVal MediaSettingsRange where
  fromJSVal v = fmap MediaSettingsRange <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaSettingsRange
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaSettingsRange where
  makeObject = makeObject . unMediaSettingsRange


instance IsGObject MediaSettingsRange where
  typeGType _ = gTypeMediaSettingsRange
  {-# INLINE typeGType #-}

noMediaSettingsRange :: Maybe MediaSettingsRange
noMediaSettingsRange = Nothing
{-# INLINE noMediaSettingsRange #-}

gTypeMediaSettingsRange :: JSM GType
gTypeMediaSettingsRange = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaSource" (media-source-2).
newtype MediaSource = MediaSource { unMediaSource :: JSVal }

instance PToJSVal MediaSource where
  pToJSVal = unMediaSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaSource where
  pFromJSVal = MediaSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaSource where
  toJSVal = return . unMediaSource
  {-# INLINE toJSVal #-}

instance FromJSVal MediaSource where
  fromJSVal v = fmap MediaSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaSource where
  makeObject = makeObject . unMediaSource

instance IsEventTarget MediaSource

instance IsGObject MediaSource where
  typeGType _ = gTypeMediaSource
  {-# INLINE typeGType #-}

noMediaSource :: Maybe MediaSource
noMediaSource = Nothing
{-# INLINE noMediaSource #-}

gTypeMediaSource :: JSM GType
gTypeMediaSource = GType . Object <$> jsg "MediaSource"

-- | Functions for this interface are in "JSDOM.MediaSourceHandle" (media-source-2).
newtype MediaSourceHandle = MediaSourceHandle { unMediaSourceHandle :: JSVal }

instance PToJSVal MediaSourceHandle where
  pToJSVal = unMediaSourceHandle
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaSourceHandle where
  pFromJSVal = MediaSourceHandle
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaSourceHandle where
  toJSVal = return . unMediaSourceHandle
  {-# INLINE toJSVal #-}

instance FromJSVal MediaSourceHandle where
  fromJSVal v = fmap MediaSourceHandle <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaSourceHandle
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaSourceHandle where
  makeObject = makeObject . unMediaSourceHandle


instance IsGObject MediaSourceHandle where
  typeGType _ = gTypeMediaSourceHandle
  {-# INLINE typeGType #-}

noMediaSourceHandle :: Maybe MediaSourceHandle
noMediaSourceHandle = Nothing
{-# INLINE noMediaSourceHandle #-}

gTypeMediaSourceHandle :: JSM GType
gTypeMediaSourceHandle = GType . Object <$> jsg "MediaSourceHandle"

-- | Functions for this interface are in "JSDOM.MediaStream" (mediacapture-streams).
newtype MediaStream = MediaStream { unMediaStream :: JSVal }

instance PToJSVal MediaStream where
  pToJSVal = unMediaStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaStream where
  pFromJSVal = MediaStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaStream where
  toJSVal = return . unMediaStream
  {-# INLINE toJSVal #-}

instance FromJSVal MediaStream where
  fromJSVal v = fmap MediaStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaStream where
  makeObject = makeObject . unMediaStream

instance IsEventTarget MediaStream

instance IsGObject MediaStream where
  typeGType _ = gTypeMediaStream
  {-# INLINE typeGType #-}

noMediaStream :: Maybe MediaStream
noMediaStream = Nothing
{-# INLINE noMediaStream #-}

gTypeMediaStream :: JSM GType
gTypeMediaStream = GType . Object <$> jsg "MediaStream"

-- | Functions for this interface are in "JSDOM.MediaStreamAudioDestinationNode" (webaudio-1.1).
newtype MediaStreamAudioDestinationNode = MediaStreamAudioDestinationNode { unMediaStreamAudioDestinationNode :: JSVal }

instance PToJSVal MediaStreamAudioDestinationNode where
  pToJSVal = unMediaStreamAudioDestinationNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaStreamAudioDestinationNode where
  pFromJSVal = MediaStreamAudioDestinationNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaStreamAudioDestinationNode where
  toJSVal = return . unMediaStreamAudioDestinationNode
  {-# INLINE toJSVal #-}

instance FromJSVal MediaStreamAudioDestinationNode where
  fromJSVal v = fmap MediaStreamAudioDestinationNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaStreamAudioDestinationNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaStreamAudioDestinationNode where
  makeObject = makeObject . unMediaStreamAudioDestinationNode

instance IsAudioNode MediaStreamAudioDestinationNode
instance IsEventTarget MediaStreamAudioDestinationNode

instance IsGObject MediaStreamAudioDestinationNode where
  typeGType _ = gTypeMediaStreamAudioDestinationNode
  {-# INLINE typeGType #-}

noMediaStreamAudioDestinationNode :: Maybe MediaStreamAudioDestinationNode
noMediaStreamAudioDestinationNode = Nothing
{-# INLINE noMediaStreamAudioDestinationNode #-}

gTypeMediaStreamAudioDestinationNode :: JSM GType
gTypeMediaStreamAudioDestinationNode = GType . Object <$> jsg "MediaStreamAudioDestinationNode"

-- | Functions for this interface are in "JSDOM.MediaStreamAudioSourceNode" (webaudio-1.1).
newtype MediaStreamAudioSourceNode = MediaStreamAudioSourceNode { unMediaStreamAudioSourceNode :: JSVal }

instance PToJSVal MediaStreamAudioSourceNode where
  pToJSVal = unMediaStreamAudioSourceNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaStreamAudioSourceNode where
  pFromJSVal = MediaStreamAudioSourceNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaStreamAudioSourceNode where
  toJSVal = return . unMediaStreamAudioSourceNode
  {-# INLINE toJSVal #-}

instance FromJSVal MediaStreamAudioSourceNode where
  fromJSVal v = fmap MediaStreamAudioSourceNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaStreamAudioSourceNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaStreamAudioSourceNode where
  makeObject = makeObject . unMediaStreamAudioSourceNode

instance IsAudioNode MediaStreamAudioSourceNode
instance IsEventTarget MediaStreamAudioSourceNode

instance IsGObject MediaStreamAudioSourceNode where
  typeGType _ = gTypeMediaStreamAudioSourceNode
  {-# INLINE typeGType #-}

noMediaStreamAudioSourceNode :: Maybe MediaStreamAudioSourceNode
noMediaStreamAudioSourceNode = Nothing
{-# INLINE noMediaStreamAudioSourceNode #-}

gTypeMediaStreamAudioSourceNode :: JSM GType
gTypeMediaStreamAudioSourceNode = GType . Object <$> jsg "MediaStreamAudioSourceNode"

-- | Dictionary MediaStreamAudioSourceOptions (webaudio-1.1)
newtype MediaStreamAudioSourceOptions = MediaStreamAudioSourceOptions { unMediaStreamAudioSourceOptions :: JSVal }

instance PToJSVal MediaStreamAudioSourceOptions where
  pToJSVal = unMediaStreamAudioSourceOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaStreamAudioSourceOptions where
  pFromJSVal = MediaStreamAudioSourceOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaStreamAudioSourceOptions where
  toJSVal = return . unMediaStreamAudioSourceOptions
  {-# INLINE toJSVal #-}

instance FromJSVal MediaStreamAudioSourceOptions where
  fromJSVal v = fmap MediaStreamAudioSourceOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaStreamAudioSourceOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaStreamAudioSourceOptions where
  makeObject = makeObject . unMediaStreamAudioSourceOptions


instance IsGObject MediaStreamAudioSourceOptions where
  typeGType _ = gTypeMediaStreamAudioSourceOptions
  {-# INLINE typeGType #-}

noMediaStreamAudioSourceOptions :: Maybe MediaStreamAudioSourceOptions
noMediaStreamAudioSourceOptions = Nothing
{-# INLINE noMediaStreamAudioSourceOptions #-}

gTypeMediaStreamAudioSourceOptions :: JSM GType
gTypeMediaStreamAudioSourceOptions = GType . Object <$> jsg "Object"

-- | Dictionary MediaStreamConstraints (mediacapture-streams)
newtype MediaStreamConstraints = MediaStreamConstraints { unMediaStreamConstraints :: JSVal }

instance PToJSVal MediaStreamConstraints where
  pToJSVal = unMediaStreamConstraints
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaStreamConstraints where
  pFromJSVal = MediaStreamConstraints
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaStreamConstraints where
  toJSVal = return . unMediaStreamConstraints
  {-# INLINE toJSVal #-}

instance FromJSVal MediaStreamConstraints where
  fromJSVal v = fmap MediaStreamConstraints <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaStreamConstraints
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaStreamConstraints where
  makeObject = makeObject . unMediaStreamConstraints


instance IsGObject MediaStreamConstraints where
  typeGType _ = gTypeMediaStreamConstraints
  {-# INLINE typeGType #-}

noMediaStreamConstraints :: Maybe MediaStreamConstraints
noMediaStreamConstraints = Nothing
{-# INLINE noMediaStreamConstraints #-}

gTypeMediaStreamConstraints :: JSM GType
gTypeMediaStreamConstraints = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaStreamTrack" (mediacapture-streams).
newtype MediaStreamTrack = MediaStreamTrack { unMediaStreamTrack :: JSVal }

instance PToJSVal MediaStreamTrack where
  pToJSVal = unMediaStreamTrack
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaStreamTrack where
  pFromJSVal = MediaStreamTrack
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaStreamTrack where
  toJSVal = return . unMediaStreamTrack
  {-# INLINE toJSVal #-}

instance FromJSVal MediaStreamTrack where
  fromJSVal v = fmap MediaStreamTrack <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaStreamTrack
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaStreamTrack where
  makeObject = makeObject . unMediaStreamTrack

class (IsEventTarget o, IsGObject o) => IsMediaStreamTrack o
toMediaStreamTrack :: IsMediaStreamTrack o => o -> MediaStreamTrack
toMediaStreamTrack = MediaStreamTrack . coerce

instance IsMediaStreamTrack MediaStreamTrack
instance IsEventTarget MediaStreamTrack

instance IsGObject MediaStreamTrack where
  typeGType _ = gTypeMediaStreamTrack
  {-# INLINE typeGType #-}

noMediaStreamTrack :: Maybe MediaStreamTrack
noMediaStreamTrack = Nothing
{-# INLINE noMediaStreamTrack #-}

gTypeMediaStreamTrack :: JSM GType
gTypeMediaStreamTrack = GType . Object <$> jsg "MediaStreamTrack"

-- | Functions for this interface are in "JSDOM.MediaStreamTrackEvent" (mediacapture-streams).
newtype MediaStreamTrackEvent = MediaStreamTrackEvent { unMediaStreamTrackEvent :: JSVal }

instance PToJSVal MediaStreamTrackEvent where
  pToJSVal = unMediaStreamTrackEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaStreamTrackEvent where
  pFromJSVal = MediaStreamTrackEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaStreamTrackEvent where
  toJSVal = return . unMediaStreamTrackEvent
  {-# INLINE toJSVal #-}

instance FromJSVal MediaStreamTrackEvent where
  fromJSVal v = fmap MediaStreamTrackEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaStreamTrackEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaStreamTrackEvent where
  makeObject = makeObject . unMediaStreamTrackEvent

instance IsEvent MediaStreamTrackEvent

instance IsGObject MediaStreamTrackEvent where
  typeGType _ = gTypeMediaStreamTrackEvent
  {-# INLINE typeGType #-}

noMediaStreamTrackEvent :: Maybe MediaStreamTrackEvent
noMediaStreamTrackEvent = Nothing
{-# INLINE noMediaStreamTrackEvent #-}

gTypeMediaStreamTrackEvent :: JSM GType
gTypeMediaStreamTrackEvent = GType . Object <$> jsg "MediaStreamTrackEvent"

-- | Dictionary MediaStreamTrackEventInit (mediacapture-streams)
newtype MediaStreamTrackEventInit = MediaStreamTrackEventInit { unMediaStreamTrackEventInit :: JSVal }

instance PToJSVal MediaStreamTrackEventInit where
  pToJSVal = unMediaStreamTrackEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaStreamTrackEventInit where
  pFromJSVal = MediaStreamTrackEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaStreamTrackEventInit where
  toJSVal = return . unMediaStreamTrackEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal MediaStreamTrackEventInit where
  fromJSVal v = fmap MediaStreamTrackEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaStreamTrackEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaStreamTrackEventInit where
  makeObject = makeObject . unMediaStreamTrackEventInit

instance IsEventInit MediaStreamTrackEventInit

instance IsGObject MediaStreamTrackEventInit where
  typeGType _ = gTypeMediaStreamTrackEventInit
  {-# INLINE typeGType #-}

noMediaStreamTrackEventInit :: Maybe MediaStreamTrackEventInit
noMediaStreamTrackEventInit = Nothing
{-# INLINE noMediaStreamTrackEventInit #-}

gTypeMediaStreamTrackEventInit :: JSM GType
gTypeMediaStreamTrackEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MediaStreamTrackHandle" (mediacapture-transform).
newtype MediaStreamTrackHandle = MediaStreamTrackHandle { unMediaStreamTrackHandle :: JSVal }

instance PToJSVal MediaStreamTrackHandle where
  pToJSVal = unMediaStreamTrackHandle
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaStreamTrackHandle where
  pFromJSVal = MediaStreamTrackHandle
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaStreamTrackHandle where
  toJSVal = return . unMediaStreamTrackHandle
  {-# INLINE toJSVal #-}

instance FromJSVal MediaStreamTrackHandle where
  fromJSVal v = fmap MediaStreamTrackHandle <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaStreamTrackHandle
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaStreamTrackHandle where
  makeObject = makeObject . unMediaStreamTrackHandle


instance IsGObject MediaStreamTrackHandle where
  typeGType _ = gTypeMediaStreamTrackHandle
  {-# INLINE typeGType #-}

noMediaStreamTrackHandle :: Maybe MediaStreamTrackHandle
noMediaStreamTrackHandle = Nothing
{-# INLINE noMediaStreamTrackHandle #-}

gTypeMediaStreamTrackHandle :: JSM GType
gTypeMediaStreamTrackHandle = GType . Object <$> jsg "MediaStreamTrackHandle"

-- | Functions for this interface are in "JSDOM.MediaStreamTrackProcessor" (mediacapture-transform).
newtype MediaStreamTrackProcessor = MediaStreamTrackProcessor { unMediaStreamTrackProcessor :: JSVal }

instance PToJSVal MediaStreamTrackProcessor where
  pToJSVal = unMediaStreamTrackProcessor
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaStreamTrackProcessor where
  pFromJSVal = MediaStreamTrackProcessor
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaStreamTrackProcessor where
  toJSVal = return . unMediaStreamTrackProcessor
  {-# INLINE toJSVal #-}

instance FromJSVal MediaStreamTrackProcessor where
  fromJSVal v = fmap MediaStreamTrackProcessor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaStreamTrackProcessor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaStreamTrackProcessor where
  makeObject = makeObject . unMediaStreamTrackProcessor


instance IsGObject MediaStreamTrackProcessor where
  typeGType _ = gTypeMediaStreamTrackProcessor
  {-# INLINE typeGType #-}

noMediaStreamTrackProcessor :: Maybe MediaStreamTrackProcessor
noMediaStreamTrackProcessor = Nothing
{-# INLINE noMediaStreamTrackProcessor #-}

gTypeMediaStreamTrackProcessor :: JSM GType
gTypeMediaStreamTrackProcessor = GType . Object <$> jsg "MediaStreamTrackProcessor"

-- | Dictionary MediaStreamTrackProcessorInit (mediacapture-transform)
newtype MediaStreamTrackProcessorInit = MediaStreamTrackProcessorInit { unMediaStreamTrackProcessorInit :: JSVal }

instance PToJSVal MediaStreamTrackProcessorInit where
  pToJSVal = unMediaStreamTrackProcessorInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaStreamTrackProcessorInit where
  pFromJSVal = MediaStreamTrackProcessorInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaStreamTrackProcessorInit where
  toJSVal = return . unMediaStreamTrackProcessorInit
  {-# INLINE toJSVal #-}

instance FromJSVal MediaStreamTrackProcessorInit where
  fromJSVal v = fmap MediaStreamTrackProcessorInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaStreamTrackProcessorInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaStreamTrackProcessorInit where
  makeObject = makeObject . unMediaStreamTrackProcessorInit


instance IsGObject MediaStreamTrackProcessorInit where
  typeGType _ = gTypeMediaStreamTrackProcessorInit
  {-# INLINE typeGType #-}

noMediaStreamTrackProcessorInit :: Maybe MediaStreamTrackProcessorInit
noMediaStreamTrackProcessorInit = Nothing
{-# INLINE noMediaStreamTrackProcessorInit #-}

gTypeMediaStreamTrackProcessorInit :: JSM GType
gTypeMediaStreamTrackProcessorInit = GType . Object <$> jsg "Object"

-- | Dictionary MediaTrackCapabilities (mediacapture-streams)
newtype MediaTrackCapabilities = MediaTrackCapabilities { unMediaTrackCapabilities :: JSVal }

instance PToJSVal MediaTrackCapabilities where
  pToJSVal = unMediaTrackCapabilities
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaTrackCapabilities where
  pFromJSVal = MediaTrackCapabilities
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaTrackCapabilities where
  toJSVal = return . unMediaTrackCapabilities
  {-# INLINE toJSVal #-}

instance FromJSVal MediaTrackCapabilities where
  fromJSVal v = fmap MediaTrackCapabilities <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaTrackCapabilities
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaTrackCapabilities where
  makeObject = makeObject . unMediaTrackCapabilities


instance IsGObject MediaTrackCapabilities where
  typeGType _ = gTypeMediaTrackCapabilities
  {-# INLINE typeGType #-}

noMediaTrackCapabilities :: Maybe MediaTrackCapabilities
noMediaTrackCapabilities = Nothing
{-# INLINE noMediaTrackCapabilities #-}

gTypeMediaTrackCapabilities :: JSM GType
gTypeMediaTrackCapabilities = GType . Object <$> jsg "Object"

-- | Dictionary MediaTrackConstraintSet (mediacapture-streams)
newtype MediaTrackConstraintSet = MediaTrackConstraintSet { unMediaTrackConstraintSet :: JSVal }

instance PToJSVal MediaTrackConstraintSet where
  pToJSVal = unMediaTrackConstraintSet
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaTrackConstraintSet where
  pFromJSVal = MediaTrackConstraintSet
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaTrackConstraintSet where
  toJSVal = return . unMediaTrackConstraintSet
  {-# INLINE toJSVal #-}

instance FromJSVal MediaTrackConstraintSet where
  fromJSVal v = fmap MediaTrackConstraintSet <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaTrackConstraintSet
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaTrackConstraintSet where
  makeObject = makeObject . unMediaTrackConstraintSet

class (IsGObject o) => IsMediaTrackConstraintSet o
toMediaTrackConstraintSet :: IsMediaTrackConstraintSet o => o -> MediaTrackConstraintSet
toMediaTrackConstraintSet = MediaTrackConstraintSet . coerce

instance IsMediaTrackConstraintSet MediaTrackConstraintSet

instance IsGObject MediaTrackConstraintSet where
  typeGType _ = gTypeMediaTrackConstraintSet
  {-# INLINE typeGType #-}

noMediaTrackConstraintSet :: Maybe MediaTrackConstraintSet
noMediaTrackConstraintSet = Nothing
{-# INLINE noMediaTrackConstraintSet #-}

gTypeMediaTrackConstraintSet :: JSM GType
gTypeMediaTrackConstraintSet = GType . Object <$> jsg "Object"

-- | Dictionary MediaTrackConstraints (mediacapture-streams)
newtype MediaTrackConstraints = MediaTrackConstraints { unMediaTrackConstraints :: JSVal }

instance PToJSVal MediaTrackConstraints where
  pToJSVal = unMediaTrackConstraints
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaTrackConstraints where
  pFromJSVal = MediaTrackConstraints
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaTrackConstraints where
  toJSVal = return . unMediaTrackConstraints
  {-# INLINE toJSVal #-}

instance FromJSVal MediaTrackConstraints where
  fromJSVal v = fmap MediaTrackConstraints <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaTrackConstraints
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaTrackConstraints where
  makeObject = makeObject . unMediaTrackConstraints

instance IsMediaTrackConstraintSet MediaTrackConstraints

instance IsGObject MediaTrackConstraints where
  typeGType _ = gTypeMediaTrackConstraints
  {-# INLINE typeGType #-}

noMediaTrackConstraints :: Maybe MediaTrackConstraints
noMediaTrackConstraints = Nothing
{-# INLINE noMediaTrackConstraints #-}

gTypeMediaTrackConstraints :: JSM GType
gTypeMediaTrackConstraints = GType . Object <$> jsg "Object"

-- | Dictionary MediaTrackSettings (mediacapture-streams)
newtype MediaTrackSettings = MediaTrackSettings { unMediaTrackSettings :: JSVal }

instance PToJSVal MediaTrackSettings where
  pToJSVal = unMediaTrackSettings
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaTrackSettings where
  pFromJSVal = MediaTrackSettings
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaTrackSettings where
  toJSVal = return . unMediaTrackSettings
  {-# INLINE toJSVal #-}

instance FromJSVal MediaTrackSettings where
  fromJSVal v = fmap MediaTrackSettings <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaTrackSettings
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaTrackSettings where
  makeObject = makeObject . unMediaTrackSettings


instance IsGObject MediaTrackSettings where
  typeGType _ = gTypeMediaTrackSettings
  {-# INLINE typeGType #-}

noMediaTrackSettings :: Maybe MediaTrackSettings
noMediaTrackSettings = Nothing
{-# INLINE noMediaTrackSettings #-}

gTypeMediaTrackSettings :: JSM GType
gTypeMediaTrackSettings = GType . Object <$> jsg "Object"

-- | Dictionary MediaTrackSupportedConstraints (mediacapture-streams)
newtype MediaTrackSupportedConstraints = MediaTrackSupportedConstraints { unMediaTrackSupportedConstraints :: JSVal }

instance PToJSVal MediaTrackSupportedConstraints where
  pToJSVal = unMediaTrackSupportedConstraints
  {-# INLINE pToJSVal #-}

instance PFromJSVal MediaTrackSupportedConstraints where
  pFromJSVal = MediaTrackSupportedConstraints
  {-# INLINE pFromJSVal #-}

instance ToJSVal MediaTrackSupportedConstraints where
  toJSVal = return . unMediaTrackSupportedConstraints
  {-# INLINE toJSVal #-}

instance FromJSVal MediaTrackSupportedConstraints where
  fromJSVal v = fmap MediaTrackSupportedConstraints <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MediaTrackSupportedConstraints
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MediaTrackSupportedConstraints where
  makeObject = makeObject . unMediaTrackSupportedConstraints


instance IsGObject MediaTrackSupportedConstraints where
  typeGType _ = gTypeMediaTrackSupportedConstraints
  {-# INLINE typeGType #-}

noMediaTrackSupportedConstraints :: Maybe MediaTrackSupportedConstraints
noMediaTrackSupportedConstraints = Nothing
{-# INLINE noMediaTrackSupportedConstraints #-}

gTypeMediaTrackSupportedConstraints :: JSM GType
gTypeMediaTrackSupportedConstraints = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MessageChannel" (html).
newtype MessageChannel = MessageChannel { unMessageChannel :: JSVal }

instance PToJSVal MessageChannel where
  pToJSVal = unMessageChannel
  {-# INLINE pToJSVal #-}

instance PFromJSVal MessageChannel where
  pFromJSVal = MessageChannel
  {-# INLINE pFromJSVal #-}

instance ToJSVal MessageChannel where
  toJSVal = return . unMessageChannel
  {-# INLINE toJSVal #-}

instance FromJSVal MessageChannel where
  fromJSVal v = fmap MessageChannel <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MessageChannel
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MessageChannel where
  makeObject = makeObject . unMessageChannel


instance IsGObject MessageChannel where
  typeGType _ = gTypeMessageChannel
  {-# INLINE typeGType #-}

noMessageChannel :: Maybe MessageChannel
noMessageChannel = Nothing
{-# INLINE noMessageChannel #-}

gTypeMessageChannel :: JSM GType
gTypeMessageChannel = GType . Object <$> jsg "MessageChannel"

-- | Functions for this interface are in "JSDOM.MessageEvent" (html).
newtype MessageEvent = MessageEvent { unMessageEvent :: JSVal }

instance PToJSVal MessageEvent where
  pToJSVal = unMessageEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal MessageEvent where
  pFromJSVal = MessageEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal MessageEvent where
  toJSVal = return . unMessageEvent
  {-# INLINE toJSVal #-}

instance FromJSVal MessageEvent where
  fromJSVal v = fmap MessageEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MessageEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MessageEvent where
  makeObject = makeObject . unMessageEvent

instance IsEvent MessageEvent

instance IsGObject MessageEvent where
  typeGType _ = gTypeMessageEvent
  {-# INLINE typeGType #-}

noMessageEvent :: Maybe MessageEvent
noMessageEvent = Nothing
{-# INLINE noMessageEvent #-}

gTypeMessageEvent :: JSM GType
gTypeMessageEvent = GType . Object <$> jsg "MessageEvent"

-- | Dictionary MessageEventInit (html)
newtype MessageEventInit = MessageEventInit { unMessageEventInit :: JSVal }

instance PToJSVal MessageEventInit where
  pToJSVal = unMessageEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal MessageEventInit where
  pFromJSVal = MessageEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal MessageEventInit where
  toJSVal = return . unMessageEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal MessageEventInit where
  fromJSVal v = fmap MessageEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MessageEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MessageEventInit where
  makeObject = makeObject . unMessageEventInit

instance IsEventInit MessageEventInit

instance IsGObject MessageEventInit where
  typeGType _ = gTypeMessageEventInit
  {-# INLINE typeGType #-}

noMessageEventInit :: Maybe MessageEventInit
noMessageEventInit = Nothing
{-# INLINE noMessageEventInit #-}

gTypeMessageEventInit :: JSM GType
gTypeMessageEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MessageEventTarget" (html).
newtype MessageEventTarget = MessageEventTarget { unMessageEventTarget :: JSVal }

instance PToJSVal MessageEventTarget where
  pToJSVal = unMessageEventTarget
  {-# INLINE pToJSVal #-}

instance PFromJSVal MessageEventTarget where
  pFromJSVal = MessageEventTarget
  {-# INLINE pFromJSVal #-}

instance ToJSVal MessageEventTarget where
  toJSVal = return . unMessageEventTarget
  {-# INLINE toJSVal #-}

instance FromJSVal MessageEventTarget where
  fromJSVal v = fmap MessageEventTarget <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MessageEventTarget
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MessageEventTarget where
  makeObject = makeObject . unMessageEventTarget

class (IsGObject o) => IsMessageEventTarget o
toMessageEventTarget :: IsMessageEventTarget o => o -> MessageEventTarget
toMessageEventTarget = MessageEventTarget . coerce

instance IsMessageEventTarget MessageEventTarget

instance IsGObject MessageEventTarget where
  typeGType _ = gTypeMessageEventTarget
  {-# INLINE typeGType #-}

noMessageEventTarget :: Maybe MessageEventTarget
noMessageEventTarget = Nothing
{-# INLINE noMessageEventTarget #-}

gTypeMessageEventTarget :: JSM GType
gTypeMessageEventTarget = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MessagePort" (html).
newtype MessagePort = MessagePort { unMessagePort :: JSVal }

instance PToJSVal MessagePort where
  pToJSVal = unMessagePort
  {-# INLINE pToJSVal #-}

instance PFromJSVal MessagePort where
  pFromJSVal = MessagePort
  {-# INLINE pFromJSVal #-}

instance ToJSVal MessagePort where
  toJSVal = return . unMessagePort
  {-# INLINE toJSVal #-}

instance FromJSVal MessagePort where
  fromJSVal v = fmap MessagePort <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MessagePort
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MessagePort where
  makeObject = makeObject . unMessagePort

instance IsMessageEventTarget MessagePort
instance IsEventTarget MessagePort

instance IsGObject MessagePort where
  typeGType _ = gTypeMessagePort
  {-# INLINE typeGType #-}

noMessagePort :: Maybe MessagePort
noMessagePort = Nothing
{-# INLINE noMessagePort #-}

gTypeMessagePort :: JSM GType
gTypeMessagePort = GType . Object <$> jsg "MessagePort"

-- | Functions for this interface are in "JSDOM.MimeType" (html).
newtype MimeType = MimeType { unMimeType :: JSVal }

instance PToJSVal MimeType where
  pToJSVal = unMimeType
  {-# INLINE pToJSVal #-}

instance PFromJSVal MimeType where
  pFromJSVal = MimeType
  {-# INLINE pFromJSVal #-}

instance ToJSVal MimeType where
  toJSVal = return . unMimeType
  {-# INLINE toJSVal #-}

instance FromJSVal MimeType where
  fromJSVal v = fmap MimeType <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MimeType
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MimeType where
  makeObject = makeObject . unMimeType


instance IsGObject MimeType where
  typeGType _ = gTypeMimeType
  {-# INLINE typeGType #-}

noMimeType :: Maybe MimeType
noMimeType = Nothing
{-# INLINE noMimeType #-}

gTypeMimeType :: JSM GType
gTypeMimeType = GType . Object <$> jsg "MimeType"

-- | Functions for this interface are in "JSDOM.MimeTypeArray" (html).
newtype MimeTypeArray = MimeTypeArray { unMimeTypeArray :: JSVal }

instance PToJSVal MimeTypeArray where
  pToJSVal = unMimeTypeArray
  {-# INLINE pToJSVal #-}

instance PFromJSVal MimeTypeArray where
  pFromJSVal = MimeTypeArray
  {-# INLINE pFromJSVal #-}

instance ToJSVal MimeTypeArray where
  toJSVal = return . unMimeTypeArray
  {-# INLINE toJSVal #-}

instance FromJSVal MimeTypeArray where
  fromJSVal v = fmap MimeTypeArray <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MimeTypeArray
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MimeTypeArray where
  makeObject = makeObject . unMimeTypeArray


instance IsGObject MimeTypeArray where
  typeGType _ = gTypeMimeTypeArray
  {-# INLINE typeGType #-}

noMimeTypeArray :: Maybe MimeTypeArray
noMimeTypeArray = Nothing
{-# INLINE noMimeTypeArray #-}

gTypeMimeTypeArray :: JSM GType
gTypeMimeTypeArray = GType . Object <$> jsg "MimeTypeArray"

-- | Functions for this interface are in "JSDOM.MouseEvent" (pointerevents4).
newtype MouseEvent = MouseEvent { unMouseEvent :: JSVal }

instance PToJSVal MouseEvent where
  pToJSVal = unMouseEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal MouseEvent where
  pFromJSVal = MouseEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal MouseEvent where
  toJSVal = return . unMouseEvent
  {-# INLINE toJSVal #-}

instance FromJSVal MouseEvent where
  fromJSVal v = fmap MouseEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MouseEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MouseEvent where
  makeObject = makeObject . unMouseEvent

class (IsUIEvent o, IsGObject o) => IsMouseEvent o
toMouseEvent :: IsMouseEvent o => o -> MouseEvent
toMouseEvent = MouseEvent . coerce

instance IsMouseEvent MouseEvent
instance IsUIEvent MouseEvent
instance IsEvent MouseEvent

instance IsGObject MouseEvent where
  typeGType _ = gTypeMouseEvent
  {-# INLINE typeGType #-}

noMouseEvent :: Maybe MouseEvent
noMouseEvent = Nothing
{-# INLINE noMouseEvent #-}

gTypeMouseEvent :: JSM GType
gTypeMouseEvent = GType . Object <$> jsg "MouseEvent"

-- | Dictionary MouseEventInit (pointerevents4)
newtype MouseEventInit = MouseEventInit { unMouseEventInit :: JSVal }

instance PToJSVal MouseEventInit where
  pToJSVal = unMouseEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal MouseEventInit where
  pFromJSVal = MouseEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal MouseEventInit where
  toJSVal = return . unMouseEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal MouseEventInit where
  fromJSVal v = fmap MouseEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MouseEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MouseEventInit where
  makeObject = makeObject . unMouseEventInit

class (IsEventModifierInit o, IsGObject o) => IsMouseEventInit o
toMouseEventInit :: IsMouseEventInit o => o -> MouseEventInit
toMouseEventInit = MouseEventInit . coerce

instance IsMouseEventInit MouseEventInit
instance IsEventModifierInit MouseEventInit
instance IsUIEventInit MouseEventInit
instance IsEventInit MouseEventInit

instance IsGObject MouseEventInit where
  typeGType _ = gTypeMouseEventInit
  {-# INLINE typeGType #-}

noMouseEventInit :: Maybe MouseEventInit
noMouseEventInit = Nothing
{-# INLINE noMouseEventInit #-}

gTypeMouseEventInit :: JSM GType
gTypeMouseEventInit = GType . Object <$> jsg "Object"

-- | Dictionary MultiCacheQueryOptions (service-workers)
newtype MultiCacheQueryOptions = MultiCacheQueryOptions { unMultiCacheQueryOptions :: JSVal }

instance PToJSVal MultiCacheQueryOptions where
  pToJSVal = unMultiCacheQueryOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal MultiCacheQueryOptions where
  pFromJSVal = MultiCacheQueryOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal MultiCacheQueryOptions where
  toJSVal = return . unMultiCacheQueryOptions
  {-# INLINE toJSVal #-}

instance FromJSVal MultiCacheQueryOptions where
  fromJSVal v = fmap MultiCacheQueryOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MultiCacheQueryOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MultiCacheQueryOptions where
  makeObject = makeObject . unMultiCacheQueryOptions

instance IsCacheQueryOptions MultiCacheQueryOptions

instance IsGObject MultiCacheQueryOptions where
  typeGType _ = gTypeMultiCacheQueryOptions
  {-# INLINE typeGType #-}

noMultiCacheQueryOptions :: Maybe MultiCacheQueryOptions
noMultiCacheQueryOptions = Nothing
{-# INLINE noMultiCacheQueryOptions #-}

gTypeMultiCacheQueryOptions :: JSM GType
gTypeMultiCacheQueryOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MutationObserver" (dom).
newtype MutationObserver = MutationObserver { unMutationObserver :: JSVal }

instance PToJSVal MutationObserver where
  pToJSVal = unMutationObserver
  {-# INLINE pToJSVal #-}

instance PFromJSVal MutationObserver where
  pFromJSVal = MutationObserver
  {-# INLINE pFromJSVal #-}

instance ToJSVal MutationObserver where
  toJSVal = return . unMutationObserver
  {-# INLINE toJSVal #-}

instance FromJSVal MutationObserver where
  fromJSVal v = fmap MutationObserver <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MutationObserver
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MutationObserver where
  makeObject = makeObject . unMutationObserver


instance IsGObject MutationObserver where
  typeGType _ = gTypeMutationObserver
  {-# INLINE typeGType #-}

noMutationObserver :: Maybe MutationObserver
noMutationObserver = Nothing
{-# INLINE noMutationObserver #-}

gTypeMutationObserver :: JSM GType
gTypeMutationObserver = GType . Object <$> jsg "MutationObserver"

-- | Dictionary MutationObserverInit (dom)
newtype MutationObserverInit = MutationObserverInit { unMutationObserverInit :: JSVal }

instance PToJSVal MutationObserverInit where
  pToJSVal = unMutationObserverInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal MutationObserverInit where
  pFromJSVal = MutationObserverInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal MutationObserverInit where
  toJSVal = return . unMutationObserverInit
  {-# INLINE toJSVal #-}

instance FromJSVal MutationObserverInit where
  fromJSVal v = fmap MutationObserverInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MutationObserverInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MutationObserverInit where
  makeObject = makeObject . unMutationObserverInit


instance IsGObject MutationObserverInit where
  typeGType _ = gTypeMutationObserverInit
  {-# INLINE typeGType #-}

noMutationObserverInit :: Maybe MutationObserverInit
noMutationObserverInit = Nothing
{-# INLINE noMutationObserverInit #-}

gTypeMutationObserverInit :: JSM GType
gTypeMutationObserverInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.MutationRecord" (dom).
newtype MutationRecord = MutationRecord { unMutationRecord :: JSVal }

instance PToJSVal MutationRecord where
  pToJSVal = unMutationRecord
  {-# INLINE pToJSVal #-}

instance PFromJSVal MutationRecord where
  pFromJSVal = MutationRecord
  {-# INLINE pFromJSVal #-}

instance ToJSVal MutationRecord where
  toJSVal = return . unMutationRecord
  {-# INLINE toJSVal #-}

instance FromJSVal MutationRecord where
  fromJSVal v = fmap MutationRecord <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . MutationRecord
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject MutationRecord where
  makeObject = makeObject . unMutationRecord


instance IsGObject MutationRecord where
  typeGType _ = gTypeMutationRecord
  {-# INLINE typeGType #-}

noMutationRecord :: Maybe MutationRecord
noMutationRecord = Nothing
{-# INLINE noMutationRecord #-}

gTypeMutationRecord :: JSM GType
gTypeMutationRecord = GType . Object <$> jsg "MutationRecord"

-- | Functions for this interface are in "JSDOM.NamedNodeMap" (dom).
newtype NamedNodeMap = NamedNodeMap { unNamedNodeMap :: JSVal }

instance PToJSVal NamedNodeMap where
  pToJSVal = unNamedNodeMap
  {-# INLINE pToJSVal #-}

instance PFromJSVal NamedNodeMap where
  pFromJSVal = NamedNodeMap
  {-# INLINE pFromJSVal #-}

instance ToJSVal NamedNodeMap where
  toJSVal = return . unNamedNodeMap
  {-# INLINE toJSVal #-}

instance FromJSVal NamedNodeMap where
  fromJSVal v = fmap NamedNodeMap <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NamedNodeMap
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NamedNodeMap where
  makeObject = makeObject . unNamedNodeMap


instance IsGObject NamedNodeMap where
  typeGType _ = gTypeNamedNodeMap
  {-# INLINE typeGType #-}

noNamedNodeMap :: Maybe NamedNodeMap
noNamedNodeMap = Nothing
{-# INLINE noNamedNodeMap #-}

gTypeNamedNodeMap :: JSM GType
gTypeNamedNodeMap = GType . Object <$> jsg "NamedNodeMap"

-- | Functions for this interface are in "JSDOM.NavigateEvent" (html).
newtype NavigateEvent = NavigateEvent { unNavigateEvent :: JSVal }

instance PToJSVal NavigateEvent where
  pToJSVal = unNavigateEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigateEvent where
  pFromJSVal = NavigateEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigateEvent where
  toJSVal = return . unNavigateEvent
  {-# INLINE toJSVal #-}

instance FromJSVal NavigateEvent where
  fromJSVal v = fmap NavigateEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigateEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigateEvent where
  makeObject = makeObject . unNavigateEvent

instance IsEvent NavigateEvent

instance IsGObject NavigateEvent where
  typeGType _ = gTypeNavigateEvent
  {-# INLINE typeGType #-}

noNavigateEvent :: Maybe NavigateEvent
noNavigateEvent = Nothing
{-# INLINE noNavigateEvent #-}

gTypeNavigateEvent :: JSM GType
gTypeNavigateEvent = GType . Object <$> jsg "NavigateEvent"

-- | Dictionary NavigateEventInit (html)
newtype NavigateEventInit = NavigateEventInit { unNavigateEventInit :: JSVal }

instance PToJSVal NavigateEventInit where
  pToJSVal = unNavigateEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigateEventInit where
  pFromJSVal = NavigateEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigateEventInit where
  toJSVal = return . unNavigateEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal NavigateEventInit where
  fromJSVal v = fmap NavigateEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigateEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigateEventInit where
  makeObject = makeObject . unNavigateEventInit

instance IsEventInit NavigateEventInit

instance IsGObject NavigateEventInit where
  typeGType _ = gTypeNavigateEventInit
  {-# INLINE typeGType #-}

noNavigateEventInit :: Maybe NavigateEventInit
noNavigateEventInit = Nothing
{-# INLINE noNavigateEventInit #-}

gTypeNavigateEventInit :: JSM GType
gTypeNavigateEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Navigation" (html).
newtype Navigation = Navigation { unNavigation :: JSVal }

instance PToJSVal Navigation where
  pToJSVal = unNavigation
  {-# INLINE pToJSVal #-}

instance PFromJSVal Navigation where
  pFromJSVal = Navigation
  {-# INLINE pFromJSVal #-}

instance ToJSVal Navigation where
  toJSVal = return . unNavigation
  {-# INLINE toJSVal #-}

instance FromJSVal Navigation where
  fromJSVal v = fmap Navigation <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Navigation
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Navigation where
  makeObject = makeObject . unNavigation

instance IsEventTarget Navigation

instance IsGObject Navigation where
  typeGType _ = gTypeNavigation
  {-# INLINE typeGType #-}

noNavigation :: Maybe Navigation
noNavigation = Nothing
{-# INLINE noNavigation #-}

gTypeNavigation :: JSM GType
gTypeNavigation = GType . Object <$> jsg "Navigation"

-- | Functions for this interface are in "JSDOM.NavigationActivation" (html).
newtype NavigationActivation = NavigationActivation { unNavigationActivation :: JSVal }

instance PToJSVal NavigationActivation where
  pToJSVal = unNavigationActivation
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationActivation where
  pFromJSVal = NavigationActivation
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationActivation where
  toJSVal = return . unNavigationActivation
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationActivation where
  fromJSVal v = fmap NavigationActivation <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationActivation
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationActivation where
  makeObject = makeObject . unNavigationActivation


instance IsGObject NavigationActivation where
  typeGType _ = gTypeNavigationActivation
  {-# INLINE typeGType #-}

noNavigationActivation :: Maybe NavigationActivation
noNavigationActivation = Nothing
{-# INLINE noNavigationActivation #-}

gTypeNavigationActivation :: JSM GType
gTypeNavigationActivation = GType . Object <$> jsg "NavigationActivation"

-- | Functions for this interface are in "JSDOM.NavigationCurrentEntryChangeEvent" (html).
newtype NavigationCurrentEntryChangeEvent = NavigationCurrentEntryChangeEvent { unNavigationCurrentEntryChangeEvent :: JSVal }

instance PToJSVal NavigationCurrentEntryChangeEvent where
  pToJSVal = unNavigationCurrentEntryChangeEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationCurrentEntryChangeEvent where
  pFromJSVal = NavigationCurrentEntryChangeEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationCurrentEntryChangeEvent where
  toJSVal = return . unNavigationCurrentEntryChangeEvent
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationCurrentEntryChangeEvent where
  fromJSVal v = fmap NavigationCurrentEntryChangeEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationCurrentEntryChangeEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationCurrentEntryChangeEvent where
  makeObject = makeObject . unNavigationCurrentEntryChangeEvent

instance IsEvent NavigationCurrentEntryChangeEvent

instance IsGObject NavigationCurrentEntryChangeEvent where
  typeGType _ = gTypeNavigationCurrentEntryChangeEvent
  {-# INLINE typeGType #-}

noNavigationCurrentEntryChangeEvent :: Maybe NavigationCurrentEntryChangeEvent
noNavigationCurrentEntryChangeEvent = Nothing
{-# INLINE noNavigationCurrentEntryChangeEvent #-}

gTypeNavigationCurrentEntryChangeEvent :: JSM GType
gTypeNavigationCurrentEntryChangeEvent = GType . Object <$> jsg "NavigationCurrentEntryChangeEvent"

-- | Dictionary NavigationCurrentEntryChangeEventInit (html)
newtype NavigationCurrentEntryChangeEventInit = NavigationCurrentEntryChangeEventInit { unNavigationCurrentEntryChangeEventInit :: JSVal }

instance PToJSVal NavigationCurrentEntryChangeEventInit where
  pToJSVal = unNavigationCurrentEntryChangeEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationCurrentEntryChangeEventInit where
  pFromJSVal = NavigationCurrentEntryChangeEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationCurrentEntryChangeEventInit where
  toJSVal = return . unNavigationCurrentEntryChangeEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationCurrentEntryChangeEventInit where
  fromJSVal v = fmap NavigationCurrentEntryChangeEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationCurrentEntryChangeEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationCurrentEntryChangeEventInit where
  makeObject = makeObject . unNavigationCurrentEntryChangeEventInit

instance IsEventInit NavigationCurrentEntryChangeEventInit

instance IsGObject NavigationCurrentEntryChangeEventInit where
  typeGType _ = gTypeNavigationCurrentEntryChangeEventInit
  {-# INLINE typeGType #-}

noNavigationCurrentEntryChangeEventInit :: Maybe NavigationCurrentEntryChangeEventInit
noNavigationCurrentEntryChangeEventInit = Nothing
{-# INLINE noNavigationCurrentEntryChangeEventInit #-}

gTypeNavigationCurrentEntryChangeEventInit :: JSM GType
gTypeNavigationCurrentEntryChangeEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigationDestination" (html).
newtype NavigationDestination = NavigationDestination { unNavigationDestination :: JSVal }

instance PToJSVal NavigationDestination where
  pToJSVal = unNavigationDestination
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationDestination where
  pFromJSVal = NavigationDestination
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationDestination where
  toJSVal = return . unNavigationDestination
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationDestination where
  fromJSVal v = fmap NavigationDestination <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationDestination
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationDestination where
  makeObject = makeObject . unNavigationDestination


instance IsGObject NavigationDestination where
  typeGType _ = gTypeNavigationDestination
  {-# INLINE typeGType #-}

noNavigationDestination :: Maybe NavigationDestination
noNavigationDestination = Nothing
{-# INLINE noNavigationDestination #-}

gTypeNavigationDestination :: JSM GType
gTypeNavigationDestination = GType . Object <$> jsg "NavigationDestination"

-- | Functions for this interface are in "JSDOM.NavigationEvent" (css-nav-1).
newtype NavigationEvent = NavigationEvent { unNavigationEvent :: JSVal }

instance PToJSVal NavigationEvent where
  pToJSVal = unNavigationEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationEvent where
  pFromJSVal = NavigationEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationEvent where
  toJSVal = return . unNavigationEvent
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationEvent where
  fromJSVal v = fmap NavigationEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationEvent where
  makeObject = makeObject . unNavigationEvent

instance IsUIEvent NavigationEvent
instance IsEvent NavigationEvent

instance IsGObject NavigationEvent where
  typeGType _ = gTypeNavigationEvent
  {-# INLINE typeGType #-}

noNavigationEvent :: Maybe NavigationEvent
noNavigationEvent = Nothing
{-# INLINE noNavigationEvent #-}

gTypeNavigationEvent :: JSM GType
gTypeNavigationEvent = GType . Object <$> jsg "NavigationEvent"

-- | Functions for this interface are in "JSDOM.NavigationHistoryEntry" (html).
newtype NavigationHistoryEntry = NavigationHistoryEntry { unNavigationHistoryEntry :: JSVal }

instance PToJSVal NavigationHistoryEntry where
  pToJSVal = unNavigationHistoryEntry
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationHistoryEntry where
  pFromJSVal = NavigationHistoryEntry
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationHistoryEntry where
  toJSVal = return . unNavigationHistoryEntry
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationHistoryEntry where
  fromJSVal v = fmap NavigationHistoryEntry <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationHistoryEntry
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationHistoryEntry where
  makeObject = makeObject . unNavigationHistoryEntry

instance IsEventTarget NavigationHistoryEntry

instance IsGObject NavigationHistoryEntry where
  typeGType _ = gTypeNavigationHistoryEntry
  {-# INLINE typeGType #-}

noNavigationHistoryEntry :: Maybe NavigationHistoryEntry
noNavigationHistoryEntry = Nothing
{-# INLINE noNavigationHistoryEntry #-}

gTypeNavigationHistoryEntry :: JSM GType
gTypeNavigationHistoryEntry = GType . Object <$> jsg "NavigationHistoryEntry"

-- | Dictionary NavigationInterceptOptions (html)
newtype NavigationInterceptOptions = NavigationInterceptOptions { unNavigationInterceptOptions :: JSVal }

instance PToJSVal NavigationInterceptOptions where
  pToJSVal = unNavigationInterceptOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationInterceptOptions where
  pFromJSVal = NavigationInterceptOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationInterceptOptions where
  toJSVal = return . unNavigationInterceptOptions
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationInterceptOptions where
  fromJSVal v = fmap NavigationInterceptOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationInterceptOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationInterceptOptions where
  makeObject = makeObject . unNavigationInterceptOptions


instance IsGObject NavigationInterceptOptions where
  typeGType _ = gTypeNavigationInterceptOptions
  {-# INLINE typeGType #-}

noNavigationInterceptOptions :: Maybe NavigationInterceptOptions
noNavigationInterceptOptions = Nothing
{-# INLINE noNavigationInterceptOptions #-}

gTypeNavigationInterceptOptions :: JSM GType
gTypeNavigationInterceptOptions = GType . Object <$> jsg "Object"

-- | Dictionary NavigationNavigateOptions (html)
newtype NavigationNavigateOptions = NavigationNavigateOptions { unNavigationNavigateOptions :: JSVal }

instance PToJSVal NavigationNavigateOptions where
  pToJSVal = unNavigationNavigateOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationNavigateOptions where
  pFromJSVal = NavigationNavigateOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationNavigateOptions where
  toJSVal = return . unNavigationNavigateOptions
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationNavigateOptions where
  fromJSVal v = fmap NavigationNavigateOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationNavigateOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationNavigateOptions where
  makeObject = makeObject . unNavigationNavigateOptions

instance IsNavigationOptions NavigationNavigateOptions

instance IsGObject NavigationNavigateOptions where
  typeGType _ = gTypeNavigationNavigateOptions
  {-# INLINE typeGType #-}

noNavigationNavigateOptions :: Maybe NavigationNavigateOptions
noNavigationNavigateOptions = Nothing
{-# INLINE noNavigationNavigateOptions #-}

gTypeNavigationNavigateOptions :: JSM GType
gTypeNavigationNavigateOptions = GType . Object <$> jsg "Object"

-- | Dictionary NavigationOptions (html)
newtype NavigationOptions = NavigationOptions { unNavigationOptions :: JSVal }

instance PToJSVal NavigationOptions where
  pToJSVal = unNavigationOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationOptions where
  pFromJSVal = NavigationOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationOptions where
  toJSVal = return . unNavigationOptions
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationOptions where
  fromJSVal v = fmap NavigationOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationOptions where
  makeObject = makeObject . unNavigationOptions

class (IsGObject o) => IsNavigationOptions o
toNavigationOptions :: IsNavigationOptions o => o -> NavigationOptions
toNavigationOptions = NavigationOptions . coerce

instance IsNavigationOptions NavigationOptions

instance IsGObject NavigationOptions where
  typeGType _ = gTypeNavigationOptions
  {-# INLINE typeGType #-}

noNavigationOptions :: Maybe NavigationOptions
noNavigationOptions = Nothing
{-# INLINE noNavigationOptions #-}

gTypeNavigationOptions :: JSM GType
gTypeNavigationOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigationPrecommitController" (html).
newtype NavigationPrecommitController = NavigationPrecommitController { unNavigationPrecommitController :: JSVal }

instance PToJSVal NavigationPrecommitController where
  pToJSVal = unNavigationPrecommitController
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationPrecommitController where
  pFromJSVal = NavigationPrecommitController
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationPrecommitController where
  toJSVal = return . unNavigationPrecommitController
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationPrecommitController where
  fromJSVal v = fmap NavigationPrecommitController <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationPrecommitController
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationPrecommitController where
  makeObject = makeObject . unNavigationPrecommitController


instance IsGObject NavigationPrecommitController where
  typeGType _ = gTypeNavigationPrecommitController
  {-# INLINE typeGType #-}

noNavigationPrecommitController :: Maybe NavigationPrecommitController
noNavigationPrecommitController = Nothing
{-# INLINE noNavigationPrecommitController #-}

gTypeNavigationPrecommitController :: JSM GType
gTypeNavigationPrecommitController = GType . Object <$> jsg "NavigationPrecommitController"

-- | Functions for this interface are in "JSDOM.NavigationPreloadManager" (service-workers).
newtype NavigationPreloadManager = NavigationPreloadManager { unNavigationPreloadManager :: JSVal }

instance PToJSVal NavigationPreloadManager where
  pToJSVal = unNavigationPreloadManager
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationPreloadManager where
  pFromJSVal = NavigationPreloadManager
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationPreloadManager where
  toJSVal = return . unNavigationPreloadManager
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationPreloadManager where
  fromJSVal v = fmap NavigationPreloadManager <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationPreloadManager
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationPreloadManager where
  makeObject = makeObject . unNavigationPreloadManager


instance IsGObject NavigationPreloadManager where
  typeGType _ = gTypeNavigationPreloadManager
  {-# INLINE typeGType #-}

noNavigationPreloadManager :: Maybe NavigationPreloadManager
noNavigationPreloadManager = Nothing
{-# INLINE noNavigationPreloadManager #-}

gTypeNavigationPreloadManager :: JSM GType
gTypeNavigationPreloadManager = GType . Object <$> jsg "NavigationPreloadManager"

-- | Dictionary NavigationPreloadState (service-workers)
newtype NavigationPreloadState = NavigationPreloadState { unNavigationPreloadState :: JSVal }

instance PToJSVal NavigationPreloadState where
  pToJSVal = unNavigationPreloadState
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationPreloadState where
  pFromJSVal = NavigationPreloadState
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationPreloadState where
  toJSVal = return . unNavigationPreloadState
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationPreloadState where
  fromJSVal v = fmap NavigationPreloadState <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationPreloadState
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationPreloadState where
  makeObject = makeObject . unNavigationPreloadState


instance IsGObject NavigationPreloadState where
  typeGType _ = gTypeNavigationPreloadState
  {-# INLINE typeGType #-}

noNavigationPreloadState :: Maybe NavigationPreloadState
noNavigationPreloadState = Nothing
{-# INLINE noNavigationPreloadState #-}

gTypeNavigationPreloadState :: JSM GType
gTypeNavigationPreloadState = GType . Object <$> jsg "Object"

-- | Dictionary NavigationReloadOptions (html)
newtype NavigationReloadOptions = NavigationReloadOptions { unNavigationReloadOptions :: JSVal }

instance PToJSVal NavigationReloadOptions where
  pToJSVal = unNavigationReloadOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationReloadOptions where
  pFromJSVal = NavigationReloadOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationReloadOptions where
  toJSVal = return . unNavigationReloadOptions
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationReloadOptions where
  fromJSVal v = fmap NavigationReloadOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationReloadOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationReloadOptions where
  makeObject = makeObject . unNavigationReloadOptions

instance IsNavigationOptions NavigationReloadOptions

instance IsGObject NavigationReloadOptions where
  typeGType _ = gTypeNavigationReloadOptions
  {-# INLINE typeGType #-}

noNavigationReloadOptions :: Maybe NavigationReloadOptions
noNavigationReloadOptions = Nothing
{-# INLINE noNavigationReloadOptions #-}

gTypeNavigationReloadOptions :: JSM GType
gTypeNavigationReloadOptions = GType . Object <$> jsg "Object"

-- | Dictionary NavigationResult (html)
newtype NavigationResult = NavigationResult { unNavigationResult :: JSVal }

instance PToJSVal NavigationResult where
  pToJSVal = unNavigationResult
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationResult where
  pFromJSVal = NavigationResult
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationResult where
  toJSVal = return . unNavigationResult
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationResult where
  fromJSVal v = fmap NavigationResult <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationResult
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationResult where
  makeObject = makeObject . unNavigationResult


instance IsGObject NavigationResult where
  typeGType _ = gTypeNavigationResult
  {-# INLINE typeGType #-}

noNavigationResult :: Maybe NavigationResult
noNavigationResult = Nothing
{-# INLINE noNavigationResult #-}

gTypeNavigationResult :: JSM GType
gTypeNavigationResult = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigationTransition" (html).
newtype NavigationTransition = NavigationTransition { unNavigationTransition :: JSVal }

instance PToJSVal NavigationTransition where
  pToJSVal = unNavigationTransition
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationTransition where
  pFromJSVal = NavigationTransition
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationTransition where
  toJSVal = return . unNavigationTransition
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationTransition where
  fromJSVal v = fmap NavigationTransition <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationTransition
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationTransition where
  makeObject = makeObject . unNavigationTransition


instance IsGObject NavigationTransition where
  typeGType _ = gTypeNavigationTransition
  {-# INLINE typeGType #-}

noNavigationTransition :: Maybe NavigationTransition
noNavigationTransition = Nothing
{-# INLINE noNavigationTransition #-}

gTypeNavigationTransition :: JSM GType
gTypeNavigationTransition = GType . Object <$> jsg "NavigationTransition"

-- | Dictionary NavigationUpdateCurrentEntryOptions (html)
newtype NavigationUpdateCurrentEntryOptions = NavigationUpdateCurrentEntryOptions { unNavigationUpdateCurrentEntryOptions :: JSVal }

instance PToJSVal NavigationUpdateCurrentEntryOptions where
  pToJSVal = unNavigationUpdateCurrentEntryOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigationUpdateCurrentEntryOptions where
  pFromJSVal = NavigationUpdateCurrentEntryOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigationUpdateCurrentEntryOptions where
  toJSVal = return . unNavigationUpdateCurrentEntryOptions
  {-# INLINE toJSVal #-}

instance FromJSVal NavigationUpdateCurrentEntryOptions where
  fromJSVal v = fmap NavigationUpdateCurrentEntryOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigationUpdateCurrentEntryOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigationUpdateCurrentEntryOptions where
  makeObject = makeObject . unNavigationUpdateCurrentEntryOptions


instance IsGObject NavigationUpdateCurrentEntryOptions where
  typeGType _ = gTypeNavigationUpdateCurrentEntryOptions
  {-# INLINE typeGType #-}

noNavigationUpdateCurrentEntryOptions :: Maybe NavigationUpdateCurrentEntryOptions
noNavigationUpdateCurrentEntryOptions = Nothing
{-# INLINE noNavigationUpdateCurrentEntryOptions #-}

gTypeNavigationUpdateCurrentEntryOptions :: JSM GType
gTypeNavigationUpdateCurrentEntryOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Navigator" (html).
newtype Navigator = Navigator { unNavigator :: JSVal }

instance PToJSVal Navigator where
  pToJSVal = unNavigator
  {-# INLINE pToJSVal #-}

instance PFromJSVal Navigator where
  pFromJSVal = Navigator
  {-# INLINE pFromJSVal #-}

instance ToJSVal Navigator where
  toJSVal = return . unNavigator
  {-# INLINE toJSVal #-}

instance FromJSVal Navigator where
  fromJSVal v = fmap Navigator <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Navigator
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Navigator where
  makeObject = makeObject . unNavigator

instance IsNavigatorAutomationInformation Navigator
instance IsNavigatorBadge Navigator
instance IsNavigatorConcurrentHardware Navigator
instance IsNavigatorContentUtils Navigator
instance IsNavigatorCookies Navigator
instance IsNavigatorGPU Navigator
instance IsNavigatorID Navigator
instance IsNavigatorLanguage Navigator
instance IsNavigatorLocks Navigator
instance IsNavigatorOnLine Navigator
instance IsNavigatorPlugins Navigator
instance IsNavigatorStorage Navigator

instance IsGObject Navigator where
  typeGType _ = gTypeNavigator
  {-# INLINE typeGType #-}

noNavigator :: Maybe Navigator
noNavigator = Nothing
{-# INLINE noNavigator #-}

gTypeNavigator :: JSM GType
gTypeNavigator = GType . Object <$> jsg "Navigator"

-- | Functions for this interface are in "JSDOM.NavigatorAutomationInformation" (webdriver2).
newtype NavigatorAutomationInformation = NavigatorAutomationInformation { unNavigatorAutomationInformation :: JSVal }

instance PToJSVal NavigatorAutomationInformation where
  pToJSVal = unNavigatorAutomationInformation
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigatorAutomationInformation where
  pFromJSVal = NavigatorAutomationInformation
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigatorAutomationInformation where
  toJSVal = return . unNavigatorAutomationInformation
  {-# INLINE toJSVal #-}

instance FromJSVal NavigatorAutomationInformation where
  fromJSVal v = fmap NavigatorAutomationInformation <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigatorAutomationInformation
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigatorAutomationInformation where
  makeObject = makeObject . unNavigatorAutomationInformation

class (IsGObject o) => IsNavigatorAutomationInformation o
toNavigatorAutomationInformation :: IsNavigatorAutomationInformation o => o -> NavigatorAutomationInformation
toNavigatorAutomationInformation = NavigatorAutomationInformation . coerce

instance IsNavigatorAutomationInformation NavigatorAutomationInformation

instance IsGObject NavigatorAutomationInformation where
  typeGType _ = gTypeNavigatorAutomationInformation
  {-# INLINE typeGType #-}

noNavigatorAutomationInformation :: Maybe NavigatorAutomationInformation
noNavigatorAutomationInformation = Nothing
{-# INLINE noNavigatorAutomationInformation #-}

gTypeNavigatorAutomationInformation :: JSM GType
gTypeNavigatorAutomationInformation = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigatorBadge" (badging).
newtype NavigatorBadge = NavigatorBadge { unNavigatorBadge :: JSVal }

instance PToJSVal NavigatorBadge where
  pToJSVal = unNavigatorBadge
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigatorBadge where
  pFromJSVal = NavigatorBadge
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigatorBadge where
  toJSVal = return . unNavigatorBadge
  {-# INLINE toJSVal #-}

instance FromJSVal NavigatorBadge where
  fromJSVal v = fmap NavigatorBadge <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigatorBadge
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigatorBadge where
  makeObject = makeObject . unNavigatorBadge

class (IsGObject o) => IsNavigatorBadge o
toNavigatorBadge :: IsNavigatorBadge o => o -> NavigatorBadge
toNavigatorBadge = NavigatorBadge . coerce

instance IsNavigatorBadge NavigatorBadge

instance IsGObject NavigatorBadge where
  typeGType _ = gTypeNavigatorBadge
  {-# INLINE typeGType #-}

noNavigatorBadge :: Maybe NavigatorBadge
noNavigatorBadge = Nothing
{-# INLINE noNavigatorBadge #-}

gTypeNavigatorBadge :: JSM GType
gTypeNavigatorBadge = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigatorConcurrentHardware" (html).
newtype NavigatorConcurrentHardware = NavigatorConcurrentHardware { unNavigatorConcurrentHardware :: JSVal }

instance PToJSVal NavigatorConcurrentHardware where
  pToJSVal = unNavigatorConcurrentHardware
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigatorConcurrentHardware where
  pFromJSVal = NavigatorConcurrentHardware
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigatorConcurrentHardware where
  toJSVal = return . unNavigatorConcurrentHardware
  {-# INLINE toJSVal #-}

instance FromJSVal NavigatorConcurrentHardware where
  fromJSVal v = fmap NavigatorConcurrentHardware <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigatorConcurrentHardware
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigatorConcurrentHardware where
  makeObject = makeObject . unNavigatorConcurrentHardware

class (IsGObject o) => IsNavigatorConcurrentHardware o
toNavigatorConcurrentHardware :: IsNavigatorConcurrentHardware o => o -> NavigatorConcurrentHardware
toNavigatorConcurrentHardware = NavigatorConcurrentHardware . coerce

instance IsNavigatorConcurrentHardware NavigatorConcurrentHardware

instance IsGObject NavigatorConcurrentHardware where
  typeGType _ = gTypeNavigatorConcurrentHardware
  {-# INLINE typeGType #-}

noNavigatorConcurrentHardware :: Maybe NavigatorConcurrentHardware
noNavigatorConcurrentHardware = Nothing
{-# INLINE noNavigatorConcurrentHardware #-}

gTypeNavigatorConcurrentHardware :: JSM GType
gTypeNavigatorConcurrentHardware = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigatorContentUtils" (html).
newtype NavigatorContentUtils = NavigatorContentUtils { unNavigatorContentUtils :: JSVal }

instance PToJSVal NavigatorContentUtils where
  pToJSVal = unNavigatorContentUtils
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigatorContentUtils where
  pFromJSVal = NavigatorContentUtils
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigatorContentUtils where
  toJSVal = return . unNavigatorContentUtils
  {-# INLINE toJSVal #-}

instance FromJSVal NavigatorContentUtils where
  fromJSVal v = fmap NavigatorContentUtils <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigatorContentUtils
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigatorContentUtils where
  makeObject = makeObject . unNavigatorContentUtils

class (IsGObject o) => IsNavigatorContentUtils o
toNavigatorContentUtils :: IsNavigatorContentUtils o => o -> NavigatorContentUtils
toNavigatorContentUtils = NavigatorContentUtils . coerce

instance IsNavigatorContentUtils NavigatorContentUtils

instance IsGObject NavigatorContentUtils where
  typeGType _ = gTypeNavigatorContentUtils
  {-# INLINE typeGType #-}

noNavigatorContentUtils :: Maybe NavigatorContentUtils
noNavigatorContentUtils = Nothing
{-# INLINE noNavigatorContentUtils #-}

gTypeNavigatorContentUtils :: JSM GType
gTypeNavigatorContentUtils = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigatorCookies" (html).
newtype NavigatorCookies = NavigatorCookies { unNavigatorCookies :: JSVal }

instance PToJSVal NavigatorCookies where
  pToJSVal = unNavigatorCookies
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigatorCookies where
  pFromJSVal = NavigatorCookies
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigatorCookies where
  toJSVal = return . unNavigatorCookies
  {-# INLINE toJSVal #-}

instance FromJSVal NavigatorCookies where
  fromJSVal v = fmap NavigatorCookies <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigatorCookies
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigatorCookies where
  makeObject = makeObject . unNavigatorCookies

class (IsGObject o) => IsNavigatorCookies o
toNavigatorCookies :: IsNavigatorCookies o => o -> NavigatorCookies
toNavigatorCookies = NavigatorCookies . coerce

instance IsNavigatorCookies NavigatorCookies

instance IsGObject NavigatorCookies where
  typeGType _ = gTypeNavigatorCookies
  {-# INLINE typeGType #-}

noNavigatorCookies :: Maybe NavigatorCookies
noNavigatorCookies = Nothing
{-# INLINE noNavigatorCookies #-}

gTypeNavigatorCookies :: JSM GType
gTypeNavigatorCookies = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigatorGPU" (webgpu).
newtype NavigatorGPU = NavigatorGPU { unNavigatorGPU :: JSVal }

instance PToJSVal NavigatorGPU where
  pToJSVal = unNavigatorGPU
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigatorGPU where
  pFromJSVal = NavigatorGPU
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigatorGPU where
  toJSVal = return . unNavigatorGPU
  {-# INLINE toJSVal #-}

instance FromJSVal NavigatorGPU where
  fromJSVal v = fmap NavigatorGPU <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigatorGPU
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigatorGPU where
  makeObject = makeObject . unNavigatorGPU

class (IsGObject o) => IsNavigatorGPU o
toNavigatorGPU :: IsNavigatorGPU o => o -> NavigatorGPU
toNavigatorGPU = NavigatorGPU . coerce

instance IsNavigatorGPU NavigatorGPU

instance IsGObject NavigatorGPU where
  typeGType _ = gTypeNavigatorGPU
  {-# INLINE typeGType #-}

noNavigatorGPU :: Maybe NavigatorGPU
noNavigatorGPU = Nothing
{-# INLINE noNavigatorGPU #-}

gTypeNavigatorGPU :: JSM GType
gTypeNavigatorGPU = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigatorID" (html).
newtype NavigatorID = NavigatorID { unNavigatorID :: JSVal }

instance PToJSVal NavigatorID where
  pToJSVal = unNavigatorID
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigatorID where
  pFromJSVal = NavigatorID
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigatorID where
  toJSVal = return . unNavigatorID
  {-# INLINE toJSVal #-}

instance FromJSVal NavigatorID where
  fromJSVal v = fmap NavigatorID <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigatorID
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigatorID where
  makeObject = makeObject . unNavigatorID

class (IsGObject o) => IsNavigatorID o
toNavigatorID :: IsNavigatorID o => o -> NavigatorID
toNavigatorID = NavigatorID . coerce

instance IsNavigatorID NavigatorID

instance IsGObject NavigatorID where
  typeGType _ = gTypeNavigatorID
  {-# INLINE typeGType #-}

noNavigatorID :: Maybe NavigatorID
noNavigatorID = Nothing
{-# INLINE noNavigatorID #-}

gTypeNavigatorID :: JSM GType
gTypeNavigatorID = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigatorLanguage" (html).
newtype NavigatorLanguage = NavigatorLanguage { unNavigatorLanguage :: JSVal }

instance PToJSVal NavigatorLanguage where
  pToJSVal = unNavigatorLanguage
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigatorLanguage where
  pFromJSVal = NavigatorLanguage
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigatorLanguage where
  toJSVal = return . unNavigatorLanguage
  {-# INLINE toJSVal #-}

instance FromJSVal NavigatorLanguage where
  fromJSVal v = fmap NavigatorLanguage <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigatorLanguage
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigatorLanguage where
  makeObject = makeObject . unNavigatorLanguage

class (IsGObject o) => IsNavigatorLanguage o
toNavigatorLanguage :: IsNavigatorLanguage o => o -> NavigatorLanguage
toNavigatorLanguage = NavigatorLanguage . coerce

instance IsNavigatorLanguage NavigatorLanguage

instance IsGObject NavigatorLanguage where
  typeGType _ = gTypeNavigatorLanguage
  {-# INLINE typeGType #-}

noNavigatorLanguage :: Maybe NavigatorLanguage
noNavigatorLanguage = Nothing
{-# INLINE noNavigatorLanguage #-}

gTypeNavigatorLanguage :: JSM GType
gTypeNavigatorLanguage = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigatorLocks" (web-locks).
newtype NavigatorLocks = NavigatorLocks { unNavigatorLocks :: JSVal }

instance PToJSVal NavigatorLocks where
  pToJSVal = unNavigatorLocks
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigatorLocks where
  pFromJSVal = NavigatorLocks
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigatorLocks where
  toJSVal = return . unNavigatorLocks
  {-# INLINE toJSVal #-}

instance FromJSVal NavigatorLocks where
  fromJSVal v = fmap NavigatorLocks <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigatorLocks
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigatorLocks where
  makeObject = makeObject . unNavigatorLocks

class (IsGObject o) => IsNavigatorLocks o
toNavigatorLocks :: IsNavigatorLocks o => o -> NavigatorLocks
toNavigatorLocks = NavigatorLocks . coerce

instance IsNavigatorLocks NavigatorLocks

instance IsGObject NavigatorLocks where
  typeGType _ = gTypeNavigatorLocks
  {-# INLINE typeGType #-}

noNavigatorLocks :: Maybe NavigatorLocks
noNavigatorLocks = Nothing
{-# INLINE noNavigatorLocks #-}

gTypeNavigatorLocks :: JSM GType
gTypeNavigatorLocks = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigatorLogin" (login-status).
newtype NavigatorLogin = NavigatorLogin { unNavigatorLogin :: JSVal }

instance PToJSVal NavigatorLogin where
  pToJSVal = unNavigatorLogin
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigatorLogin where
  pFromJSVal = NavigatorLogin
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigatorLogin where
  toJSVal = return . unNavigatorLogin
  {-# INLINE toJSVal #-}

instance FromJSVal NavigatorLogin where
  fromJSVal v = fmap NavigatorLogin <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigatorLogin
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigatorLogin where
  makeObject = makeObject . unNavigatorLogin


instance IsGObject NavigatorLogin where
  typeGType _ = gTypeNavigatorLogin
  {-# INLINE typeGType #-}

noNavigatorLogin :: Maybe NavigatorLogin
noNavigatorLogin = Nothing
{-# INLINE noNavigatorLogin #-}

gTypeNavigatorLogin :: JSM GType
gTypeNavigatorLogin = GType . Object <$> jsg "NavigatorLogin"

-- | Functions for this interface are in "JSDOM.NavigatorOnLine" (html).
newtype NavigatorOnLine = NavigatorOnLine { unNavigatorOnLine :: JSVal }

instance PToJSVal NavigatorOnLine where
  pToJSVal = unNavigatorOnLine
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigatorOnLine where
  pFromJSVal = NavigatorOnLine
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigatorOnLine where
  toJSVal = return . unNavigatorOnLine
  {-# INLINE toJSVal #-}

instance FromJSVal NavigatorOnLine where
  fromJSVal v = fmap NavigatorOnLine <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigatorOnLine
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigatorOnLine where
  makeObject = makeObject . unNavigatorOnLine

class (IsGObject o) => IsNavigatorOnLine o
toNavigatorOnLine :: IsNavigatorOnLine o => o -> NavigatorOnLine
toNavigatorOnLine = NavigatorOnLine . coerce

instance IsNavigatorOnLine NavigatorOnLine

instance IsGObject NavigatorOnLine where
  typeGType _ = gTypeNavigatorOnLine
  {-# INLINE typeGType #-}

noNavigatorOnLine :: Maybe NavigatorOnLine
noNavigatorOnLine = Nothing
{-# INLINE noNavigatorOnLine #-}

gTypeNavigatorOnLine :: JSM GType
gTypeNavigatorOnLine = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigatorPlugins" (html).
newtype NavigatorPlugins = NavigatorPlugins { unNavigatorPlugins :: JSVal }

instance PToJSVal NavigatorPlugins where
  pToJSVal = unNavigatorPlugins
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigatorPlugins where
  pFromJSVal = NavigatorPlugins
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigatorPlugins where
  toJSVal = return . unNavigatorPlugins
  {-# INLINE toJSVal #-}

instance FromJSVal NavigatorPlugins where
  fromJSVal v = fmap NavigatorPlugins <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigatorPlugins
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigatorPlugins where
  makeObject = makeObject . unNavigatorPlugins

class (IsGObject o) => IsNavigatorPlugins o
toNavigatorPlugins :: IsNavigatorPlugins o => o -> NavigatorPlugins
toNavigatorPlugins = NavigatorPlugins . coerce

instance IsNavigatorPlugins NavigatorPlugins

instance IsGObject NavigatorPlugins where
  typeGType _ = gTypeNavigatorPlugins
  {-# INLINE typeGType #-}

noNavigatorPlugins :: Maybe NavigatorPlugins
noNavigatorPlugins = Nothing
{-# INLINE noNavigatorPlugins #-}

gTypeNavigatorPlugins :: JSM GType
gTypeNavigatorPlugins = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NavigatorStorage" (storage).
newtype NavigatorStorage = NavigatorStorage { unNavigatorStorage :: JSVal }

instance PToJSVal NavigatorStorage where
  pToJSVal = unNavigatorStorage
  {-# INLINE pToJSVal #-}

instance PFromJSVal NavigatorStorage where
  pFromJSVal = NavigatorStorage
  {-# INLINE pFromJSVal #-}

instance ToJSVal NavigatorStorage where
  toJSVal = return . unNavigatorStorage
  {-# INLINE toJSVal #-}

instance FromJSVal NavigatorStorage where
  fromJSVal v = fmap NavigatorStorage <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NavigatorStorage
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NavigatorStorage where
  makeObject = makeObject . unNavigatorStorage

class (IsGObject o) => IsNavigatorStorage o
toNavigatorStorage :: IsNavigatorStorage o => o -> NavigatorStorage
toNavigatorStorage = NavigatorStorage . coerce

instance IsNavigatorStorage NavigatorStorage

instance IsGObject NavigatorStorage where
  typeGType _ = gTypeNavigatorStorage
  {-# INLINE typeGType #-}

noNavigatorStorage :: Maybe NavigatorStorage
noNavigatorStorage = Nothing
{-# INLINE noNavigatorStorage #-}

gTypeNavigatorStorage :: JSM GType
gTypeNavigatorStorage = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Node" (dom).
newtype Node = Node { unNode :: JSVal }

instance PToJSVal Node where
  pToJSVal = unNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal Node where
  pFromJSVal = Node
  {-# INLINE pFromJSVal #-}

instance ToJSVal Node where
  toJSVal = return . unNode
  {-# INLINE toJSVal #-}

instance FromJSVal Node where
  fromJSVal v = fmap Node <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Node
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Node where
  makeObject = makeObject . unNode

class (IsEventTarget o, IsGObject o) => IsNode o
toNode :: IsNode o => o -> Node
toNode = Node . coerce

instance IsNode Node
instance IsEventTarget Node

instance IsGObject Node where
  typeGType _ = gTypeNode
  {-# INLINE typeGType #-}

noNode :: Maybe Node
noNode = Nothing
{-# INLINE noNode #-}

gTypeNode :: JSM GType
gTypeNode = GType . Object <$> jsg "Node"

-- | Functions for this interface are in "JSDOM.NodeIterator" (dom).
newtype NodeIterator = NodeIterator { unNodeIterator :: JSVal }

instance PToJSVal NodeIterator where
  pToJSVal = unNodeIterator
  {-# INLINE pToJSVal #-}

instance PFromJSVal NodeIterator where
  pFromJSVal = NodeIterator
  {-# INLINE pFromJSVal #-}

instance ToJSVal NodeIterator where
  toJSVal = return . unNodeIterator
  {-# INLINE toJSVal #-}

instance FromJSVal NodeIterator where
  fromJSVal v = fmap NodeIterator <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NodeIterator
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NodeIterator where
  makeObject = makeObject . unNodeIterator


instance IsGObject NodeIterator where
  typeGType _ = gTypeNodeIterator
  {-# INLINE typeGType #-}

noNodeIterator :: Maybe NodeIterator
noNodeIterator = Nothing
{-# INLINE noNodeIterator #-}

gTypeNodeIterator :: JSM GType
gTypeNodeIterator = GType . Object <$> jsg "NodeIterator"

-- | Functions for this interface are in "JSDOM.NodeList" (dom).
newtype NodeList = NodeList { unNodeList :: JSVal }

instance PToJSVal NodeList where
  pToJSVal = unNodeList
  {-# INLINE pToJSVal #-}

instance PFromJSVal NodeList where
  pFromJSVal = NodeList
  {-# INLINE pFromJSVal #-}

instance ToJSVal NodeList where
  toJSVal = return . unNodeList
  {-# INLINE toJSVal #-}

instance FromJSVal NodeList where
  fromJSVal v = fmap NodeList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NodeList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NodeList where
  makeObject = makeObject . unNodeList

class (IsGObject o) => IsNodeList o
toNodeList :: IsNodeList o => o -> NodeList
toNodeList = NodeList . coerce

instance IsNodeList NodeList

instance IsGObject NodeList where
  typeGType _ = gTypeNodeList
  {-# INLINE typeGType #-}

noNodeList :: Maybe NodeList
noNodeList = Nothing
{-# INLINE noNodeList #-}

gTypeNodeList :: JSM GType
gTypeNodeList = GType . Object <$> jsg "NodeList"

-- | Functions for this interface are in "JSDOM.NonDocumentTypeChildNode" (dom).
newtype NonDocumentTypeChildNode = NonDocumentTypeChildNode { unNonDocumentTypeChildNode :: JSVal }

instance PToJSVal NonDocumentTypeChildNode where
  pToJSVal = unNonDocumentTypeChildNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal NonDocumentTypeChildNode where
  pFromJSVal = NonDocumentTypeChildNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal NonDocumentTypeChildNode where
  toJSVal = return . unNonDocumentTypeChildNode
  {-# INLINE toJSVal #-}

instance FromJSVal NonDocumentTypeChildNode where
  fromJSVal v = fmap NonDocumentTypeChildNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NonDocumentTypeChildNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NonDocumentTypeChildNode where
  makeObject = makeObject . unNonDocumentTypeChildNode

class (IsGObject o) => IsNonDocumentTypeChildNode o
toNonDocumentTypeChildNode :: IsNonDocumentTypeChildNode o => o -> NonDocumentTypeChildNode
toNonDocumentTypeChildNode = NonDocumentTypeChildNode . coerce

instance IsNonDocumentTypeChildNode NonDocumentTypeChildNode

instance IsGObject NonDocumentTypeChildNode where
  typeGType _ = gTypeNonDocumentTypeChildNode
  {-# INLINE typeGType #-}

noNonDocumentTypeChildNode :: Maybe NonDocumentTypeChildNode
noNonDocumentTypeChildNode = Nothing
{-# INLINE noNonDocumentTypeChildNode #-}

gTypeNonDocumentTypeChildNode :: JSM GType
gTypeNonDocumentTypeChildNode = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NonElementParentNode" (dom).
newtype NonElementParentNode = NonElementParentNode { unNonElementParentNode :: JSVal }

instance PToJSVal NonElementParentNode where
  pToJSVal = unNonElementParentNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal NonElementParentNode where
  pFromJSVal = NonElementParentNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal NonElementParentNode where
  toJSVal = return . unNonElementParentNode
  {-# INLINE toJSVal #-}

instance FromJSVal NonElementParentNode where
  fromJSVal v = fmap NonElementParentNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NonElementParentNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NonElementParentNode where
  makeObject = makeObject . unNonElementParentNode

class (IsGObject o) => IsNonElementParentNode o
toNonElementParentNode :: IsNonElementParentNode o => o -> NonElementParentNode
toNonElementParentNode = NonElementParentNode . coerce

instance IsNonElementParentNode NonElementParentNode

instance IsGObject NonElementParentNode where
  typeGType _ = gTypeNonElementParentNode
  {-# INLINE typeGType #-}

noNonElementParentNode :: Maybe NonElementParentNode
noNonElementParentNode = Nothing
{-# INLINE noNonElementParentNode #-}

gTypeNonElementParentNode :: JSM GType
gTypeNonElementParentNode = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Notification" (notifications).
newtype Notification = Notification { unNotification :: JSVal }

instance PToJSVal Notification where
  pToJSVal = unNotification
  {-# INLINE pToJSVal #-}

instance PFromJSVal Notification where
  pFromJSVal = Notification
  {-# INLINE pFromJSVal #-}

instance ToJSVal Notification where
  toJSVal = return . unNotification
  {-# INLINE toJSVal #-}

instance FromJSVal Notification where
  fromJSVal v = fmap Notification <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Notification
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Notification where
  makeObject = makeObject . unNotification

instance IsEventTarget Notification

instance IsGObject Notification where
  typeGType _ = gTypeNotification
  {-# INLINE typeGType #-}

noNotification :: Maybe Notification
noNotification = Nothing
{-# INLINE noNotification #-}

gTypeNotification :: JSM GType
gTypeNotification = GType . Object <$> jsg "Notification"

-- | Dictionary NotificationAction (notifications)
newtype NotificationAction = NotificationAction { unNotificationAction :: JSVal }

instance PToJSVal NotificationAction where
  pToJSVal = unNotificationAction
  {-# INLINE pToJSVal #-}

instance PFromJSVal NotificationAction where
  pFromJSVal = NotificationAction
  {-# INLINE pFromJSVal #-}

instance ToJSVal NotificationAction where
  toJSVal = return . unNotificationAction
  {-# INLINE toJSVal #-}

instance FromJSVal NotificationAction where
  fromJSVal v = fmap NotificationAction <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NotificationAction
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NotificationAction where
  makeObject = makeObject . unNotificationAction


instance IsGObject NotificationAction where
  typeGType _ = gTypeNotificationAction
  {-# INLINE typeGType #-}

noNotificationAction :: Maybe NotificationAction
noNotificationAction = Nothing
{-# INLINE noNotificationAction #-}

gTypeNotificationAction :: JSM GType
gTypeNotificationAction = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.NotificationEvent" (notifications).
newtype NotificationEvent = NotificationEvent { unNotificationEvent :: JSVal }

instance PToJSVal NotificationEvent where
  pToJSVal = unNotificationEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal NotificationEvent where
  pFromJSVal = NotificationEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal NotificationEvent where
  toJSVal = return . unNotificationEvent
  {-# INLINE toJSVal #-}

instance FromJSVal NotificationEvent where
  fromJSVal v = fmap NotificationEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NotificationEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NotificationEvent where
  makeObject = makeObject . unNotificationEvent

instance IsExtendableEvent NotificationEvent
instance IsEvent NotificationEvent

instance IsGObject NotificationEvent where
  typeGType _ = gTypeNotificationEvent
  {-# INLINE typeGType #-}

noNotificationEvent :: Maybe NotificationEvent
noNotificationEvent = Nothing
{-# INLINE noNotificationEvent #-}

gTypeNotificationEvent :: JSM GType
gTypeNotificationEvent = GType . Object <$> jsg "NotificationEvent"

-- | Dictionary NotificationEventInit (notifications)
newtype NotificationEventInit = NotificationEventInit { unNotificationEventInit :: JSVal }

instance PToJSVal NotificationEventInit where
  pToJSVal = unNotificationEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal NotificationEventInit where
  pFromJSVal = NotificationEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal NotificationEventInit where
  toJSVal = return . unNotificationEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal NotificationEventInit where
  fromJSVal v = fmap NotificationEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NotificationEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NotificationEventInit where
  makeObject = makeObject . unNotificationEventInit

instance IsExtendableEventInit NotificationEventInit
instance IsEventInit NotificationEventInit

instance IsGObject NotificationEventInit where
  typeGType _ = gTypeNotificationEventInit
  {-# INLINE typeGType #-}

noNotificationEventInit :: Maybe NotificationEventInit
noNotificationEventInit = Nothing
{-# INLINE noNotificationEventInit #-}

gTypeNotificationEventInit :: JSM GType
gTypeNotificationEventInit = GType . Object <$> jsg "Object"

-- | Dictionary NotificationOptions (notifications)
newtype NotificationOptions = NotificationOptions { unNotificationOptions :: JSVal }

instance PToJSVal NotificationOptions where
  pToJSVal = unNotificationOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal NotificationOptions where
  pFromJSVal = NotificationOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal NotificationOptions where
  toJSVal = return . unNotificationOptions
  {-# INLINE toJSVal #-}

instance FromJSVal NotificationOptions where
  fromJSVal v = fmap NotificationOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . NotificationOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject NotificationOptions where
  makeObject = makeObject . unNotificationOptions


instance IsGObject NotificationOptions where
  typeGType _ = gTypeNotificationOptions
  {-# INLINE typeGType #-}

noNotificationOptions :: Maybe NotificationOptions
noNotificationOptions = Nothing
{-# INLINE noNotificationOptions #-}

gTypeNotificationOptions :: JSM GType
gTypeNotificationOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OES_draw_buffers_indexed" (OES_draw_buffers_indexed).
newtype OES_draw_buffers_indexed = OES_draw_buffers_indexed { unOES_draw_buffers_indexed :: JSVal }

instance PToJSVal OES_draw_buffers_indexed where
  pToJSVal = unOES_draw_buffers_indexed
  {-# INLINE pToJSVal #-}

instance PFromJSVal OES_draw_buffers_indexed where
  pFromJSVal = OES_draw_buffers_indexed
  {-# INLINE pFromJSVal #-}

instance ToJSVal OES_draw_buffers_indexed where
  toJSVal = return . unOES_draw_buffers_indexed
  {-# INLINE toJSVal #-}

instance FromJSVal OES_draw_buffers_indexed where
  fromJSVal v = fmap OES_draw_buffers_indexed <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OES_draw_buffers_indexed
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OES_draw_buffers_indexed where
  makeObject = makeObject . unOES_draw_buffers_indexed


instance IsGObject OES_draw_buffers_indexed where
  typeGType _ = gTypeOES_draw_buffers_indexed
  {-# INLINE typeGType #-}

noOES_draw_buffers_indexed :: Maybe OES_draw_buffers_indexed
noOES_draw_buffers_indexed = Nothing
{-# INLINE noOES_draw_buffers_indexed #-}

gTypeOES_draw_buffers_indexed :: JSM GType
gTypeOES_draw_buffers_indexed = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OES_element_index_uint" (OES_element_index_uint).
newtype OES_element_index_uint = OES_element_index_uint { unOES_element_index_uint :: JSVal }

instance PToJSVal OES_element_index_uint where
  pToJSVal = unOES_element_index_uint
  {-# INLINE pToJSVal #-}

instance PFromJSVal OES_element_index_uint where
  pFromJSVal = OES_element_index_uint
  {-# INLINE pFromJSVal #-}

instance ToJSVal OES_element_index_uint where
  toJSVal = return . unOES_element_index_uint
  {-# INLINE toJSVal #-}

instance FromJSVal OES_element_index_uint where
  fromJSVal v = fmap OES_element_index_uint <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OES_element_index_uint
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OES_element_index_uint where
  makeObject = makeObject . unOES_element_index_uint


instance IsGObject OES_element_index_uint where
  typeGType _ = gTypeOES_element_index_uint
  {-# INLINE typeGType #-}

noOES_element_index_uint :: Maybe OES_element_index_uint
noOES_element_index_uint = Nothing
{-# INLINE noOES_element_index_uint #-}

gTypeOES_element_index_uint :: JSM GType
gTypeOES_element_index_uint = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OES_fbo_render_mipmap" (OES_fbo_render_mipmap).
newtype OES_fbo_render_mipmap = OES_fbo_render_mipmap { unOES_fbo_render_mipmap :: JSVal }

instance PToJSVal OES_fbo_render_mipmap where
  pToJSVal = unOES_fbo_render_mipmap
  {-# INLINE pToJSVal #-}

instance PFromJSVal OES_fbo_render_mipmap where
  pFromJSVal = OES_fbo_render_mipmap
  {-# INLINE pFromJSVal #-}

instance ToJSVal OES_fbo_render_mipmap where
  toJSVal = return . unOES_fbo_render_mipmap
  {-# INLINE toJSVal #-}

instance FromJSVal OES_fbo_render_mipmap where
  fromJSVal v = fmap OES_fbo_render_mipmap <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OES_fbo_render_mipmap
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OES_fbo_render_mipmap where
  makeObject = makeObject . unOES_fbo_render_mipmap


instance IsGObject OES_fbo_render_mipmap where
  typeGType _ = gTypeOES_fbo_render_mipmap
  {-# INLINE typeGType #-}

noOES_fbo_render_mipmap :: Maybe OES_fbo_render_mipmap
noOES_fbo_render_mipmap = Nothing
{-# INLINE noOES_fbo_render_mipmap #-}

gTypeOES_fbo_render_mipmap :: JSM GType
gTypeOES_fbo_render_mipmap = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OES_standard_derivatives" (OES_standard_derivatives).
newtype OES_standard_derivatives = OES_standard_derivatives { unOES_standard_derivatives :: JSVal }

instance PToJSVal OES_standard_derivatives where
  pToJSVal = unOES_standard_derivatives
  {-# INLINE pToJSVal #-}

instance PFromJSVal OES_standard_derivatives where
  pFromJSVal = OES_standard_derivatives
  {-# INLINE pFromJSVal #-}

instance ToJSVal OES_standard_derivatives where
  toJSVal = return . unOES_standard_derivatives
  {-# INLINE toJSVal #-}

instance FromJSVal OES_standard_derivatives where
  fromJSVal v = fmap OES_standard_derivatives <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OES_standard_derivatives
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OES_standard_derivatives where
  makeObject = makeObject . unOES_standard_derivatives


instance IsGObject OES_standard_derivatives where
  typeGType _ = gTypeOES_standard_derivatives
  {-# INLINE typeGType #-}

noOES_standard_derivatives :: Maybe OES_standard_derivatives
noOES_standard_derivatives = Nothing
{-# INLINE noOES_standard_derivatives #-}

gTypeOES_standard_derivatives :: JSM GType
gTypeOES_standard_derivatives = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OES_texture_float" (OES_texture_float).
newtype OES_texture_float = OES_texture_float { unOES_texture_float :: JSVal }

instance PToJSVal OES_texture_float where
  pToJSVal = unOES_texture_float
  {-# INLINE pToJSVal #-}

instance PFromJSVal OES_texture_float where
  pFromJSVal = OES_texture_float
  {-# INLINE pFromJSVal #-}

instance ToJSVal OES_texture_float where
  toJSVal = return . unOES_texture_float
  {-# INLINE toJSVal #-}

instance FromJSVal OES_texture_float where
  fromJSVal v = fmap OES_texture_float <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OES_texture_float
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OES_texture_float where
  makeObject = makeObject . unOES_texture_float


instance IsGObject OES_texture_float where
  typeGType _ = gTypeOES_texture_float
  {-# INLINE typeGType #-}

noOES_texture_float :: Maybe OES_texture_float
noOES_texture_float = Nothing
{-# INLINE noOES_texture_float #-}

gTypeOES_texture_float :: JSM GType
gTypeOES_texture_float = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OES_texture_float_linear" (OES_texture_float_linear).
newtype OES_texture_float_linear = OES_texture_float_linear { unOES_texture_float_linear :: JSVal }

instance PToJSVal OES_texture_float_linear where
  pToJSVal = unOES_texture_float_linear
  {-# INLINE pToJSVal #-}

instance PFromJSVal OES_texture_float_linear where
  pFromJSVal = OES_texture_float_linear
  {-# INLINE pFromJSVal #-}

instance ToJSVal OES_texture_float_linear where
  toJSVal = return . unOES_texture_float_linear
  {-# INLINE toJSVal #-}

instance FromJSVal OES_texture_float_linear where
  fromJSVal v = fmap OES_texture_float_linear <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OES_texture_float_linear
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OES_texture_float_linear where
  makeObject = makeObject . unOES_texture_float_linear


instance IsGObject OES_texture_float_linear where
  typeGType _ = gTypeOES_texture_float_linear
  {-# INLINE typeGType #-}

noOES_texture_float_linear :: Maybe OES_texture_float_linear
noOES_texture_float_linear = Nothing
{-# INLINE noOES_texture_float_linear #-}

gTypeOES_texture_float_linear :: JSM GType
gTypeOES_texture_float_linear = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OES_texture_half_float" (OES_texture_half_float).
newtype OES_texture_half_float = OES_texture_half_float { unOES_texture_half_float :: JSVal }

instance PToJSVal OES_texture_half_float where
  pToJSVal = unOES_texture_half_float
  {-# INLINE pToJSVal #-}

instance PFromJSVal OES_texture_half_float where
  pFromJSVal = OES_texture_half_float
  {-# INLINE pFromJSVal #-}

instance ToJSVal OES_texture_half_float where
  toJSVal = return . unOES_texture_half_float
  {-# INLINE toJSVal #-}

instance FromJSVal OES_texture_half_float where
  fromJSVal v = fmap OES_texture_half_float <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OES_texture_half_float
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OES_texture_half_float where
  makeObject = makeObject . unOES_texture_half_float


instance IsGObject OES_texture_half_float where
  typeGType _ = gTypeOES_texture_half_float
  {-# INLINE typeGType #-}

noOES_texture_half_float :: Maybe OES_texture_half_float
noOES_texture_half_float = Nothing
{-# INLINE noOES_texture_half_float #-}

gTypeOES_texture_half_float :: JSM GType
gTypeOES_texture_half_float = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OES_texture_half_float_linear" (OES_texture_half_float_linear).
newtype OES_texture_half_float_linear = OES_texture_half_float_linear { unOES_texture_half_float_linear :: JSVal }

instance PToJSVal OES_texture_half_float_linear where
  pToJSVal = unOES_texture_half_float_linear
  {-# INLINE pToJSVal #-}

instance PFromJSVal OES_texture_half_float_linear where
  pFromJSVal = OES_texture_half_float_linear
  {-# INLINE pFromJSVal #-}

instance ToJSVal OES_texture_half_float_linear where
  toJSVal = return . unOES_texture_half_float_linear
  {-# INLINE toJSVal #-}

instance FromJSVal OES_texture_half_float_linear where
  fromJSVal v = fmap OES_texture_half_float_linear <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OES_texture_half_float_linear
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OES_texture_half_float_linear where
  makeObject = makeObject . unOES_texture_half_float_linear


instance IsGObject OES_texture_half_float_linear where
  typeGType _ = gTypeOES_texture_half_float_linear
  {-# INLINE typeGType #-}

noOES_texture_half_float_linear :: Maybe OES_texture_half_float_linear
noOES_texture_half_float_linear = Nothing
{-# INLINE noOES_texture_half_float_linear #-}

gTypeOES_texture_half_float_linear :: JSM GType
gTypeOES_texture_half_float_linear = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OES_vertex_array_object" (OES_vertex_array_object).
newtype OES_vertex_array_object = OES_vertex_array_object { unOES_vertex_array_object :: JSVal }

instance PToJSVal OES_vertex_array_object where
  pToJSVal = unOES_vertex_array_object
  {-# INLINE pToJSVal #-}

instance PFromJSVal OES_vertex_array_object where
  pFromJSVal = OES_vertex_array_object
  {-# INLINE pFromJSVal #-}

instance ToJSVal OES_vertex_array_object where
  toJSVal = return . unOES_vertex_array_object
  {-# INLINE toJSVal #-}

instance FromJSVal OES_vertex_array_object where
  fromJSVal v = fmap OES_vertex_array_object <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OES_vertex_array_object
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OES_vertex_array_object where
  makeObject = makeObject . unOES_vertex_array_object


instance IsGObject OES_vertex_array_object where
  typeGType _ = gTypeOES_vertex_array_object
  {-# INLINE typeGType #-}

noOES_vertex_array_object :: Maybe OES_vertex_array_object
noOES_vertex_array_object = Nothing
{-# INLINE noOES_vertex_array_object #-}

gTypeOES_vertex_array_object :: JSM GType
gTypeOES_vertex_array_object = GType . Object <$> jsg "Object"

-- | Dictionary OTPCredentialRequestOptions (web-otp)
newtype OTPCredentialRequestOptions = OTPCredentialRequestOptions { unOTPCredentialRequestOptions :: JSVal }

instance PToJSVal OTPCredentialRequestOptions where
  pToJSVal = unOTPCredentialRequestOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal OTPCredentialRequestOptions where
  pFromJSVal = OTPCredentialRequestOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal OTPCredentialRequestOptions where
  toJSVal = return . unOTPCredentialRequestOptions
  {-# INLINE toJSVal #-}

instance FromJSVal OTPCredentialRequestOptions where
  fromJSVal v = fmap OTPCredentialRequestOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OTPCredentialRequestOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OTPCredentialRequestOptions where
  makeObject = makeObject . unOTPCredentialRequestOptions


instance IsGObject OTPCredentialRequestOptions where
  typeGType _ = gTypeOTPCredentialRequestOptions
  {-# INLINE typeGType #-}

noOTPCredentialRequestOptions :: Maybe OTPCredentialRequestOptions
noOTPCredentialRequestOptions = Nothing
{-# INLINE noOTPCredentialRequestOptions #-}

gTypeOTPCredentialRequestOptions :: JSM GType
gTypeOTPCredentialRequestOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OVR_multiview2" (OVR_multiview2).
newtype OVR_multiview2 = OVR_multiview2 { unOVR_multiview2 :: JSVal }

instance PToJSVal OVR_multiview2 where
  pToJSVal = unOVR_multiview2
  {-# INLINE pToJSVal #-}

instance PFromJSVal OVR_multiview2 where
  pFromJSVal = OVR_multiview2
  {-# INLINE pFromJSVal #-}

instance ToJSVal OVR_multiview2 where
  toJSVal = return . unOVR_multiview2
  {-# INLINE toJSVal #-}

instance FromJSVal OVR_multiview2 where
  fromJSVal v = fmap OVR_multiview2 <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OVR_multiview2
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OVR_multiview2 where
  makeObject = makeObject . unOVR_multiview2


instance IsGObject OVR_multiview2 where
  typeGType _ = gTypeOVR_multiview2
  {-# INLINE typeGType #-}

noOVR_multiview2 :: Maybe OVR_multiview2
noOVR_multiview2 = Nothing
{-# INLINE noOVR_multiview2 #-}

gTypeOVR_multiview2 :: JSM GType
gTypeOVR_multiview2 = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OfflineAudioCompletionEvent" (webaudio-1.1).
newtype OfflineAudioCompletionEvent = OfflineAudioCompletionEvent { unOfflineAudioCompletionEvent :: JSVal }

instance PToJSVal OfflineAudioCompletionEvent where
  pToJSVal = unOfflineAudioCompletionEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal OfflineAudioCompletionEvent where
  pFromJSVal = OfflineAudioCompletionEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal OfflineAudioCompletionEvent where
  toJSVal = return . unOfflineAudioCompletionEvent
  {-# INLINE toJSVal #-}

instance FromJSVal OfflineAudioCompletionEvent where
  fromJSVal v = fmap OfflineAudioCompletionEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OfflineAudioCompletionEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OfflineAudioCompletionEvent where
  makeObject = makeObject . unOfflineAudioCompletionEvent

instance IsEvent OfflineAudioCompletionEvent

instance IsGObject OfflineAudioCompletionEvent where
  typeGType _ = gTypeOfflineAudioCompletionEvent
  {-# INLINE typeGType #-}

noOfflineAudioCompletionEvent :: Maybe OfflineAudioCompletionEvent
noOfflineAudioCompletionEvent = Nothing
{-# INLINE noOfflineAudioCompletionEvent #-}

gTypeOfflineAudioCompletionEvent :: JSM GType
gTypeOfflineAudioCompletionEvent = GType . Object <$> jsg "OfflineAudioCompletionEvent"

-- | Dictionary OfflineAudioCompletionEventInit (webaudio-1.1)
newtype OfflineAudioCompletionEventInit = OfflineAudioCompletionEventInit { unOfflineAudioCompletionEventInit :: JSVal }

instance PToJSVal OfflineAudioCompletionEventInit where
  pToJSVal = unOfflineAudioCompletionEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal OfflineAudioCompletionEventInit where
  pFromJSVal = OfflineAudioCompletionEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal OfflineAudioCompletionEventInit where
  toJSVal = return . unOfflineAudioCompletionEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal OfflineAudioCompletionEventInit where
  fromJSVal v = fmap OfflineAudioCompletionEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OfflineAudioCompletionEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OfflineAudioCompletionEventInit where
  makeObject = makeObject . unOfflineAudioCompletionEventInit

instance IsEventInit OfflineAudioCompletionEventInit

instance IsGObject OfflineAudioCompletionEventInit where
  typeGType _ = gTypeOfflineAudioCompletionEventInit
  {-# INLINE typeGType #-}

noOfflineAudioCompletionEventInit :: Maybe OfflineAudioCompletionEventInit
noOfflineAudioCompletionEventInit = Nothing
{-# INLINE noOfflineAudioCompletionEventInit #-}

gTypeOfflineAudioCompletionEventInit :: JSM GType
gTypeOfflineAudioCompletionEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OfflineAudioContext" (webaudio-1.1).
newtype OfflineAudioContext = OfflineAudioContext { unOfflineAudioContext :: JSVal }

instance PToJSVal OfflineAudioContext where
  pToJSVal = unOfflineAudioContext
  {-# INLINE pToJSVal #-}

instance PFromJSVal OfflineAudioContext where
  pFromJSVal = OfflineAudioContext
  {-# INLINE pFromJSVal #-}

instance ToJSVal OfflineAudioContext where
  toJSVal = return . unOfflineAudioContext
  {-# INLINE toJSVal #-}

instance FromJSVal OfflineAudioContext where
  fromJSVal v = fmap OfflineAudioContext <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OfflineAudioContext
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OfflineAudioContext where
  makeObject = makeObject . unOfflineAudioContext

instance IsBaseAudioContext OfflineAudioContext
instance IsEventTarget OfflineAudioContext

instance IsGObject OfflineAudioContext where
  typeGType _ = gTypeOfflineAudioContext
  {-# INLINE typeGType #-}

noOfflineAudioContext :: Maybe OfflineAudioContext
noOfflineAudioContext = Nothing
{-# INLINE noOfflineAudioContext #-}

gTypeOfflineAudioContext :: JSM GType
gTypeOfflineAudioContext = GType . Object <$> jsg "OfflineAudioContext"

-- | Dictionary OfflineAudioContextOptions (webaudio-1.1)
newtype OfflineAudioContextOptions = OfflineAudioContextOptions { unOfflineAudioContextOptions :: JSVal }

instance PToJSVal OfflineAudioContextOptions where
  pToJSVal = unOfflineAudioContextOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal OfflineAudioContextOptions where
  pFromJSVal = OfflineAudioContextOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal OfflineAudioContextOptions where
  toJSVal = return . unOfflineAudioContextOptions
  {-# INLINE toJSVal #-}

instance FromJSVal OfflineAudioContextOptions where
  fromJSVal v = fmap OfflineAudioContextOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OfflineAudioContextOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OfflineAudioContextOptions where
  makeObject = makeObject . unOfflineAudioContextOptions


instance IsGObject OfflineAudioContextOptions where
  typeGType _ = gTypeOfflineAudioContextOptions
  {-# INLINE typeGType #-}

noOfflineAudioContextOptions :: Maybe OfflineAudioContextOptions
noOfflineAudioContextOptions = Nothing
{-# INLINE noOfflineAudioContextOptions #-}

gTypeOfflineAudioContextOptions :: JSM GType
gTypeOfflineAudioContextOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OffscreenCanvas" (html).
newtype OffscreenCanvas = OffscreenCanvas { unOffscreenCanvas :: JSVal }

instance PToJSVal OffscreenCanvas where
  pToJSVal = unOffscreenCanvas
  {-# INLINE pToJSVal #-}

instance PFromJSVal OffscreenCanvas where
  pFromJSVal = OffscreenCanvas
  {-# INLINE pFromJSVal #-}

instance ToJSVal OffscreenCanvas where
  toJSVal = return . unOffscreenCanvas
  {-# INLINE toJSVal #-}

instance FromJSVal OffscreenCanvas where
  fromJSVal v = fmap OffscreenCanvas <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OffscreenCanvas
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OffscreenCanvas where
  makeObject = makeObject . unOffscreenCanvas

instance IsEventTarget OffscreenCanvas

instance IsGObject OffscreenCanvas where
  typeGType _ = gTypeOffscreenCanvas
  {-# INLINE typeGType #-}

noOffscreenCanvas :: Maybe OffscreenCanvas
noOffscreenCanvas = Nothing
{-# INLINE noOffscreenCanvas #-}

gTypeOffscreenCanvas :: JSM GType
gTypeOffscreenCanvas = GType . Object <$> jsg "OffscreenCanvas"

-- | Functions for this interface are in "JSDOM.OffscreenCanvasRenderingContext2D" (html).
newtype OffscreenCanvasRenderingContext2D = OffscreenCanvasRenderingContext2D { unOffscreenCanvasRenderingContext2D :: JSVal }

instance PToJSVal OffscreenCanvasRenderingContext2D where
  pToJSVal = unOffscreenCanvasRenderingContext2D
  {-# INLINE pToJSVal #-}

instance PFromJSVal OffscreenCanvasRenderingContext2D where
  pFromJSVal = OffscreenCanvasRenderingContext2D
  {-# INLINE pFromJSVal #-}

instance ToJSVal OffscreenCanvasRenderingContext2D where
  toJSVal = return . unOffscreenCanvasRenderingContext2D
  {-# INLINE toJSVal #-}

instance FromJSVal OffscreenCanvasRenderingContext2D where
  fromJSVal v = fmap OffscreenCanvasRenderingContext2D <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OffscreenCanvasRenderingContext2D
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OffscreenCanvasRenderingContext2D where
  makeObject = makeObject . unOffscreenCanvasRenderingContext2D

instance IsCanvasCompositing OffscreenCanvasRenderingContext2D
instance IsCanvasDrawImage OffscreenCanvasRenderingContext2D
instance IsCanvasDrawPath OffscreenCanvasRenderingContext2D
instance IsCanvasFillStrokeStyles OffscreenCanvasRenderingContext2D
instance IsCanvasFilters OffscreenCanvasRenderingContext2D
instance IsCanvasImageData OffscreenCanvasRenderingContext2D
instance IsCanvasImageSmoothing OffscreenCanvasRenderingContext2D
instance IsCanvasPath OffscreenCanvasRenderingContext2D
instance IsCanvasPathDrawingStyles OffscreenCanvasRenderingContext2D
instance IsCanvasRect OffscreenCanvasRenderingContext2D
instance IsCanvasSettings OffscreenCanvasRenderingContext2D
instance IsCanvasShadowStyles OffscreenCanvasRenderingContext2D
instance IsCanvasState OffscreenCanvasRenderingContext2D
instance IsCanvasText OffscreenCanvasRenderingContext2D
instance IsCanvasTextDrawingStyles OffscreenCanvasRenderingContext2D
instance IsCanvasTransform OffscreenCanvasRenderingContext2D

instance IsGObject OffscreenCanvasRenderingContext2D where
  typeGType _ = gTypeOffscreenCanvasRenderingContext2D
  {-# INLINE typeGType #-}

noOffscreenCanvasRenderingContext2D :: Maybe OffscreenCanvasRenderingContext2D
noOffscreenCanvasRenderingContext2D = Nothing
{-# INLINE noOffscreenCanvasRenderingContext2D #-}

gTypeOffscreenCanvasRenderingContext2D :: JSM GType
gTypeOffscreenCanvasRenderingContext2D = GType . Object <$> jsg "OffscreenCanvasRenderingContext2D"

-- | Dictionary OptionalEffectTiming (web-animations-1)
newtype OptionalEffectTiming = OptionalEffectTiming { unOptionalEffectTiming :: JSVal }

instance PToJSVal OptionalEffectTiming where
  pToJSVal = unOptionalEffectTiming
  {-# INLINE pToJSVal #-}

instance PFromJSVal OptionalEffectTiming where
  pFromJSVal = OptionalEffectTiming
  {-# INLINE pFromJSVal #-}

instance ToJSVal OptionalEffectTiming where
  toJSVal = return . unOptionalEffectTiming
  {-# INLINE toJSVal #-}

instance FromJSVal OptionalEffectTiming where
  fromJSVal v = fmap OptionalEffectTiming <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OptionalEffectTiming
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OptionalEffectTiming where
  makeObject = makeObject . unOptionalEffectTiming


instance IsGObject OptionalEffectTiming where
  typeGType _ = gTypeOptionalEffectTiming
  {-# INLINE typeGType #-}

noOptionalEffectTiming :: Maybe OptionalEffectTiming
noOptionalEffectTiming = Nothing
{-# INLINE noOptionalEffectTiming #-}

gTypeOptionalEffectTiming :: JSM GType
gTypeOptionalEffectTiming = GType . Object <$> jsg "Object"

-- | Dictionary OpusEncoderConfig (webcodecs-opus-codec-registration)
newtype OpusEncoderConfig = OpusEncoderConfig { unOpusEncoderConfig :: JSVal }

instance PToJSVal OpusEncoderConfig where
  pToJSVal = unOpusEncoderConfig
  {-# INLINE pToJSVal #-}

instance PFromJSVal OpusEncoderConfig where
  pFromJSVal = OpusEncoderConfig
  {-# INLINE pFromJSVal #-}

instance ToJSVal OpusEncoderConfig where
  toJSVal = return . unOpusEncoderConfig
  {-# INLINE toJSVal #-}

instance FromJSVal OpusEncoderConfig where
  fromJSVal v = fmap OpusEncoderConfig <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OpusEncoderConfig
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OpusEncoderConfig where
  makeObject = makeObject . unOpusEncoderConfig


instance IsGObject OpusEncoderConfig where
  typeGType _ = gTypeOpusEncoderConfig
  {-# INLINE typeGType #-}

noOpusEncoderConfig :: Maybe OpusEncoderConfig
noOpusEncoderConfig = Nothing
{-# INLINE noOpusEncoderConfig #-}

gTypeOpusEncoderConfig :: JSM GType
gTypeOpusEncoderConfig = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Origin" (html).
newtype Origin = Origin { unOrigin :: JSVal }

instance PToJSVal Origin where
  pToJSVal = unOrigin
  {-# INLINE pToJSVal #-}

instance PFromJSVal Origin where
  pFromJSVal = Origin
  {-# INLINE pFromJSVal #-}

instance ToJSVal Origin where
  toJSVal = return . unOrigin
  {-# INLINE toJSVal #-}

instance FromJSVal Origin where
  fromJSVal v = fmap Origin <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Origin
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Origin where
  makeObject = makeObject . unOrigin


instance IsGObject Origin where
  typeGType _ = gTypeOrigin
  {-# INLINE typeGType #-}

noOrigin :: Maybe Origin
noOrigin = Nothing
{-# INLINE noOrigin #-}

gTypeOrigin :: JSM GType
gTypeOrigin = GType . Object <$> jsg "Origin"

-- | Functions for this interface are in "JSDOM.OscillatorNode" (webaudio-1.1).
newtype OscillatorNode = OscillatorNode { unOscillatorNode :: JSVal }

instance PToJSVal OscillatorNode where
  pToJSVal = unOscillatorNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal OscillatorNode where
  pFromJSVal = OscillatorNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal OscillatorNode where
  toJSVal = return . unOscillatorNode
  {-# INLINE toJSVal #-}

instance FromJSVal OscillatorNode where
  fromJSVal v = fmap OscillatorNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OscillatorNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OscillatorNode where
  makeObject = makeObject . unOscillatorNode

instance IsAudioScheduledSourceNode OscillatorNode
instance IsAudioNode OscillatorNode
instance IsEventTarget OscillatorNode

instance IsGObject OscillatorNode where
  typeGType _ = gTypeOscillatorNode
  {-# INLINE typeGType #-}

noOscillatorNode :: Maybe OscillatorNode
noOscillatorNode = Nothing
{-# INLINE noOscillatorNode #-}

gTypeOscillatorNode :: JSM GType
gTypeOscillatorNode = GType . Object <$> jsg "OscillatorNode"

-- | Dictionary OscillatorOptions (webaudio-1.1)
newtype OscillatorOptions = OscillatorOptions { unOscillatorOptions :: JSVal }

instance PToJSVal OscillatorOptions where
  pToJSVal = unOscillatorOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal OscillatorOptions where
  pFromJSVal = OscillatorOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal OscillatorOptions where
  toJSVal = return . unOscillatorOptions
  {-# INLINE toJSVal #-}

instance FromJSVal OscillatorOptions where
  fromJSVal v = fmap OscillatorOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OscillatorOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OscillatorOptions where
  makeObject = makeObject . unOscillatorOptions

instance IsAudioNodeOptions OscillatorOptions

instance IsGObject OscillatorOptions where
  typeGType _ = gTypeOscillatorOptions
  {-# INLINE typeGType #-}

noOscillatorOptions :: Maybe OscillatorOptions
noOscillatorOptions = Nothing
{-# INLINE noOscillatorOptions #-}

gTypeOscillatorOptions :: JSM GType
gTypeOscillatorOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.OverconstrainedError" (mediacapture-streams).
newtype OverconstrainedError = OverconstrainedError { unOverconstrainedError :: JSVal }

instance PToJSVal OverconstrainedError where
  pToJSVal = unOverconstrainedError
  {-# INLINE pToJSVal #-}

instance PFromJSVal OverconstrainedError where
  pFromJSVal = OverconstrainedError
  {-# INLINE pFromJSVal #-}

instance ToJSVal OverconstrainedError where
  toJSVal = return . unOverconstrainedError
  {-# INLINE toJSVal #-}

instance FromJSVal OverconstrainedError where
  fromJSVal v = fmap OverconstrainedError <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . OverconstrainedError
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject OverconstrainedError where
  makeObject = makeObject . unOverconstrainedError

instance IsDOMException OverconstrainedError

instance IsGObject OverconstrainedError where
  typeGType _ = gTypeOverconstrainedError
  {-# INLINE typeGType #-}

noOverconstrainedError :: Maybe OverconstrainedError
noOverconstrainedError = Nothing
{-# INLINE noOverconstrainedError #-}

gTypeOverconstrainedError :: JSM GType
gTypeOverconstrainedError = GType . Object <$> jsg "OverconstrainedError"

-- | Functions for this interface are in "JSDOM.PageRevealEvent" (html).
newtype PageRevealEvent = PageRevealEvent { unPageRevealEvent :: JSVal }

instance PToJSVal PageRevealEvent where
  pToJSVal = unPageRevealEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal PageRevealEvent where
  pFromJSVal = PageRevealEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal PageRevealEvent where
  toJSVal = return . unPageRevealEvent
  {-# INLINE toJSVal #-}

instance FromJSVal PageRevealEvent where
  fromJSVal v = fmap PageRevealEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PageRevealEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PageRevealEvent where
  makeObject = makeObject . unPageRevealEvent

instance IsEvent PageRevealEvent

instance IsGObject PageRevealEvent where
  typeGType _ = gTypePageRevealEvent
  {-# INLINE typeGType #-}

noPageRevealEvent :: Maybe PageRevealEvent
noPageRevealEvent = Nothing
{-# INLINE noPageRevealEvent #-}

gTypePageRevealEvent :: JSM GType
gTypePageRevealEvent = GType . Object <$> jsg "PageRevealEvent"

-- | Dictionary PageRevealEventInit (html)
newtype PageRevealEventInit = PageRevealEventInit { unPageRevealEventInit :: JSVal }

instance PToJSVal PageRevealEventInit where
  pToJSVal = unPageRevealEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PageRevealEventInit where
  pFromJSVal = PageRevealEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PageRevealEventInit where
  toJSVal = return . unPageRevealEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal PageRevealEventInit where
  fromJSVal v = fmap PageRevealEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PageRevealEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PageRevealEventInit where
  makeObject = makeObject . unPageRevealEventInit

instance IsEventInit PageRevealEventInit

instance IsGObject PageRevealEventInit where
  typeGType _ = gTypePageRevealEventInit
  {-# INLINE typeGType #-}

noPageRevealEventInit :: Maybe PageRevealEventInit
noPageRevealEventInit = Nothing
{-# INLINE noPageRevealEventInit #-}

gTypePageRevealEventInit :: JSM GType
gTypePageRevealEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PageSwapEvent" (html).
newtype PageSwapEvent = PageSwapEvent { unPageSwapEvent :: JSVal }

instance PToJSVal PageSwapEvent where
  pToJSVal = unPageSwapEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal PageSwapEvent where
  pFromJSVal = PageSwapEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal PageSwapEvent where
  toJSVal = return . unPageSwapEvent
  {-# INLINE toJSVal #-}

instance FromJSVal PageSwapEvent where
  fromJSVal v = fmap PageSwapEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PageSwapEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PageSwapEvent where
  makeObject = makeObject . unPageSwapEvent

instance IsEvent PageSwapEvent

instance IsGObject PageSwapEvent where
  typeGType _ = gTypePageSwapEvent
  {-# INLINE typeGType #-}

noPageSwapEvent :: Maybe PageSwapEvent
noPageSwapEvent = Nothing
{-# INLINE noPageSwapEvent #-}

gTypePageSwapEvent :: JSM GType
gTypePageSwapEvent = GType . Object <$> jsg "PageSwapEvent"

-- | Dictionary PageSwapEventInit (html)
newtype PageSwapEventInit = PageSwapEventInit { unPageSwapEventInit :: JSVal }

instance PToJSVal PageSwapEventInit where
  pToJSVal = unPageSwapEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PageSwapEventInit where
  pFromJSVal = PageSwapEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PageSwapEventInit where
  toJSVal = return . unPageSwapEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal PageSwapEventInit where
  fromJSVal v = fmap PageSwapEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PageSwapEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PageSwapEventInit where
  makeObject = makeObject . unPageSwapEventInit

instance IsEventInit PageSwapEventInit

instance IsGObject PageSwapEventInit where
  typeGType _ = gTypePageSwapEventInit
  {-# INLINE typeGType #-}

noPageSwapEventInit :: Maybe PageSwapEventInit
noPageSwapEventInit = Nothing
{-# INLINE noPageSwapEventInit #-}

gTypePageSwapEventInit :: JSM GType
gTypePageSwapEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PageTransitionEvent" (html).
newtype PageTransitionEvent = PageTransitionEvent { unPageTransitionEvent :: JSVal }

instance PToJSVal PageTransitionEvent where
  pToJSVal = unPageTransitionEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal PageTransitionEvent where
  pFromJSVal = PageTransitionEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal PageTransitionEvent where
  toJSVal = return . unPageTransitionEvent
  {-# INLINE toJSVal #-}

instance FromJSVal PageTransitionEvent where
  fromJSVal v = fmap PageTransitionEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PageTransitionEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PageTransitionEvent where
  makeObject = makeObject . unPageTransitionEvent

instance IsEvent PageTransitionEvent

instance IsGObject PageTransitionEvent where
  typeGType _ = gTypePageTransitionEvent
  {-# INLINE typeGType #-}

noPageTransitionEvent :: Maybe PageTransitionEvent
noPageTransitionEvent = Nothing
{-# INLINE noPageTransitionEvent #-}

gTypePageTransitionEvent :: JSM GType
gTypePageTransitionEvent = GType . Object <$> jsg "PageTransitionEvent"

-- | Dictionary PageTransitionEventInit (html)
newtype PageTransitionEventInit = PageTransitionEventInit { unPageTransitionEventInit :: JSVal }

instance PToJSVal PageTransitionEventInit where
  pToJSVal = unPageTransitionEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PageTransitionEventInit where
  pFromJSVal = PageTransitionEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PageTransitionEventInit where
  toJSVal = return . unPageTransitionEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal PageTransitionEventInit where
  fromJSVal v = fmap PageTransitionEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PageTransitionEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PageTransitionEventInit where
  makeObject = makeObject . unPageTransitionEventInit

instance IsEventInit PageTransitionEventInit

instance IsGObject PageTransitionEventInit where
  typeGType _ = gTypePageTransitionEventInit
  {-# INLINE typeGType #-}

noPageTransitionEventInit :: Maybe PageTransitionEventInit
noPageTransitionEventInit = Nothing
{-# INLINE noPageTransitionEventInit #-}

gTypePageTransitionEventInit :: JSM GType
gTypePageTransitionEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PaintTimingMixin" (paint-timing).
newtype PaintTimingMixin = PaintTimingMixin { unPaintTimingMixin :: JSVal }

instance PToJSVal PaintTimingMixin where
  pToJSVal = unPaintTimingMixin
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaintTimingMixin where
  pFromJSVal = PaintTimingMixin
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaintTimingMixin where
  toJSVal = return . unPaintTimingMixin
  {-# INLINE toJSVal #-}

instance FromJSVal PaintTimingMixin where
  fromJSVal v = fmap PaintTimingMixin <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaintTimingMixin
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaintTimingMixin where
  makeObject = makeObject . unPaintTimingMixin

class (IsGObject o) => IsPaintTimingMixin o
toPaintTimingMixin :: IsPaintTimingMixin o => o -> PaintTimingMixin
toPaintTimingMixin = PaintTimingMixin . coerce

instance IsPaintTimingMixin PaintTimingMixin

instance IsGObject PaintTimingMixin where
  typeGType _ = gTypePaintTimingMixin
  {-# INLINE typeGType #-}

noPaintTimingMixin :: Maybe PaintTimingMixin
noPaintTimingMixin = Nothing
{-# INLINE noPaintTimingMixin #-}

gTypePaintTimingMixin :: JSM GType
gTypePaintTimingMixin = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PannerNode" (webaudio-1.1).
newtype PannerNode = PannerNode { unPannerNode :: JSVal }

instance PToJSVal PannerNode where
  pToJSVal = unPannerNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal PannerNode where
  pFromJSVal = PannerNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal PannerNode where
  toJSVal = return . unPannerNode
  {-# INLINE toJSVal #-}

instance FromJSVal PannerNode where
  fromJSVal v = fmap PannerNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PannerNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PannerNode where
  makeObject = makeObject . unPannerNode

instance IsAudioNode PannerNode
instance IsEventTarget PannerNode

instance IsGObject PannerNode where
  typeGType _ = gTypePannerNode
  {-# INLINE typeGType #-}

noPannerNode :: Maybe PannerNode
noPannerNode = Nothing
{-# INLINE noPannerNode #-}

gTypePannerNode :: JSM GType
gTypePannerNode = GType . Object <$> jsg "PannerNode"

-- | Dictionary PannerOptions (webaudio-1.1)
newtype PannerOptions = PannerOptions { unPannerOptions :: JSVal }

instance PToJSVal PannerOptions where
  pToJSVal = unPannerOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal PannerOptions where
  pFromJSVal = PannerOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal PannerOptions where
  toJSVal = return . unPannerOptions
  {-# INLINE toJSVal #-}

instance FromJSVal PannerOptions where
  fromJSVal v = fmap PannerOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PannerOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PannerOptions where
  makeObject = makeObject . unPannerOptions

instance IsAudioNodeOptions PannerOptions

instance IsGObject PannerOptions where
  typeGType _ = gTypePannerOptions
  {-# INLINE typeGType #-}

noPannerOptions :: Maybe PannerOptions
noPannerOptions = Nothing
{-# INLINE noPannerOptions #-}

gTypePannerOptions :: JSM GType
gTypePannerOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ParentNode" (dom).
newtype ParentNode = ParentNode { unParentNode :: JSVal }

instance PToJSVal ParentNode where
  pToJSVal = unParentNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal ParentNode where
  pFromJSVal = ParentNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal ParentNode where
  toJSVal = return . unParentNode
  {-# INLINE toJSVal #-}

instance FromJSVal ParentNode where
  fromJSVal v = fmap ParentNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ParentNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ParentNode where
  makeObject = makeObject . unParentNode

class (IsGObject o) => IsParentNode o
toParentNode :: IsParentNode o => o -> ParentNode
toParentNode = ParentNode . coerce

instance IsParentNode ParentNode

instance IsGObject ParentNode where
  typeGType _ = gTypeParentNode
  {-# INLINE typeGType #-}

noParentNode :: Maybe ParentNode
noParentNode = Nothing
{-# INLINE noParentNode #-}

gTypeParentNode :: JSM GType
gTypeParentNode = GType . Object <$> jsg "Object"

-- | Dictionary ParseHTMLUnsafeOptions (html)
newtype ParseHTMLUnsafeOptions = ParseHTMLUnsafeOptions { unParseHTMLUnsafeOptions :: JSVal }

instance PToJSVal ParseHTMLUnsafeOptions where
  pToJSVal = unParseHTMLUnsafeOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ParseHTMLUnsafeOptions where
  pFromJSVal = ParseHTMLUnsafeOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ParseHTMLUnsafeOptions where
  toJSVal = return . unParseHTMLUnsafeOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ParseHTMLUnsafeOptions where
  fromJSVal v = fmap ParseHTMLUnsafeOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ParseHTMLUnsafeOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ParseHTMLUnsafeOptions where
  makeObject = makeObject . unParseHTMLUnsafeOptions


instance IsGObject ParseHTMLUnsafeOptions where
  typeGType _ = gTypeParseHTMLUnsafeOptions
  {-# INLINE typeGType #-}

noParseHTMLUnsafeOptions :: Maybe ParseHTMLUnsafeOptions
noParseHTMLUnsafeOptions = Nothing
{-# INLINE noParseHTMLUnsafeOptions #-}

gTypeParseHTMLUnsafeOptions :: JSM GType
gTypeParseHTMLUnsafeOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PasswordCredential" (credential-management-1).
newtype PasswordCredential = PasswordCredential { unPasswordCredential :: JSVal }

instance PToJSVal PasswordCredential where
  pToJSVal = unPasswordCredential
  {-# INLINE pToJSVal #-}

instance PFromJSVal PasswordCredential where
  pFromJSVal = PasswordCredential
  {-# INLINE pFromJSVal #-}

instance ToJSVal PasswordCredential where
  toJSVal = return . unPasswordCredential
  {-# INLINE toJSVal #-}

instance FromJSVal PasswordCredential where
  fromJSVal v = fmap PasswordCredential <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PasswordCredential
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PasswordCredential where
  makeObject = makeObject . unPasswordCredential

instance IsCredential PasswordCredential

instance IsGObject PasswordCredential where
  typeGType _ = gTypePasswordCredential
  {-# INLINE typeGType #-}

noPasswordCredential :: Maybe PasswordCredential
noPasswordCredential = Nothing
{-# INLINE noPasswordCredential #-}

gTypePasswordCredential :: JSM GType
gTypePasswordCredential = GType . Object <$> jsg "PasswordCredential"

-- | Dictionary PasswordCredentialData (credential-management-1)
newtype PasswordCredentialData = PasswordCredentialData { unPasswordCredentialData :: JSVal }

instance PToJSVal PasswordCredentialData where
  pToJSVal = unPasswordCredentialData
  {-# INLINE pToJSVal #-}

instance PFromJSVal PasswordCredentialData where
  pFromJSVal = PasswordCredentialData
  {-# INLINE pFromJSVal #-}

instance ToJSVal PasswordCredentialData where
  toJSVal = return . unPasswordCredentialData
  {-# INLINE toJSVal #-}

instance FromJSVal PasswordCredentialData where
  fromJSVal v = fmap PasswordCredentialData <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PasswordCredentialData
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PasswordCredentialData where
  makeObject = makeObject . unPasswordCredentialData

instance IsCredentialData PasswordCredentialData

instance IsGObject PasswordCredentialData where
  typeGType _ = gTypePasswordCredentialData
  {-# INLINE typeGType #-}

noPasswordCredentialData :: Maybe PasswordCredentialData
noPasswordCredentialData = Nothing
{-# INLINE noPasswordCredentialData #-}

gTypePasswordCredentialData :: JSM GType
gTypePasswordCredentialData = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Path2D" (html).
newtype Path2D = Path2D { unPath2D :: JSVal }

instance PToJSVal Path2D where
  pToJSVal = unPath2D
  {-# INLINE pToJSVal #-}

instance PFromJSVal Path2D where
  pFromJSVal = Path2D
  {-# INLINE pFromJSVal #-}

instance ToJSVal Path2D where
  toJSVal = return . unPath2D
  {-# INLINE toJSVal #-}

instance FromJSVal Path2D where
  fromJSVal v = fmap Path2D <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Path2D
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Path2D where
  makeObject = makeObject . unPath2D

instance IsCanvasPath Path2D

instance IsGObject Path2D where
  typeGType _ = gTypePath2D
  {-# INLINE typeGType #-}

noPath2D :: Maybe Path2D
noPath2D = Nothing
{-# INLINE noPath2D #-}

gTypePath2D :: JSM GType
gTypePath2D = GType . Object <$> jsg "Path2D"

-- | Dictionary PayerErrors (payment-request)
newtype PayerErrors = PayerErrors { unPayerErrors :: JSVal }

instance PToJSVal PayerErrors where
  pToJSVal = unPayerErrors
  {-# INLINE pToJSVal #-}

instance PFromJSVal PayerErrors where
  pFromJSVal = PayerErrors
  {-# INLINE pFromJSVal #-}

instance ToJSVal PayerErrors where
  toJSVal = return . unPayerErrors
  {-# INLINE toJSVal #-}

instance FromJSVal PayerErrors where
  fromJSVal v = fmap PayerErrors <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PayerErrors
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PayerErrors where
  makeObject = makeObject . unPayerErrors


instance IsGObject PayerErrors where
  typeGType _ = gTypePayerErrors
  {-# INLINE typeGType #-}

noPayerErrors :: Maybe PayerErrors
noPayerErrors = Nothing
{-# INLINE noPayerErrors #-}

gTypePayerErrors :: JSM GType
gTypePayerErrors = GType . Object <$> jsg "Object"

-- | Dictionary PaymentCompleteDetails (payment-request)
newtype PaymentCompleteDetails = PaymentCompleteDetails { unPaymentCompleteDetails :: JSVal }

instance PToJSVal PaymentCompleteDetails where
  pToJSVal = unPaymentCompleteDetails
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentCompleteDetails where
  pFromJSVal = PaymentCompleteDetails
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentCompleteDetails where
  toJSVal = return . unPaymentCompleteDetails
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentCompleteDetails where
  fromJSVal v = fmap PaymentCompleteDetails <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentCompleteDetails
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentCompleteDetails where
  makeObject = makeObject . unPaymentCompleteDetails


instance IsGObject PaymentCompleteDetails where
  typeGType _ = gTypePaymentCompleteDetails
  {-# INLINE typeGType #-}

noPaymentCompleteDetails :: Maybe PaymentCompleteDetails
noPaymentCompleteDetails = Nothing
{-# INLINE noPaymentCompleteDetails #-}

gTypePaymentCompleteDetails :: JSM GType
gTypePaymentCompleteDetails = GType . Object <$> jsg "Object"

-- | Dictionary PaymentCredentialInstrument (secure-payment-confirmation)
newtype PaymentCredentialInstrument = PaymentCredentialInstrument { unPaymentCredentialInstrument :: JSVal }

instance PToJSVal PaymentCredentialInstrument where
  pToJSVal = unPaymentCredentialInstrument
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentCredentialInstrument where
  pFromJSVal = PaymentCredentialInstrument
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentCredentialInstrument where
  toJSVal = return . unPaymentCredentialInstrument
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentCredentialInstrument where
  fromJSVal v = fmap PaymentCredentialInstrument <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentCredentialInstrument
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentCredentialInstrument where
  makeObject = makeObject . unPaymentCredentialInstrument


instance IsGObject PaymentCredentialInstrument where
  typeGType _ = gTypePaymentCredentialInstrument
  {-# INLINE typeGType #-}

noPaymentCredentialInstrument :: Maybe PaymentCredentialInstrument
noPaymentCredentialInstrument = Nothing
{-# INLINE noPaymentCredentialInstrument #-}

gTypePaymentCredentialInstrument :: JSM GType
gTypePaymentCredentialInstrument = GType . Object <$> jsg "Object"

-- | Dictionary PaymentCurrencyAmount (payment-request)
newtype PaymentCurrencyAmount = PaymentCurrencyAmount { unPaymentCurrencyAmount :: JSVal }

instance PToJSVal PaymentCurrencyAmount where
  pToJSVal = unPaymentCurrencyAmount
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentCurrencyAmount where
  pFromJSVal = PaymentCurrencyAmount
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentCurrencyAmount where
  toJSVal = return . unPaymentCurrencyAmount
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentCurrencyAmount where
  fromJSVal v = fmap PaymentCurrencyAmount <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentCurrencyAmount
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentCurrencyAmount where
  makeObject = makeObject . unPaymentCurrencyAmount


instance IsGObject PaymentCurrencyAmount where
  typeGType _ = gTypePaymentCurrencyAmount
  {-# INLINE typeGType #-}

noPaymentCurrencyAmount :: Maybe PaymentCurrencyAmount
noPaymentCurrencyAmount = Nothing
{-# INLINE noPaymentCurrencyAmount #-}

gTypePaymentCurrencyAmount :: JSM GType
gTypePaymentCurrencyAmount = GType . Object <$> jsg "Object"

-- | Dictionary PaymentDetailsBase (payment-request)
newtype PaymentDetailsBase = PaymentDetailsBase { unPaymentDetailsBase :: JSVal }

instance PToJSVal PaymentDetailsBase where
  pToJSVal = unPaymentDetailsBase
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentDetailsBase where
  pFromJSVal = PaymentDetailsBase
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentDetailsBase where
  toJSVal = return . unPaymentDetailsBase
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentDetailsBase where
  fromJSVal v = fmap PaymentDetailsBase <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentDetailsBase
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentDetailsBase where
  makeObject = makeObject . unPaymentDetailsBase

class (IsGObject o) => IsPaymentDetailsBase o
toPaymentDetailsBase :: IsPaymentDetailsBase o => o -> PaymentDetailsBase
toPaymentDetailsBase = PaymentDetailsBase . coerce

instance IsPaymentDetailsBase PaymentDetailsBase

instance IsGObject PaymentDetailsBase where
  typeGType _ = gTypePaymentDetailsBase
  {-# INLINE typeGType #-}

noPaymentDetailsBase :: Maybe PaymentDetailsBase
noPaymentDetailsBase = Nothing
{-# INLINE noPaymentDetailsBase #-}

gTypePaymentDetailsBase :: JSM GType
gTypePaymentDetailsBase = GType . Object <$> jsg "Object"

-- | Dictionary PaymentDetailsInit (payment-request)
newtype PaymentDetailsInit = PaymentDetailsInit { unPaymentDetailsInit :: JSVal }

instance PToJSVal PaymentDetailsInit where
  pToJSVal = unPaymentDetailsInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentDetailsInit where
  pFromJSVal = PaymentDetailsInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentDetailsInit where
  toJSVal = return . unPaymentDetailsInit
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentDetailsInit where
  fromJSVal v = fmap PaymentDetailsInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentDetailsInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentDetailsInit where
  makeObject = makeObject . unPaymentDetailsInit

instance IsPaymentDetailsBase PaymentDetailsInit

instance IsGObject PaymentDetailsInit where
  typeGType _ = gTypePaymentDetailsInit
  {-# INLINE typeGType #-}

noPaymentDetailsInit :: Maybe PaymentDetailsInit
noPaymentDetailsInit = Nothing
{-# INLINE noPaymentDetailsInit #-}

gTypePaymentDetailsInit :: JSM GType
gTypePaymentDetailsInit = GType . Object <$> jsg "Object"

-- | Dictionary PaymentDetailsModifier (payment-request)
newtype PaymentDetailsModifier = PaymentDetailsModifier { unPaymentDetailsModifier :: JSVal }

instance PToJSVal PaymentDetailsModifier where
  pToJSVal = unPaymentDetailsModifier
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentDetailsModifier where
  pFromJSVal = PaymentDetailsModifier
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentDetailsModifier where
  toJSVal = return . unPaymentDetailsModifier
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentDetailsModifier where
  fromJSVal v = fmap PaymentDetailsModifier <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentDetailsModifier
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentDetailsModifier where
  makeObject = makeObject . unPaymentDetailsModifier


instance IsGObject PaymentDetailsModifier where
  typeGType _ = gTypePaymentDetailsModifier
  {-# INLINE typeGType #-}

noPaymentDetailsModifier :: Maybe PaymentDetailsModifier
noPaymentDetailsModifier = Nothing
{-# INLINE noPaymentDetailsModifier #-}

gTypePaymentDetailsModifier :: JSM GType
gTypePaymentDetailsModifier = GType . Object <$> jsg "Object"

-- | Dictionary PaymentDetailsUpdate (payment-request)
newtype PaymentDetailsUpdate = PaymentDetailsUpdate { unPaymentDetailsUpdate :: JSVal }

instance PToJSVal PaymentDetailsUpdate where
  pToJSVal = unPaymentDetailsUpdate
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentDetailsUpdate where
  pFromJSVal = PaymentDetailsUpdate
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentDetailsUpdate where
  toJSVal = return . unPaymentDetailsUpdate
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentDetailsUpdate where
  fromJSVal v = fmap PaymentDetailsUpdate <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentDetailsUpdate
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentDetailsUpdate where
  makeObject = makeObject . unPaymentDetailsUpdate

instance IsPaymentDetailsBase PaymentDetailsUpdate

instance IsGObject PaymentDetailsUpdate where
  typeGType _ = gTypePaymentDetailsUpdate
  {-# INLINE typeGType #-}

noPaymentDetailsUpdate :: Maybe PaymentDetailsUpdate
noPaymentDetailsUpdate = Nothing
{-# INLINE noPaymentDetailsUpdate #-}

gTypePaymentDetailsUpdate :: JSM GType
gTypePaymentDetailsUpdate = GType . Object <$> jsg "Object"

-- | Dictionary PaymentEntityLogo (secure-payment-confirmation)
newtype PaymentEntityLogo = PaymentEntityLogo { unPaymentEntityLogo :: JSVal }

instance PToJSVal PaymentEntityLogo where
  pToJSVal = unPaymentEntityLogo
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentEntityLogo where
  pFromJSVal = PaymentEntityLogo
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentEntityLogo where
  toJSVal = return . unPaymentEntityLogo
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentEntityLogo where
  fromJSVal v = fmap PaymentEntityLogo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentEntityLogo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentEntityLogo where
  makeObject = makeObject . unPaymentEntityLogo


instance IsGObject PaymentEntityLogo where
  typeGType _ = gTypePaymentEntityLogo
  {-# INLINE typeGType #-}

noPaymentEntityLogo :: Maybe PaymentEntityLogo
noPaymentEntityLogo = Nothing
{-# INLINE noPaymentEntityLogo #-}

gTypePaymentEntityLogo :: JSM GType
gTypePaymentEntityLogo = GType . Object <$> jsg "Object"

-- | Dictionary PaymentItem (payment-request)
newtype PaymentItem = PaymentItem { unPaymentItem :: JSVal }

instance PToJSVal PaymentItem where
  pToJSVal = unPaymentItem
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentItem where
  pFromJSVal = PaymentItem
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentItem where
  toJSVal = return . unPaymentItem
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentItem where
  fromJSVal v = fmap PaymentItem <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentItem
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentItem where
  makeObject = makeObject . unPaymentItem


instance IsGObject PaymentItem where
  typeGType _ = gTypePaymentItem
  {-# INLINE typeGType #-}

noPaymentItem :: Maybe PaymentItem
noPaymentItem = Nothing
{-# INLINE noPaymentItem #-}

gTypePaymentItem :: JSM GType
gTypePaymentItem = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PaymentMethodChangeEvent" (payment-request).
newtype PaymentMethodChangeEvent = PaymentMethodChangeEvent { unPaymentMethodChangeEvent :: JSVal }

instance PToJSVal PaymentMethodChangeEvent where
  pToJSVal = unPaymentMethodChangeEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentMethodChangeEvent where
  pFromJSVal = PaymentMethodChangeEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentMethodChangeEvent where
  toJSVal = return . unPaymentMethodChangeEvent
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentMethodChangeEvent where
  fromJSVal v = fmap PaymentMethodChangeEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentMethodChangeEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentMethodChangeEvent where
  makeObject = makeObject . unPaymentMethodChangeEvent

instance IsPaymentRequestUpdateEvent PaymentMethodChangeEvent
instance IsEvent PaymentMethodChangeEvent

instance IsGObject PaymentMethodChangeEvent where
  typeGType _ = gTypePaymentMethodChangeEvent
  {-# INLINE typeGType #-}

noPaymentMethodChangeEvent :: Maybe PaymentMethodChangeEvent
noPaymentMethodChangeEvent = Nothing
{-# INLINE noPaymentMethodChangeEvent #-}

gTypePaymentMethodChangeEvent :: JSM GType
gTypePaymentMethodChangeEvent = GType . Object <$> jsg "PaymentMethodChangeEvent"

-- | Dictionary PaymentMethodChangeEventInit (payment-request)
newtype PaymentMethodChangeEventInit = PaymentMethodChangeEventInit { unPaymentMethodChangeEventInit :: JSVal }

instance PToJSVal PaymentMethodChangeEventInit where
  pToJSVal = unPaymentMethodChangeEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentMethodChangeEventInit where
  pFromJSVal = PaymentMethodChangeEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentMethodChangeEventInit where
  toJSVal = return . unPaymentMethodChangeEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentMethodChangeEventInit where
  fromJSVal v = fmap PaymentMethodChangeEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentMethodChangeEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentMethodChangeEventInit where
  makeObject = makeObject . unPaymentMethodChangeEventInit

instance IsPaymentRequestUpdateEventInit PaymentMethodChangeEventInit
instance IsEventInit PaymentMethodChangeEventInit

instance IsGObject PaymentMethodChangeEventInit where
  typeGType _ = gTypePaymentMethodChangeEventInit
  {-# INLINE typeGType #-}

noPaymentMethodChangeEventInit :: Maybe PaymentMethodChangeEventInit
noPaymentMethodChangeEventInit = Nothing
{-# INLINE noPaymentMethodChangeEventInit #-}

gTypePaymentMethodChangeEventInit :: JSM GType
gTypePaymentMethodChangeEventInit = GType . Object <$> jsg "Object"

-- | Dictionary PaymentMethodData (payment-request)
newtype PaymentMethodData = PaymentMethodData { unPaymentMethodData :: JSVal }

instance PToJSVal PaymentMethodData where
  pToJSVal = unPaymentMethodData
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentMethodData where
  pFromJSVal = PaymentMethodData
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentMethodData where
  toJSVal = return . unPaymentMethodData
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentMethodData where
  fromJSVal v = fmap PaymentMethodData <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentMethodData
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentMethodData where
  makeObject = makeObject . unPaymentMethodData


instance IsGObject PaymentMethodData where
  typeGType _ = gTypePaymentMethodData
  {-# INLINE typeGType #-}

noPaymentMethodData :: Maybe PaymentMethodData
noPaymentMethodData = Nothing
{-# INLINE noPaymentMethodData #-}

gTypePaymentMethodData :: JSM GType
gTypePaymentMethodData = GType . Object <$> jsg "Object"

-- | Dictionary PaymentOptions (payment-request)
newtype PaymentOptions = PaymentOptions { unPaymentOptions :: JSVal }

instance PToJSVal PaymentOptions where
  pToJSVal = unPaymentOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentOptions where
  pFromJSVal = PaymentOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentOptions where
  toJSVal = return . unPaymentOptions
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentOptions where
  fromJSVal v = fmap PaymentOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentOptions where
  makeObject = makeObject . unPaymentOptions


instance IsGObject PaymentOptions where
  typeGType _ = gTypePaymentOptions
  {-# INLINE typeGType #-}

noPaymentOptions :: Maybe PaymentOptions
noPaymentOptions = Nothing
{-# INLINE noPaymentOptions #-}

gTypePaymentOptions :: JSM GType
gTypePaymentOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PaymentRequest" (payment-request).
newtype PaymentRequest = PaymentRequest { unPaymentRequest :: JSVal }

instance PToJSVal PaymentRequest where
  pToJSVal = unPaymentRequest
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentRequest where
  pFromJSVal = PaymentRequest
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentRequest where
  toJSVal = return . unPaymentRequest
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentRequest where
  fromJSVal v = fmap PaymentRequest <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentRequest
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentRequest where
  makeObject = makeObject . unPaymentRequest

instance IsEventTarget PaymentRequest

instance IsGObject PaymentRequest where
  typeGType _ = gTypePaymentRequest
  {-# INLINE typeGType #-}

noPaymentRequest :: Maybe PaymentRequest
noPaymentRequest = Nothing
{-# INLINE noPaymentRequest #-}

gTypePaymentRequest :: JSM GType
gTypePaymentRequest = GType . Object <$> jsg "PaymentRequest"

-- | Functions for this interface are in "JSDOM.PaymentRequestUpdateEvent" (payment-request).
newtype PaymentRequestUpdateEvent = PaymentRequestUpdateEvent { unPaymentRequestUpdateEvent :: JSVal }

instance PToJSVal PaymentRequestUpdateEvent where
  pToJSVal = unPaymentRequestUpdateEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentRequestUpdateEvent where
  pFromJSVal = PaymentRequestUpdateEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentRequestUpdateEvent where
  toJSVal = return . unPaymentRequestUpdateEvent
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentRequestUpdateEvent where
  fromJSVal v = fmap PaymentRequestUpdateEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentRequestUpdateEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentRequestUpdateEvent where
  makeObject = makeObject . unPaymentRequestUpdateEvent

class (IsEvent o, IsGObject o) => IsPaymentRequestUpdateEvent o
toPaymentRequestUpdateEvent :: IsPaymentRequestUpdateEvent o => o -> PaymentRequestUpdateEvent
toPaymentRequestUpdateEvent = PaymentRequestUpdateEvent . coerce

instance IsPaymentRequestUpdateEvent PaymentRequestUpdateEvent
instance IsEvent PaymentRequestUpdateEvent

instance IsGObject PaymentRequestUpdateEvent where
  typeGType _ = gTypePaymentRequestUpdateEvent
  {-# INLINE typeGType #-}

noPaymentRequestUpdateEvent :: Maybe PaymentRequestUpdateEvent
noPaymentRequestUpdateEvent = Nothing
{-# INLINE noPaymentRequestUpdateEvent #-}

gTypePaymentRequestUpdateEvent :: JSM GType
gTypePaymentRequestUpdateEvent = GType . Object <$> jsg "PaymentRequestUpdateEvent"

-- | Dictionary PaymentRequestUpdateEventInit (payment-request)
newtype PaymentRequestUpdateEventInit = PaymentRequestUpdateEventInit { unPaymentRequestUpdateEventInit :: JSVal }

instance PToJSVal PaymentRequestUpdateEventInit where
  pToJSVal = unPaymentRequestUpdateEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentRequestUpdateEventInit where
  pFromJSVal = PaymentRequestUpdateEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentRequestUpdateEventInit where
  toJSVal = return . unPaymentRequestUpdateEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentRequestUpdateEventInit where
  fromJSVal v = fmap PaymentRequestUpdateEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentRequestUpdateEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentRequestUpdateEventInit where
  makeObject = makeObject . unPaymentRequestUpdateEventInit

class (IsEventInit o, IsGObject o) => IsPaymentRequestUpdateEventInit o
toPaymentRequestUpdateEventInit :: IsPaymentRequestUpdateEventInit o => o -> PaymentRequestUpdateEventInit
toPaymentRequestUpdateEventInit = PaymentRequestUpdateEventInit . coerce

instance IsPaymentRequestUpdateEventInit PaymentRequestUpdateEventInit
instance IsEventInit PaymentRequestUpdateEventInit

instance IsGObject PaymentRequestUpdateEventInit where
  typeGType _ = gTypePaymentRequestUpdateEventInit
  {-# INLINE typeGType #-}

noPaymentRequestUpdateEventInit :: Maybe PaymentRequestUpdateEventInit
noPaymentRequestUpdateEventInit = Nothing
{-# INLINE noPaymentRequestUpdateEventInit #-}

gTypePaymentRequestUpdateEventInit :: JSM GType
gTypePaymentRequestUpdateEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PaymentResponse" (payment-request).
newtype PaymentResponse = PaymentResponse { unPaymentResponse :: JSVal }

instance PToJSVal PaymentResponse where
  pToJSVal = unPaymentResponse
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentResponse where
  pFromJSVal = PaymentResponse
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentResponse where
  toJSVal = return . unPaymentResponse
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentResponse where
  fromJSVal v = fmap PaymentResponse <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentResponse
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentResponse where
  makeObject = makeObject . unPaymentResponse

instance IsEventTarget PaymentResponse

instance IsGObject PaymentResponse where
  typeGType _ = gTypePaymentResponse
  {-# INLINE typeGType #-}

noPaymentResponse :: Maybe PaymentResponse
noPaymentResponse = Nothing
{-# INLINE noPaymentResponse #-}

gTypePaymentResponse :: JSM GType
gTypePaymentResponse = GType . Object <$> jsg "PaymentResponse"

-- | Dictionary PaymentShippingOption (payment-request)
newtype PaymentShippingOption = PaymentShippingOption { unPaymentShippingOption :: JSVal }

instance PToJSVal PaymentShippingOption where
  pToJSVal = unPaymentShippingOption
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentShippingOption where
  pFromJSVal = PaymentShippingOption
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentShippingOption where
  toJSVal = return . unPaymentShippingOption
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentShippingOption where
  fromJSVal v = fmap PaymentShippingOption <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentShippingOption
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentShippingOption where
  makeObject = makeObject . unPaymentShippingOption


instance IsGObject PaymentShippingOption where
  typeGType _ = gTypePaymentShippingOption
  {-# INLINE typeGType #-}

noPaymentShippingOption :: Maybe PaymentShippingOption
noPaymentShippingOption = Nothing
{-# INLINE noPaymentShippingOption #-}

gTypePaymentShippingOption :: JSM GType
gTypePaymentShippingOption = GType . Object <$> jsg "Object"

-- | Dictionary PaymentValidationErrors (payment-request)
newtype PaymentValidationErrors = PaymentValidationErrors { unPaymentValidationErrors :: JSVal }

instance PToJSVal PaymentValidationErrors where
  pToJSVal = unPaymentValidationErrors
  {-# INLINE pToJSVal #-}

instance PFromJSVal PaymentValidationErrors where
  pFromJSVal = PaymentValidationErrors
  {-# INLINE pFromJSVal #-}

instance ToJSVal PaymentValidationErrors where
  toJSVal = return . unPaymentValidationErrors
  {-# INLINE toJSVal #-}

instance FromJSVal PaymentValidationErrors where
  fromJSVal v = fmap PaymentValidationErrors <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PaymentValidationErrors
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PaymentValidationErrors where
  makeObject = makeObject . unPaymentValidationErrors


instance IsGObject PaymentValidationErrors where
  typeGType _ = gTypePaymentValidationErrors
  {-# INLINE typeGType #-}

noPaymentValidationErrors :: Maybe PaymentValidationErrors
noPaymentValidationErrors = Nothing
{-# INLINE noPaymentValidationErrors #-}

gTypePaymentValidationErrors :: JSM GType
gTypePaymentValidationErrors = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Performance" (hr-time-3).
newtype Performance = Performance { unPerformance :: JSVal }

instance PToJSVal Performance where
  pToJSVal = unPerformance
  {-# INLINE pToJSVal #-}

instance PFromJSVal Performance where
  pFromJSVal = Performance
  {-# INLINE pFromJSVal #-}

instance ToJSVal Performance where
  toJSVal = return . unPerformance
  {-# INLINE toJSVal #-}

instance FromJSVal Performance where
  fromJSVal v = fmap Performance <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Performance
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Performance where
  makeObject = makeObject . unPerformance

instance IsEventTarget Performance

instance IsGObject Performance where
  typeGType _ = gTypePerformance
  {-# INLINE typeGType #-}

noPerformance :: Maybe Performance
noPerformance = Nothing
{-# INLINE noPerformance #-}

gTypePerformance :: JSM GType
gTypePerformance = GType . Object <$> jsg "Performance"

-- | Functions for this interface are in "JSDOM.PerformanceEntry" (performance-timeline).
newtype PerformanceEntry = PerformanceEntry { unPerformanceEntry :: JSVal }

instance PToJSVal PerformanceEntry where
  pToJSVal = unPerformanceEntry
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceEntry where
  pFromJSVal = PerformanceEntry
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceEntry where
  toJSVal = return . unPerformanceEntry
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceEntry where
  fromJSVal v = fmap PerformanceEntry <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceEntry
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceEntry where
  makeObject = makeObject . unPerformanceEntry

class (IsGObject o) => IsPerformanceEntry o
toPerformanceEntry :: IsPerformanceEntry o => o -> PerformanceEntry
toPerformanceEntry = PerformanceEntry . coerce

instance IsPerformanceEntry PerformanceEntry

instance IsGObject PerformanceEntry where
  typeGType _ = gTypePerformanceEntry
  {-# INLINE typeGType #-}

noPerformanceEntry :: Maybe PerformanceEntry
noPerformanceEntry = Nothing
{-# INLINE noPerformanceEntry #-}

gTypePerformanceEntry :: JSM GType
gTypePerformanceEntry = GType . Object <$> jsg "PerformanceEntry"

-- | Functions for this interface are in "JSDOM.PerformanceEventTiming" (event-timing).
newtype PerformanceEventTiming = PerformanceEventTiming { unPerformanceEventTiming :: JSVal }

instance PToJSVal PerformanceEventTiming where
  pToJSVal = unPerformanceEventTiming
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceEventTiming where
  pFromJSVal = PerformanceEventTiming
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceEventTiming where
  toJSVal = return . unPerformanceEventTiming
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceEventTiming where
  fromJSVal v = fmap PerformanceEventTiming <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceEventTiming
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceEventTiming where
  makeObject = makeObject . unPerformanceEventTiming

instance IsPerformanceEntry PerformanceEventTiming

instance IsGObject PerformanceEventTiming where
  typeGType _ = gTypePerformanceEventTiming
  {-# INLINE typeGType #-}

noPerformanceEventTiming :: Maybe PerformanceEventTiming
noPerformanceEventTiming = Nothing
{-# INLINE noPerformanceEventTiming #-}

gTypePerformanceEventTiming :: JSM GType
gTypePerformanceEventTiming = GType . Object <$> jsg "PerformanceEventTiming"

-- | Functions for this interface are in "JSDOM.PerformanceMark" (user-timing).
newtype PerformanceMark = PerformanceMark { unPerformanceMark :: JSVal }

instance PToJSVal PerformanceMark where
  pToJSVal = unPerformanceMark
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceMark where
  pFromJSVal = PerformanceMark
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceMark where
  toJSVal = return . unPerformanceMark
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceMark where
  fromJSVal v = fmap PerformanceMark <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceMark
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceMark where
  makeObject = makeObject . unPerformanceMark

instance IsPerformanceEntry PerformanceMark

instance IsGObject PerformanceMark where
  typeGType _ = gTypePerformanceMark
  {-# INLINE typeGType #-}

noPerformanceMark :: Maybe PerformanceMark
noPerformanceMark = Nothing
{-# INLINE noPerformanceMark #-}

gTypePerformanceMark :: JSM GType
gTypePerformanceMark = GType . Object <$> jsg "PerformanceMark"

-- | Dictionary PerformanceMarkOptions (user-timing)
newtype PerformanceMarkOptions = PerformanceMarkOptions { unPerformanceMarkOptions :: JSVal }

instance PToJSVal PerformanceMarkOptions where
  pToJSVal = unPerformanceMarkOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceMarkOptions where
  pFromJSVal = PerformanceMarkOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceMarkOptions where
  toJSVal = return . unPerformanceMarkOptions
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceMarkOptions where
  fromJSVal v = fmap PerformanceMarkOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceMarkOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceMarkOptions where
  makeObject = makeObject . unPerformanceMarkOptions


instance IsGObject PerformanceMarkOptions where
  typeGType _ = gTypePerformanceMarkOptions
  {-# INLINE typeGType #-}

noPerformanceMarkOptions :: Maybe PerformanceMarkOptions
noPerformanceMarkOptions = Nothing
{-# INLINE noPerformanceMarkOptions #-}

gTypePerformanceMarkOptions :: JSM GType
gTypePerformanceMarkOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PerformanceMeasure" (user-timing).
newtype PerformanceMeasure = PerformanceMeasure { unPerformanceMeasure :: JSVal }

instance PToJSVal PerformanceMeasure where
  pToJSVal = unPerformanceMeasure
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceMeasure where
  pFromJSVal = PerformanceMeasure
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceMeasure where
  toJSVal = return . unPerformanceMeasure
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceMeasure where
  fromJSVal v = fmap PerformanceMeasure <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceMeasure
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceMeasure where
  makeObject = makeObject . unPerformanceMeasure

instance IsPerformanceEntry PerformanceMeasure

instance IsGObject PerformanceMeasure where
  typeGType _ = gTypePerformanceMeasure
  {-# INLINE typeGType #-}

noPerformanceMeasure :: Maybe PerformanceMeasure
noPerformanceMeasure = Nothing
{-# INLINE noPerformanceMeasure #-}

gTypePerformanceMeasure :: JSM GType
gTypePerformanceMeasure = GType . Object <$> jsg "PerformanceMeasure"

-- | Dictionary PerformanceMeasureOptions (user-timing)
newtype PerformanceMeasureOptions = PerformanceMeasureOptions { unPerformanceMeasureOptions :: JSVal }

instance PToJSVal PerformanceMeasureOptions where
  pToJSVal = unPerformanceMeasureOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceMeasureOptions where
  pFromJSVal = PerformanceMeasureOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceMeasureOptions where
  toJSVal = return . unPerformanceMeasureOptions
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceMeasureOptions where
  fromJSVal v = fmap PerformanceMeasureOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceMeasureOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceMeasureOptions where
  makeObject = makeObject . unPerformanceMeasureOptions


instance IsGObject PerformanceMeasureOptions where
  typeGType _ = gTypePerformanceMeasureOptions
  {-# INLINE typeGType #-}

noPerformanceMeasureOptions :: Maybe PerformanceMeasureOptions
noPerformanceMeasureOptions = Nothing
{-# INLINE noPerformanceMeasureOptions #-}

gTypePerformanceMeasureOptions :: JSM GType
gTypePerformanceMeasureOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PerformanceNavigation" (navigation-timing-2).
newtype PerformanceNavigation = PerformanceNavigation { unPerformanceNavigation :: JSVal }

instance PToJSVal PerformanceNavigation where
  pToJSVal = unPerformanceNavigation
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceNavigation where
  pFromJSVal = PerformanceNavigation
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceNavigation where
  toJSVal = return . unPerformanceNavigation
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceNavigation where
  fromJSVal v = fmap PerformanceNavigation <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceNavigation
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceNavigation where
  makeObject = makeObject . unPerformanceNavigation


instance IsGObject PerformanceNavigation where
  typeGType _ = gTypePerformanceNavigation
  {-# INLINE typeGType #-}

noPerformanceNavigation :: Maybe PerformanceNavigation
noPerformanceNavigation = Nothing
{-# INLINE noPerformanceNavigation #-}

gTypePerformanceNavigation :: JSM GType
gTypePerformanceNavigation = GType . Object <$> jsg "PerformanceNavigation"

-- | Functions for this interface are in "JSDOM.PerformanceNavigationTiming" (navigation-timing-2).
newtype PerformanceNavigationTiming = PerformanceNavigationTiming { unPerformanceNavigationTiming :: JSVal }

instance PToJSVal PerformanceNavigationTiming where
  pToJSVal = unPerformanceNavigationTiming
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceNavigationTiming where
  pFromJSVal = PerformanceNavigationTiming
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceNavigationTiming where
  toJSVal = return . unPerformanceNavigationTiming
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceNavigationTiming where
  fromJSVal v = fmap PerformanceNavigationTiming <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceNavigationTiming
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceNavigationTiming where
  makeObject = makeObject . unPerformanceNavigationTiming

instance IsPerformanceResourceTiming PerformanceNavigationTiming
instance IsPerformanceEntry PerformanceNavigationTiming

instance IsGObject PerformanceNavigationTiming where
  typeGType _ = gTypePerformanceNavigationTiming
  {-# INLINE typeGType #-}

noPerformanceNavigationTiming :: Maybe PerformanceNavigationTiming
noPerformanceNavigationTiming = Nothing
{-# INLINE noPerformanceNavigationTiming #-}

gTypePerformanceNavigationTiming :: JSM GType
gTypePerformanceNavigationTiming = GType . Object <$> jsg "PerformanceNavigationTiming"

-- | Functions for this interface are in "JSDOM.PerformanceObserver" (performance-timeline).
newtype PerformanceObserver = PerformanceObserver { unPerformanceObserver :: JSVal }

instance PToJSVal PerformanceObserver where
  pToJSVal = unPerformanceObserver
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceObserver where
  pFromJSVal = PerformanceObserver
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceObserver where
  toJSVal = return . unPerformanceObserver
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceObserver where
  fromJSVal v = fmap PerformanceObserver <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceObserver
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceObserver where
  makeObject = makeObject . unPerformanceObserver


instance IsGObject PerformanceObserver where
  typeGType _ = gTypePerformanceObserver
  {-# INLINE typeGType #-}

noPerformanceObserver :: Maybe PerformanceObserver
noPerformanceObserver = Nothing
{-# INLINE noPerformanceObserver #-}

gTypePerformanceObserver :: JSM GType
gTypePerformanceObserver = GType . Object <$> jsg "PerformanceObserver"

-- | Dictionary PerformanceObserverCallbackOptions (performance-timeline)
newtype PerformanceObserverCallbackOptions = PerformanceObserverCallbackOptions { unPerformanceObserverCallbackOptions :: JSVal }

instance PToJSVal PerformanceObserverCallbackOptions where
  pToJSVal = unPerformanceObserverCallbackOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceObserverCallbackOptions where
  pFromJSVal = PerformanceObserverCallbackOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceObserverCallbackOptions where
  toJSVal = return . unPerformanceObserverCallbackOptions
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceObserverCallbackOptions where
  fromJSVal v = fmap PerformanceObserverCallbackOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceObserverCallbackOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceObserverCallbackOptions where
  makeObject = makeObject . unPerformanceObserverCallbackOptions


instance IsGObject PerformanceObserverCallbackOptions where
  typeGType _ = gTypePerformanceObserverCallbackOptions
  {-# INLINE typeGType #-}

noPerformanceObserverCallbackOptions :: Maybe PerformanceObserverCallbackOptions
noPerformanceObserverCallbackOptions = Nothing
{-# INLINE noPerformanceObserverCallbackOptions #-}

gTypePerformanceObserverCallbackOptions :: JSM GType
gTypePerformanceObserverCallbackOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PerformanceObserverEntryList" (performance-timeline).
newtype PerformanceObserverEntryList = PerformanceObserverEntryList { unPerformanceObserverEntryList :: JSVal }

instance PToJSVal PerformanceObserverEntryList where
  pToJSVal = unPerformanceObserverEntryList
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceObserverEntryList where
  pFromJSVal = PerformanceObserverEntryList
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceObserverEntryList where
  toJSVal = return . unPerformanceObserverEntryList
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceObserverEntryList where
  fromJSVal v = fmap PerformanceObserverEntryList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceObserverEntryList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceObserverEntryList where
  makeObject = makeObject . unPerformanceObserverEntryList


instance IsGObject PerformanceObserverEntryList where
  typeGType _ = gTypePerformanceObserverEntryList
  {-# INLINE typeGType #-}

noPerformanceObserverEntryList :: Maybe PerformanceObserverEntryList
noPerformanceObserverEntryList = Nothing
{-# INLINE noPerformanceObserverEntryList #-}

gTypePerformanceObserverEntryList :: JSM GType
gTypePerformanceObserverEntryList = GType . Object <$> jsg "PerformanceObserverEntryList"

-- | Dictionary PerformanceObserverInit (performance-timeline)
newtype PerformanceObserverInit = PerformanceObserverInit { unPerformanceObserverInit :: JSVal }

instance PToJSVal PerformanceObserverInit where
  pToJSVal = unPerformanceObserverInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceObserverInit where
  pFromJSVal = PerformanceObserverInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceObserverInit where
  toJSVal = return . unPerformanceObserverInit
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceObserverInit where
  fromJSVal v = fmap PerformanceObserverInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceObserverInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceObserverInit where
  makeObject = makeObject . unPerformanceObserverInit


instance IsGObject PerformanceObserverInit where
  typeGType _ = gTypePerformanceObserverInit
  {-# INLINE typeGType #-}

noPerformanceObserverInit :: Maybe PerformanceObserverInit
noPerformanceObserverInit = Nothing
{-# INLINE noPerformanceObserverInit #-}

gTypePerformanceObserverInit :: JSM GType
gTypePerformanceObserverInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PerformancePaintTiming" (paint-timing).
newtype PerformancePaintTiming = PerformancePaintTiming { unPerformancePaintTiming :: JSVal }

instance PToJSVal PerformancePaintTiming where
  pToJSVal = unPerformancePaintTiming
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformancePaintTiming where
  pFromJSVal = PerformancePaintTiming
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformancePaintTiming where
  toJSVal = return . unPerformancePaintTiming
  {-# INLINE toJSVal #-}

instance FromJSVal PerformancePaintTiming where
  fromJSVal v = fmap PerformancePaintTiming <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformancePaintTiming
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformancePaintTiming where
  makeObject = makeObject . unPerformancePaintTiming

instance IsPaintTimingMixin PerformancePaintTiming
instance IsPerformanceEntry PerformancePaintTiming

instance IsGObject PerformancePaintTiming where
  typeGType _ = gTypePerformancePaintTiming
  {-# INLINE typeGType #-}

noPerformancePaintTiming :: Maybe PerformancePaintTiming
noPerformancePaintTiming = Nothing
{-# INLINE noPerformancePaintTiming #-}

gTypePerformancePaintTiming :: JSM GType
gTypePerformancePaintTiming = GType . Object <$> jsg "PerformancePaintTiming"

-- | Functions for this interface are in "JSDOM.PerformanceResourceTiming" (resource-timing).
newtype PerformanceResourceTiming = PerformanceResourceTiming { unPerformanceResourceTiming :: JSVal }

instance PToJSVal PerformanceResourceTiming where
  pToJSVal = unPerformanceResourceTiming
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceResourceTiming where
  pFromJSVal = PerformanceResourceTiming
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceResourceTiming where
  toJSVal = return . unPerformanceResourceTiming
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceResourceTiming where
  fromJSVal v = fmap PerformanceResourceTiming <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceResourceTiming
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceResourceTiming where
  makeObject = makeObject . unPerformanceResourceTiming

class (IsPerformanceEntry o, IsGObject o) => IsPerformanceResourceTiming o
toPerformanceResourceTiming :: IsPerformanceResourceTiming o => o -> PerformanceResourceTiming
toPerformanceResourceTiming = PerformanceResourceTiming . coerce

instance IsPerformanceResourceTiming PerformanceResourceTiming
instance IsPerformanceEntry PerformanceResourceTiming

instance IsGObject PerformanceResourceTiming where
  typeGType _ = gTypePerformanceResourceTiming
  {-# INLINE typeGType #-}

noPerformanceResourceTiming :: Maybe PerformanceResourceTiming
noPerformanceResourceTiming = Nothing
{-# INLINE noPerformanceResourceTiming #-}

gTypePerformanceResourceTiming :: JSM GType
gTypePerformanceResourceTiming = GType . Object <$> jsg "PerformanceResourceTiming"

-- | Functions for this interface are in "JSDOM.PerformanceServerTiming" (server-timing).
newtype PerformanceServerTiming = PerformanceServerTiming { unPerformanceServerTiming :: JSVal }

instance PToJSVal PerformanceServerTiming where
  pToJSVal = unPerformanceServerTiming
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceServerTiming where
  pFromJSVal = PerformanceServerTiming
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceServerTiming where
  toJSVal = return . unPerformanceServerTiming
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceServerTiming where
  fromJSVal v = fmap PerformanceServerTiming <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceServerTiming
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceServerTiming where
  makeObject = makeObject . unPerformanceServerTiming


instance IsGObject PerformanceServerTiming where
  typeGType _ = gTypePerformanceServerTiming
  {-# INLINE typeGType #-}

noPerformanceServerTiming :: Maybe PerformanceServerTiming
noPerformanceServerTiming = Nothing
{-# INLINE noPerformanceServerTiming #-}

gTypePerformanceServerTiming :: JSM GType
gTypePerformanceServerTiming = GType . Object <$> jsg "PerformanceServerTiming"

-- | Functions for this interface are in "JSDOM.PerformanceTiming" (navigation-timing-2).
newtype PerformanceTiming = PerformanceTiming { unPerformanceTiming :: JSVal }

instance PToJSVal PerformanceTiming where
  pToJSVal = unPerformanceTiming
  {-# INLINE pToJSVal #-}

instance PFromJSVal PerformanceTiming where
  pFromJSVal = PerformanceTiming
  {-# INLINE pFromJSVal #-}

instance ToJSVal PerformanceTiming where
  toJSVal = return . unPerformanceTiming
  {-# INLINE toJSVal #-}

instance FromJSVal PerformanceTiming where
  fromJSVal v = fmap PerformanceTiming <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PerformanceTiming
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PerformanceTiming where
  makeObject = makeObject . unPerformanceTiming


instance IsGObject PerformanceTiming where
  typeGType _ = gTypePerformanceTiming
  {-# INLINE typeGType #-}

noPerformanceTiming :: Maybe PerformanceTiming
noPerformanceTiming = Nothing
{-# INLINE noPerformanceTiming #-}

gTypePerformanceTiming :: JSM GType
gTypePerformanceTiming = GType . Object <$> jsg "PerformanceTiming"

-- | Functions for this interface are in "JSDOM.PeriodicWave" (webaudio-1.1).
newtype PeriodicWave = PeriodicWave { unPeriodicWave :: JSVal }

instance PToJSVal PeriodicWave where
  pToJSVal = unPeriodicWave
  {-# INLINE pToJSVal #-}

instance PFromJSVal PeriodicWave where
  pFromJSVal = PeriodicWave
  {-# INLINE pFromJSVal #-}

instance ToJSVal PeriodicWave where
  toJSVal = return . unPeriodicWave
  {-# INLINE toJSVal #-}

instance FromJSVal PeriodicWave where
  fromJSVal v = fmap PeriodicWave <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PeriodicWave
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PeriodicWave where
  makeObject = makeObject . unPeriodicWave


instance IsGObject PeriodicWave where
  typeGType _ = gTypePeriodicWave
  {-# INLINE typeGType #-}

noPeriodicWave :: Maybe PeriodicWave
noPeriodicWave = Nothing
{-# INLINE noPeriodicWave #-}

gTypePeriodicWave :: JSM GType
gTypePeriodicWave = GType . Object <$> jsg "PeriodicWave"

-- | Dictionary PeriodicWaveConstraints (webaudio-1.1)
newtype PeriodicWaveConstraints = PeriodicWaveConstraints { unPeriodicWaveConstraints :: JSVal }

instance PToJSVal PeriodicWaveConstraints where
  pToJSVal = unPeriodicWaveConstraints
  {-# INLINE pToJSVal #-}

instance PFromJSVal PeriodicWaveConstraints where
  pFromJSVal = PeriodicWaveConstraints
  {-# INLINE pFromJSVal #-}

instance ToJSVal PeriodicWaveConstraints where
  toJSVal = return . unPeriodicWaveConstraints
  {-# INLINE toJSVal #-}

instance FromJSVal PeriodicWaveConstraints where
  fromJSVal v = fmap PeriodicWaveConstraints <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PeriodicWaveConstraints
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PeriodicWaveConstraints where
  makeObject = makeObject . unPeriodicWaveConstraints

class (IsGObject o) => IsPeriodicWaveConstraints o
toPeriodicWaveConstraints :: IsPeriodicWaveConstraints o => o -> PeriodicWaveConstraints
toPeriodicWaveConstraints = PeriodicWaveConstraints . coerce

instance IsPeriodicWaveConstraints PeriodicWaveConstraints

instance IsGObject PeriodicWaveConstraints where
  typeGType _ = gTypePeriodicWaveConstraints
  {-# INLINE typeGType #-}

noPeriodicWaveConstraints :: Maybe PeriodicWaveConstraints
noPeriodicWaveConstraints = Nothing
{-# INLINE noPeriodicWaveConstraints #-}

gTypePeriodicWaveConstraints :: JSM GType
gTypePeriodicWaveConstraints = GType . Object <$> jsg "Object"

-- | Dictionary PeriodicWaveOptions (webaudio-1.1)
newtype PeriodicWaveOptions = PeriodicWaveOptions { unPeriodicWaveOptions :: JSVal }

instance PToJSVal PeriodicWaveOptions where
  pToJSVal = unPeriodicWaveOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal PeriodicWaveOptions where
  pFromJSVal = PeriodicWaveOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal PeriodicWaveOptions where
  toJSVal = return . unPeriodicWaveOptions
  {-# INLINE toJSVal #-}

instance FromJSVal PeriodicWaveOptions where
  fromJSVal v = fmap PeriodicWaveOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PeriodicWaveOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PeriodicWaveOptions where
  makeObject = makeObject . unPeriodicWaveOptions

instance IsPeriodicWaveConstraints PeriodicWaveOptions

instance IsGObject PeriodicWaveOptions where
  typeGType _ = gTypePeriodicWaveOptions
  {-# INLINE typeGType #-}

noPeriodicWaveOptions :: Maybe PeriodicWaveOptions
noPeriodicWaveOptions = Nothing
{-# INLINE noPeriodicWaveOptions #-}

gTypePeriodicWaveOptions :: JSM GType
gTypePeriodicWaveOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PermissionStatus" (permissions).
newtype PermissionStatus = PermissionStatus { unPermissionStatus :: JSVal }

instance PToJSVal PermissionStatus where
  pToJSVal = unPermissionStatus
  {-# INLINE pToJSVal #-}

instance PFromJSVal PermissionStatus where
  pFromJSVal = PermissionStatus
  {-# INLINE pFromJSVal #-}

instance ToJSVal PermissionStatus where
  toJSVal = return . unPermissionStatus
  {-# INLINE toJSVal #-}

instance FromJSVal PermissionStatus where
  fromJSVal v = fmap PermissionStatus <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PermissionStatus
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PermissionStatus where
  makeObject = makeObject . unPermissionStatus

instance IsEventTarget PermissionStatus

instance IsGObject PermissionStatus where
  typeGType _ = gTypePermissionStatus
  {-# INLINE typeGType #-}

noPermissionStatus :: Maybe PermissionStatus
noPermissionStatus = Nothing
{-# INLINE noPermissionStatus #-}

gTypePermissionStatus :: JSM GType
gTypePermissionStatus = GType . Object <$> jsg "PermissionStatus"

-- | Functions for this interface are in "JSDOM.Permissions" (permissions).
newtype Permissions = Permissions { unPermissions :: JSVal }

instance PToJSVal Permissions where
  pToJSVal = unPermissions
  {-# INLINE pToJSVal #-}

instance PFromJSVal Permissions where
  pFromJSVal = Permissions
  {-# INLINE pFromJSVal #-}

instance ToJSVal Permissions where
  toJSVal = return . unPermissions
  {-# INLINE toJSVal #-}

instance FromJSVal Permissions where
  fromJSVal v = fmap Permissions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Permissions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Permissions where
  makeObject = makeObject . unPermissions


instance IsGObject Permissions where
  typeGType _ = gTypePermissions
  {-# INLINE typeGType #-}

noPermissions :: Maybe Permissions
noPermissions = Nothing
{-# INLINE noPermissions #-}

gTypePermissions :: JSM GType
gTypePermissions = GType . Object <$> jsg "Permissions"

-- | Dictionary PhotoCapabilities (image-capture)
newtype PhotoCapabilities = PhotoCapabilities { unPhotoCapabilities :: JSVal }

instance PToJSVal PhotoCapabilities where
  pToJSVal = unPhotoCapabilities
  {-# INLINE pToJSVal #-}

instance PFromJSVal PhotoCapabilities where
  pFromJSVal = PhotoCapabilities
  {-# INLINE pFromJSVal #-}

instance ToJSVal PhotoCapabilities where
  toJSVal = return . unPhotoCapabilities
  {-# INLINE toJSVal #-}

instance FromJSVal PhotoCapabilities where
  fromJSVal v = fmap PhotoCapabilities <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PhotoCapabilities
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PhotoCapabilities where
  makeObject = makeObject . unPhotoCapabilities


instance IsGObject PhotoCapabilities where
  typeGType _ = gTypePhotoCapabilities
  {-# INLINE typeGType #-}

noPhotoCapabilities :: Maybe PhotoCapabilities
noPhotoCapabilities = Nothing
{-# INLINE noPhotoCapabilities #-}

gTypePhotoCapabilities :: JSM GType
gTypePhotoCapabilities = GType . Object <$> jsg "Object"

-- | Dictionary PhotoSettings (image-capture)
newtype PhotoSettings = PhotoSettings { unPhotoSettings :: JSVal }

instance PToJSVal PhotoSettings where
  pToJSVal = unPhotoSettings
  {-# INLINE pToJSVal #-}

instance PFromJSVal PhotoSettings where
  pFromJSVal = PhotoSettings
  {-# INLINE pFromJSVal #-}

instance ToJSVal PhotoSettings where
  toJSVal = return . unPhotoSettings
  {-# INLINE toJSVal #-}

instance FromJSVal PhotoSettings where
  fromJSVal v = fmap PhotoSettings <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PhotoSettings
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PhotoSettings where
  makeObject = makeObject . unPhotoSettings


instance IsGObject PhotoSettings where
  typeGType _ = gTypePhotoSettings
  {-# INLINE typeGType #-}

noPhotoSettings :: Maybe PhotoSettings
noPhotoSettings = Nothing
{-# INLINE noPhotoSettings #-}

gTypePhotoSettings :: JSM GType
gTypePhotoSettings = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PictureInPictureEvent" (picture-in-picture).
newtype PictureInPictureEvent = PictureInPictureEvent { unPictureInPictureEvent :: JSVal }

instance PToJSVal PictureInPictureEvent where
  pToJSVal = unPictureInPictureEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal PictureInPictureEvent where
  pFromJSVal = PictureInPictureEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal PictureInPictureEvent where
  toJSVal = return . unPictureInPictureEvent
  {-# INLINE toJSVal #-}

instance FromJSVal PictureInPictureEvent where
  fromJSVal v = fmap PictureInPictureEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PictureInPictureEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PictureInPictureEvent where
  makeObject = makeObject . unPictureInPictureEvent

instance IsEvent PictureInPictureEvent

instance IsGObject PictureInPictureEvent where
  typeGType _ = gTypePictureInPictureEvent
  {-# INLINE typeGType #-}

noPictureInPictureEvent :: Maybe PictureInPictureEvent
noPictureInPictureEvent = Nothing
{-# INLINE noPictureInPictureEvent #-}

gTypePictureInPictureEvent :: JSM GType
gTypePictureInPictureEvent = GType . Object <$> jsg "PictureInPictureEvent"

-- | Dictionary PictureInPictureEventInit (picture-in-picture)
newtype PictureInPictureEventInit = PictureInPictureEventInit { unPictureInPictureEventInit :: JSVal }

instance PToJSVal PictureInPictureEventInit where
  pToJSVal = unPictureInPictureEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PictureInPictureEventInit where
  pFromJSVal = PictureInPictureEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PictureInPictureEventInit where
  toJSVal = return . unPictureInPictureEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal PictureInPictureEventInit where
  fromJSVal v = fmap PictureInPictureEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PictureInPictureEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PictureInPictureEventInit where
  makeObject = makeObject . unPictureInPictureEventInit

instance IsEventInit PictureInPictureEventInit

instance IsGObject PictureInPictureEventInit where
  typeGType _ = gTypePictureInPictureEventInit
  {-# INLINE typeGType #-}

noPictureInPictureEventInit :: Maybe PictureInPictureEventInit
noPictureInPictureEventInit = Nothing
{-# INLINE noPictureInPictureEventInit #-}

gTypePictureInPictureEventInit :: JSM GType
gTypePictureInPictureEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PictureInPictureWindow" (picture-in-picture).
newtype PictureInPictureWindow = PictureInPictureWindow { unPictureInPictureWindow :: JSVal }

instance PToJSVal PictureInPictureWindow where
  pToJSVal = unPictureInPictureWindow
  {-# INLINE pToJSVal #-}

instance PFromJSVal PictureInPictureWindow where
  pFromJSVal = PictureInPictureWindow
  {-# INLINE pFromJSVal #-}

instance ToJSVal PictureInPictureWindow where
  toJSVal = return . unPictureInPictureWindow
  {-# INLINE toJSVal #-}

instance FromJSVal PictureInPictureWindow where
  fromJSVal v = fmap PictureInPictureWindow <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PictureInPictureWindow
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PictureInPictureWindow where
  makeObject = makeObject . unPictureInPictureWindow

instance IsEventTarget PictureInPictureWindow

instance IsGObject PictureInPictureWindow where
  typeGType _ = gTypePictureInPictureWindow
  {-# INLINE typeGType #-}

noPictureInPictureWindow :: Maybe PictureInPictureWindow
noPictureInPictureWindow = Nothing
{-# INLINE noPictureInPictureWindow #-}

gTypePictureInPictureWindow :: JSM GType
gTypePictureInPictureWindow = GType . Object <$> jsg "PictureInPictureWindow"

-- | Dictionary PlaneLayout (webcodecs)
newtype PlaneLayout = PlaneLayout { unPlaneLayout :: JSVal }

instance PToJSVal PlaneLayout where
  pToJSVal = unPlaneLayout
  {-# INLINE pToJSVal #-}

instance PFromJSVal PlaneLayout where
  pFromJSVal = PlaneLayout
  {-# INLINE pFromJSVal #-}

instance ToJSVal PlaneLayout where
  toJSVal = return . unPlaneLayout
  {-# INLINE toJSVal #-}

instance FromJSVal PlaneLayout where
  fromJSVal v = fmap PlaneLayout <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PlaneLayout
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PlaneLayout where
  makeObject = makeObject . unPlaneLayout


instance IsGObject PlaneLayout where
  typeGType _ = gTypePlaneLayout
  {-# INLINE typeGType #-}

noPlaneLayout :: Maybe PlaneLayout
noPlaneLayout = Nothing
{-# INLINE noPlaneLayout #-}

gTypePlaneLayout :: JSM GType
gTypePlaneLayout = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Plugin" (html).
newtype Plugin = Plugin { unPlugin :: JSVal }

instance PToJSVal Plugin where
  pToJSVal = unPlugin
  {-# INLINE pToJSVal #-}

instance PFromJSVal Plugin where
  pFromJSVal = Plugin
  {-# INLINE pFromJSVal #-}

instance ToJSVal Plugin where
  toJSVal = return . unPlugin
  {-# INLINE toJSVal #-}

instance FromJSVal Plugin where
  fromJSVal v = fmap Plugin <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Plugin
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Plugin where
  makeObject = makeObject . unPlugin


instance IsGObject Plugin where
  typeGType _ = gTypePlugin
  {-# INLINE typeGType #-}

noPlugin :: Maybe Plugin
noPlugin = Nothing
{-# INLINE noPlugin #-}

gTypePlugin :: JSM GType
gTypePlugin = GType . Object <$> jsg "Plugin"

-- | Functions for this interface are in "JSDOM.PluginArray" (html).
newtype PluginArray = PluginArray { unPluginArray :: JSVal }

instance PToJSVal PluginArray where
  pToJSVal = unPluginArray
  {-# INLINE pToJSVal #-}

instance PFromJSVal PluginArray where
  pFromJSVal = PluginArray
  {-# INLINE pFromJSVal #-}

instance ToJSVal PluginArray where
  toJSVal = return . unPluginArray
  {-# INLINE toJSVal #-}

instance FromJSVal PluginArray where
  fromJSVal v = fmap PluginArray <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PluginArray
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PluginArray where
  makeObject = makeObject . unPluginArray


instance IsGObject PluginArray where
  typeGType _ = gTypePluginArray
  {-# INLINE typeGType #-}

noPluginArray :: Maybe PluginArray
noPluginArray = Nothing
{-# INLINE noPluginArray #-}

gTypePluginArray :: JSM GType
gTypePluginArray = GType . Object <$> jsg "PluginArray"

-- | Dictionary Point2D (image-capture)
newtype Point2D = Point2D { unPoint2D :: JSVal }

instance PToJSVal Point2D where
  pToJSVal = unPoint2D
  {-# INLINE pToJSVal #-}

instance PFromJSVal Point2D where
  pFromJSVal = Point2D
  {-# INLINE pFromJSVal #-}

instance ToJSVal Point2D where
  toJSVal = return . unPoint2D
  {-# INLINE toJSVal #-}

instance FromJSVal Point2D where
  fromJSVal v = fmap Point2D <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Point2D
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Point2D where
  makeObject = makeObject . unPoint2D


instance IsGObject Point2D where
  typeGType _ = gTypePoint2D
  {-# INLINE typeGType #-}

noPoint2D :: Maybe Point2D
noPoint2D = Nothing
{-# INLINE noPoint2D #-}

gTypePoint2D :: JSM GType
gTypePoint2D = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PointerEvent" (pointerevents4).
newtype PointerEvent = PointerEvent { unPointerEvent :: JSVal }

instance PToJSVal PointerEvent where
  pToJSVal = unPointerEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal PointerEvent where
  pFromJSVal = PointerEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal PointerEvent where
  toJSVal = return . unPointerEvent
  {-# INLINE toJSVal #-}

instance FromJSVal PointerEvent where
  fromJSVal v = fmap PointerEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PointerEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PointerEvent where
  makeObject = makeObject . unPointerEvent

instance IsMouseEvent PointerEvent
instance IsUIEvent PointerEvent
instance IsEvent PointerEvent

instance IsGObject PointerEvent where
  typeGType _ = gTypePointerEvent
  {-# INLINE typeGType #-}

noPointerEvent :: Maybe PointerEvent
noPointerEvent = Nothing
{-# INLINE noPointerEvent #-}

gTypePointerEvent :: JSM GType
gTypePointerEvent = GType . Object <$> jsg "PointerEvent"

-- | Dictionary PointerEventInit (pointerevents4)
newtype PointerEventInit = PointerEventInit { unPointerEventInit :: JSVal }

instance PToJSVal PointerEventInit where
  pToJSVal = unPointerEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PointerEventInit where
  pFromJSVal = PointerEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PointerEventInit where
  toJSVal = return . unPointerEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal PointerEventInit where
  fromJSVal v = fmap PointerEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PointerEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PointerEventInit where
  makeObject = makeObject . unPointerEventInit

instance IsMouseEventInit PointerEventInit
instance IsEventModifierInit PointerEventInit
instance IsUIEventInit PointerEventInit
instance IsEventInit PointerEventInit

instance IsGObject PointerEventInit where
  typeGType _ = gTypePointerEventInit
  {-# INLINE typeGType #-}

noPointerEventInit :: Maybe PointerEventInit
noPointerEventInit = Nothing
{-# INLINE noPointerEventInit #-}

gTypePointerEventInit :: JSM GType
gTypePointerEventInit = GType . Object <$> jsg "Object"

-- | Dictionary PointerLockOptions (pointerlock-2)
newtype PointerLockOptions = PointerLockOptions { unPointerLockOptions :: JSVal }

instance PToJSVal PointerLockOptions where
  pToJSVal = unPointerLockOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal PointerLockOptions where
  pFromJSVal = PointerLockOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal PointerLockOptions where
  toJSVal = return . unPointerLockOptions
  {-# INLINE toJSVal #-}

instance FromJSVal PointerLockOptions where
  fromJSVal v = fmap PointerLockOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PointerLockOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PointerLockOptions where
  makeObject = makeObject . unPointerLockOptions


instance IsGObject PointerLockOptions where
  typeGType _ = gTypePointerLockOptions
  {-# INLINE typeGType #-}

noPointerLockOptions :: Maybe PointerLockOptions
noPointerLockOptions = Nothing
{-# INLINE noPointerLockOptions #-}

gTypePointerLockOptions :: JSM GType
gTypePointerLockOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PopStateEvent" (html).
newtype PopStateEvent = PopStateEvent { unPopStateEvent :: JSVal }

instance PToJSVal PopStateEvent where
  pToJSVal = unPopStateEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal PopStateEvent where
  pFromJSVal = PopStateEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal PopStateEvent where
  toJSVal = return . unPopStateEvent
  {-# INLINE toJSVal #-}

instance FromJSVal PopStateEvent where
  fromJSVal v = fmap PopStateEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PopStateEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PopStateEvent where
  makeObject = makeObject . unPopStateEvent

instance IsEvent PopStateEvent

instance IsGObject PopStateEvent where
  typeGType _ = gTypePopStateEvent
  {-# INLINE typeGType #-}

noPopStateEvent :: Maybe PopStateEvent
noPopStateEvent = Nothing
{-# INLINE noPopStateEvent #-}

gTypePopStateEvent :: JSM GType
gTypePopStateEvent = GType . Object <$> jsg "PopStateEvent"

-- | Dictionary PopStateEventInit (html)
newtype PopStateEventInit = PopStateEventInit { unPopStateEventInit :: JSVal }

instance PToJSVal PopStateEventInit where
  pToJSVal = unPopStateEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PopStateEventInit where
  pFromJSVal = PopStateEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PopStateEventInit where
  toJSVal = return . unPopStateEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal PopStateEventInit where
  fromJSVal v = fmap PopStateEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PopStateEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PopStateEventInit where
  makeObject = makeObject . unPopStateEventInit

instance IsEventInit PopStateEventInit

instance IsGObject PopStateEventInit where
  typeGType _ = gTypePopStateEventInit
  {-# INLINE typeGType #-}

noPopStateEventInit :: Maybe PopStateEventInit
noPopStateEventInit = Nothing
{-# INLINE noPopStateEventInit #-}

gTypePopStateEventInit :: JSM GType
gTypePopStateEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PopoverTargetAttributes" (html).
newtype PopoverTargetAttributes = PopoverTargetAttributes { unPopoverTargetAttributes :: JSVal }

instance PToJSVal PopoverTargetAttributes where
  pToJSVal = unPopoverTargetAttributes
  {-# INLINE pToJSVal #-}

instance PFromJSVal PopoverTargetAttributes where
  pFromJSVal = PopoverTargetAttributes
  {-# INLINE pFromJSVal #-}

instance ToJSVal PopoverTargetAttributes where
  toJSVal = return . unPopoverTargetAttributes
  {-# INLINE toJSVal #-}

instance FromJSVal PopoverTargetAttributes where
  fromJSVal v = fmap PopoverTargetAttributes <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PopoverTargetAttributes
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PopoverTargetAttributes where
  makeObject = makeObject . unPopoverTargetAttributes

class (IsGObject o) => IsPopoverTargetAttributes o
toPopoverTargetAttributes :: IsPopoverTargetAttributes o => o -> PopoverTargetAttributes
toPopoverTargetAttributes = PopoverTargetAttributes . coerce

instance IsPopoverTargetAttributes PopoverTargetAttributes

instance IsGObject PopoverTargetAttributes where
  typeGType _ = gTypePopoverTargetAttributes
  {-# INLINE typeGType #-}

noPopoverTargetAttributes :: Maybe PopoverTargetAttributes
noPopoverTargetAttributes = Nothing
{-# INLINE noPopoverTargetAttributes #-}

gTypePopoverTargetAttributes :: JSM GType
gTypePopoverTargetAttributes = GType . Object <$> jsg "Object"

-- | Dictionary PositionOptions (geolocation)
newtype PositionOptions = PositionOptions { unPositionOptions :: JSVal }

instance PToJSVal PositionOptions where
  pToJSVal = unPositionOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal PositionOptions where
  pFromJSVal = PositionOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal PositionOptions where
  toJSVal = return . unPositionOptions
  {-# INLINE toJSVal #-}

instance FromJSVal PositionOptions where
  fromJSVal v = fmap PositionOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PositionOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PositionOptions where
  makeObject = makeObject . unPositionOptions


instance IsGObject PositionOptions where
  typeGType _ = gTypePositionOptions
  {-# INLINE typeGType #-}

noPositionOptions :: Maybe PositionOptions
noPositionOptions = Nothing
{-# INLINE noPositionOptions #-}

gTypePositionOptions :: JSM GType
gTypePositionOptions = GType . Object <$> jsg "Object"

-- | Dictionary PrivateToken (trust-token-api)
newtype PrivateToken = PrivateToken { unPrivateToken :: JSVal }

instance PToJSVal PrivateToken where
  pToJSVal = unPrivateToken
  {-# INLINE pToJSVal #-}

instance PFromJSVal PrivateToken where
  pFromJSVal = PrivateToken
  {-# INLINE pFromJSVal #-}

instance ToJSVal PrivateToken where
  toJSVal = return . unPrivateToken
  {-# INLINE toJSVal #-}

instance FromJSVal PrivateToken where
  fromJSVal v = fmap PrivateToken <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PrivateToken
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PrivateToken where
  makeObject = makeObject . unPrivateToken


instance IsGObject PrivateToken where
  typeGType _ = gTypePrivateToken
  {-# INLINE typeGType #-}

noPrivateToken :: Maybe PrivateToken
noPrivateToken = Nothing
{-# INLINE noPrivateToken #-}

gTypePrivateToken :: JSM GType
gTypePrivateToken = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ProcessingInstruction" (dom).
newtype ProcessingInstruction = ProcessingInstruction { unProcessingInstruction :: JSVal }

instance PToJSVal ProcessingInstruction where
  pToJSVal = unProcessingInstruction
  {-# INLINE pToJSVal #-}

instance PFromJSVal ProcessingInstruction where
  pFromJSVal = ProcessingInstruction
  {-# INLINE pFromJSVal #-}

instance ToJSVal ProcessingInstruction where
  toJSVal = return . unProcessingInstruction
  {-# INLINE toJSVal #-}

instance FromJSVal ProcessingInstruction where
  fromJSVal v = fmap ProcessingInstruction <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ProcessingInstruction
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ProcessingInstruction where
  makeObject = makeObject . unProcessingInstruction

instance IsLinkStyle ProcessingInstruction
instance IsCharacterData ProcessingInstruction
instance IsChildNode ProcessingInstruction
instance IsNonDocumentTypeChildNode ProcessingInstruction
instance IsNode ProcessingInstruction
instance IsEventTarget ProcessingInstruction

instance IsGObject ProcessingInstruction where
  typeGType _ = gTypeProcessingInstruction
  {-# INLINE typeGType #-}

noProcessingInstruction :: Maybe ProcessingInstruction
noProcessingInstruction = Nothing
{-# INLINE noProcessingInstruction #-}

gTypeProcessingInstruction :: JSM GType
gTypeProcessingInstruction = GType . Object <$> jsg "ProcessingInstruction"

-- | Functions for this interface are in "JSDOM.ProgressEvent" (xhr).
newtype ProgressEvent = ProgressEvent { unProgressEvent :: JSVal }

instance PToJSVal ProgressEvent where
  pToJSVal = unProgressEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal ProgressEvent where
  pFromJSVal = ProgressEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal ProgressEvent where
  toJSVal = return . unProgressEvent
  {-# INLINE toJSVal #-}

instance FromJSVal ProgressEvent where
  fromJSVal v = fmap ProgressEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ProgressEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ProgressEvent where
  makeObject = makeObject . unProgressEvent

instance IsEvent ProgressEvent

instance IsGObject ProgressEvent where
  typeGType _ = gTypeProgressEvent
  {-# INLINE typeGType #-}

noProgressEvent :: Maybe ProgressEvent
noProgressEvent = Nothing
{-# INLINE noProgressEvent #-}

gTypeProgressEvent :: JSM GType
gTypeProgressEvent = GType . Object <$> jsg "ProgressEvent"

-- | Dictionary ProgressEventInit (xhr)
newtype ProgressEventInit = ProgressEventInit { unProgressEventInit :: JSVal }

instance PToJSVal ProgressEventInit where
  pToJSVal = unProgressEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal ProgressEventInit where
  pFromJSVal = ProgressEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal ProgressEventInit where
  toJSVal = return . unProgressEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal ProgressEventInit where
  fromJSVal v = fmap ProgressEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ProgressEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ProgressEventInit where
  makeObject = makeObject . unProgressEventInit

instance IsEventInit ProgressEventInit

instance IsGObject ProgressEventInit where
  typeGType _ = gTypeProgressEventInit
  {-# INLINE typeGType #-}

noProgressEventInit :: Maybe ProgressEventInit
noProgressEventInit = Nothing
{-# INLINE noProgressEventInit #-}

gTypeProgressEventInit :: JSM GType
gTypeProgressEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PromiseRejectionEvent" (html).
newtype PromiseRejectionEvent = PromiseRejectionEvent { unPromiseRejectionEvent :: JSVal }

instance PToJSVal PromiseRejectionEvent where
  pToJSVal = unPromiseRejectionEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal PromiseRejectionEvent where
  pFromJSVal = PromiseRejectionEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal PromiseRejectionEvent where
  toJSVal = return . unPromiseRejectionEvent
  {-# INLINE toJSVal #-}

instance FromJSVal PromiseRejectionEvent where
  fromJSVal v = fmap PromiseRejectionEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PromiseRejectionEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PromiseRejectionEvent where
  makeObject = makeObject . unPromiseRejectionEvent

instance IsEvent PromiseRejectionEvent

instance IsGObject PromiseRejectionEvent where
  typeGType _ = gTypePromiseRejectionEvent
  {-# INLINE typeGType #-}

noPromiseRejectionEvent :: Maybe PromiseRejectionEvent
noPromiseRejectionEvent = Nothing
{-# INLINE noPromiseRejectionEvent #-}

gTypePromiseRejectionEvent :: JSM GType
gTypePromiseRejectionEvent = GType . Object <$> jsg "PromiseRejectionEvent"

-- | Dictionary PromiseRejectionEventInit (html)
newtype PromiseRejectionEventInit = PromiseRejectionEventInit { unPromiseRejectionEventInit :: JSVal }

instance PToJSVal PromiseRejectionEventInit where
  pToJSVal = unPromiseRejectionEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PromiseRejectionEventInit where
  pFromJSVal = PromiseRejectionEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PromiseRejectionEventInit where
  toJSVal = return . unPromiseRejectionEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal PromiseRejectionEventInit where
  fromJSVal v = fmap PromiseRejectionEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PromiseRejectionEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PromiseRejectionEventInit where
  makeObject = makeObject . unPromiseRejectionEventInit

instance IsEventInit PromiseRejectionEventInit

instance IsGObject PromiseRejectionEventInit where
  typeGType _ = gTypePromiseRejectionEventInit
  {-# INLINE typeGType #-}

noPromiseRejectionEventInit :: Maybe PromiseRejectionEventInit
noPromiseRejectionEventInit = Nothing
{-# INLINE noPromiseRejectionEventInit #-}

gTypePromiseRejectionEventInit :: JSM GType
gTypePromiseRejectionEventInit = GType . Object <$> jsg "Object"

-- | Dictionary PropertyDefinition (css-properties-values-api-1)
newtype PropertyDefinition = PropertyDefinition { unPropertyDefinition :: JSVal }

instance PToJSVal PropertyDefinition where
  pToJSVal = unPropertyDefinition
  {-# INLINE pToJSVal #-}

instance PFromJSVal PropertyDefinition where
  pFromJSVal = PropertyDefinition
  {-# INLINE pFromJSVal #-}

instance ToJSVal PropertyDefinition where
  toJSVal = return . unPropertyDefinition
  {-# INLINE toJSVal #-}

instance FromJSVal PropertyDefinition where
  fromJSVal v = fmap PropertyDefinition <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PropertyDefinition
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PropertyDefinition where
  makeObject = makeObject . unPropertyDefinition


instance IsGObject PropertyDefinition where
  typeGType _ = gTypePropertyDefinition
  {-# INLINE typeGType #-}

noPropertyDefinition :: Maybe PropertyDefinition
noPropertyDefinition = Nothing
{-# INLINE noPropertyDefinition #-}

gTypePropertyDefinition :: JSM GType
gTypePropertyDefinition = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PublicKeyCredential" (webauthn-4).
newtype PublicKeyCredential = PublicKeyCredential { unPublicKeyCredential :: JSVal }

instance PToJSVal PublicKeyCredential where
  pToJSVal = unPublicKeyCredential
  {-# INLINE pToJSVal #-}

instance PFromJSVal PublicKeyCredential where
  pFromJSVal = PublicKeyCredential
  {-# INLINE pFromJSVal #-}

instance ToJSVal PublicKeyCredential where
  toJSVal = return . unPublicKeyCredential
  {-# INLINE toJSVal #-}

instance FromJSVal PublicKeyCredential where
  fromJSVal v = fmap PublicKeyCredential <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PublicKeyCredential
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PublicKeyCredential where
  makeObject = makeObject . unPublicKeyCredential

instance IsCredential PublicKeyCredential

instance IsGObject PublicKeyCredential where
  typeGType _ = gTypePublicKeyCredential
  {-# INLINE typeGType #-}

noPublicKeyCredential :: Maybe PublicKeyCredential
noPublicKeyCredential = Nothing
{-# INLINE noPublicKeyCredential #-}

gTypePublicKeyCredential :: JSM GType
gTypePublicKeyCredential = GType . Object <$> jsg "PublicKeyCredential"

-- | Dictionary PublicKeyCredentialCreationOptions (webauthn-4)
newtype PublicKeyCredentialCreationOptions = PublicKeyCredentialCreationOptions { unPublicKeyCredentialCreationOptions :: JSVal }

instance PToJSVal PublicKeyCredentialCreationOptions where
  pToJSVal = unPublicKeyCredentialCreationOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal PublicKeyCredentialCreationOptions where
  pFromJSVal = PublicKeyCredentialCreationOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal PublicKeyCredentialCreationOptions where
  toJSVal = return . unPublicKeyCredentialCreationOptions
  {-# INLINE toJSVal #-}

instance FromJSVal PublicKeyCredentialCreationOptions where
  fromJSVal v = fmap PublicKeyCredentialCreationOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PublicKeyCredentialCreationOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PublicKeyCredentialCreationOptions where
  makeObject = makeObject . unPublicKeyCredentialCreationOptions


instance IsGObject PublicKeyCredentialCreationOptions where
  typeGType _ = gTypePublicKeyCredentialCreationOptions
  {-# INLINE typeGType #-}

noPublicKeyCredentialCreationOptions :: Maybe PublicKeyCredentialCreationOptions
noPublicKeyCredentialCreationOptions = Nothing
{-# INLINE noPublicKeyCredentialCreationOptions #-}

gTypePublicKeyCredentialCreationOptions :: JSM GType
gTypePublicKeyCredentialCreationOptions = GType . Object <$> jsg "Object"

-- | Dictionary PublicKeyCredentialCreationOptionsJSON (webauthn-4)
newtype PublicKeyCredentialCreationOptionsJSON = PublicKeyCredentialCreationOptionsJSON { unPublicKeyCredentialCreationOptionsJSON :: JSVal }

instance PToJSVal PublicKeyCredentialCreationOptionsJSON where
  pToJSVal = unPublicKeyCredentialCreationOptionsJSON
  {-# INLINE pToJSVal #-}

instance PFromJSVal PublicKeyCredentialCreationOptionsJSON where
  pFromJSVal = PublicKeyCredentialCreationOptionsJSON
  {-# INLINE pFromJSVal #-}

instance ToJSVal PublicKeyCredentialCreationOptionsJSON where
  toJSVal = return . unPublicKeyCredentialCreationOptionsJSON
  {-# INLINE toJSVal #-}

instance FromJSVal PublicKeyCredentialCreationOptionsJSON where
  fromJSVal v = fmap PublicKeyCredentialCreationOptionsJSON <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PublicKeyCredentialCreationOptionsJSON
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PublicKeyCredentialCreationOptionsJSON where
  makeObject = makeObject . unPublicKeyCredentialCreationOptionsJSON


instance IsGObject PublicKeyCredentialCreationOptionsJSON where
  typeGType _ = gTypePublicKeyCredentialCreationOptionsJSON
  {-# INLINE typeGType #-}

noPublicKeyCredentialCreationOptionsJSON :: Maybe PublicKeyCredentialCreationOptionsJSON
noPublicKeyCredentialCreationOptionsJSON = Nothing
{-# INLINE noPublicKeyCredentialCreationOptionsJSON #-}

gTypePublicKeyCredentialCreationOptionsJSON :: JSM GType
gTypePublicKeyCredentialCreationOptionsJSON = GType . Object <$> jsg "Object"

-- | Dictionary PublicKeyCredentialDescriptor (webauthn-4)
newtype PublicKeyCredentialDescriptor = PublicKeyCredentialDescriptor { unPublicKeyCredentialDescriptor :: JSVal }

instance PToJSVal PublicKeyCredentialDescriptor where
  pToJSVal = unPublicKeyCredentialDescriptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal PublicKeyCredentialDescriptor where
  pFromJSVal = PublicKeyCredentialDescriptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal PublicKeyCredentialDescriptor where
  toJSVal = return . unPublicKeyCredentialDescriptor
  {-# INLINE toJSVal #-}

instance FromJSVal PublicKeyCredentialDescriptor where
  fromJSVal v = fmap PublicKeyCredentialDescriptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PublicKeyCredentialDescriptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PublicKeyCredentialDescriptor where
  makeObject = makeObject . unPublicKeyCredentialDescriptor


instance IsGObject PublicKeyCredentialDescriptor where
  typeGType _ = gTypePublicKeyCredentialDescriptor
  {-# INLINE typeGType #-}

noPublicKeyCredentialDescriptor :: Maybe PublicKeyCredentialDescriptor
noPublicKeyCredentialDescriptor = Nothing
{-# INLINE noPublicKeyCredentialDescriptor #-}

gTypePublicKeyCredentialDescriptor :: JSM GType
gTypePublicKeyCredentialDescriptor = GType . Object <$> jsg "Object"

-- | Dictionary PublicKeyCredentialDescriptorJSON (webauthn-4)
newtype PublicKeyCredentialDescriptorJSON = PublicKeyCredentialDescriptorJSON { unPublicKeyCredentialDescriptorJSON :: JSVal }

instance PToJSVal PublicKeyCredentialDescriptorJSON where
  pToJSVal = unPublicKeyCredentialDescriptorJSON
  {-# INLINE pToJSVal #-}

instance PFromJSVal PublicKeyCredentialDescriptorJSON where
  pFromJSVal = PublicKeyCredentialDescriptorJSON
  {-# INLINE pFromJSVal #-}

instance ToJSVal PublicKeyCredentialDescriptorJSON where
  toJSVal = return . unPublicKeyCredentialDescriptorJSON
  {-# INLINE toJSVal #-}

instance FromJSVal PublicKeyCredentialDescriptorJSON where
  fromJSVal v = fmap PublicKeyCredentialDescriptorJSON <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PublicKeyCredentialDescriptorJSON
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PublicKeyCredentialDescriptorJSON where
  makeObject = makeObject . unPublicKeyCredentialDescriptorJSON


instance IsGObject PublicKeyCredentialDescriptorJSON where
  typeGType _ = gTypePublicKeyCredentialDescriptorJSON
  {-# INLINE typeGType #-}

noPublicKeyCredentialDescriptorJSON :: Maybe PublicKeyCredentialDescriptorJSON
noPublicKeyCredentialDescriptorJSON = Nothing
{-# INLINE noPublicKeyCredentialDescriptorJSON #-}

gTypePublicKeyCredentialDescriptorJSON :: JSM GType
gTypePublicKeyCredentialDescriptorJSON = GType . Object <$> jsg "Object"

-- | Dictionary PublicKeyCredentialEntity (webauthn-4)
newtype PublicKeyCredentialEntity = PublicKeyCredentialEntity { unPublicKeyCredentialEntity :: JSVal }

instance PToJSVal PublicKeyCredentialEntity where
  pToJSVal = unPublicKeyCredentialEntity
  {-# INLINE pToJSVal #-}

instance PFromJSVal PublicKeyCredentialEntity where
  pFromJSVal = PublicKeyCredentialEntity
  {-# INLINE pFromJSVal #-}

instance ToJSVal PublicKeyCredentialEntity where
  toJSVal = return . unPublicKeyCredentialEntity
  {-# INLINE toJSVal #-}

instance FromJSVal PublicKeyCredentialEntity where
  fromJSVal v = fmap PublicKeyCredentialEntity <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PublicKeyCredentialEntity
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PublicKeyCredentialEntity where
  makeObject = makeObject . unPublicKeyCredentialEntity

class (IsGObject o) => IsPublicKeyCredentialEntity o
toPublicKeyCredentialEntity :: IsPublicKeyCredentialEntity o => o -> PublicKeyCredentialEntity
toPublicKeyCredentialEntity = PublicKeyCredentialEntity . coerce

instance IsPublicKeyCredentialEntity PublicKeyCredentialEntity

instance IsGObject PublicKeyCredentialEntity where
  typeGType _ = gTypePublicKeyCredentialEntity
  {-# INLINE typeGType #-}

noPublicKeyCredentialEntity :: Maybe PublicKeyCredentialEntity
noPublicKeyCredentialEntity = Nothing
{-# INLINE noPublicKeyCredentialEntity #-}

gTypePublicKeyCredentialEntity :: JSM GType
gTypePublicKeyCredentialEntity = GType . Object <$> jsg "Object"

-- | Dictionary PublicKeyCredentialParameters (webauthn-4)
newtype PublicKeyCredentialParameters = PublicKeyCredentialParameters { unPublicKeyCredentialParameters :: JSVal }

instance PToJSVal PublicKeyCredentialParameters where
  pToJSVal = unPublicKeyCredentialParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal PublicKeyCredentialParameters where
  pFromJSVal = PublicKeyCredentialParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal PublicKeyCredentialParameters where
  toJSVal = return . unPublicKeyCredentialParameters
  {-# INLINE toJSVal #-}

instance FromJSVal PublicKeyCredentialParameters where
  fromJSVal v = fmap PublicKeyCredentialParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PublicKeyCredentialParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PublicKeyCredentialParameters where
  makeObject = makeObject . unPublicKeyCredentialParameters


instance IsGObject PublicKeyCredentialParameters where
  typeGType _ = gTypePublicKeyCredentialParameters
  {-# INLINE typeGType #-}

noPublicKeyCredentialParameters :: Maybe PublicKeyCredentialParameters
noPublicKeyCredentialParameters = Nothing
{-# INLINE noPublicKeyCredentialParameters #-}

gTypePublicKeyCredentialParameters :: JSM GType
gTypePublicKeyCredentialParameters = GType . Object <$> jsg "Object"

-- | Dictionary PublicKeyCredentialRequestOptions (webauthn-4)
newtype PublicKeyCredentialRequestOptions = PublicKeyCredentialRequestOptions { unPublicKeyCredentialRequestOptions :: JSVal }

instance PToJSVal PublicKeyCredentialRequestOptions where
  pToJSVal = unPublicKeyCredentialRequestOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal PublicKeyCredentialRequestOptions where
  pFromJSVal = PublicKeyCredentialRequestOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal PublicKeyCredentialRequestOptions where
  toJSVal = return . unPublicKeyCredentialRequestOptions
  {-# INLINE toJSVal #-}

instance FromJSVal PublicKeyCredentialRequestOptions where
  fromJSVal v = fmap PublicKeyCredentialRequestOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PublicKeyCredentialRequestOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PublicKeyCredentialRequestOptions where
  makeObject = makeObject . unPublicKeyCredentialRequestOptions


instance IsGObject PublicKeyCredentialRequestOptions where
  typeGType _ = gTypePublicKeyCredentialRequestOptions
  {-# INLINE typeGType #-}

noPublicKeyCredentialRequestOptions :: Maybe PublicKeyCredentialRequestOptions
noPublicKeyCredentialRequestOptions = Nothing
{-# INLINE noPublicKeyCredentialRequestOptions #-}

gTypePublicKeyCredentialRequestOptions :: JSM GType
gTypePublicKeyCredentialRequestOptions = GType . Object <$> jsg "Object"

-- | Dictionary PublicKeyCredentialRequestOptionsJSON (webauthn-4)
newtype PublicKeyCredentialRequestOptionsJSON = PublicKeyCredentialRequestOptionsJSON { unPublicKeyCredentialRequestOptionsJSON :: JSVal }

instance PToJSVal PublicKeyCredentialRequestOptionsJSON where
  pToJSVal = unPublicKeyCredentialRequestOptionsJSON
  {-# INLINE pToJSVal #-}

instance PFromJSVal PublicKeyCredentialRequestOptionsJSON where
  pFromJSVal = PublicKeyCredentialRequestOptionsJSON
  {-# INLINE pFromJSVal #-}

instance ToJSVal PublicKeyCredentialRequestOptionsJSON where
  toJSVal = return . unPublicKeyCredentialRequestOptionsJSON
  {-# INLINE toJSVal #-}

instance FromJSVal PublicKeyCredentialRequestOptionsJSON where
  fromJSVal v = fmap PublicKeyCredentialRequestOptionsJSON <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PublicKeyCredentialRequestOptionsJSON
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PublicKeyCredentialRequestOptionsJSON where
  makeObject = makeObject . unPublicKeyCredentialRequestOptionsJSON


instance IsGObject PublicKeyCredentialRequestOptionsJSON where
  typeGType _ = gTypePublicKeyCredentialRequestOptionsJSON
  {-# INLINE typeGType #-}

noPublicKeyCredentialRequestOptionsJSON :: Maybe PublicKeyCredentialRequestOptionsJSON
noPublicKeyCredentialRequestOptionsJSON = Nothing
{-# INLINE noPublicKeyCredentialRequestOptionsJSON #-}

gTypePublicKeyCredentialRequestOptionsJSON :: JSM GType
gTypePublicKeyCredentialRequestOptionsJSON = GType . Object <$> jsg "Object"

-- | Dictionary PublicKeyCredentialRpEntity (webauthn-4)
newtype PublicKeyCredentialRpEntity = PublicKeyCredentialRpEntity { unPublicKeyCredentialRpEntity :: JSVal }

instance PToJSVal PublicKeyCredentialRpEntity where
  pToJSVal = unPublicKeyCredentialRpEntity
  {-# INLINE pToJSVal #-}

instance PFromJSVal PublicKeyCredentialRpEntity where
  pFromJSVal = PublicKeyCredentialRpEntity
  {-# INLINE pFromJSVal #-}

instance ToJSVal PublicKeyCredentialRpEntity where
  toJSVal = return . unPublicKeyCredentialRpEntity
  {-# INLINE toJSVal #-}

instance FromJSVal PublicKeyCredentialRpEntity where
  fromJSVal v = fmap PublicKeyCredentialRpEntity <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PublicKeyCredentialRpEntity
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PublicKeyCredentialRpEntity where
  makeObject = makeObject . unPublicKeyCredentialRpEntity

instance IsPublicKeyCredentialEntity PublicKeyCredentialRpEntity

instance IsGObject PublicKeyCredentialRpEntity where
  typeGType _ = gTypePublicKeyCredentialRpEntity
  {-# INLINE typeGType #-}

noPublicKeyCredentialRpEntity :: Maybe PublicKeyCredentialRpEntity
noPublicKeyCredentialRpEntity = Nothing
{-# INLINE noPublicKeyCredentialRpEntity #-}

gTypePublicKeyCredentialRpEntity :: JSM GType
gTypePublicKeyCredentialRpEntity = GType . Object <$> jsg "Object"

-- | Dictionary PublicKeyCredentialUserEntity (webauthn-4)
newtype PublicKeyCredentialUserEntity = PublicKeyCredentialUserEntity { unPublicKeyCredentialUserEntity :: JSVal }

instance PToJSVal PublicKeyCredentialUserEntity where
  pToJSVal = unPublicKeyCredentialUserEntity
  {-# INLINE pToJSVal #-}

instance PFromJSVal PublicKeyCredentialUserEntity where
  pFromJSVal = PublicKeyCredentialUserEntity
  {-# INLINE pFromJSVal #-}

instance ToJSVal PublicKeyCredentialUserEntity where
  toJSVal = return . unPublicKeyCredentialUserEntity
  {-# INLINE toJSVal #-}

instance FromJSVal PublicKeyCredentialUserEntity where
  fromJSVal v = fmap PublicKeyCredentialUserEntity <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PublicKeyCredentialUserEntity
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PublicKeyCredentialUserEntity where
  makeObject = makeObject . unPublicKeyCredentialUserEntity

instance IsPublicKeyCredentialEntity PublicKeyCredentialUserEntity

instance IsGObject PublicKeyCredentialUserEntity where
  typeGType _ = gTypePublicKeyCredentialUserEntity
  {-# INLINE typeGType #-}

noPublicKeyCredentialUserEntity :: Maybe PublicKeyCredentialUserEntity
noPublicKeyCredentialUserEntity = Nothing
{-# INLINE noPublicKeyCredentialUserEntity #-}

gTypePublicKeyCredentialUserEntity :: JSM GType
gTypePublicKeyCredentialUserEntity = GType . Object <$> jsg "Object"

-- | Dictionary PublicKeyCredentialUserEntityJSON (webauthn-4)
newtype PublicKeyCredentialUserEntityJSON = PublicKeyCredentialUserEntityJSON { unPublicKeyCredentialUserEntityJSON :: JSVal }

instance PToJSVal PublicKeyCredentialUserEntityJSON where
  pToJSVal = unPublicKeyCredentialUserEntityJSON
  {-# INLINE pToJSVal #-}

instance PFromJSVal PublicKeyCredentialUserEntityJSON where
  pFromJSVal = PublicKeyCredentialUserEntityJSON
  {-# INLINE pFromJSVal #-}

instance ToJSVal PublicKeyCredentialUserEntityJSON where
  toJSVal = return . unPublicKeyCredentialUserEntityJSON
  {-# INLINE toJSVal #-}

instance FromJSVal PublicKeyCredentialUserEntityJSON where
  fromJSVal v = fmap PublicKeyCredentialUserEntityJSON <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PublicKeyCredentialUserEntityJSON
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PublicKeyCredentialUserEntityJSON where
  makeObject = makeObject . unPublicKeyCredentialUserEntityJSON


instance IsGObject PublicKeyCredentialUserEntityJSON where
  typeGType _ = gTypePublicKeyCredentialUserEntityJSON
  {-# INLINE typeGType #-}

noPublicKeyCredentialUserEntityJSON :: Maybe PublicKeyCredentialUserEntityJSON
noPublicKeyCredentialUserEntityJSON = Nothing
{-# INLINE noPublicKeyCredentialUserEntityJSON #-}

gTypePublicKeyCredentialUserEntityJSON :: JSM GType
gTypePublicKeyCredentialUserEntityJSON = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PushEvent" (push-api).
newtype PushEvent = PushEvent { unPushEvent :: JSVal }

instance PToJSVal PushEvent where
  pToJSVal = unPushEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal PushEvent where
  pFromJSVal = PushEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal PushEvent where
  toJSVal = return . unPushEvent
  {-# INLINE toJSVal #-}

instance FromJSVal PushEvent where
  fromJSVal v = fmap PushEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PushEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PushEvent where
  makeObject = makeObject . unPushEvent

instance IsExtendableEvent PushEvent
instance IsEvent PushEvent

instance IsGObject PushEvent where
  typeGType _ = gTypePushEvent
  {-# INLINE typeGType #-}

noPushEvent :: Maybe PushEvent
noPushEvent = Nothing
{-# INLINE noPushEvent #-}

gTypePushEvent :: JSM GType
gTypePushEvent = GType . Object <$> jsg "PushEvent"

-- | Dictionary PushEventInit (push-api)
newtype PushEventInit = PushEventInit { unPushEventInit :: JSVal }

instance PToJSVal PushEventInit where
  pToJSVal = unPushEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PushEventInit where
  pFromJSVal = PushEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PushEventInit where
  toJSVal = return . unPushEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal PushEventInit where
  fromJSVal v = fmap PushEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PushEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PushEventInit where
  makeObject = makeObject . unPushEventInit

instance IsExtendableEventInit PushEventInit
instance IsEventInit PushEventInit

instance IsGObject PushEventInit where
  typeGType _ = gTypePushEventInit
  {-# INLINE typeGType #-}

noPushEventInit :: Maybe PushEventInit
noPushEventInit = Nothing
{-# INLINE noPushEventInit #-}

gTypePushEventInit :: JSM GType
gTypePushEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PushManager" (push-api).
newtype PushManager = PushManager { unPushManager :: JSVal }

instance PToJSVal PushManager where
  pToJSVal = unPushManager
  {-# INLINE pToJSVal #-}

instance PFromJSVal PushManager where
  pFromJSVal = PushManager
  {-# INLINE pFromJSVal #-}

instance ToJSVal PushManager where
  toJSVal = return . unPushManager
  {-# INLINE toJSVal #-}

instance FromJSVal PushManager where
  fromJSVal v = fmap PushManager <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PushManager
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PushManager where
  makeObject = makeObject . unPushManager


instance IsGObject PushManager where
  typeGType _ = gTypePushManager
  {-# INLINE typeGType #-}

noPushManager :: Maybe PushManager
noPushManager = Nothing
{-# INLINE noPushManager #-}

gTypePushManager :: JSM GType
gTypePushManager = GType . Object <$> jsg "PushManager"

-- | Functions for this interface are in "JSDOM.PushManagerAttribute" (push-api).
newtype PushManagerAttribute = PushManagerAttribute { unPushManagerAttribute :: JSVal }

instance PToJSVal PushManagerAttribute where
  pToJSVal = unPushManagerAttribute
  {-# INLINE pToJSVal #-}

instance PFromJSVal PushManagerAttribute where
  pFromJSVal = PushManagerAttribute
  {-# INLINE pFromJSVal #-}

instance ToJSVal PushManagerAttribute where
  toJSVal = return . unPushManagerAttribute
  {-# INLINE toJSVal #-}

instance FromJSVal PushManagerAttribute where
  fromJSVal v = fmap PushManagerAttribute <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PushManagerAttribute
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PushManagerAttribute where
  makeObject = makeObject . unPushManagerAttribute

class (IsGObject o) => IsPushManagerAttribute o
toPushManagerAttribute :: IsPushManagerAttribute o => o -> PushManagerAttribute
toPushManagerAttribute = PushManagerAttribute . coerce

instance IsPushManagerAttribute PushManagerAttribute

instance IsGObject PushManagerAttribute where
  typeGType _ = gTypePushManagerAttribute
  {-# INLINE typeGType #-}

noPushManagerAttribute :: Maybe PushManagerAttribute
noPushManagerAttribute = Nothing
{-# INLINE noPushManagerAttribute #-}

gTypePushManagerAttribute :: JSM GType
gTypePushManagerAttribute = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PushMessageData" (push-api).
newtype PushMessageData = PushMessageData { unPushMessageData :: JSVal }

instance PToJSVal PushMessageData where
  pToJSVal = unPushMessageData
  {-# INLINE pToJSVal #-}

instance PFromJSVal PushMessageData where
  pFromJSVal = PushMessageData
  {-# INLINE pFromJSVal #-}

instance ToJSVal PushMessageData where
  toJSVal = return . unPushMessageData
  {-# INLINE toJSVal #-}

instance FromJSVal PushMessageData where
  fromJSVal v = fmap PushMessageData <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PushMessageData
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PushMessageData where
  makeObject = makeObject . unPushMessageData


instance IsGObject PushMessageData where
  typeGType _ = gTypePushMessageData
  {-# INLINE typeGType #-}

noPushMessageData :: Maybe PushMessageData
noPushMessageData = Nothing
{-# INLINE noPushMessageData #-}

gTypePushMessageData :: JSM GType
gTypePushMessageData = GType . Object <$> jsg "PushMessageData"

-- | Functions for this interface are in "JSDOM.PushSubscription" (push-api).
newtype PushSubscription = PushSubscription { unPushSubscription :: JSVal }

instance PToJSVal PushSubscription where
  pToJSVal = unPushSubscription
  {-# INLINE pToJSVal #-}

instance PFromJSVal PushSubscription where
  pFromJSVal = PushSubscription
  {-# INLINE pFromJSVal #-}

instance ToJSVal PushSubscription where
  toJSVal = return . unPushSubscription
  {-# INLINE toJSVal #-}

instance FromJSVal PushSubscription where
  fromJSVal v = fmap PushSubscription <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PushSubscription
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PushSubscription where
  makeObject = makeObject . unPushSubscription


instance IsGObject PushSubscription where
  typeGType _ = gTypePushSubscription
  {-# INLINE typeGType #-}

noPushSubscription :: Maybe PushSubscription
noPushSubscription = Nothing
{-# INLINE noPushSubscription #-}

gTypePushSubscription :: JSM GType
gTypePushSubscription = GType . Object <$> jsg "PushSubscription"

-- | Functions for this interface are in "JSDOM.PushSubscriptionChangeEvent" (push-api).
newtype PushSubscriptionChangeEvent = PushSubscriptionChangeEvent { unPushSubscriptionChangeEvent :: JSVal }

instance PToJSVal PushSubscriptionChangeEvent where
  pToJSVal = unPushSubscriptionChangeEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal PushSubscriptionChangeEvent where
  pFromJSVal = PushSubscriptionChangeEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal PushSubscriptionChangeEvent where
  toJSVal = return . unPushSubscriptionChangeEvent
  {-# INLINE toJSVal #-}

instance FromJSVal PushSubscriptionChangeEvent where
  fromJSVal v = fmap PushSubscriptionChangeEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PushSubscriptionChangeEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PushSubscriptionChangeEvent where
  makeObject = makeObject . unPushSubscriptionChangeEvent

instance IsExtendableEvent PushSubscriptionChangeEvent
instance IsEvent PushSubscriptionChangeEvent

instance IsGObject PushSubscriptionChangeEvent where
  typeGType _ = gTypePushSubscriptionChangeEvent
  {-# INLINE typeGType #-}

noPushSubscriptionChangeEvent :: Maybe PushSubscriptionChangeEvent
noPushSubscriptionChangeEvent = Nothing
{-# INLINE noPushSubscriptionChangeEvent #-}

gTypePushSubscriptionChangeEvent :: JSM GType
gTypePushSubscriptionChangeEvent = GType . Object <$> jsg "PushSubscriptionChangeEvent"

-- | Dictionary PushSubscriptionChangeEventInit (push-api)
newtype PushSubscriptionChangeEventInit = PushSubscriptionChangeEventInit { unPushSubscriptionChangeEventInit :: JSVal }

instance PToJSVal PushSubscriptionChangeEventInit where
  pToJSVal = unPushSubscriptionChangeEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PushSubscriptionChangeEventInit where
  pFromJSVal = PushSubscriptionChangeEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PushSubscriptionChangeEventInit where
  toJSVal = return . unPushSubscriptionChangeEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal PushSubscriptionChangeEventInit where
  fromJSVal v = fmap PushSubscriptionChangeEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PushSubscriptionChangeEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PushSubscriptionChangeEventInit where
  makeObject = makeObject . unPushSubscriptionChangeEventInit

instance IsExtendableEventInit PushSubscriptionChangeEventInit
instance IsEventInit PushSubscriptionChangeEventInit

instance IsGObject PushSubscriptionChangeEventInit where
  typeGType _ = gTypePushSubscriptionChangeEventInit
  {-# INLINE typeGType #-}

noPushSubscriptionChangeEventInit :: Maybe PushSubscriptionChangeEventInit
noPushSubscriptionChangeEventInit = Nothing
{-# INLINE noPushSubscriptionChangeEventInit #-}

gTypePushSubscriptionChangeEventInit :: JSM GType
gTypePushSubscriptionChangeEventInit = GType . Object <$> jsg "Object"

-- | Dictionary PushSubscriptionJSON (push-api)
newtype PushSubscriptionJSON = PushSubscriptionJSON { unPushSubscriptionJSON :: JSVal }

instance PToJSVal PushSubscriptionJSON where
  pToJSVal = unPushSubscriptionJSON
  {-# INLINE pToJSVal #-}

instance PFromJSVal PushSubscriptionJSON where
  pFromJSVal = PushSubscriptionJSON
  {-# INLINE pFromJSVal #-}

instance ToJSVal PushSubscriptionJSON where
  toJSVal = return . unPushSubscriptionJSON
  {-# INLINE toJSVal #-}

instance FromJSVal PushSubscriptionJSON where
  fromJSVal v = fmap PushSubscriptionJSON <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PushSubscriptionJSON
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PushSubscriptionJSON where
  makeObject = makeObject . unPushSubscriptionJSON


instance IsGObject PushSubscriptionJSON where
  typeGType _ = gTypePushSubscriptionJSON
  {-# INLINE typeGType #-}

noPushSubscriptionJSON :: Maybe PushSubscriptionJSON
noPushSubscriptionJSON = Nothing
{-# INLINE noPushSubscriptionJSON #-}

gTypePushSubscriptionJSON :: JSM GType
gTypePushSubscriptionJSON = GType . Object <$> jsg "Object"

-- | Dictionary PushSubscriptionKeys (push-api)
newtype PushSubscriptionKeys = PushSubscriptionKeys { unPushSubscriptionKeys :: JSVal }

instance PToJSVal PushSubscriptionKeys where
  pToJSVal = unPushSubscriptionKeys
  {-# INLINE pToJSVal #-}

instance PFromJSVal PushSubscriptionKeys where
  pFromJSVal = PushSubscriptionKeys
  {-# INLINE pFromJSVal #-}

instance ToJSVal PushSubscriptionKeys where
  toJSVal = return . unPushSubscriptionKeys
  {-# INLINE toJSVal #-}

instance FromJSVal PushSubscriptionKeys where
  fromJSVal v = fmap PushSubscriptionKeys <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PushSubscriptionKeys
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PushSubscriptionKeys where
  makeObject = makeObject . unPushSubscriptionKeys


instance IsGObject PushSubscriptionKeys where
  typeGType _ = gTypePushSubscriptionKeys
  {-# INLINE typeGType #-}

noPushSubscriptionKeys :: Maybe PushSubscriptionKeys
noPushSubscriptionKeys = Nothing
{-# INLINE noPushSubscriptionKeys #-}

gTypePushSubscriptionKeys :: JSM GType
gTypePushSubscriptionKeys = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.PushSubscriptionOptions" (push-api).
newtype PushSubscriptionOptions = PushSubscriptionOptions { unPushSubscriptionOptions :: JSVal }

instance PToJSVal PushSubscriptionOptions where
  pToJSVal = unPushSubscriptionOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal PushSubscriptionOptions where
  pFromJSVal = PushSubscriptionOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal PushSubscriptionOptions where
  toJSVal = return . unPushSubscriptionOptions
  {-# INLINE toJSVal #-}

instance FromJSVal PushSubscriptionOptions where
  fromJSVal v = fmap PushSubscriptionOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PushSubscriptionOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PushSubscriptionOptions where
  makeObject = makeObject . unPushSubscriptionOptions


instance IsGObject PushSubscriptionOptions where
  typeGType _ = gTypePushSubscriptionOptions
  {-# INLINE typeGType #-}

noPushSubscriptionOptions :: Maybe PushSubscriptionOptions
noPushSubscriptionOptions = Nothing
{-# INLINE noPushSubscriptionOptions #-}

gTypePushSubscriptionOptions :: JSM GType
gTypePushSubscriptionOptions = GType . Object <$> jsg "PushSubscriptionOptions"

-- | Dictionary PushSubscriptionOptionsInit (push-api)
newtype PushSubscriptionOptionsInit = PushSubscriptionOptionsInit { unPushSubscriptionOptionsInit :: JSVal }

instance PToJSVal PushSubscriptionOptionsInit where
  pToJSVal = unPushSubscriptionOptionsInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal PushSubscriptionOptionsInit where
  pFromJSVal = PushSubscriptionOptionsInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal PushSubscriptionOptionsInit where
  toJSVal = return . unPushSubscriptionOptionsInit
  {-# INLINE toJSVal #-}

instance FromJSVal PushSubscriptionOptionsInit where
  fromJSVal v = fmap PushSubscriptionOptionsInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . PushSubscriptionOptionsInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject PushSubscriptionOptionsInit where
  makeObject = makeObject . unPushSubscriptionOptionsInit


instance IsGObject PushSubscriptionOptionsInit where
  typeGType _ = gTypePushSubscriptionOptionsInit
  {-# INLINE typeGType #-}

noPushSubscriptionOptionsInit :: Maybe PushSubscriptionOptionsInit
noPushSubscriptionOptionsInit = Nothing
{-# INLINE noPushSubscriptionOptionsInit #-}

gTypePushSubscriptionOptionsInit :: JSM GType
gTypePushSubscriptionOptionsInit = GType . Object <$> jsg "Object"

-- | Dictionary QueuingStrategy (streams)
newtype QueuingStrategy = QueuingStrategy { unQueuingStrategy :: JSVal }

instance PToJSVal QueuingStrategy where
  pToJSVal = unQueuingStrategy
  {-# INLINE pToJSVal #-}

instance PFromJSVal QueuingStrategy where
  pFromJSVal = QueuingStrategy
  {-# INLINE pFromJSVal #-}

instance ToJSVal QueuingStrategy where
  toJSVal = return . unQueuingStrategy
  {-# INLINE toJSVal #-}

instance FromJSVal QueuingStrategy where
  fromJSVal v = fmap QueuingStrategy <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . QueuingStrategy
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject QueuingStrategy where
  makeObject = makeObject . unQueuingStrategy


instance IsGObject QueuingStrategy where
  typeGType _ = gTypeQueuingStrategy
  {-# INLINE typeGType #-}

noQueuingStrategy :: Maybe QueuingStrategy
noQueuingStrategy = Nothing
{-# INLINE noQueuingStrategy #-}

gTypeQueuingStrategy :: JSM GType
gTypeQueuingStrategy = GType . Object <$> jsg "Object"

-- | Dictionary QueuingStrategyInit (streams)
newtype QueuingStrategyInit = QueuingStrategyInit { unQueuingStrategyInit :: JSVal }

instance PToJSVal QueuingStrategyInit where
  pToJSVal = unQueuingStrategyInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal QueuingStrategyInit where
  pFromJSVal = QueuingStrategyInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal QueuingStrategyInit where
  toJSVal = return . unQueuingStrategyInit
  {-# INLINE toJSVal #-}

instance FromJSVal QueuingStrategyInit where
  fromJSVal v = fmap QueuingStrategyInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . QueuingStrategyInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject QueuingStrategyInit where
  makeObject = makeObject . unQueuingStrategyInit


instance IsGObject QueuingStrategyInit where
  typeGType _ = gTypeQueuingStrategyInit
  {-# INLINE typeGType #-}

noQueuingStrategyInit :: Maybe QueuingStrategyInit
noQueuingStrategyInit = Nothing
{-# INLINE noQueuingStrategyInit #-}

gTypeQueuingStrategyInit :: JSM GType
gTypeQueuingStrategyInit = GType . Object <$> jsg "Object"

-- | Dictionary RTCAnswerOptions (webrtc)
newtype RTCAnswerOptions = RTCAnswerOptions { unRTCAnswerOptions :: JSVal }

instance PToJSVal RTCAnswerOptions where
  pToJSVal = unRTCAnswerOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCAnswerOptions where
  pFromJSVal = RTCAnswerOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCAnswerOptions where
  toJSVal = return . unRTCAnswerOptions
  {-# INLINE toJSVal #-}

instance FromJSVal RTCAnswerOptions where
  fromJSVal v = fmap RTCAnswerOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCAnswerOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCAnswerOptions where
  makeObject = makeObject . unRTCAnswerOptions

instance IsRTCOfferAnswerOptions RTCAnswerOptions

instance IsGObject RTCAnswerOptions where
  typeGType _ = gTypeRTCAnswerOptions
  {-# INLINE typeGType #-}

noRTCAnswerOptions :: Maybe RTCAnswerOptions
noRTCAnswerOptions = Nothing
{-# INLINE noRTCAnswerOptions #-}

gTypeRTCAnswerOptions :: JSM GType
gTypeRTCAnswerOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCCertificate" (webrtc).
newtype RTCCertificate = RTCCertificate { unRTCCertificate :: JSVal }

instance PToJSVal RTCCertificate where
  pToJSVal = unRTCCertificate
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCCertificate where
  pFromJSVal = RTCCertificate
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCCertificate where
  toJSVal = return . unRTCCertificate
  {-# INLINE toJSVal #-}

instance FromJSVal RTCCertificate where
  fromJSVal v = fmap RTCCertificate <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCCertificate
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCCertificate where
  makeObject = makeObject . unRTCCertificate


instance IsGObject RTCCertificate where
  typeGType _ = gTypeRTCCertificate
  {-# INLINE typeGType #-}

noRTCCertificate :: Maybe RTCCertificate
noRTCCertificate = Nothing
{-# INLINE noRTCCertificate #-}

gTypeRTCCertificate :: JSM GType
gTypeRTCCertificate = GType . Object <$> jsg "RTCCertificate"

-- | Dictionary RTCConfiguration (webrtc)
newtype RTCConfiguration = RTCConfiguration { unRTCConfiguration :: JSVal }

instance PToJSVal RTCConfiguration where
  pToJSVal = unRTCConfiguration
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCConfiguration where
  pFromJSVal = RTCConfiguration
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCConfiguration where
  toJSVal = return . unRTCConfiguration
  {-# INLINE toJSVal #-}

instance FromJSVal RTCConfiguration where
  fromJSVal v = fmap RTCConfiguration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCConfiguration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCConfiguration where
  makeObject = makeObject . unRTCConfiguration


instance IsGObject RTCConfiguration where
  typeGType _ = gTypeRTCConfiguration
  {-# INLINE typeGType #-}

noRTCConfiguration :: Maybe RTCConfiguration
noRTCConfiguration = Nothing
{-# INLINE noRTCConfiguration #-}

gTypeRTCConfiguration :: JSM GType
gTypeRTCConfiguration = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCDTMFSender" (webrtc).
newtype RTCDTMFSender = RTCDTMFSender { unRTCDTMFSender :: JSVal }

instance PToJSVal RTCDTMFSender where
  pToJSVal = unRTCDTMFSender
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCDTMFSender where
  pFromJSVal = RTCDTMFSender
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCDTMFSender where
  toJSVal = return . unRTCDTMFSender
  {-# INLINE toJSVal #-}

instance FromJSVal RTCDTMFSender where
  fromJSVal v = fmap RTCDTMFSender <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCDTMFSender
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCDTMFSender where
  makeObject = makeObject . unRTCDTMFSender

instance IsEventTarget RTCDTMFSender

instance IsGObject RTCDTMFSender where
  typeGType _ = gTypeRTCDTMFSender
  {-# INLINE typeGType #-}

noRTCDTMFSender :: Maybe RTCDTMFSender
noRTCDTMFSender = Nothing
{-# INLINE noRTCDTMFSender #-}

gTypeRTCDTMFSender :: JSM GType
gTypeRTCDTMFSender = GType . Object <$> jsg "RTCDTMFSender"

-- | Functions for this interface are in "JSDOM.RTCDTMFToneChangeEvent" (webrtc).
newtype RTCDTMFToneChangeEvent = RTCDTMFToneChangeEvent { unRTCDTMFToneChangeEvent :: JSVal }

instance PToJSVal RTCDTMFToneChangeEvent where
  pToJSVal = unRTCDTMFToneChangeEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCDTMFToneChangeEvent where
  pFromJSVal = RTCDTMFToneChangeEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCDTMFToneChangeEvent where
  toJSVal = return . unRTCDTMFToneChangeEvent
  {-# INLINE toJSVal #-}

instance FromJSVal RTCDTMFToneChangeEvent where
  fromJSVal v = fmap RTCDTMFToneChangeEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCDTMFToneChangeEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCDTMFToneChangeEvent where
  makeObject = makeObject . unRTCDTMFToneChangeEvent

instance IsEvent RTCDTMFToneChangeEvent

instance IsGObject RTCDTMFToneChangeEvent where
  typeGType _ = gTypeRTCDTMFToneChangeEvent
  {-# INLINE typeGType #-}

noRTCDTMFToneChangeEvent :: Maybe RTCDTMFToneChangeEvent
noRTCDTMFToneChangeEvent = Nothing
{-# INLINE noRTCDTMFToneChangeEvent #-}

gTypeRTCDTMFToneChangeEvent :: JSM GType
gTypeRTCDTMFToneChangeEvent = GType . Object <$> jsg "RTCDTMFToneChangeEvent"

-- | Dictionary RTCDTMFToneChangeEventInit (webrtc)
newtype RTCDTMFToneChangeEventInit = RTCDTMFToneChangeEventInit { unRTCDTMFToneChangeEventInit :: JSVal }

instance PToJSVal RTCDTMFToneChangeEventInit where
  pToJSVal = unRTCDTMFToneChangeEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCDTMFToneChangeEventInit where
  pFromJSVal = RTCDTMFToneChangeEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCDTMFToneChangeEventInit where
  toJSVal = return . unRTCDTMFToneChangeEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal RTCDTMFToneChangeEventInit where
  fromJSVal v = fmap RTCDTMFToneChangeEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCDTMFToneChangeEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCDTMFToneChangeEventInit where
  makeObject = makeObject . unRTCDTMFToneChangeEventInit

instance IsEventInit RTCDTMFToneChangeEventInit

instance IsGObject RTCDTMFToneChangeEventInit where
  typeGType _ = gTypeRTCDTMFToneChangeEventInit
  {-# INLINE typeGType #-}

noRTCDTMFToneChangeEventInit :: Maybe RTCDTMFToneChangeEventInit
noRTCDTMFToneChangeEventInit = Nothing
{-# INLINE noRTCDTMFToneChangeEventInit #-}

gTypeRTCDTMFToneChangeEventInit :: JSM GType
gTypeRTCDTMFToneChangeEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCDataChannel" (webrtc).
newtype RTCDataChannel = RTCDataChannel { unRTCDataChannel :: JSVal }

instance PToJSVal RTCDataChannel where
  pToJSVal = unRTCDataChannel
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCDataChannel where
  pFromJSVal = RTCDataChannel
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCDataChannel where
  toJSVal = return . unRTCDataChannel
  {-# INLINE toJSVal #-}

instance FromJSVal RTCDataChannel where
  fromJSVal v = fmap RTCDataChannel <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCDataChannel
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCDataChannel where
  makeObject = makeObject . unRTCDataChannel

instance IsEventTarget RTCDataChannel

instance IsGObject RTCDataChannel where
  typeGType _ = gTypeRTCDataChannel
  {-# INLINE typeGType #-}

noRTCDataChannel :: Maybe RTCDataChannel
noRTCDataChannel = Nothing
{-# INLINE noRTCDataChannel #-}

gTypeRTCDataChannel :: JSM GType
gTypeRTCDataChannel = GType . Object <$> jsg "RTCDataChannel"

-- | Functions for this interface are in "JSDOM.RTCDataChannelEvent" (webrtc).
newtype RTCDataChannelEvent = RTCDataChannelEvent { unRTCDataChannelEvent :: JSVal }

instance PToJSVal RTCDataChannelEvent where
  pToJSVal = unRTCDataChannelEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCDataChannelEvent where
  pFromJSVal = RTCDataChannelEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCDataChannelEvent where
  toJSVal = return . unRTCDataChannelEvent
  {-# INLINE toJSVal #-}

instance FromJSVal RTCDataChannelEvent where
  fromJSVal v = fmap RTCDataChannelEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCDataChannelEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCDataChannelEvent where
  makeObject = makeObject . unRTCDataChannelEvent

instance IsEvent RTCDataChannelEvent

instance IsGObject RTCDataChannelEvent where
  typeGType _ = gTypeRTCDataChannelEvent
  {-# INLINE typeGType #-}

noRTCDataChannelEvent :: Maybe RTCDataChannelEvent
noRTCDataChannelEvent = Nothing
{-# INLINE noRTCDataChannelEvent #-}

gTypeRTCDataChannelEvent :: JSM GType
gTypeRTCDataChannelEvent = GType . Object <$> jsg "RTCDataChannelEvent"

-- | Dictionary RTCDataChannelEventInit (webrtc)
newtype RTCDataChannelEventInit = RTCDataChannelEventInit { unRTCDataChannelEventInit :: JSVal }

instance PToJSVal RTCDataChannelEventInit where
  pToJSVal = unRTCDataChannelEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCDataChannelEventInit where
  pFromJSVal = RTCDataChannelEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCDataChannelEventInit where
  toJSVal = return . unRTCDataChannelEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal RTCDataChannelEventInit where
  fromJSVal v = fmap RTCDataChannelEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCDataChannelEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCDataChannelEventInit where
  makeObject = makeObject . unRTCDataChannelEventInit

instance IsEventInit RTCDataChannelEventInit

instance IsGObject RTCDataChannelEventInit where
  typeGType _ = gTypeRTCDataChannelEventInit
  {-# INLINE typeGType #-}

noRTCDataChannelEventInit :: Maybe RTCDataChannelEventInit
noRTCDataChannelEventInit = Nothing
{-# INLINE noRTCDataChannelEventInit #-}

gTypeRTCDataChannelEventInit :: JSM GType
gTypeRTCDataChannelEventInit = GType . Object <$> jsg "Object"

-- | Dictionary RTCDataChannelInit (webrtc)
newtype RTCDataChannelInit = RTCDataChannelInit { unRTCDataChannelInit :: JSVal }

instance PToJSVal RTCDataChannelInit where
  pToJSVal = unRTCDataChannelInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCDataChannelInit where
  pFromJSVal = RTCDataChannelInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCDataChannelInit where
  toJSVal = return . unRTCDataChannelInit
  {-# INLINE toJSVal #-}

instance FromJSVal RTCDataChannelInit where
  fromJSVal v = fmap RTCDataChannelInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCDataChannelInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCDataChannelInit where
  makeObject = makeObject . unRTCDataChannelInit


instance IsGObject RTCDataChannelInit where
  typeGType _ = gTypeRTCDataChannelInit
  {-# INLINE typeGType #-}

noRTCDataChannelInit :: Maybe RTCDataChannelInit
noRTCDataChannelInit = Nothing
{-# INLINE noRTCDataChannelInit #-}

gTypeRTCDataChannelInit :: JSM GType
gTypeRTCDataChannelInit = GType . Object <$> jsg "Object"

-- | Dictionary RTCDtlsFingerprint (webrtc)
newtype RTCDtlsFingerprint = RTCDtlsFingerprint { unRTCDtlsFingerprint :: JSVal }

instance PToJSVal RTCDtlsFingerprint where
  pToJSVal = unRTCDtlsFingerprint
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCDtlsFingerprint where
  pFromJSVal = RTCDtlsFingerprint
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCDtlsFingerprint where
  toJSVal = return . unRTCDtlsFingerprint
  {-# INLINE toJSVal #-}

instance FromJSVal RTCDtlsFingerprint where
  fromJSVal v = fmap RTCDtlsFingerprint <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCDtlsFingerprint
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCDtlsFingerprint where
  makeObject = makeObject . unRTCDtlsFingerprint


instance IsGObject RTCDtlsFingerprint where
  typeGType _ = gTypeRTCDtlsFingerprint
  {-# INLINE typeGType #-}

noRTCDtlsFingerprint :: Maybe RTCDtlsFingerprint
noRTCDtlsFingerprint = Nothing
{-# INLINE noRTCDtlsFingerprint #-}

gTypeRTCDtlsFingerprint :: JSM GType
gTypeRTCDtlsFingerprint = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCDtlsTransport" (webrtc).
newtype RTCDtlsTransport = RTCDtlsTransport { unRTCDtlsTransport :: JSVal }

instance PToJSVal RTCDtlsTransport where
  pToJSVal = unRTCDtlsTransport
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCDtlsTransport where
  pFromJSVal = RTCDtlsTransport
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCDtlsTransport where
  toJSVal = return . unRTCDtlsTransport
  {-# INLINE toJSVal #-}

instance FromJSVal RTCDtlsTransport where
  fromJSVal v = fmap RTCDtlsTransport <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCDtlsTransport
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCDtlsTransport where
  makeObject = makeObject . unRTCDtlsTransport

instance IsEventTarget RTCDtlsTransport

instance IsGObject RTCDtlsTransport where
  typeGType _ = gTypeRTCDtlsTransport
  {-# INLINE typeGType #-}

noRTCDtlsTransport :: Maybe RTCDtlsTransport
noRTCDtlsTransport = Nothing
{-# INLINE noRTCDtlsTransport #-}

gTypeRTCDtlsTransport :: JSM GType
gTypeRTCDtlsTransport = GType . Object <$> jsg "RTCDtlsTransport"

-- | Functions for this interface are in "JSDOM.RTCEncodedAudioFrame" (webrtc-encoded-transform).
newtype RTCEncodedAudioFrame = RTCEncodedAudioFrame { unRTCEncodedAudioFrame :: JSVal }

instance PToJSVal RTCEncodedAudioFrame where
  pToJSVal = unRTCEncodedAudioFrame
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCEncodedAudioFrame where
  pFromJSVal = RTCEncodedAudioFrame
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCEncodedAudioFrame where
  toJSVal = return . unRTCEncodedAudioFrame
  {-# INLINE toJSVal #-}

instance FromJSVal RTCEncodedAudioFrame where
  fromJSVal v = fmap RTCEncodedAudioFrame <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCEncodedAudioFrame
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCEncodedAudioFrame where
  makeObject = makeObject . unRTCEncodedAudioFrame


instance IsGObject RTCEncodedAudioFrame where
  typeGType _ = gTypeRTCEncodedAudioFrame
  {-# INLINE typeGType #-}

noRTCEncodedAudioFrame :: Maybe RTCEncodedAudioFrame
noRTCEncodedAudioFrame = Nothing
{-# INLINE noRTCEncodedAudioFrame #-}

gTypeRTCEncodedAudioFrame :: JSM GType
gTypeRTCEncodedAudioFrame = GType . Object <$> jsg "RTCEncodedAudioFrame"

-- | Dictionary RTCEncodedAudioFrameMetadata (webrtc-encoded-transform)
newtype RTCEncodedAudioFrameMetadata = RTCEncodedAudioFrameMetadata { unRTCEncodedAudioFrameMetadata :: JSVal }

instance PToJSVal RTCEncodedAudioFrameMetadata where
  pToJSVal = unRTCEncodedAudioFrameMetadata
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCEncodedAudioFrameMetadata where
  pFromJSVal = RTCEncodedAudioFrameMetadata
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCEncodedAudioFrameMetadata where
  toJSVal = return . unRTCEncodedAudioFrameMetadata
  {-# INLINE toJSVal #-}

instance FromJSVal RTCEncodedAudioFrameMetadata where
  fromJSVal v = fmap RTCEncodedAudioFrameMetadata <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCEncodedAudioFrameMetadata
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCEncodedAudioFrameMetadata where
  makeObject = makeObject . unRTCEncodedAudioFrameMetadata

instance IsRTCEncodedFrameMetadata RTCEncodedAudioFrameMetadata

instance IsGObject RTCEncodedAudioFrameMetadata where
  typeGType _ = gTypeRTCEncodedAudioFrameMetadata
  {-# INLINE typeGType #-}

noRTCEncodedAudioFrameMetadata :: Maybe RTCEncodedAudioFrameMetadata
noRTCEncodedAudioFrameMetadata = Nothing
{-# INLINE noRTCEncodedAudioFrameMetadata #-}

gTypeRTCEncodedAudioFrameMetadata :: JSM GType
gTypeRTCEncodedAudioFrameMetadata = GType . Object <$> jsg "Object"

-- | Dictionary RTCEncodedAudioFrameOptions (webrtc-encoded-transform)
newtype RTCEncodedAudioFrameOptions = RTCEncodedAudioFrameOptions { unRTCEncodedAudioFrameOptions :: JSVal }

instance PToJSVal RTCEncodedAudioFrameOptions where
  pToJSVal = unRTCEncodedAudioFrameOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCEncodedAudioFrameOptions where
  pFromJSVal = RTCEncodedAudioFrameOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCEncodedAudioFrameOptions where
  toJSVal = return . unRTCEncodedAudioFrameOptions
  {-# INLINE toJSVal #-}

instance FromJSVal RTCEncodedAudioFrameOptions where
  fromJSVal v = fmap RTCEncodedAudioFrameOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCEncodedAudioFrameOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCEncodedAudioFrameOptions where
  makeObject = makeObject . unRTCEncodedAudioFrameOptions


instance IsGObject RTCEncodedAudioFrameOptions where
  typeGType _ = gTypeRTCEncodedAudioFrameOptions
  {-# INLINE typeGType #-}

noRTCEncodedAudioFrameOptions :: Maybe RTCEncodedAudioFrameOptions
noRTCEncodedAudioFrameOptions = Nothing
{-# INLINE noRTCEncodedAudioFrameOptions #-}

gTypeRTCEncodedAudioFrameOptions :: JSM GType
gTypeRTCEncodedAudioFrameOptions = GType . Object <$> jsg "Object"

-- | Dictionary RTCEncodedFrameMetadata (webrtc-encoded-transform)
newtype RTCEncodedFrameMetadata = RTCEncodedFrameMetadata { unRTCEncodedFrameMetadata :: JSVal }

instance PToJSVal RTCEncodedFrameMetadata where
  pToJSVal = unRTCEncodedFrameMetadata
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCEncodedFrameMetadata where
  pFromJSVal = RTCEncodedFrameMetadata
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCEncodedFrameMetadata where
  toJSVal = return . unRTCEncodedFrameMetadata
  {-# INLINE toJSVal #-}

instance FromJSVal RTCEncodedFrameMetadata where
  fromJSVal v = fmap RTCEncodedFrameMetadata <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCEncodedFrameMetadata
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCEncodedFrameMetadata where
  makeObject = makeObject . unRTCEncodedFrameMetadata

class (IsGObject o) => IsRTCEncodedFrameMetadata o
toRTCEncodedFrameMetadata :: IsRTCEncodedFrameMetadata o => o -> RTCEncodedFrameMetadata
toRTCEncodedFrameMetadata = RTCEncodedFrameMetadata . coerce

instance IsRTCEncodedFrameMetadata RTCEncodedFrameMetadata

instance IsGObject RTCEncodedFrameMetadata where
  typeGType _ = gTypeRTCEncodedFrameMetadata
  {-# INLINE typeGType #-}

noRTCEncodedFrameMetadata :: Maybe RTCEncodedFrameMetadata
noRTCEncodedFrameMetadata = Nothing
{-# INLINE noRTCEncodedFrameMetadata #-}

gTypeRTCEncodedFrameMetadata :: JSM GType
gTypeRTCEncodedFrameMetadata = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCEncodedVideoFrame" (webrtc-encoded-transform).
newtype RTCEncodedVideoFrame = RTCEncodedVideoFrame { unRTCEncodedVideoFrame :: JSVal }

instance PToJSVal RTCEncodedVideoFrame where
  pToJSVal = unRTCEncodedVideoFrame
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCEncodedVideoFrame where
  pFromJSVal = RTCEncodedVideoFrame
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCEncodedVideoFrame where
  toJSVal = return . unRTCEncodedVideoFrame
  {-# INLINE toJSVal #-}

instance FromJSVal RTCEncodedVideoFrame where
  fromJSVal v = fmap RTCEncodedVideoFrame <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCEncodedVideoFrame
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCEncodedVideoFrame where
  makeObject = makeObject . unRTCEncodedVideoFrame


instance IsGObject RTCEncodedVideoFrame where
  typeGType _ = gTypeRTCEncodedVideoFrame
  {-# INLINE typeGType #-}

noRTCEncodedVideoFrame :: Maybe RTCEncodedVideoFrame
noRTCEncodedVideoFrame = Nothing
{-# INLINE noRTCEncodedVideoFrame #-}

gTypeRTCEncodedVideoFrame :: JSM GType
gTypeRTCEncodedVideoFrame = GType . Object <$> jsg "RTCEncodedVideoFrame"

-- | Dictionary RTCEncodedVideoFrameMetadata (webrtc-encoded-transform)
newtype RTCEncodedVideoFrameMetadata = RTCEncodedVideoFrameMetadata { unRTCEncodedVideoFrameMetadata :: JSVal }

instance PToJSVal RTCEncodedVideoFrameMetadata where
  pToJSVal = unRTCEncodedVideoFrameMetadata
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCEncodedVideoFrameMetadata where
  pFromJSVal = RTCEncodedVideoFrameMetadata
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCEncodedVideoFrameMetadata where
  toJSVal = return . unRTCEncodedVideoFrameMetadata
  {-# INLINE toJSVal #-}

instance FromJSVal RTCEncodedVideoFrameMetadata where
  fromJSVal v = fmap RTCEncodedVideoFrameMetadata <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCEncodedVideoFrameMetadata
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCEncodedVideoFrameMetadata where
  makeObject = makeObject . unRTCEncodedVideoFrameMetadata

instance IsRTCEncodedFrameMetadata RTCEncodedVideoFrameMetadata

instance IsGObject RTCEncodedVideoFrameMetadata where
  typeGType _ = gTypeRTCEncodedVideoFrameMetadata
  {-# INLINE typeGType #-}

noRTCEncodedVideoFrameMetadata :: Maybe RTCEncodedVideoFrameMetadata
noRTCEncodedVideoFrameMetadata = Nothing
{-# INLINE noRTCEncodedVideoFrameMetadata #-}

gTypeRTCEncodedVideoFrameMetadata :: JSM GType
gTypeRTCEncodedVideoFrameMetadata = GType . Object <$> jsg "Object"

-- | Dictionary RTCEncodedVideoFrameOptions (webrtc-encoded-transform)
newtype RTCEncodedVideoFrameOptions = RTCEncodedVideoFrameOptions { unRTCEncodedVideoFrameOptions :: JSVal }

instance PToJSVal RTCEncodedVideoFrameOptions where
  pToJSVal = unRTCEncodedVideoFrameOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCEncodedVideoFrameOptions where
  pFromJSVal = RTCEncodedVideoFrameOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCEncodedVideoFrameOptions where
  toJSVal = return . unRTCEncodedVideoFrameOptions
  {-# INLINE toJSVal #-}

instance FromJSVal RTCEncodedVideoFrameOptions where
  fromJSVal v = fmap RTCEncodedVideoFrameOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCEncodedVideoFrameOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCEncodedVideoFrameOptions where
  makeObject = makeObject . unRTCEncodedVideoFrameOptions


instance IsGObject RTCEncodedVideoFrameOptions where
  typeGType _ = gTypeRTCEncodedVideoFrameOptions
  {-# INLINE typeGType #-}

noRTCEncodedVideoFrameOptions :: Maybe RTCEncodedVideoFrameOptions
noRTCEncodedVideoFrameOptions = Nothing
{-# INLINE noRTCEncodedVideoFrameOptions #-}

gTypeRTCEncodedVideoFrameOptions :: JSM GType
gTypeRTCEncodedVideoFrameOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCError" (webrtc).
newtype RTCError = RTCError { unRTCError :: JSVal }

instance PToJSVal RTCError where
  pToJSVal = unRTCError
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCError where
  pFromJSVal = RTCError
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCError where
  toJSVal = return . unRTCError
  {-# INLINE toJSVal #-}

instance FromJSVal RTCError where
  fromJSVal v = fmap RTCError <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCError
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCError where
  makeObject = makeObject . unRTCError

instance IsDOMException RTCError

instance IsGObject RTCError where
  typeGType _ = gTypeRTCError
  {-# INLINE typeGType #-}

noRTCError :: Maybe RTCError
noRTCError = Nothing
{-# INLINE noRTCError #-}

gTypeRTCError :: JSM GType
gTypeRTCError = GType . Object <$> jsg "RTCError"

-- | Functions for this interface are in "JSDOM.RTCErrorEvent" (webrtc).
newtype RTCErrorEvent = RTCErrorEvent { unRTCErrorEvent :: JSVal }

instance PToJSVal RTCErrorEvent where
  pToJSVal = unRTCErrorEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCErrorEvent where
  pFromJSVal = RTCErrorEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCErrorEvent where
  toJSVal = return . unRTCErrorEvent
  {-# INLINE toJSVal #-}

instance FromJSVal RTCErrorEvent where
  fromJSVal v = fmap RTCErrorEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCErrorEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCErrorEvent where
  makeObject = makeObject . unRTCErrorEvent

instance IsEvent RTCErrorEvent

instance IsGObject RTCErrorEvent where
  typeGType _ = gTypeRTCErrorEvent
  {-# INLINE typeGType #-}

noRTCErrorEvent :: Maybe RTCErrorEvent
noRTCErrorEvent = Nothing
{-# INLINE noRTCErrorEvent #-}

gTypeRTCErrorEvent :: JSM GType
gTypeRTCErrorEvent = GType . Object <$> jsg "RTCErrorEvent"

-- | Dictionary RTCErrorEventInit (webrtc)
newtype RTCErrorEventInit = RTCErrorEventInit { unRTCErrorEventInit :: JSVal }

instance PToJSVal RTCErrorEventInit where
  pToJSVal = unRTCErrorEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCErrorEventInit where
  pFromJSVal = RTCErrorEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCErrorEventInit where
  toJSVal = return . unRTCErrorEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal RTCErrorEventInit where
  fromJSVal v = fmap RTCErrorEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCErrorEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCErrorEventInit where
  makeObject = makeObject . unRTCErrorEventInit

instance IsEventInit RTCErrorEventInit

instance IsGObject RTCErrorEventInit where
  typeGType _ = gTypeRTCErrorEventInit
  {-# INLINE typeGType #-}

noRTCErrorEventInit :: Maybe RTCErrorEventInit
noRTCErrorEventInit = Nothing
{-# INLINE noRTCErrorEventInit #-}

gTypeRTCErrorEventInit :: JSM GType
gTypeRTCErrorEventInit = GType . Object <$> jsg "Object"

-- | Dictionary RTCErrorInit (webrtc)
newtype RTCErrorInit = RTCErrorInit { unRTCErrorInit :: JSVal }

instance PToJSVal RTCErrorInit where
  pToJSVal = unRTCErrorInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCErrorInit where
  pFromJSVal = RTCErrorInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCErrorInit where
  toJSVal = return . unRTCErrorInit
  {-# INLINE toJSVal #-}

instance FromJSVal RTCErrorInit where
  fromJSVal v = fmap RTCErrorInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCErrorInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCErrorInit where
  makeObject = makeObject . unRTCErrorInit


instance IsGObject RTCErrorInit where
  typeGType _ = gTypeRTCErrorInit
  {-# INLINE typeGType #-}

noRTCErrorInit :: Maybe RTCErrorInit
noRTCErrorInit = Nothing
{-# INLINE noRTCErrorInit #-}

gTypeRTCErrorInit :: JSM GType
gTypeRTCErrorInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCIceCandidate" (webrtc).
newtype RTCIceCandidate = RTCIceCandidate { unRTCIceCandidate :: JSVal }

instance PToJSVal RTCIceCandidate where
  pToJSVal = unRTCIceCandidate
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCIceCandidate where
  pFromJSVal = RTCIceCandidate
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCIceCandidate where
  toJSVal = return . unRTCIceCandidate
  {-# INLINE toJSVal #-}

instance FromJSVal RTCIceCandidate where
  fromJSVal v = fmap RTCIceCandidate <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCIceCandidate
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCIceCandidate where
  makeObject = makeObject . unRTCIceCandidate


instance IsGObject RTCIceCandidate where
  typeGType _ = gTypeRTCIceCandidate
  {-# INLINE typeGType #-}

noRTCIceCandidate :: Maybe RTCIceCandidate
noRTCIceCandidate = Nothing
{-# INLINE noRTCIceCandidate #-}

gTypeRTCIceCandidate :: JSM GType
gTypeRTCIceCandidate = GType . Object <$> jsg "RTCIceCandidate"

-- | Dictionary RTCIceCandidateInit (webrtc)
newtype RTCIceCandidateInit = RTCIceCandidateInit { unRTCIceCandidateInit :: JSVal }

instance PToJSVal RTCIceCandidateInit where
  pToJSVal = unRTCIceCandidateInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCIceCandidateInit where
  pFromJSVal = RTCIceCandidateInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCIceCandidateInit where
  toJSVal = return . unRTCIceCandidateInit
  {-# INLINE toJSVal #-}

instance FromJSVal RTCIceCandidateInit where
  fromJSVal v = fmap RTCIceCandidateInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCIceCandidateInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCIceCandidateInit where
  makeObject = makeObject . unRTCIceCandidateInit

class (IsGObject o) => IsRTCIceCandidateInit o
toRTCIceCandidateInit :: IsRTCIceCandidateInit o => o -> RTCIceCandidateInit
toRTCIceCandidateInit = RTCIceCandidateInit . coerce

instance IsRTCIceCandidateInit RTCIceCandidateInit

instance IsGObject RTCIceCandidateInit where
  typeGType _ = gTypeRTCIceCandidateInit
  {-# INLINE typeGType #-}

noRTCIceCandidateInit :: Maybe RTCIceCandidateInit
noRTCIceCandidateInit = Nothing
{-# INLINE noRTCIceCandidateInit #-}

gTypeRTCIceCandidateInit :: JSM GType
gTypeRTCIceCandidateInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCIceCandidatePair" (webrtc).
newtype RTCIceCandidatePair = RTCIceCandidatePair { unRTCIceCandidatePair :: JSVal }

instance PToJSVal RTCIceCandidatePair where
  pToJSVal = unRTCIceCandidatePair
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCIceCandidatePair where
  pFromJSVal = RTCIceCandidatePair
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCIceCandidatePair where
  toJSVal = return . unRTCIceCandidatePair
  {-# INLINE toJSVal #-}

instance FromJSVal RTCIceCandidatePair where
  fromJSVal v = fmap RTCIceCandidatePair <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCIceCandidatePair
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCIceCandidatePair where
  makeObject = makeObject . unRTCIceCandidatePair


instance IsGObject RTCIceCandidatePair where
  typeGType _ = gTypeRTCIceCandidatePair
  {-# INLINE typeGType #-}

noRTCIceCandidatePair :: Maybe RTCIceCandidatePair
noRTCIceCandidatePair = Nothing
{-# INLINE noRTCIceCandidatePair #-}

gTypeRTCIceCandidatePair :: JSM GType
gTypeRTCIceCandidatePair = GType . Object <$> jsg "RTCIceCandidatePair"

-- | Dictionary RTCIceServer (webrtc)
newtype RTCIceServer = RTCIceServer { unRTCIceServer :: JSVal }

instance PToJSVal RTCIceServer where
  pToJSVal = unRTCIceServer
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCIceServer where
  pFromJSVal = RTCIceServer
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCIceServer where
  toJSVal = return . unRTCIceServer
  {-# INLINE toJSVal #-}

instance FromJSVal RTCIceServer where
  fromJSVal v = fmap RTCIceServer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCIceServer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCIceServer where
  makeObject = makeObject . unRTCIceServer


instance IsGObject RTCIceServer where
  typeGType _ = gTypeRTCIceServer
  {-# INLINE typeGType #-}

noRTCIceServer :: Maybe RTCIceServer
noRTCIceServer = Nothing
{-# INLINE noRTCIceServer #-}

gTypeRTCIceServer :: JSM GType
gTypeRTCIceServer = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCIceTransport" (webrtc).
newtype RTCIceTransport = RTCIceTransport { unRTCIceTransport :: JSVal }

instance PToJSVal RTCIceTransport where
  pToJSVal = unRTCIceTransport
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCIceTransport where
  pFromJSVal = RTCIceTransport
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCIceTransport where
  toJSVal = return . unRTCIceTransport
  {-# INLINE toJSVal #-}

instance FromJSVal RTCIceTransport where
  fromJSVal v = fmap RTCIceTransport <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCIceTransport
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCIceTransport where
  makeObject = makeObject . unRTCIceTransport

instance IsEventTarget RTCIceTransport

instance IsGObject RTCIceTransport where
  typeGType _ = gTypeRTCIceTransport
  {-# INLINE typeGType #-}

noRTCIceTransport :: Maybe RTCIceTransport
noRTCIceTransport = Nothing
{-# INLINE noRTCIceTransport #-}

gTypeRTCIceTransport :: JSM GType
gTypeRTCIceTransport = GType . Object <$> jsg "RTCIceTransport"

-- | Dictionary RTCLocalIceCandidateInit (webrtc)
newtype RTCLocalIceCandidateInit = RTCLocalIceCandidateInit { unRTCLocalIceCandidateInit :: JSVal }

instance PToJSVal RTCLocalIceCandidateInit where
  pToJSVal = unRTCLocalIceCandidateInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCLocalIceCandidateInit where
  pFromJSVal = RTCLocalIceCandidateInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCLocalIceCandidateInit where
  toJSVal = return . unRTCLocalIceCandidateInit
  {-# INLINE toJSVal #-}

instance FromJSVal RTCLocalIceCandidateInit where
  fromJSVal v = fmap RTCLocalIceCandidateInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCLocalIceCandidateInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCLocalIceCandidateInit where
  makeObject = makeObject . unRTCLocalIceCandidateInit

instance IsRTCIceCandidateInit RTCLocalIceCandidateInit

instance IsGObject RTCLocalIceCandidateInit where
  typeGType _ = gTypeRTCLocalIceCandidateInit
  {-# INLINE typeGType #-}

noRTCLocalIceCandidateInit :: Maybe RTCLocalIceCandidateInit
noRTCLocalIceCandidateInit = Nothing
{-# INLINE noRTCLocalIceCandidateInit #-}

gTypeRTCLocalIceCandidateInit :: JSM GType
gTypeRTCLocalIceCandidateInit = GType . Object <$> jsg "Object"

-- | Dictionary RTCLocalSessionDescriptionInit (webrtc)
newtype RTCLocalSessionDescriptionInit = RTCLocalSessionDescriptionInit { unRTCLocalSessionDescriptionInit :: JSVal }

instance PToJSVal RTCLocalSessionDescriptionInit where
  pToJSVal = unRTCLocalSessionDescriptionInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCLocalSessionDescriptionInit where
  pFromJSVal = RTCLocalSessionDescriptionInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCLocalSessionDescriptionInit where
  toJSVal = return . unRTCLocalSessionDescriptionInit
  {-# INLINE toJSVal #-}

instance FromJSVal RTCLocalSessionDescriptionInit where
  fromJSVal v = fmap RTCLocalSessionDescriptionInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCLocalSessionDescriptionInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCLocalSessionDescriptionInit where
  makeObject = makeObject . unRTCLocalSessionDescriptionInit


instance IsGObject RTCLocalSessionDescriptionInit where
  typeGType _ = gTypeRTCLocalSessionDescriptionInit
  {-# INLINE typeGType #-}

noRTCLocalSessionDescriptionInit :: Maybe RTCLocalSessionDescriptionInit
noRTCLocalSessionDescriptionInit = Nothing
{-# INLINE noRTCLocalSessionDescriptionInit #-}

gTypeRTCLocalSessionDescriptionInit :: JSM GType
gTypeRTCLocalSessionDescriptionInit = GType . Object <$> jsg "Object"

-- | Dictionary RTCOfferAnswerOptions (webrtc)
newtype RTCOfferAnswerOptions = RTCOfferAnswerOptions { unRTCOfferAnswerOptions :: JSVal }

instance PToJSVal RTCOfferAnswerOptions where
  pToJSVal = unRTCOfferAnswerOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCOfferAnswerOptions where
  pFromJSVal = RTCOfferAnswerOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCOfferAnswerOptions where
  toJSVal = return . unRTCOfferAnswerOptions
  {-# INLINE toJSVal #-}

instance FromJSVal RTCOfferAnswerOptions where
  fromJSVal v = fmap RTCOfferAnswerOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCOfferAnswerOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCOfferAnswerOptions where
  makeObject = makeObject . unRTCOfferAnswerOptions

class (IsGObject o) => IsRTCOfferAnswerOptions o
toRTCOfferAnswerOptions :: IsRTCOfferAnswerOptions o => o -> RTCOfferAnswerOptions
toRTCOfferAnswerOptions = RTCOfferAnswerOptions . coerce

instance IsRTCOfferAnswerOptions RTCOfferAnswerOptions

instance IsGObject RTCOfferAnswerOptions where
  typeGType _ = gTypeRTCOfferAnswerOptions
  {-# INLINE typeGType #-}

noRTCOfferAnswerOptions :: Maybe RTCOfferAnswerOptions
noRTCOfferAnswerOptions = Nothing
{-# INLINE noRTCOfferAnswerOptions #-}

gTypeRTCOfferAnswerOptions :: JSM GType
gTypeRTCOfferAnswerOptions = GType . Object <$> jsg "Object"

-- | Dictionary RTCOfferOptions (webrtc)
newtype RTCOfferOptions = RTCOfferOptions { unRTCOfferOptions :: JSVal }

instance PToJSVal RTCOfferOptions where
  pToJSVal = unRTCOfferOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCOfferOptions where
  pFromJSVal = RTCOfferOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCOfferOptions where
  toJSVal = return . unRTCOfferOptions
  {-# INLINE toJSVal #-}

instance FromJSVal RTCOfferOptions where
  fromJSVal v = fmap RTCOfferOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCOfferOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCOfferOptions where
  makeObject = makeObject . unRTCOfferOptions

instance IsRTCOfferAnswerOptions RTCOfferOptions

instance IsGObject RTCOfferOptions where
  typeGType _ = gTypeRTCOfferOptions
  {-# INLINE typeGType #-}

noRTCOfferOptions :: Maybe RTCOfferOptions
noRTCOfferOptions = Nothing
{-# INLINE noRTCOfferOptions #-}

gTypeRTCOfferOptions :: JSM GType
gTypeRTCOfferOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCPeerConnection" (webrtc).
newtype RTCPeerConnection = RTCPeerConnection { unRTCPeerConnection :: JSVal }

instance PToJSVal RTCPeerConnection where
  pToJSVal = unRTCPeerConnection
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCPeerConnection where
  pFromJSVal = RTCPeerConnection
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCPeerConnection where
  toJSVal = return . unRTCPeerConnection
  {-# INLINE toJSVal #-}

instance FromJSVal RTCPeerConnection where
  fromJSVal v = fmap RTCPeerConnection <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCPeerConnection
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCPeerConnection where
  makeObject = makeObject . unRTCPeerConnection

instance IsEventTarget RTCPeerConnection

instance IsGObject RTCPeerConnection where
  typeGType _ = gTypeRTCPeerConnection
  {-# INLINE typeGType #-}

noRTCPeerConnection :: Maybe RTCPeerConnection
noRTCPeerConnection = Nothing
{-# INLINE noRTCPeerConnection #-}

gTypeRTCPeerConnection :: JSM GType
gTypeRTCPeerConnection = GType . Object <$> jsg "RTCPeerConnection"

-- | Functions for this interface are in "JSDOM.RTCPeerConnectionIceErrorEvent" (webrtc).
newtype RTCPeerConnectionIceErrorEvent = RTCPeerConnectionIceErrorEvent { unRTCPeerConnectionIceErrorEvent :: JSVal }

instance PToJSVal RTCPeerConnectionIceErrorEvent where
  pToJSVal = unRTCPeerConnectionIceErrorEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCPeerConnectionIceErrorEvent where
  pFromJSVal = RTCPeerConnectionIceErrorEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCPeerConnectionIceErrorEvent where
  toJSVal = return . unRTCPeerConnectionIceErrorEvent
  {-# INLINE toJSVal #-}

instance FromJSVal RTCPeerConnectionIceErrorEvent where
  fromJSVal v = fmap RTCPeerConnectionIceErrorEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCPeerConnectionIceErrorEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCPeerConnectionIceErrorEvent where
  makeObject = makeObject . unRTCPeerConnectionIceErrorEvent

instance IsEvent RTCPeerConnectionIceErrorEvent

instance IsGObject RTCPeerConnectionIceErrorEvent where
  typeGType _ = gTypeRTCPeerConnectionIceErrorEvent
  {-# INLINE typeGType #-}

noRTCPeerConnectionIceErrorEvent :: Maybe RTCPeerConnectionIceErrorEvent
noRTCPeerConnectionIceErrorEvent = Nothing
{-# INLINE noRTCPeerConnectionIceErrorEvent #-}

gTypeRTCPeerConnectionIceErrorEvent :: JSM GType
gTypeRTCPeerConnectionIceErrorEvent = GType . Object <$> jsg "RTCPeerConnectionIceErrorEvent"

-- | Dictionary RTCPeerConnectionIceErrorEventInit (webrtc)
newtype RTCPeerConnectionIceErrorEventInit = RTCPeerConnectionIceErrorEventInit { unRTCPeerConnectionIceErrorEventInit :: JSVal }

instance PToJSVal RTCPeerConnectionIceErrorEventInit where
  pToJSVal = unRTCPeerConnectionIceErrorEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCPeerConnectionIceErrorEventInit where
  pFromJSVal = RTCPeerConnectionIceErrorEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCPeerConnectionIceErrorEventInit where
  toJSVal = return . unRTCPeerConnectionIceErrorEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal RTCPeerConnectionIceErrorEventInit where
  fromJSVal v = fmap RTCPeerConnectionIceErrorEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCPeerConnectionIceErrorEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCPeerConnectionIceErrorEventInit where
  makeObject = makeObject . unRTCPeerConnectionIceErrorEventInit

instance IsEventInit RTCPeerConnectionIceErrorEventInit

instance IsGObject RTCPeerConnectionIceErrorEventInit where
  typeGType _ = gTypeRTCPeerConnectionIceErrorEventInit
  {-# INLINE typeGType #-}

noRTCPeerConnectionIceErrorEventInit :: Maybe RTCPeerConnectionIceErrorEventInit
noRTCPeerConnectionIceErrorEventInit = Nothing
{-# INLINE noRTCPeerConnectionIceErrorEventInit #-}

gTypeRTCPeerConnectionIceErrorEventInit :: JSM GType
gTypeRTCPeerConnectionIceErrorEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCPeerConnectionIceEvent" (webrtc).
newtype RTCPeerConnectionIceEvent = RTCPeerConnectionIceEvent { unRTCPeerConnectionIceEvent :: JSVal }

instance PToJSVal RTCPeerConnectionIceEvent where
  pToJSVal = unRTCPeerConnectionIceEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCPeerConnectionIceEvent where
  pFromJSVal = RTCPeerConnectionIceEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCPeerConnectionIceEvent where
  toJSVal = return . unRTCPeerConnectionIceEvent
  {-# INLINE toJSVal #-}

instance FromJSVal RTCPeerConnectionIceEvent where
  fromJSVal v = fmap RTCPeerConnectionIceEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCPeerConnectionIceEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCPeerConnectionIceEvent where
  makeObject = makeObject . unRTCPeerConnectionIceEvent

instance IsEvent RTCPeerConnectionIceEvent

instance IsGObject RTCPeerConnectionIceEvent where
  typeGType _ = gTypeRTCPeerConnectionIceEvent
  {-# INLINE typeGType #-}

noRTCPeerConnectionIceEvent :: Maybe RTCPeerConnectionIceEvent
noRTCPeerConnectionIceEvent = Nothing
{-# INLINE noRTCPeerConnectionIceEvent #-}

gTypeRTCPeerConnectionIceEvent :: JSM GType
gTypeRTCPeerConnectionIceEvent = GType . Object <$> jsg "RTCPeerConnectionIceEvent"

-- | Dictionary RTCPeerConnectionIceEventInit (webrtc)
newtype RTCPeerConnectionIceEventInit = RTCPeerConnectionIceEventInit { unRTCPeerConnectionIceEventInit :: JSVal }

instance PToJSVal RTCPeerConnectionIceEventInit where
  pToJSVal = unRTCPeerConnectionIceEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCPeerConnectionIceEventInit where
  pFromJSVal = RTCPeerConnectionIceEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCPeerConnectionIceEventInit where
  toJSVal = return . unRTCPeerConnectionIceEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal RTCPeerConnectionIceEventInit where
  fromJSVal v = fmap RTCPeerConnectionIceEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCPeerConnectionIceEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCPeerConnectionIceEventInit where
  makeObject = makeObject . unRTCPeerConnectionIceEventInit

instance IsEventInit RTCPeerConnectionIceEventInit

instance IsGObject RTCPeerConnectionIceEventInit where
  typeGType _ = gTypeRTCPeerConnectionIceEventInit
  {-# INLINE typeGType #-}

noRTCPeerConnectionIceEventInit :: Maybe RTCPeerConnectionIceEventInit
noRTCPeerConnectionIceEventInit = Nothing
{-# INLINE noRTCPeerConnectionIceEventInit #-}

gTypeRTCPeerConnectionIceEventInit :: JSM GType
gTypeRTCPeerConnectionIceEventInit = GType . Object <$> jsg "Object"

-- | Dictionary RTCRtcpParameters (webrtc)
newtype RTCRtcpParameters = RTCRtcpParameters { unRTCRtcpParameters :: JSVal }

instance PToJSVal RTCRtcpParameters where
  pToJSVal = unRTCRtcpParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtcpParameters where
  pFromJSVal = RTCRtcpParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtcpParameters where
  toJSVal = return . unRTCRtcpParameters
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtcpParameters where
  fromJSVal v = fmap RTCRtcpParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtcpParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtcpParameters where
  makeObject = makeObject . unRTCRtcpParameters


instance IsGObject RTCRtcpParameters where
  typeGType _ = gTypeRTCRtcpParameters
  {-# INLINE typeGType #-}

noRTCRtcpParameters :: Maybe RTCRtcpParameters
noRTCRtcpParameters = Nothing
{-# INLINE noRTCRtcpParameters #-}

gTypeRTCRtcpParameters :: JSM GType
gTypeRTCRtcpParameters = GType . Object <$> jsg "Object"

-- | Dictionary RTCRtpCapabilities (webrtc)
newtype RTCRtpCapabilities = RTCRtpCapabilities { unRTCRtpCapabilities :: JSVal }

instance PToJSVal RTCRtpCapabilities where
  pToJSVal = unRTCRtpCapabilities
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpCapabilities where
  pFromJSVal = RTCRtpCapabilities
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpCapabilities where
  toJSVal = return . unRTCRtpCapabilities
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpCapabilities where
  fromJSVal v = fmap RTCRtpCapabilities <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpCapabilities
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpCapabilities where
  makeObject = makeObject . unRTCRtpCapabilities


instance IsGObject RTCRtpCapabilities where
  typeGType _ = gTypeRTCRtpCapabilities
  {-# INLINE typeGType #-}

noRTCRtpCapabilities :: Maybe RTCRtpCapabilities
noRTCRtpCapabilities = Nothing
{-# INLINE noRTCRtpCapabilities #-}

gTypeRTCRtpCapabilities :: JSM GType
gTypeRTCRtpCapabilities = GType . Object <$> jsg "Object"

-- | Dictionary RTCRtpCodec (webrtc)
newtype RTCRtpCodec = RTCRtpCodec { unRTCRtpCodec :: JSVal }

instance PToJSVal RTCRtpCodec where
  pToJSVal = unRTCRtpCodec
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpCodec where
  pFromJSVal = RTCRtpCodec
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpCodec where
  toJSVal = return . unRTCRtpCodec
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpCodec where
  fromJSVal v = fmap RTCRtpCodec <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpCodec
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpCodec where
  makeObject = makeObject . unRTCRtpCodec

class (IsGObject o) => IsRTCRtpCodec o
toRTCRtpCodec :: IsRTCRtpCodec o => o -> RTCRtpCodec
toRTCRtpCodec = RTCRtpCodec . coerce

instance IsRTCRtpCodec RTCRtpCodec

instance IsGObject RTCRtpCodec where
  typeGType _ = gTypeRTCRtpCodec
  {-# INLINE typeGType #-}

noRTCRtpCodec :: Maybe RTCRtpCodec
noRTCRtpCodec = Nothing
{-# INLINE noRTCRtpCodec #-}

gTypeRTCRtpCodec :: JSM GType
gTypeRTCRtpCodec = GType . Object <$> jsg "Object"

-- | Dictionary RTCRtpCodecParameters (webrtc)
newtype RTCRtpCodecParameters = RTCRtpCodecParameters { unRTCRtpCodecParameters :: JSVal }

instance PToJSVal RTCRtpCodecParameters where
  pToJSVal = unRTCRtpCodecParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpCodecParameters where
  pFromJSVal = RTCRtpCodecParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpCodecParameters where
  toJSVal = return . unRTCRtpCodecParameters
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpCodecParameters where
  fromJSVal v = fmap RTCRtpCodecParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpCodecParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpCodecParameters where
  makeObject = makeObject . unRTCRtpCodecParameters

instance IsRTCRtpCodec RTCRtpCodecParameters

instance IsGObject RTCRtpCodecParameters where
  typeGType _ = gTypeRTCRtpCodecParameters
  {-# INLINE typeGType #-}

noRTCRtpCodecParameters :: Maybe RTCRtpCodecParameters
noRTCRtpCodecParameters = Nothing
{-# INLINE noRTCRtpCodecParameters #-}

gTypeRTCRtpCodecParameters :: JSM GType
gTypeRTCRtpCodecParameters = GType . Object <$> jsg "Object"

-- | Dictionary RTCRtpCodingParameters (webrtc)
newtype RTCRtpCodingParameters = RTCRtpCodingParameters { unRTCRtpCodingParameters :: JSVal }

instance PToJSVal RTCRtpCodingParameters where
  pToJSVal = unRTCRtpCodingParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpCodingParameters where
  pFromJSVal = RTCRtpCodingParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpCodingParameters where
  toJSVal = return . unRTCRtpCodingParameters
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpCodingParameters where
  fromJSVal v = fmap RTCRtpCodingParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpCodingParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpCodingParameters where
  makeObject = makeObject . unRTCRtpCodingParameters

class (IsGObject o) => IsRTCRtpCodingParameters o
toRTCRtpCodingParameters :: IsRTCRtpCodingParameters o => o -> RTCRtpCodingParameters
toRTCRtpCodingParameters = RTCRtpCodingParameters . coerce

instance IsRTCRtpCodingParameters RTCRtpCodingParameters

instance IsGObject RTCRtpCodingParameters where
  typeGType _ = gTypeRTCRtpCodingParameters
  {-# INLINE typeGType #-}

noRTCRtpCodingParameters :: Maybe RTCRtpCodingParameters
noRTCRtpCodingParameters = Nothing
{-# INLINE noRTCRtpCodingParameters #-}

gTypeRTCRtpCodingParameters :: JSM GType
gTypeRTCRtpCodingParameters = GType . Object <$> jsg "Object"

-- | Dictionary RTCRtpContributingSource (webrtc)
newtype RTCRtpContributingSource = RTCRtpContributingSource { unRTCRtpContributingSource :: JSVal }

instance PToJSVal RTCRtpContributingSource where
  pToJSVal = unRTCRtpContributingSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpContributingSource where
  pFromJSVal = RTCRtpContributingSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpContributingSource where
  toJSVal = return . unRTCRtpContributingSource
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpContributingSource where
  fromJSVal v = fmap RTCRtpContributingSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpContributingSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpContributingSource where
  makeObject = makeObject . unRTCRtpContributingSource

class (IsGObject o) => IsRTCRtpContributingSource o
toRTCRtpContributingSource :: IsRTCRtpContributingSource o => o -> RTCRtpContributingSource
toRTCRtpContributingSource = RTCRtpContributingSource . coerce

instance IsRTCRtpContributingSource RTCRtpContributingSource

instance IsGObject RTCRtpContributingSource where
  typeGType _ = gTypeRTCRtpContributingSource
  {-# INLINE typeGType #-}

noRTCRtpContributingSource :: Maybe RTCRtpContributingSource
noRTCRtpContributingSource = Nothing
{-# INLINE noRTCRtpContributingSource #-}

gTypeRTCRtpContributingSource :: JSM GType
gTypeRTCRtpContributingSource = GType . Object <$> jsg "Object"

-- | Dictionary RTCRtpEncodingParameters (webrtc)
newtype RTCRtpEncodingParameters = RTCRtpEncodingParameters { unRTCRtpEncodingParameters :: JSVal }

instance PToJSVal RTCRtpEncodingParameters where
  pToJSVal = unRTCRtpEncodingParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpEncodingParameters where
  pFromJSVal = RTCRtpEncodingParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpEncodingParameters where
  toJSVal = return . unRTCRtpEncodingParameters
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpEncodingParameters where
  fromJSVal v = fmap RTCRtpEncodingParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpEncodingParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpEncodingParameters where
  makeObject = makeObject . unRTCRtpEncodingParameters

instance IsRTCRtpCodingParameters RTCRtpEncodingParameters

instance IsGObject RTCRtpEncodingParameters where
  typeGType _ = gTypeRTCRtpEncodingParameters
  {-# INLINE typeGType #-}

noRTCRtpEncodingParameters :: Maybe RTCRtpEncodingParameters
noRTCRtpEncodingParameters = Nothing
{-# INLINE noRTCRtpEncodingParameters #-}

gTypeRTCRtpEncodingParameters :: JSM GType
gTypeRTCRtpEncodingParameters = GType . Object <$> jsg "Object"

-- | Dictionary RTCRtpHeaderExtensionCapability (webrtc)
newtype RTCRtpHeaderExtensionCapability = RTCRtpHeaderExtensionCapability { unRTCRtpHeaderExtensionCapability :: JSVal }

instance PToJSVal RTCRtpHeaderExtensionCapability where
  pToJSVal = unRTCRtpHeaderExtensionCapability
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpHeaderExtensionCapability where
  pFromJSVal = RTCRtpHeaderExtensionCapability
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpHeaderExtensionCapability where
  toJSVal = return . unRTCRtpHeaderExtensionCapability
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpHeaderExtensionCapability where
  fromJSVal v = fmap RTCRtpHeaderExtensionCapability <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpHeaderExtensionCapability
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpHeaderExtensionCapability where
  makeObject = makeObject . unRTCRtpHeaderExtensionCapability


instance IsGObject RTCRtpHeaderExtensionCapability where
  typeGType _ = gTypeRTCRtpHeaderExtensionCapability
  {-# INLINE typeGType #-}

noRTCRtpHeaderExtensionCapability :: Maybe RTCRtpHeaderExtensionCapability
noRTCRtpHeaderExtensionCapability = Nothing
{-# INLINE noRTCRtpHeaderExtensionCapability #-}

gTypeRTCRtpHeaderExtensionCapability :: JSM GType
gTypeRTCRtpHeaderExtensionCapability = GType . Object <$> jsg "Object"

-- | Dictionary RTCRtpHeaderExtensionParameters (webrtc)
newtype RTCRtpHeaderExtensionParameters = RTCRtpHeaderExtensionParameters { unRTCRtpHeaderExtensionParameters :: JSVal }

instance PToJSVal RTCRtpHeaderExtensionParameters where
  pToJSVal = unRTCRtpHeaderExtensionParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpHeaderExtensionParameters where
  pFromJSVal = RTCRtpHeaderExtensionParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpHeaderExtensionParameters where
  toJSVal = return . unRTCRtpHeaderExtensionParameters
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpHeaderExtensionParameters where
  fromJSVal v = fmap RTCRtpHeaderExtensionParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpHeaderExtensionParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpHeaderExtensionParameters where
  makeObject = makeObject . unRTCRtpHeaderExtensionParameters


instance IsGObject RTCRtpHeaderExtensionParameters where
  typeGType _ = gTypeRTCRtpHeaderExtensionParameters
  {-# INLINE typeGType #-}

noRTCRtpHeaderExtensionParameters :: Maybe RTCRtpHeaderExtensionParameters
noRTCRtpHeaderExtensionParameters = Nothing
{-# INLINE noRTCRtpHeaderExtensionParameters #-}

gTypeRTCRtpHeaderExtensionParameters :: JSM GType
gTypeRTCRtpHeaderExtensionParameters = GType . Object <$> jsg "Object"

-- | Dictionary RTCRtpParameters (webrtc)
newtype RTCRtpParameters = RTCRtpParameters { unRTCRtpParameters :: JSVal }

instance PToJSVal RTCRtpParameters where
  pToJSVal = unRTCRtpParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpParameters where
  pFromJSVal = RTCRtpParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpParameters where
  toJSVal = return . unRTCRtpParameters
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpParameters where
  fromJSVal v = fmap RTCRtpParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpParameters where
  makeObject = makeObject . unRTCRtpParameters

class (IsGObject o) => IsRTCRtpParameters o
toRTCRtpParameters :: IsRTCRtpParameters o => o -> RTCRtpParameters
toRTCRtpParameters = RTCRtpParameters . coerce

instance IsRTCRtpParameters RTCRtpParameters

instance IsGObject RTCRtpParameters where
  typeGType _ = gTypeRTCRtpParameters
  {-# INLINE typeGType #-}

noRTCRtpParameters :: Maybe RTCRtpParameters
noRTCRtpParameters = Nothing
{-# INLINE noRTCRtpParameters #-}

gTypeRTCRtpParameters :: JSM GType
gTypeRTCRtpParameters = GType . Object <$> jsg "Object"

-- | Dictionary RTCRtpReceiveParameters (webrtc)
newtype RTCRtpReceiveParameters = RTCRtpReceiveParameters { unRTCRtpReceiveParameters :: JSVal }

instance PToJSVal RTCRtpReceiveParameters where
  pToJSVal = unRTCRtpReceiveParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpReceiveParameters where
  pFromJSVal = RTCRtpReceiveParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpReceiveParameters where
  toJSVal = return . unRTCRtpReceiveParameters
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpReceiveParameters where
  fromJSVal v = fmap RTCRtpReceiveParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpReceiveParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpReceiveParameters where
  makeObject = makeObject . unRTCRtpReceiveParameters

instance IsRTCRtpParameters RTCRtpReceiveParameters

instance IsGObject RTCRtpReceiveParameters where
  typeGType _ = gTypeRTCRtpReceiveParameters
  {-# INLINE typeGType #-}

noRTCRtpReceiveParameters :: Maybe RTCRtpReceiveParameters
noRTCRtpReceiveParameters = Nothing
{-# INLINE noRTCRtpReceiveParameters #-}

gTypeRTCRtpReceiveParameters :: JSM GType
gTypeRTCRtpReceiveParameters = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCRtpReceiver" (webrtc).
newtype RTCRtpReceiver = RTCRtpReceiver { unRTCRtpReceiver :: JSVal }

instance PToJSVal RTCRtpReceiver where
  pToJSVal = unRTCRtpReceiver
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpReceiver where
  pFromJSVal = RTCRtpReceiver
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpReceiver where
  toJSVal = return . unRTCRtpReceiver
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpReceiver where
  fromJSVal v = fmap RTCRtpReceiver <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpReceiver
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpReceiver where
  makeObject = makeObject . unRTCRtpReceiver


instance IsGObject RTCRtpReceiver where
  typeGType _ = gTypeRTCRtpReceiver
  {-# INLINE typeGType #-}

noRTCRtpReceiver :: Maybe RTCRtpReceiver
noRTCRtpReceiver = Nothing
{-# INLINE noRTCRtpReceiver #-}

gTypeRTCRtpReceiver :: JSM GType
gTypeRTCRtpReceiver = GType . Object <$> jsg "RTCRtpReceiver"

-- | Functions for this interface are in "JSDOM.RTCRtpSFrameDecryptor" (webrtc-encoded-transform).
newtype RTCRtpSFrameDecryptor = RTCRtpSFrameDecryptor { unRTCRtpSFrameDecryptor :: JSVal }

instance PToJSVal RTCRtpSFrameDecryptor where
  pToJSVal = unRTCRtpSFrameDecryptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpSFrameDecryptor where
  pFromJSVal = RTCRtpSFrameDecryptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpSFrameDecryptor where
  toJSVal = return . unRTCRtpSFrameDecryptor
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpSFrameDecryptor where
  fromJSVal v = fmap RTCRtpSFrameDecryptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpSFrameDecryptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpSFrameDecryptor where
  makeObject = makeObject . unRTCRtpSFrameDecryptor

instance IsEventTarget RTCRtpSFrameDecryptor

instance IsGObject RTCRtpSFrameDecryptor where
  typeGType _ = gTypeRTCRtpSFrameDecryptor
  {-# INLINE typeGType #-}

noRTCRtpSFrameDecryptor :: Maybe RTCRtpSFrameDecryptor
noRTCRtpSFrameDecryptor = Nothing
{-# INLINE noRTCRtpSFrameDecryptor #-}

gTypeRTCRtpSFrameDecryptor :: JSM GType
gTypeRTCRtpSFrameDecryptor = GType . Object <$> jsg "RTCRtpSFrameDecryptor"

-- | Functions for this interface are in "JSDOM.RTCRtpSFrameEncryptor" (webrtc-encoded-transform).
newtype RTCRtpSFrameEncryptor = RTCRtpSFrameEncryptor { unRTCRtpSFrameEncryptor :: JSVal }

instance PToJSVal RTCRtpSFrameEncryptor where
  pToJSVal = unRTCRtpSFrameEncryptor
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpSFrameEncryptor where
  pFromJSVal = RTCRtpSFrameEncryptor
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpSFrameEncryptor where
  toJSVal = return . unRTCRtpSFrameEncryptor
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpSFrameEncryptor where
  fromJSVal v = fmap RTCRtpSFrameEncryptor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpSFrameEncryptor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpSFrameEncryptor where
  makeObject = makeObject . unRTCRtpSFrameEncryptor


instance IsGObject RTCRtpSFrameEncryptor where
  typeGType _ = gTypeRTCRtpSFrameEncryptor
  {-# INLINE typeGType #-}

noRTCRtpSFrameEncryptor :: Maybe RTCRtpSFrameEncryptor
noRTCRtpSFrameEncryptor = Nothing
{-# INLINE noRTCRtpSFrameEncryptor #-}

gTypeRTCRtpSFrameEncryptor :: JSM GType
gTypeRTCRtpSFrameEncryptor = GType . Object <$> jsg "RTCRtpSFrameEncryptor"

-- | Functions for this interface are in "JSDOM.RTCRtpScriptTransform" (webrtc-encoded-transform).
newtype RTCRtpScriptTransform = RTCRtpScriptTransform { unRTCRtpScriptTransform :: JSVal }

instance PToJSVal RTCRtpScriptTransform where
  pToJSVal = unRTCRtpScriptTransform
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpScriptTransform where
  pFromJSVal = RTCRtpScriptTransform
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpScriptTransform where
  toJSVal = return . unRTCRtpScriptTransform
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpScriptTransform where
  fromJSVal v = fmap RTCRtpScriptTransform <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpScriptTransform
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpScriptTransform where
  makeObject = makeObject . unRTCRtpScriptTransform


instance IsGObject RTCRtpScriptTransform where
  typeGType _ = gTypeRTCRtpScriptTransform
  {-# INLINE typeGType #-}

noRTCRtpScriptTransform :: Maybe RTCRtpScriptTransform
noRTCRtpScriptTransform = Nothing
{-# INLINE noRTCRtpScriptTransform #-}

gTypeRTCRtpScriptTransform :: JSM GType
gTypeRTCRtpScriptTransform = GType . Object <$> jsg "RTCRtpScriptTransform"

-- | Functions for this interface are in "JSDOM.RTCRtpScriptTransformer" (webrtc-encoded-transform).
newtype RTCRtpScriptTransformer = RTCRtpScriptTransformer { unRTCRtpScriptTransformer :: JSVal }

instance PToJSVal RTCRtpScriptTransformer where
  pToJSVal = unRTCRtpScriptTransformer
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpScriptTransformer where
  pFromJSVal = RTCRtpScriptTransformer
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpScriptTransformer where
  toJSVal = return . unRTCRtpScriptTransformer
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpScriptTransformer where
  fromJSVal v = fmap RTCRtpScriptTransformer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpScriptTransformer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpScriptTransformer where
  makeObject = makeObject . unRTCRtpScriptTransformer

instance IsEventTarget RTCRtpScriptTransformer

instance IsGObject RTCRtpScriptTransformer where
  typeGType _ = gTypeRTCRtpScriptTransformer
  {-# INLINE typeGType #-}

noRTCRtpScriptTransformer :: Maybe RTCRtpScriptTransformer
noRTCRtpScriptTransformer = Nothing
{-# INLINE noRTCRtpScriptTransformer #-}

gTypeRTCRtpScriptTransformer :: JSM GType
gTypeRTCRtpScriptTransformer = GType . Object <$> jsg "RTCRtpScriptTransformer"

-- | Dictionary RTCRtpSendParameters (webrtc)
newtype RTCRtpSendParameters = RTCRtpSendParameters { unRTCRtpSendParameters :: JSVal }

instance PToJSVal RTCRtpSendParameters where
  pToJSVal = unRTCRtpSendParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpSendParameters where
  pFromJSVal = RTCRtpSendParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpSendParameters where
  toJSVal = return . unRTCRtpSendParameters
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpSendParameters where
  fromJSVal v = fmap RTCRtpSendParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpSendParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpSendParameters where
  makeObject = makeObject . unRTCRtpSendParameters

instance IsRTCRtpParameters RTCRtpSendParameters

instance IsGObject RTCRtpSendParameters where
  typeGType _ = gTypeRTCRtpSendParameters
  {-# INLINE typeGType #-}

noRTCRtpSendParameters :: Maybe RTCRtpSendParameters
noRTCRtpSendParameters = Nothing
{-# INLINE noRTCRtpSendParameters #-}

gTypeRTCRtpSendParameters :: JSM GType
gTypeRTCRtpSendParameters = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCRtpSender" (webrtc).
newtype RTCRtpSender = RTCRtpSender { unRTCRtpSender :: JSVal }

instance PToJSVal RTCRtpSender where
  pToJSVal = unRTCRtpSender
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpSender where
  pFromJSVal = RTCRtpSender
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpSender where
  toJSVal = return . unRTCRtpSender
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpSender where
  fromJSVal v = fmap RTCRtpSender <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpSender
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpSender where
  makeObject = makeObject . unRTCRtpSender


instance IsGObject RTCRtpSender where
  typeGType _ = gTypeRTCRtpSender
  {-# INLINE typeGType #-}

noRTCRtpSender :: Maybe RTCRtpSender
noRTCRtpSender = Nothing
{-# INLINE noRTCRtpSender #-}

gTypeRTCRtpSender :: JSM GType
gTypeRTCRtpSender = GType . Object <$> jsg "RTCRtpSender"

-- | Dictionary RTCRtpSynchronizationSource (webrtc)
newtype RTCRtpSynchronizationSource = RTCRtpSynchronizationSource { unRTCRtpSynchronizationSource :: JSVal }

instance PToJSVal RTCRtpSynchronizationSource where
  pToJSVal = unRTCRtpSynchronizationSource
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpSynchronizationSource where
  pFromJSVal = RTCRtpSynchronizationSource
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpSynchronizationSource where
  toJSVal = return . unRTCRtpSynchronizationSource
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpSynchronizationSource where
  fromJSVal v = fmap RTCRtpSynchronizationSource <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpSynchronizationSource
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpSynchronizationSource where
  makeObject = makeObject . unRTCRtpSynchronizationSource

instance IsRTCRtpContributingSource RTCRtpSynchronizationSource

instance IsGObject RTCRtpSynchronizationSource where
  typeGType _ = gTypeRTCRtpSynchronizationSource
  {-# INLINE typeGType #-}

noRTCRtpSynchronizationSource :: Maybe RTCRtpSynchronizationSource
noRTCRtpSynchronizationSource = Nothing
{-# INLINE noRTCRtpSynchronizationSource #-}

gTypeRTCRtpSynchronizationSource :: JSM GType
gTypeRTCRtpSynchronizationSource = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCRtpTransceiver" (webrtc).
newtype RTCRtpTransceiver = RTCRtpTransceiver { unRTCRtpTransceiver :: JSVal }

instance PToJSVal RTCRtpTransceiver where
  pToJSVal = unRTCRtpTransceiver
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpTransceiver where
  pFromJSVal = RTCRtpTransceiver
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpTransceiver where
  toJSVal = return . unRTCRtpTransceiver
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpTransceiver where
  fromJSVal v = fmap RTCRtpTransceiver <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpTransceiver
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpTransceiver where
  makeObject = makeObject . unRTCRtpTransceiver


instance IsGObject RTCRtpTransceiver where
  typeGType _ = gTypeRTCRtpTransceiver
  {-# INLINE typeGType #-}

noRTCRtpTransceiver :: Maybe RTCRtpTransceiver
noRTCRtpTransceiver = Nothing
{-# INLINE noRTCRtpTransceiver #-}

gTypeRTCRtpTransceiver :: JSM GType
gTypeRTCRtpTransceiver = GType . Object <$> jsg "RTCRtpTransceiver"

-- | Dictionary RTCRtpTransceiverInit (webrtc)
newtype RTCRtpTransceiverInit = RTCRtpTransceiverInit { unRTCRtpTransceiverInit :: JSVal }

instance PToJSVal RTCRtpTransceiverInit where
  pToJSVal = unRTCRtpTransceiverInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCRtpTransceiverInit where
  pFromJSVal = RTCRtpTransceiverInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCRtpTransceiverInit where
  toJSVal = return . unRTCRtpTransceiverInit
  {-# INLINE toJSVal #-}

instance FromJSVal RTCRtpTransceiverInit where
  fromJSVal v = fmap RTCRtpTransceiverInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCRtpTransceiverInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCRtpTransceiverInit where
  makeObject = makeObject . unRTCRtpTransceiverInit


instance IsGObject RTCRtpTransceiverInit where
  typeGType _ = gTypeRTCRtpTransceiverInit
  {-# INLINE typeGType #-}

noRTCRtpTransceiverInit :: Maybe RTCRtpTransceiverInit
noRTCRtpTransceiverInit = Nothing
{-# INLINE noRTCRtpTransceiverInit #-}

gTypeRTCRtpTransceiverInit :: JSM GType
gTypeRTCRtpTransceiverInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCSctpTransport" (webrtc).
newtype RTCSctpTransport = RTCSctpTransport { unRTCSctpTransport :: JSVal }

instance PToJSVal RTCSctpTransport where
  pToJSVal = unRTCSctpTransport
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCSctpTransport where
  pFromJSVal = RTCSctpTransport
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCSctpTransport where
  toJSVal = return . unRTCSctpTransport
  {-# INLINE toJSVal #-}

instance FromJSVal RTCSctpTransport where
  fromJSVal v = fmap RTCSctpTransport <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCSctpTransport
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCSctpTransport where
  makeObject = makeObject . unRTCSctpTransport

instance IsEventTarget RTCSctpTransport

instance IsGObject RTCSctpTransport where
  typeGType _ = gTypeRTCSctpTransport
  {-# INLINE typeGType #-}

noRTCSctpTransport :: Maybe RTCSctpTransport
noRTCSctpTransport = Nothing
{-# INLINE noRTCSctpTransport #-}

gTypeRTCSctpTransport :: JSM GType
gTypeRTCSctpTransport = GType . Object <$> jsg "RTCSctpTransport"

-- | Functions for this interface are in "JSDOM.RTCSessionDescription" (webrtc).
newtype RTCSessionDescription = RTCSessionDescription { unRTCSessionDescription :: JSVal }

instance PToJSVal RTCSessionDescription where
  pToJSVal = unRTCSessionDescription
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCSessionDescription where
  pFromJSVal = RTCSessionDescription
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCSessionDescription where
  toJSVal = return . unRTCSessionDescription
  {-# INLINE toJSVal #-}

instance FromJSVal RTCSessionDescription where
  fromJSVal v = fmap RTCSessionDescription <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCSessionDescription
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCSessionDescription where
  makeObject = makeObject . unRTCSessionDescription


instance IsGObject RTCSessionDescription where
  typeGType _ = gTypeRTCSessionDescription
  {-# INLINE typeGType #-}

noRTCSessionDescription :: Maybe RTCSessionDescription
noRTCSessionDescription = Nothing
{-# INLINE noRTCSessionDescription #-}

gTypeRTCSessionDescription :: JSM GType
gTypeRTCSessionDescription = GType . Object <$> jsg "RTCSessionDescription"

-- | Dictionary RTCSessionDescriptionInit (webrtc)
newtype RTCSessionDescriptionInit = RTCSessionDescriptionInit { unRTCSessionDescriptionInit :: JSVal }

instance PToJSVal RTCSessionDescriptionInit where
  pToJSVal = unRTCSessionDescriptionInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCSessionDescriptionInit where
  pFromJSVal = RTCSessionDescriptionInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCSessionDescriptionInit where
  toJSVal = return . unRTCSessionDescriptionInit
  {-# INLINE toJSVal #-}

instance FromJSVal RTCSessionDescriptionInit where
  fromJSVal v = fmap RTCSessionDescriptionInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCSessionDescriptionInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCSessionDescriptionInit where
  makeObject = makeObject . unRTCSessionDescriptionInit


instance IsGObject RTCSessionDescriptionInit where
  typeGType _ = gTypeRTCSessionDescriptionInit
  {-# INLINE typeGType #-}

noRTCSessionDescriptionInit :: Maybe RTCSessionDescriptionInit
noRTCSessionDescriptionInit = Nothing
{-# INLINE noRTCSessionDescriptionInit #-}

gTypeRTCSessionDescriptionInit :: JSM GType
gTypeRTCSessionDescriptionInit = GType . Object <$> jsg "Object"

-- | Dictionary RTCSetParameterOptions (webrtc)
newtype RTCSetParameterOptions = RTCSetParameterOptions { unRTCSetParameterOptions :: JSVal }

instance PToJSVal RTCSetParameterOptions where
  pToJSVal = unRTCSetParameterOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCSetParameterOptions where
  pFromJSVal = RTCSetParameterOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCSetParameterOptions where
  toJSVal = return . unRTCSetParameterOptions
  {-# INLINE toJSVal #-}

instance FromJSVal RTCSetParameterOptions where
  fromJSVal v = fmap RTCSetParameterOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCSetParameterOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCSetParameterOptions where
  makeObject = makeObject . unRTCSetParameterOptions


instance IsGObject RTCSetParameterOptions where
  typeGType _ = gTypeRTCSetParameterOptions
  {-# INLINE typeGType #-}

noRTCSetParameterOptions :: Maybe RTCSetParameterOptions
noRTCSetParameterOptions = Nothing
{-# INLINE noRTCSetParameterOptions #-}

gTypeRTCSetParameterOptions :: JSM GType
gTypeRTCSetParameterOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCStatsReport" (webrtc).
newtype RTCStatsReport = RTCStatsReport { unRTCStatsReport :: JSVal }

instance PToJSVal RTCStatsReport where
  pToJSVal = unRTCStatsReport
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCStatsReport where
  pFromJSVal = RTCStatsReport
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCStatsReport where
  toJSVal = return . unRTCStatsReport
  {-# INLINE toJSVal #-}

instance FromJSVal RTCStatsReport where
  fromJSVal v = fmap RTCStatsReport <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCStatsReport
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCStatsReport where
  makeObject = makeObject . unRTCStatsReport


instance IsGObject RTCStatsReport where
  typeGType _ = gTypeRTCStatsReport
  {-# INLINE typeGType #-}

noRTCStatsReport :: Maybe RTCStatsReport
noRTCStatsReport = Nothing
{-# INLINE noRTCStatsReport #-}

gTypeRTCStatsReport :: JSM GType
gTypeRTCStatsReport = GType . Object <$> jsg "RTCStatsReport"

-- | Functions for this interface are in "JSDOM.RTCTrackEvent" (webrtc).
newtype RTCTrackEvent = RTCTrackEvent { unRTCTrackEvent :: JSVal }

instance PToJSVal RTCTrackEvent where
  pToJSVal = unRTCTrackEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCTrackEvent where
  pFromJSVal = RTCTrackEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCTrackEvent where
  toJSVal = return . unRTCTrackEvent
  {-# INLINE toJSVal #-}

instance FromJSVal RTCTrackEvent where
  fromJSVal v = fmap RTCTrackEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCTrackEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCTrackEvent where
  makeObject = makeObject . unRTCTrackEvent

instance IsEvent RTCTrackEvent

instance IsGObject RTCTrackEvent where
  typeGType _ = gTypeRTCTrackEvent
  {-# INLINE typeGType #-}

noRTCTrackEvent :: Maybe RTCTrackEvent
noRTCTrackEvent = Nothing
{-# INLINE noRTCTrackEvent #-}

gTypeRTCTrackEvent :: JSM GType
gTypeRTCTrackEvent = GType . Object <$> jsg "RTCTrackEvent"

-- | Dictionary RTCTrackEventInit (webrtc)
newtype RTCTrackEventInit = RTCTrackEventInit { unRTCTrackEventInit :: JSVal }

instance PToJSVal RTCTrackEventInit where
  pToJSVal = unRTCTrackEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCTrackEventInit where
  pFromJSVal = RTCTrackEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCTrackEventInit where
  toJSVal = return . unRTCTrackEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal RTCTrackEventInit where
  fromJSVal v = fmap RTCTrackEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCTrackEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCTrackEventInit where
  makeObject = makeObject . unRTCTrackEventInit

instance IsEventInit RTCTrackEventInit

instance IsGObject RTCTrackEventInit where
  typeGType _ = gTypeRTCTrackEventInit
  {-# INLINE typeGType #-}

noRTCTrackEventInit :: Maybe RTCTrackEventInit
noRTCTrackEventInit = Nothing
{-# INLINE noRTCTrackEventInit #-}

gTypeRTCTrackEventInit :: JSM GType
gTypeRTCTrackEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RTCTransformEvent" (webrtc-encoded-transform).
newtype RTCTransformEvent = RTCTransformEvent { unRTCTransformEvent :: JSVal }

instance PToJSVal RTCTransformEvent where
  pToJSVal = unRTCTransformEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal RTCTransformEvent where
  pFromJSVal = RTCTransformEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal RTCTransformEvent where
  toJSVal = return . unRTCTransformEvent
  {-# INLINE toJSVal #-}

instance FromJSVal RTCTransformEvent where
  fromJSVal v = fmap RTCTransformEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RTCTransformEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RTCTransformEvent where
  makeObject = makeObject . unRTCTransformEvent

instance IsEvent RTCTransformEvent

instance IsGObject RTCTransformEvent where
  typeGType _ = gTypeRTCTransformEvent
  {-# INLINE typeGType #-}

noRTCTransformEvent :: Maybe RTCTransformEvent
noRTCTransformEvent = Nothing
{-# INLINE noRTCTransformEvent #-}

gTypeRTCTransformEvent :: JSM GType
gTypeRTCTransformEvent = GType . Object <$> jsg "RTCTransformEvent"

-- | Functions for this interface are in "JSDOM.RadioNodeList" (html).
newtype RadioNodeList = RadioNodeList { unRadioNodeList :: JSVal }

instance PToJSVal RadioNodeList where
  pToJSVal = unRadioNodeList
  {-# INLINE pToJSVal #-}

instance PFromJSVal RadioNodeList where
  pFromJSVal = RadioNodeList
  {-# INLINE pFromJSVal #-}

instance ToJSVal RadioNodeList where
  toJSVal = return . unRadioNodeList
  {-# INLINE toJSVal #-}

instance FromJSVal RadioNodeList where
  fromJSVal v = fmap RadioNodeList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RadioNodeList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RadioNodeList where
  makeObject = makeObject . unRadioNodeList

instance IsNodeList RadioNodeList

instance IsGObject RadioNodeList where
  typeGType _ = gTypeRadioNodeList
  {-# INLINE typeGType #-}

noRadioNodeList :: Maybe RadioNodeList
noRadioNodeList = Nothing
{-# INLINE noRadioNodeList #-}

gTypeRadioNodeList :: JSM GType
gTypeRadioNodeList = GType . Object <$> jsg "RadioNodeList"

-- | Functions for this interface are in "JSDOM.Range" (dom).
newtype Range = Range { unRange :: JSVal }

instance PToJSVal Range where
  pToJSVal = unRange
  {-# INLINE pToJSVal #-}

instance PFromJSVal Range where
  pFromJSVal = Range
  {-# INLINE pFromJSVal #-}

instance ToJSVal Range where
  toJSVal = return . unRange
  {-# INLINE toJSVal #-}

instance FromJSVal Range where
  fromJSVal v = fmap Range <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Range
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Range where
  makeObject = makeObject . unRange

instance IsAbstractRange Range

instance IsGObject Range where
  typeGType _ = gTypeRange
  {-# INLINE typeGType #-}

noRange :: Maybe Range
noRange = Nothing
{-# INLINE noRange #-}

gTypeRange :: JSM GType
gTypeRange = GType . Object <$> jsg "Range"

-- | Functions for this interface are in "JSDOM.ReadableByteStreamController" (streams).
newtype ReadableByteStreamController = ReadableByteStreamController { unReadableByteStreamController :: JSVal }

instance PToJSVal ReadableByteStreamController where
  pToJSVal = unReadableByteStreamController
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReadableByteStreamController where
  pFromJSVal = ReadableByteStreamController
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReadableByteStreamController where
  toJSVal = return . unReadableByteStreamController
  {-# INLINE toJSVal #-}

instance FromJSVal ReadableByteStreamController where
  fromJSVal v = fmap ReadableByteStreamController <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReadableByteStreamController
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReadableByteStreamController where
  makeObject = makeObject . unReadableByteStreamController


instance IsGObject ReadableByteStreamController where
  typeGType _ = gTypeReadableByteStreamController
  {-# INLINE typeGType #-}

noReadableByteStreamController :: Maybe ReadableByteStreamController
noReadableByteStreamController = Nothing
{-# INLINE noReadableByteStreamController #-}

gTypeReadableByteStreamController :: JSM GType
gTypeReadableByteStreamController = GType . Object <$> jsg "ReadableByteStreamController"

-- | Functions for this interface are in "JSDOM.ReadableStream" (streams).
newtype ReadableStream = ReadableStream { unReadableStream :: JSVal }

instance PToJSVal ReadableStream where
  pToJSVal = unReadableStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReadableStream where
  pFromJSVal = ReadableStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReadableStream where
  toJSVal = return . unReadableStream
  {-# INLINE toJSVal #-}

instance FromJSVal ReadableStream where
  fromJSVal v = fmap ReadableStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReadableStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReadableStream where
  makeObject = makeObject . unReadableStream

class (IsGObject o) => IsReadableStream o
toReadableStream :: IsReadableStream o => o -> ReadableStream
toReadableStream = ReadableStream . coerce

instance IsReadableStream ReadableStream

instance IsGObject ReadableStream where
  typeGType _ = gTypeReadableStream
  {-# INLINE typeGType #-}

noReadableStream :: Maybe ReadableStream
noReadableStream = Nothing
{-# INLINE noReadableStream #-}

gTypeReadableStream :: JSM GType
gTypeReadableStream = GType . Object <$> jsg "ReadableStream"

-- | Functions for this interface are in "JSDOM.ReadableStreamBYOBReader" (streams).
newtype ReadableStreamBYOBReader = ReadableStreamBYOBReader { unReadableStreamBYOBReader :: JSVal }

instance PToJSVal ReadableStreamBYOBReader where
  pToJSVal = unReadableStreamBYOBReader
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReadableStreamBYOBReader where
  pFromJSVal = ReadableStreamBYOBReader
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReadableStreamBYOBReader where
  toJSVal = return . unReadableStreamBYOBReader
  {-# INLINE toJSVal #-}

instance FromJSVal ReadableStreamBYOBReader where
  fromJSVal v = fmap ReadableStreamBYOBReader <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReadableStreamBYOBReader
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReadableStreamBYOBReader where
  makeObject = makeObject . unReadableStreamBYOBReader

instance IsReadableStreamGenericReader ReadableStreamBYOBReader

instance IsGObject ReadableStreamBYOBReader where
  typeGType _ = gTypeReadableStreamBYOBReader
  {-# INLINE typeGType #-}

noReadableStreamBYOBReader :: Maybe ReadableStreamBYOBReader
noReadableStreamBYOBReader = Nothing
{-# INLINE noReadableStreamBYOBReader #-}

gTypeReadableStreamBYOBReader :: JSM GType
gTypeReadableStreamBYOBReader = GType . Object <$> jsg "ReadableStreamBYOBReader"

-- | Dictionary ReadableStreamBYOBReaderReadOptions (streams)
newtype ReadableStreamBYOBReaderReadOptions = ReadableStreamBYOBReaderReadOptions { unReadableStreamBYOBReaderReadOptions :: JSVal }

instance PToJSVal ReadableStreamBYOBReaderReadOptions where
  pToJSVal = unReadableStreamBYOBReaderReadOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReadableStreamBYOBReaderReadOptions where
  pFromJSVal = ReadableStreamBYOBReaderReadOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReadableStreamBYOBReaderReadOptions where
  toJSVal = return . unReadableStreamBYOBReaderReadOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ReadableStreamBYOBReaderReadOptions where
  fromJSVal v = fmap ReadableStreamBYOBReaderReadOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReadableStreamBYOBReaderReadOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReadableStreamBYOBReaderReadOptions where
  makeObject = makeObject . unReadableStreamBYOBReaderReadOptions


instance IsGObject ReadableStreamBYOBReaderReadOptions where
  typeGType _ = gTypeReadableStreamBYOBReaderReadOptions
  {-# INLINE typeGType #-}

noReadableStreamBYOBReaderReadOptions :: Maybe ReadableStreamBYOBReaderReadOptions
noReadableStreamBYOBReaderReadOptions = Nothing
{-# INLINE noReadableStreamBYOBReaderReadOptions #-}

gTypeReadableStreamBYOBReaderReadOptions :: JSM GType
gTypeReadableStreamBYOBReaderReadOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ReadableStreamBYOBRequest" (streams).
newtype ReadableStreamBYOBRequest = ReadableStreamBYOBRequest { unReadableStreamBYOBRequest :: JSVal }

instance PToJSVal ReadableStreamBYOBRequest where
  pToJSVal = unReadableStreamBYOBRequest
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReadableStreamBYOBRequest where
  pFromJSVal = ReadableStreamBYOBRequest
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReadableStreamBYOBRequest where
  toJSVal = return . unReadableStreamBYOBRequest
  {-# INLINE toJSVal #-}

instance FromJSVal ReadableStreamBYOBRequest where
  fromJSVal v = fmap ReadableStreamBYOBRequest <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReadableStreamBYOBRequest
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReadableStreamBYOBRequest where
  makeObject = makeObject . unReadableStreamBYOBRequest


instance IsGObject ReadableStreamBYOBRequest where
  typeGType _ = gTypeReadableStreamBYOBRequest
  {-# INLINE typeGType #-}

noReadableStreamBYOBRequest :: Maybe ReadableStreamBYOBRequest
noReadableStreamBYOBRequest = Nothing
{-# INLINE noReadableStreamBYOBRequest #-}

gTypeReadableStreamBYOBRequest :: JSM GType
gTypeReadableStreamBYOBRequest = GType . Object <$> jsg "ReadableStreamBYOBRequest"

-- | Functions for this interface are in "JSDOM.ReadableStreamDefaultController" (streams).
newtype ReadableStreamDefaultController = ReadableStreamDefaultController { unReadableStreamDefaultController :: JSVal }

instance PToJSVal ReadableStreamDefaultController where
  pToJSVal = unReadableStreamDefaultController
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReadableStreamDefaultController where
  pFromJSVal = ReadableStreamDefaultController
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReadableStreamDefaultController where
  toJSVal = return . unReadableStreamDefaultController
  {-# INLINE toJSVal #-}

instance FromJSVal ReadableStreamDefaultController where
  fromJSVal v = fmap ReadableStreamDefaultController <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReadableStreamDefaultController
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReadableStreamDefaultController where
  makeObject = makeObject . unReadableStreamDefaultController


instance IsGObject ReadableStreamDefaultController where
  typeGType _ = gTypeReadableStreamDefaultController
  {-# INLINE typeGType #-}

noReadableStreamDefaultController :: Maybe ReadableStreamDefaultController
noReadableStreamDefaultController = Nothing
{-# INLINE noReadableStreamDefaultController #-}

gTypeReadableStreamDefaultController :: JSM GType
gTypeReadableStreamDefaultController = GType . Object <$> jsg "ReadableStreamDefaultController"

-- | Functions for this interface are in "JSDOM.ReadableStreamDefaultReader" (streams).
newtype ReadableStreamDefaultReader = ReadableStreamDefaultReader { unReadableStreamDefaultReader :: JSVal }

instance PToJSVal ReadableStreamDefaultReader where
  pToJSVal = unReadableStreamDefaultReader
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReadableStreamDefaultReader where
  pFromJSVal = ReadableStreamDefaultReader
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReadableStreamDefaultReader where
  toJSVal = return . unReadableStreamDefaultReader
  {-# INLINE toJSVal #-}

instance FromJSVal ReadableStreamDefaultReader where
  fromJSVal v = fmap ReadableStreamDefaultReader <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReadableStreamDefaultReader
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReadableStreamDefaultReader where
  makeObject = makeObject . unReadableStreamDefaultReader

instance IsReadableStreamGenericReader ReadableStreamDefaultReader

instance IsGObject ReadableStreamDefaultReader where
  typeGType _ = gTypeReadableStreamDefaultReader
  {-# INLINE typeGType #-}

noReadableStreamDefaultReader :: Maybe ReadableStreamDefaultReader
noReadableStreamDefaultReader = Nothing
{-# INLINE noReadableStreamDefaultReader #-}

gTypeReadableStreamDefaultReader :: JSM GType
gTypeReadableStreamDefaultReader = GType . Object <$> jsg "ReadableStreamDefaultReader"

-- | Functions for this interface are in "JSDOM.ReadableStreamGenericReader" (streams).
newtype ReadableStreamGenericReader = ReadableStreamGenericReader { unReadableStreamGenericReader :: JSVal }

instance PToJSVal ReadableStreamGenericReader where
  pToJSVal = unReadableStreamGenericReader
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReadableStreamGenericReader where
  pFromJSVal = ReadableStreamGenericReader
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReadableStreamGenericReader where
  toJSVal = return . unReadableStreamGenericReader
  {-# INLINE toJSVal #-}

instance FromJSVal ReadableStreamGenericReader where
  fromJSVal v = fmap ReadableStreamGenericReader <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReadableStreamGenericReader
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReadableStreamGenericReader where
  makeObject = makeObject . unReadableStreamGenericReader

class (IsGObject o) => IsReadableStreamGenericReader o
toReadableStreamGenericReader :: IsReadableStreamGenericReader o => o -> ReadableStreamGenericReader
toReadableStreamGenericReader = ReadableStreamGenericReader . coerce

instance IsReadableStreamGenericReader ReadableStreamGenericReader

instance IsGObject ReadableStreamGenericReader where
  typeGType _ = gTypeReadableStreamGenericReader
  {-# INLINE typeGType #-}

noReadableStreamGenericReader :: Maybe ReadableStreamGenericReader
noReadableStreamGenericReader = Nothing
{-# INLINE noReadableStreamGenericReader #-}

gTypeReadableStreamGenericReader :: JSM GType
gTypeReadableStreamGenericReader = GType . Object <$> jsg "Object"

-- | Dictionary ReadableStreamGetReaderOptions (streams)
newtype ReadableStreamGetReaderOptions = ReadableStreamGetReaderOptions { unReadableStreamGetReaderOptions :: JSVal }

instance PToJSVal ReadableStreamGetReaderOptions where
  pToJSVal = unReadableStreamGetReaderOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReadableStreamGetReaderOptions where
  pFromJSVal = ReadableStreamGetReaderOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReadableStreamGetReaderOptions where
  toJSVal = return . unReadableStreamGetReaderOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ReadableStreamGetReaderOptions where
  fromJSVal v = fmap ReadableStreamGetReaderOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReadableStreamGetReaderOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReadableStreamGetReaderOptions where
  makeObject = makeObject . unReadableStreamGetReaderOptions


instance IsGObject ReadableStreamGetReaderOptions where
  typeGType _ = gTypeReadableStreamGetReaderOptions
  {-# INLINE typeGType #-}

noReadableStreamGetReaderOptions :: Maybe ReadableStreamGetReaderOptions
noReadableStreamGetReaderOptions = Nothing
{-# INLINE noReadableStreamGetReaderOptions #-}

gTypeReadableStreamGetReaderOptions :: JSM GType
gTypeReadableStreamGetReaderOptions = GType . Object <$> jsg "Object"

-- | Dictionary ReadableStreamReadResult (streams)
newtype ReadableStreamReadResult = ReadableStreamReadResult { unReadableStreamReadResult :: JSVal }

instance PToJSVal ReadableStreamReadResult where
  pToJSVal = unReadableStreamReadResult
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReadableStreamReadResult where
  pFromJSVal = ReadableStreamReadResult
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReadableStreamReadResult where
  toJSVal = return . unReadableStreamReadResult
  {-# INLINE toJSVal #-}

instance FromJSVal ReadableStreamReadResult where
  fromJSVal v = fmap ReadableStreamReadResult <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReadableStreamReadResult
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReadableStreamReadResult where
  makeObject = makeObject . unReadableStreamReadResult


instance IsGObject ReadableStreamReadResult where
  typeGType _ = gTypeReadableStreamReadResult
  {-# INLINE typeGType #-}

noReadableStreamReadResult :: Maybe ReadableStreamReadResult
noReadableStreamReadResult = Nothing
{-# INLINE noReadableStreamReadResult #-}

gTypeReadableStreamReadResult :: JSM GType
gTypeReadableStreamReadResult = GType . Object <$> jsg "Object"

-- | Dictionary ReadableWritablePair (streams)
newtype ReadableWritablePair = ReadableWritablePair { unReadableWritablePair :: JSVal }

instance PToJSVal ReadableWritablePair where
  pToJSVal = unReadableWritablePair
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReadableWritablePair where
  pFromJSVal = ReadableWritablePair
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReadableWritablePair where
  toJSVal = return . unReadableWritablePair
  {-# INLINE toJSVal #-}

instance FromJSVal ReadableWritablePair where
  fromJSVal v = fmap ReadableWritablePair <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReadableWritablePair
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReadableWritablePair where
  makeObject = makeObject . unReadableWritablePair


instance IsGObject ReadableWritablePair where
  typeGType _ = gTypeReadableWritablePair
  {-# INLINE typeGType #-}

noReadableWritablePair :: Maybe ReadableWritablePair
noReadableWritablePair = Nothing
{-# INLINE noReadableWritablePair #-}

gTypeReadableWritablePair :: JSM GType
gTypeReadableWritablePair = GType . Object <$> jsg "Object"

-- | Dictionary RegistrationOptions (service-workers)
newtype RegistrationOptions = RegistrationOptions { unRegistrationOptions :: JSVal }

instance PToJSVal RegistrationOptions where
  pToJSVal = unRegistrationOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal RegistrationOptions where
  pFromJSVal = RegistrationOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal RegistrationOptions where
  toJSVal = return . unRegistrationOptions
  {-# INLINE toJSVal #-}

instance FromJSVal RegistrationOptions where
  fromJSVal v = fmap RegistrationOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RegistrationOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RegistrationOptions where
  makeObject = makeObject . unRegistrationOptions


instance IsGObject RegistrationOptions where
  typeGType _ = gTypeRegistrationOptions
  {-# INLINE typeGType #-}

noRegistrationOptions :: Maybe RegistrationOptions
noRegistrationOptions = Nothing
{-# INLINE noRegistrationOptions #-}

gTypeRegistrationOptions :: JSM GType
gTypeRegistrationOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.RemotePlayback" (remote-playback).
newtype RemotePlayback = RemotePlayback { unRemotePlayback :: JSVal }

instance PToJSVal RemotePlayback where
  pToJSVal = unRemotePlayback
  {-# INLINE pToJSVal #-}

instance PFromJSVal RemotePlayback where
  pFromJSVal = RemotePlayback
  {-# INLINE pFromJSVal #-}

instance ToJSVal RemotePlayback where
  toJSVal = return . unRemotePlayback
  {-# INLINE toJSVal #-}

instance FromJSVal RemotePlayback where
  fromJSVal v = fmap RemotePlayback <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RemotePlayback
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RemotePlayback where
  makeObject = makeObject . unRemotePlayback

instance IsEventTarget RemotePlayback

instance IsGObject RemotePlayback where
  typeGType _ = gTypeRemotePlayback
  {-# INLINE typeGType #-}

noRemotePlayback :: Maybe RemotePlayback
noRemotePlayback = Nothing
{-# INLINE noRemotePlayback #-}

gTypeRemotePlayback :: JSM GType
gTypeRemotePlayback = GType . Object <$> jsg "RemotePlayback"

-- | Dictionary Report (reporting-1)
newtype Report = Report { unReport :: JSVal }

instance PToJSVal Report where
  pToJSVal = unReport
  {-# INLINE pToJSVal #-}

instance PFromJSVal Report where
  pFromJSVal = Report
  {-# INLINE pFromJSVal #-}

instance ToJSVal Report where
  toJSVal = return . unReport
  {-# INLINE toJSVal #-}

instance FromJSVal Report where
  fromJSVal v = fmap Report <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Report
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Report where
  makeObject = makeObject . unReport


instance IsGObject Report where
  typeGType _ = gTypeReport
  {-# INLINE typeGType #-}

noReport :: Maybe Report
noReport = Nothing
{-# INLINE noReport #-}

gTypeReport :: JSM GType
gTypeReport = GType . Object <$> jsg "Object"

-- | Dictionary ReportBody (reporting-1)
newtype ReportBody = ReportBody { unReportBody :: JSVal }

instance PToJSVal ReportBody where
  pToJSVal = unReportBody
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReportBody where
  pFromJSVal = ReportBody
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReportBody where
  toJSVal = return . unReportBody
  {-# INLINE toJSVal #-}

instance FromJSVal ReportBody where
  fromJSVal v = fmap ReportBody <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReportBody
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReportBody where
  makeObject = makeObject . unReportBody


instance IsGObject ReportBody where
  typeGType _ = gTypeReportBody
  {-# INLINE typeGType #-}

noReportBody :: Maybe ReportBody
noReportBody = Nothing
{-# INLINE noReportBody #-}

gTypeReportBody :: JSM GType
gTypeReportBody = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ReportingObserver" (reporting-1).
newtype ReportingObserver = ReportingObserver { unReportingObserver :: JSVal }

instance PToJSVal ReportingObserver where
  pToJSVal = unReportingObserver
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReportingObserver where
  pFromJSVal = ReportingObserver
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReportingObserver where
  toJSVal = return . unReportingObserver
  {-# INLINE toJSVal #-}

instance FromJSVal ReportingObserver where
  fromJSVal v = fmap ReportingObserver <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReportingObserver
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReportingObserver where
  makeObject = makeObject . unReportingObserver


instance IsGObject ReportingObserver where
  typeGType _ = gTypeReportingObserver
  {-# INLINE typeGType #-}

noReportingObserver :: Maybe ReportingObserver
noReportingObserver = Nothing
{-# INLINE noReportingObserver #-}

gTypeReportingObserver :: JSM GType
gTypeReportingObserver = GType . Object <$> jsg "ReportingObserver"

-- | Dictionary ReportingObserverOptions (reporting-1)
newtype ReportingObserverOptions = ReportingObserverOptions { unReportingObserverOptions :: JSVal }

instance PToJSVal ReportingObserverOptions where
  pToJSVal = unReportingObserverOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ReportingObserverOptions where
  pFromJSVal = ReportingObserverOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ReportingObserverOptions where
  toJSVal = return . unReportingObserverOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ReportingObserverOptions where
  fromJSVal v = fmap ReportingObserverOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ReportingObserverOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ReportingObserverOptions where
  makeObject = makeObject . unReportingObserverOptions


instance IsGObject ReportingObserverOptions where
  typeGType _ = gTypeReportingObserverOptions
  {-# INLINE typeGType #-}

noReportingObserverOptions :: Maybe ReportingObserverOptions
noReportingObserverOptions = Nothing
{-# INLINE noReportingObserverOptions #-}

gTypeReportingObserverOptions :: JSM GType
gTypeReportingObserverOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Request" (fetch).
newtype Request = Request { unRequest :: JSVal }

instance PToJSVal Request where
  pToJSVal = unRequest
  {-# INLINE pToJSVal #-}

instance PFromJSVal Request where
  pFromJSVal = Request
  {-# INLINE pFromJSVal #-}

instance ToJSVal Request where
  toJSVal = return . unRequest
  {-# INLINE toJSVal #-}

instance FromJSVal Request where
  fromJSVal v = fmap Request <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Request
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Request where
  makeObject = makeObject . unRequest

instance IsBody Request

instance IsGObject Request where
  typeGType _ = gTypeRequest
  {-# INLINE typeGType #-}

noRequest :: Maybe Request
noRequest = Nothing
{-# INLINE noRequest #-}

gTypeRequest :: JSM GType
gTypeRequest = GType . Object <$> jsg "Request"

-- | Dictionary RequestInit (fetch)
newtype RequestInit = RequestInit { unRequestInit :: JSVal }

instance PToJSVal RequestInit where
  pToJSVal = unRequestInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal RequestInit where
  pFromJSVal = RequestInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal RequestInit where
  toJSVal = return . unRequestInit
  {-# INLINE toJSVal #-}

instance FromJSVal RequestInit where
  fromJSVal v = fmap RequestInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RequestInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RequestInit where
  makeObject = makeObject . unRequestInit


instance IsGObject RequestInit where
  typeGType _ = gTypeRequestInit
  {-# INLINE typeGType #-}

noRequestInit :: Maybe RequestInit
noRequestInit = Nothing
{-# INLINE noRequestInit #-}

gTypeRequestInit :: JSM GType
gTypeRequestInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ResizeObserver" (resize-observer-1).
newtype ResizeObserver = ResizeObserver { unResizeObserver :: JSVal }

instance PToJSVal ResizeObserver where
  pToJSVal = unResizeObserver
  {-# INLINE pToJSVal #-}

instance PFromJSVal ResizeObserver where
  pFromJSVal = ResizeObserver
  {-# INLINE pFromJSVal #-}

instance ToJSVal ResizeObserver where
  toJSVal = return . unResizeObserver
  {-# INLINE toJSVal #-}

instance FromJSVal ResizeObserver where
  fromJSVal v = fmap ResizeObserver <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ResizeObserver
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ResizeObserver where
  makeObject = makeObject . unResizeObserver


instance IsGObject ResizeObserver where
  typeGType _ = gTypeResizeObserver
  {-# INLINE typeGType #-}

noResizeObserver :: Maybe ResizeObserver
noResizeObserver = Nothing
{-# INLINE noResizeObserver #-}

gTypeResizeObserver :: JSM GType
gTypeResizeObserver = GType . Object <$> jsg "ResizeObserver"

-- | Functions for this interface are in "JSDOM.ResizeObserverEntry" (resize-observer-1).
newtype ResizeObserverEntry = ResizeObserverEntry { unResizeObserverEntry :: JSVal }

instance PToJSVal ResizeObserverEntry where
  pToJSVal = unResizeObserverEntry
  {-# INLINE pToJSVal #-}

instance PFromJSVal ResizeObserverEntry where
  pFromJSVal = ResizeObserverEntry
  {-# INLINE pFromJSVal #-}

instance ToJSVal ResizeObserverEntry where
  toJSVal = return . unResizeObserverEntry
  {-# INLINE toJSVal #-}

instance FromJSVal ResizeObserverEntry where
  fromJSVal v = fmap ResizeObserverEntry <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ResizeObserverEntry
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ResizeObserverEntry where
  makeObject = makeObject . unResizeObserverEntry


instance IsGObject ResizeObserverEntry where
  typeGType _ = gTypeResizeObserverEntry
  {-# INLINE typeGType #-}

noResizeObserverEntry :: Maybe ResizeObserverEntry
noResizeObserverEntry = Nothing
{-# INLINE noResizeObserverEntry #-}

gTypeResizeObserverEntry :: JSM GType
gTypeResizeObserverEntry = GType . Object <$> jsg "ResizeObserverEntry"

-- | Dictionary ResizeObserverOptions (resize-observer-1)
newtype ResizeObserverOptions = ResizeObserverOptions { unResizeObserverOptions :: JSVal }

instance PToJSVal ResizeObserverOptions where
  pToJSVal = unResizeObserverOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ResizeObserverOptions where
  pFromJSVal = ResizeObserverOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ResizeObserverOptions where
  toJSVal = return . unResizeObserverOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ResizeObserverOptions where
  fromJSVal v = fmap ResizeObserverOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ResizeObserverOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ResizeObserverOptions where
  makeObject = makeObject . unResizeObserverOptions


instance IsGObject ResizeObserverOptions where
  typeGType _ = gTypeResizeObserverOptions
  {-# INLINE typeGType #-}

noResizeObserverOptions :: Maybe ResizeObserverOptions
noResizeObserverOptions = Nothing
{-# INLINE noResizeObserverOptions #-}

gTypeResizeObserverOptions :: JSM GType
gTypeResizeObserverOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ResizeObserverSize" (resize-observer-1).
newtype ResizeObserverSize = ResizeObserverSize { unResizeObserverSize :: JSVal }

instance PToJSVal ResizeObserverSize where
  pToJSVal = unResizeObserverSize
  {-# INLINE pToJSVal #-}

instance PFromJSVal ResizeObserverSize where
  pFromJSVal = ResizeObserverSize
  {-# INLINE pFromJSVal #-}

instance ToJSVal ResizeObserverSize where
  toJSVal = return . unResizeObserverSize
  {-# INLINE toJSVal #-}

instance FromJSVal ResizeObserverSize where
  fromJSVal v = fmap ResizeObserverSize <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ResizeObserverSize
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ResizeObserverSize where
  makeObject = makeObject . unResizeObserverSize


instance IsGObject ResizeObserverSize where
  typeGType _ = gTypeResizeObserverSize
  {-# INLINE typeGType #-}

noResizeObserverSize :: Maybe ResizeObserverSize
noResizeObserverSize = Nothing
{-# INLINE noResizeObserverSize #-}

gTypeResizeObserverSize :: JSM GType
gTypeResizeObserverSize = GType . Object <$> jsg "ResizeObserverSize"

-- | Functions for this interface are in "JSDOM.Response" (fetch).
newtype Response = Response { unResponse :: JSVal }

instance PToJSVal Response where
  pToJSVal = unResponse
  {-# INLINE pToJSVal #-}

instance PFromJSVal Response where
  pFromJSVal = Response
  {-# INLINE pFromJSVal #-}

instance ToJSVal Response where
  toJSVal = return . unResponse
  {-# INLINE toJSVal #-}

instance FromJSVal Response where
  fromJSVal v = fmap Response <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Response
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Response where
  makeObject = makeObject . unResponse

instance IsBody Response

instance IsGObject Response where
  typeGType _ = gTypeResponse
  {-# INLINE typeGType #-}

noResponse :: Maybe Response
noResponse = Nothing
{-# INLINE noResponse #-}

gTypeResponse :: JSM GType
gTypeResponse = GType . Object <$> jsg "Response"

-- | Dictionary ResponseInit (fetch)
newtype ResponseInit = ResponseInit { unResponseInit :: JSVal }

instance PToJSVal ResponseInit where
  pToJSVal = unResponseInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal ResponseInit where
  pFromJSVal = ResponseInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal ResponseInit where
  toJSVal = return . unResponseInit
  {-# INLINE toJSVal #-}

instance FromJSVal ResponseInit where
  fromJSVal v = fmap ResponseInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ResponseInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ResponseInit where
  makeObject = makeObject . unResponseInit


instance IsGObject ResponseInit where
  typeGType _ = gTypeResponseInit
  {-# INLINE typeGType #-}

noResponseInit :: Maybe ResponseInit
noResponseInit = Nothing
{-# INLINE noResponseInit #-}

gTypeResponseInit :: JSM GType
gTypeResponseInit = GType . Object <$> jsg "Object"

-- | Dictionary RouterCondition (service-workers)
newtype RouterCondition = RouterCondition { unRouterCondition :: JSVal }

instance PToJSVal RouterCondition where
  pToJSVal = unRouterCondition
  {-# INLINE pToJSVal #-}

instance PFromJSVal RouterCondition where
  pFromJSVal = RouterCondition
  {-# INLINE pFromJSVal #-}

instance ToJSVal RouterCondition where
  toJSVal = return . unRouterCondition
  {-# INLINE toJSVal #-}

instance FromJSVal RouterCondition where
  fromJSVal v = fmap RouterCondition <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RouterCondition
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RouterCondition where
  makeObject = makeObject . unRouterCondition


instance IsGObject RouterCondition where
  typeGType _ = gTypeRouterCondition
  {-# INLINE typeGType #-}

noRouterCondition :: Maybe RouterCondition
noRouterCondition = Nothing
{-# INLINE noRouterCondition #-}

gTypeRouterCondition :: JSM GType
gTypeRouterCondition = GType . Object <$> jsg "Object"

-- | Dictionary RouterRule (service-workers)
newtype RouterRule = RouterRule { unRouterRule :: JSVal }

instance PToJSVal RouterRule where
  pToJSVal = unRouterRule
  {-# INLINE pToJSVal #-}

instance PFromJSVal RouterRule where
  pFromJSVal = RouterRule
  {-# INLINE pFromJSVal #-}

instance ToJSVal RouterRule where
  toJSVal = return . unRouterRule
  {-# INLINE toJSVal #-}

instance FromJSVal RouterRule where
  fromJSVal v = fmap RouterRule <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RouterRule
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RouterRule where
  makeObject = makeObject . unRouterRule


instance IsGObject RouterRule where
  typeGType _ = gTypeRouterRule
  {-# INLINE typeGType #-}

noRouterRule :: Maybe RouterRule
noRouterRule = Nothing
{-# INLINE noRouterRule #-}

gTypeRouterRule :: JSM GType
gTypeRouterRule = GType . Object <$> jsg "Object"

-- | Dictionary RouterSourceDict (service-workers)
newtype RouterSourceDict = RouterSourceDict { unRouterSourceDict :: JSVal }

instance PToJSVal RouterSourceDict where
  pToJSVal = unRouterSourceDict
  {-# INLINE pToJSVal #-}

instance PFromJSVal RouterSourceDict where
  pFromJSVal = RouterSourceDict
  {-# INLINE pFromJSVal #-}

instance ToJSVal RouterSourceDict where
  toJSVal = return . unRouterSourceDict
  {-# INLINE toJSVal #-}

instance FromJSVal RouterSourceDict where
  fromJSVal v = fmap RouterSourceDict <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RouterSourceDict
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RouterSourceDict where
  makeObject = makeObject . unRouterSourceDict


instance IsGObject RouterSourceDict where
  typeGType _ = gTypeRouterSourceDict
  {-# INLINE typeGType #-}

noRouterSourceDict :: Maybe RouterSourceDict
noRouterSourceDict = Nothing
{-# INLINE noRouterSourceDict #-}

gTypeRouterSourceDict :: JSM GType
gTypeRouterSourceDict = GType . Object <$> jsg "Object"

-- | Dictionary RsaOtherPrimesInfo (webcrypto-2)
newtype RsaOtherPrimesInfo = RsaOtherPrimesInfo { unRsaOtherPrimesInfo :: JSVal }

instance PToJSVal RsaOtherPrimesInfo where
  pToJSVal = unRsaOtherPrimesInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal RsaOtherPrimesInfo where
  pFromJSVal = RsaOtherPrimesInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal RsaOtherPrimesInfo where
  toJSVal = return . unRsaOtherPrimesInfo
  {-# INLINE toJSVal #-}

instance FromJSVal RsaOtherPrimesInfo where
  fromJSVal v = fmap RsaOtherPrimesInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . RsaOtherPrimesInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject RsaOtherPrimesInfo where
  makeObject = makeObject . unRsaOtherPrimesInfo


instance IsGObject RsaOtherPrimesInfo where
  typeGType _ = gTypeRsaOtherPrimesInfo
  {-# INLINE typeGType #-}

noRsaOtherPrimesInfo :: Maybe RsaOtherPrimesInfo
noRsaOtherPrimesInfo = Nothing
{-# INLINE noRsaOtherPrimesInfo #-}

gTypeRsaOtherPrimesInfo :: JSM GType
gTypeRsaOtherPrimesInfo = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SVGAElement" (SVG2).
newtype SVGAElement = SVGAElement { unSVGAElement :: JSVal }

instance PToJSVal SVGAElement where
  pToJSVal = unSVGAElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAElement where
  pFromJSVal = SVGAElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAElement where
  toJSVal = return . unSVGAElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAElement where
  fromJSVal v = fmap SVGAElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAElement where
  makeObject = makeObject . unSVGAElement

instance IsHyperlinkElementUtils SVGAElement
instance IsSVGURIReference SVGAElement
instance IsSVGGraphicsElement SVGAElement
instance IsSVGTests SVGAElement
instance IsSVGElement SVGAElement
instance IsElementCSSInlineStyle SVGAElement
instance IsGlobalEventHandlers SVGAElement
instance IsHTMLOrSVGOrMathMLElement SVGAElement
instance IsElement SVGAElement
instance IsARIAMixin SVGAElement
instance IsARIANotifyMixin SVGAElement
instance IsAnimatable SVGAElement
instance IsChildNode SVGAElement
instance IsNonDocumentTypeChildNode SVGAElement
instance IsParentNode SVGAElement
instance IsSlottable SVGAElement
instance IsNode SVGAElement
instance IsEventTarget SVGAElement

instance IsGObject SVGAElement where
  typeGType _ = gTypeSVGAElement
  {-# INLINE typeGType #-}

noSVGAElement :: Maybe SVGAElement
noSVGAElement = Nothing
{-# INLINE noSVGAElement #-}

gTypeSVGAElement :: JSM GType
gTypeSVGAElement = GType . Object <$> jsg "SVGAElement"

-- | Functions for this interface are in "JSDOM.SVGAngle" (SVG2).
newtype SVGAngle = SVGAngle { unSVGAngle :: JSVal }

instance PToJSVal SVGAngle where
  pToJSVal = unSVGAngle
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAngle where
  pFromJSVal = SVGAngle
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAngle where
  toJSVal = return . unSVGAngle
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAngle where
  fromJSVal v = fmap SVGAngle <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAngle
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAngle where
  makeObject = makeObject . unSVGAngle


instance IsGObject SVGAngle where
  typeGType _ = gTypeSVGAngle
  {-# INLINE typeGType #-}

noSVGAngle :: Maybe SVGAngle
noSVGAngle = Nothing
{-# INLINE noSVGAngle #-}

gTypeSVGAngle :: JSM GType
gTypeSVGAngle = GType . Object <$> jsg "SVGAngle"

-- | Functions for this interface are in "JSDOM.SVGAnimateElement" (svg-animations).
newtype SVGAnimateElement = SVGAnimateElement { unSVGAnimateElement :: JSVal }

instance PToJSVal SVGAnimateElement where
  pToJSVal = unSVGAnimateElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimateElement where
  pFromJSVal = SVGAnimateElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimateElement where
  toJSVal = return . unSVGAnimateElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimateElement where
  fromJSVal v = fmap SVGAnimateElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimateElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimateElement where
  makeObject = makeObject . unSVGAnimateElement

instance IsSVGAnimationElement SVGAnimateElement
instance IsSVGTests SVGAnimateElement
instance IsSVGElement SVGAnimateElement
instance IsElementCSSInlineStyle SVGAnimateElement
instance IsGlobalEventHandlers SVGAnimateElement
instance IsHTMLOrSVGOrMathMLElement SVGAnimateElement
instance IsElement SVGAnimateElement
instance IsARIAMixin SVGAnimateElement
instance IsARIANotifyMixin SVGAnimateElement
instance IsAnimatable SVGAnimateElement
instance IsChildNode SVGAnimateElement
instance IsNonDocumentTypeChildNode SVGAnimateElement
instance IsParentNode SVGAnimateElement
instance IsSlottable SVGAnimateElement
instance IsNode SVGAnimateElement
instance IsEventTarget SVGAnimateElement

instance IsGObject SVGAnimateElement where
  typeGType _ = gTypeSVGAnimateElement
  {-# INLINE typeGType #-}

noSVGAnimateElement :: Maybe SVGAnimateElement
noSVGAnimateElement = Nothing
{-# INLINE noSVGAnimateElement #-}

gTypeSVGAnimateElement :: JSM GType
gTypeSVGAnimateElement = GType . Object <$> jsg "SVGAnimateElement"

-- | Functions for this interface are in "JSDOM.SVGAnimateMotionElement" (svg-animations).
newtype SVGAnimateMotionElement = SVGAnimateMotionElement { unSVGAnimateMotionElement :: JSVal }

instance PToJSVal SVGAnimateMotionElement where
  pToJSVal = unSVGAnimateMotionElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimateMotionElement where
  pFromJSVal = SVGAnimateMotionElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimateMotionElement where
  toJSVal = return . unSVGAnimateMotionElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimateMotionElement where
  fromJSVal v = fmap SVGAnimateMotionElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimateMotionElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimateMotionElement where
  makeObject = makeObject . unSVGAnimateMotionElement

instance IsSVGAnimationElement SVGAnimateMotionElement
instance IsSVGTests SVGAnimateMotionElement
instance IsSVGElement SVGAnimateMotionElement
instance IsElementCSSInlineStyle SVGAnimateMotionElement
instance IsGlobalEventHandlers SVGAnimateMotionElement
instance IsHTMLOrSVGOrMathMLElement SVGAnimateMotionElement
instance IsElement SVGAnimateMotionElement
instance IsARIAMixin SVGAnimateMotionElement
instance IsARIANotifyMixin SVGAnimateMotionElement
instance IsAnimatable SVGAnimateMotionElement
instance IsChildNode SVGAnimateMotionElement
instance IsNonDocumentTypeChildNode SVGAnimateMotionElement
instance IsParentNode SVGAnimateMotionElement
instance IsSlottable SVGAnimateMotionElement
instance IsNode SVGAnimateMotionElement
instance IsEventTarget SVGAnimateMotionElement

instance IsGObject SVGAnimateMotionElement where
  typeGType _ = gTypeSVGAnimateMotionElement
  {-# INLINE typeGType #-}

noSVGAnimateMotionElement :: Maybe SVGAnimateMotionElement
noSVGAnimateMotionElement = Nothing
{-# INLINE noSVGAnimateMotionElement #-}

gTypeSVGAnimateMotionElement :: JSM GType
gTypeSVGAnimateMotionElement = GType . Object <$> jsg "SVGAnimateMotionElement"

-- | Functions for this interface are in "JSDOM.SVGAnimateTransformElement" (svg-animations).
newtype SVGAnimateTransformElement = SVGAnimateTransformElement { unSVGAnimateTransformElement :: JSVal }

instance PToJSVal SVGAnimateTransformElement where
  pToJSVal = unSVGAnimateTransformElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimateTransformElement where
  pFromJSVal = SVGAnimateTransformElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimateTransformElement where
  toJSVal = return . unSVGAnimateTransformElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimateTransformElement where
  fromJSVal v = fmap SVGAnimateTransformElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimateTransformElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimateTransformElement where
  makeObject = makeObject . unSVGAnimateTransformElement

instance IsSVGAnimationElement SVGAnimateTransformElement
instance IsSVGTests SVGAnimateTransformElement
instance IsSVGElement SVGAnimateTransformElement
instance IsElementCSSInlineStyle SVGAnimateTransformElement
instance IsGlobalEventHandlers SVGAnimateTransformElement
instance IsHTMLOrSVGOrMathMLElement SVGAnimateTransformElement
instance IsElement SVGAnimateTransformElement
instance IsARIAMixin SVGAnimateTransformElement
instance IsARIANotifyMixin SVGAnimateTransformElement
instance IsAnimatable SVGAnimateTransformElement
instance IsChildNode SVGAnimateTransformElement
instance IsNonDocumentTypeChildNode SVGAnimateTransformElement
instance IsParentNode SVGAnimateTransformElement
instance IsSlottable SVGAnimateTransformElement
instance IsNode SVGAnimateTransformElement
instance IsEventTarget SVGAnimateTransformElement

instance IsGObject SVGAnimateTransformElement where
  typeGType _ = gTypeSVGAnimateTransformElement
  {-# INLINE typeGType #-}

noSVGAnimateTransformElement :: Maybe SVGAnimateTransformElement
noSVGAnimateTransformElement = Nothing
{-# INLINE noSVGAnimateTransformElement #-}

gTypeSVGAnimateTransformElement :: JSM GType
gTypeSVGAnimateTransformElement = GType . Object <$> jsg "SVGAnimateTransformElement"

-- | Functions for this interface are in "JSDOM.SVGAnimatedAngle" (SVG2).
newtype SVGAnimatedAngle = SVGAnimatedAngle { unSVGAnimatedAngle :: JSVal }

instance PToJSVal SVGAnimatedAngle where
  pToJSVal = unSVGAnimatedAngle
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimatedAngle where
  pFromJSVal = SVGAnimatedAngle
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimatedAngle where
  toJSVal = return . unSVGAnimatedAngle
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimatedAngle where
  fromJSVal v = fmap SVGAnimatedAngle <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimatedAngle
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimatedAngle where
  makeObject = makeObject . unSVGAnimatedAngle


instance IsGObject SVGAnimatedAngle where
  typeGType _ = gTypeSVGAnimatedAngle
  {-# INLINE typeGType #-}

noSVGAnimatedAngle :: Maybe SVGAnimatedAngle
noSVGAnimatedAngle = Nothing
{-# INLINE noSVGAnimatedAngle #-}

gTypeSVGAnimatedAngle :: JSM GType
gTypeSVGAnimatedAngle = GType . Object <$> jsg "SVGAnimatedAngle"

-- | Functions for this interface are in "JSDOM.SVGAnimatedBoolean" (SVG2).
newtype SVGAnimatedBoolean = SVGAnimatedBoolean { unSVGAnimatedBoolean :: JSVal }

instance PToJSVal SVGAnimatedBoolean where
  pToJSVal = unSVGAnimatedBoolean
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimatedBoolean where
  pFromJSVal = SVGAnimatedBoolean
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimatedBoolean where
  toJSVal = return . unSVGAnimatedBoolean
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimatedBoolean where
  fromJSVal v = fmap SVGAnimatedBoolean <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimatedBoolean
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimatedBoolean where
  makeObject = makeObject . unSVGAnimatedBoolean


instance IsGObject SVGAnimatedBoolean where
  typeGType _ = gTypeSVGAnimatedBoolean
  {-# INLINE typeGType #-}

noSVGAnimatedBoolean :: Maybe SVGAnimatedBoolean
noSVGAnimatedBoolean = Nothing
{-# INLINE noSVGAnimatedBoolean #-}

gTypeSVGAnimatedBoolean :: JSM GType
gTypeSVGAnimatedBoolean = GType . Object <$> jsg "SVGAnimatedBoolean"

-- | Functions for this interface are in "JSDOM.SVGAnimatedEnumeration" (SVG2).
newtype SVGAnimatedEnumeration = SVGAnimatedEnumeration { unSVGAnimatedEnumeration :: JSVal }

instance PToJSVal SVGAnimatedEnumeration where
  pToJSVal = unSVGAnimatedEnumeration
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimatedEnumeration where
  pFromJSVal = SVGAnimatedEnumeration
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimatedEnumeration where
  toJSVal = return . unSVGAnimatedEnumeration
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimatedEnumeration where
  fromJSVal v = fmap SVGAnimatedEnumeration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimatedEnumeration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimatedEnumeration where
  makeObject = makeObject . unSVGAnimatedEnumeration


instance IsGObject SVGAnimatedEnumeration where
  typeGType _ = gTypeSVGAnimatedEnumeration
  {-# INLINE typeGType #-}

noSVGAnimatedEnumeration :: Maybe SVGAnimatedEnumeration
noSVGAnimatedEnumeration = Nothing
{-# INLINE noSVGAnimatedEnumeration #-}

gTypeSVGAnimatedEnumeration :: JSM GType
gTypeSVGAnimatedEnumeration = GType . Object <$> jsg "SVGAnimatedEnumeration"

-- | Functions for this interface are in "JSDOM.SVGAnimatedInteger" (SVG2).
newtype SVGAnimatedInteger = SVGAnimatedInteger { unSVGAnimatedInteger :: JSVal }

instance PToJSVal SVGAnimatedInteger where
  pToJSVal = unSVGAnimatedInteger
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimatedInteger where
  pFromJSVal = SVGAnimatedInteger
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimatedInteger where
  toJSVal = return . unSVGAnimatedInteger
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimatedInteger where
  fromJSVal v = fmap SVGAnimatedInteger <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimatedInteger
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimatedInteger where
  makeObject = makeObject . unSVGAnimatedInteger


instance IsGObject SVGAnimatedInteger where
  typeGType _ = gTypeSVGAnimatedInteger
  {-# INLINE typeGType #-}

noSVGAnimatedInteger :: Maybe SVGAnimatedInteger
noSVGAnimatedInteger = Nothing
{-# INLINE noSVGAnimatedInteger #-}

gTypeSVGAnimatedInteger :: JSM GType
gTypeSVGAnimatedInteger = GType . Object <$> jsg "SVGAnimatedInteger"

-- | Functions for this interface are in "JSDOM.SVGAnimatedLength" (SVG2).
newtype SVGAnimatedLength = SVGAnimatedLength { unSVGAnimatedLength :: JSVal }

instance PToJSVal SVGAnimatedLength where
  pToJSVal = unSVGAnimatedLength
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimatedLength where
  pFromJSVal = SVGAnimatedLength
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimatedLength where
  toJSVal = return . unSVGAnimatedLength
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimatedLength where
  fromJSVal v = fmap SVGAnimatedLength <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimatedLength
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimatedLength where
  makeObject = makeObject . unSVGAnimatedLength


instance IsGObject SVGAnimatedLength where
  typeGType _ = gTypeSVGAnimatedLength
  {-# INLINE typeGType #-}

noSVGAnimatedLength :: Maybe SVGAnimatedLength
noSVGAnimatedLength = Nothing
{-# INLINE noSVGAnimatedLength #-}

gTypeSVGAnimatedLength :: JSM GType
gTypeSVGAnimatedLength = GType . Object <$> jsg "SVGAnimatedLength"

-- | Functions for this interface are in "JSDOM.SVGAnimatedLengthList" (SVG2).
newtype SVGAnimatedLengthList = SVGAnimatedLengthList { unSVGAnimatedLengthList :: JSVal }

instance PToJSVal SVGAnimatedLengthList where
  pToJSVal = unSVGAnimatedLengthList
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimatedLengthList where
  pFromJSVal = SVGAnimatedLengthList
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimatedLengthList where
  toJSVal = return . unSVGAnimatedLengthList
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimatedLengthList where
  fromJSVal v = fmap SVGAnimatedLengthList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimatedLengthList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimatedLengthList where
  makeObject = makeObject . unSVGAnimatedLengthList


instance IsGObject SVGAnimatedLengthList where
  typeGType _ = gTypeSVGAnimatedLengthList
  {-# INLINE typeGType #-}

noSVGAnimatedLengthList :: Maybe SVGAnimatedLengthList
noSVGAnimatedLengthList = Nothing
{-# INLINE noSVGAnimatedLengthList #-}

gTypeSVGAnimatedLengthList :: JSM GType
gTypeSVGAnimatedLengthList = GType . Object <$> jsg "SVGAnimatedLengthList"

-- | Functions for this interface are in "JSDOM.SVGAnimatedNumber" (SVG2).
newtype SVGAnimatedNumber = SVGAnimatedNumber { unSVGAnimatedNumber :: JSVal }

instance PToJSVal SVGAnimatedNumber where
  pToJSVal = unSVGAnimatedNumber
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimatedNumber where
  pFromJSVal = SVGAnimatedNumber
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimatedNumber where
  toJSVal = return . unSVGAnimatedNumber
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimatedNumber where
  fromJSVal v = fmap SVGAnimatedNumber <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimatedNumber
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimatedNumber where
  makeObject = makeObject . unSVGAnimatedNumber


instance IsGObject SVGAnimatedNumber where
  typeGType _ = gTypeSVGAnimatedNumber
  {-# INLINE typeGType #-}

noSVGAnimatedNumber :: Maybe SVGAnimatedNumber
noSVGAnimatedNumber = Nothing
{-# INLINE noSVGAnimatedNumber #-}

gTypeSVGAnimatedNumber :: JSM GType
gTypeSVGAnimatedNumber = GType . Object <$> jsg "SVGAnimatedNumber"

-- | Functions for this interface are in "JSDOM.SVGAnimatedNumberList" (SVG2).
newtype SVGAnimatedNumberList = SVGAnimatedNumberList { unSVGAnimatedNumberList :: JSVal }

instance PToJSVal SVGAnimatedNumberList where
  pToJSVal = unSVGAnimatedNumberList
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimatedNumberList where
  pFromJSVal = SVGAnimatedNumberList
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimatedNumberList where
  toJSVal = return . unSVGAnimatedNumberList
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimatedNumberList where
  fromJSVal v = fmap SVGAnimatedNumberList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimatedNumberList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimatedNumberList where
  makeObject = makeObject . unSVGAnimatedNumberList


instance IsGObject SVGAnimatedNumberList where
  typeGType _ = gTypeSVGAnimatedNumberList
  {-# INLINE typeGType #-}

noSVGAnimatedNumberList :: Maybe SVGAnimatedNumberList
noSVGAnimatedNumberList = Nothing
{-# INLINE noSVGAnimatedNumberList #-}

gTypeSVGAnimatedNumberList :: JSM GType
gTypeSVGAnimatedNumberList = GType . Object <$> jsg "SVGAnimatedNumberList"

-- | Functions for this interface are in "JSDOM.SVGAnimatedPoints" (SVG2).
newtype SVGAnimatedPoints = SVGAnimatedPoints { unSVGAnimatedPoints :: JSVal }

instance PToJSVal SVGAnimatedPoints where
  pToJSVal = unSVGAnimatedPoints
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimatedPoints where
  pFromJSVal = SVGAnimatedPoints
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimatedPoints where
  toJSVal = return . unSVGAnimatedPoints
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimatedPoints where
  fromJSVal v = fmap SVGAnimatedPoints <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimatedPoints
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimatedPoints where
  makeObject = makeObject . unSVGAnimatedPoints

class (IsGObject o) => IsSVGAnimatedPoints o
toSVGAnimatedPoints :: IsSVGAnimatedPoints o => o -> SVGAnimatedPoints
toSVGAnimatedPoints = SVGAnimatedPoints . coerce

instance IsSVGAnimatedPoints SVGAnimatedPoints

instance IsGObject SVGAnimatedPoints where
  typeGType _ = gTypeSVGAnimatedPoints
  {-# INLINE typeGType #-}

noSVGAnimatedPoints :: Maybe SVGAnimatedPoints
noSVGAnimatedPoints = Nothing
{-# INLINE noSVGAnimatedPoints #-}

gTypeSVGAnimatedPoints :: JSM GType
gTypeSVGAnimatedPoints = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SVGAnimatedPreserveAspectRatio" (SVG2).
newtype SVGAnimatedPreserveAspectRatio = SVGAnimatedPreserveAspectRatio { unSVGAnimatedPreserveAspectRatio :: JSVal }

instance PToJSVal SVGAnimatedPreserveAspectRatio where
  pToJSVal = unSVGAnimatedPreserveAspectRatio
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimatedPreserveAspectRatio where
  pFromJSVal = SVGAnimatedPreserveAspectRatio
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimatedPreserveAspectRatio where
  toJSVal = return . unSVGAnimatedPreserveAspectRatio
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimatedPreserveAspectRatio where
  fromJSVal v = fmap SVGAnimatedPreserveAspectRatio <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimatedPreserveAspectRatio
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimatedPreserveAspectRatio where
  makeObject = makeObject . unSVGAnimatedPreserveAspectRatio


instance IsGObject SVGAnimatedPreserveAspectRatio where
  typeGType _ = gTypeSVGAnimatedPreserveAspectRatio
  {-# INLINE typeGType #-}

noSVGAnimatedPreserveAspectRatio :: Maybe SVGAnimatedPreserveAspectRatio
noSVGAnimatedPreserveAspectRatio = Nothing
{-# INLINE noSVGAnimatedPreserveAspectRatio #-}

gTypeSVGAnimatedPreserveAspectRatio :: JSM GType
gTypeSVGAnimatedPreserveAspectRatio = GType . Object <$> jsg "SVGAnimatedPreserveAspectRatio"

-- | Functions for this interface are in "JSDOM.SVGAnimatedRect" (SVG2).
newtype SVGAnimatedRect = SVGAnimatedRect { unSVGAnimatedRect :: JSVal }

instance PToJSVal SVGAnimatedRect where
  pToJSVal = unSVGAnimatedRect
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimatedRect where
  pFromJSVal = SVGAnimatedRect
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimatedRect where
  toJSVal = return . unSVGAnimatedRect
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimatedRect where
  fromJSVal v = fmap SVGAnimatedRect <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimatedRect
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimatedRect where
  makeObject = makeObject . unSVGAnimatedRect


instance IsGObject SVGAnimatedRect where
  typeGType _ = gTypeSVGAnimatedRect
  {-# INLINE typeGType #-}

noSVGAnimatedRect :: Maybe SVGAnimatedRect
noSVGAnimatedRect = Nothing
{-# INLINE noSVGAnimatedRect #-}

gTypeSVGAnimatedRect :: JSM GType
gTypeSVGAnimatedRect = GType . Object <$> jsg "SVGAnimatedRect"

-- | Functions for this interface are in "JSDOM.SVGAnimatedString" (SVG2).
newtype SVGAnimatedString = SVGAnimatedString { unSVGAnimatedString :: JSVal }

instance PToJSVal SVGAnimatedString where
  pToJSVal = unSVGAnimatedString
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimatedString where
  pFromJSVal = SVGAnimatedString
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimatedString where
  toJSVal = return . unSVGAnimatedString
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimatedString where
  fromJSVal v = fmap SVGAnimatedString <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimatedString
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimatedString where
  makeObject = makeObject . unSVGAnimatedString


instance IsGObject SVGAnimatedString where
  typeGType _ = gTypeSVGAnimatedString
  {-# INLINE typeGType #-}

noSVGAnimatedString :: Maybe SVGAnimatedString
noSVGAnimatedString = Nothing
{-# INLINE noSVGAnimatedString #-}

gTypeSVGAnimatedString :: JSM GType
gTypeSVGAnimatedString = GType . Object <$> jsg "SVGAnimatedString"

-- | Functions for this interface are in "JSDOM.SVGAnimatedTransformList" (SVG2).
newtype SVGAnimatedTransformList = SVGAnimatedTransformList { unSVGAnimatedTransformList :: JSVal }

instance PToJSVal SVGAnimatedTransformList where
  pToJSVal = unSVGAnimatedTransformList
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimatedTransformList where
  pFromJSVal = SVGAnimatedTransformList
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimatedTransformList where
  toJSVal = return . unSVGAnimatedTransformList
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimatedTransformList where
  fromJSVal v = fmap SVGAnimatedTransformList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimatedTransformList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimatedTransformList where
  makeObject = makeObject . unSVGAnimatedTransformList


instance IsGObject SVGAnimatedTransformList where
  typeGType _ = gTypeSVGAnimatedTransformList
  {-# INLINE typeGType #-}

noSVGAnimatedTransformList :: Maybe SVGAnimatedTransformList
noSVGAnimatedTransformList = Nothing
{-# INLINE noSVGAnimatedTransformList #-}

gTypeSVGAnimatedTransformList :: JSM GType
gTypeSVGAnimatedTransformList = GType . Object <$> jsg "SVGAnimatedTransformList"

-- | Functions for this interface are in "JSDOM.SVGAnimationElement" (svg-animations).
newtype SVGAnimationElement = SVGAnimationElement { unSVGAnimationElement :: JSVal }

instance PToJSVal SVGAnimationElement where
  pToJSVal = unSVGAnimationElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGAnimationElement where
  pFromJSVal = SVGAnimationElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGAnimationElement where
  toJSVal = return . unSVGAnimationElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGAnimationElement where
  fromJSVal v = fmap SVGAnimationElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGAnimationElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGAnimationElement where
  makeObject = makeObject . unSVGAnimationElement

class (IsSVGElement o, IsSVGTests o, IsGObject o) => IsSVGAnimationElement o
toSVGAnimationElement :: IsSVGAnimationElement o => o -> SVGAnimationElement
toSVGAnimationElement = SVGAnimationElement . coerce

instance IsSVGAnimationElement SVGAnimationElement
instance IsSVGTests SVGAnimationElement
instance IsSVGElement SVGAnimationElement
instance IsElementCSSInlineStyle SVGAnimationElement
instance IsGlobalEventHandlers SVGAnimationElement
instance IsHTMLOrSVGOrMathMLElement SVGAnimationElement
instance IsElement SVGAnimationElement
instance IsARIAMixin SVGAnimationElement
instance IsARIANotifyMixin SVGAnimationElement
instance IsAnimatable SVGAnimationElement
instance IsChildNode SVGAnimationElement
instance IsNonDocumentTypeChildNode SVGAnimationElement
instance IsParentNode SVGAnimationElement
instance IsSlottable SVGAnimationElement
instance IsNode SVGAnimationElement
instance IsEventTarget SVGAnimationElement

instance IsGObject SVGAnimationElement where
  typeGType _ = gTypeSVGAnimationElement
  {-# INLINE typeGType #-}

noSVGAnimationElement :: Maybe SVGAnimationElement
noSVGAnimationElement = Nothing
{-# INLINE noSVGAnimationElement #-}

gTypeSVGAnimationElement :: JSM GType
gTypeSVGAnimationElement = GType . Object <$> jsg "SVGAnimationElement"

-- | Dictionary SVGBoundingBoxOptions (SVG2)
newtype SVGBoundingBoxOptions = SVGBoundingBoxOptions { unSVGBoundingBoxOptions :: JSVal }

instance PToJSVal SVGBoundingBoxOptions where
  pToJSVal = unSVGBoundingBoxOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGBoundingBoxOptions where
  pFromJSVal = SVGBoundingBoxOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGBoundingBoxOptions where
  toJSVal = return . unSVGBoundingBoxOptions
  {-# INLINE toJSVal #-}

instance FromJSVal SVGBoundingBoxOptions where
  fromJSVal v = fmap SVGBoundingBoxOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGBoundingBoxOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGBoundingBoxOptions where
  makeObject = makeObject . unSVGBoundingBoxOptions


instance IsGObject SVGBoundingBoxOptions where
  typeGType _ = gTypeSVGBoundingBoxOptions
  {-# INLINE typeGType #-}

noSVGBoundingBoxOptions :: Maybe SVGBoundingBoxOptions
noSVGBoundingBoxOptions = Nothing
{-# INLINE noSVGBoundingBoxOptions #-}

gTypeSVGBoundingBoxOptions :: JSM GType
gTypeSVGBoundingBoxOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SVGCircleElement" (SVG2).
newtype SVGCircleElement = SVGCircleElement { unSVGCircleElement :: JSVal }

instance PToJSVal SVGCircleElement where
  pToJSVal = unSVGCircleElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGCircleElement where
  pFromJSVal = SVGCircleElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGCircleElement where
  toJSVal = return . unSVGCircleElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGCircleElement where
  fromJSVal v = fmap SVGCircleElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGCircleElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGCircleElement where
  makeObject = makeObject . unSVGCircleElement

instance IsSVGGeometryElement SVGCircleElement
instance IsSVGGraphicsElement SVGCircleElement
instance IsSVGTests SVGCircleElement
instance IsSVGElement SVGCircleElement
instance IsElementCSSInlineStyle SVGCircleElement
instance IsGlobalEventHandlers SVGCircleElement
instance IsHTMLOrSVGOrMathMLElement SVGCircleElement
instance IsElement SVGCircleElement
instance IsARIAMixin SVGCircleElement
instance IsARIANotifyMixin SVGCircleElement
instance IsAnimatable SVGCircleElement
instance IsChildNode SVGCircleElement
instance IsNonDocumentTypeChildNode SVGCircleElement
instance IsParentNode SVGCircleElement
instance IsSlottable SVGCircleElement
instance IsNode SVGCircleElement
instance IsEventTarget SVGCircleElement

instance IsGObject SVGCircleElement where
  typeGType _ = gTypeSVGCircleElement
  {-# INLINE typeGType #-}

noSVGCircleElement :: Maybe SVGCircleElement
noSVGCircleElement = Nothing
{-# INLINE noSVGCircleElement #-}

gTypeSVGCircleElement :: JSM GType
gTypeSVGCircleElement = GType . Object <$> jsg "SVGCircleElement"

-- | Functions for this interface are in "JSDOM.SVGClipPathElement" (css-masking-1).
newtype SVGClipPathElement = SVGClipPathElement { unSVGClipPathElement :: JSVal }

instance PToJSVal SVGClipPathElement where
  pToJSVal = unSVGClipPathElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGClipPathElement where
  pFromJSVal = SVGClipPathElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGClipPathElement where
  toJSVal = return . unSVGClipPathElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGClipPathElement where
  fromJSVal v = fmap SVGClipPathElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGClipPathElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGClipPathElement where
  makeObject = makeObject . unSVGClipPathElement

instance IsSVGElement SVGClipPathElement
instance IsElementCSSInlineStyle SVGClipPathElement
instance IsGlobalEventHandlers SVGClipPathElement
instance IsHTMLOrSVGOrMathMLElement SVGClipPathElement
instance IsElement SVGClipPathElement
instance IsARIAMixin SVGClipPathElement
instance IsARIANotifyMixin SVGClipPathElement
instance IsAnimatable SVGClipPathElement
instance IsChildNode SVGClipPathElement
instance IsNonDocumentTypeChildNode SVGClipPathElement
instance IsParentNode SVGClipPathElement
instance IsSlottable SVGClipPathElement
instance IsNode SVGClipPathElement
instance IsEventTarget SVGClipPathElement

instance IsGObject SVGClipPathElement where
  typeGType _ = gTypeSVGClipPathElement
  {-# INLINE typeGType #-}

noSVGClipPathElement :: Maybe SVGClipPathElement
noSVGClipPathElement = Nothing
{-# INLINE noSVGClipPathElement #-}

gTypeSVGClipPathElement :: JSM GType
gTypeSVGClipPathElement = GType . Object <$> jsg "SVGClipPathElement"

-- | Functions for this interface are in "JSDOM.SVGComponentTransferFunctionElement" (filter-effects-1).
newtype SVGComponentTransferFunctionElement = SVGComponentTransferFunctionElement { unSVGComponentTransferFunctionElement :: JSVal }

instance PToJSVal SVGComponentTransferFunctionElement where
  pToJSVal = unSVGComponentTransferFunctionElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGComponentTransferFunctionElement where
  pFromJSVal = SVGComponentTransferFunctionElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGComponentTransferFunctionElement where
  toJSVal = return . unSVGComponentTransferFunctionElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGComponentTransferFunctionElement where
  fromJSVal v = fmap SVGComponentTransferFunctionElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGComponentTransferFunctionElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGComponentTransferFunctionElement where
  makeObject = makeObject . unSVGComponentTransferFunctionElement

class (IsSVGElement o, IsGObject o) => IsSVGComponentTransferFunctionElement o
toSVGComponentTransferFunctionElement :: IsSVGComponentTransferFunctionElement o => o -> SVGComponentTransferFunctionElement
toSVGComponentTransferFunctionElement = SVGComponentTransferFunctionElement . coerce

instance IsSVGComponentTransferFunctionElement SVGComponentTransferFunctionElement
instance IsSVGElement SVGComponentTransferFunctionElement
instance IsElementCSSInlineStyle SVGComponentTransferFunctionElement
instance IsGlobalEventHandlers SVGComponentTransferFunctionElement
instance IsHTMLOrSVGOrMathMLElement SVGComponentTransferFunctionElement
instance IsElement SVGComponentTransferFunctionElement
instance IsARIAMixin SVGComponentTransferFunctionElement
instance IsARIANotifyMixin SVGComponentTransferFunctionElement
instance IsAnimatable SVGComponentTransferFunctionElement
instance IsChildNode SVGComponentTransferFunctionElement
instance IsNonDocumentTypeChildNode SVGComponentTransferFunctionElement
instance IsParentNode SVGComponentTransferFunctionElement
instance IsSlottable SVGComponentTransferFunctionElement
instance IsNode SVGComponentTransferFunctionElement
instance IsEventTarget SVGComponentTransferFunctionElement

instance IsGObject SVGComponentTransferFunctionElement where
  typeGType _ = gTypeSVGComponentTransferFunctionElement
  {-# INLINE typeGType #-}

noSVGComponentTransferFunctionElement :: Maybe SVGComponentTransferFunctionElement
noSVGComponentTransferFunctionElement = Nothing
{-# INLINE noSVGComponentTransferFunctionElement #-}

gTypeSVGComponentTransferFunctionElement :: JSM GType
gTypeSVGComponentTransferFunctionElement = GType . Object <$> jsg "SVGComponentTransferFunctionElement"

-- | Functions for this interface are in "JSDOM.SVGDefsElement" (SVG2).
newtype SVGDefsElement = SVGDefsElement { unSVGDefsElement :: JSVal }

instance PToJSVal SVGDefsElement where
  pToJSVal = unSVGDefsElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGDefsElement where
  pFromJSVal = SVGDefsElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGDefsElement where
  toJSVal = return . unSVGDefsElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGDefsElement where
  fromJSVal v = fmap SVGDefsElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGDefsElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGDefsElement where
  makeObject = makeObject . unSVGDefsElement

instance IsSVGGraphicsElement SVGDefsElement
instance IsSVGTests SVGDefsElement
instance IsSVGElement SVGDefsElement
instance IsElementCSSInlineStyle SVGDefsElement
instance IsGlobalEventHandlers SVGDefsElement
instance IsHTMLOrSVGOrMathMLElement SVGDefsElement
instance IsElement SVGDefsElement
instance IsARIAMixin SVGDefsElement
instance IsARIANotifyMixin SVGDefsElement
instance IsAnimatable SVGDefsElement
instance IsChildNode SVGDefsElement
instance IsNonDocumentTypeChildNode SVGDefsElement
instance IsParentNode SVGDefsElement
instance IsSlottable SVGDefsElement
instance IsNode SVGDefsElement
instance IsEventTarget SVGDefsElement

instance IsGObject SVGDefsElement where
  typeGType _ = gTypeSVGDefsElement
  {-# INLINE typeGType #-}

noSVGDefsElement :: Maybe SVGDefsElement
noSVGDefsElement = Nothing
{-# INLINE noSVGDefsElement #-}

gTypeSVGDefsElement :: JSM GType
gTypeSVGDefsElement = GType . Object <$> jsg "SVGDefsElement"

-- | Functions for this interface are in "JSDOM.SVGDescElement" (SVG2).
newtype SVGDescElement = SVGDescElement { unSVGDescElement :: JSVal }

instance PToJSVal SVGDescElement where
  pToJSVal = unSVGDescElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGDescElement where
  pFromJSVal = SVGDescElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGDescElement where
  toJSVal = return . unSVGDescElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGDescElement where
  fromJSVal v = fmap SVGDescElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGDescElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGDescElement where
  makeObject = makeObject . unSVGDescElement

instance IsSVGElement SVGDescElement
instance IsElementCSSInlineStyle SVGDescElement
instance IsGlobalEventHandlers SVGDescElement
instance IsHTMLOrSVGOrMathMLElement SVGDescElement
instance IsElement SVGDescElement
instance IsARIAMixin SVGDescElement
instance IsARIANotifyMixin SVGDescElement
instance IsAnimatable SVGDescElement
instance IsChildNode SVGDescElement
instance IsNonDocumentTypeChildNode SVGDescElement
instance IsParentNode SVGDescElement
instance IsSlottable SVGDescElement
instance IsNode SVGDescElement
instance IsEventTarget SVGDescElement

instance IsGObject SVGDescElement where
  typeGType _ = gTypeSVGDescElement
  {-# INLINE typeGType #-}

noSVGDescElement :: Maybe SVGDescElement
noSVGDescElement = Nothing
{-# INLINE noSVGDescElement #-}

gTypeSVGDescElement :: JSM GType
gTypeSVGDescElement = GType . Object <$> jsg "SVGDescElement"

-- | Functions for this interface are in "JSDOM.SVGElement" (SVG2).
newtype SVGElement = SVGElement { unSVGElement :: JSVal }

instance PToJSVal SVGElement where
  pToJSVal = unSVGElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGElement where
  pFromJSVal = SVGElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGElement where
  toJSVal = return . unSVGElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGElement where
  fromJSVal v = fmap SVGElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGElement where
  makeObject = makeObject . unSVGElement

class (IsElement o, IsElementCSSInlineStyle o, IsGlobalEventHandlers o, IsHTMLOrSVGOrMathMLElement o, IsGObject o) => IsSVGElement o
toSVGElement :: IsSVGElement o => o -> SVGElement
toSVGElement = SVGElement . coerce

instance IsSVGElement SVGElement
instance IsElementCSSInlineStyle SVGElement
instance IsGlobalEventHandlers SVGElement
instance IsHTMLOrSVGOrMathMLElement SVGElement
instance IsElement SVGElement
instance IsARIAMixin SVGElement
instance IsARIANotifyMixin SVGElement
instance IsAnimatable SVGElement
instance IsChildNode SVGElement
instance IsNonDocumentTypeChildNode SVGElement
instance IsParentNode SVGElement
instance IsSlottable SVGElement
instance IsNode SVGElement
instance IsEventTarget SVGElement

instance IsGObject SVGElement where
  typeGType _ = gTypeSVGElement
  {-# INLINE typeGType #-}

noSVGElement :: Maybe SVGElement
noSVGElement = Nothing
{-# INLINE noSVGElement #-}

gTypeSVGElement :: JSM GType
gTypeSVGElement = GType . Object <$> jsg "SVGElement"

-- | Functions for this interface are in "JSDOM.SVGEllipseElement" (SVG2).
newtype SVGEllipseElement = SVGEllipseElement { unSVGEllipseElement :: JSVal }

instance PToJSVal SVGEllipseElement where
  pToJSVal = unSVGEllipseElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGEllipseElement where
  pFromJSVal = SVGEllipseElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGEllipseElement where
  toJSVal = return . unSVGEllipseElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGEllipseElement where
  fromJSVal v = fmap SVGEllipseElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGEllipseElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGEllipseElement where
  makeObject = makeObject . unSVGEllipseElement

instance IsSVGGeometryElement SVGEllipseElement
instance IsSVGGraphicsElement SVGEllipseElement
instance IsSVGTests SVGEllipseElement
instance IsSVGElement SVGEllipseElement
instance IsElementCSSInlineStyle SVGEllipseElement
instance IsGlobalEventHandlers SVGEllipseElement
instance IsHTMLOrSVGOrMathMLElement SVGEllipseElement
instance IsElement SVGEllipseElement
instance IsARIAMixin SVGEllipseElement
instance IsARIANotifyMixin SVGEllipseElement
instance IsAnimatable SVGEllipseElement
instance IsChildNode SVGEllipseElement
instance IsNonDocumentTypeChildNode SVGEllipseElement
instance IsParentNode SVGEllipseElement
instance IsSlottable SVGEllipseElement
instance IsNode SVGEllipseElement
instance IsEventTarget SVGEllipseElement

instance IsGObject SVGEllipseElement where
  typeGType _ = gTypeSVGEllipseElement
  {-# INLINE typeGType #-}

noSVGEllipseElement :: Maybe SVGEllipseElement
noSVGEllipseElement = Nothing
{-# INLINE noSVGEllipseElement #-}

gTypeSVGEllipseElement :: JSM GType
gTypeSVGEllipseElement = GType . Object <$> jsg "SVGEllipseElement"

-- | Functions for this interface are in "JSDOM.SVGFEBlendElement" (filter-effects-1).
newtype SVGFEBlendElement = SVGFEBlendElement { unSVGFEBlendElement :: JSVal }

instance PToJSVal SVGFEBlendElement where
  pToJSVal = unSVGFEBlendElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEBlendElement where
  pFromJSVal = SVGFEBlendElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEBlendElement where
  toJSVal = return . unSVGFEBlendElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEBlendElement where
  fromJSVal v = fmap SVGFEBlendElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEBlendElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEBlendElement where
  makeObject = makeObject . unSVGFEBlendElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFEBlendElement
instance IsSVGElement SVGFEBlendElement
instance IsElementCSSInlineStyle SVGFEBlendElement
instance IsGlobalEventHandlers SVGFEBlendElement
instance IsHTMLOrSVGOrMathMLElement SVGFEBlendElement
instance IsElement SVGFEBlendElement
instance IsARIAMixin SVGFEBlendElement
instance IsARIANotifyMixin SVGFEBlendElement
instance IsAnimatable SVGFEBlendElement
instance IsChildNode SVGFEBlendElement
instance IsNonDocumentTypeChildNode SVGFEBlendElement
instance IsParentNode SVGFEBlendElement
instance IsSlottable SVGFEBlendElement
instance IsNode SVGFEBlendElement
instance IsEventTarget SVGFEBlendElement

instance IsGObject SVGFEBlendElement where
  typeGType _ = gTypeSVGFEBlendElement
  {-# INLINE typeGType #-}

noSVGFEBlendElement :: Maybe SVGFEBlendElement
noSVGFEBlendElement = Nothing
{-# INLINE noSVGFEBlendElement #-}

gTypeSVGFEBlendElement :: JSM GType
gTypeSVGFEBlendElement = GType . Object <$> jsg "SVGFEBlendElement"

-- | Functions for this interface are in "JSDOM.SVGFEColorMatrixElement" (filter-effects-1).
newtype SVGFEColorMatrixElement = SVGFEColorMatrixElement { unSVGFEColorMatrixElement :: JSVal }

instance PToJSVal SVGFEColorMatrixElement where
  pToJSVal = unSVGFEColorMatrixElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEColorMatrixElement where
  pFromJSVal = SVGFEColorMatrixElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEColorMatrixElement where
  toJSVal = return . unSVGFEColorMatrixElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEColorMatrixElement where
  fromJSVal v = fmap SVGFEColorMatrixElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEColorMatrixElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEColorMatrixElement where
  makeObject = makeObject . unSVGFEColorMatrixElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFEColorMatrixElement
instance IsSVGElement SVGFEColorMatrixElement
instance IsElementCSSInlineStyle SVGFEColorMatrixElement
instance IsGlobalEventHandlers SVGFEColorMatrixElement
instance IsHTMLOrSVGOrMathMLElement SVGFEColorMatrixElement
instance IsElement SVGFEColorMatrixElement
instance IsARIAMixin SVGFEColorMatrixElement
instance IsARIANotifyMixin SVGFEColorMatrixElement
instance IsAnimatable SVGFEColorMatrixElement
instance IsChildNode SVGFEColorMatrixElement
instance IsNonDocumentTypeChildNode SVGFEColorMatrixElement
instance IsParentNode SVGFEColorMatrixElement
instance IsSlottable SVGFEColorMatrixElement
instance IsNode SVGFEColorMatrixElement
instance IsEventTarget SVGFEColorMatrixElement

instance IsGObject SVGFEColorMatrixElement where
  typeGType _ = gTypeSVGFEColorMatrixElement
  {-# INLINE typeGType #-}

noSVGFEColorMatrixElement :: Maybe SVGFEColorMatrixElement
noSVGFEColorMatrixElement = Nothing
{-# INLINE noSVGFEColorMatrixElement #-}

gTypeSVGFEColorMatrixElement :: JSM GType
gTypeSVGFEColorMatrixElement = GType . Object <$> jsg "SVGFEColorMatrixElement"

-- | Functions for this interface are in "JSDOM.SVGFEComponentTransferElement" (filter-effects-1).
newtype SVGFEComponentTransferElement = SVGFEComponentTransferElement { unSVGFEComponentTransferElement :: JSVal }

instance PToJSVal SVGFEComponentTransferElement where
  pToJSVal = unSVGFEComponentTransferElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEComponentTransferElement where
  pFromJSVal = SVGFEComponentTransferElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEComponentTransferElement where
  toJSVal = return . unSVGFEComponentTransferElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEComponentTransferElement where
  fromJSVal v = fmap SVGFEComponentTransferElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEComponentTransferElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEComponentTransferElement where
  makeObject = makeObject . unSVGFEComponentTransferElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFEComponentTransferElement
instance IsSVGElement SVGFEComponentTransferElement
instance IsElementCSSInlineStyle SVGFEComponentTransferElement
instance IsGlobalEventHandlers SVGFEComponentTransferElement
instance IsHTMLOrSVGOrMathMLElement SVGFEComponentTransferElement
instance IsElement SVGFEComponentTransferElement
instance IsARIAMixin SVGFEComponentTransferElement
instance IsARIANotifyMixin SVGFEComponentTransferElement
instance IsAnimatable SVGFEComponentTransferElement
instance IsChildNode SVGFEComponentTransferElement
instance IsNonDocumentTypeChildNode SVGFEComponentTransferElement
instance IsParentNode SVGFEComponentTransferElement
instance IsSlottable SVGFEComponentTransferElement
instance IsNode SVGFEComponentTransferElement
instance IsEventTarget SVGFEComponentTransferElement

instance IsGObject SVGFEComponentTransferElement where
  typeGType _ = gTypeSVGFEComponentTransferElement
  {-# INLINE typeGType #-}

noSVGFEComponentTransferElement :: Maybe SVGFEComponentTransferElement
noSVGFEComponentTransferElement = Nothing
{-# INLINE noSVGFEComponentTransferElement #-}

gTypeSVGFEComponentTransferElement :: JSM GType
gTypeSVGFEComponentTransferElement = GType . Object <$> jsg "SVGFEComponentTransferElement"

-- | Functions for this interface are in "JSDOM.SVGFECompositeElement" (filter-effects-1).
newtype SVGFECompositeElement = SVGFECompositeElement { unSVGFECompositeElement :: JSVal }

instance PToJSVal SVGFECompositeElement where
  pToJSVal = unSVGFECompositeElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFECompositeElement where
  pFromJSVal = SVGFECompositeElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFECompositeElement where
  toJSVal = return . unSVGFECompositeElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFECompositeElement where
  fromJSVal v = fmap SVGFECompositeElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFECompositeElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFECompositeElement where
  makeObject = makeObject . unSVGFECompositeElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFECompositeElement
instance IsSVGElement SVGFECompositeElement
instance IsElementCSSInlineStyle SVGFECompositeElement
instance IsGlobalEventHandlers SVGFECompositeElement
instance IsHTMLOrSVGOrMathMLElement SVGFECompositeElement
instance IsElement SVGFECompositeElement
instance IsARIAMixin SVGFECompositeElement
instance IsARIANotifyMixin SVGFECompositeElement
instance IsAnimatable SVGFECompositeElement
instance IsChildNode SVGFECompositeElement
instance IsNonDocumentTypeChildNode SVGFECompositeElement
instance IsParentNode SVGFECompositeElement
instance IsSlottable SVGFECompositeElement
instance IsNode SVGFECompositeElement
instance IsEventTarget SVGFECompositeElement

instance IsGObject SVGFECompositeElement where
  typeGType _ = gTypeSVGFECompositeElement
  {-# INLINE typeGType #-}

noSVGFECompositeElement :: Maybe SVGFECompositeElement
noSVGFECompositeElement = Nothing
{-# INLINE noSVGFECompositeElement #-}

gTypeSVGFECompositeElement :: JSM GType
gTypeSVGFECompositeElement = GType . Object <$> jsg "SVGFECompositeElement"

-- | Functions for this interface are in "JSDOM.SVGFEConvolveMatrixElement" (filter-effects-1).
newtype SVGFEConvolveMatrixElement = SVGFEConvolveMatrixElement { unSVGFEConvolveMatrixElement :: JSVal }

instance PToJSVal SVGFEConvolveMatrixElement where
  pToJSVal = unSVGFEConvolveMatrixElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEConvolveMatrixElement where
  pFromJSVal = SVGFEConvolveMatrixElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEConvolveMatrixElement where
  toJSVal = return . unSVGFEConvolveMatrixElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEConvolveMatrixElement where
  fromJSVal v = fmap SVGFEConvolveMatrixElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEConvolveMatrixElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEConvolveMatrixElement where
  makeObject = makeObject . unSVGFEConvolveMatrixElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFEConvolveMatrixElement
instance IsSVGElement SVGFEConvolveMatrixElement
instance IsElementCSSInlineStyle SVGFEConvolveMatrixElement
instance IsGlobalEventHandlers SVGFEConvolveMatrixElement
instance IsHTMLOrSVGOrMathMLElement SVGFEConvolveMatrixElement
instance IsElement SVGFEConvolveMatrixElement
instance IsARIAMixin SVGFEConvolveMatrixElement
instance IsARIANotifyMixin SVGFEConvolveMatrixElement
instance IsAnimatable SVGFEConvolveMatrixElement
instance IsChildNode SVGFEConvolveMatrixElement
instance IsNonDocumentTypeChildNode SVGFEConvolveMatrixElement
instance IsParentNode SVGFEConvolveMatrixElement
instance IsSlottable SVGFEConvolveMatrixElement
instance IsNode SVGFEConvolveMatrixElement
instance IsEventTarget SVGFEConvolveMatrixElement

instance IsGObject SVGFEConvolveMatrixElement where
  typeGType _ = gTypeSVGFEConvolveMatrixElement
  {-# INLINE typeGType #-}

noSVGFEConvolveMatrixElement :: Maybe SVGFEConvolveMatrixElement
noSVGFEConvolveMatrixElement = Nothing
{-# INLINE noSVGFEConvolveMatrixElement #-}

gTypeSVGFEConvolveMatrixElement :: JSM GType
gTypeSVGFEConvolveMatrixElement = GType . Object <$> jsg "SVGFEConvolveMatrixElement"

-- | Functions for this interface are in "JSDOM.SVGFEDiffuseLightingElement" (filter-effects-1).
newtype SVGFEDiffuseLightingElement = SVGFEDiffuseLightingElement { unSVGFEDiffuseLightingElement :: JSVal }

instance PToJSVal SVGFEDiffuseLightingElement where
  pToJSVal = unSVGFEDiffuseLightingElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEDiffuseLightingElement where
  pFromJSVal = SVGFEDiffuseLightingElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEDiffuseLightingElement where
  toJSVal = return . unSVGFEDiffuseLightingElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEDiffuseLightingElement where
  fromJSVal v = fmap SVGFEDiffuseLightingElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEDiffuseLightingElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEDiffuseLightingElement where
  makeObject = makeObject . unSVGFEDiffuseLightingElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFEDiffuseLightingElement
instance IsSVGElement SVGFEDiffuseLightingElement
instance IsElementCSSInlineStyle SVGFEDiffuseLightingElement
instance IsGlobalEventHandlers SVGFEDiffuseLightingElement
instance IsHTMLOrSVGOrMathMLElement SVGFEDiffuseLightingElement
instance IsElement SVGFEDiffuseLightingElement
instance IsARIAMixin SVGFEDiffuseLightingElement
instance IsARIANotifyMixin SVGFEDiffuseLightingElement
instance IsAnimatable SVGFEDiffuseLightingElement
instance IsChildNode SVGFEDiffuseLightingElement
instance IsNonDocumentTypeChildNode SVGFEDiffuseLightingElement
instance IsParentNode SVGFEDiffuseLightingElement
instance IsSlottable SVGFEDiffuseLightingElement
instance IsNode SVGFEDiffuseLightingElement
instance IsEventTarget SVGFEDiffuseLightingElement

instance IsGObject SVGFEDiffuseLightingElement where
  typeGType _ = gTypeSVGFEDiffuseLightingElement
  {-# INLINE typeGType #-}

noSVGFEDiffuseLightingElement :: Maybe SVGFEDiffuseLightingElement
noSVGFEDiffuseLightingElement = Nothing
{-# INLINE noSVGFEDiffuseLightingElement #-}

gTypeSVGFEDiffuseLightingElement :: JSM GType
gTypeSVGFEDiffuseLightingElement = GType . Object <$> jsg "SVGFEDiffuseLightingElement"

-- | Functions for this interface are in "JSDOM.SVGFEDisplacementMapElement" (filter-effects-1).
newtype SVGFEDisplacementMapElement = SVGFEDisplacementMapElement { unSVGFEDisplacementMapElement :: JSVal }

instance PToJSVal SVGFEDisplacementMapElement where
  pToJSVal = unSVGFEDisplacementMapElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEDisplacementMapElement where
  pFromJSVal = SVGFEDisplacementMapElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEDisplacementMapElement where
  toJSVal = return . unSVGFEDisplacementMapElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEDisplacementMapElement where
  fromJSVal v = fmap SVGFEDisplacementMapElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEDisplacementMapElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEDisplacementMapElement where
  makeObject = makeObject . unSVGFEDisplacementMapElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFEDisplacementMapElement
instance IsSVGElement SVGFEDisplacementMapElement
instance IsElementCSSInlineStyle SVGFEDisplacementMapElement
instance IsGlobalEventHandlers SVGFEDisplacementMapElement
instance IsHTMLOrSVGOrMathMLElement SVGFEDisplacementMapElement
instance IsElement SVGFEDisplacementMapElement
instance IsARIAMixin SVGFEDisplacementMapElement
instance IsARIANotifyMixin SVGFEDisplacementMapElement
instance IsAnimatable SVGFEDisplacementMapElement
instance IsChildNode SVGFEDisplacementMapElement
instance IsNonDocumentTypeChildNode SVGFEDisplacementMapElement
instance IsParentNode SVGFEDisplacementMapElement
instance IsSlottable SVGFEDisplacementMapElement
instance IsNode SVGFEDisplacementMapElement
instance IsEventTarget SVGFEDisplacementMapElement

instance IsGObject SVGFEDisplacementMapElement where
  typeGType _ = gTypeSVGFEDisplacementMapElement
  {-# INLINE typeGType #-}

noSVGFEDisplacementMapElement :: Maybe SVGFEDisplacementMapElement
noSVGFEDisplacementMapElement = Nothing
{-# INLINE noSVGFEDisplacementMapElement #-}

gTypeSVGFEDisplacementMapElement :: JSM GType
gTypeSVGFEDisplacementMapElement = GType . Object <$> jsg "SVGFEDisplacementMapElement"

-- | Functions for this interface are in "JSDOM.SVGFEDistantLightElement" (filter-effects-1).
newtype SVGFEDistantLightElement = SVGFEDistantLightElement { unSVGFEDistantLightElement :: JSVal }

instance PToJSVal SVGFEDistantLightElement where
  pToJSVal = unSVGFEDistantLightElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEDistantLightElement where
  pFromJSVal = SVGFEDistantLightElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEDistantLightElement where
  toJSVal = return . unSVGFEDistantLightElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEDistantLightElement where
  fromJSVal v = fmap SVGFEDistantLightElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEDistantLightElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEDistantLightElement where
  makeObject = makeObject . unSVGFEDistantLightElement

instance IsSVGElement SVGFEDistantLightElement
instance IsElementCSSInlineStyle SVGFEDistantLightElement
instance IsGlobalEventHandlers SVGFEDistantLightElement
instance IsHTMLOrSVGOrMathMLElement SVGFEDistantLightElement
instance IsElement SVGFEDistantLightElement
instance IsARIAMixin SVGFEDistantLightElement
instance IsARIANotifyMixin SVGFEDistantLightElement
instance IsAnimatable SVGFEDistantLightElement
instance IsChildNode SVGFEDistantLightElement
instance IsNonDocumentTypeChildNode SVGFEDistantLightElement
instance IsParentNode SVGFEDistantLightElement
instance IsSlottable SVGFEDistantLightElement
instance IsNode SVGFEDistantLightElement
instance IsEventTarget SVGFEDistantLightElement

instance IsGObject SVGFEDistantLightElement where
  typeGType _ = gTypeSVGFEDistantLightElement
  {-# INLINE typeGType #-}

noSVGFEDistantLightElement :: Maybe SVGFEDistantLightElement
noSVGFEDistantLightElement = Nothing
{-# INLINE noSVGFEDistantLightElement #-}

gTypeSVGFEDistantLightElement :: JSM GType
gTypeSVGFEDistantLightElement = GType . Object <$> jsg "SVGFEDistantLightElement"

-- | Functions for this interface are in "JSDOM.SVGFEDropShadowElement" (filter-effects-1).
newtype SVGFEDropShadowElement = SVGFEDropShadowElement { unSVGFEDropShadowElement :: JSVal }

instance PToJSVal SVGFEDropShadowElement where
  pToJSVal = unSVGFEDropShadowElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEDropShadowElement where
  pFromJSVal = SVGFEDropShadowElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEDropShadowElement where
  toJSVal = return . unSVGFEDropShadowElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEDropShadowElement where
  fromJSVal v = fmap SVGFEDropShadowElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEDropShadowElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEDropShadowElement where
  makeObject = makeObject . unSVGFEDropShadowElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFEDropShadowElement
instance IsSVGElement SVGFEDropShadowElement
instance IsElementCSSInlineStyle SVGFEDropShadowElement
instance IsGlobalEventHandlers SVGFEDropShadowElement
instance IsHTMLOrSVGOrMathMLElement SVGFEDropShadowElement
instance IsElement SVGFEDropShadowElement
instance IsARIAMixin SVGFEDropShadowElement
instance IsARIANotifyMixin SVGFEDropShadowElement
instance IsAnimatable SVGFEDropShadowElement
instance IsChildNode SVGFEDropShadowElement
instance IsNonDocumentTypeChildNode SVGFEDropShadowElement
instance IsParentNode SVGFEDropShadowElement
instance IsSlottable SVGFEDropShadowElement
instance IsNode SVGFEDropShadowElement
instance IsEventTarget SVGFEDropShadowElement

instance IsGObject SVGFEDropShadowElement where
  typeGType _ = gTypeSVGFEDropShadowElement
  {-# INLINE typeGType #-}

noSVGFEDropShadowElement :: Maybe SVGFEDropShadowElement
noSVGFEDropShadowElement = Nothing
{-# INLINE noSVGFEDropShadowElement #-}

gTypeSVGFEDropShadowElement :: JSM GType
gTypeSVGFEDropShadowElement = GType . Object <$> jsg "SVGFEDropShadowElement"

-- | Functions for this interface are in "JSDOM.SVGFEFloodElement" (filter-effects-1).
newtype SVGFEFloodElement = SVGFEFloodElement { unSVGFEFloodElement :: JSVal }

instance PToJSVal SVGFEFloodElement where
  pToJSVal = unSVGFEFloodElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEFloodElement where
  pFromJSVal = SVGFEFloodElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEFloodElement where
  toJSVal = return . unSVGFEFloodElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEFloodElement where
  fromJSVal v = fmap SVGFEFloodElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEFloodElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEFloodElement where
  makeObject = makeObject . unSVGFEFloodElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFEFloodElement
instance IsSVGElement SVGFEFloodElement
instance IsElementCSSInlineStyle SVGFEFloodElement
instance IsGlobalEventHandlers SVGFEFloodElement
instance IsHTMLOrSVGOrMathMLElement SVGFEFloodElement
instance IsElement SVGFEFloodElement
instance IsARIAMixin SVGFEFloodElement
instance IsARIANotifyMixin SVGFEFloodElement
instance IsAnimatable SVGFEFloodElement
instance IsChildNode SVGFEFloodElement
instance IsNonDocumentTypeChildNode SVGFEFloodElement
instance IsParentNode SVGFEFloodElement
instance IsSlottable SVGFEFloodElement
instance IsNode SVGFEFloodElement
instance IsEventTarget SVGFEFloodElement

instance IsGObject SVGFEFloodElement where
  typeGType _ = gTypeSVGFEFloodElement
  {-# INLINE typeGType #-}

noSVGFEFloodElement :: Maybe SVGFEFloodElement
noSVGFEFloodElement = Nothing
{-# INLINE noSVGFEFloodElement #-}

gTypeSVGFEFloodElement :: JSM GType
gTypeSVGFEFloodElement = GType . Object <$> jsg "SVGFEFloodElement"

-- | Functions for this interface are in "JSDOM.SVGFEFuncAElement" (filter-effects-1).
newtype SVGFEFuncAElement = SVGFEFuncAElement { unSVGFEFuncAElement :: JSVal }

instance PToJSVal SVGFEFuncAElement where
  pToJSVal = unSVGFEFuncAElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEFuncAElement where
  pFromJSVal = SVGFEFuncAElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEFuncAElement where
  toJSVal = return . unSVGFEFuncAElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEFuncAElement where
  fromJSVal v = fmap SVGFEFuncAElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEFuncAElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEFuncAElement where
  makeObject = makeObject . unSVGFEFuncAElement

instance IsSVGComponentTransferFunctionElement SVGFEFuncAElement
instance IsSVGElement SVGFEFuncAElement
instance IsElementCSSInlineStyle SVGFEFuncAElement
instance IsGlobalEventHandlers SVGFEFuncAElement
instance IsHTMLOrSVGOrMathMLElement SVGFEFuncAElement
instance IsElement SVGFEFuncAElement
instance IsARIAMixin SVGFEFuncAElement
instance IsARIANotifyMixin SVGFEFuncAElement
instance IsAnimatable SVGFEFuncAElement
instance IsChildNode SVGFEFuncAElement
instance IsNonDocumentTypeChildNode SVGFEFuncAElement
instance IsParentNode SVGFEFuncAElement
instance IsSlottable SVGFEFuncAElement
instance IsNode SVGFEFuncAElement
instance IsEventTarget SVGFEFuncAElement

instance IsGObject SVGFEFuncAElement where
  typeGType _ = gTypeSVGFEFuncAElement
  {-# INLINE typeGType #-}

noSVGFEFuncAElement :: Maybe SVGFEFuncAElement
noSVGFEFuncAElement = Nothing
{-# INLINE noSVGFEFuncAElement #-}

gTypeSVGFEFuncAElement :: JSM GType
gTypeSVGFEFuncAElement = GType . Object <$> jsg "SVGFEFuncAElement"

-- | Functions for this interface are in "JSDOM.SVGFEFuncBElement" (filter-effects-1).
newtype SVGFEFuncBElement = SVGFEFuncBElement { unSVGFEFuncBElement :: JSVal }

instance PToJSVal SVGFEFuncBElement where
  pToJSVal = unSVGFEFuncBElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEFuncBElement where
  pFromJSVal = SVGFEFuncBElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEFuncBElement where
  toJSVal = return . unSVGFEFuncBElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEFuncBElement where
  fromJSVal v = fmap SVGFEFuncBElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEFuncBElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEFuncBElement where
  makeObject = makeObject . unSVGFEFuncBElement

instance IsSVGComponentTransferFunctionElement SVGFEFuncBElement
instance IsSVGElement SVGFEFuncBElement
instance IsElementCSSInlineStyle SVGFEFuncBElement
instance IsGlobalEventHandlers SVGFEFuncBElement
instance IsHTMLOrSVGOrMathMLElement SVGFEFuncBElement
instance IsElement SVGFEFuncBElement
instance IsARIAMixin SVGFEFuncBElement
instance IsARIANotifyMixin SVGFEFuncBElement
instance IsAnimatable SVGFEFuncBElement
instance IsChildNode SVGFEFuncBElement
instance IsNonDocumentTypeChildNode SVGFEFuncBElement
instance IsParentNode SVGFEFuncBElement
instance IsSlottable SVGFEFuncBElement
instance IsNode SVGFEFuncBElement
instance IsEventTarget SVGFEFuncBElement

instance IsGObject SVGFEFuncBElement where
  typeGType _ = gTypeSVGFEFuncBElement
  {-# INLINE typeGType #-}

noSVGFEFuncBElement :: Maybe SVGFEFuncBElement
noSVGFEFuncBElement = Nothing
{-# INLINE noSVGFEFuncBElement #-}

gTypeSVGFEFuncBElement :: JSM GType
gTypeSVGFEFuncBElement = GType . Object <$> jsg "SVGFEFuncBElement"

-- | Functions for this interface are in "JSDOM.SVGFEFuncGElement" (filter-effects-1).
newtype SVGFEFuncGElement = SVGFEFuncGElement { unSVGFEFuncGElement :: JSVal }

instance PToJSVal SVGFEFuncGElement where
  pToJSVal = unSVGFEFuncGElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEFuncGElement where
  pFromJSVal = SVGFEFuncGElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEFuncGElement where
  toJSVal = return . unSVGFEFuncGElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEFuncGElement where
  fromJSVal v = fmap SVGFEFuncGElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEFuncGElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEFuncGElement where
  makeObject = makeObject . unSVGFEFuncGElement

instance IsSVGComponentTransferFunctionElement SVGFEFuncGElement
instance IsSVGElement SVGFEFuncGElement
instance IsElementCSSInlineStyle SVGFEFuncGElement
instance IsGlobalEventHandlers SVGFEFuncGElement
instance IsHTMLOrSVGOrMathMLElement SVGFEFuncGElement
instance IsElement SVGFEFuncGElement
instance IsARIAMixin SVGFEFuncGElement
instance IsARIANotifyMixin SVGFEFuncGElement
instance IsAnimatable SVGFEFuncGElement
instance IsChildNode SVGFEFuncGElement
instance IsNonDocumentTypeChildNode SVGFEFuncGElement
instance IsParentNode SVGFEFuncGElement
instance IsSlottable SVGFEFuncGElement
instance IsNode SVGFEFuncGElement
instance IsEventTarget SVGFEFuncGElement

instance IsGObject SVGFEFuncGElement where
  typeGType _ = gTypeSVGFEFuncGElement
  {-# INLINE typeGType #-}

noSVGFEFuncGElement :: Maybe SVGFEFuncGElement
noSVGFEFuncGElement = Nothing
{-# INLINE noSVGFEFuncGElement #-}

gTypeSVGFEFuncGElement :: JSM GType
gTypeSVGFEFuncGElement = GType . Object <$> jsg "SVGFEFuncGElement"

-- | Functions for this interface are in "JSDOM.SVGFEFuncRElement" (filter-effects-1).
newtype SVGFEFuncRElement = SVGFEFuncRElement { unSVGFEFuncRElement :: JSVal }

instance PToJSVal SVGFEFuncRElement where
  pToJSVal = unSVGFEFuncRElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEFuncRElement where
  pFromJSVal = SVGFEFuncRElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEFuncRElement where
  toJSVal = return . unSVGFEFuncRElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEFuncRElement where
  fromJSVal v = fmap SVGFEFuncRElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEFuncRElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEFuncRElement where
  makeObject = makeObject . unSVGFEFuncRElement

instance IsSVGComponentTransferFunctionElement SVGFEFuncRElement
instance IsSVGElement SVGFEFuncRElement
instance IsElementCSSInlineStyle SVGFEFuncRElement
instance IsGlobalEventHandlers SVGFEFuncRElement
instance IsHTMLOrSVGOrMathMLElement SVGFEFuncRElement
instance IsElement SVGFEFuncRElement
instance IsARIAMixin SVGFEFuncRElement
instance IsARIANotifyMixin SVGFEFuncRElement
instance IsAnimatable SVGFEFuncRElement
instance IsChildNode SVGFEFuncRElement
instance IsNonDocumentTypeChildNode SVGFEFuncRElement
instance IsParentNode SVGFEFuncRElement
instance IsSlottable SVGFEFuncRElement
instance IsNode SVGFEFuncRElement
instance IsEventTarget SVGFEFuncRElement

instance IsGObject SVGFEFuncRElement where
  typeGType _ = gTypeSVGFEFuncRElement
  {-# INLINE typeGType #-}

noSVGFEFuncRElement :: Maybe SVGFEFuncRElement
noSVGFEFuncRElement = Nothing
{-# INLINE noSVGFEFuncRElement #-}

gTypeSVGFEFuncRElement :: JSM GType
gTypeSVGFEFuncRElement = GType . Object <$> jsg "SVGFEFuncRElement"

-- | Functions for this interface are in "JSDOM.SVGFEGaussianBlurElement" (filter-effects-1).
newtype SVGFEGaussianBlurElement = SVGFEGaussianBlurElement { unSVGFEGaussianBlurElement :: JSVal }

instance PToJSVal SVGFEGaussianBlurElement where
  pToJSVal = unSVGFEGaussianBlurElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEGaussianBlurElement where
  pFromJSVal = SVGFEGaussianBlurElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEGaussianBlurElement where
  toJSVal = return . unSVGFEGaussianBlurElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEGaussianBlurElement where
  fromJSVal v = fmap SVGFEGaussianBlurElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEGaussianBlurElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEGaussianBlurElement where
  makeObject = makeObject . unSVGFEGaussianBlurElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFEGaussianBlurElement
instance IsSVGElement SVGFEGaussianBlurElement
instance IsElementCSSInlineStyle SVGFEGaussianBlurElement
instance IsGlobalEventHandlers SVGFEGaussianBlurElement
instance IsHTMLOrSVGOrMathMLElement SVGFEGaussianBlurElement
instance IsElement SVGFEGaussianBlurElement
instance IsARIAMixin SVGFEGaussianBlurElement
instance IsARIANotifyMixin SVGFEGaussianBlurElement
instance IsAnimatable SVGFEGaussianBlurElement
instance IsChildNode SVGFEGaussianBlurElement
instance IsNonDocumentTypeChildNode SVGFEGaussianBlurElement
instance IsParentNode SVGFEGaussianBlurElement
instance IsSlottable SVGFEGaussianBlurElement
instance IsNode SVGFEGaussianBlurElement
instance IsEventTarget SVGFEGaussianBlurElement

instance IsGObject SVGFEGaussianBlurElement where
  typeGType _ = gTypeSVGFEGaussianBlurElement
  {-# INLINE typeGType #-}

noSVGFEGaussianBlurElement :: Maybe SVGFEGaussianBlurElement
noSVGFEGaussianBlurElement = Nothing
{-# INLINE noSVGFEGaussianBlurElement #-}

gTypeSVGFEGaussianBlurElement :: JSM GType
gTypeSVGFEGaussianBlurElement = GType . Object <$> jsg "SVGFEGaussianBlurElement"

-- | Functions for this interface are in "JSDOM.SVGFEImageElement" (filter-effects-1).
newtype SVGFEImageElement = SVGFEImageElement { unSVGFEImageElement :: JSVal }

instance PToJSVal SVGFEImageElement where
  pToJSVal = unSVGFEImageElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEImageElement where
  pFromJSVal = SVGFEImageElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEImageElement where
  toJSVal = return . unSVGFEImageElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEImageElement where
  fromJSVal v = fmap SVGFEImageElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEImageElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEImageElement where
  makeObject = makeObject . unSVGFEImageElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFEImageElement
instance IsSVGURIReference SVGFEImageElement
instance IsSVGElement SVGFEImageElement
instance IsElementCSSInlineStyle SVGFEImageElement
instance IsGlobalEventHandlers SVGFEImageElement
instance IsHTMLOrSVGOrMathMLElement SVGFEImageElement
instance IsElement SVGFEImageElement
instance IsARIAMixin SVGFEImageElement
instance IsARIANotifyMixin SVGFEImageElement
instance IsAnimatable SVGFEImageElement
instance IsChildNode SVGFEImageElement
instance IsNonDocumentTypeChildNode SVGFEImageElement
instance IsParentNode SVGFEImageElement
instance IsSlottable SVGFEImageElement
instance IsNode SVGFEImageElement
instance IsEventTarget SVGFEImageElement

instance IsGObject SVGFEImageElement where
  typeGType _ = gTypeSVGFEImageElement
  {-# INLINE typeGType #-}

noSVGFEImageElement :: Maybe SVGFEImageElement
noSVGFEImageElement = Nothing
{-# INLINE noSVGFEImageElement #-}

gTypeSVGFEImageElement :: JSM GType
gTypeSVGFEImageElement = GType . Object <$> jsg "SVGFEImageElement"

-- | Functions for this interface are in "JSDOM.SVGFEMergeElement" (filter-effects-1).
newtype SVGFEMergeElement = SVGFEMergeElement { unSVGFEMergeElement :: JSVal }

instance PToJSVal SVGFEMergeElement where
  pToJSVal = unSVGFEMergeElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEMergeElement where
  pFromJSVal = SVGFEMergeElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEMergeElement where
  toJSVal = return . unSVGFEMergeElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEMergeElement where
  fromJSVal v = fmap SVGFEMergeElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEMergeElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEMergeElement where
  makeObject = makeObject . unSVGFEMergeElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFEMergeElement
instance IsSVGElement SVGFEMergeElement
instance IsElementCSSInlineStyle SVGFEMergeElement
instance IsGlobalEventHandlers SVGFEMergeElement
instance IsHTMLOrSVGOrMathMLElement SVGFEMergeElement
instance IsElement SVGFEMergeElement
instance IsARIAMixin SVGFEMergeElement
instance IsARIANotifyMixin SVGFEMergeElement
instance IsAnimatable SVGFEMergeElement
instance IsChildNode SVGFEMergeElement
instance IsNonDocumentTypeChildNode SVGFEMergeElement
instance IsParentNode SVGFEMergeElement
instance IsSlottable SVGFEMergeElement
instance IsNode SVGFEMergeElement
instance IsEventTarget SVGFEMergeElement

instance IsGObject SVGFEMergeElement where
  typeGType _ = gTypeSVGFEMergeElement
  {-# INLINE typeGType #-}

noSVGFEMergeElement :: Maybe SVGFEMergeElement
noSVGFEMergeElement = Nothing
{-# INLINE noSVGFEMergeElement #-}

gTypeSVGFEMergeElement :: JSM GType
gTypeSVGFEMergeElement = GType . Object <$> jsg "SVGFEMergeElement"

-- | Functions for this interface are in "JSDOM.SVGFEMergeNodeElement" (filter-effects-1).
newtype SVGFEMergeNodeElement = SVGFEMergeNodeElement { unSVGFEMergeNodeElement :: JSVal }

instance PToJSVal SVGFEMergeNodeElement where
  pToJSVal = unSVGFEMergeNodeElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEMergeNodeElement where
  pFromJSVal = SVGFEMergeNodeElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEMergeNodeElement where
  toJSVal = return . unSVGFEMergeNodeElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEMergeNodeElement where
  fromJSVal v = fmap SVGFEMergeNodeElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEMergeNodeElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEMergeNodeElement where
  makeObject = makeObject . unSVGFEMergeNodeElement

instance IsSVGElement SVGFEMergeNodeElement
instance IsElementCSSInlineStyle SVGFEMergeNodeElement
instance IsGlobalEventHandlers SVGFEMergeNodeElement
instance IsHTMLOrSVGOrMathMLElement SVGFEMergeNodeElement
instance IsElement SVGFEMergeNodeElement
instance IsARIAMixin SVGFEMergeNodeElement
instance IsARIANotifyMixin SVGFEMergeNodeElement
instance IsAnimatable SVGFEMergeNodeElement
instance IsChildNode SVGFEMergeNodeElement
instance IsNonDocumentTypeChildNode SVGFEMergeNodeElement
instance IsParentNode SVGFEMergeNodeElement
instance IsSlottable SVGFEMergeNodeElement
instance IsNode SVGFEMergeNodeElement
instance IsEventTarget SVGFEMergeNodeElement

instance IsGObject SVGFEMergeNodeElement where
  typeGType _ = gTypeSVGFEMergeNodeElement
  {-# INLINE typeGType #-}

noSVGFEMergeNodeElement :: Maybe SVGFEMergeNodeElement
noSVGFEMergeNodeElement = Nothing
{-# INLINE noSVGFEMergeNodeElement #-}

gTypeSVGFEMergeNodeElement :: JSM GType
gTypeSVGFEMergeNodeElement = GType . Object <$> jsg "SVGFEMergeNodeElement"

-- | Functions for this interface are in "JSDOM.SVGFEMorphologyElement" (filter-effects-1).
newtype SVGFEMorphologyElement = SVGFEMorphologyElement { unSVGFEMorphologyElement :: JSVal }

instance PToJSVal SVGFEMorphologyElement where
  pToJSVal = unSVGFEMorphologyElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEMorphologyElement where
  pFromJSVal = SVGFEMorphologyElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEMorphologyElement where
  toJSVal = return . unSVGFEMorphologyElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEMorphologyElement where
  fromJSVal v = fmap SVGFEMorphologyElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEMorphologyElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEMorphologyElement where
  makeObject = makeObject . unSVGFEMorphologyElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFEMorphologyElement
instance IsSVGElement SVGFEMorphologyElement
instance IsElementCSSInlineStyle SVGFEMorphologyElement
instance IsGlobalEventHandlers SVGFEMorphologyElement
instance IsHTMLOrSVGOrMathMLElement SVGFEMorphologyElement
instance IsElement SVGFEMorphologyElement
instance IsARIAMixin SVGFEMorphologyElement
instance IsARIANotifyMixin SVGFEMorphologyElement
instance IsAnimatable SVGFEMorphologyElement
instance IsChildNode SVGFEMorphologyElement
instance IsNonDocumentTypeChildNode SVGFEMorphologyElement
instance IsParentNode SVGFEMorphologyElement
instance IsSlottable SVGFEMorphologyElement
instance IsNode SVGFEMorphologyElement
instance IsEventTarget SVGFEMorphologyElement

instance IsGObject SVGFEMorphologyElement where
  typeGType _ = gTypeSVGFEMorphologyElement
  {-# INLINE typeGType #-}

noSVGFEMorphologyElement :: Maybe SVGFEMorphologyElement
noSVGFEMorphologyElement = Nothing
{-# INLINE noSVGFEMorphologyElement #-}

gTypeSVGFEMorphologyElement :: JSM GType
gTypeSVGFEMorphologyElement = GType . Object <$> jsg "SVGFEMorphologyElement"

-- | Functions for this interface are in "JSDOM.SVGFEOffsetElement" (filter-effects-1).
newtype SVGFEOffsetElement = SVGFEOffsetElement { unSVGFEOffsetElement :: JSVal }

instance PToJSVal SVGFEOffsetElement where
  pToJSVal = unSVGFEOffsetElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEOffsetElement where
  pFromJSVal = SVGFEOffsetElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEOffsetElement where
  toJSVal = return . unSVGFEOffsetElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEOffsetElement where
  fromJSVal v = fmap SVGFEOffsetElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEOffsetElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEOffsetElement where
  makeObject = makeObject . unSVGFEOffsetElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFEOffsetElement
instance IsSVGElement SVGFEOffsetElement
instance IsElementCSSInlineStyle SVGFEOffsetElement
instance IsGlobalEventHandlers SVGFEOffsetElement
instance IsHTMLOrSVGOrMathMLElement SVGFEOffsetElement
instance IsElement SVGFEOffsetElement
instance IsARIAMixin SVGFEOffsetElement
instance IsARIANotifyMixin SVGFEOffsetElement
instance IsAnimatable SVGFEOffsetElement
instance IsChildNode SVGFEOffsetElement
instance IsNonDocumentTypeChildNode SVGFEOffsetElement
instance IsParentNode SVGFEOffsetElement
instance IsSlottable SVGFEOffsetElement
instance IsNode SVGFEOffsetElement
instance IsEventTarget SVGFEOffsetElement

instance IsGObject SVGFEOffsetElement where
  typeGType _ = gTypeSVGFEOffsetElement
  {-# INLINE typeGType #-}

noSVGFEOffsetElement :: Maybe SVGFEOffsetElement
noSVGFEOffsetElement = Nothing
{-# INLINE noSVGFEOffsetElement #-}

gTypeSVGFEOffsetElement :: JSM GType
gTypeSVGFEOffsetElement = GType . Object <$> jsg "SVGFEOffsetElement"

-- | Functions for this interface are in "JSDOM.SVGFEPointLightElement" (filter-effects-1).
newtype SVGFEPointLightElement = SVGFEPointLightElement { unSVGFEPointLightElement :: JSVal }

instance PToJSVal SVGFEPointLightElement where
  pToJSVal = unSVGFEPointLightElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFEPointLightElement where
  pFromJSVal = SVGFEPointLightElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFEPointLightElement where
  toJSVal = return . unSVGFEPointLightElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFEPointLightElement where
  fromJSVal v = fmap SVGFEPointLightElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFEPointLightElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFEPointLightElement where
  makeObject = makeObject . unSVGFEPointLightElement

instance IsSVGElement SVGFEPointLightElement
instance IsElementCSSInlineStyle SVGFEPointLightElement
instance IsGlobalEventHandlers SVGFEPointLightElement
instance IsHTMLOrSVGOrMathMLElement SVGFEPointLightElement
instance IsElement SVGFEPointLightElement
instance IsARIAMixin SVGFEPointLightElement
instance IsARIANotifyMixin SVGFEPointLightElement
instance IsAnimatable SVGFEPointLightElement
instance IsChildNode SVGFEPointLightElement
instance IsNonDocumentTypeChildNode SVGFEPointLightElement
instance IsParentNode SVGFEPointLightElement
instance IsSlottable SVGFEPointLightElement
instance IsNode SVGFEPointLightElement
instance IsEventTarget SVGFEPointLightElement

instance IsGObject SVGFEPointLightElement where
  typeGType _ = gTypeSVGFEPointLightElement
  {-# INLINE typeGType #-}

noSVGFEPointLightElement :: Maybe SVGFEPointLightElement
noSVGFEPointLightElement = Nothing
{-# INLINE noSVGFEPointLightElement #-}

gTypeSVGFEPointLightElement :: JSM GType
gTypeSVGFEPointLightElement = GType . Object <$> jsg "SVGFEPointLightElement"

-- | Functions for this interface are in "JSDOM.SVGFESpecularLightingElement" (filter-effects-1).
newtype SVGFESpecularLightingElement = SVGFESpecularLightingElement { unSVGFESpecularLightingElement :: JSVal }

instance PToJSVal SVGFESpecularLightingElement where
  pToJSVal = unSVGFESpecularLightingElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFESpecularLightingElement where
  pFromJSVal = SVGFESpecularLightingElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFESpecularLightingElement where
  toJSVal = return . unSVGFESpecularLightingElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFESpecularLightingElement where
  fromJSVal v = fmap SVGFESpecularLightingElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFESpecularLightingElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFESpecularLightingElement where
  makeObject = makeObject . unSVGFESpecularLightingElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFESpecularLightingElement
instance IsSVGElement SVGFESpecularLightingElement
instance IsElementCSSInlineStyle SVGFESpecularLightingElement
instance IsGlobalEventHandlers SVGFESpecularLightingElement
instance IsHTMLOrSVGOrMathMLElement SVGFESpecularLightingElement
instance IsElement SVGFESpecularLightingElement
instance IsARIAMixin SVGFESpecularLightingElement
instance IsARIANotifyMixin SVGFESpecularLightingElement
instance IsAnimatable SVGFESpecularLightingElement
instance IsChildNode SVGFESpecularLightingElement
instance IsNonDocumentTypeChildNode SVGFESpecularLightingElement
instance IsParentNode SVGFESpecularLightingElement
instance IsSlottable SVGFESpecularLightingElement
instance IsNode SVGFESpecularLightingElement
instance IsEventTarget SVGFESpecularLightingElement

instance IsGObject SVGFESpecularLightingElement where
  typeGType _ = gTypeSVGFESpecularLightingElement
  {-# INLINE typeGType #-}

noSVGFESpecularLightingElement :: Maybe SVGFESpecularLightingElement
noSVGFESpecularLightingElement = Nothing
{-# INLINE noSVGFESpecularLightingElement #-}

gTypeSVGFESpecularLightingElement :: JSM GType
gTypeSVGFESpecularLightingElement = GType . Object <$> jsg "SVGFESpecularLightingElement"

-- | Functions for this interface are in "JSDOM.SVGFESpotLightElement" (filter-effects-1).
newtype SVGFESpotLightElement = SVGFESpotLightElement { unSVGFESpotLightElement :: JSVal }

instance PToJSVal SVGFESpotLightElement where
  pToJSVal = unSVGFESpotLightElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFESpotLightElement where
  pFromJSVal = SVGFESpotLightElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFESpotLightElement where
  toJSVal = return . unSVGFESpotLightElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFESpotLightElement where
  fromJSVal v = fmap SVGFESpotLightElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFESpotLightElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFESpotLightElement where
  makeObject = makeObject . unSVGFESpotLightElement

instance IsSVGElement SVGFESpotLightElement
instance IsElementCSSInlineStyle SVGFESpotLightElement
instance IsGlobalEventHandlers SVGFESpotLightElement
instance IsHTMLOrSVGOrMathMLElement SVGFESpotLightElement
instance IsElement SVGFESpotLightElement
instance IsARIAMixin SVGFESpotLightElement
instance IsARIANotifyMixin SVGFESpotLightElement
instance IsAnimatable SVGFESpotLightElement
instance IsChildNode SVGFESpotLightElement
instance IsNonDocumentTypeChildNode SVGFESpotLightElement
instance IsParentNode SVGFESpotLightElement
instance IsSlottable SVGFESpotLightElement
instance IsNode SVGFESpotLightElement
instance IsEventTarget SVGFESpotLightElement

instance IsGObject SVGFESpotLightElement where
  typeGType _ = gTypeSVGFESpotLightElement
  {-# INLINE typeGType #-}

noSVGFESpotLightElement :: Maybe SVGFESpotLightElement
noSVGFESpotLightElement = Nothing
{-# INLINE noSVGFESpotLightElement #-}

gTypeSVGFESpotLightElement :: JSM GType
gTypeSVGFESpotLightElement = GType . Object <$> jsg "SVGFESpotLightElement"

-- | Functions for this interface are in "JSDOM.SVGFETileElement" (filter-effects-1).
newtype SVGFETileElement = SVGFETileElement { unSVGFETileElement :: JSVal }

instance PToJSVal SVGFETileElement where
  pToJSVal = unSVGFETileElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFETileElement where
  pFromJSVal = SVGFETileElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFETileElement where
  toJSVal = return . unSVGFETileElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFETileElement where
  fromJSVal v = fmap SVGFETileElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFETileElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFETileElement where
  makeObject = makeObject . unSVGFETileElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFETileElement
instance IsSVGElement SVGFETileElement
instance IsElementCSSInlineStyle SVGFETileElement
instance IsGlobalEventHandlers SVGFETileElement
instance IsHTMLOrSVGOrMathMLElement SVGFETileElement
instance IsElement SVGFETileElement
instance IsARIAMixin SVGFETileElement
instance IsARIANotifyMixin SVGFETileElement
instance IsAnimatable SVGFETileElement
instance IsChildNode SVGFETileElement
instance IsNonDocumentTypeChildNode SVGFETileElement
instance IsParentNode SVGFETileElement
instance IsSlottable SVGFETileElement
instance IsNode SVGFETileElement
instance IsEventTarget SVGFETileElement

instance IsGObject SVGFETileElement where
  typeGType _ = gTypeSVGFETileElement
  {-# INLINE typeGType #-}

noSVGFETileElement :: Maybe SVGFETileElement
noSVGFETileElement = Nothing
{-# INLINE noSVGFETileElement #-}

gTypeSVGFETileElement :: JSM GType
gTypeSVGFETileElement = GType . Object <$> jsg "SVGFETileElement"

-- | Functions for this interface are in "JSDOM.SVGFETurbulenceElement" (filter-effects-1).
newtype SVGFETurbulenceElement = SVGFETurbulenceElement { unSVGFETurbulenceElement :: JSVal }

instance PToJSVal SVGFETurbulenceElement where
  pToJSVal = unSVGFETurbulenceElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFETurbulenceElement where
  pFromJSVal = SVGFETurbulenceElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFETurbulenceElement where
  toJSVal = return . unSVGFETurbulenceElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFETurbulenceElement where
  fromJSVal v = fmap SVGFETurbulenceElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFETurbulenceElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFETurbulenceElement where
  makeObject = makeObject . unSVGFETurbulenceElement

instance IsSVGFilterPrimitiveStandardAttributes SVGFETurbulenceElement
instance IsSVGElement SVGFETurbulenceElement
instance IsElementCSSInlineStyle SVGFETurbulenceElement
instance IsGlobalEventHandlers SVGFETurbulenceElement
instance IsHTMLOrSVGOrMathMLElement SVGFETurbulenceElement
instance IsElement SVGFETurbulenceElement
instance IsARIAMixin SVGFETurbulenceElement
instance IsARIANotifyMixin SVGFETurbulenceElement
instance IsAnimatable SVGFETurbulenceElement
instance IsChildNode SVGFETurbulenceElement
instance IsNonDocumentTypeChildNode SVGFETurbulenceElement
instance IsParentNode SVGFETurbulenceElement
instance IsSlottable SVGFETurbulenceElement
instance IsNode SVGFETurbulenceElement
instance IsEventTarget SVGFETurbulenceElement

instance IsGObject SVGFETurbulenceElement where
  typeGType _ = gTypeSVGFETurbulenceElement
  {-# INLINE typeGType #-}

noSVGFETurbulenceElement :: Maybe SVGFETurbulenceElement
noSVGFETurbulenceElement = Nothing
{-# INLINE noSVGFETurbulenceElement #-}

gTypeSVGFETurbulenceElement :: JSM GType
gTypeSVGFETurbulenceElement = GType . Object <$> jsg "SVGFETurbulenceElement"

-- | Functions for this interface are in "JSDOM.SVGFilterElement" (filter-effects-1).
newtype SVGFilterElement = SVGFilterElement { unSVGFilterElement :: JSVal }

instance PToJSVal SVGFilterElement where
  pToJSVal = unSVGFilterElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFilterElement where
  pFromJSVal = SVGFilterElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFilterElement where
  toJSVal = return . unSVGFilterElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFilterElement where
  fromJSVal v = fmap SVGFilterElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFilterElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFilterElement where
  makeObject = makeObject . unSVGFilterElement

instance IsSVGElement SVGFilterElement
instance IsElementCSSInlineStyle SVGFilterElement
instance IsGlobalEventHandlers SVGFilterElement
instance IsHTMLOrSVGOrMathMLElement SVGFilterElement
instance IsElement SVGFilterElement
instance IsARIAMixin SVGFilterElement
instance IsARIANotifyMixin SVGFilterElement
instance IsAnimatable SVGFilterElement
instance IsChildNode SVGFilterElement
instance IsNonDocumentTypeChildNode SVGFilterElement
instance IsParentNode SVGFilterElement
instance IsSlottable SVGFilterElement
instance IsNode SVGFilterElement
instance IsEventTarget SVGFilterElement

instance IsGObject SVGFilterElement where
  typeGType _ = gTypeSVGFilterElement
  {-# INLINE typeGType #-}

noSVGFilterElement :: Maybe SVGFilterElement
noSVGFilterElement = Nothing
{-# INLINE noSVGFilterElement #-}

gTypeSVGFilterElement :: JSM GType
gTypeSVGFilterElement = GType . Object <$> jsg "SVGFilterElement"

-- | Functions for this interface are in "JSDOM.SVGFilterPrimitiveStandardAttributes" (filter-effects-1).
newtype SVGFilterPrimitiveStandardAttributes = SVGFilterPrimitiveStandardAttributes { unSVGFilterPrimitiveStandardAttributes :: JSVal }

instance PToJSVal SVGFilterPrimitiveStandardAttributes where
  pToJSVal = unSVGFilterPrimitiveStandardAttributes
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFilterPrimitiveStandardAttributes where
  pFromJSVal = SVGFilterPrimitiveStandardAttributes
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFilterPrimitiveStandardAttributes where
  toJSVal = return . unSVGFilterPrimitiveStandardAttributes
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFilterPrimitiveStandardAttributes where
  fromJSVal v = fmap SVGFilterPrimitiveStandardAttributes <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFilterPrimitiveStandardAttributes
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFilterPrimitiveStandardAttributes where
  makeObject = makeObject . unSVGFilterPrimitiveStandardAttributes

class (IsGObject o) => IsSVGFilterPrimitiveStandardAttributes o
toSVGFilterPrimitiveStandardAttributes :: IsSVGFilterPrimitiveStandardAttributes o => o -> SVGFilterPrimitiveStandardAttributes
toSVGFilterPrimitiveStandardAttributes = SVGFilterPrimitiveStandardAttributes . coerce

instance IsSVGFilterPrimitiveStandardAttributes SVGFilterPrimitiveStandardAttributes

instance IsGObject SVGFilterPrimitiveStandardAttributes where
  typeGType _ = gTypeSVGFilterPrimitiveStandardAttributes
  {-# INLINE typeGType #-}

noSVGFilterPrimitiveStandardAttributes :: Maybe SVGFilterPrimitiveStandardAttributes
noSVGFilterPrimitiveStandardAttributes = Nothing
{-# INLINE noSVGFilterPrimitiveStandardAttributes #-}

gTypeSVGFilterPrimitiveStandardAttributes :: JSM GType
gTypeSVGFilterPrimitiveStandardAttributes = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SVGFitToViewBox" (SVG2).
newtype SVGFitToViewBox = SVGFitToViewBox { unSVGFitToViewBox :: JSVal }

instance PToJSVal SVGFitToViewBox where
  pToJSVal = unSVGFitToViewBox
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGFitToViewBox where
  pFromJSVal = SVGFitToViewBox
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGFitToViewBox where
  toJSVal = return . unSVGFitToViewBox
  {-# INLINE toJSVal #-}

instance FromJSVal SVGFitToViewBox where
  fromJSVal v = fmap SVGFitToViewBox <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGFitToViewBox
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGFitToViewBox where
  makeObject = makeObject . unSVGFitToViewBox

class (IsGObject o) => IsSVGFitToViewBox o
toSVGFitToViewBox :: IsSVGFitToViewBox o => o -> SVGFitToViewBox
toSVGFitToViewBox = SVGFitToViewBox . coerce

instance IsSVGFitToViewBox SVGFitToViewBox

instance IsGObject SVGFitToViewBox where
  typeGType _ = gTypeSVGFitToViewBox
  {-# INLINE typeGType #-}

noSVGFitToViewBox :: Maybe SVGFitToViewBox
noSVGFitToViewBox = Nothing
{-# INLINE noSVGFitToViewBox #-}

gTypeSVGFitToViewBox :: JSM GType
gTypeSVGFitToViewBox = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SVGForeignObjectElement" (SVG2).
newtype SVGForeignObjectElement = SVGForeignObjectElement { unSVGForeignObjectElement :: JSVal }

instance PToJSVal SVGForeignObjectElement where
  pToJSVal = unSVGForeignObjectElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGForeignObjectElement where
  pFromJSVal = SVGForeignObjectElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGForeignObjectElement where
  toJSVal = return . unSVGForeignObjectElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGForeignObjectElement where
  fromJSVal v = fmap SVGForeignObjectElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGForeignObjectElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGForeignObjectElement where
  makeObject = makeObject . unSVGForeignObjectElement

instance IsSVGGraphicsElement SVGForeignObjectElement
instance IsSVGTests SVGForeignObjectElement
instance IsSVGElement SVGForeignObjectElement
instance IsElementCSSInlineStyle SVGForeignObjectElement
instance IsGlobalEventHandlers SVGForeignObjectElement
instance IsHTMLOrSVGOrMathMLElement SVGForeignObjectElement
instance IsElement SVGForeignObjectElement
instance IsARIAMixin SVGForeignObjectElement
instance IsARIANotifyMixin SVGForeignObjectElement
instance IsAnimatable SVGForeignObjectElement
instance IsChildNode SVGForeignObjectElement
instance IsNonDocumentTypeChildNode SVGForeignObjectElement
instance IsParentNode SVGForeignObjectElement
instance IsSlottable SVGForeignObjectElement
instance IsNode SVGForeignObjectElement
instance IsEventTarget SVGForeignObjectElement

instance IsGObject SVGForeignObjectElement where
  typeGType _ = gTypeSVGForeignObjectElement
  {-# INLINE typeGType #-}

noSVGForeignObjectElement :: Maybe SVGForeignObjectElement
noSVGForeignObjectElement = Nothing
{-# INLINE noSVGForeignObjectElement #-}

gTypeSVGForeignObjectElement :: JSM GType
gTypeSVGForeignObjectElement = GType . Object <$> jsg "SVGForeignObjectElement"

-- | Functions for this interface are in "JSDOM.SVGGElement" (SVG2).
newtype SVGGElement = SVGGElement { unSVGGElement :: JSVal }

instance PToJSVal SVGGElement where
  pToJSVal = unSVGGElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGGElement where
  pFromJSVal = SVGGElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGGElement where
  toJSVal = return . unSVGGElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGGElement where
  fromJSVal v = fmap SVGGElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGGElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGGElement where
  makeObject = makeObject . unSVGGElement

instance IsSVGGraphicsElement SVGGElement
instance IsSVGTests SVGGElement
instance IsSVGElement SVGGElement
instance IsElementCSSInlineStyle SVGGElement
instance IsGlobalEventHandlers SVGGElement
instance IsHTMLOrSVGOrMathMLElement SVGGElement
instance IsElement SVGGElement
instance IsARIAMixin SVGGElement
instance IsARIANotifyMixin SVGGElement
instance IsAnimatable SVGGElement
instance IsChildNode SVGGElement
instance IsNonDocumentTypeChildNode SVGGElement
instance IsParentNode SVGGElement
instance IsSlottable SVGGElement
instance IsNode SVGGElement
instance IsEventTarget SVGGElement

instance IsGObject SVGGElement where
  typeGType _ = gTypeSVGGElement
  {-# INLINE typeGType #-}

noSVGGElement :: Maybe SVGGElement
noSVGGElement = Nothing
{-# INLINE noSVGGElement #-}

gTypeSVGGElement :: JSM GType
gTypeSVGGElement = GType . Object <$> jsg "SVGGElement"

-- | Functions for this interface are in "JSDOM.SVGGeometryElement" (SVG2).
newtype SVGGeometryElement = SVGGeometryElement { unSVGGeometryElement :: JSVal }

instance PToJSVal SVGGeometryElement where
  pToJSVal = unSVGGeometryElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGGeometryElement where
  pFromJSVal = SVGGeometryElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGGeometryElement where
  toJSVal = return . unSVGGeometryElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGGeometryElement where
  fromJSVal v = fmap SVGGeometryElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGGeometryElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGGeometryElement where
  makeObject = makeObject . unSVGGeometryElement

class (IsSVGGraphicsElement o, IsGObject o) => IsSVGGeometryElement o
toSVGGeometryElement :: IsSVGGeometryElement o => o -> SVGGeometryElement
toSVGGeometryElement = SVGGeometryElement . coerce

instance IsSVGGeometryElement SVGGeometryElement
instance IsSVGGraphicsElement SVGGeometryElement
instance IsSVGTests SVGGeometryElement
instance IsSVGElement SVGGeometryElement
instance IsElementCSSInlineStyle SVGGeometryElement
instance IsGlobalEventHandlers SVGGeometryElement
instance IsHTMLOrSVGOrMathMLElement SVGGeometryElement
instance IsElement SVGGeometryElement
instance IsARIAMixin SVGGeometryElement
instance IsARIANotifyMixin SVGGeometryElement
instance IsAnimatable SVGGeometryElement
instance IsChildNode SVGGeometryElement
instance IsNonDocumentTypeChildNode SVGGeometryElement
instance IsParentNode SVGGeometryElement
instance IsSlottable SVGGeometryElement
instance IsNode SVGGeometryElement
instance IsEventTarget SVGGeometryElement

instance IsGObject SVGGeometryElement where
  typeGType _ = gTypeSVGGeometryElement
  {-# INLINE typeGType #-}

noSVGGeometryElement :: Maybe SVGGeometryElement
noSVGGeometryElement = Nothing
{-# INLINE noSVGGeometryElement #-}

gTypeSVGGeometryElement :: JSM GType
gTypeSVGGeometryElement = GType . Object <$> jsg "SVGGeometryElement"

-- | Functions for this interface are in "JSDOM.SVGGradientElement" (SVG2).
newtype SVGGradientElement = SVGGradientElement { unSVGGradientElement :: JSVal }

instance PToJSVal SVGGradientElement where
  pToJSVal = unSVGGradientElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGGradientElement where
  pFromJSVal = SVGGradientElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGGradientElement where
  toJSVal = return . unSVGGradientElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGGradientElement where
  fromJSVal v = fmap SVGGradientElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGGradientElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGGradientElement where
  makeObject = makeObject . unSVGGradientElement

class (IsSVGElement o, IsSVGURIReference o, IsGObject o) => IsSVGGradientElement o
toSVGGradientElement :: IsSVGGradientElement o => o -> SVGGradientElement
toSVGGradientElement = SVGGradientElement . coerce

instance IsSVGGradientElement SVGGradientElement
instance IsSVGURIReference SVGGradientElement
instance IsSVGElement SVGGradientElement
instance IsElementCSSInlineStyle SVGGradientElement
instance IsGlobalEventHandlers SVGGradientElement
instance IsHTMLOrSVGOrMathMLElement SVGGradientElement
instance IsElement SVGGradientElement
instance IsARIAMixin SVGGradientElement
instance IsARIANotifyMixin SVGGradientElement
instance IsAnimatable SVGGradientElement
instance IsChildNode SVGGradientElement
instance IsNonDocumentTypeChildNode SVGGradientElement
instance IsParentNode SVGGradientElement
instance IsSlottable SVGGradientElement
instance IsNode SVGGradientElement
instance IsEventTarget SVGGradientElement

instance IsGObject SVGGradientElement where
  typeGType _ = gTypeSVGGradientElement
  {-# INLINE typeGType #-}

noSVGGradientElement :: Maybe SVGGradientElement
noSVGGradientElement = Nothing
{-# INLINE noSVGGradientElement #-}

gTypeSVGGradientElement :: JSM GType
gTypeSVGGradientElement = GType . Object <$> jsg "SVGGradientElement"

-- | Functions for this interface are in "JSDOM.SVGGraphicsElement" (SVG2).
newtype SVGGraphicsElement = SVGGraphicsElement { unSVGGraphicsElement :: JSVal }

instance PToJSVal SVGGraphicsElement where
  pToJSVal = unSVGGraphicsElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGGraphicsElement where
  pFromJSVal = SVGGraphicsElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGGraphicsElement where
  toJSVal = return . unSVGGraphicsElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGGraphicsElement where
  fromJSVal v = fmap SVGGraphicsElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGGraphicsElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGGraphicsElement where
  makeObject = makeObject . unSVGGraphicsElement

class (IsSVGElement o, IsSVGTests o, IsGObject o) => IsSVGGraphicsElement o
toSVGGraphicsElement :: IsSVGGraphicsElement o => o -> SVGGraphicsElement
toSVGGraphicsElement = SVGGraphicsElement . coerce

instance IsSVGGraphicsElement SVGGraphicsElement
instance IsSVGTests SVGGraphicsElement
instance IsSVGElement SVGGraphicsElement
instance IsElementCSSInlineStyle SVGGraphicsElement
instance IsGlobalEventHandlers SVGGraphicsElement
instance IsHTMLOrSVGOrMathMLElement SVGGraphicsElement
instance IsElement SVGGraphicsElement
instance IsARIAMixin SVGGraphicsElement
instance IsARIANotifyMixin SVGGraphicsElement
instance IsAnimatable SVGGraphicsElement
instance IsChildNode SVGGraphicsElement
instance IsNonDocumentTypeChildNode SVGGraphicsElement
instance IsParentNode SVGGraphicsElement
instance IsSlottable SVGGraphicsElement
instance IsNode SVGGraphicsElement
instance IsEventTarget SVGGraphicsElement

instance IsGObject SVGGraphicsElement where
  typeGType _ = gTypeSVGGraphicsElement
  {-# INLINE typeGType #-}

noSVGGraphicsElement :: Maybe SVGGraphicsElement
noSVGGraphicsElement = Nothing
{-# INLINE noSVGGraphicsElement #-}

gTypeSVGGraphicsElement :: JSM GType
gTypeSVGGraphicsElement = GType . Object <$> jsg "SVGGraphicsElement"

-- | Functions for this interface are in "JSDOM.SVGImageElement" (SVG2).
newtype SVGImageElement = SVGImageElement { unSVGImageElement :: JSVal }

instance PToJSVal SVGImageElement where
  pToJSVal = unSVGImageElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGImageElement where
  pFromJSVal = SVGImageElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGImageElement where
  toJSVal = return . unSVGImageElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGImageElement where
  fromJSVal v = fmap SVGImageElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGImageElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGImageElement where
  makeObject = makeObject . unSVGImageElement

instance IsSVGURIReference SVGImageElement
instance IsSVGGraphicsElement SVGImageElement
instance IsSVGTests SVGImageElement
instance IsSVGElement SVGImageElement
instance IsElementCSSInlineStyle SVGImageElement
instance IsGlobalEventHandlers SVGImageElement
instance IsHTMLOrSVGOrMathMLElement SVGImageElement
instance IsElement SVGImageElement
instance IsARIAMixin SVGImageElement
instance IsARIANotifyMixin SVGImageElement
instance IsAnimatable SVGImageElement
instance IsChildNode SVGImageElement
instance IsNonDocumentTypeChildNode SVGImageElement
instance IsParentNode SVGImageElement
instance IsSlottable SVGImageElement
instance IsNode SVGImageElement
instance IsEventTarget SVGImageElement

instance IsGObject SVGImageElement where
  typeGType _ = gTypeSVGImageElement
  {-# INLINE typeGType #-}

noSVGImageElement :: Maybe SVGImageElement
noSVGImageElement = Nothing
{-# INLINE noSVGImageElement #-}

gTypeSVGImageElement :: JSM GType
gTypeSVGImageElement = GType . Object <$> jsg "SVGImageElement"

-- | Functions for this interface are in "JSDOM.SVGLength" (SVG2).
newtype SVGLength = SVGLength { unSVGLength :: JSVal }

instance PToJSVal SVGLength where
  pToJSVal = unSVGLength
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGLength where
  pFromJSVal = SVGLength
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGLength where
  toJSVal = return . unSVGLength
  {-# INLINE toJSVal #-}

instance FromJSVal SVGLength where
  fromJSVal v = fmap SVGLength <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGLength
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGLength where
  makeObject = makeObject . unSVGLength


instance IsGObject SVGLength where
  typeGType _ = gTypeSVGLength
  {-# INLINE typeGType #-}

noSVGLength :: Maybe SVGLength
noSVGLength = Nothing
{-# INLINE noSVGLength #-}

gTypeSVGLength :: JSM GType
gTypeSVGLength = GType . Object <$> jsg "SVGLength"

-- | Functions for this interface are in "JSDOM.SVGLengthList" (SVG2).
newtype SVGLengthList = SVGLengthList { unSVGLengthList :: JSVal }

instance PToJSVal SVGLengthList where
  pToJSVal = unSVGLengthList
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGLengthList where
  pFromJSVal = SVGLengthList
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGLengthList where
  toJSVal = return . unSVGLengthList
  {-# INLINE toJSVal #-}

instance FromJSVal SVGLengthList where
  fromJSVal v = fmap SVGLengthList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGLengthList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGLengthList where
  makeObject = makeObject . unSVGLengthList


instance IsGObject SVGLengthList where
  typeGType _ = gTypeSVGLengthList
  {-# INLINE typeGType #-}

noSVGLengthList :: Maybe SVGLengthList
noSVGLengthList = Nothing
{-# INLINE noSVGLengthList #-}

gTypeSVGLengthList :: JSM GType
gTypeSVGLengthList = GType . Object <$> jsg "SVGLengthList"

-- | Functions for this interface are in "JSDOM.SVGLineElement" (SVG2).
newtype SVGLineElement = SVGLineElement { unSVGLineElement :: JSVal }

instance PToJSVal SVGLineElement where
  pToJSVal = unSVGLineElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGLineElement where
  pFromJSVal = SVGLineElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGLineElement where
  toJSVal = return . unSVGLineElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGLineElement where
  fromJSVal v = fmap SVGLineElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGLineElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGLineElement where
  makeObject = makeObject . unSVGLineElement

instance IsSVGGeometryElement SVGLineElement
instance IsSVGGraphicsElement SVGLineElement
instance IsSVGTests SVGLineElement
instance IsSVGElement SVGLineElement
instance IsElementCSSInlineStyle SVGLineElement
instance IsGlobalEventHandlers SVGLineElement
instance IsHTMLOrSVGOrMathMLElement SVGLineElement
instance IsElement SVGLineElement
instance IsARIAMixin SVGLineElement
instance IsARIANotifyMixin SVGLineElement
instance IsAnimatable SVGLineElement
instance IsChildNode SVGLineElement
instance IsNonDocumentTypeChildNode SVGLineElement
instance IsParentNode SVGLineElement
instance IsSlottable SVGLineElement
instance IsNode SVGLineElement
instance IsEventTarget SVGLineElement

instance IsGObject SVGLineElement where
  typeGType _ = gTypeSVGLineElement
  {-# INLINE typeGType #-}

noSVGLineElement :: Maybe SVGLineElement
noSVGLineElement = Nothing
{-# INLINE noSVGLineElement #-}

gTypeSVGLineElement :: JSM GType
gTypeSVGLineElement = GType . Object <$> jsg "SVGLineElement"

-- | Functions for this interface are in "JSDOM.SVGLinearGradientElement" (SVG2).
newtype SVGLinearGradientElement = SVGLinearGradientElement { unSVGLinearGradientElement :: JSVal }

instance PToJSVal SVGLinearGradientElement where
  pToJSVal = unSVGLinearGradientElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGLinearGradientElement where
  pFromJSVal = SVGLinearGradientElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGLinearGradientElement where
  toJSVal = return . unSVGLinearGradientElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGLinearGradientElement where
  fromJSVal v = fmap SVGLinearGradientElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGLinearGradientElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGLinearGradientElement where
  makeObject = makeObject . unSVGLinearGradientElement

instance IsSVGGradientElement SVGLinearGradientElement
instance IsSVGURIReference SVGLinearGradientElement
instance IsSVGElement SVGLinearGradientElement
instance IsElementCSSInlineStyle SVGLinearGradientElement
instance IsGlobalEventHandlers SVGLinearGradientElement
instance IsHTMLOrSVGOrMathMLElement SVGLinearGradientElement
instance IsElement SVGLinearGradientElement
instance IsARIAMixin SVGLinearGradientElement
instance IsARIANotifyMixin SVGLinearGradientElement
instance IsAnimatable SVGLinearGradientElement
instance IsChildNode SVGLinearGradientElement
instance IsNonDocumentTypeChildNode SVGLinearGradientElement
instance IsParentNode SVGLinearGradientElement
instance IsSlottable SVGLinearGradientElement
instance IsNode SVGLinearGradientElement
instance IsEventTarget SVGLinearGradientElement

instance IsGObject SVGLinearGradientElement where
  typeGType _ = gTypeSVGLinearGradientElement
  {-# INLINE typeGType #-}

noSVGLinearGradientElement :: Maybe SVGLinearGradientElement
noSVGLinearGradientElement = Nothing
{-# INLINE noSVGLinearGradientElement #-}

gTypeSVGLinearGradientElement :: JSM GType
gTypeSVGLinearGradientElement = GType . Object <$> jsg "SVGLinearGradientElement"

-- | Functions for this interface are in "JSDOM.SVGMPathElement" (svg-animations).
newtype SVGMPathElement = SVGMPathElement { unSVGMPathElement :: JSVal }

instance PToJSVal SVGMPathElement where
  pToJSVal = unSVGMPathElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGMPathElement where
  pFromJSVal = SVGMPathElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGMPathElement where
  toJSVal = return . unSVGMPathElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGMPathElement where
  fromJSVal v = fmap SVGMPathElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGMPathElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGMPathElement where
  makeObject = makeObject . unSVGMPathElement

instance IsSVGURIReference SVGMPathElement
instance IsSVGElement SVGMPathElement
instance IsElementCSSInlineStyle SVGMPathElement
instance IsGlobalEventHandlers SVGMPathElement
instance IsHTMLOrSVGOrMathMLElement SVGMPathElement
instance IsElement SVGMPathElement
instance IsARIAMixin SVGMPathElement
instance IsARIANotifyMixin SVGMPathElement
instance IsAnimatable SVGMPathElement
instance IsChildNode SVGMPathElement
instance IsNonDocumentTypeChildNode SVGMPathElement
instance IsParentNode SVGMPathElement
instance IsSlottable SVGMPathElement
instance IsNode SVGMPathElement
instance IsEventTarget SVGMPathElement

instance IsGObject SVGMPathElement where
  typeGType _ = gTypeSVGMPathElement
  {-# INLINE typeGType #-}

noSVGMPathElement :: Maybe SVGMPathElement
noSVGMPathElement = Nothing
{-# INLINE noSVGMPathElement #-}

gTypeSVGMPathElement :: JSM GType
gTypeSVGMPathElement = GType . Object <$> jsg "SVGMPathElement"

-- | Functions for this interface are in "JSDOM.SVGMarkerElement" (SVG2).
newtype SVGMarkerElement = SVGMarkerElement { unSVGMarkerElement :: JSVal }

instance PToJSVal SVGMarkerElement where
  pToJSVal = unSVGMarkerElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGMarkerElement where
  pFromJSVal = SVGMarkerElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGMarkerElement where
  toJSVal = return . unSVGMarkerElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGMarkerElement where
  fromJSVal v = fmap SVGMarkerElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGMarkerElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGMarkerElement where
  makeObject = makeObject . unSVGMarkerElement

instance IsSVGFitToViewBox SVGMarkerElement
instance IsSVGElement SVGMarkerElement
instance IsElementCSSInlineStyle SVGMarkerElement
instance IsGlobalEventHandlers SVGMarkerElement
instance IsHTMLOrSVGOrMathMLElement SVGMarkerElement
instance IsElement SVGMarkerElement
instance IsARIAMixin SVGMarkerElement
instance IsARIANotifyMixin SVGMarkerElement
instance IsAnimatable SVGMarkerElement
instance IsChildNode SVGMarkerElement
instance IsNonDocumentTypeChildNode SVGMarkerElement
instance IsParentNode SVGMarkerElement
instance IsSlottable SVGMarkerElement
instance IsNode SVGMarkerElement
instance IsEventTarget SVGMarkerElement

instance IsGObject SVGMarkerElement where
  typeGType _ = gTypeSVGMarkerElement
  {-# INLINE typeGType #-}

noSVGMarkerElement :: Maybe SVGMarkerElement
noSVGMarkerElement = Nothing
{-# INLINE noSVGMarkerElement #-}

gTypeSVGMarkerElement :: JSM GType
gTypeSVGMarkerElement = GType . Object <$> jsg "SVGMarkerElement"

-- | Functions for this interface are in "JSDOM.SVGMaskElement" (css-masking-1).
newtype SVGMaskElement = SVGMaskElement { unSVGMaskElement :: JSVal }

instance PToJSVal SVGMaskElement where
  pToJSVal = unSVGMaskElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGMaskElement where
  pFromJSVal = SVGMaskElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGMaskElement where
  toJSVal = return . unSVGMaskElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGMaskElement where
  fromJSVal v = fmap SVGMaskElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGMaskElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGMaskElement where
  makeObject = makeObject . unSVGMaskElement

instance IsSVGElement SVGMaskElement
instance IsElementCSSInlineStyle SVGMaskElement
instance IsGlobalEventHandlers SVGMaskElement
instance IsHTMLOrSVGOrMathMLElement SVGMaskElement
instance IsElement SVGMaskElement
instance IsARIAMixin SVGMaskElement
instance IsARIANotifyMixin SVGMaskElement
instance IsAnimatable SVGMaskElement
instance IsChildNode SVGMaskElement
instance IsNonDocumentTypeChildNode SVGMaskElement
instance IsParentNode SVGMaskElement
instance IsSlottable SVGMaskElement
instance IsNode SVGMaskElement
instance IsEventTarget SVGMaskElement

instance IsGObject SVGMaskElement where
  typeGType _ = gTypeSVGMaskElement
  {-# INLINE typeGType #-}

noSVGMaskElement :: Maybe SVGMaskElement
noSVGMaskElement = Nothing
{-# INLINE noSVGMaskElement #-}

gTypeSVGMaskElement :: JSM GType
gTypeSVGMaskElement = GType . Object <$> jsg "SVGMaskElement"

-- | Functions for this interface are in "JSDOM.SVGMetadataElement" (SVG2).
newtype SVGMetadataElement = SVGMetadataElement { unSVGMetadataElement :: JSVal }

instance PToJSVal SVGMetadataElement where
  pToJSVal = unSVGMetadataElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGMetadataElement where
  pFromJSVal = SVGMetadataElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGMetadataElement where
  toJSVal = return . unSVGMetadataElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGMetadataElement where
  fromJSVal v = fmap SVGMetadataElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGMetadataElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGMetadataElement where
  makeObject = makeObject . unSVGMetadataElement

instance IsSVGElement SVGMetadataElement
instance IsElementCSSInlineStyle SVGMetadataElement
instance IsGlobalEventHandlers SVGMetadataElement
instance IsHTMLOrSVGOrMathMLElement SVGMetadataElement
instance IsElement SVGMetadataElement
instance IsARIAMixin SVGMetadataElement
instance IsARIANotifyMixin SVGMetadataElement
instance IsAnimatable SVGMetadataElement
instance IsChildNode SVGMetadataElement
instance IsNonDocumentTypeChildNode SVGMetadataElement
instance IsParentNode SVGMetadataElement
instance IsSlottable SVGMetadataElement
instance IsNode SVGMetadataElement
instance IsEventTarget SVGMetadataElement

instance IsGObject SVGMetadataElement where
  typeGType _ = gTypeSVGMetadataElement
  {-# INLINE typeGType #-}

noSVGMetadataElement :: Maybe SVGMetadataElement
noSVGMetadataElement = Nothing
{-# INLINE noSVGMetadataElement #-}

gTypeSVGMetadataElement :: JSM GType
gTypeSVGMetadataElement = GType . Object <$> jsg "SVGMetadataElement"

-- | Functions for this interface are in "JSDOM.SVGNumber" (SVG2).
newtype SVGNumber = SVGNumber { unSVGNumber :: JSVal }

instance PToJSVal SVGNumber where
  pToJSVal = unSVGNumber
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGNumber where
  pFromJSVal = SVGNumber
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGNumber where
  toJSVal = return . unSVGNumber
  {-# INLINE toJSVal #-}

instance FromJSVal SVGNumber where
  fromJSVal v = fmap SVGNumber <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGNumber
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGNumber where
  makeObject = makeObject . unSVGNumber


instance IsGObject SVGNumber where
  typeGType _ = gTypeSVGNumber
  {-# INLINE typeGType #-}

noSVGNumber :: Maybe SVGNumber
noSVGNumber = Nothing
{-# INLINE noSVGNumber #-}

gTypeSVGNumber :: JSM GType
gTypeSVGNumber = GType . Object <$> jsg "SVGNumber"

-- | Functions for this interface are in "JSDOM.SVGNumberList" (SVG2).
newtype SVGNumberList = SVGNumberList { unSVGNumberList :: JSVal }

instance PToJSVal SVGNumberList where
  pToJSVal = unSVGNumberList
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGNumberList where
  pFromJSVal = SVGNumberList
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGNumberList where
  toJSVal = return . unSVGNumberList
  {-# INLINE toJSVal #-}

instance FromJSVal SVGNumberList where
  fromJSVal v = fmap SVGNumberList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGNumberList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGNumberList where
  makeObject = makeObject . unSVGNumberList


instance IsGObject SVGNumberList where
  typeGType _ = gTypeSVGNumberList
  {-# INLINE typeGType #-}

noSVGNumberList :: Maybe SVGNumberList
noSVGNumberList = Nothing
{-# INLINE noSVGNumberList #-}

gTypeSVGNumberList :: JSM GType
gTypeSVGNumberList = GType . Object <$> jsg "SVGNumberList"

-- | Functions for this interface are in "JSDOM.SVGPathElement" (svg-paths).
newtype SVGPathElement = SVGPathElement { unSVGPathElement :: JSVal }

instance PToJSVal SVGPathElement where
  pToJSVal = unSVGPathElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGPathElement where
  pFromJSVal = SVGPathElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGPathElement where
  toJSVal = return . unSVGPathElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGPathElement where
  fromJSVal v = fmap SVGPathElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGPathElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGPathElement where
  makeObject = makeObject . unSVGPathElement

instance IsSVGGeometryElement SVGPathElement
instance IsSVGGraphicsElement SVGPathElement
instance IsSVGTests SVGPathElement
instance IsSVGElement SVGPathElement
instance IsElementCSSInlineStyle SVGPathElement
instance IsGlobalEventHandlers SVGPathElement
instance IsHTMLOrSVGOrMathMLElement SVGPathElement
instance IsElement SVGPathElement
instance IsARIAMixin SVGPathElement
instance IsARIANotifyMixin SVGPathElement
instance IsAnimatable SVGPathElement
instance IsChildNode SVGPathElement
instance IsNonDocumentTypeChildNode SVGPathElement
instance IsParentNode SVGPathElement
instance IsSlottable SVGPathElement
instance IsNode SVGPathElement
instance IsEventTarget SVGPathElement

instance IsGObject SVGPathElement where
  typeGType _ = gTypeSVGPathElement
  {-# INLINE typeGType #-}

noSVGPathElement :: Maybe SVGPathElement
noSVGPathElement = Nothing
{-# INLINE noSVGPathElement #-}

gTypeSVGPathElement :: JSM GType
gTypeSVGPathElement = GType . Object <$> jsg "SVGPathElement"

-- | Functions for this interface are in "JSDOM.SVGPatternElement" (SVG2).
newtype SVGPatternElement = SVGPatternElement { unSVGPatternElement :: JSVal }

instance PToJSVal SVGPatternElement where
  pToJSVal = unSVGPatternElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGPatternElement where
  pFromJSVal = SVGPatternElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGPatternElement where
  toJSVal = return . unSVGPatternElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGPatternElement where
  fromJSVal v = fmap SVGPatternElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGPatternElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGPatternElement where
  makeObject = makeObject . unSVGPatternElement

instance IsSVGFitToViewBox SVGPatternElement
instance IsSVGURIReference SVGPatternElement
instance IsSVGElement SVGPatternElement
instance IsElementCSSInlineStyle SVGPatternElement
instance IsGlobalEventHandlers SVGPatternElement
instance IsHTMLOrSVGOrMathMLElement SVGPatternElement
instance IsElement SVGPatternElement
instance IsARIAMixin SVGPatternElement
instance IsARIANotifyMixin SVGPatternElement
instance IsAnimatable SVGPatternElement
instance IsChildNode SVGPatternElement
instance IsNonDocumentTypeChildNode SVGPatternElement
instance IsParentNode SVGPatternElement
instance IsSlottable SVGPatternElement
instance IsNode SVGPatternElement
instance IsEventTarget SVGPatternElement

instance IsGObject SVGPatternElement where
  typeGType _ = gTypeSVGPatternElement
  {-# INLINE typeGType #-}

noSVGPatternElement :: Maybe SVGPatternElement
noSVGPatternElement = Nothing
{-# INLINE noSVGPatternElement #-}

gTypeSVGPatternElement :: JSM GType
gTypeSVGPatternElement = GType . Object <$> jsg "SVGPatternElement"

-- | Functions for this interface are in "JSDOM.SVGPointList" (SVG2).
newtype SVGPointList = SVGPointList { unSVGPointList :: JSVal }

instance PToJSVal SVGPointList where
  pToJSVal = unSVGPointList
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGPointList where
  pFromJSVal = SVGPointList
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGPointList where
  toJSVal = return . unSVGPointList
  {-# INLINE toJSVal #-}

instance FromJSVal SVGPointList where
  fromJSVal v = fmap SVGPointList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGPointList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGPointList where
  makeObject = makeObject . unSVGPointList


instance IsGObject SVGPointList where
  typeGType _ = gTypeSVGPointList
  {-# INLINE typeGType #-}

noSVGPointList :: Maybe SVGPointList
noSVGPointList = Nothing
{-# INLINE noSVGPointList #-}

gTypeSVGPointList :: JSM GType
gTypeSVGPointList = GType . Object <$> jsg "SVGPointList"

-- | Functions for this interface are in "JSDOM.SVGPolygonElement" (SVG2).
newtype SVGPolygonElement = SVGPolygonElement { unSVGPolygonElement :: JSVal }

instance PToJSVal SVGPolygonElement where
  pToJSVal = unSVGPolygonElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGPolygonElement where
  pFromJSVal = SVGPolygonElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGPolygonElement where
  toJSVal = return . unSVGPolygonElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGPolygonElement where
  fromJSVal v = fmap SVGPolygonElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGPolygonElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGPolygonElement where
  makeObject = makeObject . unSVGPolygonElement

instance IsSVGAnimatedPoints SVGPolygonElement
instance IsSVGGeometryElement SVGPolygonElement
instance IsSVGGraphicsElement SVGPolygonElement
instance IsSVGTests SVGPolygonElement
instance IsSVGElement SVGPolygonElement
instance IsElementCSSInlineStyle SVGPolygonElement
instance IsGlobalEventHandlers SVGPolygonElement
instance IsHTMLOrSVGOrMathMLElement SVGPolygonElement
instance IsElement SVGPolygonElement
instance IsARIAMixin SVGPolygonElement
instance IsARIANotifyMixin SVGPolygonElement
instance IsAnimatable SVGPolygonElement
instance IsChildNode SVGPolygonElement
instance IsNonDocumentTypeChildNode SVGPolygonElement
instance IsParentNode SVGPolygonElement
instance IsSlottable SVGPolygonElement
instance IsNode SVGPolygonElement
instance IsEventTarget SVGPolygonElement

instance IsGObject SVGPolygonElement where
  typeGType _ = gTypeSVGPolygonElement
  {-# INLINE typeGType #-}

noSVGPolygonElement :: Maybe SVGPolygonElement
noSVGPolygonElement = Nothing
{-# INLINE noSVGPolygonElement #-}

gTypeSVGPolygonElement :: JSM GType
gTypeSVGPolygonElement = GType . Object <$> jsg "SVGPolygonElement"

-- | Functions for this interface are in "JSDOM.SVGPolylineElement" (SVG2).
newtype SVGPolylineElement = SVGPolylineElement { unSVGPolylineElement :: JSVal }

instance PToJSVal SVGPolylineElement where
  pToJSVal = unSVGPolylineElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGPolylineElement where
  pFromJSVal = SVGPolylineElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGPolylineElement where
  toJSVal = return . unSVGPolylineElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGPolylineElement where
  fromJSVal v = fmap SVGPolylineElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGPolylineElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGPolylineElement where
  makeObject = makeObject . unSVGPolylineElement

instance IsSVGAnimatedPoints SVGPolylineElement
instance IsSVGGeometryElement SVGPolylineElement
instance IsSVGGraphicsElement SVGPolylineElement
instance IsSVGTests SVGPolylineElement
instance IsSVGElement SVGPolylineElement
instance IsElementCSSInlineStyle SVGPolylineElement
instance IsGlobalEventHandlers SVGPolylineElement
instance IsHTMLOrSVGOrMathMLElement SVGPolylineElement
instance IsElement SVGPolylineElement
instance IsARIAMixin SVGPolylineElement
instance IsARIANotifyMixin SVGPolylineElement
instance IsAnimatable SVGPolylineElement
instance IsChildNode SVGPolylineElement
instance IsNonDocumentTypeChildNode SVGPolylineElement
instance IsParentNode SVGPolylineElement
instance IsSlottable SVGPolylineElement
instance IsNode SVGPolylineElement
instance IsEventTarget SVGPolylineElement

instance IsGObject SVGPolylineElement where
  typeGType _ = gTypeSVGPolylineElement
  {-# INLINE typeGType #-}

noSVGPolylineElement :: Maybe SVGPolylineElement
noSVGPolylineElement = Nothing
{-# INLINE noSVGPolylineElement #-}

gTypeSVGPolylineElement :: JSM GType
gTypeSVGPolylineElement = GType . Object <$> jsg "SVGPolylineElement"

-- | Functions for this interface are in "JSDOM.SVGPreserveAspectRatio" (SVG2).
newtype SVGPreserveAspectRatio = SVGPreserveAspectRatio { unSVGPreserveAspectRatio :: JSVal }

instance PToJSVal SVGPreserveAspectRatio where
  pToJSVal = unSVGPreserveAspectRatio
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGPreserveAspectRatio where
  pFromJSVal = SVGPreserveAspectRatio
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGPreserveAspectRatio where
  toJSVal = return . unSVGPreserveAspectRatio
  {-# INLINE toJSVal #-}

instance FromJSVal SVGPreserveAspectRatio where
  fromJSVal v = fmap SVGPreserveAspectRatio <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGPreserveAspectRatio
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGPreserveAspectRatio where
  makeObject = makeObject . unSVGPreserveAspectRatio


instance IsGObject SVGPreserveAspectRatio where
  typeGType _ = gTypeSVGPreserveAspectRatio
  {-# INLINE typeGType #-}

noSVGPreserveAspectRatio :: Maybe SVGPreserveAspectRatio
noSVGPreserveAspectRatio = Nothing
{-# INLINE noSVGPreserveAspectRatio #-}

gTypeSVGPreserveAspectRatio :: JSM GType
gTypeSVGPreserveAspectRatio = GType . Object <$> jsg "SVGPreserveAspectRatio"

-- | Functions for this interface are in "JSDOM.SVGRadialGradientElement" (SVG2).
newtype SVGRadialGradientElement = SVGRadialGradientElement { unSVGRadialGradientElement :: JSVal }

instance PToJSVal SVGRadialGradientElement where
  pToJSVal = unSVGRadialGradientElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGRadialGradientElement where
  pFromJSVal = SVGRadialGradientElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGRadialGradientElement where
  toJSVal = return . unSVGRadialGradientElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGRadialGradientElement where
  fromJSVal v = fmap SVGRadialGradientElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGRadialGradientElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGRadialGradientElement where
  makeObject = makeObject . unSVGRadialGradientElement

instance IsSVGGradientElement SVGRadialGradientElement
instance IsSVGURIReference SVGRadialGradientElement
instance IsSVGElement SVGRadialGradientElement
instance IsElementCSSInlineStyle SVGRadialGradientElement
instance IsGlobalEventHandlers SVGRadialGradientElement
instance IsHTMLOrSVGOrMathMLElement SVGRadialGradientElement
instance IsElement SVGRadialGradientElement
instance IsARIAMixin SVGRadialGradientElement
instance IsARIANotifyMixin SVGRadialGradientElement
instance IsAnimatable SVGRadialGradientElement
instance IsChildNode SVGRadialGradientElement
instance IsNonDocumentTypeChildNode SVGRadialGradientElement
instance IsParentNode SVGRadialGradientElement
instance IsSlottable SVGRadialGradientElement
instance IsNode SVGRadialGradientElement
instance IsEventTarget SVGRadialGradientElement

instance IsGObject SVGRadialGradientElement where
  typeGType _ = gTypeSVGRadialGradientElement
  {-# INLINE typeGType #-}

noSVGRadialGradientElement :: Maybe SVGRadialGradientElement
noSVGRadialGradientElement = Nothing
{-# INLINE noSVGRadialGradientElement #-}

gTypeSVGRadialGradientElement :: JSM GType
gTypeSVGRadialGradientElement = GType . Object <$> jsg "SVGRadialGradientElement"

-- | Functions for this interface are in "JSDOM.SVGRectElement" (SVG2).
newtype SVGRectElement = SVGRectElement { unSVGRectElement :: JSVal }

instance PToJSVal SVGRectElement where
  pToJSVal = unSVGRectElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGRectElement where
  pFromJSVal = SVGRectElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGRectElement where
  toJSVal = return . unSVGRectElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGRectElement where
  fromJSVal v = fmap SVGRectElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGRectElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGRectElement where
  makeObject = makeObject . unSVGRectElement

instance IsSVGGeometryElement SVGRectElement
instance IsSVGGraphicsElement SVGRectElement
instance IsSVGTests SVGRectElement
instance IsSVGElement SVGRectElement
instance IsElementCSSInlineStyle SVGRectElement
instance IsGlobalEventHandlers SVGRectElement
instance IsHTMLOrSVGOrMathMLElement SVGRectElement
instance IsElement SVGRectElement
instance IsARIAMixin SVGRectElement
instance IsARIANotifyMixin SVGRectElement
instance IsAnimatable SVGRectElement
instance IsChildNode SVGRectElement
instance IsNonDocumentTypeChildNode SVGRectElement
instance IsParentNode SVGRectElement
instance IsSlottable SVGRectElement
instance IsNode SVGRectElement
instance IsEventTarget SVGRectElement

instance IsGObject SVGRectElement where
  typeGType _ = gTypeSVGRectElement
  {-# INLINE typeGType #-}

noSVGRectElement :: Maybe SVGRectElement
noSVGRectElement = Nothing
{-# INLINE noSVGRectElement #-}

gTypeSVGRectElement :: JSM GType
gTypeSVGRectElement = GType . Object <$> jsg "SVGRectElement"

-- | Functions for this interface are in "JSDOM.SVGSVGElement" (SVG2).
newtype SVGSVGElement = SVGSVGElement { unSVGSVGElement :: JSVal }

instance PToJSVal SVGSVGElement where
  pToJSVal = unSVGSVGElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGSVGElement where
  pFromJSVal = SVGSVGElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGSVGElement where
  toJSVal = return . unSVGSVGElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGSVGElement where
  fromJSVal v = fmap SVGSVGElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGSVGElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGSVGElement where
  makeObject = makeObject . unSVGSVGElement

instance IsSVGFitToViewBox SVGSVGElement
instance IsWindowEventHandlers SVGSVGElement
instance IsSVGGraphicsElement SVGSVGElement
instance IsSVGTests SVGSVGElement
instance IsSVGElement SVGSVGElement
instance IsElementCSSInlineStyle SVGSVGElement
instance IsGlobalEventHandlers SVGSVGElement
instance IsHTMLOrSVGOrMathMLElement SVGSVGElement
instance IsElement SVGSVGElement
instance IsARIAMixin SVGSVGElement
instance IsARIANotifyMixin SVGSVGElement
instance IsAnimatable SVGSVGElement
instance IsChildNode SVGSVGElement
instance IsNonDocumentTypeChildNode SVGSVGElement
instance IsParentNode SVGSVGElement
instance IsSlottable SVGSVGElement
instance IsNode SVGSVGElement
instance IsEventTarget SVGSVGElement

instance IsGObject SVGSVGElement where
  typeGType _ = gTypeSVGSVGElement
  {-# INLINE typeGType #-}

noSVGSVGElement :: Maybe SVGSVGElement
noSVGSVGElement = Nothing
{-# INLINE noSVGSVGElement #-}

gTypeSVGSVGElement :: JSM GType
gTypeSVGSVGElement = GType . Object <$> jsg "SVGSVGElement"

-- | Functions for this interface are in "JSDOM.SVGScriptElement" (SVG2).
newtype SVGScriptElement = SVGScriptElement { unSVGScriptElement :: JSVal }

instance PToJSVal SVGScriptElement where
  pToJSVal = unSVGScriptElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGScriptElement where
  pFromJSVal = SVGScriptElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGScriptElement where
  toJSVal = return . unSVGScriptElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGScriptElement where
  fromJSVal v = fmap SVGScriptElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGScriptElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGScriptElement where
  makeObject = makeObject . unSVGScriptElement

instance IsSVGURIReference SVGScriptElement
instance IsSVGElement SVGScriptElement
instance IsElementCSSInlineStyle SVGScriptElement
instance IsGlobalEventHandlers SVGScriptElement
instance IsHTMLOrSVGOrMathMLElement SVGScriptElement
instance IsElement SVGScriptElement
instance IsARIAMixin SVGScriptElement
instance IsARIANotifyMixin SVGScriptElement
instance IsAnimatable SVGScriptElement
instance IsChildNode SVGScriptElement
instance IsNonDocumentTypeChildNode SVGScriptElement
instance IsParentNode SVGScriptElement
instance IsSlottable SVGScriptElement
instance IsNode SVGScriptElement
instance IsEventTarget SVGScriptElement

instance IsGObject SVGScriptElement where
  typeGType _ = gTypeSVGScriptElement
  {-# INLINE typeGType #-}

noSVGScriptElement :: Maybe SVGScriptElement
noSVGScriptElement = Nothing
{-# INLINE noSVGScriptElement #-}

gTypeSVGScriptElement :: JSM GType
gTypeSVGScriptElement = GType . Object <$> jsg "SVGScriptElement"

-- | Functions for this interface are in "JSDOM.SVGSetElement" (svg-animations).
newtype SVGSetElement = SVGSetElement { unSVGSetElement :: JSVal }

instance PToJSVal SVGSetElement where
  pToJSVal = unSVGSetElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGSetElement where
  pFromJSVal = SVGSetElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGSetElement where
  toJSVal = return . unSVGSetElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGSetElement where
  fromJSVal v = fmap SVGSetElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGSetElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGSetElement where
  makeObject = makeObject . unSVGSetElement

instance IsSVGAnimationElement SVGSetElement
instance IsSVGTests SVGSetElement
instance IsSVGElement SVGSetElement
instance IsElementCSSInlineStyle SVGSetElement
instance IsGlobalEventHandlers SVGSetElement
instance IsHTMLOrSVGOrMathMLElement SVGSetElement
instance IsElement SVGSetElement
instance IsARIAMixin SVGSetElement
instance IsARIANotifyMixin SVGSetElement
instance IsAnimatable SVGSetElement
instance IsChildNode SVGSetElement
instance IsNonDocumentTypeChildNode SVGSetElement
instance IsParentNode SVGSetElement
instance IsSlottable SVGSetElement
instance IsNode SVGSetElement
instance IsEventTarget SVGSetElement

instance IsGObject SVGSetElement where
  typeGType _ = gTypeSVGSetElement
  {-# INLINE typeGType #-}

noSVGSetElement :: Maybe SVGSetElement
noSVGSetElement = Nothing
{-# INLINE noSVGSetElement #-}

gTypeSVGSetElement :: JSM GType
gTypeSVGSetElement = GType . Object <$> jsg "SVGSetElement"

-- | Functions for this interface are in "JSDOM.SVGStopElement" (SVG2).
newtype SVGStopElement = SVGStopElement { unSVGStopElement :: JSVal }

instance PToJSVal SVGStopElement where
  pToJSVal = unSVGStopElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGStopElement where
  pFromJSVal = SVGStopElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGStopElement where
  toJSVal = return . unSVGStopElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGStopElement where
  fromJSVal v = fmap SVGStopElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGStopElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGStopElement where
  makeObject = makeObject . unSVGStopElement

instance IsSVGElement SVGStopElement
instance IsElementCSSInlineStyle SVGStopElement
instance IsGlobalEventHandlers SVGStopElement
instance IsHTMLOrSVGOrMathMLElement SVGStopElement
instance IsElement SVGStopElement
instance IsARIAMixin SVGStopElement
instance IsARIANotifyMixin SVGStopElement
instance IsAnimatable SVGStopElement
instance IsChildNode SVGStopElement
instance IsNonDocumentTypeChildNode SVGStopElement
instance IsParentNode SVGStopElement
instance IsSlottable SVGStopElement
instance IsNode SVGStopElement
instance IsEventTarget SVGStopElement

instance IsGObject SVGStopElement where
  typeGType _ = gTypeSVGStopElement
  {-# INLINE typeGType #-}

noSVGStopElement :: Maybe SVGStopElement
noSVGStopElement = Nothing
{-# INLINE noSVGStopElement #-}

gTypeSVGStopElement :: JSM GType
gTypeSVGStopElement = GType . Object <$> jsg "SVGStopElement"

-- | Functions for this interface are in "JSDOM.SVGStringList" (SVG2).
newtype SVGStringList = SVGStringList { unSVGStringList :: JSVal }

instance PToJSVal SVGStringList where
  pToJSVal = unSVGStringList
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGStringList where
  pFromJSVal = SVGStringList
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGStringList where
  toJSVal = return . unSVGStringList
  {-# INLINE toJSVal #-}

instance FromJSVal SVGStringList where
  fromJSVal v = fmap SVGStringList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGStringList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGStringList where
  makeObject = makeObject . unSVGStringList


instance IsGObject SVGStringList where
  typeGType _ = gTypeSVGStringList
  {-# INLINE typeGType #-}

noSVGStringList :: Maybe SVGStringList
noSVGStringList = Nothing
{-# INLINE noSVGStringList #-}

gTypeSVGStringList :: JSM GType
gTypeSVGStringList = GType . Object <$> jsg "SVGStringList"

-- | Functions for this interface are in "JSDOM.SVGStyleElement" (SVG2).
newtype SVGStyleElement = SVGStyleElement { unSVGStyleElement :: JSVal }

instance PToJSVal SVGStyleElement where
  pToJSVal = unSVGStyleElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGStyleElement where
  pFromJSVal = SVGStyleElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGStyleElement where
  toJSVal = return . unSVGStyleElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGStyleElement where
  fromJSVal v = fmap SVGStyleElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGStyleElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGStyleElement where
  makeObject = makeObject . unSVGStyleElement

instance IsLinkStyle SVGStyleElement
instance IsSVGElement SVGStyleElement
instance IsElementCSSInlineStyle SVGStyleElement
instance IsGlobalEventHandlers SVGStyleElement
instance IsHTMLOrSVGOrMathMLElement SVGStyleElement
instance IsElement SVGStyleElement
instance IsARIAMixin SVGStyleElement
instance IsARIANotifyMixin SVGStyleElement
instance IsAnimatable SVGStyleElement
instance IsChildNode SVGStyleElement
instance IsNonDocumentTypeChildNode SVGStyleElement
instance IsParentNode SVGStyleElement
instance IsSlottable SVGStyleElement
instance IsNode SVGStyleElement
instance IsEventTarget SVGStyleElement

instance IsGObject SVGStyleElement where
  typeGType _ = gTypeSVGStyleElement
  {-# INLINE typeGType #-}

noSVGStyleElement :: Maybe SVGStyleElement
noSVGStyleElement = Nothing
{-# INLINE noSVGStyleElement #-}

gTypeSVGStyleElement :: JSM GType
gTypeSVGStyleElement = GType . Object <$> jsg "SVGStyleElement"

-- | Functions for this interface are in "JSDOM.SVGSwitchElement" (SVG2).
newtype SVGSwitchElement = SVGSwitchElement { unSVGSwitchElement :: JSVal }

instance PToJSVal SVGSwitchElement where
  pToJSVal = unSVGSwitchElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGSwitchElement where
  pFromJSVal = SVGSwitchElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGSwitchElement where
  toJSVal = return . unSVGSwitchElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGSwitchElement where
  fromJSVal v = fmap SVGSwitchElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGSwitchElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGSwitchElement where
  makeObject = makeObject . unSVGSwitchElement

instance IsSVGGraphicsElement SVGSwitchElement
instance IsSVGTests SVGSwitchElement
instance IsSVGElement SVGSwitchElement
instance IsElementCSSInlineStyle SVGSwitchElement
instance IsGlobalEventHandlers SVGSwitchElement
instance IsHTMLOrSVGOrMathMLElement SVGSwitchElement
instance IsElement SVGSwitchElement
instance IsARIAMixin SVGSwitchElement
instance IsARIANotifyMixin SVGSwitchElement
instance IsAnimatable SVGSwitchElement
instance IsChildNode SVGSwitchElement
instance IsNonDocumentTypeChildNode SVGSwitchElement
instance IsParentNode SVGSwitchElement
instance IsSlottable SVGSwitchElement
instance IsNode SVGSwitchElement
instance IsEventTarget SVGSwitchElement

instance IsGObject SVGSwitchElement where
  typeGType _ = gTypeSVGSwitchElement
  {-# INLINE typeGType #-}

noSVGSwitchElement :: Maybe SVGSwitchElement
noSVGSwitchElement = Nothing
{-# INLINE noSVGSwitchElement #-}

gTypeSVGSwitchElement :: JSM GType
gTypeSVGSwitchElement = GType . Object <$> jsg "SVGSwitchElement"

-- | Functions for this interface are in "JSDOM.SVGSymbolElement" (SVG2).
newtype SVGSymbolElement = SVGSymbolElement { unSVGSymbolElement :: JSVal }

instance PToJSVal SVGSymbolElement where
  pToJSVal = unSVGSymbolElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGSymbolElement where
  pFromJSVal = SVGSymbolElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGSymbolElement where
  toJSVal = return . unSVGSymbolElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGSymbolElement where
  fromJSVal v = fmap SVGSymbolElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGSymbolElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGSymbolElement where
  makeObject = makeObject . unSVGSymbolElement

instance IsSVGFitToViewBox SVGSymbolElement
instance IsSVGGraphicsElement SVGSymbolElement
instance IsSVGTests SVGSymbolElement
instance IsSVGElement SVGSymbolElement
instance IsElementCSSInlineStyle SVGSymbolElement
instance IsGlobalEventHandlers SVGSymbolElement
instance IsHTMLOrSVGOrMathMLElement SVGSymbolElement
instance IsElement SVGSymbolElement
instance IsARIAMixin SVGSymbolElement
instance IsARIANotifyMixin SVGSymbolElement
instance IsAnimatable SVGSymbolElement
instance IsChildNode SVGSymbolElement
instance IsNonDocumentTypeChildNode SVGSymbolElement
instance IsParentNode SVGSymbolElement
instance IsSlottable SVGSymbolElement
instance IsNode SVGSymbolElement
instance IsEventTarget SVGSymbolElement

instance IsGObject SVGSymbolElement where
  typeGType _ = gTypeSVGSymbolElement
  {-# INLINE typeGType #-}

noSVGSymbolElement :: Maybe SVGSymbolElement
noSVGSymbolElement = Nothing
{-# INLINE noSVGSymbolElement #-}

gTypeSVGSymbolElement :: JSM GType
gTypeSVGSymbolElement = GType . Object <$> jsg "SVGSymbolElement"

-- | Functions for this interface are in "JSDOM.SVGTSpanElement" (SVG2).
newtype SVGTSpanElement = SVGTSpanElement { unSVGTSpanElement :: JSVal }

instance PToJSVal SVGTSpanElement where
  pToJSVal = unSVGTSpanElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGTSpanElement where
  pFromJSVal = SVGTSpanElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGTSpanElement where
  toJSVal = return . unSVGTSpanElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGTSpanElement where
  fromJSVal v = fmap SVGTSpanElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGTSpanElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGTSpanElement where
  makeObject = makeObject . unSVGTSpanElement

instance IsSVGTextPositioningElement SVGTSpanElement
instance IsSVGTextContentElement SVGTSpanElement
instance IsSVGGraphicsElement SVGTSpanElement
instance IsSVGTests SVGTSpanElement
instance IsSVGElement SVGTSpanElement
instance IsElementCSSInlineStyle SVGTSpanElement
instance IsGlobalEventHandlers SVGTSpanElement
instance IsHTMLOrSVGOrMathMLElement SVGTSpanElement
instance IsElement SVGTSpanElement
instance IsARIAMixin SVGTSpanElement
instance IsARIANotifyMixin SVGTSpanElement
instance IsAnimatable SVGTSpanElement
instance IsChildNode SVGTSpanElement
instance IsNonDocumentTypeChildNode SVGTSpanElement
instance IsParentNode SVGTSpanElement
instance IsSlottable SVGTSpanElement
instance IsNode SVGTSpanElement
instance IsEventTarget SVGTSpanElement

instance IsGObject SVGTSpanElement where
  typeGType _ = gTypeSVGTSpanElement
  {-# INLINE typeGType #-}

noSVGTSpanElement :: Maybe SVGTSpanElement
noSVGTSpanElement = Nothing
{-# INLINE noSVGTSpanElement #-}

gTypeSVGTSpanElement :: JSM GType
gTypeSVGTSpanElement = GType . Object <$> jsg "SVGTSpanElement"

-- | Functions for this interface are in "JSDOM.SVGTests" (SVG2).
newtype SVGTests = SVGTests { unSVGTests :: JSVal }

instance PToJSVal SVGTests where
  pToJSVal = unSVGTests
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGTests where
  pFromJSVal = SVGTests
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGTests where
  toJSVal = return . unSVGTests
  {-# INLINE toJSVal #-}

instance FromJSVal SVGTests where
  fromJSVal v = fmap SVGTests <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGTests
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGTests where
  makeObject = makeObject . unSVGTests

class (IsGObject o) => IsSVGTests o
toSVGTests :: IsSVGTests o => o -> SVGTests
toSVGTests = SVGTests . coerce

instance IsSVGTests SVGTests

instance IsGObject SVGTests where
  typeGType _ = gTypeSVGTests
  {-# INLINE typeGType #-}

noSVGTests :: Maybe SVGTests
noSVGTests = Nothing
{-# INLINE noSVGTests #-}

gTypeSVGTests :: JSM GType
gTypeSVGTests = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SVGTextContentElement" (SVG2).
newtype SVGTextContentElement = SVGTextContentElement { unSVGTextContentElement :: JSVal }

instance PToJSVal SVGTextContentElement where
  pToJSVal = unSVGTextContentElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGTextContentElement where
  pFromJSVal = SVGTextContentElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGTextContentElement where
  toJSVal = return . unSVGTextContentElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGTextContentElement where
  fromJSVal v = fmap SVGTextContentElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGTextContentElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGTextContentElement where
  makeObject = makeObject . unSVGTextContentElement

class (IsSVGGraphicsElement o, IsGObject o) => IsSVGTextContentElement o
toSVGTextContentElement :: IsSVGTextContentElement o => o -> SVGTextContentElement
toSVGTextContentElement = SVGTextContentElement . coerce

instance IsSVGTextContentElement SVGTextContentElement
instance IsSVGGraphicsElement SVGTextContentElement
instance IsSVGTests SVGTextContentElement
instance IsSVGElement SVGTextContentElement
instance IsElementCSSInlineStyle SVGTextContentElement
instance IsGlobalEventHandlers SVGTextContentElement
instance IsHTMLOrSVGOrMathMLElement SVGTextContentElement
instance IsElement SVGTextContentElement
instance IsARIAMixin SVGTextContentElement
instance IsARIANotifyMixin SVGTextContentElement
instance IsAnimatable SVGTextContentElement
instance IsChildNode SVGTextContentElement
instance IsNonDocumentTypeChildNode SVGTextContentElement
instance IsParentNode SVGTextContentElement
instance IsSlottable SVGTextContentElement
instance IsNode SVGTextContentElement
instance IsEventTarget SVGTextContentElement

instance IsGObject SVGTextContentElement where
  typeGType _ = gTypeSVGTextContentElement
  {-# INLINE typeGType #-}

noSVGTextContentElement :: Maybe SVGTextContentElement
noSVGTextContentElement = Nothing
{-# INLINE noSVGTextContentElement #-}

gTypeSVGTextContentElement :: JSM GType
gTypeSVGTextContentElement = GType . Object <$> jsg "SVGTextContentElement"

-- | Functions for this interface are in "JSDOM.SVGTextElement" (SVG2).
newtype SVGTextElement = SVGTextElement { unSVGTextElement :: JSVal }

instance PToJSVal SVGTextElement where
  pToJSVal = unSVGTextElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGTextElement where
  pFromJSVal = SVGTextElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGTextElement where
  toJSVal = return . unSVGTextElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGTextElement where
  fromJSVal v = fmap SVGTextElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGTextElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGTextElement where
  makeObject = makeObject . unSVGTextElement

instance IsSVGTextPositioningElement SVGTextElement
instance IsSVGTextContentElement SVGTextElement
instance IsSVGGraphicsElement SVGTextElement
instance IsSVGTests SVGTextElement
instance IsSVGElement SVGTextElement
instance IsElementCSSInlineStyle SVGTextElement
instance IsGlobalEventHandlers SVGTextElement
instance IsHTMLOrSVGOrMathMLElement SVGTextElement
instance IsElement SVGTextElement
instance IsARIAMixin SVGTextElement
instance IsARIANotifyMixin SVGTextElement
instance IsAnimatable SVGTextElement
instance IsChildNode SVGTextElement
instance IsNonDocumentTypeChildNode SVGTextElement
instance IsParentNode SVGTextElement
instance IsSlottable SVGTextElement
instance IsNode SVGTextElement
instance IsEventTarget SVGTextElement

instance IsGObject SVGTextElement where
  typeGType _ = gTypeSVGTextElement
  {-# INLINE typeGType #-}

noSVGTextElement :: Maybe SVGTextElement
noSVGTextElement = Nothing
{-# INLINE noSVGTextElement #-}

gTypeSVGTextElement :: JSM GType
gTypeSVGTextElement = GType . Object <$> jsg "SVGTextElement"

-- | Functions for this interface are in "JSDOM.SVGTextPathElement" (SVG2).
newtype SVGTextPathElement = SVGTextPathElement { unSVGTextPathElement :: JSVal }

instance PToJSVal SVGTextPathElement where
  pToJSVal = unSVGTextPathElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGTextPathElement where
  pFromJSVal = SVGTextPathElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGTextPathElement where
  toJSVal = return . unSVGTextPathElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGTextPathElement where
  fromJSVal v = fmap SVGTextPathElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGTextPathElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGTextPathElement where
  makeObject = makeObject . unSVGTextPathElement

instance IsSVGURIReference SVGTextPathElement
instance IsSVGTextContentElement SVGTextPathElement
instance IsSVGGraphicsElement SVGTextPathElement
instance IsSVGTests SVGTextPathElement
instance IsSVGElement SVGTextPathElement
instance IsElementCSSInlineStyle SVGTextPathElement
instance IsGlobalEventHandlers SVGTextPathElement
instance IsHTMLOrSVGOrMathMLElement SVGTextPathElement
instance IsElement SVGTextPathElement
instance IsARIAMixin SVGTextPathElement
instance IsARIANotifyMixin SVGTextPathElement
instance IsAnimatable SVGTextPathElement
instance IsChildNode SVGTextPathElement
instance IsNonDocumentTypeChildNode SVGTextPathElement
instance IsParentNode SVGTextPathElement
instance IsSlottable SVGTextPathElement
instance IsNode SVGTextPathElement
instance IsEventTarget SVGTextPathElement

instance IsGObject SVGTextPathElement where
  typeGType _ = gTypeSVGTextPathElement
  {-# INLINE typeGType #-}

noSVGTextPathElement :: Maybe SVGTextPathElement
noSVGTextPathElement = Nothing
{-# INLINE noSVGTextPathElement #-}

gTypeSVGTextPathElement :: JSM GType
gTypeSVGTextPathElement = GType . Object <$> jsg "SVGTextPathElement"

-- | Functions for this interface are in "JSDOM.SVGTextPositioningElement" (SVG2).
newtype SVGTextPositioningElement = SVGTextPositioningElement { unSVGTextPositioningElement :: JSVal }

instance PToJSVal SVGTextPositioningElement where
  pToJSVal = unSVGTextPositioningElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGTextPositioningElement where
  pFromJSVal = SVGTextPositioningElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGTextPositioningElement where
  toJSVal = return . unSVGTextPositioningElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGTextPositioningElement where
  fromJSVal v = fmap SVGTextPositioningElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGTextPositioningElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGTextPositioningElement where
  makeObject = makeObject . unSVGTextPositioningElement

class (IsSVGTextContentElement o, IsGObject o) => IsSVGTextPositioningElement o
toSVGTextPositioningElement :: IsSVGTextPositioningElement o => o -> SVGTextPositioningElement
toSVGTextPositioningElement = SVGTextPositioningElement . coerce

instance IsSVGTextPositioningElement SVGTextPositioningElement
instance IsSVGTextContentElement SVGTextPositioningElement
instance IsSVGGraphicsElement SVGTextPositioningElement
instance IsSVGTests SVGTextPositioningElement
instance IsSVGElement SVGTextPositioningElement
instance IsElementCSSInlineStyle SVGTextPositioningElement
instance IsGlobalEventHandlers SVGTextPositioningElement
instance IsHTMLOrSVGOrMathMLElement SVGTextPositioningElement
instance IsElement SVGTextPositioningElement
instance IsARIAMixin SVGTextPositioningElement
instance IsARIANotifyMixin SVGTextPositioningElement
instance IsAnimatable SVGTextPositioningElement
instance IsChildNode SVGTextPositioningElement
instance IsNonDocumentTypeChildNode SVGTextPositioningElement
instance IsParentNode SVGTextPositioningElement
instance IsSlottable SVGTextPositioningElement
instance IsNode SVGTextPositioningElement
instance IsEventTarget SVGTextPositioningElement

instance IsGObject SVGTextPositioningElement where
  typeGType _ = gTypeSVGTextPositioningElement
  {-# INLINE typeGType #-}

noSVGTextPositioningElement :: Maybe SVGTextPositioningElement
noSVGTextPositioningElement = Nothing
{-# INLINE noSVGTextPositioningElement #-}

gTypeSVGTextPositioningElement :: JSM GType
gTypeSVGTextPositioningElement = GType . Object <$> jsg "SVGTextPositioningElement"

-- | Functions for this interface are in "JSDOM.SVGTitleElement" (SVG2).
newtype SVGTitleElement = SVGTitleElement { unSVGTitleElement :: JSVal }

instance PToJSVal SVGTitleElement where
  pToJSVal = unSVGTitleElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGTitleElement where
  pFromJSVal = SVGTitleElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGTitleElement where
  toJSVal = return . unSVGTitleElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGTitleElement where
  fromJSVal v = fmap SVGTitleElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGTitleElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGTitleElement where
  makeObject = makeObject . unSVGTitleElement

instance IsSVGElement SVGTitleElement
instance IsElementCSSInlineStyle SVGTitleElement
instance IsGlobalEventHandlers SVGTitleElement
instance IsHTMLOrSVGOrMathMLElement SVGTitleElement
instance IsElement SVGTitleElement
instance IsARIAMixin SVGTitleElement
instance IsARIANotifyMixin SVGTitleElement
instance IsAnimatable SVGTitleElement
instance IsChildNode SVGTitleElement
instance IsNonDocumentTypeChildNode SVGTitleElement
instance IsParentNode SVGTitleElement
instance IsSlottable SVGTitleElement
instance IsNode SVGTitleElement
instance IsEventTarget SVGTitleElement

instance IsGObject SVGTitleElement where
  typeGType _ = gTypeSVGTitleElement
  {-# INLINE typeGType #-}

noSVGTitleElement :: Maybe SVGTitleElement
noSVGTitleElement = Nothing
{-# INLINE noSVGTitleElement #-}

gTypeSVGTitleElement :: JSM GType
gTypeSVGTitleElement = GType . Object <$> jsg "SVGTitleElement"

-- | Functions for this interface are in "JSDOM.SVGTransform" (SVG2).
newtype SVGTransform = SVGTransform { unSVGTransform :: JSVal }

instance PToJSVal SVGTransform where
  pToJSVal = unSVGTransform
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGTransform where
  pFromJSVal = SVGTransform
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGTransform where
  toJSVal = return . unSVGTransform
  {-# INLINE toJSVal #-}

instance FromJSVal SVGTransform where
  fromJSVal v = fmap SVGTransform <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGTransform
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGTransform where
  makeObject = makeObject . unSVGTransform


instance IsGObject SVGTransform where
  typeGType _ = gTypeSVGTransform
  {-# INLINE typeGType #-}

noSVGTransform :: Maybe SVGTransform
noSVGTransform = Nothing
{-# INLINE noSVGTransform #-}

gTypeSVGTransform :: JSM GType
gTypeSVGTransform = GType . Object <$> jsg "SVGTransform"

-- | Functions for this interface are in "JSDOM.SVGTransformList" (SVG2).
newtype SVGTransformList = SVGTransformList { unSVGTransformList :: JSVal }

instance PToJSVal SVGTransformList where
  pToJSVal = unSVGTransformList
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGTransformList where
  pFromJSVal = SVGTransformList
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGTransformList where
  toJSVal = return . unSVGTransformList
  {-# INLINE toJSVal #-}

instance FromJSVal SVGTransformList where
  fromJSVal v = fmap SVGTransformList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGTransformList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGTransformList where
  makeObject = makeObject . unSVGTransformList


instance IsGObject SVGTransformList where
  typeGType _ = gTypeSVGTransformList
  {-# INLINE typeGType #-}

noSVGTransformList :: Maybe SVGTransformList
noSVGTransformList = Nothing
{-# INLINE noSVGTransformList #-}

gTypeSVGTransformList :: JSM GType
gTypeSVGTransformList = GType . Object <$> jsg "SVGTransformList"

-- | Functions for this interface are in "JSDOM.SVGURIReference" (SVG2).
newtype SVGURIReference = SVGURIReference { unSVGURIReference :: JSVal }

instance PToJSVal SVGURIReference where
  pToJSVal = unSVGURIReference
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGURIReference where
  pFromJSVal = SVGURIReference
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGURIReference where
  toJSVal = return . unSVGURIReference
  {-# INLINE toJSVal #-}

instance FromJSVal SVGURIReference where
  fromJSVal v = fmap SVGURIReference <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGURIReference
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGURIReference where
  makeObject = makeObject . unSVGURIReference

class (IsGObject o) => IsSVGURIReference o
toSVGURIReference :: IsSVGURIReference o => o -> SVGURIReference
toSVGURIReference = SVGURIReference . coerce

instance IsSVGURIReference SVGURIReference

instance IsGObject SVGURIReference where
  typeGType _ = gTypeSVGURIReference
  {-# INLINE typeGType #-}

noSVGURIReference :: Maybe SVGURIReference
noSVGURIReference = Nothing
{-# INLINE noSVGURIReference #-}

gTypeSVGURIReference :: JSM GType
gTypeSVGURIReference = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SVGUnitTypes" (SVG2).
newtype SVGUnitTypes = SVGUnitTypes { unSVGUnitTypes :: JSVal }

instance PToJSVal SVGUnitTypes where
  pToJSVal = unSVGUnitTypes
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGUnitTypes where
  pFromJSVal = SVGUnitTypes
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGUnitTypes where
  toJSVal = return . unSVGUnitTypes
  {-# INLINE toJSVal #-}

instance FromJSVal SVGUnitTypes where
  fromJSVal v = fmap SVGUnitTypes <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGUnitTypes
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGUnitTypes where
  makeObject = makeObject . unSVGUnitTypes


instance IsGObject SVGUnitTypes where
  typeGType _ = gTypeSVGUnitTypes
  {-# INLINE typeGType #-}

noSVGUnitTypes :: Maybe SVGUnitTypes
noSVGUnitTypes = Nothing
{-# INLINE noSVGUnitTypes #-}

gTypeSVGUnitTypes :: JSM GType
gTypeSVGUnitTypes = GType . Object <$> jsg "SVGUnitTypes"

-- | Functions for this interface are in "JSDOM.SVGUseElement" (SVG2).
newtype SVGUseElement = SVGUseElement { unSVGUseElement :: JSVal }

instance PToJSVal SVGUseElement where
  pToJSVal = unSVGUseElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGUseElement where
  pFromJSVal = SVGUseElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGUseElement where
  toJSVal = return . unSVGUseElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGUseElement where
  fromJSVal v = fmap SVGUseElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGUseElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGUseElement where
  makeObject = makeObject . unSVGUseElement

instance IsSVGURIReference SVGUseElement
instance IsSVGGraphicsElement SVGUseElement
instance IsSVGTests SVGUseElement
instance IsSVGElement SVGUseElement
instance IsElementCSSInlineStyle SVGUseElement
instance IsGlobalEventHandlers SVGUseElement
instance IsHTMLOrSVGOrMathMLElement SVGUseElement
instance IsElement SVGUseElement
instance IsARIAMixin SVGUseElement
instance IsARIANotifyMixin SVGUseElement
instance IsAnimatable SVGUseElement
instance IsChildNode SVGUseElement
instance IsNonDocumentTypeChildNode SVGUseElement
instance IsParentNode SVGUseElement
instance IsSlottable SVGUseElement
instance IsNode SVGUseElement
instance IsEventTarget SVGUseElement

instance IsGObject SVGUseElement where
  typeGType _ = gTypeSVGUseElement
  {-# INLINE typeGType #-}

noSVGUseElement :: Maybe SVGUseElement
noSVGUseElement = Nothing
{-# INLINE noSVGUseElement #-}

gTypeSVGUseElement :: JSM GType
gTypeSVGUseElement = GType . Object <$> jsg "SVGUseElement"

-- | Functions for this interface are in "JSDOM.SVGViewElement" (SVG2).
newtype SVGViewElement = SVGViewElement { unSVGViewElement :: JSVal }

instance PToJSVal SVGViewElement where
  pToJSVal = unSVGViewElement
  {-# INLINE pToJSVal #-}

instance PFromJSVal SVGViewElement where
  pFromJSVal = SVGViewElement
  {-# INLINE pFromJSVal #-}

instance ToJSVal SVGViewElement where
  toJSVal = return . unSVGViewElement
  {-# INLINE toJSVal #-}

instance FromJSVal SVGViewElement where
  fromJSVal v = fmap SVGViewElement <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SVGViewElement
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SVGViewElement where
  makeObject = makeObject . unSVGViewElement

instance IsSVGFitToViewBox SVGViewElement
instance IsSVGElement SVGViewElement
instance IsElementCSSInlineStyle SVGViewElement
instance IsGlobalEventHandlers SVGViewElement
instance IsHTMLOrSVGOrMathMLElement SVGViewElement
instance IsElement SVGViewElement
instance IsARIAMixin SVGViewElement
instance IsARIANotifyMixin SVGViewElement
instance IsAnimatable SVGViewElement
instance IsChildNode SVGViewElement
instance IsNonDocumentTypeChildNode SVGViewElement
instance IsParentNode SVGViewElement
instance IsSlottable SVGViewElement
instance IsNode SVGViewElement
instance IsEventTarget SVGViewElement

instance IsGObject SVGViewElement where
  typeGType _ = gTypeSVGViewElement
  {-# INLINE typeGType #-}

noSVGViewElement :: Maybe SVGViewElement
noSVGViewElement = Nothing
{-# INLINE noSVGViewElement #-}

gTypeSVGViewElement :: JSM GType
gTypeSVGViewElement = GType . Object <$> jsg "SVGViewElement"

-- | Functions for this interface are in "JSDOM.Sanitizer" (html).
newtype Sanitizer = Sanitizer { unSanitizer :: JSVal }

instance PToJSVal Sanitizer where
  pToJSVal = unSanitizer
  {-# INLINE pToJSVal #-}

instance PFromJSVal Sanitizer where
  pFromJSVal = Sanitizer
  {-# INLINE pFromJSVal #-}

instance ToJSVal Sanitizer where
  toJSVal = return . unSanitizer
  {-# INLINE toJSVal #-}

instance FromJSVal Sanitizer where
  fromJSVal v = fmap Sanitizer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Sanitizer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Sanitizer where
  makeObject = makeObject . unSanitizer


instance IsGObject Sanitizer where
  typeGType _ = gTypeSanitizer
  {-# INLINE typeGType #-}

noSanitizer :: Maybe Sanitizer
noSanitizer = Nothing
{-# INLINE noSanitizer #-}

gTypeSanitizer :: JSM GType
gTypeSanitizer = GType . Object <$> jsg "Sanitizer"

-- | Dictionary SanitizerAttributeNamespace (html)
newtype SanitizerAttributeNamespace = SanitizerAttributeNamespace { unSanitizerAttributeNamespace :: JSVal }

instance PToJSVal SanitizerAttributeNamespace where
  pToJSVal = unSanitizerAttributeNamespace
  {-# INLINE pToJSVal #-}

instance PFromJSVal SanitizerAttributeNamespace where
  pFromJSVal = SanitizerAttributeNamespace
  {-# INLINE pFromJSVal #-}

instance ToJSVal SanitizerAttributeNamespace where
  toJSVal = return . unSanitizerAttributeNamespace
  {-# INLINE toJSVal #-}

instance FromJSVal SanitizerAttributeNamespace where
  fromJSVal v = fmap SanitizerAttributeNamespace <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SanitizerAttributeNamespace
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SanitizerAttributeNamespace where
  makeObject = makeObject . unSanitizerAttributeNamespace


instance IsGObject SanitizerAttributeNamespace where
  typeGType _ = gTypeSanitizerAttributeNamespace
  {-# INLINE typeGType #-}

noSanitizerAttributeNamespace :: Maybe SanitizerAttributeNamespace
noSanitizerAttributeNamespace = Nothing
{-# INLINE noSanitizerAttributeNamespace #-}

gTypeSanitizerAttributeNamespace :: JSM GType
gTypeSanitizerAttributeNamespace = GType . Object <$> jsg "Object"

-- | Dictionary SanitizerConfig (html)
newtype SanitizerConfig = SanitizerConfig { unSanitizerConfig :: JSVal }

instance PToJSVal SanitizerConfig where
  pToJSVal = unSanitizerConfig
  {-# INLINE pToJSVal #-}

instance PFromJSVal SanitizerConfig where
  pFromJSVal = SanitizerConfig
  {-# INLINE pFromJSVal #-}

instance ToJSVal SanitizerConfig where
  toJSVal = return . unSanitizerConfig
  {-# INLINE toJSVal #-}

instance FromJSVal SanitizerConfig where
  fromJSVal v = fmap SanitizerConfig <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SanitizerConfig
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SanitizerConfig where
  makeObject = makeObject . unSanitizerConfig


instance IsGObject SanitizerConfig where
  typeGType _ = gTypeSanitizerConfig
  {-# INLINE typeGType #-}

noSanitizerConfig :: Maybe SanitizerConfig
noSanitizerConfig = Nothing
{-# INLINE noSanitizerConfig #-}

gTypeSanitizerConfig :: JSM GType
gTypeSanitizerConfig = GType . Object <$> jsg "Object"

-- | Dictionary SanitizerElementNamespace (html)
newtype SanitizerElementNamespace = SanitizerElementNamespace { unSanitizerElementNamespace :: JSVal }

instance PToJSVal SanitizerElementNamespace where
  pToJSVal = unSanitizerElementNamespace
  {-# INLINE pToJSVal #-}

instance PFromJSVal SanitizerElementNamespace where
  pFromJSVal = SanitizerElementNamespace
  {-# INLINE pFromJSVal #-}

instance ToJSVal SanitizerElementNamespace where
  toJSVal = return . unSanitizerElementNamespace
  {-# INLINE toJSVal #-}

instance FromJSVal SanitizerElementNamespace where
  fromJSVal v = fmap SanitizerElementNamespace <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SanitizerElementNamespace
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SanitizerElementNamespace where
  makeObject = makeObject . unSanitizerElementNamespace

class (IsGObject o) => IsSanitizerElementNamespace o
toSanitizerElementNamespace :: IsSanitizerElementNamespace o => o -> SanitizerElementNamespace
toSanitizerElementNamespace = SanitizerElementNamespace . coerce

instance IsSanitizerElementNamespace SanitizerElementNamespace

instance IsGObject SanitizerElementNamespace where
  typeGType _ = gTypeSanitizerElementNamespace
  {-# INLINE typeGType #-}

noSanitizerElementNamespace :: Maybe SanitizerElementNamespace
noSanitizerElementNamespace = Nothing
{-# INLINE noSanitizerElementNamespace #-}

gTypeSanitizerElementNamespace :: JSM GType
gTypeSanitizerElementNamespace = GType . Object <$> jsg "Object"

-- | Dictionary SanitizerElementNamespaceWithAttributes (html)
newtype SanitizerElementNamespaceWithAttributes = SanitizerElementNamespaceWithAttributes { unSanitizerElementNamespaceWithAttributes :: JSVal }

instance PToJSVal SanitizerElementNamespaceWithAttributes where
  pToJSVal = unSanitizerElementNamespaceWithAttributes
  {-# INLINE pToJSVal #-}

instance PFromJSVal SanitizerElementNamespaceWithAttributes where
  pFromJSVal = SanitizerElementNamespaceWithAttributes
  {-# INLINE pFromJSVal #-}

instance ToJSVal SanitizerElementNamespaceWithAttributes where
  toJSVal = return . unSanitizerElementNamespaceWithAttributes
  {-# INLINE toJSVal #-}

instance FromJSVal SanitizerElementNamespaceWithAttributes where
  fromJSVal v = fmap SanitizerElementNamespaceWithAttributes <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SanitizerElementNamespaceWithAttributes
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SanitizerElementNamespaceWithAttributes where
  makeObject = makeObject . unSanitizerElementNamespaceWithAttributes

instance IsSanitizerElementNamespace SanitizerElementNamespaceWithAttributes

instance IsGObject SanitizerElementNamespaceWithAttributes where
  typeGType _ = gTypeSanitizerElementNamespaceWithAttributes
  {-# INLINE typeGType #-}

noSanitizerElementNamespaceWithAttributes :: Maybe SanitizerElementNamespaceWithAttributes
noSanitizerElementNamespaceWithAttributes = Nothing
{-# INLINE noSanitizerElementNamespaceWithAttributes #-}

gTypeSanitizerElementNamespaceWithAttributes :: JSM GType
gTypeSanitizerElementNamespaceWithAttributes = GType . Object <$> jsg "Object"

-- | Dictionary SanitizerProcessingInstruction (html)
newtype SanitizerProcessingInstruction = SanitizerProcessingInstruction { unSanitizerProcessingInstruction :: JSVal }

instance PToJSVal SanitizerProcessingInstruction where
  pToJSVal = unSanitizerProcessingInstruction
  {-# INLINE pToJSVal #-}

instance PFromJSVal SanitizerProcessingInstruction where
  pFromJSVal = SanitizerProcessingInstruction
  {-# INLINE pFromJSVal #-}

instance ToJSVal SanitizerProcessingInstruction where
  toJSVal = return . unSanitizerProcessingInstruction
  {-# INLINE toJSVal #-}

instance FromJSVal SanitizerProcessingInstruction where
  fromJSVal v = fmap SanitizerProcessingInstruction <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SanitizerProcessingInstruction
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SanitizerProcessingInstruction where
  makeObject = makeObject . unSanitizerProcessingInstruction


instance IsGObject SanitizerProcessingInstruction where
  typeGType _ = gTypeSanitizerProcessingInstruction
  {-# INLINE typeGType #-}

noSanitizerProcessingInstruction :: Maybe SanitizerProcessingInstruction
noSanitizerProcessingInstruction = Nothing
{-# INLINE noSanitizerProcessingInstruction #-}

gTypeSanitizerProcessingInstruction :: JSM GType
gTypeSanitizerProcessingInstruction = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Scheduler" (scheduling-apis).
newtype Scheduler = Scheduler { unScheduler :: JSVal }

instance PToJSVal Scheduler where
  pToJSVal = unScheduler
  {-# INLINE pToJSVal #-}

instance PFromJSVal Scheduler where
  pFromJSVal = Scheduler
  {-# INLINE pFromJSVal #-}

instance ToJSVal Scheduler where
  toJSVal = return . unScheduler
  {-# INLINE toJSVal #-}

instance FromJSVal Scheduler where
  fromJSVal v = fmap Scheduler <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Scheduler
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Scheduler where
  makeObject = makeObject . unScheduler


instance IsGObject Scheduler where
  typeGType _ = gTypeScheduler
  {-# INLINE typeGType #-}

noScheduler :: Maybe Scheduler
noScheduler = Nothing
{-# INLINE noScheduler #-}

gTypeScheduler :: JSM GType
gTypeScheduler = GType . Object <$> jsg "Scheduler"

-- | Dictionary SchedulerPostTaskOptions (scheduling-apis)
newtype SchedulerPostTaskOptions = SchedulerPostTaskOptions { unSchedulerPostTaskOptions :: JSVal }

instance PToJSVal SchedulerPostTaskOptions where
  pToJSVal = unSchedulerPostTaskOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal SchedulerPostTaskOptions where
  pFromJSVal = SchedulerPostTaskOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal SchedulerPostTaskOptions where
  toJSVal = return . unSchedulerPostTaskOptions
  {-# INLINE toJSVal #-}

instance FromJSVal SchedulerPostTaskOptions where
  fromJSVal v = fmap SchedulerPostTaskOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SchedulerPostTaskOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SchedulerPostTaskOptions where
  makeObject = makeObject . unSchedulerPostTaskOptions


instance IsGObject SchedulerPostTaskOptions where
  typeGType _ = gTypeSchedulerPostTaskOptions
  {-# INLINE typeGType #-}

noSchedulerPostTaskOptions :: Maybe SchedulerPostTaskOptions
noSchedulerPostTaskOptions = Nothing
{-# INLINE noSchedulerPostTaskOptions #-}

gTypeSchedulerPostTaskOptions :: JSM GType
gTypeSchedulerPostTaskOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Screen" (cssom-view-1).
newtype Screen = Screen { unScreen :: JSVal }

instance PToJSVal Screen where
  pToJSVal = unScreen
  {-# INLINE pToJSVal #-}

instance PFromJSVal Screen where
  pFromJSVal = Screen
  {-# INLINE pFromJSVal #-}

instance ToJSVal Screen where
  toJSVal = return . unScreen
  {-# INLINE toJSVal #-}

instance FromJSVal Screen where
  fromJSVal v = fmap Screen <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Screen
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Screen where
  makeObject = makeObject . unScreen

class (IsGObject o) => IsScreen o
toScreen :: IsScreen o => o -> Screen
toScreen = Screen . coerce

instance IsScreen Screen

instance IsGObject Screen where
  typeGType _ = gTypeScreen
  {-# INLINE typeGType #-}

noScreen :: Maybe Screen
noScreen = Nothing
{-# INLINE noScreen #-}

gTypeScreen :: JSM GType
gTypeScreen = GType . Object <$> jsg "Screen"

-- | Functions for this interface are in "JSDOM.ScreenDetailed" (window-management).
newtype ScreenDetailed = ScreenDetailed { unScreenDetailed :: JSVal }

instance PToJSVal ScreenDetailed where
  pToJSVal = unScreenDetailed
  {-# INLINE pToJSVal #-}

instance PFromJSVal ScreenDetailed where
  pFromJSVal = ScreenDetailed
  {-# INLINE pFromJSVal #-}

instance ToJSVal ScreenDetailed where
  toJSVal = return . unScreenDetailed
  {-# INLINE toJSVal #-}

instance FromJSVal ScreenDetailed where
  fromJSVal v = fmap ScreenDetailed <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ScreenDetailed
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ScreenDetailed where
  makeObject = makeObject . unScreenDetailed

instance IsScreen ScreenDetailed

instance IsGObject ScreenDetailed where
  typeGType _ = gTypeScreenDetailed
  {-# INLINE typeGType #-}

noScreenDetailed :: Maybe ScreenDetailed
noScreenDetailed = Nothing
{-# INLINE noScreenDetailed #-}

gTypeScreenDetailed :: JSM GType
gTypeScreenDetailed = GType . Object <$> jsg "ScreenDetailed"

-- | Functions for this interface are in "JSDOM.ScreenOrientation" (screen-orientation).
newtype ScreenOrientation = ScreenOrientation { unScreenOrientation :: JSVal }

instance PToJSVal ScreenOrientation where
  pToJSVal = unScreenOrientation
  {-# INLINE pToJSVal #-}

instance PFromJSVal ScreenOrientation where
  pFromJSVal = ScreenOrientation
  {-# INLINE pFromJSVal #-}

instance ToJSVal ScreenOrientation where
  toJSVal = return . unScreenOrientation
  {-# INLINE toJSVal #-}

instance FromJSVal ScreenOrientation where
  fromJSVal v = fmap ScreenOrientation <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ScreenOrientation
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ScreenOrientation where
  makeObject = makeObject . unScreenOrientation

instance IsEventTarget ScreenOrientation

instance IsGObject ScreenOrientation where
  typeGType _ = gTypeScreenOrientation
  {-# INLINE typeGType #-}

noScreenOrientation :: Maybe ScreenOrientation
noScreenOrientation = Nothing
{-# INLINE noScreenOrientation #-}

gTypeScreenOrientation :: JSM GType
gTypeScreenOrientation = GType . Object <$> jsg "ScreenOrientation"

-- | Functions for this interface are in "JSDOM.ScriptProcessorNode" (webaudio-1.1).
newtype ScriptProcessorNode = ScriptProcessorNode { unScriptProcessorNode :: JSVal }

instance PToJSVal ScriptProcessorNode where
  pToJSVal = unScriptProcessorNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal ScriptProcessorNode where
  pFromJSVal = ScriptProcessorNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal ScriptProcessorNode where
  toJSVal = return . unScriptProcessorNode
  {-# INLINE toJSVal #-}

instance FromJSVal ScriptProcessorNode where
  fromJSVal v = fmap ScriptProcessorNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ScriptProcessorNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ScriptProcessorNode where
  makeObject = makeObject . unScriptProcessorNode

instance IsAudioNode ScriptProcessorNode
instance IsEventTarget ScriptProcessorNode

instance IsGObject ScriptProcessorNode where
  typeGType _ = gTypeScriptProcessorNode
  {-# INLINE typeGType #-}

noScriptProcessorNode :: Maybe ScriptProcessorNode
noScriptProcessorNode = Nothing
{-# INLINE noScriptProcessorNode #-}

gTypeScriptProcessorNode :: JSM GType
gTypeScriptProcessorNode = GType . Object <$> jsg "ScriptProcessorNode"

-- | Dictionary ScrollIntoViewOptions (cssom-view-1)
newtype ScrollIntoViewOptions = ScrollIntoViewOptions { unScrollIntoViewOptions :: JSVal }

instance PToJSVal ScrollIntoViewOptions where
  pToJSVal = unScrollIntoViewOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ScrollIntoViewOptions where
  pFromJSVal = ScrollIntoViewOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ScrollIntoViewOptions where
  toJSVal = return . unScrollIntoViewOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ScrollIntoViewOptions where
  fromJSVal v = fmap ScrollIntoViewOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ScrollIntoViewOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ScrollIntoViewOptions where
  makeObject = makeObject . unScrollIntoViewOptions

instance IsScrollOptions ScrollIntoViewOptions

instance IsGObject ScrollIntoViewOptions where
  typeGType _ = gTypeScrollIntoViewOptions
  {-# INLINE typeGType #-}

noScrollIntoViewOptions :: Maybe ScrollIntoViewOptions
noScrollIntoViewOptions = Nothing
{-# INLINE noScrollIntoViewOptions #-}

gTypeScrollIntoViewOptions :: JSM GType
gTypeScrollIntoViewOptions = GType . Object <$> jsg "Object"

-- | Dictionary ScrollOptions (cssom-view-1)
newtype ScrollOptions = ScrollOptions { unScrollOptions :: JSVal }

instance PToJSVal ScrollOptions where
  pToJSVal = unScrollOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ScrollOptions where
  pFromJSVal = ScrollOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ScrollOptions where
  toJSVal = return . unScrollOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ScrollOptions where
  fromJSVal v = fmap ScrollOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ScrollOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ScrollOptions where
  makeObject = makeObject . unScrollOptions

class (IsGObject o) => IsScrollOptions o
toScrollOptions :: IsScrollOptions o => o -> ScrollOptions
toScrollOptions = ScrollOptions . coerce

instance IsScrollOptions ScrollOptions

instance IsGObject ScrollOptions where
  typeGType _ = gTypeScrollOptions
  {-# INLINE typeGType #-}

noScrollOptions :: Maybe ScrollOptions
noScrollOptions = Nothing
{-# INLINE noScrollOptions #-}

gTypeScrollOptions :: JSM GType
gTypeScrollOptions = GType . Object <$> jsg "Object"

-- | Dictionary ScrollResult (cssom-view-1)
newtype ScrollResult = ScrollResult { unScrollResult :: JSVal }

instance PToJSVal ScrollResult where
  pToJSVal = unScrollResult
  {-# INLINE pToJSVal #-}

instance PFromJSVal ScrollResult where
  pFromJSVal = ScrollResult
  {-# INLINE pFromJSVal #-}

instance ToJSVal ScrollResult where
  toJSVal = return . unScrollResult
  {-# INLINE toJSVal #-}

instance FromJSVal ScrollResult where
  fromJSVal v = fmap ScrollResult <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ScrollResult
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ScrollResult where
  makeObject = makeObject . unScrollResult


instance IsGObject ScrollResult where
  typeGType _ = gTypeScrollResult
  {-# INLINE typeGType #-}

noScrollResult :: Maybe ScrollResult
noScrollResult = Nothing
{-# INLINE noScrollResult #-}

gTypeScrollResult :: JSM GType
gTypeScrollResult = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ScrollTimeline" (scroll-animations-1).
newtype ScrollTimeline = ScrollTimeline { unScrollTimeline :: JSVal }

instance PToJSVal ScrollTimeline where
  pToJSVal = unScrollTimeline
  {-# INLINE pToJSVal #-}

instance PFromJSVal ScrollTimeline where
  pFromJSVal = ScrollTimeline
  {-# INLINE pFromJSVal #-}

instance ToJSVal ScrollTimeline where
  toJSVal = return . unScrollTimeline
  {-# INLINE toJSVal #-}

instance FromJSVal ScrollTimeline where
  fromJSVal v = fmap ScrollTimeline <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ScrollTimeline
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ScrollTimeline where
  makeObject = makeObject . unScrollTimeline

class (IsAnimationTimeline o, IsGObject o) => IsScrollTimeline o
toScrollTimeline :: IsScrollTimeline o => o -> ScrollTimeline
toScrollTimeline = ScrollTimeline . coerce

instance IsScrollTimeline ScrollTimeline
instance IsAnimationTimeline ScrollTimeline

instance IsGObject ScrollTimeline where
  typeGType _ = gTypeScrollTimeline
  {-# INLINE typeGType #-}

noScrollTimeline :: Maybe ScrollTimeline
noScrollTimeline = Nothing
{-# INLINE noScrollTimeline #-}

gTypeScrollTimeline :: JSM GType
gTypeScrollTimeline = GType . Object <$> jsg "ScrollTimeline"

-- | Dictionary ScrollTimelineOptions (scroll-animations-1)
newtype ScrollTimelineOptions = ScrollTimelineOptions { unScrollTimelineOptions :: JSVal }

instance PToJSVal ScrollTimelineOptions where
  pToJSVal = unScrollTimelineOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ScrollTimelineOptions where
  pFromJSVal = ScrollTimelineOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ScrollTimelineOptions where
  toJSVal = return . unScrollTimelineOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ScrollTimelineOptions where
  fromJSVal v = fmap ScrollTimelineOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ScrollTimelineOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ScrollTimelineOptions where
  makeObject = makeObject . unScrollTimelineOptions


instance IsGObject ScrollTimelineOptions where
  typeGType _ = gTypeScrollTimelineOptions
  {-# INLINE typeGType #-}

noScrollTimelineOptions :: Maybe ScrollTimelineOptions
noScrollTimelineOptions = Nothing
{-# INLINE noScrollTimelineOptions #-}

gTypeScrollTimelineOptions :: JSM GType
gTypeScrollTimelineOptions = GType . Object <$> jsg "Object"

-- | Dictionary ScrollToOptions (cssom-view-1)
newtype ScrollToOptions = ScrollToOptions { unScrollToOptions :: JSVal }

instance PToJSVal ScrollToOptions where
  pToJSVal = unScrollToOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ScrollToOptions where
  pFromJSVal = ScrollToOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ScrollToOptions where
  toJSVal = return . unScrollToOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ScrollToOptions where
  fromJSVal v = fmap ScrollToOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ScrollToOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ScrollToOptions where
  makeObject = makeObject . unScrollToOptions

instance IsScrollOptions ScrollToOptions

instance IsGObject ScrollToOptions where
  typeGType _ = gTypeScrollToOptions
  {-# INLINE typeGType #-}

noScrollToOptions :: Maybe ScrollToOptions
noScrollToOptions = Nothing
{-# INLINE noScrollToOptions #-}

gTypeScrollToOptions :: JSM GType
gTypeScrollToOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SecurityPolicyViolationEvent" (CSP3).
newtype SecurityPolicyViolationEvent = SecurityPolicyViolationEvent { unSecurityPolicyViolationEvent :: JSVal }

instance PToJSVal SecurityPolicyViolationEvent where
  pToJSVal = unSecurityPolicyViolationEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal SecurityPolicyViolationEvent where
  pFromJSVal = SecurityPolicyViolationEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal SecurityPolicyViolationEvent where
  toJSVal = return . unSecurityPolicyViolationEvent
  {-# INLINE toJSVal #-}

instance FromJSVal SecurityPolicyViolationEvent where
  fromJSVal v = fmap SecurityPolicyViolationEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SecurityPolicyViolationEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SecurityPolicyViolationEvent where
  makeObject = makeObject . unSecurityPolicyViolationEvent

instance IsEvent SecurityPolicyViolationEvent

instance IsGObject SecurityPolicyViolationEvent where
  typeGType _ = gTypeSecurityPolicyViolationEvent
  {-# INLINE typeGType #-}

noSecurityPolicyViolationEvent :: Maybe SecurityPolicyViolationEvent
noSecurityPolicyViolationEvent = Nothing
{-# INLINE noSecurityPolicyViolationEvent #-}

gTypeSecurityPolicyViolationEvent :: JSM GType
gTypeSecurityPolicyViolationEvent = GType . Object <$> jsg "SecurityPolicyViolationEvent"

-- | Dictionary SecurityPolicyViolationEventInit (CSP3)
newtype SecurityPolicyViolationEventInit = SecurityPolicyViolationEventInit { unSecurityPolicyViolationEventInit :: JSVal }

instance PToJSVal SecurityPolicyViolationEventInit where
  pToJSVal = unSecurityPolicyViolationEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal SecurityPolicyViolationEventInit where
  pFromJSVal = SecurityPolicyViolationEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal SecurityPolicyViolationEventInit where
  toJSVal = return . unSecurityPolicyViolationEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal SecurityPolicyViolationEventInit where
  fromJSVal v = fmap SecurityPolicyViolationEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SecurityPolicyViolationEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SecurityPolicyViolationEventInit where
  makeObject = makeObject . unSecurityPolicyViolationEventInit

instance IsEventInit SecurityPolicyViolationEventInit

instance IsGObject SecurityPolicyViolationEventInit where
  typeGType _ = gTypeSecurityPolicyViolationEventInit
  {-# INLINE typeGType #-}

noSecurityPolicyViolationEventInit :: Maybe SecurityPolicyViolationEventInit
noSecurityPolicyViolationEventInit = Nothing
{-# INLINE noSecurityPolicyViolationEventInit #-}

gTypeSecurityPolicyViolationEventInit :: JSM GType
gTypeSecurityPolicyViolationEventInit = GType . Object <$> jsg "Object"

-- | Dictionary Segment (mediacapture-extensions)
newtype Segment = Segment { unSegment :: JSVal }

instance PToJSVal Segment where
  pToJSVal = unSegment
  {-# INLINE pToJSVal #-}

instance PFromJSVal Segment where
  pFromJSVal = Segment
  {-# INLINE pFromJSVal #-}

instance ToJSVal Segment where
  toJSVal = return . unSegment
  {-# INLINE toJSVal #-}

instance FromJSVal Segment where
  fromJSVal v = fmap Segment <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Segment
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Segment where
  makeObject = makeObject . unSegment


instance IsGObject Segment where
  typeGType _ = gTypeSegment
  {-# INLINE typeGType #-}

noSegment :: Maybe Segment
noSegment = Nothing
{-# INLINE noSegment #-}

gTypeSegment :: JSM GType
gTypeSegment = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Selection" (selection-api).
newtype Selection = Selection { unSelection :: JSVal }

instance PToJSVal Selection where
  pToJSVal = unSelection
  {-# INLINE pToJSVal #-}

instance PFromJSVal Selection where
  pFromJSVal = Selection
  {-# INLINE pFromJSVal #-}

instance ToJSVal Selection where
  toJSVal = return . unSelection
  {-# INLINE toJSVal #-}

instance FromJSVal Selection where
  fromJSVal v = fmap Selection <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Selection
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Selection where
  makeObject = makeObject . unSelection


instance IsGObject Selection where
  typeGType _ = gTypeSelection
  {-# INLINE typeGType #-}

noSelection :: Maybe Selection
noSelection = Nothing
{-# INLINE noSelection #-}

gTypeSelection :: JSM GType
gTypeSelection = GType . Object <$> jsg "Selection"

-- | Functions for this interface are in "JSDOM.Serial" (serial).
newtype Serial = Serial { unSerial :: JSVal }

instance PToJSVal Serial where
  pToJSVal = unSerial
  {-# INLINE pToJSVal #-}

instance PFromJSVal Serial where
  pFromJSVal = Serial
  {-# INLINE pFromJSVal #-}

instance ToJSVal Serial where
  toJSVal = return . unSerial
  {-# INLINE toJSVal #-}

instance FromJSVal Serial where
  fromJSVal v = fmap Serial <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Serial
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Serial where
  makeObject = makeObject . unSerial

instance IsEventTarget Serial

instance IsGObject Serial where
  typeGType _ = gTypeSerial
  {-# INLINE typeGType #-}

noSerial :: Maybe Serial
noSerial = Nothing
{-# INLINE noSerial #-}

gTypeSerial :: JSM GType
gTypeSerial = GType . Object <$> jsg "Serial"

-- | Dictionary SerialInputSignals (serial)
newtype SerialInputSignals = SerialInputSignals { unSerialInputSignals :: JSVal }

instance PToJSVal SerialInputSignals where
  pToJSVal = unSerialInputSignals
  {-# INLINE pToJSVal #-}

instance PFromJSVal SerialInputSignals where
  pFromJSVal = SerialInputSignals
  {-# INLINE pFromJSVal #-}

instance ToJSVal SerialInputSignals where
  toJSVal = return . unSerialInputSignals
  {-# INLINE toJSVal #-}

instance FromJSVal SerialInputSignals where
  fromJSVal v = fmap SerialInputSignals <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SerialInputSignals
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SerialInputSignals where
  makeObject = makeObject . unSerialInputSignals


instance IsGObject SerialInputSignals where
  typeGType _ = gTypeSerialInputSignals
  {-# INLINE typeGType #-}

noSerialInputSignals :: Maybe SerialInputSignals
noSerialInputSignals = Nothing
{-# INLINE noSerialInputSignals #-}

gTypeSerialInputSignals :: JSM GType
gTypeSerialInputSignals = GType . Object <$> jsg "Object"

-- | Dictionary SerialOptions (serial)
newtype SerialOptions = SerialOptions { unSerialOptions :: JSVal }

instance PToJSVal SerialOptions where
  pToJSVal = unSerialOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal SerialOptions where
  pFromJSVal = SerialOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal SerialOptions where
  toJSVal = return . unSerialOptions
  {-# INLINE toJSVal #-}

instance FromJSVal SerialOptions where
  fromJSVal v = fmap SerialOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SerialOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SerialOptions where
  makeObject = makeObject . unSerialOptions


instance IsGObject SerialOptions where
  typeGType _ = gTypeSerialOptions
  {-# INLINE typeGType #-}

noSerialOptions :: Maybe SerialOptions
noSerialOptions = Nothing
{-# INLINE noSerialOptions #-}

gTypeSerialOptions :: JSM GType
gTypeSerialOptions = GType . Object <$> jsg "Object"

-- | Dictionary SerialOutputSignals (serial)
newtype SerialOutputSignals = SerialOutputSignals { unSerialOutputSignals :: JSVal }

instance PToJSVal SerialOutputSignals where
  pToJSVal = unSerialOutputSignals
  {-# INLINE pToJSVal #-}

instance PFromJSVal SerialOutputSignals where
  pFromJSVal = SerialOutputSignals
  {-# INLINE pFromJSVal #-}

instance ToJSVal SerialOutputSignals where
  toJSVal = return . unSerialOutputSignals
  {-# INLINE toJSVal #-}

instance FromJSVal SerialOutputSignals where
  fromJSVal v = fmap SerialOutputSignals <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SerialOutputSignals
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SerialOutputSignals where
  makeObject = makeObject . unSerialOutputSignals


instance IsGObject SerialOutputSignals where
  typeGType _ = gTypeSerialOutputSignals
  {-# INLINE typeGType #-}

noSerialOutputSignals :: Maybe SerialOutputSignals
noSerialOutputSignals = Nothing
{-# INLINE noSerialOutputSignals #-}

gTypeSerialOutputSignals :: JSM GType
gTypeSerialOutputSignals = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SerialPort" (serial).
newtype SerialPort = SerialPort { unSerialPort :: JSVal }

instance PToJSVal SerialPort where
  pToJSVal = unSerialPort
  {-# INLINE pToJSVal #-}

instance PFromJSVal SerialPort where
  pFromJSVal = SerialPort
  {-# INLINE pFromJSVal #-}

instance ToJSVal SerialPort where
  toJSVal = return . unSerialPort
  {-# INLINE toJSVal #-}

instance FromJSVal SerialPort where
  fromJSVal v = fmap SerialPort <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SerialPort
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SerialPort where
  makeObject = makeObject . unSerialPort

instance IsEventTarget SerialPort

instance IsGObject SerialPort where
  typeGType _ = gTypeSerialPort
  {-# INLINE typeGType #-}

noSerialPort :: Maybe SerialPort
noSerialPort = Nothing
{-# INLINE noSerialPort #-}

gTypeSerialPort :: JSM GType
gTypeSerialPort = GType . Object <$> jsg "SerialPort"

-- | Dictionary SerialPortFilter (serial)
newtype SerialPortFilter = SerialPortFilter { unSerialPortFilter :: JSVal }

instance PToJSVal SerialPortFilter where
  pToJSVal = unSerialPortFilter
  {-# INLINE pToJSVal #-}

instance PFromJSVal SerialPortFilter where
  pFromJSVal = SerialPortFilter
  {-# INLINE pFromJSVal #-}

instance ToJSVal SerialPortFilter where
  toJSVal = return . unSerialPortFilter
  {-# INLINE toJSVal #-}

instance FromJSVal SerialPortFilter where
  fromJSVal v = fmap SerialPortFilter <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SerialPortFilter
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SerialPortFilter where
  makeObject = makeObject . unSerialPortFilter


instance IsGObject SerialPortFilter where
  typeGType _ = gTypeSerialPortFilter
  {-# INLINE typeGType #-}

noSerialPortFilter :: Maybe SerialPortFilter
noSerialPortFilter = Nothing
{-# INLINE noSerialPortFilter #-}

gTypeSerialPortFilter :: JSM GType
gTypeSerialPortFilter = GType . Object <$> jsg "Object"

-- | Dictionary SerialPortInfo (serial)
newtype SerialPortInfo = SerialPortInfo { unSerialPortInfo :: JSVal }

instance PToJSVal SerialPortInfo where
  pToJSVal = unSerialPortInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal SerialPortInfo where
  pFromJSVal = SerialPortInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal SerialPortInfo where
  toJSVal = return . unSerialPortInfo
  {-# INLINE toJSVal #-}

instance FromJSVal SerialPortInfo where
  fromJSVal v = fmap SerialPortInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SerialPortInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SerialPortInfo where
  makeObject = makeObject . unSerialPortInfo


instance IsGObject SerialPortInfo where
  typeGType _ = gTypeSerialPortInfo
  {-# INLINE typeGType #-}

noSerialPortInfo :: Maybe SerialPortInfo
noSerialPortInfo = Nothing
{-# INLINE noSerialPortInfo #-}

gTypeSerialPortInfo :: JSM GType
gTypeSerialPortInfo = GType . Object <$> jsg "Object"

-- | Dictionary SerialPortRequestOptions (serial)
newtype SerialPortRequestOptions = SerialPortRequestOptions { unSerialPortRequestOptions :: JSVal }

instance PToJSVal SerialPortRequestOptions where
  pToJSVal = unSerialPortRequestOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal SerialPortRequestOptions where
  pFromJSVal = SerialPortRequestOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal SerialPortRequestOptions where
  toJSVal = return . unSerialPortRequestOptions
  {-# INLINE toJSVal #-}

instance FromJSVal SerialPortRequestOptions where
  fromJSVal v = fmap SerialPortRequestOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SerialPortRequestOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SerialPortRequestOptions where
  makeObject = makeObject . unSerialPortRequestOptions


instance IsGObject SerialPortRequestOptions where
  typeGType _ = gTypeSerialPortRequestOptions
  {-# INLINE typeGType #-}

noSerialPortRequestOptions :: Maybe SerialPortRequestOptions
noSerialPortRequestOptions = Nothing
{-# INLINE noSerialPortRequestOptions #-}

gTypeSerialPortRequestOptions :: JSM GType
gTypeSerialPortRequestOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ServiceWorker" (service-workers).
newtype ServiceWorker = ServiceWorker { unServiceWorker :: JSVal }

instance PToJSVal ServiceWorker where
  pToJSVal = unServiceWorker
  {-# INLINE pToJSVal #-}

instance PFromJSVal ServiceWorker where
  pFromJSVal = ServiceWorker
  {-# INLINE pFromJSVal #-}

instance ToJSVal ServiceWorker where
  toJSVal = return . unServiceWorker
  {-# INLINE toJSVal #-}

instance FromJSVal ServiceWorker where
  fromJSVal v = fmap ServiceWorker <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ServiceWorker
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ServiceWorker where
  makeObject = makeObject . unServiceWorker

instance IsAbstractWorker ServiceWorker
instance IsEventTarget ServiceWorker

instance IsGObject ServiceWorker where
  typeGType _ = gTypeServiceWorker
  {-# INLINE typeGType #-}

noServiceWorker :: Maybe ServiceWorker
noServiceWorker = Nothing
{-# INLINE noServiceWorker #-}

gTypeServiceWorker :: JSM GType
gTypeServiceWorker = GType . Object <$> jsg "ServiceWorker"

-- | Functions for this interface are in "JSDOM.ServiceWorkerContainer" (service-workers).
newtype ServiceWorkerContainer = ServiceWorkerContainer { unServiceWorkerContainer :: JSVal }

instance PToJSVal ServiceWorkerContainer where
  pToJSVal = unServiceWorkerContainer
  {-# INLINE pToJSVal #-}

instance PFromJSVal ServiceWorkerContainer where
  pFromJSVal = ServiceWorkerContainer
  {-# INLINE pFromJSVal #-}

instance ToJSVal ServiceWorkerContainer where
  toJSVal = return . unServiceWorkerContainer
  {-# INLINE toJSVal #-}

instance FromJSVal ServiceWorkerContainer where
  fromJSVal v = fmap ServiceWorkerContainer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ServiceWorkerContainer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ServiceWorkerContainer where
  makeObject = makeObject . unServiceWorkerContainer

instance IsEventTarget ServiceWorkerContainer

instance IsGObject ServiceWorkerContainer where
  typeGType _ = gTypeServiceWorkerContainer
  {-# INLINE typeGType #-}

noServiceWorkerContainer :: Maybe ServiceWorkerContainer
noServiceWorkerContainer = Nothing
{-# INLINE noServiceWorkerContainer #-}

gTypeServiceWorkerContainer :: JSM GType
gTypeServiceWorkerContainer = GType . Object <$> jsg "ServiceWorkerContainer"

-- | Functions for this interface are in "JSDOM.ServiceWorkerGlobalScope" (service-workers).
newtype ServiceWorkerGlobalScope = ServiceWorkerGlobalScope { unServiceWorkerGlobalScope :: JSVal }

instance PToJSVal ServiceWorkerGlobalScope where
  pToJSVal = unServiceWorkerGlobalScope
  {-# INLINE pToJSVal #-}

instance PFromJSVal ServiceWorkerGlobalScope where
  pFromJSVal = ServiceWorkerGlobalScope
  {-# INLINE pFromJSVal #-}

instance ToJSVal ServiceWorkerGlobalScope where
  toJSVal = return . unServiceWorkerGlobalScope
  {-# INLINE toJSVal #-}

instance FromJSVal ServiceWorkerGlobalScope where
  fromJSVal v = fmap ServiceWorkerGlobalScope <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ServiceWorkerGlobalScope
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ServiceWorkerGlobalScope where
  makeObject = makeObject . unServiceWorkerGlobalScope

instance IsWorkerGlobalScope ServiceWorkerGlobalScope
instance IsFontFaceSource ServiceWorkerGlobalScope
instance IsWindowOrWorkerGlobalScope ServiceWorkerGlobalScope
instance IsEventTarget ServiceWorkerGlobalScope

instance IsGObject ServiceWorkerGlobalScope where
  typeGType _ = gTypeServiceWorkerGlobalScope
  {-# INLINE typeGType #-}

noServiceWorkerGlobalScope :: Maybe ServiceWorkerGlobalScope
noServiceWorkerGlobalScope = Nothing
{-# INLINE noServiceWorkerGlobalScope #-}

gTypeServiceWorkerGlobalScope :: JSM GType
gTypeServiceWorkerGlobalScope = GType . Object <$> jsg "ServiceWorkerGlobalScope"

-- | Functions for this interface are in "JSDOM.ServiceWorkerRegistration" (service-workers).
newtype ServiceWorkerRegistration = ServiceWorkerRegistration { unServiceWorkerRegistration :: JSVal }

instance PToJSVal ServiceWorkerRegistration where
  pToJSVal = unServiceWorkerRegistration
  {-# INLINE pToJSVal #-}

instance PFromJSVal ServiceWorkerRegistration where
  pFromJSVal = ServiceWorkerRegistration
  {-# INLINE pFromJSVal #-}

instance ToJSVal ServiceWorkerRegistration where
  toJSVal = return . unServiceWorkerRegistration
  {-# INLINE toJSVal #-}

instance FromJSVal ServiceWorkerRegistration where
  fromJSVal v = fmap ServiceWorkerRegistration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ServiceWorkerRegistration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ServiceWorkerRegistration where
  makeObject = makeObject . unServiceWorkerRegistration

instance IsPushManagerAttribute ServiceWorkerRegistration
instance IsEventTarget ServiceWorkerRegistration

instance IsGObject ServiceWorkerRegistration where
  typeGType _ = gTypeServiceWorkerRegistration
  {-# INLINE typeGType #-}

noServiceWorkerRegistration :: Maybe ServiceWorkerRegistration
noServiceWorkerRegistration = Nothing
{-# INLINE noServiceWorkerRegistration #-}

gTypeServiceWorkerRegistration :: JSM GType
gTypeServiceWorkerRegistration = GType . Object <$> jsg "ServiceWorkerRegistration"

-- | Dictionary SetHTMLOptions (html)
newtype SetHTMLOptions = SetHTMLOptions { unSetHTMLOptions :: JSVal }

instance PToJSVal SetHTMLOptions where
  pToJSVal = unSetHTMLOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal SetHTMLOptions where
  pFromJSVal = SetHTMLOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal SetHTMLOptions where
  toJSVal = return . unSetHTMLOptions
  {-# INLINE toJSVal #-}

instance FromJSVal SetHTMLOptions where
  fromJSVal v = fmap SetHTMLOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SetHTMLOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SetHTMLOptions where
  makeObject = makeObject . unSetHTMLOptions


instance IsGObject SetHTMLOptions where
  typeGType _ = gTypeSetHTMLOptions
  {-# INLINE typeGType #-}

noSetHTMLOptions :: Maybe SetHTMLOptions
noSetHTMLOptions = Nothing
{-# INLINE noSetHTMLOptions #-}

gTypeSetHTMLOptions :: JSM GType
gTypeSetHTMLOptions = GType . Object <$> jsg "Object"

-- | Dictionary SetHTMLUnsafeOptions (html)
newtype SetHTMLUnsafeOptions = SetHTMLUnsafeOptions { unSetHTMLUnsafeOptions :: JSVal }

instance PToJSVal SetHTMLUnsafeOptions where
  pToJSVal = unSetHTMLUnsafeOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal SetHTMLUnsafeOptions where
  pFromJSVal = SetHTMLUnsafeOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal SetHTMLUnsafeOptions where
  toJSVal = return . unSetHTMLUnsafeOptions
  {-# INLINE toJSVal #-}

instance FromJSVal SetHTMLUnsafeOptions where
  fromJSVal v = fmap SetHTMLUnsafeOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SetHTMLUnsafeOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SetHTMLUnsafeOptions where
  makeObject = makeObject . unSetHTMLUnsafeOptions


instance IsGObject SetHTMLUnsafeOptions where
  typeGType _ = gTypeSetHTMLUnsafeOptions
  {-# INLINE typeGType #-}

noSetHTMLUnsafeOptions :: Maybe SetHTMLUnsafeOptions
noSetHTMLUnsafeOptions = Nothing
{-# INLINE noSetHTMLUnsafeOptions #-}

gTypeSetHTMLUnsafeOptions :: JSM GType
gTypeSetHTMLUnsafeOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ShadowRoot" (dom).
newtype ShadowRoot = ShadowRoot { unShadowRoot :: JSVal }

instance PToJSVal ShadowRoot where
  pToJSVal = unShadowRoot
  {-# INLINE pToJSVal #-}

instance PFromJSVal ShadowRoot where
  pFromJSVal = ShadowRoot
  {-# INLINE pFromJSVal #-}

instance ToJSVal ShadowRoot where
  toJSVal = return . unShadowRoot
  {-# INLINE toJSVal #-}

instance FromJSVal ShadowRoot where
  fromJSVal v = fmap ShadowRoot <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ShadowRoot
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ShadowRoot where
  makeObject = makeObject . unShadowRoot

instance IsDocumentOrShadowRoot ShadowRoot
instance IsDocumentFragment ShadowRoot
instance IsNonElementParentNode ShadowRoot
instance IsParentNode ShadowRoot
instance IsNode ShadowRoot
instance IsEventTarget ShadowRoot

instance IsGObject ShadowRoot where
  typeGType _ = gTypeShadowRoot
  {-# INLINE typeGType #-}

noShadowRoot :: Maybe ShadowRoot
noShadowRoot = Nothing
{-# INLINE noShadowRoot #-}

gTypeShadowRoot :: JSM GType
gTypeShadowRoot = GType . Object <$> jsg "ShadowRoot"

-- | Dictionary ShadowRootInit (dom)
newtype ShadowRootInit = ShadowRootInit { unShadowRootInit :: JSVal }

instance PToJSVal ShadowRootInit where
  pToJSVal = unShadowRootInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal ShadowRootInit where
  pFromJSVal = ShadowRootInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal ShadowRootInit where
  toJSVal = return . unShadowRootInit
  {-# INLINE toJSVal #-}

instance FromJSVal ShadowRootInit where
  fromJSVal v = fmap ShadowRootInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ShadowRootInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ShadowRootInit where
  makeObject = makeObject . unShadowRootInit


instance IsGObject ShadowRootInit where
  typeGType _ = gTypeShadowRootInit
  {-# INLINE typeGType #-}

noShadowRootInit :: Maybe ShadowRootInit
noShadowRootInit = Nothing
{-# INLINE noShadowRootInit #-}

gTypeShadowRootInit :: JSM GType
gTypeShadowRootInit = GType . Object <$> jsg "Object"

-- | Dictionary ShareData (web-share)
newtype ShareData = ShareData { unShareData :: JSVal }

instance PToJSVal ShareData where
  pToJSVal = unShareData
  {-# INLINE pToJSVal #-}

instance PFromJSVal ShareData where
  pFromJSVal = ShareData
  {-# INLINE pFromJSVal #-}

instance ToJSVal ShareData where
  toJSVal = return . unShareData
  {-# INLINE toJSVal #-}

instance FromJSVal ShareData where
  fromJSVal v = fmap ShareData <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ShareData
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ShareData where
  makeObject = makeObject . unShareData


instance IsGObject ShareData where
  typeGType _ = gTypeShareData
  {-# INLINE typeGType #-}

noShareData :: Maybe ShareData
noShareData = Nothing
{-# INLINE noShareData #-}

gTypeShareData :: JSM GType
gTypeShareData = GType . Object <$> jsg "Object"

newtype SharedArrayBuffer = SharedArrayBuffer { unSharedArrayBuffer :: JSVal }

instance PToJSVal SharedArrayBuffer where
  pToJSVal = unSharedArrayBuffer
  {-# INLINE pToJSVal #-}

instance PFromJSVal SharedArrayBuffer where
  pFromJSVal = SharedArrayBuffer
  {-# INLINE pFromJSVal #-}

instance ToJSVal SharedArrayBuffer where
  toJSVal = return . unSharedArrayBuffer
  {-# INLINE toJSVal #-}

instance FromJSVal SharedArrayBuffer where
  fromJSVal v = fmap SharedArrayBuffer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SharedArrayBuffer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SharedArrayBuffer where
  makeObject = makeObject . unSharedArrayBuffer


instance IsGObject SharedArrayBuffer where
  typeGType _ = gTypeSharedArrayBuffer
  {-# INLINE typeGType #-}

noSharedArrayBuffer :: Maybe SharedArrayBuffer
noSharedArrayBuffer = Nothing
{-# INLINE noSharedArrayBuffer #-}

gTypeSharedArrayBuffer :: JSM GType
gTypeSharedArrayBuffer = GType . Object <$> jsg "SharedArrayBuffer"

-- | Functions for this interface are in "JSDOM.SharedWorker" (html).
newtype SharedWorker = SharedWorker { unSharedWorker :: JSVal }

instance PToJSVal SharedWorker where
  pToJSVal = unSharedWorker
  {-# INLINE pToJSVal #-}

instance PFromJSVal SharedWorker where
  pFromJSVal = SharedWorker
  {-# INLINE pFromJSVal #-}

instance ToJSVal SharedWorker where
  toJSVal = return . unSharedWorker
  {-# INLINE toJSVal #-}

instance FromJSVal SharedWorker where
  fromJSVal v = fmap SharedWorker <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SharedWorker
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SharedWorker where
  makeObject = makeObject . unSharedWorker

instance IsAbstractWorker SharedWorker
instance IsEventTarget SharedWorker

instance IsGObject SharedWorker where
  typeGType _ = gTypeSharedWorker
  {-# INLINE typeGType #-}

noSharedWorker :: Maybe SharedWorker
noSharedWorker = Nothing
{-# INLINE noSharedWorker #-}

gTypeSharedWorker :: JSM GType
gTypeSharedWorker = GType . Object <$> jsg "SharedWorker"

-- | Functions for this interface are in "JSDOM.SharedWorkerGlobalScope" (html).
newtype SharedWorkerGlobalScope = SharedWorkerGlobalScope { unSharedWorkerGlobalScope :: JSVal }

instance PToJSVal SharedWorkerGlobalScope where
  pToJSVal = unSharedWorkerGlobalScope
  {-# INLINE pToJSVal #-}

instance PFromJSVal SharedWorkerGlobalScope where
  pFromJSVal = SharedWorkerGlobalScope
  {-# INLINE pFromJSVal #-}

instance ToJSVal SharedWorkerGlobalScope where
  toJSVal = return . unSharedWorkerGlobalScope
  {-# INLINE toJSVal #-}

instance FromJSVal SharedWorkerGlobalScope where
  fromJSVal v = fmap SharedWorkerGlobalScope <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SharedWorkerGlobalScope
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SharedWorkerGlobalScope where
  makeObject = makeObject . unSharedWorkerGlobalScope

instance IsWorkerGlobalScope SharedWorkerGlobalScope
instance IsFontFaceSource SharedWorkerGlobalScope
instance IsWindowOrWorkerGlobalScope SharedWorkerGlobalScope
instance IsEventTarget SharedWorkerGlobalScope

instance IsGObject SharedWorkerGlobalScope where
  typeGType _ = gTypeSharedWorkerGlobalScope
  {-# INLINE typeGType #-}

noSharedWorkerGlobalScope :: Maybe SharedWorkerGlobalScope
noSharedWorkerGlobalScope = Nothing
{-# INLINE noSharedWorkerGlobalScope #-}

gTypeSharedWorkerGlobalScope :: JSM GType
gTypeSharedWorkerGlobalScope = GType . Object <$> jsg "SharedWorkerGlobalScope"

-- | Dictionary SharedWorkerOptions (html)
newtype SharedWorkerOptions = SharedWorkerOptions { unSharedWorkerOptions :: JSVal }

instance PToJSVal SharedWorkerOptions where
  pToJSVal = unSharedWorkerOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal SharedWorkerOptions where
  pFromJSVal = SharedWorkerOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal SharedWorkerOptions where
  toJSVal = return . unSharedWorkerOptions
  {-# INLINE toJSVal #-}

instance FromJSVal SharedWorkerOptions where
  fromJSVal v = fmap SharedWorkerOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SharedWorkerOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SharedWorkerOptions where
  makeObject = makeObject . unSharedWorkerOptions

instance IsWorkerOptions SharedWorkerOptions

instance IsGObject SharedWorkerOptions where
  typeGType _ = gTypeSharedWorkerOptions
  {-# INLINE typeGType #-}

noSharedWorkerOptions :: Maybe SharedWorkerOptions
noSharedWorkerOptions = Nothing
{-# INLINE noSharedWorkerOptions #-}

gTypeSharedWorkerOptions :: JSM GType
gTypeSharedWorkerOptions = GType . Object <$> jsg "Object"

-- | Dictionary ShowPopoverOptions (html)
newtype ShowPopoverOptions = ShowPopoverOptions { unShowPopoverOptions :: JSVal }

instance PToJSVal ShowPopoverOptions where
  pToJSVal = unShowPopoverOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ShowPopoverOptions where
  pFromJSVal = ShowPopoverOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ShowPopoverOptions where
  toJSVal = return . unShowPopoverOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ShowPopoverOptions where
  fromJSVal v = fmap ShowPopoverOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ShowPopoverOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ShowPopoverOptions where
  makeObject = makeObject . unShowPopoverOptions

class (IsGObject o) => IsShowPopoverOptions o
toShowPopoverOptions :: IsShowPopoverOptions o => o -> ShowPopoverOptions
toShowPopoverOptions = ShowPopoverOptions . coerce

instance IsShowPopoverOptions ShowPopoverOptions

instance IsGObject ShowPopoverOptions where
  typeGType _ = gTypeShowPopoverOptions
  {-# INLINE typeGType #-}

noShowPopoverOptions :: Maybe ShowPopoverOptions
noShowPopoverOptions = Nothing
{-# INLINE noShowPopoverOptions #-}

gTypeShowPopoverOptions :: JSM GType
gTypeShowPopoverOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Slottable" (dom).
newtype Slottable = Slottable { unSlottable :: JSVal }

instance PToJSVal Slottable where
  pToJSVal = unSlottable
  {-# INLINE pToJSVal #-}

instance PFromJSVal Slottable where
  pFromJSVal = Slottable
  {-# INLINE pFromJSVal #-}

instance ToJSVal Slottable where
  toJSVal = return . unSlottable
  {-# INLINE toJSVal #-}

instance FromJSVal Slottable where
  fromJSVal v = fmap Slottable <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Slottable
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Slottable where
  makeObject = makeObject . unSlottable

class (IsGObject o) => IsSlottable o
toSlottable :: IsSlottable o => o -> Slottable
toSlottable = Slottable . coerce

instance IsSlottable Slottable

instance IsGObject Slottable where
  typeGType _ = gTypeSlottable
  {-# INLINE typeGType #-}

noSlottable :: Maybe Slottable
noSlottable = Nothing
{-# INLINE noSlottable #-}

gTypeSlottable :: JSM GType
gTypeSlottable = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SourceBuffer" (media-source-2).
newtype SourceBuffer = SourceBuffer { unSourceBuffer :: JSVal }

instance PToJSVal SourceBuffer where
  pToJSVal = unSourceBuffer
  {-# INLINE pToJSVal #-}

instance PFromJSVal SourceBuffer where
  pFromJSVal = SourceBuffer
  {-# INLINE pFromJSVal #-}

instance ToJSVal SourceBuffer where
  toJSVal = return . unSourceBuffer
  {-# INLINE toJSVal #-}

instance FromJSVal SourceBuffer where
  fromJSVal v = fmap SourceBuffer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SourceBuffer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SourceBuffer where
  makeObject = makeObject . unSourceBuffer

instance IsEventTarget SourceBuffer

instance IsGObject SourceBuffer where
  typeGType _ = gTypeSourceBuffer
  {-# INLINE typeGType #-}

noSourceBuffer :: Maybe SourceBuffer
noSourceBuffer = Nothing
{-# INLINE noSourceBuffer #-}

gTypeSourceBuffer :: JSM GType
gTypeSourceBuffer = GType . Object <$> jsg "SourceBuffer"

-- | Functions for this interface are in "JSDOM.SourceBufferList" (media-source-2).
newtype SourceBufferList = SourceBufferList { unSourceBufferList :: JSVal }

instance PToJSVal SourceBufferList where
  pToJSVal = unSourceBufferList
  {-# INLINE pToJSVal #-}

instance PFromJSVal SourceBufferList where
  pFromJSVal = SourceBufferList
  {-# INLINE pFromJSVal #-}

instance ToJSVal SourceBufferList where
  toJSVal = return . unSourceBufferList
  {-# INLINE toJSVal #-}

instance FromJSVal SourceBufferList where
  fromJSVal v = fmap SourceBufferList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SourceBufferList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SourceBufferList where
  makeObject = makeObject . unSourceBufferList

instance IsEventTarget SourceBufferList

instance IsGObject SourceBufferList where
  typeGType _ = gTypeSourceBufferList
  {-# INLINE typeGType #-}

noSourceBufferList :: Maybe SourceBufferList
noSourceBufferList = Nothing
{-# INLINE noSourceBufferList #-}

gTypeSourceBufferList :: JSM GType
gTypeSourceBufferList = GType . Object <$> jsg "SourceBufferList"

-- | Functions for this interface are in "JSDOM.SpeechGrammar" (speech-api).
newtype SpeechGrammar = SpeechGrammar { unSpeechGrammar :: JSVal }

instance PToJSVal SpeechGrammar where
  pToJSVal = unSpeechGrammar
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechGrammar where
  pFromJSVal = SpeechGrammar
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechGrammar where
  toJSVal = return . unSpeechGrammar
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechGrammar where
  fromJSVal v = fmap SpeechGrammar <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechGrammar
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechGrammar where
  makeObject = makeObject . unSpeechGrammar


instance IsGObject SpeechGrammar where
  typeGType _ = gTypeSpeechGrammar
  {-# INLINE typeGType #-}

noSpeechGrammar :: Maybe SpeechGrammar
noSpeechGrammar = Nothing
{-# INLINE noSpeechGrammar #-}

gTypeSpeechGrammar :: JSM GType
gTypeSpeechGrammar = GType . Object <$> jsg "SpeechGrammar"

-- | Functions for this interface are in "JSDOM.SpeechGrammarList" (speech-api).
newtype SpeechGrammarList = SpeechGrammarList { unSpeechGrammarList :: JSVal }

instance PToJSVal SpeechGrammarList where
  pToJSVal = unSpeechGrammarList
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechGrammarList where
  pFromJSVal = SpeechGrammarList
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechGrammarList where
  toJSVal = return . unSpeechGrammarList
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechGrammarList where
  fromJSVal v = fmap SpeechGrammarList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechGrammarList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechGrammarList where
  makeObject = makeObject . unSpeechGrammarList


instance IsGObject SpeechGrammarList where
  typeGType _ = gTypeSpeechGrammarList
  {-# INLINE typeGType #-}

noSpeechGrammarList :: Maybe SpeechGrammarList
noSpeechGrammarList = Nothing
{-# INLINE noSpeechGrammarList #-}

gTypeSpeechGrammarList :: JSM GType
gTypeSpeechGrammarList = GType . Object <$> jsg "SpeechGrammarList"

-- | Functions for this interface are in "JSDOM.SpeechRecognition" (speech-api).
newtype SpeechRecognition = SpeechRecognition { unSpeechRecognition :: JSVal }

instance PToJSVal SpeechRecognition where
  pToJSVal = unSpeechRecognition
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechRecognition where
  pFromJSVal = SpeechRecognition
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechRecognition where
  toJSVal = return . unSpeechRecognition
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechRecognition where
  fromJSVal v = fmap SpeechRecognition <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechRecognition
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechRecognition where
  makeObject = makeObject . unSpeechRecognition

instance IsEventTarget SpeechRecognition

instance IsGObject SpeechRecognition where
  typeGType _ = gTypeSpeechRecognition
  {-# INLINE typeGType #-}

noSpeechRecognition :: Maybe SpeechRecognition
noSpeechRecognition = Nothing
{-# INLINE noSpeechRecognition #-}

gTypeSpeechRecognition :: JSM GType
gTypeSpeechRecognition = GType . Object <$> jsg "SpeechRecognition"

-- | Functions for this interface are in "JSDOM.SpeechRecognitionAlternative" (speech-api).
newtype SpeechRecognitionAlternative = SpeechRecognitionAlternative { unSpeechRecognitionAlternative :: JSVal }

instance PToJSVal SpeechRecognitionAlternative where
  pToJSVal = unSpeechRecognitionAlternative
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechRecognitionAlternative where
  pFromJSVal = SpeechRecognitionAlternative
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechRecognitionAlternative where
  toJSVal = return . unSpeechRecognitionAlternative
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechRecognitionAlternative where
  fromJSVal v = fmap SpeechRecognitionAlternative <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechRecognitionAlternative
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechRecognitionAlternative where
  makeObject = makeObject . unSpeechRecognitionAlternative


instance IsGObject SpeechRecognitionAlternative where
  typeGType _ = gTypeSpeechRecognitionAlternative
  {-# INLINE typeGType #-}

noSpeechRecognitionAlternative :: Maybe SpeechRecognitionAlternative
noSpeechRecognitionAlternative = Nothing
{-# INLINE noSpeechRecognitionAlternative #-}

gTypeSpeechRecognitionAlternative :: JSM GType
gTypeSpeechRecognitionAlternative = GType . Object <$> jsg "SpeechRecognitionAlternative"

-- | Functions for this interface are in "JSDOM.SpeechRecognitionErrorEvent" (speech-api).
newtype SpeechRecognitionErrorEvent = SpeechRecognitionErrorEvent { unSpeechRecognitionErrorEvent :: JSVal }

instance PToJSVal SpeechRecognitionErrorEvent where
  pToJSVal = unSpeechRecognitionErrorEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechRecognitionErrorEvent where
  pFromJSVal = SpeechRecognitionErrorEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechRecognitionErrorEvent where
  toJSVal = return . unSpeechRecognitionErrorEvent
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechRecognitionErrorEvent where
  fromJSVal v = fmap SpeechRecognitionErrorEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechRecognitionErrorEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechRecognitionErrorEvent where
  makeObject = makeObject . unSpeechRecognitionErrorEvent

instance IsEvent SpeechRecognitionErrorEvent

instance IsGObject SpeechRecognitionErrorEvent where
  typeGType _ = gTypeSpeechRecognitionErrorEvent
  {-# INLINE typeGType #-}

noSpeechRecognitionErrorEvent :: Maybe SpeechRecognitionErrorEvent
noSpeechRecognitionErrorEvent = Nothing
{-# INLINE noSpeechRecognitionErrorEvent #-}

gTypeSpeechRecognitionErrorEvent :: JSM GType
gTypeSpeechRecognitionErrorEvent = GType . Object <$> jsg "SpeechRecognitionErrorEvent"

-- | Dictionary SpeechRecognitionErrorEventInit (speech-api)
newtype SpeechRecognitionErrorEventInit = SpeechRecognitionErrorEventInit { unSpeechRecognitionErrorEventInit :: JSVal }

instance PToJSVal SpeechRecognitionErrorEventInit where
  pToJSVal = unSpeechRecognitionErrorEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechRecognitionErrorEventInit where
  pFromJSVal = SpeechRecognitionErrorEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechRecognitionErrorEventInit where
  toJSVal = return . unSpeechRecognitionErrorEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechRecognitionErrorEventInit where
  fromJSVal v = fmap SpeechRecognitionErrorEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechRecognitionErrorEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechRecognitionErrorEventInit where
  makeObject = makeObject . unSpeechRecognitionErrorEventInit

instance IsEventInit SpeechRecognitionErrorEventInit

instance IsGObject SpeechRecognitionErrorEventInit where
  typeGType _ = gTypeSpeechRecognitionErrorEventInit
  {-# INLINE typeGType #-}

noSpeechRecognitionErrorEventInit :: Maybe SpeechRecognitionErrorEventInit
noSpeechRecognitionErrorEventInit = Nothing
{-# INLINE noSpeechRecognitionErrorEventInit #-}

gTypeSpeechRecognitionErrorEventInit :: JSM GType
gTypeSpeechRecognitionErrorEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SpeechRecognitionEvent" (speech-api).
newtype SpeechRecognitionEvent = SpeechRecognitionEvent { unSpeechRecognitionEvent :: JSVal }

instance PToJSVal SpeechRecognitionEvent where
  pToJSVal = unSpeechRecognitionEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechRecognitionEvent where
  pFromJSVal = SpeechRecognitionEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechRecognitionEvent where
  toJSVal = return . unSpeechRecognitionEvent
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechRecognitionEvent where
  fromJSVal v = fmap SpeechRecognitionEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechRecognitionEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechRecognitionEvent where
  makeObject = makeObject . unSpeechRecognitionEvent

instance IsEvent SpeechRecognitionEvent

instance IsGObject SpeechRecognitionEvent where
  typeGType _ = gTypeSpeechRecognitionEvent
  {-# INLINE typeGType #-}

noSpeechRecognitionEvent :: Maybe SpeechRecognitionEvent
noSpeechRecognitionEvent = Nothing
{-# INLINE noSpeechRecognitionEvent #-}

gTypeSpeechRecognitionEvent :: JSM GType
gTypeSpeechRecognitionEvent = GType . Object <$> jsg "SpeechRecognitionEvent"

-- | Dictionary SpeechRecognitionEventInit (speech-api)
newtype SpeechRecognitionEventInit = SpeechRecognitionEventInit { unSpeechRecognitionEventInit :: JSVal }

instance PToJSVal SpeechRecognitionEventInit where
  pToJSVal = unSpeechRecognitionEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechRecognitionEventInit where
  pFromJSVal = SpeechRecognitionEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechRecognitionEventInit where
  toJSVal = return . unSpeechRecognitionEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechRecognitionEventInit where
  fromJSVal v = fmap SpeechRecognitionEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechRecognitionEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechRecognitionEventInit where
  makeObject = makeObject . unSpeechRecognitionEventInit

instance IsEventInit SpeechRecognitionEventInit

instance IsGObject SpeechRecognitionEventInit where
  typeGType _ = gTypeSpeechRecognitionEventInit
  {-# INLINE typeGType #-}

noSpeechRecognitionEventInit :: Maybe SpeechRecognitionEventInit
noSpeechRecognitionEventInit = Nothing
{-# INLINE noSpeechRecognitionEventInit #-}

gTypeSpeechRecognitionEventInit :: JSM GType
gTypeSpeechRecognitionEventInit = GType . Object <$> jsg "Object"

-- | Dictionary SpeechRecognitionOptions (speech-api)
newtype SpeechRecognitionOptions = SpeechRecognitionOptions { unSpeechRecognitionOptions :: JSVal }

instance PToJSVal SpeechRecognitionOptions where
  pToJSVal = unSpeechRecognitionOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechRecognitionOptions where
  pFromJSVal = SpeechRecognitionOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechRecognitionOptions where
  toJSVal = return . unSpeechRecognitionOptions
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechRecognitionOptions where
  fromJSVal v = fmap SpeechRecognitionOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechRecognitionOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechRecognitionOptions where
  makeObject = makeObject . unSpeechRecognitionOptions


instance IsGObject SpeechRecognitionOptions where
  typeGType _ = gTypeSpeechRecognitionOptions
  {-# INLINE typeGType #-}

noSpeechRecognitionOptions :: Maybe SpeechRecognitionOptions
noSpeechRecognitionOptions = Nothing
{-# INLINE noSpeechRecognitionOptions #-}

gTypeSpeechRecognitionOptions :: JSM GType
gTypeSpeechRecognitionOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SpeechRecognitionPhrase" (speech-api).
newtype SpeechRecognitionPhrase = SpeechRecognitionPhrase { unSpeechRecognitionPhrase :: JSVal }

instance PToJSVal SpeechRecognitionPhrase where
  pToJSVal = unSpeechRecognitionPhrase
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechRecognitionPhrase where
  pFromJSVal = SpeechRecognitionPhrase
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechRecognitionPhrase where
  toJSVal = return . unSpeechRecognitionPhrase
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechRecognitionPhrase where
  fromJSVal v = fmap SpeechRecognitionPhrase <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechRecognitionPhrase
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechRecognitionPhrase where
  makeObject = makeObject . unSpeechRecognitionPhrase


instance IsGObject SpeechRecognitionPhrase where
  typeGType _ = gTypeSpeechRecognitionPhrase
  {-# INLINE typeGType #-}

noSpeechRecognitionPhrase :: Maybe SpeechRecognitionPhrase
noSpeechRecognitionPhrase = Nothing
{-# INLINE noSpeechRecognitionPhrase #-}

gTypeSpeechRecognitionPhrase :: JSM GType
gTypeSpeechRecognitionPhrase = GType . Object <$> jsg "SpeechRecognitionPhrase"

-- | Functions for this interface are in "JSDOM.SpeechRecognitionResult" (speech-api).
newtype SpeechRecognitionResult = SpeechRecognitionResult { unSpeechRecognitionResult :: JSVal }

instance PToJSVal SpeechRecognitionResult where
  pToJSVal = unSpeechRecognitionResult
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechRecognitionResult where
  pFromJSVal = SpeechRecognitionResult
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechRecognitionResult where
  toJSVal = return . unSpeechRecognitionResult
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechRecognitionResult where
  fromJSVal v = fmap SpeechRecognitionResult <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechRecognitionResult
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechRecognitionResult where
  makeObject = makeObject . unSpeechRecognitionResult


instance IsGObject SpeechRecognitionResult where
  typeGType _ = gTypeSpeechRecognitionResult
  {-# INLINE typeGType #-}

noSpeechRecognitionResult :: Maybe SpeechRecognitionResult
noSpeechRecognitionResult = Nothing
{-# INLINE noSpeechRecognitionResult #-}

gTypeSpeechRecognitionResult :: JSM GType
gTypeSpeechRecognitionResult = GType . Object <$> jsg "SpeechRecognitionResult"

-- | Functions for this interface are in "JSDOM.SpeechRecognitionResultList" (speech-api).
newtype SpeechRecognitionResultList = SpeechRecognitionResultList { unSpeechRecognitionResultList :: JSVal }

instance PToJSVal SpeechRecognitionResultList where
  pToJSVal = unSpeechRecognitionResultList
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechRecognitionResultList where
  pFromJSVal = SpeechRecognitionResultList
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechRecognitionResultList where
  toJSVal = return . unSpeechRecognitionResultList
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechRecognitionResultList where
  fromJSVal v = fmap SpeechRecognitionResultList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechRecognitionResultList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechRecognitionResultList where
  makeObject = makeObject . unSpeechRecognitionResultList


instance IsGObject SpeechRecognitionResultList where
  typeGType _ = gTypeSpeechRecognitionResultList
  {-# INLINE typeGType #-}

noSpeechRecognitionResultList :: Maybe SpeechRecognitionResultList
noSpeechRecognitionResultList = Nothing
{-# INLINE noSpeechRecognitionResultList #-}

gTypeSpeechRecognitionResultList :: JSM GType
gTypeSpeechRecognitionResultList = GType . Object <$> jsg "SpeechRecognitionResultList"

-- | Functions for this interface are in "JSDOM.SpeechSynthesis" (speech-api).
newtype SpeechSynthesis = SpeechSynthesis { unSpeechSynthesis :: JSVal }

instance PToJSVal SpeechSynthesis where
  pToJSVal = unSpeechSynthesis
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechSynthesis where
  pFromJSVal = SpeechSynthesis
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechSynthesis where
  toJSVal = return . unSpeechSynthesis
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechSynthesis where
  fromJSVal v = fmap SpeechSynthesis <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechSynthesis
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechSynthesis where
  makeObject = makeObject . unSpeechSynthesis

instance IsEventTarget SpeechSynthesis

instance IsGObject SpeechSynthesis where
  typeGType _ = gTypeSpeechSynthesis
  {-# INLINE typeGType #-}

noSpeechSynthesis :: Maybe SpeechSynthesis
noSpeechSynthesis = Nothing
{-# INLINE noSpeechSynthesis #-}

gTypeSpeechSynthesis :: JSM GType
gTypeSpeechSynthesis = GType . Object <$> jsg "SpeechSynthesis"

-- | Functions for this interface are in "JSDOM.SpeechSynthesisErrorEvent" (speech-api).
newtype SpeechSynthesisErrorEvent = SpeechSynthesisErrorEvent { unSpeechSynthesisErrorEvent :: JSVal }

instance PToJSVal SpeechSynthesisErrorEvent where
  pToJSVal = unSpeechSynthesisErrorEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechSynthesisErrorEvent where
  pFromJSVal = SpeechSynthesisErrorEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechSynthesisErrorEvent where
  toJSVal = return . unSpeechSynthesisErrorEvent
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechSynthesisErrorEvent where
  fromJSVal v = fmap SpeechSynthesisErrorEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechSynthesisErrorEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechSynthesisErrorEvent where
  makeObject = makeObject . unSpeechSynthesisErrorEvent

instance IsSpeechSynthesisEvent SpeechSynthesisErrorEvent
instance IsEvent SpeechSynthesisErrorEvent

instance IsGObject SpeechSynthesisErrorEvent where
  typeGType _ = gTypeSpeechSynthesisErrorEvent
  {-# INLINE typeGType #-}

noSpeechSynthesisErrorEvent :: Maybe SpeechSynthesisErrorEvent
noSpeechSynthesisErrorEvent = Nothing
{-# INLINE noSpeechSynthesisErrorEvent #-}

gTypeSpeechSynthesisErrorEvent :: JSM GType
gTypeSpeechSynthesisErrorEvent = GType . Object <$> jsg "SpeechSynthesisErrorEvent"

-- | Dictionary SpeechSynthesisErrorEventInit (speech-api)
newtype SpeechSynthesisErrorEventInit = SpeechSynthesisErrorEventInit { unSpeechSynthesisErrorEventInit :: JSVal }

instance PToJSVal SpeechSynthesisErrorEventInit where
  pToJSVal = unSpeechSynthesisErrorEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechSynthesisErrorEventInit where
  pFromJSVal = SpeechSynthesisErrorEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechSynthesisErrorEventInit where
  toJSVal = return . unSpeechSynthesisErrorEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechSynthesisErrorEventInit where
  fromJSVal v = fmap SpeechSynthesisErrorEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechSynthesisErrorEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechSynthesisErrorEventInit where
  makeObject = makeObject . unSpeechSynthesisErrorEventInit

instance IsSpeechSynthesisEventInit SpeechSynthesisErrorEventInit
instance IsEventInit SpeechSynthesisErrorEventInit

instance IsGObject SpeechSynthesisErrorEventInit where
  typeGType _ = gTypeSpeechSynthesisErrorEventInit
  {-# INLINE typeGType #-}

noSpeechSynthesisErrorEventInit :: Maybe SpeechSynthesisErrorEventInit
noSpeechSynthesisErrorEventInit = Nothing
{-# INLINE noSpeechSynthesisErrorEventInit #-}

gTypeSpeechSynthesisErrorEventInit :: JSM GType
gTypeSpeechSynthesisErrorEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SpeechSynthesisEvent" (speech-api).
newtype SpeechSynthesisEvent = SpeechSynthesisEvent { unSpeechSynthesisEvent :: JSVal }

instance PToJSVal SpeechSynthesisEvent where
  pToJSVal = unSpeechSynthesisEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechSynthesisEvent where
  pFromJSVal = SpeechSynthesisEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechSynthesisEvent where
  toJSVal = return . unSpeechSynthesisEvent
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechSynthesisEvent where
  fromJSVal v = fmap SpeechSynthesisEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechSynthesisEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechSynthesisEvent where
  makeObject = makeObject . unSpeechSynthesisEvent

class (IsEvent o, IsGObject o) => IsSpeechSynthesisEvent o
toSpeechSynthesisEvent :: IsSpeechSynthesisEvent o => o -> SpeechSynthesisEvent
toSpeechSynthesisEvent = SpeechSynthesisEvent . coerce

instance IsSpeechSynthesisEvent SpeechSynthesisEvent
instance IsEvent SpeechSynthesisEvent

instance IsGObject SpeechSynthesisEvent where
  typeGType _ = gTypeSpeechSynthesisEvent
  {-# INLINE typeGType #-}

noSpeechSynthesisEvent :: Maybe SpeechSynthesisEvent
noSpeechSynthesisEvent = Nothing
{-# INLINE noSpeechSynthesisEvent #-}

gTypeSpeechSynthesisEvent :: JSM GType
gTypeSpeechSynthesisEvent = GType . Object <$> jsg "SpeechSynthesisEvent"

-- | Dictionary SpeechSynthesisEventInit (speech-api)
newtype SpeechSynthesisEventInit = SpeechSynthesisEventInit { unSpeechSynthesisEventInit :: JSVal }

instance PToJSVal SpeechSynthesisEventInit where
  pToJSVal = unSpeechSynthesisEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechSynthesisEventInit where
  pFromJSVal = SpeechSynthesisEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechSynthesisEventInit where
  toJSVal = return . unSpeechSynthesisEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechSynthesisEventInit where
  fromJSVal v = fmap SpeechSynthesisEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechSynthesisEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechSynthesisEventInit where
  makeObject = makeObject . unSpeechSynthesisEventInit

class (IsEventInit o, IsGObject o) => IsSpeechSynthesisEventInit o
toSpeechSynthesisEventInit :: IsSpeechSynthesisEventInit o => o -> SpeechSynthesisEventInit
toSpeechSynthesisEventInit = SpeechSynthesisEventInit . coerce

instance IsSpeechSynthesisEventInit SpeechSynthesisEventInit
instance IsEventInit SpeechSynthesisEventInit

instance IsGObject SpeechSynthesisEventInit where
  typeGType _ = gTypeSpeechSynthesisEventInit
  {-# INLINE typeGType #-}

noSpeechSynthesisEventInit :: Maybe SpeechSynthesisEventInit
noSpeechSynthesisEventInit = Nothing
{-# INLINE noSpeechSynthesisEventInit #-}

gTypeSpeechSynthesisEventInit :: JSM GType
gTypeSpeechSynthesisEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SpeechSynthesisUtterance" (speech-api).
newtype SpeechSynthesisUtterance = SpeechSynthesisUtterance { unSpeechSynthesisUtterance :: JSVal }

instance PToJSVal SpeechSynthesisUtterance where
  pToJSVal = unSpeechSynthesisUtterance
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechSynthesisUtterance where
  pFromJSVal = SpeechSynthesisUtterance
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechSynthesisUtterance where
  toJSVal = return . unSpeechSynthesisUtterance
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechSynthesisUtterance where
  fromJSVal v = fmap SpeechSynthesisUtterance <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechSynthesisUtterance
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechSynthesisUtterance where
  makeObject = makeObject . unSpeechSynthesisUtterance

instance IsEventTarget SpeechSynthesisUtterance

instance IsGObject SpeechSynthesisUtterance where
  typeGType _ = gTypeSpeechSynthesisUtterance
  {-# INLINE typeGType #-}

noSpeechSynthesisUtterance :: Maybe SpeechSynthesisUtterance
noSpeechSynthesisUtterance = Nothing
{-# INLINE noSpeechSynthesisUtterance #-}

gTypeSpeechSynthesisUtterance :: JSM GType
gTypeSpeechSynthesisUtterance = GType . Object <$> jsg "SpeechSynthesisUtterance"

-- | Functions for this interface are in "JSDOM.SpeechSynthesisVoice" (speech-api).
newtype SpeechSynthesisVoice = SpeechSynthesisVoice { unSpeechSynthesisVoice :: JSVal }

instance PToJSVal SpeechSynthesisVoice where
  pToJSVal = unSpeechSynthesisVoice
  {-# INLINE pToJSVal #-}

instance PFromJSVal SpeechSynthesisVoice where
  pFromJSVal = SpeechSynthesisVoice
  {-# INLINE pFromJSVal #-}

instance ToJSVal SpeechSynthesisVoice where
  toJSVal = return . unSpeechSynthesisVoice
  {-# INLINE toJSVal #-}

instance FromJSVal SpeechSynthesisVoice where
  fromJSVal v = fmap SpeechSynthesisVoice <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SpeechSynthesisVoice
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SpeechSynthesisVoice where
  makeObject = makeObject . unSpeechSynthesisVoice


instance IsGObject SpeechSynthesisVoice where
  typeGType _ = gTypeSpeechSynthesisVoice
  {-# INLINE typeGType #-}

noSpeechSynthesisVoice :: Maybe SpeechSynthesisVoice
noSpeechSynthesisVoice = Nothing
{-# INLINE noSpeechSynthesisVoice #-}

gTypeSpeechSynthesisVoice :: JSM GType
gTypeSpeechSynthesisVoice = GType . Object <$> jsg "SpeechSynthesisVoice"

-- | Dictionary StartViewTransitionOptions (css-view-transitions-2)
newtype StartViewTransitionOptions = StartViewTransitionOptions { unStartViewTransitionOptions :: JSVal }

instance PToJSVal StartViewTransitionOptions where
  pToJSVal = unStartViewTransitionOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal StartViewTransitionOptions where
  pFromJSVal = StartViewTransitionOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal StartViewTransitionOptions where
  toJSVal = return . unStartViewTransitionOptions
  {-# INLINE toJSVal #-}

instance FromJSVal StartViewTransitionOptions where
  fromJSVal v = fmap StartViewTransitionOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StartViewTransitionOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StartViewTransitionOptions where
  makeObject = makeObject . unStartViewTransitionOptions


instance IsGObject StartViewTransitionOptions where
  typeGType _ = gTypeStartViewTransitionOptions
  {-# INLINE typeGType #-}

noStartViewTransitionOptions :: Maybe StartViewTransitionOptions
noStartViewTransitionOptions = Nothing
{-# INLINE noStartViewTransitionOptions #-}

gTypeStartViewTransitionOptions :: JSM GType
gTypeStartViewTransitionOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.StaticRange" (dom).
newtype StaticRange = StaticRange { unStaticRange :: JSVal }

instance PToJSVal StaticRange where
  pToJSVal = unStaticRange
  {-# INLINE pToJSVal #-}

instance PFromJSVal StaticRange where
  pFromJSVal = StaticRange
  {-# INLINE pFromJSVal #-}

instance ToJSVal StaticRange where
  toJSVal = return . unStaticRange
  {-# INLINE toJSVal #-}

instance FromJSVal StaticRange where
  fromJSVal v = fmap StaticRange <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StaticRange
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StaticRange where
  makeObject = makeObject . unStaticRange

instance IsAbstractRange StaticRange

instance IsGObject StaticRange where
  typeGType _ = gTypeStaticRange
  {-# INLINE typeGType #-}

noStaticRange :: Maybe StaticRange
noStaticRange = Nothing
{-# INLINE noStaticRange #-}

gTypeStaticRange :: JSM GType
gTypeStaticRange = GType . Object <$> jsg "StaticRange"

-- | Dictionary StaticRangeInit (dom)
newtype StaticRangeInit = StaticRangeInit { unStaticRangeInit :: JSVal }

instance PToJSVal StaticRangeInit where
  pToJSVal = unStaticRangeInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal StaticRangeInit where
  pFromJSVal = StaticRangeInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal StaticRangeInit where
  toJSVal = return . unStaticRangeInit
  {-# INLINE toJSVal #-}

instance FromJSVal StaticRangeInit where
  fromJSVal v = fmap StaticRangeInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StaticRangeInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StaticRangeInit where
  makeObject = makeObject . unStaticRangeInit


instance IsGObject StaticRangeInit where
  typeGType _ = gTypeStaticRangeInit
  {-# INLINE typeGType #-}

noStaticRangeInit :: Maybe StaticRangeInit
noStaticRangeInit = Nothing
{-# INLINE noStaticRangeInit #-}

gTypeStaticRangeInit :: JSM GType
gTypeStaticRangeInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.StereoPannerNode" (webaudio-1.1).
newtype StereoPannerNode = StereoPannerNode { unStereoPannerNode :: JSVal }

instance PToJSVal StereoPannerNode where
  pToJSVal = unStereoPannerNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal StereoPannerNode where
  pFromJSVal = StereoPannerNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal StereoPannerNode where
  toJSVal = return . unStereoPannerNode
  {-# INLINE toJSVal #-}

instance FromJSVal StereoPannerNode where
  fromJSVal v = fmap StereoPannerNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StereoPannerNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StereoPannerNode where
  makeObject = makeObject . unStereoPannerNode

instance IsAudioNode StereoPannerNode
instance IsEventTarget StereoPannerNode

instance IsGObject StereoPannerNode where
  typeGType _ = gTypeStereoPannerNode
  {-# INLINE typeGType #-}

noStereoPannerNode :: Maybe StereoPannerNode
noStereoPannerNode = Nothing
{-# INLINE noStereoPannerNode #-}

gTypeStereoPannerNode :: JSM GType
gTypeStereoPannerNode = GType . Object <$> jsg "StereoPannerNode"

-- | Dictionary StereoPannerOptions (webaudio-1.1)
newtype StereoPannerOptions = StereoPannerOptions { unStereoPannerOptions :: JSVal }

instance PToJSVal StereoPannerOptions where
  pToJSVal = unStereoPannerOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal StereoPannerOptions where
  pFromJSVal = StereoPannerOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal StereoPannerOptions where
  toJSVal = return . unStereoPannerOptions
  {-# INLINE toJSVal #-}

instance FromJSVal StereoPannerOptions where
  fromJSVal v = fmap StereoPannerOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StereoPannerOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StereoPannerOptions where
  makeObject = makeObject . unStereoPannerOptions

instance IsAudioNodeOptions StereoPannerOptions

instance IsGObject StereoPannerOptions where
  typeGType _ = gTypeStereoPannerOptions
  {-# INLINE typeGType #-}

noStereoPannerOptions :: Maybe StereoPannerOptions
noStereoPannerOptions = Nothing
{-# INLINE noStereoPannerOptions #-}

gTypeStereoPannerOptions :: JSM GType
gTypeStereoPannerOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Storage" (html).
newtype Storage = Storage { unStorage :: JSVal }

instance PToJSVal Storage where
  pToJSVal = unStorage
  {-# INLINE pToJSVal #-}

instance PFromJSVal Storage where
  pFromJSVal = Storage
  {-# INLINE pFromJSVal #-}

instance ToJSVal Storage where
  toJSVal = return . unStorage
  {-# INLINE toJSVal #-}

instance FromJSVal Storage where
  fromJSVal v = fmap Storage <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Storage
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Storage where
  makeObject = makeObject . unStorage


instance IsGObject Storage where
  typeGType _ = gTypeStorage
  {-# INLINE typeGType #-}

noStorage :: Maybe Storage
noStorage = Nothing
{-# INLINE noStorage #-}

gTypeStorage :: JSM GType
gTypeStorage = GType . Object <$> jsg "Storage"

-- | Dictionary StorageEstimate (storage)
newtype StorageEstimate = StorageEstimate { unStorageEstimate :: JSVal }

instance PToJSVal StorageEstimate where
  pToJSVal = unStorageEstimate
  {-# INLINE pToJSVal #-}

instance PFromJSVal StorageEstimate where
  pFromJSVal = StorageEstimate
  {-# INLINE pFromJSVal #-}

instance ToJSVal StorageEstimate where
  toJSVal = return . unStorageEstimate
  {-# INLINE toJSVal #-}

instance FromJSVal StorageEstimate where
  fromJSVal v = fmap StorageEstimate <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StorageEstimate
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StorageEstimate where
  makeObject = makeObject . unStorageEstimate


instance IsGObject StorageEstimate where
  typeGType _ = gTypeStorageEstimate
  {-# INLINE typeGType #-}

noStorageEstimate :: Maybe StorageEstimate
noStorageEstimate = Nothing
{-# INLINE noStorageEstimate #-}

gTypeStorageEstimate :: JSM GType
gTypeStorageEstimate = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.StorageEvent" (html).
newtype StorageEvent = StorageEvent { unStorageEvent :: JSVal }

instance PToJSVal StorageEvent where
  pToJSVal = unStorageEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal StorageEvent where
  pFromJSVal = StorageEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal StorageEvent where
  toJSVal = return . unStorageEvent
  {-# INLINE toJSVal #-}

instance FromJSVal StorageEvent where
  fromJSVal v = fmap StorageEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StorageEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StorageEvent where
  makeObject = makeObject . unStorageEvent

instance IsEvent StorageEvent

instance IsGObject StorageEvent where
  typeGType _ = gTypeStorageEvent
  {-# INLINE typeGType #-}

noStorageEvent :: Maybe StorageEvent
noStorageEvent = Nothing
{-# INLINE noStorageEvent #-}

gTypeStorageEvent :: JSM GType
gTypeStorageEvent = GType . Object <$> jsg "StorageEvent"

-- | Dictionary StorageEventInit (html)
newtype StorageEventInit = StorageEventInit { unStorageEventInit :: JSVal }

instance PToJSVal StorageEventInit where
  pToJSVal = unStorageEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal StorageEventInit where
  pFromJSVal = StorageEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal StorageEventInit where
  toJSVal = return . unStorageEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal StorageEventInit where
  fromJSVal v = fmap StorageEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StorageEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StorageEventInit where
  makeObject = makeObject . unStorageEventInit

instance IsEventInit StorageEventInit

instance IsGObject StorageEventInit where
  typeGType _ = gTypeStorageEventInit
  {-# INLINE typeGType #-}

noStorageEventInit :: Maybe StorageEventInit
noStorageEventInit = Nothing
{-# INLINE noStorageEventInit #-}

gTypeStorageEventInit :: JSM GType
gTypeStorageEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.StorageManager" (storage).
newtype StorageManager = StorageManager { unStorageManager :: JSVal }

instance PToJSVal StorageManager where
  pToJSVal = unStorageManager
  {-# INLINE pToJSVal #-}

instance PFromJSVal StorageManager where
  pFromJSVal = StorageManager
  {-# INLINE pFromJSVal #-}

instance ToJSVal StorageManager where
  toJSVal = return . unStorageManager
  {-# INLINE toJSVal #-}

instance FromJSVal StorageManager where
  fromJSVal v = fmap StorageManager <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StorageManager
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StorageManager where
  makeObject = makeObject . unStorageManager


instance IsGObject StorageManager where
  typeGType _ = gTypeStorageManager
  {-# INLINE typeGType #-}

noStorageManager :: Maybe StorageManager
noStorageManager = Nothing
{-# INLINE noStorageManager #-}

gTypeStorageManager :: JSM GType
gTypeStorageManager = GType . Object <$> jsg "StorageManager"

-- | Dictionary StreamPipeOptions (streams)
newtype StreamPipeOptions = StreamPipeOptions { unStreamPipeOptions :: JSVal }

instance PToJSVal StreamPipeOptions where
  pToJSVal = unStreamPipeOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal StreamPipeOptions where
  pFromJSVal = StreamPipeOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal StreamPipeOptions where
  toJSVal = return . unStreamPipeOptions
  {-# INLINE toJSVal #-}

instance FromJSVal StreamPipeOptions where
  fromJSVal v = fmap StreamPipeOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StreamPipeOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StreamPipeOptions where
  makeObject = makeObject . unStreamPipeOptions


instance IsGObject StreamPipeOptions where
  typeGType _ = gTypeStreamPipeOptions
  {-# INLINE typeGType #-}

noStreamPipeOptions :: Maybe StreamPipeOptions
noStreamPipeOptions = Nothing
{-# INLINE noStreamPipeOptions #-}

gTypeStreamPipeOptions :: JSM GType
gTypeStreamPipeOptions = GType . Object <$> jsg "Object"

-- | Dictionary StructuredSerializeOptions (html)
newtype StructuredSerializeOptions = StructuredSerializeOptions { unStructuredSerializeOptions :: JSVal }

instance PToJSVal StructuredSerializeOptions where
  pToJSVal = unStructuredSerializeOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal StructuredSerializeOptions where
  pFromJSVal = StructuredSerializeOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal StructuredSerializeOptions where
  toJSVal = return . unStructuredSerializeOptions
  {-# INLINE toJSVal #-}

instance FromJSVal StructuredSerializeOptions where
  fromJSVal v = fmap StructuredSerializeOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StructuredSerializeOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StructuredSerializeOptions where
  makeObject = makeObject . unStructuredSerializeOptions

class (IsGObject o) => IsStructuredSerializeOptions o
toStructuredSerializeOptions :: IsStructuredSerializeOptions o => o -> StructuredSerializeOptions
toStructuredSerializeOptions = StructuredSerializeOptions . coerce

instance IsStructuredSerializeOptions StructuredSerializeOptions

instance IsGObject StructuredSerializeOptions where
  typeGType _ = gTypeStructuredSerializeOptions
  {-# INLINE typeGType #-}

noStructuredSerializeOptions :: Maybe StructuredSerializeOptions
noStructuredSerializeOptions = Nothing
{-# INLINE noStructuredSerializeOptions #-}

gTypeStructuredSerializeOptions :: JSM GType
gTypeStructuredSerializeOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.StylePropertyMap" (css-typed-om-1).
newtype StylePropertyMap = StylePropertyMap { unStylePropertyMap :: JSVal }

instance PToJSVal StylePropertyMap where
  pToJSVal = unStylePropertyMap
  {-# INLINE pToJSVal #-}

instance PFromJSVal StylePropertyMap where
  pFromJSVal = StylePropertyMap
  {-# INLINE pFromJSVal #-}

instance ToJSVal StylePropertyMap where
  toJSVal = return . unStylePropertyMap
  {-# INLINE toJSVal #-}

instance FromJSVal StylePropertyMap where
  fromJSVal v = fmap StylePropertyMap <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StylePropertyMap
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StylePropertyMap where
  makeObject = makeObject . unStylePropertyMap

instance IsStylePropertyMapReadOnly StylePropertyMap

instance IsGObject StylePropertyMap where
  typeGType _ = gTypeStylePropertyMap
  {-# INLINE typeGType #-}

noStylePropertyMap :: Maybe StylePropertyMap
noStylePropertyMap = Nothing
{-# INLINE noStylePropertyMap #-}

gTypeStylePropertyMap :: JSM GType
gTypeStylePropertyMap = GType . Object <$> jsg "StylePropertyMap"

-- | Functions for this interface are in "JSDOM.StylePropertyMapReadOnly" (css-typed-om-1).
newtype StylePropertyMapReadOnly = StylePropertyMapReadOnly { unStylePropertyMapReadOnly :: JSVal }

instance PToJSVal StylePropertyMapReadOnly where
  pToJSVal = unStylePropertyMapReadOnly
  {-# INLINE pToJSVal #-}

instance PFromJSVal StylePropertyMapReadOnly where
  pFromJSVal = StylePropertyMapReadOnly
  {-# INLINE pFromJSVal #-}

instance ToJSVal StylePropertyMapReadOnly where
  toJSVal = return . unStylePropertyMapReadOnly
  {-# INLINE toJSVal #-}

instance FromJSVal StylePropertyMapReadOnly where
  fromJSVal v = fmap StylePropertyMapReadOnly <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StylePropertyMapReadOnly
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StylePropertyMapReadOnly where
  makeObject = makeObject . unStylePropertyMapReadOnly

class (IsGObject o) => IsStylePropertyMapReadOnly o
toStylePropertyMapReadOnly :: IsStylePropertyMapReadOnly o => o -> StylePropertyMapReadOnly
toStylePropertyMapReadOnly = StylePropertyMapReadOnly . coerce

instance IsStylePropertyMapReadOnly StylePropertyMapReadOnly

instance IsGObject StylePropertyMapReadOnly where
  typeGType _ = gTypeStylePropertyMapReadOnly
  {-# INLINE typeGType #-}

noStylePropertyMapReadOnly :: Maybe StylePropertyMapReadOnly
noStylePropertyMapReadOnly = Nothing
{-# INLINE noStylePropertyMapReadOnly #-}

gTypeStylePropertyMapReadOnly :: JSM GType
gTypeStylePropertyMapReadOnly = GType . Object <$> jsg "StylePropertyMapReadOnly"

-- | Functions for this interface are in "JSDOM.StyleSheet" (cssom-1).
newtype StyleSheet = StyleSheet { unStyleSheet :: JSVal }

instance PToJSVal StyleSheet where
  pToJSVal = unStyleSheet
  {-# INLINE pToJSVal #-}

instance PFromJSVal StyleSheet where
  pFromJSVal = StyleSheet
  {-# INLINE pFromJSVal #-}

instance ToJSVal StyleSheet where
  toJSVal = return . unStyleSheet
  {-# INLINE toJSVal #-}

instance FromJSVal StyleSheet where
  fromJSVal v = fmap StyleSheet <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StyleSheet
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StyleSheet where
  makeObject = makeObject . unStyleSheet

class (IsGObject o) => IsStyleSheet o
toStyleSheet :: IsStyleSheet o => o -> StyleSheet
toStyleSheet = StyleSheet . coerce

instance IsStyleSheet StyleSheet

instance IsGObject StyleSheet where
  typeGType _ = gTypeStyleSheet
  {-# INLINE typeGType #-}

noStyleSheet :: Maybe StyleSheet
noStyleSheet = Nothing
{-# INLINE noStyleSheet #-}

gTypeStyleSheet :: JSM GType
gTypeStyleSheet = GType . Object <$> jsg "StyleSheet"

-- | Functions for this interface are in "JSDOM.StyleSheetList" (cssom-1).
newtype StyleSheetList = StyleSheetList { unStyleSheetList :: JSVal }

instance PToJSVal StyleSheetList where
  pToJSVal = unStyleSheetList
  {-# INLINE pToJSVal #-}

instance PFromJSVal StyleSheetList where
  pFromJSVal = StyleSheetList
  {-# INLINE pFromJSVal #-}

instance ToJSVal StyleSheetList where
  toJSVal = return . unStyleSheetList
  {-# INLINE toJSVal #-}

instance FromJSVal StyleSheetList where
  fromJSVal v = fmap StyleSheetList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . StyleSheetList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject StyleSheetList where
  makeObject = makeObject . unStyleSheetList


instance IsGObject StyleSheetList where
  typeGType _ = gTypeStyleSheetList
  {-# INLINE typeGType #-}

noStyleSheetList :: Maybe StyleSheetList
noStyleSheetList = Nothing
{-# INLINE noStyleSheetList #-}

gTypeStyleSheetList :: JSM GType
gTypeStyleSheetList = GType . Object <$> jsg "StyleSheetList"

-- | Functions for this interface are in "JSDOM.SubmitEvent" (html).
newtype SubmitEvent = SubmitEvent { unSubmitEvent :: JSVal }

instance PToJSVal SubmitEvent where
  pToJSVal = unSubmitEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal SubmitEvent where
  pFromJSVal = SubmitEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal SubmitEvent where
  toJSVal = return . unSubmitEvent
  {-# INLINE toJSVal #-}

instance FromJSVal SubmitEvent where
  fromJSVal v = fmap SubmitEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SubmitEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SubmitEvent where
  makeObject = makeObject . unSubmitEvent

instance IsEvent SubmitEvent

instance IsGObject SubmitEvent where
  typeGType _ = gTypeSubmitEvent
  {-# INLINE typeGType #-}

noSubmitEvent :: Maybe SubmitEvent
noSubmitEvent = Nothing
{-# INLINE noSubmitEvent #-}

gTypeSubmitEvent :: JSM GType
gTypeSubmitEvent = GType . Object <$> jsg "SubmitEvent"

-- | Dictionary SubmitEventInit (html)
newtype SubmitEventInit = SubmitEventInit { unSubmitEventInit :: JSVal }

instance PToJSVal SubmitEventInit where
  pToJSVal = unSubmitEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal SubmitEventInit where
  pFromJSVal = SubmitEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal SubmitEventInit where
  toJSVal = return . unSubmitEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal SubmitEventInit where
  fromJSVal v = fmap SubmitEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SubmitEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SubmitEventInit where
  makeObject = makeObject . unSubmitEventInit

instance IsEventInit SubmitEventInit

instance IsGObject SubmitEventInit where
  typeGType _ = gTypeSubmitEventInit
  {-# INLINE typeGType #-}

noSubmitEventInit :: Maybe SubmitEventInit
noSubmitEventInit = Nothing
{-# INLINE noSubmitEventInit #-}

gTypeSubmitEventInit :: JSM GType
gTypeSubmitEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.SubtleCrypto" (webcrypto-2).
newtype SubtleCrypto = SubtleCrypto { unSubtleCrypto :: JSVal }

instance PToJSVal SubtleCrypto where
  pToJSVal = unSubtleCrypto
  {-# INLINE pToJSVal #-}

instance PFromJSVal SubtleCrypto where
  pFromJSVal = SubtleCrypto
  {-# INLINE pFromJSVal #-}

instance ToJSVal SubtleCrypto where
  toJSVal = return . unSubtleCrypto
  {-# INLINE toJSVal #-}

instance FromJSVal SubtleCrypto where
  fromJSVal v = fmap SubtleCrypto <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SubtleCrypto
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SubtleCrypto where
  makeObject = makeObject . unSubtleCrypto


instance IsGObject SubtleCrypto where
  typeGType _ = gTypeSubtleCrypto
  {-# INLINE typeGType #-}

noSubtleCrypto :: Maybe SubtleCrypto
noSubtleCrypto = Nothing
{-# INLINE noSubtleCrypto #-}

gTypeSubtleCrypto :: JSM GType
gTypeSubtleCrypto = GType . Object <$> jsg "SubtleCrypto"

-- | Dictionary SvcOutputMetadata (webcodecs)
newtype SvcOutputMetadata = SvcOutputMetadata { unSvcOutputMetadata :: JSVal }

instance PToJSVal SvcOutputMetadata where
  pToJSVal = unSvcOutputMetadata
  {-# INLINE pToJSVal #-}

instance PFromJSVal SvcOutputMetadata where
  pFromJSVal = SvcOutputMetadata
  {-# INLINE pFromJSVal #-}

instance ToJSVal SvcOutputMetadata where
  toJSVal = return . unSvcOutputMetadata
  {-# INLINE toJSVal #-}

instance FromJSVal SvcOutputMetadata where
  fromJSVal v = fmap SvcOutputMetadata <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . SvcOutputMetadata
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject SvcOutputMetadata where
  makeObject = makeObject . unSvcOutputMetadata


instance IsGObject SvcOutputMetadata where
  typeGType _ = gTypeSvcOutputMetadata
  {-# INLINE typeGType #-}

noSvcOutputMetadata :: Maybe SvcOutputMetadata
noSvcOutputMetadata = Nothing
{-# INLINE noSvcOutputMetadata #-}

gTypeSvcOutputMetadata :: JSM GType
gTypeSvcOutputMetadata = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.TaskController" (scheduling-apis).
newtype TaskController = TaskController { unTaskController :: JSVal }

instance PToJSVal TaskController where
  pToJSVal = unTaskController
  {-# INLINE pToJSVal #-}

instance PFromJSVal TaskController where
  pFromJSVal = TaskController
  {-# INLINE pFromJSVal #-}

instance ToJSVal TaskController where
  toJSVal = return . unTaskController
  {-# INLINE toJSVal #-}

instance FromJSVal TaskController where
  fromJSVal v = fmap TaskController <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TaskController
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TaskController where
  makeObject = makeObject . unTaskController

instance IsAbortController TaskController

instance IsGObject TaskController where
  typeGType _ = gTypeTaskController
  {-# INLINE typeGType #-}

noTaskController :: Maybe TaskController
noTaskController = Nothing
{-# INLINE noTaskController #-}

gTypeTaskController :: JSM GType
gTypeTaskController = GType . Object <$> jsg "TaskController"

-- | Dictionary TaskControllerInit (scheduling-apis)
newtype TaskControllerInit = TaskControllerInit { unTaskControllerInit :: JSVal }

instance PToJSVal TaskControllerInit where
  pToJSVal = unTaskControllerInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal TaskControllerInit where
  pFromJSVal = TaskControllerInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal TaskControllerInit where
  toJSVal = return . unTaskControllerInit
  {-# INLINE toJSVal #-}

instance FromJSVal TaskControllerInit where
  fromJSVal v = fmap TaskControllerInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TaskControllerInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TaskControllerInit where
  makeObject = makeObject . unTaskControllerInit


instance IsGObject TaskControllerInit where
  typeGType _ = gTypeTaskControllerInit
  {-# INLINE typeGType #-}

noTaskControllerInit :: Maybe TaskControllerInit
noTaskControllerInit = Nothing
{-# INLINE noTaskControllerInit #-}

gTypeTaskControllerInit :: JSM GType
gTypeTaskControllerInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.TaskPriorityChangeEvent" (scheduling-apis).
newtype TaskPriorityChangeEvent = TaskPriorityChangeEvent { unTaskPriorityChangeEvent :: JSVal }

instance PToJSVal TaskPriorityChangeEvent where
  pToJSVal = unTaskPriorityChangeEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal TaskPriorityChangeEvent where
  pFromJSVal = TaskPriorityChangeEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal TaskPriorityChangeEvent where
  toJSVal = return . unTaskPriorityChangeEvent
  {-# INLINE toJSVal #-}

instance FromJSVal TaskPriorityChangeEvent where
  fromJSVal v = fmap TaskPriorityChangeEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TaskPriorityChangeEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TaskPriorityChangeEvent where
  makeObject = makeObject . unTaskPriorityChangeEvent

instance IsEvent TaskPriorityChangeEvent

instance IsGObject TaskPriorityChangeEvent where
  typeGType _ = gTypeTaskPriorityChangeEvent
  {-# INLINE typeGType #-}

noTaskPriorityChangeEvent :: Maybe TaskPriorityChangeEvent
noTaskPriorityChangeEvent = Nothing
{-# INLINE noTaskPriorityChangeEvent #-}

gTypeTaskPriorityChangeEvent :: JSM GType
gTypeTaskPriorityChangeEvent = GType . Object <$> jsg "TaskPriorityChangeEvent"

-- | Dictionary TaskPriorityChangeEventInit (scheduling-apis)
newtype TaskPriorityChangeEventInit = TaskPriorityChangeEventInit { unTaskPriorityChangeEventInit :: JSVal }

instance PToJSVal TaskPriorityChangeEventInit where
  pToJSVal = unTaskPriorityChangeEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal TaskPriorityChangeEventInit where
  pFromJSVal = TaskPriorityChangeEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal TaskPriorityChangeEventInit where
  toJSVal = return . unTaskPriorityChangeEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal TaskPriorityChangeEventInit where
  fromJSVal v = fmap TaskPriorityChangeEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TaskPriorityChangeEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TaskPriorityChangeEventInit where
  makeObject = makeObject . unTaskPriorityChangeEventInit

instance IsEventInit TaskPriorityChangeEventInit

instance IsGObject TaskPriorityChangeEventInit where
  typeGType _ = gTypeTaskPriorityChangeEventInit
  {-# INLINE typeGType #-}

noTaskPriorityChangeEventInit :: Maybe TaskPriorityChangeEventInit
noTaskPriorityChangeEventInit = Nothing
{-# INLINE noTaskPriorityChangeEventInit #-}

gTypeTaskPriorityChangeEventInit :: JSM GType
gTypeTaskPriorityChangeEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.TaskSignal" (scheduling-apis).
newtype TaskSignal = TaskSignal { unTaskSignal :: JSVal }

instance PToJSVal TaskSignal where
  pToJSVal = unTaskSignal
  {-# INLINE pToJSVal #-}

instance PFromJSVal TaskSignal where
  pFromJSVal = TaskSignal
  {-# INLINE pFromJSVal #-}

instance ToJSVal TaskSignal where
  toJSVal = return . unTaskSignal
  {-# INLINE toJSVal #-}

instance FromJSVal TaskSignal where
  fromJSVal v = fmap TaskSignal <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TaskSignal
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TaskSignal where
  makeObject = makeObject . unTaskSignal

instance IsAbortSignal TaskSignal
instance IsEventTarget TaskSignal

instance IsGObject TaskSignal where
  typeGType _ = gTypeTaskSignal
  {-# INLINE typeGType #-}

noTaskSignal :: Maybe TaskSignal
noTaskSignal = Nothing
{-# INLINE noTaskSignal #-}

gTypeTaskSignal :: JSM GType
gTypeTaskSignal = GType . Object <$> jsg "TaskSignal"

-- | Dictionary TaskSignalAnyInit (scheduling-apis)
newtype TaskSignalAnyInit = TaskSignalAnyInit { unTaskSignalAnyInit :: JSVal }

instance PToJSVal TaskSignalAnyInit where
  pToJSVal = unTaskSignalAnyInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal TaskSignalAnyInit where
  pFromJSVal = TaskSignalAnyInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal TaskSignalAnyInit where
  toJSVal = return . unTaskSignalAnyInit
  {-# INLINE toJSVal #-}

instance FromJSVal TaskSignalAnyInit where
  fromJSVal v = fmap TaskSignalAnyInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TaskSignalAnyInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TaskSignalAnyInit where
  makeObject = makeObject . unTaskSignalAnyInit


instance IsGObject TaskSignalAnyInit where
  typeGType _ = gTypeTaskSignalAnyInit
  {-# INLINE typeGType #-}

noTaskSignalAnyInit :: Maybe TaskSignalAnyInit
noTaskSignalAnyInit = Nothing
{-# INLINE noTaskSignalAnyInit #-}

gTypeTaskSignalAnyInit :: JSM GType
gTypeTaskSignalAnyInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Text" (dom).
newtype Text = Text { unText :: JSVal }

instance PToJSVal Text where
  pToJSVal = unText
  {-# INLINE pToJSVal #-}

instance PFromJSVal Text where
  pFromJSVal = Text
  {-# INLINE pFromJSVal #-}

instance ToJSVal Text where
  toJSVal = return . unText
  {-# INLINE toJSVal #-}

instance FromJSVal Text where
  fromJSVal v = fmap Text <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Text
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Text where
  makeObject = makeObject . unText

class (IsCharacterData o, IsSlottable o, IsGObject o) => IsText o
toText :: IsText o => o -> Text
toText = Text . coerce

instance IsText Text
instance IsSlottable Text
instance IsCharacterData Text
instance IsChildNode Text
instance IsNonDocumentTypeChildNode Text
instance IsNode Text
instance IsEventTarget Text

instance IsGObject Text where
  typeGType _ = gTypeText
  {-# INLINE typeGType #-}

noText :: Maybe Text
noText = Nothing
{-# INLINE noText #-}

gTypeText :: JSM GType
gTypeText = GType . Object <$> jsg "Text"

-- | Dictionary TextDecodeOptions (encoding)
newtype TextDecodeOptions = TextDecodeOptions { unTextDecodeOptions :: JSVal }

instance PToJSVal TextDecodeOptions where
  pToJSVal = unTextDecodeOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextDecodeOptions where
  pFromJSVal = TextDecodeOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextDecodeOptions where
  toJSVal = return . unTextDecodeOptions
  {-# INLINE toJSVal #-}

instance FromJSVal TextDecodeOptions where
  fromJSVal v = fmap TextDecodeOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextDecodeOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextDecodeOptions where
  makeObject = makeObject . unTextDecodeOptions


instance IsGObject TextDecodeOptions where
  typeGType _ = gTypeTextDecodeOptions
  {-# INLINE typeGType #-}

noTextDecodeOptions :: Maybe TextDecodeOptions
noTextDecodeOptions = Nothing
{-# INLINE noTextDecodeOptions #-}

gTypeTextDecodeOptions :: JSM GType
gTypeTextDecodeOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.TextDecoder" (encoding).
newtype TextDecoder = TextDecoder { unTextDecoder :: JSVal }

instance PToJSVal TextDecoder where
  pToJSVal = unTextDecoder
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextDecoder where
  pFromJSVal = TextDecoder
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextDecoder where
  toJSVal = return . unTextDecoder
  {-# INLINE toJSVal #-}

instance FromJSVal TextDecoder where
  fromJSVal v = fmap TextDecoder <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextDecoder
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextDecoder where
  makeObject = makeObject . unTextDecoder

instance IsTextDecoderCommon TextDecoder

instance IsGObject TextDecoder where
  typeGType _ = gTypeTextDecoder
  {-# INLINE typeGType #-}

noTextDecoder :: Maybe TextDecoder
noTextDecoder = Nothing
{-# INLINE noTextDecoder #-}

gTypeTextDecoder :: JSM GType
gTypeTextDecoder = GType . Object <$> jsg "TextDecoder"

-- | Functions for this interface are in "JSDOM.TextDecoderCommon" (encoding).
newtype TextDecoderCommon = TextDecoderCommon { unTextDecoderCommon :: JSVal }

instance PToJSVal TextDecoderCommon where
  pToJSVal = unTextDecoderCommon
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextDecoderCommon where
  pFromJSVal = TextDecoderCommon
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextDecoderCommon where
  toJSVal = return . unTextDecoderCommon
  {-# INLINE toJSVal #-}

instance FromJSVal TextDecoderCommon where
  fromJSVal v = fmap TextDecoderCommon <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextDecoderCommon
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextDecoderCommon where
  makeObject = makeObject . unTextDecoderCommon

class (IsGObject o) => IsTextDecoderCommon o
toTextDecoderCommon :: IsTextDecoderCommon o => o -> TextDecoderCommon
toTextDecoderCommon = TextDecoderCommon . coerce

instance IsTextDecoderCommon TextDecoderCommon

instance IsGObject TextDecoderCommon where
  typeGType _ = gTypeTextDecoderCommon
  {-# INLINE typeGType #-}

noTextDecoderCommon :: Maybe TextDecoderCommon
noTextDecoderCommon = Nothing
{-# INLINE noTextDecoderCommon #-}

gTypeTextDecoderCommon :: JSM GType
gTypeTextDecoderCommon = GType . Object <$> jsg "Object"

-- | Dictionary TextDecoderOptions (encoding)
newtype TextDecoderOptions = TextDecoderOptions { unTextDecoderOptions :: JSVal }

instance PToJSVal TextDecoderOptions where
  pToJSVal = unTextDecoderOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextDecoderOptions where
  pFromJSVal = TextDecoderOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextDecoderOptions where
  toJSVal = return . unTextDecoderOptions
  {-# INLINE toJSVal #-}

instance FromJSVal TextDecoderOptions where
  fromJSVal v = fmap TextDecoderOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextDecoderOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextDecoderOptions where
  makeObject = makeObject . unTextDecoderOptions


instance IsGObject TextDecoderOptions where
  typeGType _ = gTypeTextDecoderOptions
  {-# INLINE typeGType #-}

noTextDecoderOptions :: Maybe TextDecoderOptions
noTextDecoderOptions = Nothing
{-# INLINE noTextDecoderOptions #-}

gTypeTextDecoderOptions :: JSM GType
gTypeTextDecoderOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.TextDecoderStream" (encoding).
newtype TextDecoderStream = TextDecoderStream { unTextDecoderStream :: JSVal }

instance PToJSVal TextDecoderStream where
  pToJSVal = unTextDecoderStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextDecoderStream where
  pFromJSVal = TextDecoderStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextDecoderStream where
  toJSVal = return . unTextDecoderStream
  {-# INLINE toJSVal #-}

instance FromJSVal TextDecoderStream where
  fromJSVal v = fmap TextDecoderStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextDecoderStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextDecoderStream where
  makeObject = makeObject . unTextDecoderStream

instance IsGenericTransformStream TextDecoderStream
instance IsTextDecoderCommon TextDecoderStream

instance IsGObject TextDecoderStream where
  typeGType _ = gTypeTextDecoderStream
  {-# INLINE typeGType #-}

noTextDecoderStream :: Maybe TextDecoderStream
noTextDecoderStream = Nothing
{-# INLINE noTextDecoderStream #-}

gTypeTextDecoderStream :: JSM GType
gTypeTextDecoderStream = GType . Object <$> jsg "TextDecoderStream"

-- | Functions for this interface are in "JSDOM.TextEncoder" (encoding).
newtype TextEncoder = TextEncoder { unTextEncoder :: JSVal }

instance PToJSVal TextEncoder where
  pToJSVal = unTextEncoder
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextEncoder where
  pFromJSVal = TextEncoder
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextEncoder where
  toJSVal = return . unTextEncoder
  {-# INLINE toJSVal #-}

instance FromJSVal TextEncoder where
  fromJSVal v = fmap TextEncoder <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextEncoder
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextEncoder where
  makeObject = makeObject . unTextEncoder

instance IsTextEncoderCommon TextEncoder

instance IsGObject TextEncoder where
  typeGType _ = gTypeTextEncoder
  {-# INLINE typeGType #-}

noTextEncoder :: Maybe TextEncoder
noTextEncoder = Nothing
{-# INLINE noTextEncoder #-}

gTypeTextEncoder :: JSM GType
gTypeTextEncoder = GType . Object <$> jsg "TextEncoder"

-- | Functions for this interface are in "JSDOM.TextEncoderCommon" (encoding).
newtype TextEncoderCommon = TextEncoderCommon { unTextEncoderCommon :: JSVal }

instance PToJSVal TextEncoderCommon where
  pToJSVal = unTextEncoderCommon
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextEncoderCommon where
  pFromJSVal = TextEncoderCommon
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextEncoderCommon where
  toJSVal = return . unTextEncoderCommon
  {-# INLINE toJSVal #-}

instance FromJSVal TextEncoderCommon where
  fromJSVal v = fmap TextEncoderCommon <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextEncoderCommon
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextEncoderCommon where
  makeObject = makeObject . unTextEncoderCommon

class (IsGObject o) => IsTextEncoderCommon o
toTextEncoderCommon :: IsTextEncoderCommon o => o -> TextEncoderCommon
toTextEncoderCommon = TextEncoderCommon . coerce

instance IsTextEncoderCommon TextEncoderCommon

instance IsGObject TextEncoderCommon where
  typeGType _ = gTypeTextEncoderCommon
  {-# INLINE typeGType #-}

noTextEncoderCommon :: Maybe TextEncoderCommon
noTextEncoderCommon = Nothing
{-# INLINE noTextEncoderCommon #-}

gTypeTextEncoderCommon :: JSM GType
gTypeTextEncoderCommon = GType . Object <$> jsg "Object"

-- | Dictionary TextEncoderEncodeIntoResult (encoding)
newtype TextEncoderEncodeIntoResult = TextEncoderEncodeIntoResult { unTextEncoderEncodeIntoResult :: JSVal }

instance PToJSVal TextEncoderEncodeIntoResult where
  pToJSVal = unTextEncoderEncodeIntoResult
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextEncoderEncodeIntoResult where
  pFromJSVal = TextEncoderEncodeIntoResult
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextEncoderEncodeIntoResult where
  toJSVal = return . unTextEncoderEncodeIntoResult
  {-# INLINE toJSVal #-}

instance FromJSVal TextEncoderEncodeIntoResult where
  fromJSVal v = fmap TextEncoderEncodeIntoResult <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextEncoderEncodeIntoResult
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextEncoderEncodeIntoResult where
  makeObject = makeObject . unTextEncoderEncodeIntoResult


instance IsGObject TextEncoderEncodeIntoResult where
  typeGType _ = gTypeTextEncoderEncodeIntoResult
  {-# INLINE typeGType #-}

noTextEncoderEncodeIntoResult :: Maybe TextEncoderEncodeIntoResult
noTextEncoderEncodeIntoResult = Nothing
{-# INLINE noTextEncoderEncodeIntoResult #-}

gTypeTextEncoderEncodeIntoResult :: JSM GType
gTypeTextEncoderEncodeIntoResult = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.TextEncoderStream" (encoding).
newtype TextEncoderStream = TextEncoderStream { unTextEncoderStream :: JSVal }

instance PToJSVal TextEncoderStream where
  pToJSVal = unTextEncoderStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextEncoderStream where
  pFromJSVal = TextEncoderStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextEncoderStream where
  toJSVal = return . unTextEncoderStream
  {-# INLINE toJSVal #-}

instance FromJSVal TextEncoderStream where
  fromJSVal v = fmap TextEncoderStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextEncoderStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextEncoderStream where
  makeObject = makeObject . unTextEncoderStream

instance IsGenericTransformStream TextEncoderStream
instance IsTextEncoderCommon TextEncoderStream

instance IsGObject TextEncoderStream where
  typeGType _ = gTypeTextEncoderStream
  {-# INLINE typeGType #-}

noTextEncoderStream :: Maybe TextEncoderStream
noTextEncoderStream = Nothing
{-# INLINE noTextEncoderStream #-}

gTypeTextEncoderStream :: JSM GType
gTypeTextEncoderStream = GType . Object <$> jsg "TextEncoderStream"

-- | Functions for this interface are in "JSDOM.TextEvent" (uievents).
newtype TextEvent = TextEvent { unTextEvent :: JSVal }

instance PToJSVal TextEvent where
  pToJSVal = unTextEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextEvent where
  pFromJSVal = TextEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextEvent where
  toJSVal = return . unTextEvent
  {-# INLINE toJSVal #-}

instance FromJSVal TextEvent where
  fromJSVal v = fmap TextEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextEvent where
  makeObject = makeObject . unTextEvent

instance IsUIEvent TextEvent
instance IsEvent TextEvent

instance IsGObject TextEvent where
  typeGType _ = gTypeTextEvent
  {-# INLINE typeGType #-}

noTextEvent :: Maybe TextEvent
noTextEvent = Nothing
{-# INLINE noTextEvent #-}

gTypeTextEvent :: JSM GType
gTypeTextEvent = GType . Object <$> jsg "TextEvent"

-- | Functions for this interface are in "JSDOM.TextMetrics" (html).
newtype TextMetrics = TextMetrics { unTextMetrics :: JSVal }

instance PToJSVal TextMetrics where
  pToJSVal = unTextMetrics
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextMetrics where
  pFromJSVal = TextMetrics
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextMetrics where
  toJSVal = return . unTextMetrics
  {-# INLINE toJSVal #-}

instance FromJSVal TextMetrics where
  fromJSVal v = fmap TextMetrics <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextMetrics
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextMetrics where
  makeObject = makeObject . unTextMetrics


instance IsGObject TextMetrics where
  typeGType _ = gTypeTextMetrics
  {-# INLINE typeGType #-}

noTextMetrics :: Maybe TextMetrics
noTextMetrics = Nothing
{-# INLINE noTextMetrics #-}

gTypeTextMetrics :: JSM GType
gTypeTextMetrics = GType . Object <$> jsg "TextMetrics"

-- | Functions for this interface are in "JSDOM.TextTrack" (html).
newtype TextTrack = TextTrack { unTextTrack :: JSVal }

instance PToJSVal TextTrack where
  pToJSVal = unTextTrack
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextTrack where
  pFromJSVal = TextTrack
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextTrack where
  toJSVal = return . unTextTrack
  {-# INLINE toJSVal #-}

instance FromJSVal TextTrack where
  fromJSVal v = fmap TextTrack <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextTrack
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextTrack where
  makeObject = makeObject . unTextTrack

instance IsEventTarget TextTrack

instance IsGObject TextTrack where
  typeGType _ = gTypeTextTrack
  {-# INLINE typeGType #-}

noTextTrack :: Maybe TextTrack
noTextTrack = Nothing
{-# INLINE noTextTrack #-}

gTypeTextTrack :: JSM GType
gTypeTextTrack = GType . Object <$> jsg "TextTrack"

-- | Functions for this interface are in "JSDOM.TextTrackCue" (html).
newtype TextTrackCue = TextTrackCue { unTextTrackCue :: JSVal }

instance PToJSVal TextTrackCue where
  pToJSVal = unTextTrackCue
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextTrackCue where
  pFromJSVal = TextTrackCue
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextTrackCue where
  toJSVal = return . unTextTrackCue
  {-# INLINE toJSVal #-}

instance FromJSVal TextTrackCue where
  fromJSVal v = fmap TextTrackCue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextTrackCue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextTrackCue where
  makeObject = makeObject . unTextTrackCue

class (IsEventTarget o, IsGObject o) => IsTextTrackCue o
toTextTrackCue :: IsTextTrackCue o => o -> TextTrackCue
toTextTrackCue = TextTrackCue . coerce

instance IsTextTrackCue TextTrackCue
instance IsEventTarget TextTrackCue

instance IsGObject TextTrackCue where
  typeGType _ = gTypeTextTrackCue
  {-# INLINE typeGType #-}

noTextTrackCue :: Maybe TextTrackCue
noTextTrackCue = Nothing
{-# INLINE noTextTrackCue #-}

gTypeTextTrackCue :: JSM GType
gTypeTextTrackCue = GType . Object <$> jsg "TextTrackCue"

-- | Functions for this interface are in "JSDOM.TextTrackCueList" (html).
newtype TextTrackCueList = TextTrackCueList { unTextTrackCueList :: JSVal }

instance PToJSVal TextTrackCueList where
  pToJSVal = unTextTrackCueList
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextTrackCueList where
  pFromJSVal = TextTrackCueList
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextTrackCueList where
  toJSVal = return . unTextTrackCueList
  {-# INLINE toJSVal #-}

instance FromJSVal TextTrackCueList where
  fromJSVal v = fmap TextTrackCueList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextTrackCueList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextTrackCueList where
  makeObject = makeObject . unTextTrackCueList


instance IsGObject TextTrackCueList where
  typeGType _ = gTypeTextTrackCueList
  {-# INLINE typeGType #-}

noTextTrackCueList :: Maybe TextTrackCueList
noTextTrackCueList = Nothing
{-# INLINE noTextTrackCueList #-}

gTypeTextTrackCueList :: JSM GType
gTypeTextTrackCueList = GType . Object <$> jsg "TextTrackCueList"

-- | Functions for this interface are in "JSDOM.TextTrackList" (html).
newtype TextTrackList = TextTrackList { unTextTrackList :: JSVal }

instance PToJSVal TextTrackList where
  pToJSVal = unTextTrackList
  {-# INLINE pToJSVal #-}

instance PFromJSVal TextTrackList where
  pFromJSVal = TextTrackList
  {-# INLINE pFromJSVal #-}

instance ToJSVal TextTrackList where
  toJSVal = return . unTextTrackList
  {-# INLINE toJSVal #-}

instance FromJSVal TextTrackList where
  fromJSVal v = fmap TextTrackList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TextTrackList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TextTrackList where
  makeObject = makeObject . unTextTrackList

instance IsEventTarget TextTrackList

instance IsGObject TextTrackList where
  typeGType _ = gTypeTextTrackList
  {-# INLINE typeGType #-}

noTextTrackList :: Maybe TextTrackList
noTextTrackList = Nothing
{-# INLINE noTextTrackList #-}

gTypeTextTrackList :: JSM GType
gTypeTextTrackList = GType . Object <$> jsg "TextTrackList"

-- | Functions for this interface are in "JSDOM.TimeRanges" (html).
newtype TimeRanges = TimeRanges { unTimeRanges :: JSVal }

instance PToJSVal TimeRanges where
  pToJSVal = unTimeRanges
  {-# INLINE pToJSVal #-}

instance PFromJSVal TimeRanges where
  pFromJSVal = TimeRanges
  {-# INLINE pFromJSVal #-}

instance ToJSVal TimeRanges where
  toJSVal = return . unTimeRanges
  {-# INLINE toJSVal #-}

instance FromJSVal TimeRanges where
  fromJSVal v = fmap TimeRanges <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TimeRanges
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TimeRanges where
  makeObject = makeObject . unTimeRanges


instance IsGObject TimeRanges where
  typeGType _ = gTypeTimeRanges
  {-# INLINE typeGType #-}

noTimeRanges :: Maybe TimeRanges
noTimeRanges = Nothing
{-# INLINE noTimeRanges #-}

gTypeTimeRanges :: JSM GType
gTypeTimeRanges = GType . Object <$> jsg "TimeRanges"

-- | Dictionary TimelineRangeOffset (web-animations-2)
newtype TimelineRangeOffset = TimelineRangeOffset { unTimelineRangeOffset :: JSVal }

instance PToJSVal TimelineRangeOffset where
  pToJSVal = unTimelineRangeOffset
  {-# INLINE pToJSVal #-}

instance PFromJSVal TimelineRangeOffset where
  pFromJSVal = TimelineRangeOffset
  {-# INLINE pFromJSVal #-}

instance ToJSVal TimelineRangeOffset where
  toJSVal = return . unTimelineRangeOffset
  {-# INLINE toJSVal #-}

instance FromJSVal TimelineRangeOffset where
  fromJSVal v = fmap TimelineRangeOffset <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TimelineRangeOffset
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TimelineRangeOffset where
  makeObject = makeObject . unTimelineRangeOffset


instance IsGObject TimelineRangeOffset where
  typeGType _ = gTypeTimelineRangeOffset
  {-# INLINE typeGType #-}

noTimelineRangeOffset :: Maybe TimelineRangeOffset
noTimelineRangeOffset = Nothing
{-# INLINE noTimelineRangeOffset #-}

gTypeTimelineRangeOffset :: JSM GType
gTypeTimelineRangeOffset = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ToggleEvent" (html).
newtype ToggleEvent = ToggleEvent { unToggleEvent :: JSVal }

instance PToJSVal ToggleEvent where
  pToJSVal = unToggleEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal ToggleEvent where
  pFromJSVal = ToggleEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal ToggleEvent where
  toJSVal = return . unToggleEvent
  {-# INLINE toJSVal #-}

instance FromJSVal ToggleEvent where
  fromJSVal v = fmap ToggleEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ToggleEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ToggleEvent where
  makeObject = makeObject . unToggleEvent

instance IsEvent ToggleEvent

instance IsGObject ToggleEvent where
  typeGType _ = gTypeToggleEvent
  {-# INLINE typeGType #-}

noToggleEvent :: Maybe ToggleEvent
noToggleEvent = Nothing
{-# INLINE noToggleEvent #-}

gTypeToggleEvent :: JSM GType
gTypeToggleEvent = GType . Object <$> jsg "ToggleEvent"

-- | Dictionary ToggleEventInit (html)
newtype ToggleEventInit = ToggleEventInit { unToggleEventInit :: JSVal }

instance PToJSVal ToggleEventInit where
  pToJSVal = unToggleEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal ToggleEventInit where
  pFromJSVal = ToggleEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal ToggleEventInit where
  toJSVal = return . unToggleEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal ToggleEventInit where
  fromJSVal v = fmap ToggleEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ToggleEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ToggleEventInit where
  makeObject = makeObject . unToggleEventInit

instance IsEventInit ToggleEventInit

instance IsGObject ToggleEventInit where
  typeGType _ = gTypeToggleEventInit
  {-# INLINE typeGType #-}

noToggleEventInit :: Maybe ToggleEventInit
noToggleEventInit = Nothing
{-# INLINE noToggleEventInit #-}

gTypeToggleEventInit :: JSM GType
gTypeToggleEventInit = GType . Object <$> jsg "Object"

-- | Dictionary TogglePopoverOptions (html)
newtype TogglePopoverOptions = TogglePopoverOptions { unTogglePopoverOptions :: JSVal }

instance PToJSVal TogglePopoverOptions where
  pToJSVal = unTogglePopoverOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal TogglePopoverOptions where
  pFromJSVal = TogglePopoverOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal TogglePopoverOptions where
  toJSVal = return . unTogglePopoverOptions
  {-# INLINE toJSVal #-}

instance FromJSVal TogglePopoverOptions where
  fromJSVal v = fmap TogglePopoverOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TogglePopoverOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TogglePopoverOptions where
  makeObject = makeObject . unTogglePopoverOptions

instance IsShowPopoverOptions TogglePopoverOptions

instance IsGObject TogglePopoverOptions where
  typeGType _ = gTypeTogglePopoverOptions
  {-# INLINE typeGType #-}

noTogglePopoverOptions :: Maybe TogglePopoverOptions
noTogglePopoverOptions = Nothing
{-# INLINE noTogglePopoverOptions #-}

gTypeTogglePopoverOptions :: JSM GType
gTypeTogglePopoverOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Touch" (touch-events).
newtype Touch = Touch { unTouch :: JSVal }

instance PToJSVal Touch where
  pToJSVal = unTouch
  {-# INLINE pToJSVal #-}

instance PFromJSVal Touch where
  pFromJSVal = Touch
  {-# INLINE pFromJSVal #-}

instance ToJSVal Touch where
  toJSVal = return . unTouch
  {-# INLINE toJSVal #-}

instance FromJSVal Touch where
  fromJSVal v = fmap Touch <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Touch
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Touch where
  makeObject = makeObject . unTouch


instance IsGObject Touch where
  typeGType _ = gTypeTouch
  {-# INLINE typeGType #-}

noTouch :: Maybe Touch
noTouch = Nothing
{-# INLINE noTouch #-}

gTypeTouch :: JSM GType
gTypeTouch = GType . Object <$> jsg "Touch"

-- | Functions for this interface are in "JSDOM.TouchEvent" (touch-events).
newtype TouchEvent = TouchEvent { unTouchEvent :: JSVal }

instance PToJSVal TouchEvent where
  pToJSVal = unTouchEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal TouchEvent where
  pFromJSVal = TouchEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal TouchEvent where
  toJSVal = return . unTouchEvent
  {-# INLINE toJSVal #-}

instance FromJSVal TouchEvent where
  fromJSVal v = fmap TouchEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TouchEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TouchEvent where
  makeObject = makeObject . unTouchEvent

instance IsUIEvent TouchEvent
instance IsEvent TouchEvent

instance IsGObject TouchEvent where
  typeGType _ = gTypeTouchEvent
  {-# INLINE typeGType #-}

noTouchEvent :: Maybe TouchEvent
noTouchEvent = Nothing
{-# INLINE noTouchEvent #-}

gTypeTouchEvent :: JSM GType
gTypeTouchEvent = GType . Object <$> jsg "TouchEvent"

-- | Dictionary TouchEventInit (touch-events)
newtype TouchEventInit = TouchEventInit { unTouchEventInit :: JSVal }

instance PToJSVal TouchEventInit where
  pToJSVal = unTouchEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal TouchEventInit where
  pFromJSVal = TouchEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal TouchEventInit where
  toJSVal = return . unTouchEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal TouchEventInit where
  fromJSVal v = fmap TouchEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TouchEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TouchEventInit where
  makeObject = makeObject . unTouchEventInit

instance IsEventModifierInit TouchEventInit
instance IsUIEventInit TouchEventInit
instance IsEventInit TouchEventInit

instance IsGObject TouchEventInit where
  typeGType _ = gTypeTouchEventInit
  {-# INLINE typeGType #-}

noTouchEventInit :: Maybe TouchEventInit
noTouchEventInit = Nothing
{-# INLINE noTouchEventInit #-}

gTypeTouchEventInit :: JSM GType
gTypeTouchEventInit = GType . Object <$> jsg "Object"

-- | Dictionary TouchInit (touch-events)
newtype TouchInit = TouchInit { unTouchInit :: JSVal }

instance PToJSVal TouchInit where
  pToJSVal = unTouchInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal TouchInit where
  pFromJSVal = TouchInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal TouchInit where
  toJSVal = return . unTouchInit
  {-# INLINE toJSVal #-}

instance FromJSVal TouchInit where
  fromJSVal v = fmap TouchInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TouchInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TouchInit where
  makeObject = makeObject . unTouchInit


instance IsGObject TouchInit where
  typeGType _ = gTypeTouchInit
  {-# INLINE typeGType #-}

noTouchInit :: Maybe TouchInit
noTouchInit = Nothing
{-# INLINE noTouchInit #-}

gTypeTouchInit :: JSM GType
gTypeTouchInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.TouchList" (touch-events).
newtype TouchList = TouchList { unTouchList :: JSVal }

instance PToJSVal TouchList where
  pToJSVal = unTouchList
  {-# INLINE pToJSVal #-}

instance PFromJSVal TouchList where
  pFromJSVal = TouchList
  {-# INLINE pFromJSVal #-}

instance ToJSVal TouchList where
  toJSVal = return . unTouchList
  {-# INLINE toJSVal #-}

instance FromJSVal TouchList where
  fromJSVal v = fmap TouchList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TouchList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TouchList where
  makeObject = makeObject . unTouchList


instance IsGObject TouchList where
  typeGType _ = gTypeTouchList
  {-# INLINE typeGType #-}

noTouchList :: Maybe TouchList
noTouchList = Nothing
{-# INLINE noTouchList #-}

gTypeTouchList :: JSM GType
gTypeTouchList = GType . Object <$> jsg "TouchList"

-- | Functions for this interface are in "JSDOM.TrackEvent" (html).
newtype TrackEvent = TrackEvent { unTrackEvent :: JSVal }

instance PToJSVal TrackEvent where
  pToJSVal = unTrackEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal TrackEvent where
  pFromJSVal = TrackEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal TrackEvent where
  toJSVal = return . unTrackEvent
  {-# INLINE toJSVal #-}

instance FromJSVal TrackEvent where
  fromJSVal v = fmap TrackEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TrackEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TrackEvent where
  makeObject = makeObject . unTrackEvent

instance IsEvent TrackEvent

instance IsGObject TrackEvent where
  typeGType _ = gTypeTrackEvent
  {-# INLINE typeGType #-}

noTrackEvent :: Maybe TrackEvent
noTrackEvent = Nothing
{-# INLINE noTrackEvent #-}

gTypeTrackEvent :: JSM GType
gTypeTrackEvent = GType . Object <$> jsg "TrackEvent"

-- | Dictionary TrackEventInit (html)
newtype TrackEventInit = TrackEventInit { unTrackEventInit :: JSVal }

instance PToJSVal TrackEventInit where
  pToJSVal = unTrackEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal TrackEventInit where
  pFromJSVal = TrackEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal TrackEventInit where
  toJSVal = return . unTrackEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal TrackEventInit where
  fromJSVal v = fmap TrackEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TrackEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TrackEventInit where
  makeObject = makeObject . unTrackEventInit

instance IsEventInit TrackEventInit

instance IsGObject TrackEventInit where
  typeGType _ = gTypeTrackEventInit
  {-# INLINE typeGType #-}

noTrackEventInit :: Maybe TrackEventInit
noTrackEventInit = Nothing
{-# INLINE noTrackEventInit #-}

gTypeTrackEventInit :: JSM GType
gTypeTrackEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.TransformStream" (streams).
newtype TransformStream = TransformStream { unTransformStream :: JSVal }

instance PToJSVal TransformStream where
  pToJSVal = unTransformStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal TransformStream where
  pFromJSVal = TransformStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal TransformStream where
  toJSVal = return . unTransformStream
  {-# INLINE toJSVal #-}

instance FromJSVal TransformStream where
  fromJSVal v = fmap TransformStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TransformStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TransformStream where
  makeObject = makeObject . unTransformStream


instance IsGObject TransformStream where
  typeGType _ = gTypeTransformStream
  {-# INLINE typeGType #-}

noTransformStream :: Maybe TransformStream
noTransformStream = Nothing
{-# INLINE noTransformStream #-}

gTypeTransformStream :: JSM GType
gTypeTransformStream = GType . Object <$> jsg "TransformStream"

-- | Functions for this interface are in "JSDOM.TransformStreamDefaultController" (streams).
newtype TransformStreamDefaultController = TransformStreamDefaultController { unTransformStreamDefaultController :: JSVal }

instance PToJSVal TransformStreamDefaultController where
  pToJSVal = unTransformStreamDefaultController
  {-# INLINE pToJSVal #-}

instance PFromJSVal TransformStreamDefaultController where
  pFromJSVal = TransformStreamDefaultController
  {-# INLINE pFromJSVal #-}

instance ToJSVal TransformStreamDefaultController where
  toJSVal = return . unTransformStreamDefaultController
  {-# INLINE toJSVal #-}

instance FromJSVal TransformStreamDefaultController where
  fromJSVal v = fmap TransformStreamDefaultController <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TransformStreamDefaultController
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TransformStreamDefaultController where
  makeObject = makeObject . unTransformStreamDefaultController


instance IsGObject TransformStreamDefaultController where
  typeGType _ = gTypeTransformStreamDefaultController
  {-# INLINE typeGType #-}

noTransformStreamDefaultController :: Maybe TransformStreamDefaultController
noTransformStreamDefaultController = Nothing
{-# INLINE noTransformStreamDefaultController #-}

gTypeTransformStreamDefaultController :: JSM GType
gTypeTransformStreamDefaultController = GType . Object <$> jsg "TransformStreamDefaultController"

-- | Functions for this interface are in "JSDOM.TransitionEvent" (css-transitions-1).
newtype TransitionEvent = TransitionEvent { unTransitionEvent :: JSVal }

instance PToJSVal TransitionEvent where
  pToJSVal = unTransitionEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal TransitionEvent where
  pFromJSVal = TransitionEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal TransitionEvent where
  toJSVal = return . unTransitionEvent
  {-# INLINE toJSVal #-}

instance FromJSVal TransitionEvent where
  fromJSVal v = fmap TransitionEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TransitionEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TransitionEvent where
  makeObject = makeObject . unTransitionEvent

instance IsEvent TransitionEvent

instance IsGObject TransitionEvent where
  typeGType _ = gTypeTransitionEvent
  {-# INLINE typeGType #-}

noTransitionEvent :: Maybe TransitionEvent
noTransitionEvent = Nothing
{-# INLINE noTransitionEvent #-}

gTypeTransitionEvent :: JSM GType
gTypeTransitionEvent = GType . Object <$> jsg "TransitionEvent"

-- | Dictionary TransitionEventInit (css-transitions-1)
newtype TransitionEventInit = TransitionEventInit { unTransitionEventInit :: JSVal }

instance PToJSVal TransitionEventInit where
  pToJSVal = unTransitionEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal TransitionEventInit where
  pFromJSVal = TransitionEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal TransitionEventInit where
  toJSVal = return . unTransitionEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal TransitionEventInit where
  fromJSVal v = fmap TransitionEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TransitionEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TransitionEventInit where
  makeObject = makeObject . unTransitionEventInit

instance IsEventInit TransitionEventInit

instance IsGObject TransitionEventInit where
  typeGType _ = gTypeTransitionEventInit
  {-# INLINE typeGType #-}

noTransitionEventInit :: Maybe TransitionEventInit
noTransitionEventInit = Nothing
{-# INLINE noTransitionEventInit #-}

gTypeTransitionEventInit :: JSM GType
gTypeTransitionEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.TreeWalker" (dom).
newtype TreeWalker = TreeWalker { unTreeWalker :: JSVal }

instance PToJSVal TreeWalker where
  pToJSVal = unTreeWalker
  {-# INLINE pToJSVal #-}

instance PFromJSVal TreeWalker where
  pFromJSVal = TreeWalker
  {-# INLINE pFromJSVal #-}

instance ToJSVal TreeWalker where
  toJSVal = return . unTreeWalker
  {-# INLINE toJSVal #-}

instance FromJSVal TreeWalker where
  fromJSVal v = fmap TreeWalker <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TreeWalker
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TreeWalker where
  makeObject = makeObject . unTreeWalker


instance IsGObject TreeWalker where
  typeGType _ = gTypeTreeWalker
  {-# INLINE typeGType #-}

noTreeWalker :: Maybe TreeWalker
noTreeWalker = Nothing
{-# INLINE noTreeWalker #-}

gTypeTreeWalker :: JSM GType
gTypeTreeWalker = GType . Object <$> jsg "TreeWalker"

-- | Functions for this interface are in "JSDOM.TrustedHTML" (trusted-types).
newtype TrustedHTML = TrustedHTML { unTrustedHTML :: JSVal }

instance PToJSVal TrustedHTML where
  pToJSVal = unTrustedHTML
  {-# INLINE pToJSVal #-}

instance PFromJSVal TrustedHTML where
  pFromJSVal = TrustedHTML
  {-# INLINE pFromJSVal #-}

instance ToJSVal TrustedHTML where
  toJSVal = return . unTrustedHTML
  {-# INLINE toJSVal #-}

instance FromJSVal TrustedHTML where
  fromJSVal v = fmap TrustedHTML <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TrustedHTML
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TrustedHTML where
  makeObject = makeObject . unTrustedHTML


instance IsGObject TrustedHTML where
  typeGType _ = gTypeTrustedHTML
  {-# INLINE typeGType #-}

noTrustedHTML :: Maybe TrustedHTML
noTrustedHTML = Nothing
{-# INLINE noTrustedHTML #-}

gTypeTrustedHTML :: JSM GType
gTypeTrustedHTML = GType . Object <$> jsg "TrustedHTML"

-- | Functions for this interface are in "JSDOM.TrustedHTMLParserOptions" (trusted-types).
newtype TrustedHTMLParserOptions = TrustedHTMLParserOptions { unTrustedHTMLParserOptions :: JSVal }

instance PToJSVal TrustedHTMLParserOptions where
  pToJSVal = unTrustedHTMLParserOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal TrustedHTMLParserOptions where
  pFromJSVal = TrustedHTMLParserOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal TrustedHTMLParserOptions where
  toJSVal = return . unTrustedHTMLParserOptions
  {-# INLINE toJSVal #-}

instance FromJSVal TrustedHTMLParserOptions where
  fromJSVal v = fmap TrustedHTMLParserOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TrustedHTMLParserOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TrustedHTMLParserOptions where
  makeObject = makeObject . unTrustedHTMLParserOptions


instance IsGObject TrustedHTMLParserOptions where
  typeGType _ = gTypeTrustedHTMLParserOptions
  {-# INLINE typeGType #-}

noTrustedHTMLParserOptions :: Maybe TrustedHTMLParserOptions
noTrustedHTMLParserOptions = Nothing
{-# INLINE noTrustedHTMLParserOptions #-}

gTypeTrustedHTMLParserOptions :: JSM GType
gTypeTrustedHTMLParserOptions = GType . Object <$> jsg "TrustedHTMLParserOptions"

-- | Functions for this interface are in "JSDOM.TrustedScript" (trusted-types).
newtype TrustedScript = TrustedScript { unTrustedScript :: JSVal }

instance PToJSVal TrustedScript where
  pToJSVal = unTrustedScript
  {-# INLINE pToJSVal #-}

instance PFromJSVal TrustedScript where
  pFromJSVal = TrustedScript
  {-# INLINE pFromJSVal #-}

instance ToJSVal TrustedScript where
  toJSVal = return . unTrustedScript
  {-# INLINE toJSVal #-}

instance FromJSVal TrustedScript where
  fromJSVal v = fmap TrustedScript <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TrustedScript
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TrustedScript where
  makeObject = makeObject . unTrustedScript


instance IsGObject TrustedScript where
  typeGType _ = gTypeTrustedScript
  {-# INLINE typeGType #-}

noTrustedScript :: Maybe TrustedScript
noTrustedScript = Nothing
{-# INLINE noTrustedScript #-}

gTypeTrustedScript :: JSM GType
gTypeTrustedScript = GType . Object <$> jsg "TrustedScript"

-- | Functions for this interface are in "JSDOM.TrustedScriptURL" (trusted-types).
newtype TrustedScriptURL = TrustedScriptURL { unTrustedScriptURL :: JSVal }

instance PToJSVal TrustedScriptURL where
  pToJSVal = unTrustedScriptURL
  {-# INLINE pToJSVal #-}

instance PFromJSVal TrustedScriptURL where
  pFromJSVal = TrustedScriptURL
  {-# INLINE pFromJSVal #-}

instance ToJSVal TrustedScriptURL where
  toJSVal = return . unTrustedScriptURL
  {-# INLINE toJSVal #-}

instance FromJSVal TrustedScriptURL where
  fromJSVal v = fmap TrustedScriptURL <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TrustedScriptURL
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TrustedScriptURL where
  makeObject = makeObject . unTrustedScriptURL


instance IsGObject TrustedScriptURL where
  typeGType _ = gTypeTrustedScriptURL
  {-# INLINE typeGType #-}

noTrustedScriptURL :: Maybe TrustedScriptURL
noTrustedScriptURL = Nothing
{-# INLINE noTrustedScriptURL #-}

gTypeTrustedScriptURL :: JSM GType
gTypeTrustedScriptURL = GType . Object <$> jsg "TrustedScriptURL"

-- | Functions for this interface are in "JSDOM.TrustedTypePolicy" (trusted-types).
newtype TrustedTypePolicy = TrustedTypePolicy { unTrustedTypePolicy :: JSVal }

instance PToJSVal TrustedTypePolicy where
  pToJSVal = unTrustedTypePolicy
  {-# INLINE pToJSVal #-}

instance PFromJSVal TrustedTypePolicy where
  pFromJSVal = TrustedTypePolicy
  {-# INLINE pFromJSVal #-}

instance ToJSVal TrustedTypePolicy where
  toJSVal = return . unTrustedTypePolicy
  {-# INLINE toJSVal #-}

instance FromJSVal TrustedTypePolicy where
  fromJSVal v = fmap TrustedTypePolicy <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TrustedTypePolicy
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TrustedTypePolicy where
  makeObject = makeObject . unTrustedTypePolicy


instance IsGObject TrustedTypePolicy where
  typeGType _ = gTypeTrustedTypePolicy
  {-# INLINE typeGType #-}

noTrustedTypePolicy :: Maybe TrustedTypePolicy
noTrustedTypePolicy = Nothing
{-# INLINE noTrustedTypePolicy #-}

gTypeTrustedTypePolicy :: JSM GType
gTypeTrustedTypePolicy = GType . Object <$> jsg "TrustedTypePolicy"

-- | Functions for this interface are in "JSDOM.TrustedTypePolicyFactory" (trusted-types).
newtype TrustedTypePolicyFactory = TrustedTypePolicyFactory { unTrustedTypePolicyFactory :: JSVal }

instance PToJSVal TrustedTypePolicyFactory where
  pToJSVal = unTrustedTypePolicyFactory
  {-# INLINE pToJSVal #-}

instance PFromJSVal TrustedTypePolicyFactory where
  pFromJSVal = TrustedTypePolicyFactory
  {-# INLINE pFromJSVal #-}

instance ToJSVal TrustedTypePolicyFactory where
  toJSVal = return . unTrustedTypePolicyFactory
  {-# INLINE toJSVal #-}

instance FromJSVal TrustedTypePolicyFactory where
  fromJSVal v = fmap TrustedTypePolicyFactory <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TrustedTypePolicyFactory
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TrustedTypePolicyFactory where
  makeObject = makeObject . unTrustedTypePolicyFactory


instance IsGObject TrustedTypePolicyFactory where
  typeGType _ = gTypeTrustedTypePolicyFactory
  {-# INLINE typeGType #-}

noTrustedTypePolicyFactory :: Maybe TrustedTypePolicyFactory
noTrustedTypePolicyFactory = Nothing
{-# INLINE noTrustedTypePolicyFactory #-}

gTypeTrustedTypePolicyFactory :: JSM GType
gTypeTrustedTypePolicyFactory = GType . Object <$> jsg "TrustedTypePolicyFactory"

-- | Dictionary TrustedTypePolicyOptions (trusted-types)
newtype TrustedTypePolicyOptions = TrustedTypePolicyOptions { unTrustedTypePolicyOptions :: JSVal }

instance PToJSVal TrustedTypePolicyOptions where
  pToJSVal = unTrustedTypePolicyOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal TrustedTypePolicyOptions where
  pFromJSVal = TrustedTypePolicyOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal TrustedTypePolicyOptions where
  toJSVal = return . unTrustedTypePolicyOptions
  {-# INLINE toJSVal #-}

instance FromJSVal TrustedTypePolicyOptions where
  fromJSVal v = fmap TrustedTypePolicyOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . TrustedTypePolicyOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject TrustedTypePolicyOptions where
  makeObject = makeObject . unTrustedTypePolicyOptions


instance IsGObject TrustedTypePolicyOptions where
  typeGType _ = gTypeTrustedTypePolicyOptions
  {-# INLINE typeGType #-}

noTrustedTypePolicyOptions :: Maybe TrustedTypePolicyOptions
noTrustedTypePolicyOptions = Nothing
{-# INLINE noTrustedTypePolicyOptions #-}

gTypeTrustedTypePolicyOptions :: JSM GType
gTypeTrustedTypePolicyOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.UIEvent" (uievents).
newtype UIEvent = UIEvent { unUIEvent :: JSVal }

instance PToJSVal UIEvent where
  pToJSVal = unUIEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal UIEvent where
  pFromJSVal = UIEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal UIEvent where
  toJSVal = return . unUIEvent
  {-# INLINE toJSVal #-}

instance FromJSVal UIEvent where
  fromJSVal v = fmap UIEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . UIEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject UIEvent where
  makeObject = makeObject . unUIEvent

class (IsEvent o, IsGObject o) => IsUIEvent o
toUIEvent :: IsUIEvent o => o -> UIEvent
toUIEvent = UIEvent . coerce

instance IsUIEvent UIEvent
instance IsEvent UIEvent

instance IsGObject UIEvent where
  typeGType _ = gTypeUIEvent
  {-# INLINE typeGType #-}

noUIEvent :: Maybe UIEvent
noUIEvent = Nothing
{-# INLINE noUIEvent #-}

gTypeUIEvent :: JSM GType
gTypeUIEvent = GType . Object <$> jsg "UIEvent"

-- | Dictionary UIEventInit (uievents)
newtype UIEventInit = UIEventInit { unUIEventInit :: JSVal }

instance PToJSVal UIEventInit where
  pToJSVal = unUIEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal UIEventInit where
  pFromJSVal = UIEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal UIEventInit where
  toJSVal = return . unUIEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal UIEventInit where
  fromJSVal v = fmap UIEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . UIEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject UIEventInit where
  makeObject = makeObject . unUIEventInit

class (IsEventInit o, IsGObject o) => IsUIEventInit o
toUIEventInit :: IsUIEventInit o => o -> UIEventInit
toUIEventInit = UIEventInit . coerce

instance IsUIEventInit UIEventInit
instance IsEventInit UIEventInit

instance IsGObject UIEventInit where
  typeGType _ = gTypeUIEventInit
  {-# INLINE typeGType #-}

noUIEventInit :: Maybe UIEventInit
noUIEventInit = Nothing
{-# INLINE noUIEventInit #-}

gTypeUIEventInit :: JSM GType
gTypeUIEventInit = GType . Object <$> jsg "Object"

-- | Dictionary ULongRange (mediacapture-streams)
newtype ULongRange = ULongRange { unULongRange :: JSVal }

instance PToJSVal ULongRange where
  pToJSVal = unULongRange
  {-# INLINE pToJSVal #-}

instance PFromJSVal ULongRange where
  pFromJSVal = ULongRange
  {-# INLINE pFromJSVal #-}

instance ToJSVal ULongRange where
  toJSVal = return . unULongRange
  {-# INLINE toJSVal #-}

instance FromJSVal ULongRange where
  fromJSVal v = fmap ULongRange <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ULongRange
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ULongRange where
  makeObject = makeObject . unULongRange

class (IsGObject o) => IsULongRange o
toULongRange :: IsULongRange o => o -> ULongRange
toULongRange = ULongRange . coerce

instance IsULongRange ULongRange

instance IsGObject ULongRange where
  typeGType _ = gTypeULongRange
  {-# INLINE typeGType #-}

noULongRange :: Maybe ULongRange
noULongRange = Nothing
{-# INLINE noULongRange #-}

gTypeULongRange :: JSM GType
gTypeULongRange = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.URL" (url).
newtype URL = URL { unURL :: JSVal }

instance PToJSVal URL where
  pToJSVal = unURL
  {-# INLINE pToJSVal #-}

instance PFromJSVal URL where
  pFromJSVal = URL
  {-# INLINE pFromJSVal #-}

instance ToJSVal URL where
  toJSVal = return . unURL
  {-# INLINE toJSVal #-}

instance FromJSVal URL where
  fromJSVal v = fmap URL <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . URL
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject URL where
  makeObject = makeObject . unURL


instance IsGObject URL where
  typeGType _ = gTypeURL
  {-# INLINE typeGType #-}

noURL :: Maybe URL
noURL = Nothing
{-# INLINE noURL #-}

gTypeURL :: JSM GType
gTypeURL = GType . Object <$> jsg "URL"

-- | Functions for this interface are in "JSDOM.URLPattern" (urlpattern).
newtype URLPattern = URLPattern { unURLPattern :: JSVal }

instance PToJSVal URLPattern where
  pToJSVal = unURLPattern
  {-# INLINE pToJSVal #-}

instance PFromJSVal URLPattern where
  pFromJSVal = URLPattern
  {-# INLINE pFromJSVal #-}

instance ToJSVal URLPattern where
  toJSVal = return . unURLPattern
  {-# INLINE toJSVal #-}

instance FromJSVal URLPattern where
  fromJSVal v = fmap URLPattern <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . URLPattern
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject URLPattern where
  makeObject = makeObject . unURLPattern


instance IsGObject URLPattern where
  typeGType _ = gTypeURLPattern
  {-# INLINE typeGType #-}

noURLPattern :: Maybe URLPattern
noURLPattern = Nothing
{-# INLINE noURLPattern #-}

gTypeURLPattern :: JSM GType
gTypeURLPattern = GType . Object <$> jsg "URLPattern"

-- | Dictionary URLPatternComponentResult (urlpattern)
newtype URLPatternComponentResult = URLPatternComponentResult { unURLPatternComponentResult :: JSVal }

instance PToJSVal URLPatternComponentResult where
  pToJSVal = unURLPatternComponentResult
  {-# INLINE pToJSVal #-}

instance PFromJSVal URLPatternComponentResult where
  pFromJSVal = URLPatternComponentResult
  {-# INLINE pFromJSVal #-}

instance ToJSVal URLPatternComponentResult where
  toJSVal = return . unURLPatternComponentResult
  {-# INLINE toJSVal #-}

instance FromJSVal URLPatternComponentResult where
  fromJSVal v = fmap URLPatternComponentResult <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . URLPatternComponentResult
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject URLPatternComponentResult where
  makeObject = makeObject . unURLPatternComponentResult


instance IsGObject URLPatternComponentResult where
  typeGType _ = gTypeURLPatternComponentResult
  {-# INLINE typeGType #-}

noURLPatternComponentResult :: Maybe URLPatternComponentResult
noURLPatternComponentResult = Nothing
{-# INLINE noURLPatternComponentResult #-}

gTypeURLPatternComponentResult :: JSM GType
gTypeURLPatternComponentResult = GType . Object <$> jsg "Object"

-- | Dictionary URLPatternInit (urlpattern)
newtype URLPatternInit = URLPatternInit { unURLPatternInit :: JSVal }

instance PToJSVal URLPatternInit where
  pToJSVal = unURLPatternInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal URLPatternInit where
  pFromJSVal = URLPatternInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal URLPatternInit where
  toJSVal = return . unURLPatternInit
  {-# INLINE toJSVal #-}

instance FromJSVal URLPatternInit where
  fromJSVal v = fmap URLPatternInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . URLPatternInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject URLPatternInit where
  makeObject = makeObject . unURLPatternInit


instance IsGObject URLPatternInit where
  typeGType _ = gTypeURLPatternInit
  {-# INLINE typeGType #-}

noURLPatternInit :: Maybe URLPatternInit
noURLPatternInit = Nothing
{-# INLINE noURLPatternInit #-}

gTypeURLPatternInit :: JSM GType
gTypeURLPatternInit = GType . Object <$> jsg "Object"

-- | Dictionary URLPatternOptions (urlpattern)
newtype URLPatternOptions = URLPatternOptions { unURLPatternOptions :: JSVal }

instance PToJSVal URLPatternOptions where
  pToJSVal = unURLPatternOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal URLPatternOptions where
  pFromJSVal = URLPatternOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal URLPatternOptions where
  toJSVal = return . unURLPatternOptions
  {-# INLINE toJSVal #-}

instance FromJSVal URLPatternOptions where
  fromJSVal v = fmap URLPatternOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . URLPatternOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject URLPatternOptions where
  makeObject = makeObject . unURLPatternOptions


instance IsGObject URLPatternOptions where
  typeGType _ = gTypeURLPatternOptions
  {-# INLINE typeGType #-}

noURLPatternOptions :: Maybe URLPatternOptions
noURLPatternOptions = Nothing
{-# INLINE noURLPatternOptions #-}

gTypeURLPatternOptions :: JSM GType
gTypeURLPatternOptions = GType . Object <$> jsg "Object"

-- | Dictionary URLPatternResult (urlpattern)
newtype URLPatternResult = URLPatternResult { unURLPatternResult :: JSVal }

instance PToJSVal URLPatternResult where
  pToJSVal = unURLPatternResult
  {-# INLINE pToJSVal #-}

instance PFromJSVal URLPatternResult where
  pFromJSVal = URLPatternResult
  {-# INLINE pFromJSVal #-}

instance ToJSVal URLPatternResult where
  toJSVal = return . unURLPatternResult
  {-# INLINE toJSVal #-}

instance FromJSVal URLPatternResult where
  fromJSVal v = fmap URLPatternResult <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . URLPatternResult
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject URLPatternResult where
  makeObject = makeObject . unURLPatternResult


instance IsGObject URLPatternResult where
  typeGType _ = gTypeURLPatternResult
  {-# INLINE typeGType #-}

noURLPatternResult :: Maybe URLPatternResult
noURLPatternResult = Nothing
{-# INLINE noURLPatternResult #-}

gTypeURLPatternResult :: JSM GType
gTypeURLPatternResult = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.URLSearchParams" (url).
newtype URLSearchParams = URLSearchParams { unURLSearchParams :: JSVal }

instance PToJSVal URLSearchParams where
  pToJSVal = unURLSearchParams
  {-# INLINE pToJSVal #-}

instance PFromJSVal URLSearchParams where
  pFromJSVal = URLSearchParams
  {-# INLINE pFromJSVal #-}

instance ToJSVal URLSearchParams where
  toJSVal = return . unURLSearchParams
  {-# INLINE toJSVal #-}

instance FromJSVal URLSearchParams where
  fromJSVal v = fmap URLSearchParams <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . URLSearchParams
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject URLSearchParams where
  makeObject = makeObject . unURLSearchParams


instance IsGObject URLSearchParams where
  typeGType _ = gTypeURLSearchParams
  {-# INLINE typeGType #-}

noURLSearchParams :: Maybe URLSearchParams
noURLSearchParams = Nothing
{-# INLINE noURLSearchParams #-}

gTypeURLSearchParams :: JSM GType
gTypeURLSearchParams = GType . Object <$> jsg "URLSearchParams"

-- | Dictionary UnknownCredentialOptions (webauthn-4)
newtype UnknownCredentialOptions = UnknownCredentialOptions { unUnknownCredentialOptions :: JSVal }

instance PToJSVal UnknownCredentialOptions where
  pToJSVal = unUnknownCredentialOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal UnknownCredentialOptions where
  pFromJSVal = UnknownCredentialOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal UnknownCredentialOptions where
  toJSVal = return . unUnknownCredentialOptions
  {-# INLINE toJSVal #-}

instance FromJSVal UnknownCredentialOptions where
  fromJSVal v = fmap UnknownCredentialOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . UnknownCredentialOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject UnknownCredentialOptions where
  makeObject = makeObject . unUnknownCredentialOptions


instance IsGObject UnknownCredentialOptions where
  typeGType _ = gTypeUnknownCredentialOptions
  {-# INLINE typeGType #-}

noUnknownCredentialOptions :: Maybe UnknownCredentialOptions
noUnknownCredentialOptions = Nothing
{-# INLINE noUnknownCredentialOptions #-}

gTypeUnknownCredentialOptions :: JSM GType
gTypeUnknownCredentialOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.UserActivation" (html).
newtype UserActivation = UserActivation { unUserActivation :: JSVal }

instance PToJSVal UserActivation where
  pToJSVal = unUserActivation
  {-# INLINE pToJSVal #-}

instance PFromJSVal UserActivation where
  pFromJSVal = UserActivation
  {-# INLINE pFromJSVal #-}

instance ToJSVal UserActivation where
  toJSVal = return . unUserActivation
  {-# INLINE toJSVal #-}

instance FromJSVal UserActivation where
  fromJSVal v = fmap UserActivation <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . UserActivation
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject UserActivation where
  makeObject = makeObject . unUserActivation


instance IsGObject UserActivation where
  typeGType _ = gTypeUserActivation
  {-# INLINE typeGType #-}

noUserActivation :: Maybe UserActivation
noUserActivation = Nothing
{-# INLINE noUserActivation #-}

gTypeUserActivation :: JSM GType
gTypeUserActivation = GType . Object <$> jsg "UserActivation"

-- | Functions for this interface are in "JSDOM.VTTCue" (webvtt1).
newtype VTTCue = VTTCue { unVTTCue :: JSVal }

instance PToJSVal VTTCue where
  pToJSVal = unVTTCue
  {-# INLINE pToJSVal #-}

instance PFromJSVal VTTCue where
  pFromJSVal = VTTCue
  {-# INLINE pFromJSVal #-}

instance ToJSVal VTTCue where
  toJSVal = return . unVTTCue
  {-# INLINE toJSVal #-}

instance FromJSVal VTTCue where
  fromJSVal v = fmap VTTCue <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VTTCue
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VTTCue where
  makeObject = makeObject . unVTTCue

instance IsTextTrackCue VTTCue
instance IsEventTarget VTTCue

instance IsGObject VTTCue where
  typeGType _ = gTypeVTTCue
  {-# INLINE typeGType #-}

noVTTCue :: Maybe VTTCue
noVTTCue = Nothing
{-# INLINE noVTTCue #-}

gTypeVTTCue :: JSM GType
gTypeVTTCue = GType . Object <$> jsg "VTTCue"

-- | Functions for this interface are in "JSDOM.VTTRegion" (webvtt1).
newtype VTTRegion = VTTRegion { unVTTRegion :: JSVal }

instance PToJSVal VTTRegion where
  pToJSVal = unVTTRegion
  {-# INLINE pToJSVal #-}

instance PFromJSVal VTTRegion where
  pFromJSVal = VTTRegion
  {-# INLINE pFromJSVal #-}

instance ToJSVal VTTRegion where
  toJSVal = return . unVTTRegion
  {-# INLINE toJSVal #-}

instance FromJSVal VTTRegion where
  fromJSVal v = fmap VTTRegion <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VTTRegion
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VTTRegion where
  makeObject = makeObject . unVTTRegion


instance IsGObject VTTRegion where
  typeGType _ = gTypeVTTRegion
  {-# INLINE typeGType #-}

noVTTRegion :: Maybe VTTRegion
noVTTRegion = Nothing
{-# INLINE noVTTRegion #-}

gTypeVTTRegion :: JSM GType
gTypeVTTRegion = GType . Object <$> jsg "VTTRegion"

-- | Functions for this interface are in "JSDOM.ValidityState" (html).
newtype ValidityState = ValidityState { unValidityState :: JSVal }

instance PToJSVal ValidityState where
  pToJSVal = unValidityState
  {-# INLINE pToJSVal #-}

instance PFromJSVal ValidityState where
  pFromJSVal = ValidityState
  {-# INLINE pFromJSVal #-}

instance ToJSVal ValidityState where
  toJSVal = return . unValidityState
  {-# INLINE toJSVal #-}

instance FromJSVal ValidityState where
  fromJSVal v = fmap ValidityState <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ValidityState
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ValidityState where
  makeObject = makeObject . unValidityState


instance IsGObject ValidityState where
  typeGType _ = gTypeValidityState
  {-# INLINE typeGType #-}

noValidityState :: Maybe ValidityState
noValidityState = Nothing
{-# INLINE noValidityState #-}

gTypeValidityState :: JSM GType
gTypeValidityState = GType . Object <$> jsg "ValidityState"

-- | Dictionary ValidityStateFlags (html)
newtype ValidityStateFlags = ValidityStateFlags { unValidityStateFlags :: JSVal }

instance PToJSVal ValidityStateFlags where
  pToJSVal = unValidityStateFlags
  {-# INLINE pToJSVal #-}

instance PFromJSVal ValidityStateFlags where
  pFromJSVal = ValidityStateFlags
  {-# INLINE pFromJSVal #-}

instance ToJSVal ValidityStateFlags where
  toJSVal = return . unValidityStateFlags
  {-# INLINE toJSVal #-}

instance FromJSVal ValidityStateFlags where
  fromJSVal v = fmap ValidityStateFlags <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ValidityStateFlags
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ValidityStateFlags where
  makeObject = makeObject . unValidityStateFlags


instance IsGObject ValidityStateFlags where
  typeGType _ = gTypeValidityStateFlags
  {-# INLINE typeGType #-}

noValidityStateFlags :: Maybe ValidityStateFlags
noValidityStateFlags = Nothing
{-# INLINE noValidityStateFlags #-}

gTypeValidityStateFlags :: JSM GType
gTypeValidityStateFlags = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.VideoColorSpace" (webcodecs).
newtype VideoColorSpace = VideoColorSpace { unVideoColorSpace :: JSVal }

instance PToJSVal VideoColorSpace where
  pToJSVal = unVideoColorSpace
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoColorSpace where
  pFromJSVal = VideoColorSpace
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoColorSpace where
  toJSVal = return . unVideoColorSpace
  {-# INLINE toJSVal #-}

instance FromJSVal VideoColorSpace where
  fromJSVal v = fmap VideoColorSpace <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoColorSpace
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoColorSpace where
  makeObject = makeObject . unVideoColorSpace


instance IsGObject VideoColorSpace where
  typeGType _ = gTypeVideoColorSpace
  {-# INLINE typeGType #-}

noVideoColorSpace :: Maybe VideoColorSpace
noVideoColorSpace = Nothing
{-# INLINE noVideoColorSpace #-}

gTypeVideoColorSpace :: JSM GType
gTypeVideoColorSpace = GType . Object <$> jsg "VideoColorSpace"

-- | Dictionary VideoColorSpaceInit (webcodecs)
newtype VideoColorSpaceInit = VideoColorSpaceInit { unVideoColorSpaceInit :: JSVal }

instance PToJSVal VideoColorSpaceInit where
  pToJSVal = unVideoColorSpaceInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoColorSpaceInit where
  pFromJSVal = VideoColorSpaceInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoColorSpaceInit where
  toJSVal = return . unVideoColorSpaceInit
  {-# INLINE toJSVal #-}

instance FromJSVal VideoColorSpaceInit where
  fromJSVal v = fmap VideoColorSpaceInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoColorSpaceInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoColorSpaceInit where
  makeObject = makeObject . unVideoColorSpaceInit


instance IsGObject VideoColorSpaceInit where
  typeGType _ = gTypeVideoColorSpaceInit
  {-# INLINE typeGType #-}

noVideoColorSpaceInit :: Maybe VideoColorSpaceInit
noVideoColorSpaceInit = Nothing
{-# INLINE noVideoColorSpaceInit #-}

gTypeVideoColorSpaceInit :: JSM GType
gTypeVideoColorSpaceInit = GType . Object <$> jsg "Object"

-- | Dictionary VideoConfiguration (media-capabilities)
newtype VideoConfiguration = VideoConfiguration { unVideoConfiguration :: JSVal }

instance PToJSVal VideoConfiguration where
  pToJSVal = unVideoConfiguration
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoConfiguration where
  pFromJSVal = VideoConfiguration
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoConfiguration where
  toJSVal = return . unVideoConfiguration
  {-# INLINE toJSVal #-}

instance FromJSVal VideoConfiguration where
  fromJSVal v = fmap VideoConfiguration <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoConfiguration
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoConfiguration where
  makeObject = makeObject . unVideoConfiguration


instance IsGObject VideoConfiguration where
  typeGType _ = gTypeVideoConfiguration
  {-# INLINE typeGType #-}

noVideoConfiguration :: Maybe VideoConfiguration
noVideoConfiguration = Nothing
{-# INLINE noVideoConfiguration #-}

gTypeVideoConfiguration :: JSM GType
gTypeVideoConfiguration = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.VideoDecoder" (webcodecs).
newtype VideoDecoder = VideoDecoder { unVideoDecoder :: JSVal }

instance PToJSVal VideoDecoder where
  pToJSVal = unVideoDecoder
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoDecoder where
  pFromJSVal = VideoDecoder
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoDecoder where
  toJSVal = return . unVideoDecoder
  {-# INLINE toJSVal #-}

instance FromJSVal VideoDecoder where
  fromJSVal v = fmap VideoDecoder <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoDecoder
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoDecoder where
  makeObject = makeObject . unVideoDecoder

instance IsEventTarget VideoDecoder

instance IsGObject VideoDecoder where
  typeGType _ = gTypeVideoDecoder
  {-# INLINE typeGType #-}

noVideoDecoder :: Maybe VideoDecoder
noVideoDecoder = Nothing
{-# INLINE noVideoDecoder #-}

gTypeVideoDecoder :: JSM GType
gTypeVideoDecoder = GType . Object <$> jsg "VideoDecoder"

-- | Dictionary VideoDecoderConfig (webcodecs)
newtype VideoDecoderConfig = VideoDecoderConfig { unVideoDecoderConfig :: JSVal }

instance PToJSVal VideoDecoderConfig where
  pToJSVal = unVideoDecoderConfig
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoDecoderConfig where
  pFromJSVal = VideoDecoderConfig
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoDecoderConfig where
  toJSVal = return . unVideoDecoderConfig
  {-# INLINE toJSVal #-}

instance FromJSVal VideoDecoderConfig where
  fromJSVal v = fmap VideoDecoderConfig <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoDecoderConfig
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoDecoderConfig where
  makeObject = makeObject . unVideoDecoderConfig


instance IsGObject VideoDecoderConfig where
  typeGType _ = gTypeVideoDecoderConfig
  {-# INLINE typeGType #-}

noVideoDecoderConfig :: Maybe VideoDecoderConfig
noVideoDecoderConfig = Nothing
{-# INLINE noVideoDecoderConfig #-}

gTypeVideoDecoderConfig :: JSM GType
gTypeVideoDecoderConfig = GType . Object <$> jsg "Object"

-- | Dictionary VideoDecoderInit (webcodecs)
newtype VideoDecoderInit = VideoDecoderInit { unVideoDecoderInit :: JSVal }

instance PToJSVal VideoDecoderInit where
  pToJSVal = unVideoDecoderInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoDecoderInit where
  pFromJSVal = VideoDecoderInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoDecoderInit where
  toJSVal = return . unVideoDecoderInit
  {-# INLINE toJSVal #-}

instance FromJSVal VideoDecoderInit where
  fromJSVal v = fmap VideoDecoderInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoDecoderInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoDecoderInit where
  makeObject = makeObject . unVideoDecoderInit


instance IsGObject VideoDecoderInit where
  typeGType _ = gTypeVideoDecoderInit
  {-# INLINE typeGType #-}

noVideoDecoderInit :: Maybe VideoDecoderInit
noVideoDecoderInit = Nothing
{-# INLINE noVideoDecoderInit #-}

gTypeVideoDecoderInit :: JSM GType
gTypeVideoDecoderInit = GType . Object <$> jsg "Object"

-- | Dictionary VideoDecoderSupport (webcodecs)
newtype VideoDecoderSupport = VideoDecoderSupport { unVideoDecoderSupport :: JSVal }

instance PToJSVal VideoDecoderSupport where
  pToJSVal = unVideoDecoderSupport
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoDecoderSupport where
  pFromJSVal = VideoDecoderSupport
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoDecoderSupport where
  toJSVal = return . unVideoDecoderSupport
  {-# INLINE toJSVal #-}

instance FromJSVal VideoDecoderSupport where
  fromJSVal v = fmap VideoDecoderSupport <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoDecoderSupport
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoDecoderSupport where
  makeObject = makeObject . unVideoDecoderSupport


instance IsGObject VideoDecoderSupport where
  typeGType _ = gTypeVideoDecoderSupport
  {-# INLINE typeGType #-}

noVideoDecoderSupport :: Maybe VideoDecoderSupport
noVideoDecoderSupport = Nothing
{-# INLINE noVideoDecoderSupport #-}

gTypeVideoDecoderSupport :: JSM GType
gTypeVideoDecoderSupport = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.VideoEncoder" (webcodecs).
newtype VideoEncoder = VideoEncoder { unVideoEncoder :: JSVal }

instance PToJSVal VideoEncoder where
  pToJSVal = unVideoEncoder
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoEncoder where
  pFromJSVal = VideoEncoder
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoEncoder where
  toJSVal = return . unVideoEncoder
  {-# INLINE toJSVal #-}

instance FromJSVal VideoEncoder where
  fromJSVal v = fmap VideoEncoder <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoEncoder
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoEncoder where
  makeObject = makeObject . unVideoEncoder

instance IsEventTarget VideoEncoder

instance IsGObject VideoEncoder where
  typeGType _ = gTypeVideoEncoder
  {-# INLINE typeGType #-}

noVideoEncoder :: Maybe VideoEncoder
noVideoEncoder = Nothing
{-# INLINE noVideoEncoder #-}

gTypeVideoEncoder :: JSM GType
gTypeVideoEncoder = GType . Object <$> jsg "VideoEncoder"

-- | Dictionary VideoEncoderConfig (webcodecs)
newtype VideoEncoderConfig = VideoEncoderConfig { unVideoEncoderConfig :: JSVal }

instance PToJSVal VideoEncoderConfig where
  pToJSVal = unVideoEncoderConfig
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoEncoderConfig where
  pFromJSVal = VideoEncoderConfig
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoEncoderConfig where
  toJSVal = return . unVideoEncoderConfig
  {-# INLINE toJSVal #-}

instance FromJSVal VideoEncoderConfig where
  fromJSVal v = fmap VideoEncoderConfig <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoEncoderConfig
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoEncoderConfig where
  makeObject = makeObject . unVideoEncoderConfig


instance IsGObject VideoEncoderConfig where
  typeGType _ = gTypeVideoEncoderConfig
  {-# INLINE typeGType #-}

noVideoEncoderConfig :: Maybe VideoEncoderConfig
noVideoEncoderConfig = Nothing
{-# INLINE noVideoEncoderConfig #-}

gTypeVideoEncoderConfig :: JSM GType
gTypeVideoEncoderConfig = GType . Object <$> jsg "Object"

-- | Dictionary VideoEncoderEncodeOptions (webcodecs)
newtype VideoEncoderEncodeOptions = VideoEncoderEncodeOptions { unVideoEncoderEncodeOptions :: JSVal }

instance PToJSVal VideoEncoderEncodeOptions where
  pToJSVal = unVideoEncoderEncodeOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoEncoderEncodeOptions where
  pFromJSVal = VideoEncoderEncodeOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoEncoderEncodeOptions where
  toJSVal = return . unVideoEncoderEncodeOptions
  {-# INLINE toJSVal #-}

instance FromJSVal VideoEncoderEncodeOptions where
  fromJSVal v = fmap VideoEncoderEncodeOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoEncoderEncodeOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoEncoderEncodeOptions where
  makeObject = makeObject . unVideoEncoderEncodeOptions


instance IsGObject VideoEncoderEncodeOptions where
  typeGType _ = gTypeVideoEncoderEncodeOptions
  {-# INLINE typeGType #-}

noVideoEncoderEncodeOptions :: Maybe VideoEncoderEncodeOptions
noVideoEncoderEncodeOptions = Nothing
{-# INLINE noVideoEncoderEncodeOptions #-}

gTypeVideoEncoderEncodeOptions :: JSM GType
gTypeVideoEncoderEncodeOptions = GType . Object <$> jsg "Object"

-- | Dictionary VideoEncoderEncodeOptionsForAv1 (webcodecs-av1-codec-registration)
newtype VideoEncoderEncodeOptionsForAv1 = VideoEncoderEncodeOptionsForAv1 { unVideoEncoderEncodeOptionsForAv1 :: JSVal }

instance PToJSVal VideoEncoderEncodeOptionsForAv1 where
  pToJSVal = unVideoEncoderEncodeOptionsForAv1
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoEncoderEncodeOptionsForAv1 where
  pFromJSVal = VideoEncoderEncodeOptionsForAv1
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoEncoderEncodeOptionsForAv1 where
  toJSVal = return . unVideoEncoderEncodeOptionsForAv1
  {-# INLINE toJSVal #-}

instance FromJSVal VideoEncoderEncodeOptionsForAv1 where
  fromJSVal v = fmap VideoEncoderEncodeOptionsForAv1 <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoEncoderEncodeOptionsForAv1
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoEncoderEncodeOptionsForAv1 where
  makeObject = makeObject . unVideoEncoderEncodeOptionsForAv1


instance IsGObject VideoEncoderEncodeOptionsForAv1 where
  typeGType _ = gTypeVideoEncoderEncodeOptionsForAv1
  {-# INLINE typeGType #-}

noVideoEncoderEncodeOptionsForAv1 :: Maybe VideoEncoderEncodeOptionsForAv1
noVideoEncoderEncodeOptionsForAv1 = Nothing
{-# INLINE noVideoEncoderEncodeOptionsForAv1 #-}

gTypeVideoEncoderEncodeOptionsForAv1 :: JSM GType
gTypeVideoEncoderEncodeOptionsForAv1 = GType . Object <$> jsg "Object"

-- | Dictionary VideoEncoderEncodeOptionsForAvc (webcodecs-avc-codec-registration)
newtype VideoEncoderEncodeOptionsForAvc = VideoEncoderEncodeOptionsForAvc { unVideoEncoderEncodeOptionsForAvc :: JSVal }

instance PToJSVal VideoEncoderEncodeOptionsForAvc where
  pToJSVal = unVideoEncoderEncodeOptionsForAvc
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoEncoderEncodeOptionsForAvc where
  pFromJSVal = VideoEncoderEncodeOptionsForAvc
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoEncoderEncodeOptionsForAvc where
  toJSVal = return . unVideoEncoderEncodeOptionsForAvc
  {-# INLINE toJSVal #-}

instance FromJSVal VideoEncoderEncodeOptionsForAvc where
  fromJSVal v = fmap VideoEncoderEncodeOptionsForAvc <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoEncoderEncodeOptionsForAvc
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoEncoderEncodeOptionsForAvc where
  makeObject = makeObject . unVideoEncoderEncodeOptionsForAvc


instance IsGObject VideoEncoderEncodeOptionsForAvc where
  typeGType _ = gTypeVideoEncoderEncodeOptionsForAvc
  {-# INLINE typeGType #-}

noVideoEncoderEncodeOptionsForAvc :: Maybe VideoEncoderEncodeOptionsForAvc
noVideoEncoderEncodeOptionsForAvc = Nothing
{-# INLINE noVideoEncoderEncodeOptionsForAvc #-}

gTypeVideoEncoderEncodeOptionsForAvc :: JSM GType
gTypeVideoEncoderEncodeOptionsForAvc = GType . Object <$> jsg "Object"

-- | Dictionary VideoEncoderEncodeOptionsForHevc (webcodecs-hevc-codec-registration)
newtype VideoEncoderEncodeOptionsForHevc = VideoEncoderEncodeOptionsForHevc { unVideoEncoderEncodeOptionsForHevc :: JSVal }

instance PToJSVal VideoEncoderEncodeOptionsForHevc where
  pToJSVal = unVideoEncoderEncodeOptionsForHevc
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoEncoderEncodeOptionsForHevc where
  pFromJSVal = VideoEncoderEncodeOptionsForHevc
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoEncoderEncodeOptionsForHevc where
  toJSVal = return . unVideoEncoderEncodeOptionsForHevc
  {-# INLINE toJSVal #-}

instance FromJSVal VideoEncoderEncodeOptionsForHevc where
  fromJSVal v = fmap VideoEncoderEncodeOptionsForHevc <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoEncoderEncodeOptionsForHevc
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoEncoderEncodeOptionsForHevc where
  makeObject = makeObject . unVideoEncoderEncodeOptionsForHevc


instance IsGObject VideoEncoderEncodeOptionsForHevc where
  typeGType _ = gTypeVideoEncoderEncodeOptionsForHevc
  {-# INLINE typeGType #-}

noVideoEncoderEncodeOptionsForHevc :: Maybe VideoEncoderEncodeOptionsForHevc
noVideoEncoderEncodeOptionsForHevc = Nothing
{-# INLINE noVideoEncoderEncodeOptionsForHevc #-}

gTypeVideoEncoderEncodeOptionsForHevc :: JSM GType
gTypeVideoEncoderEncodeOptionsForHevc = GType . Object <$> jsg "Object"

-- | Dictionary VideoEncoderEncodeOptionsForVp9 (webcodecs-vp9-codec-registration)
newtype VideoEncoderEncodeOptionsForVp9 = VideoEncoderEncodeOptionsForVp9 { unVideoEncoderEncodeOptionsForVp9 :: JSVal }

instance PToJSVal VideoEncoderEncodeOptionsForVp9 where
  pToJSVal = unVideoEncoderEncodeOptionsForVp9
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoEncoderEncodeOptionsForVp9 where
  pFromJSVal = VideoEncoderEncodeOptionsForVp9
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoEncoderEncodeOptionsForVp9 where
  toJSVal = return . unVideoEncoderEncodeOptionsForVp9
  {-# INLINE toJSVal #-}

instance FromJSVal VideoEncoderEncodeOptionsForVp9 where
  fromJSVal v = fmap VideoEncoderEncodeOptionsForVp9 <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoEncoderEncodeOptionsForVp9
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoEncoderEncodeOptionsForVp9 where
  makeObject = makeObject . unVideoEncoderEncodeOptionsForVp9


instance IsGObject VideoEncoderEncodeOptionsForVp9 where
  typeGType _ = gTypeVideoEncoderEncodeOptionsForVp9
  {-# INLINE typeGType #-}

noVideoEncoderEncodeOptionsForVp9 :: Maybe VideoEncoderEncodeOptionsForVp9
noVideoEncoderEncodeOptionsForVp9 = Nothing
{-# INLINE noVideoEncoderEncodeOptionsForVp9 #-}

gTypeVideoEncoderEncodeOptionsForVp9 :: JSM GType
gTypeVideoEncoderEncodeOptionsForVp9 = GType . Object <$> jsg "Object"

-- | Dictionary VideoEncoderInit (webcodecs)
newtype VideoEncoderInit = VideoEncoderInit { unVideoEncoderInit :: JSVal }

instance PToJSVal VideoEncoderInit where
  pToJSVal = unVideoEncoderInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoEncoderInit where
  pFromJSVal = VideoEncoderInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoEncoderInit where
  toJSVal = return . unVideoEncoderInit
  {-# INLINE toJSVal #-}

instance FromJSVal VideoEncoderInit where
  fromJSVal v = fmap VideoEncoderInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoEncoderInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoEncoderInit where
  makeObject = makeObject . unVideoEncoderInit


instance IsGObject VideoEncoderInit where
  typeGType _ = gTypeVideoEncoderInit
  {-# INLINE typeGType #-}

noVideoEncoderInit :: Maybe VideoEncoderInit
noVideoEncoderInit = Nothing
{-# INLINE noVideoEncoderInit #-}

gTypeVideoEncoderInit :: JSM GType
gTypeVideoEncoderInit = GType . Object <$> jsg "Object"

-- | Dictionary VideoEncoderSupport (webcodecs)
newtype VideoEncoderSupport = VideoEncoderSupport { unVideoEncoderSupport :: JSVal }

instance PToJSVal VideoEncoderSupport where
  pToJSVal = unVideoEncoderSupport
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoEncoderSupport where
  pFromJSVal = VideoEncoderSupport
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoEncoderSupport where
  toJSVal = return . unVideoEncoderSupport
  {-# INLINE toJSVal #-}

instance FromJSVal VideoEncoderSupport where
  fromJSVal v = fmap VideoEncoderSupport <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoEncoderSupport
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoEncoderSupport where
  makeObject = makeObject . unVideoEncoderSupport


instance IsGObject VideoEncoderSupport where
  typeGType _ = gTypeVideoEncoderSupport
  {-# INLINE typeGType #-}

noVideoEncoderSupport :: Maybe VideoEncoderSupport
noVideoEncoderSupport = Nothing
{-# INLINE noVideoEncoderSupport #-}

gTypeVideoEncoderSupport :: JSM GType
gTypeVideoEncoderSupport = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.VideoFrame" (webcodecs).
newtype VideoFrame = VideoFrame { unVideoFrame :: JSVal }

instance PToJSVal VideoFrame where
  pToJSVal = unVideoFrame
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoFrame where
  pFromJSVal = VideoFrame
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoFrame where
  toJSVal = return . unVideoFrame
  {-# INLINE toJSVal #-}

instance FromJSVal VideoFrame where
  fromJSVal v = fmap VideoFrame <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoFrame
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoFrame where
  makeObject = makeObject . unVideoFrame


instance IsGObject VideoFrame where
  typeGType _ = gTypeVideoFrame
  {-# INLINE typeGType #-}

noVideoFrame :: Maybe VideoFrame
noVideoFrame = Nothing
{-# INLINE noVideoFrame #-}

gTypeVideoFrame :: JSM GType
gTypeVideoFrame = GType . Object <$> jsg "VideoFrame"

-- | Dictionary VideoFrameBufferInit (webcodecs)
newtype VideoFrameBufferInit = VideoFrameBufferInit { unVideoFrameBufferInit :: JSVal }

instance PToJSVal VideoFrameBufferInit where
  pToJSVal = unVideoFrameBufferInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoFrameBufferInit where
  pFromJSVal = VideoFrameBufferInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoFrameBufferInit where
  toJSVal = return . unVideoFrameBufferInit
  {-# INLINE toJSVal #-}

instance FromJSVal VideoFrameBufferInit where
  fromJSVal v = fmap VideoFrameBufferInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoFrameBufferInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoFrameBufferInit where
  makeObject = makeObject . unVideoFrameBufferInit


instance IsGObject VideoFrameBufferInit where
  typeGType _ = gTypeVideoFrameBufferInit
  {-# INLINE typeGType #-}

noVideoFrameBufferInit :: Maybe VideoFrameBufferInit
noVideoFrameBufferInit = Nothing
{-# INLINE noVideoFrameBufferInit #-}

gTypeVideoFrameBufferInit :: JSM GType
gTypeVideoFrameBufferInit = GType . Object <$> jsg "Object"

-- | Dictionary VideoFrameCallbackMetadata (video-rvfc)
newtype VideoFrameCallbackMetadata = VideoFrameCallbackMetadata { unVideoFrameCallbackMetadata :: JSVal }

instance PToJSVal VideoFrameCallbackMetadata where
  pToJSVal = unVideoFrameCallbackMetadata
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoFrameCallbackMetadata where
  pFromJSVal = VideoFrameCallbackMetadata
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoFrameCallbackMetadata where
  toJSVal = return . unVideoFrameCallbackMetadata
  {-# INLINE toJSVal #-}

instance FromJSVal VideoFrameCallbackMetadata where
  fromJSVal v = fmap VideoFrameCallbackMetadata <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoFrameCallbackMetadata
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoFrameCallbackMetadata where
  makeObject = makeObject . unVideoFrameCallbackMetadata


instance IsGObject VideoFrameCallbackMetadata where
  typeGType _ = gTypeVideoFrameCallbackMetadata
  {-# INLINE typeGType #-}

noVideoFrameCallbackMetadata :: Maybe VideoFrameCallbackMetadata
noVideoFrameCallbackMetadata = Nothing
{-# INLINE noVideoFrameCallbackMetadata #-}

gTypeVideoFrameCallbackMetadata :: JSM GType
gTypeVideoFrameCallbackMetadata = GType . Object <$> jsg "Object"

-- | Dictionary VideoFrameCopyToOptions (webcodecs)
newtype VideoFrameCopyToOptions = VideoFrameCopyToOptions { unVideoFrameCopyToOptions :: JSVal }

instance PToJSVal VideoFrameCopyToOptions where
  pToJSVal = unVideoFrameCopyToOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoFrameCopyToOptions where
  pFromJSVal = VideoFrameCopyToOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoFrameCopyToOptions where
  toJSVal = return . unVideoFrameCopyToOptions
  {-# INLINE toJSVal #-}

instance FromJSVal VideoFrameCopyToOptions where
  fromJSVal v = fmap VideoFrameCopyToOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoFrameCopyToOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoFrameCopyToOptions where
  makeObject = makeObject . unVideoFrameCopyToOptions


instance IsGObject VideoFrameCopyToOptions where
  typeGType _ = gTypeVideoFrameCopyToOptions
  {-# INLINE typeGType #-}

noVideoFrameCopyToOptions :: Maybe VideoFrameCopyToOptions
noVideoFrameCopyToOptions = Nothing
{-# INLINE noVideoFrameCopyToOptions #-}

gTypeVideoFrameCopyToOptions :: JSM GType
gTypeVideoFrameCopyToOptions = GType . Object <$> jsg "Object"

-- | Dictionary VideoFrameInit (webcodecs)
newtype VideoFrameInit = VideoFrameInit { unVideoFrameInit :: JSVal }

instance PToJSVal VideoFrameInit where
  pToJSVal = unVideoFrameInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoFrameInit where
  pFromJSVal = VideoFrameInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoFrameInit where
  toJSVal = return . unVideoFrameInit
  {-# INLINE toJSVal #-}

instance FromJSVal VideoFrameInit where
  fromJSVal v = fmap VideoFrameInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoFrameInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoFrameInit where
  makeObject = makeObject . unVideoFrameInit


instance IsGObject VideoFrameInit where
  typeGType _ = gTypeVideoFrameInit
  {-# INLINE typeGType #-}

noVideoFrameInit :: Maybe VideoFrameInit
noVideoFrameInit = Nothing
{-# INLINE noVideoFrameInit #-}

gTypeVideoFrameInit :: JSM GType
gTypeVideoFrameInit = GType . Object <$> jsg "Object"

-- | Dictionary VideoFrameMetadata (webcodecs)
newtype VideoFrameMetadata = VideoFrameMetadata { unVideoFrameMetadata :: JSVal }

instance PToJSVal VideoFrameMetadata where
  pToJSVal = unVideoFrameMetadata
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoFrameMetadata where
  pFromJSVal = VideoFrameMetadata
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoFrameMetadata where
  toJSVal = return . unVideoFrameMetadata
  {-# INLINE toJSVal #-}

instance FromJSVal VideoFrameMetadata where
  fromJSVal v = fmap VideoFrameMetadata <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoFrameMetadata
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoFrameMetadata where
  makeObject = makeObject . unVideoFrameMetadata


instance IsGObject VideoFrameMetadata where
  typeGType _ = gTypeVideoFrameMetadata
  {-# INLINE typeGType #-}

noVideoFrameMetadata :: Maybe VideoFrameMetadata
noVideoFrameMetadata = Nothing
{-# INLINE noVideoFrameMetadata #-}

gTypeVideoFrameMetadata :: JSM GType
gTypeVideoFrameMetadata = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.VideoPlaybackQuality" (media-playback-quality).
newtype VideoPlaybackQuality = VideoPlaybackQuality { unVideoPlaybackQuality :: JSVal }

instance PToJSVal VideoPlaybackQuality where
  pToJSVal = unVideoPlaybackQuality
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoPlaybackQuality where
  pFromJSVal = VideoPlaybackQuality
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoPlaybackQuality where
  toJSVal = return . unVideoPlaybackQuality
  {-# INLINE toJSVal #-}

instance FromJSVal VideoPlaybackQuality where
  fromJSVal v = fmap VideoPlaybackQuality <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoPlaybackQuality
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoPlaybackQuality where
  makeObject = makeObject . unVideoPlaybackQuality


instance IsGObject VideoPlaybackQuality where
  typeGType _ = gTypeVideoPlaybackQuality
  {-# INLINE typeGType #-}

noVideoPlaybackQuality :: Maybe VideoPlaybackQuality
noVideoPlaybackQuality = Nothing
{-# INLINE noVideoPlaybackQuality #-}

gTypeVideoPlaybackQuality :: JSM GType
gTypeVideoPlaybackQuality = GType . Object <$> jsg "VideoPlaybackQuality"

-- | Functions for this interface are in "JSDOM.VideoTrack" (html).
newtype VideoTrack = VideoTrack { unVideoTrack :: JSVal }

instance PToJSVal VideoTrack where
  pToJSVal = unVideoTrack
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoTrack where
  pFromJSVal = VideoTrack
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoTrack where
  toJSVal = return . unVideoTrack
  {-# INLINE toJSVal #-}

instance FromJSVal VideoTrack where
  fromJSVal v = fmap VideoTrack <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoTrack
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoTrack where
  makeObject = makeObject . unVideoTrack


instance IsGObject VideoTrack where
  typeGType _ = gTypeVideoTrack
  {-# INLINE typeGType #-}

noVideoTrack :: Maybe VideoTrack
noVideoTrack = Nothing
{-# INLINE noVideoTrack #-}

gTypeVideoTrack :: JSM GType
gTypeVideoTrack = GType . Object <$> jsg "VideoTrack"

-- | Functions for this interface are in "JSDOM.VideoTrackList" (html).
newtype VideoTrackList = VideoTrackList { unVideoTrackList :: JSVal }

instance PToJSVal VideoTrackList where
  pToJSVal = unVideoTrackList
  {-# INLINE pToJSVal #-}

instance PFromJSVal VideoTrackList where
  pFromJSVal = VideoTrackList
  {-# INLINE pFromJSVal #-}

instance ToJSVal VideoTrackList where
  toJSVal = return . unVideoTrackList
  {-# INLINE toJSVal #-}

instance FromJSVal VideoTrackList where
  fromJSVal v = fmap VideoTrackList <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VideoTrackList
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VideoTrackList where
  makeObject = makeObject . unVideoTrackList

instance IsEventTarget VideoTrackList

instance IsGObject VideoTrackList where
  typeGType _ = gTypeVideoTrackList
  {-# INLINE typeGType #-}

noVideoTrackList :: Maybe VideoTrackList
noVideoTrackList = Nothing
{-# INLINE noVideoTrackList #-}

gTypeVideoTrackList :: JSM GType
gTypeVideoTrackList = GType . Object <$> jsg "VideoTrackList"

-- | Functions for this interface are in "JSDOM.ViewTimeline" (scroll-animations-1).
newtype ViewTimeline = ViewTimeline { unViewTimeline :: JSVal }

instance PToJSVal ViewTimeline where
  pToJSVal = unViewTimeline
  {-# INLINE pToJSVal #-}

instance PFromJSVal ViewTimeline where
  pFromJSVal = ViewTimeline
  {-# INLINE pFromJSVal #-}

instance ToJSVal ViewTimeline where
  toJSVal = return . unViewTimeline
  {-# INLINE toJSVal #-}

instance FromJSVal ViewTimeline where
  fromJSVal v = fmap ViewTimeline <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ViewTimeline
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ViewTimeline where
  makeObject = makeObject . unViewTimeline

instance IsScrollTimeline ViewTimeline
instance IsAnimationTimeline ViewTimeline

instance IsGObject ViewTimeline where
  typeGType _ = gTypeViewTimeline
  {-# INLINE typeGType #-}

noViewTimeline :: Maybe ViewTimeline
noViewTimeline = Nothing
{-# INLINE noViewTimeline #-}

gTypeViewTimeline :: JSM GType
gTypeViewTimeline = GType . Object <$> jsg "ViewTimeline"

-- | Dictionary ViewTimelineOptions (scroll-animations-1)
newtype ViewTimelineOptions = ViewTimelineOptions { unViewTimelineOptions :: JSVal }

instance PToJSVal ViewTimelineOptions where
  pToJSVal = unViewTimelineOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal ViewTimelineOptions where
  pFromJSVal = ViewTimelineOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal ViewTimelineOptions where
  toJSVal = return . unViewTimelineOptions
  {-# INLINE toJSVal #-}

instance FromJSVal ViewTimelineOptions where
  fromJSVal v = fmap ViewTimelineOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ViewTimelineOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ViewTimelineOptions where
  makeObject = makeObject . unViewTimelineOptions


instance IsGObject ViewTimelineOptions where
  typeGType _ = gTypeViewTimelineOptions
  {-# INLINE typeGType #-}

noViewTimelineOptions :: Maybe ViewTimelineOptions
noViewTimelineOptions = Nothing
{-# INLINE noViewTimelineOptions #-}

gTypeViewTimelineOptions :: JSM GType
gTypeViewTimelineOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.ViewTransition" (css-view-transitions-2).
newtype ViewTransition = ViewTransition { unViewTransition :: JSVal }

instance PToJSVal ViewTransition where
  pToJSVal = unViewTransition
  {-# INLINE pToJSVal #-}

instance PFromJSVal ViewTransition where
  pFromJSVal = ViewTransition
  {-# INLINE pFromJSVal #-}

instance ToJSVal ViewTransition where
  toJSVal = return . unViewTransition
  {-# INLINE toJSVal #-}

instance FromJSVal ViewTransition where
  fromJSVal v = fmap ViewTransition <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ViewTransition
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ViewTransition where
  makeObject = makeObject . unViewTransition


instance IsGObject ViewTransition where
  typeGType _ = gTypeViewTransition
  {-# INLINE typeGType #-}

noViewTransition :: Maybe ViewTransition
noViewTransition = Nothing
{-# INLINE noViewTransition #-}

gTypeViewTransition :: JSM GType
gTypeViewTransition = GType . Object <$> jsg "ViewTransition"

-- | Functions for this interface are in "JSDOM.ViewTransitionTypeSet" (css-view-transitions-2).
newtype ViewTransitionTypeSet = ViewTransitionTypeSet { unViewTransitionTypeSet :: JSVal }

instance PToJSVal ViewTransitionTypeSet where
  pToJSVal = unViewTransitionTypeSet
  {-# INLINE pToJSVal #-}

instance PFromJSVal ViewTransitionTypeSet where
  pFromJSVal = ViewTransitionTypeSet
  {-# INLINE pFromJSVal #-}

instance ToJSVal ViewTransitionTypeSet where
  toJSVal = return . unViewTransitionTypeSet
  {-# INLINE toJSVal #-}

instance FromJSVal ViewTransitionTypeSet where
  fromJSVal v = fmap ViewTransitionTypeSet <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . ViewTransitionTypeSet
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject ViewTransitionTypeSet where
  makeObject = makeObject . unViewTransitionTypeSet


instance IsGObject ViewTransitionTypeSet where
  typeGType _ = gTypeViewTransitionTypeSet
  {-# INLINE typeGType #-}

noViewTransitionTypeSet :: Maybe ViewTransitionTypeSet
noViewTransitionTypeSet = Nothing
{-# INLINE noViewTransitionTypeSet #-}

gTypeViewTransitionTypeSet :: JSM GType
gTypeViewTransitionTypeSet = GType . Object <$> jsg "ViewTransitionTypeSet"

-- | Functions for this interface are in "JSDOM.VisualViewport" (cssom-view-1).
newtype VisualViewport = VisualViewport { unVisualViewport :: JSVal }

instance PToJSVal VisualViewport where
  pToJSVal = unVisualViewport
  {-# INLINE pToJSVal #-}

instance PFromJSVal VisualViewport where
  pFromJSVal = VisualViewport
  {-# INLINE pFromJSVal #-}

instance ToJSVal VisualViewport where
  toJSVal = return . unVisualViewport
  {-# INLINE toJSVal #-}

instance FromJSVal VisualViewport where
  fromJSVal v = fmap VisualViewport <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . VisualViewport
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject VisualViewport where
  makeObject = makeObject . unVisualViewport

instance IsEventTarget VisualViewport

instance IsGObject VisualViewport where
  typeGType _ = gTypeVisualViewport
  {-# INLINE typeGType #-}

noVisualViewport :: Maybe VisualViewport
noVisualViewport = Nothing
{-# INLINE noVisualViewport #-}

gTypeVisualViewport :: JSM GType
gTypeVisualViewport = GType . Object <$> jsg "VisualViewport"

-- | Functions for this interface are in "JSDOM.WEBGL_color_buffer_float" (WEBGL_color_buffer_float).
newtype WEBGL_color_buffer_float = WEBGL_color_buffer_float { unWEBGL_color_buffer_float :: JSVal }

instance PToJSVal WEBGL_color_buffer_float where
  pToJSVal = unWEBGL_color_buffer_float
  {-# INLINE pToJSVal #-}

instance PFromJSVal WEBGL_color_buffer_float where
  pFromJSVal = WEBGL_color_buffer_float
  {-# INLINE pFromJSVal #-}

instance ToJSVal WEBGL_color_buffer_float where
  toJSVal = return . unWEBGL_color_buffer_float
  {-# INLINE toJSVal #-}

instance FromJSVal WEBGL_color_buffer_float where
  fromJSVal v = fmap WEBGL_color_buffer_float <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WEBGL_color_buffer_float
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WEBGL_color_buffer_float where
  makeObject = makeObject . unWEBGL_color_buffer_float


instance IsGObject WEBGL_color_buffer_float where
  typeGType _ = gTypeWEBGL_color_buffer_float
  {-# INLINE typeGType #-}

noWEBGL_color_buffer_float :: Maybe WEBGL_color_buffer_float
noWEBGL_color_buffer_float = Nothing
{-# INLINE noWEBGL_color_buffer_float #-}

gTypeWEBGL_color_buffer_float :: JSM GType
gTypeWEBGL_color_buffer_float = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WEBGL_compressed_texture_astc" (WEBGL_compressed_texture_astc).
newtype WEBGL_compressed_texture_astc = WEBGL_compressed_texture_astc { unWEBGL_compressed_texture_astc :: JSVal }

instance PToJSVal WEBGL_compressed_texture_astc where
  pToJSVal = unWEBGL_compressed_texture_astc
  {-# INLINE pToJSVal #-}

instance PFromJSVal WEBGL_compressed_texture_astc where
  pFromJSVal = WEBGL_compressed_texture_astc
  {-# INLINE pFromJSVal #-}

instance ToJSVal WEBGL_compressed_texture_astc where
  toJSVal = return . unWEBGL_compressed_texture_astc
  {-# INLINE toJSVal #-}

instance FromJSVal WEBGL_compressed_texture_astc where
  fromJSVal v = fmap WEBGL_compressed_texture_astc <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WEBGL_compressed_texture_astc
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WEBGL_compressed_texture_astc where
  makeObject = makeObject . unWEBGL_compressed_texture_astc


instance IsGObject WEBGL_compressed_texture_astc where
  typeGType _ = gTypeWEBGL_compressed_texture_astc
  {-# INLINE typeGType #-}

noWEBGL_compressed_texture_astc :: Maybe WEBGL_compressed_texture_astc
noWEBGL_compressed_texture_astc = Nothing
{-# INLINE noWEBGL_compressed_texture_astc #-}

gTypeWEBGL_compressed_texture_astc :: JSM GType
gTypeWEBGL_compressed_texture_astc = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WEBGL_compressed_texture_etc" (WEBGL_compressed_texture_etc).
newtype WEBGL_compressed_texture_etc = WEBGL_compressed_texture_etc { unWEBGL_compressed_texture_etc :: JSVal }

instance PToJSVal WEBGL_compressed_texture_etc where
  pToJSVal = unWEBGL_compressed_texture_etc
  {-# INLINE pToJSVal #-}

instance PFromJSVal WEBGL_compressed_texture_etc where
  pFromJSVal = WEBGL_compressed_texture_etc
  {-# INLINE pFromJSVal #-}

instance ToJSVal WEBGL_compressed_texture_etc where
  toJSVal = return . unWEBGL_compressed_texture_etc
  {-# INLINE toJSVal #-}

instance FromJSVal WEBGL_compressed_texture_etc where
  fromJSVal v = fmap WEBGL_compressed_texture_etc <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WEBGL_compressed_texture_etc
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WEBGL_compressed_texture_etc where
  makeObject = makeObject . unWEBGL_compressed_texture_etc


instance IsGObject WEBGL_compressed_texture_etc where
  typeGType _ = gTypeWEBGL_compressed_texture_etc
  {-# INLINE typeGType #-}

noWEBGL_compressed_texture_etc :: Maybe WEBGL_compressed_texture_etc
noWEBGL_compressed_texture_etc = Nothing
{-# INLINE noWEBGL_compressed_texture_etc #-}

gTypeWEBGL_compressed_texture_etc :: JSM GType
gTypeWEBGL_compressed_texture_etc = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WEBGL_compressed_texture_etc1" (WEBGL_compressed_texture_etc1).
newtype WEBGL_compressed_texture_etc1 = WEBGL_compressed_texture_etc1 { unWEBGL_compressed_texture_etc1 :: JSVal }

instance PToJSVal WEBGL_compressed_texture_etc1 where
  pToJSVal = unWEBGL_compressed_texture_etc1
  {-# INLINE pToJSVal #-}

instance PFromJSVal WEBGL_compressed_texture_etc1 where
  pFromJSVal = WEBGL_compressed_texture_etc1
  {-# INLINE pFromJSVal #-}

instance ToJSVal WEBGL_compressed_texture_etc1 where
  toJSVal = return . unWEBGL_compressed_texture_etc1
  {-# INLINE toJSVal #-}

instance FromJSVal WEBGL_compressed_texture_etc1 where
  fromJSVal v = fmap WEBGL_compressed_texture_etc1 <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WEBGL_compressed_texture_etc1
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WEBGL_compressed_texture_etc1 where
  makeObject = makeObject . unWEBGL_compressed_texture_etc1


instance IsGObject WEBGL_compressed_texture_etc1 where
  typeGType _ = gTypeWEBGL_compressed_texture_etc1
  {-# INLINE typeGType #-}

noWEBGL_compressed_texture_etc1 :: Maybe WEBGL_compressed_texture_etc1
noWEBGL_compressed_texture_etc1 = Nothing
{-# INLINE noWEBGL_compressed_texture_etc1 #-}

gTypeWEBGL_compressed_texture_etc1 :: JSM GType
gTypeWEBGL_compressed_texture_etc1 = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WEBGL_compressed_texture_pvrtc" (WEBGL_compressed_texture_pvrtc).
newtype WEBGL_compressed_texture_pvrtc = WEBGL_compressed_texture_pvrtc { unWEBGL_compressed_texture_pvrtc :: JSVal }

instance PToJSVal WEBGL_compressed_texture_pvrtc where
  pToJSVal = unWEBGL_compressed_texture_pvrtc
  {-# INLINE pToJSVal #-}

instance PFromJSVal WEBGL_compressed_texture_pvrtc where
  pFromJSVal = WEBGL_compressed_texture_pvrtc
  {-# INLINE pFromJSVal #-}

instance ToJSVal WEBGL_compressed_texture_pvrtc where
  toJSVal = return . unWEBGL_compressed_texture_pvrtc
  {-# INLINE toJSVal #-}

instance FromJSVal WEBGL_compressed_texture_pvrtc where
  fromJSVal v = fmap WEBGL_compressed_texture_pvrtc <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WEBGL_compressed_texture_pvrtc
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WEBGL_compressed_texture_pvrtc where
  makeObject = makeObject . unWEBGL_compressed_texture_pvrtc


instance IsGObject WEBGL_compressed_texture_pvrtc where
  typeGType _ = gTypeWEBGL_compressed_texture_pvrtc
  {-# INLINE typeGType #-}

noWEBGL_compressed_texture_pvrtc :: Maybe WEBGL_compressed_texture_pvrtc
noWEBGL_compressed_texture_pvrtc = Nothing
{-# INLINE noWEBGL_compressed_texture_pvrtc #-}

gTypeWEBGL_compressed_texture_pvrtc :: JSM GType
gTypeWEBGL_compressed_texture_pvrtc = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WEBGL_compressed_texture_s3tc" (WEBGL_compressed_texture_s3tc).
newtype WEBGL_compressed_texture_s3tc = WEBGL_compressed_texture_s3tc { unWEBGL_compressed_texture_s3tc :: JSVal }

instance PToJSVal WEBGL_compressed_texture_s3tc where
  pToJSVal = unWEBGL_compressed_texture_s3tc
  {-# INLINE pToJSVal #-}

instance PFromJSVal WEBGL_compressed_texture_s3tc where
  pFromJSVal = WEBGL_compressed_texture_s3tc
  {-# INLINE pFromJSVal #-}

instance ToJSVal WEBGL_compressed_texture_s3tc where
  toJSVal = return . unWEBGL_compressed_texture_s3tc
  {-# INLINE toJSVal #-}

instance FromJSVal WEBGL_compressed_texture_s3tc where
  fromJSVal v = fmap WEBGL_compressed_texture_s3tc <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WEBGL_compressed_texture_s3tc
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WEBGL_compressed_texture_s3tc where
  makeObject = makeObject . unWEBGL_compressed_texture_s3tc


instance IsGObject WEBGL_compressed_texture_s3tc where
  typeGType _ = gTypeWEBGL_compressed_texture_s3tc
  {-# INLINE typeGType #-}

noWEBGL_compressed_texture_s3tc :: Maybe WEBGL_compressed_texture_s3tc
noWEBGL_compressed_texture_s3tc = Nothing
{-# INLINE noWEBGL_compressed_texture_s3tc #-}

gTypeWEBGL_compressed_texture_s3tc :: JSM GType
gTypeWEBGL_compressed_texture_s3tc = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WEBGL_compressed_texture_s3tc_srgb" (WEBGL_compressed_texture_s3tc_srgb).
newtype WEBGL_compressed_texture_s3tc_srgb = WEBGL_compressed_texture_s3tc_srgb { unWEBGL_compressed_texture_s3tc_srgb :: JSVal }

instance PToJSVal WEBGL_compressed_texture_s3tc_srgb where
  pToJSVal = unWEBGL_compressed_texture_s3tc_srgb
  {-# INLINE pToJSVal #-}

instance PFromJSVal WEBGL_compressed_texture_s3tc_srgb where
  pFromJSVal = WEBGL_compressed_texture_s3tc_srgb
  {-# INLINE pFromJSVal #-}

instance ToJSVal WEBGL_compressed_texture_s3tc_srgb where
  toJSVal = return . unWEBGL_compressed_texture_s3tc_srgb
  {-# INLINE toJSVal #-}

instance FromJSVal WEBGL_compressed_texture_s3tc_srgb where
  fromJSVal v = fmap WEBGL_compressed_texture_s3tc_srgb <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WEBGL_compressed_texture_s3tc_srgb
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WEBGL_compressed_texture_s3tc_srgb where
  makeObject = makeObject . unWEBGL_compressed_texture_s3tc_srgb


instance IsGObject WEBGL_compressed_texture_s3tc_srgb where
  typeGType _ = gTypeWEBGL_compressed_texture_s3tc_srgb
  {-# INLINE typeGType #-}

noWEBGL_compressed_texture_s3tc_srgb :: Maybe WEBGL_compressed_texture_s3tc_srgb
noWEBGL_compressed_texture_s3tc_srgb = Nothing
{-# INLINE noWEBGL_compressed_texture_s3tc_srgb #-}

gTypeWEBGL_compressed_texture_s3tc_srgb :: JSM GType
gTypeWEBGL_compressed_texture_s3tc_srgb = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WEBGL_debug_renderer_info" (WEBGL_debug_renderer_info).
newtype WEBGL_debug_renderer_info = WEBGL_debug_renderer_info { unWEBGL_debug_renderer_info :: JSVal }

instance PToJSVal WEBGL_debug_renderer_info where
  pToJSVal = unWEBGL_debug_renderer_info
  {-# INLINE pToJSVal #-}

instance PFromJSVal WEBGL_debug_renderer_info where
  pFromJSVal = WEBGL_debug_renderer_info
  {-# INLINE pFromJSVal #-}

instance ToJSVal WEBGL_debug_renderer_info where
  toJSVal = return . unWEBGL_debug_renderer_info
  {-# INLINE toJSVal #-}

instance FromJSVal WEBGL_debug_renderer_info where
  fromJSVal v = fmap WEBGL_debug_renderer_info <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WEBGL_debug_renderer_info
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WEBGL_debug_renderer_info where
  makeObject = makeObject . unWEBGL_debug_renderer_info


instance IsGObject WEBGL_debug_renderer_info where
  typeGType _ = gTypeWEBGL_debug_renderer_info
  {-# INLINE typeGType #-}

noWEBGL_debug_renderer_info :: Maybe WEBGL_debug_renderer_info
noWEBGL_debug_renderer_info = Nothing
{-# INLINE noWEBGL_debug_renderer_info #-}

gTypeWEBGL_debug_renderer_info :: JSM GType
gTypeWEBGL_debug_renderer_info = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WEBGL_debug_shaders" (WEBGL_debug_shaders).
newtype WEBGL_debug_shaders = WEBGL_debug_shaders { unWEBGL_debug_shaders :: JSVal }

instance PToJSVal WEBGL_debug_shaders where
  pToJSVal = unWEBGL_debug_shaders
  {-# INLINE pToJSVal #-}

instance PFromJSVal WEBGL_debug_shaders where
  pFromJSVal = WEBGL_debug_shaders
  {-# INLINE pFromJSVal #-}

instance ToJSVal WEBGL_debug_shaders where
  toJSVal = return . unWEBGL_debug_shaders
  {-# INLINE toJSVal #-}

instance FromJSVal WEBGL_debug_shaders where
  fromJSVal v = fmap WEBGL_debug_shaders <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WEBGL_debug_shaders
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WEBGL_debug_shaders where
  makeObject = makeObject . unWEBGL_debug_shaders


instance IsGObject WEBGL_debug_shaders where
  typeGType _ = gTypeWEBGL_debug_shaders
  {-# INLINE typeGType #-}

noWEBGL_debug_shaders :: Maybe WEBGL_debug_shaders
noWEBGL_debug_shaders = Nothing
{-# INLINE noWEBGL_debug_shaders #-}

gTypeWEBGL_debug_shaders :: JSM GType
gTypeWEBGL_debug_shaders = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WEBGL_depth_texture" (WEBGL_depth_texture).
newtype WEBGL_depth_texture = WEBGL_depth_texture { unWEBGL_depth_texture :: JSVal }

instance PToJSVal WEBGL_depth_texture where
  pToJSVal = unWEBGL_depth_texture
  {-# INLINE pToJSVal #-}

instance PFromJSVal WEBGL_depth_texture where
  pFromJSVal = WEBGL_depth_texture
  {-# INLINE pFromJSVal #-}

instance ToJSVal WEBGL_depth_texture where
  toJSVal = return . unWEBGL_depth_texture
  {-# INLINE toJSVal #-}

instance FromJSVal WEBGL_depth_texture where
  fromJSVal v = fmap WEBGL_depth_texture <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WEBGL_depth_texture
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WEBGL_depth_texture where
  makeObject = makeObject . unWEBGL_depth_texture


instance IsGObject WEBGL_depth_texture where
  typeGType _ = gTypeWEBGL_depth_texture
  {-# INLINE typeGType #-}

noWEBGL_depth_texture :: Maybe WEBGL_depth_texture
noWEBGL_depth_texture = Nothing
{-# INLINE noWEBGL_depth_texture #-}

gTypeWEBGL_depth_texture :: JSM GType
gTypeWEBGL_depth_texture = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WEBGL_draw_buffers" (WEBGL_draw_buffers).
newtype WEBGL_draw_buffers = WEBGL_draw_buffers { unWEBGL_draw_buffers :: JSVal }

instance PToJSVal WEBGL_draw_buffers where
  pToJSVal = unWEBGL_draw_buffers
  {-# INLINE pToJSVal #-}

instance PFromJSVal WEBGL_draw_buffers where
  pFromJSVal = WEBGL_draw_buffers
  {-# INLINE pFromJSVal #-}

instance ToJSVal WEBGL_draw_buffers where
  toJSVal = return . unWEBGL_draw_buffers
  {-# INLINE toJSVal #-}

instance FromJSVal WEBGL_draw_buffers where
  fromJSVal v = fmap WEBGL_draw_buffers <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WEBGL_draw_buffers
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WEBGL_draw_buffers where
  makeObject = makeObject . unWEBGL_draw_buffers


instance IsGObject WEBGL_draw_buffers where
  typeGType _ = gTypeWEBGL_draw_buffers
  {-# INLINE typeGType #-}

noWEBGL_draw_buffers :: Maybe WEBGL_draw_buffers
noWEBGL_draw_buffers = Nothing
{-# INLINE noWEBGL_draw_buffers #-}

gTypeWEBGL_draw_buffers :: JSM GType
gTypeWEBGL_draw_buffers = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WEBGL_lose_context" (WEBGL_lose_context).
newtype WEBGL_lose_context = WEBGL_lose_context { unWEBGL_lose_context :: JSVal }

instance PToJSVal WEBGL_lose_context where
  pToJSVal = unWEBGL_lose_context
  {-# INLINE pToJSVal #-}

instance PFromJSVal WEBGL_lose_context where
  pFromJSVal = WEBGL_lose_context
  {-# INLINE pFromJSVal #-}

instance ToJSVal WEBGL_lose_context where
  toJSVal = return . unWEBGL_lose_context
  {-# INLINE toJSVal #-}

instance FromJSVal WEBGL_lose_context where
  fromJSVal v = fmap WEBGL_lose_context <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WEBGL_lose_context
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WEBGL_lose_context where
  makeObject = makeObject . unWEBGL_lose_context


instance IsGObject WEBGL_lose_context where
  typeGType _ = gTypeWEBGL_lose_context
  {-# INLINE typeGType #-}

noWEBGL_lose_context :: Maybe WEBGL_lose_context
noWEBGL_lose_context = Nothing
{-# INLINE noWEBGL_lose_context #-}

gTypeWEBGL_lose_context :: JSM GType
gTypeWEBGL_lose_context = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WEBGL_multi_draw" (WEBGL_multi_draw).
newtype WEBGL_multi_draw = WEBGL_multi_draw { unWEBGL_multi_draw :: JSVal }

instance PToJSVal WEBGL_multi_draw where
  pToJSVal = unWEBGL_multi_draw
  {-# INLINE pToJSVal #-}

instance PFromJSVal WEBGL_multi_draw where
  pFromJSVal = WEBGL_multi_draw
  {-# INLINE pFromJSVal #-}

instance ToJSVal WEBGL_multi_draw where
  toJSVal = return . unWEBGL_multi_draw
  {-# INLINE toJSVal #-}

instance FromJSVal WEBGL_multi_draw where
  fromJSVal v = fmap WEBGL_multi_draw <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WEBGL_multi_draw
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WEBGL_multi_draw where
  makeObject = makeObject . unWEBGL_multi_draw


instance IsGObject WEBGL_multi_draw where
  typeGType _ = gTypeWEBGL_multi_draw
  {-# INLINE typeGType #-}

noWEBGL_multi_draw :: Maybe WEBGL_multi_draw
noWEBGL_multi_draw = Nothing
{-# INLINE noWEBGL_multi_draw #-}

gTypeWEBGL_multi_draw :: JSM GType
gTypeWEBGL_multi_draw = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WGSLLanguageFeatures" (webgpu).
newtype WGSLLanguageFeatures = WGSLLanguageFeatures { unWGSLLanguageFeatures :: JSVal }

instance PToJSVal WGSLLanguageFeatures where
  pToJSVal = unWGSLLanguageFeatures
  {-# INLINE pToJSVal #-}

instance PFromJSVal WGSLLanguageFeatures where
  pFromJSVal = WGSLLanguageFeatures
  {-# INLINE pFromJSVal #-}

instance ToJSVal WGSLLanguageFeatures where
  toJSVal = return . unWGSLLanguageFeatures
  {-# INLINE toJSVal #-}

instance FromJSVal WGSLLanguageFeatures where
  fromJSVal v = fmap WGSLLanguageFeatures <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WGSLLanguageFeatures
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WGSLLanguageFeatures where
  makeObject = makeObject . unWGSLLanguageFeatures


instance IsGObject WGSLLanguageFeatures where
  typeGType _ = gTypeWGSLLanguageFeatures
  {-# INLINE typeGType #-}

noWGSLLanguageFeatures :: Maybe WGSLLanguageFeatures
noWGSLLanguageFeatures = Nothing
{-# INLINE noWGSLLanguageFeatures #-}

gTypeWGSLLanguageFeatures :: JSM GType
gTypeWGSLLanguageFeatures = GType . Object <$> jsg "WGSLLanguageFeatures"

-- | Functions for this interface are in "JSDOM.WakeLock" (screen-wake-lock).
newtype WakeLock = WakeLock { unWakeLock :: JSVal }

instance PToJSVal WakeLock where
  pToJSVal = unWakeLock
  {-# INLINE pToJSVal #-}

instance PFromJSVal WakeLock where
  pFromJSVal = WakeLock
  {-# INLINE pFromJSVal #-}

instance ToJSVal WakeLock where
  toJSVal = return . unWakeLock
  {-# INLINE toJSVal #-}

instance FromJSVal WakeLock where
  fromJSVal v = fmap WakeLock <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WakeLock
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WakeLock where
  makeObject = makeObject . unWakeLock


instance IsGObject WakeLock where
  typeGType _ = gTypeWakeLock
  {-# INLINE typeGType #-}

noWakeLock :: Maybe WakeLock
noWakeLock = Nothing
{-# INLINE noWakeLock #-}

gTypeWakeLock :: JSM GType
gTypeWakeLock = GType . Object <$> jsg "WakeLock"

-- | Functions for this interface are in "JSDOM.WakeLockSentinel" (screen-wake-lock).
newtype WakeLockSentinel = WakeLockSentinel { unWakeLockSentinel :: JSVal }

instance PToJSVal WakeLockSentinel where
  pToJSVal = unWakeLockSentinel
  {-# INLINE pToJSVal #-}

instance PFromJSVal WakeLockSentinel where
  pFromJSVal = WakeLockSentinel
  {-# INLINE pFromJSVal #-}

instance ToJSVal WakeLockSentinel where
  toJSVal = return . unWakeLockSentinel
  {-# INLINE toJSVal #-}

instance FromJSVal WakeLockSentinel where
  fromJSVal v = fmap WakeLockSentinel <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WakeLockSentinel
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WakeLockSentinel where
  makeObject = makeObject . unWakeLockSentinel

instance IsEventTarget WakeLockSentinel

instance IsGObject WakeLockSentinel where
  typeGType _ = gTypeWakeLockSentinel
  {-# INLINE typeGType #-}

noWakeLockSentinel :: Maybe WakeLockSentinel
noWakeLockSentinel = Nothing
{-# INLINE noWakeLockSentinel #-}

gTypeWakeLockSentinel :: JSM GType
gTypeWakeLockSentinel = GType . Object <$> jsg "WakeLockSentinel"

-- | Functions for this interface are in "JSDOM.WaveShaperNode" (webaudio-1.1).
newtype WaveShaperNode = WaveShaperNode { unWaveShaperNode :: JSVal }

instance PToJSVal WaveShaperNode where
  pToJSVal = unWaveShaperNode
  {-# INLINE pToJSVal #-}

instance PFromJSVal WaveShaperNode where
  pFromJSVal = WaveShaperNode
  {-# INLINE pFromJSVal #-}

instance ToJSVal WaveShaperNode where
  toJSVal = return . unWaveShaperNode
  {-# INLINE toJSVal #-}

instance FromJSVal WaveShaperNode where
  fromJSVal v = fmap WaveShaperNode <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WaveShaperNode
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WaveShaperNode where
  makeObject = makeObject . unWaveShaperNode

instance IsAudioNode WaveShaperNode
instance IsEventTarget WaveShaperNode

instance IsGObject WaveShaperNode where
  typeGType _ = gTypeWaveShaperNode
  {-# INLINE typeGType #-}

noWaveShaperNode :: Maybe WaveShaperNode
noWaveShaperNode = Nothing
{-# INLINE noWaveShaperNode #-}

gTypeWaveShaperNode :: JSM GType
gTypeWaveShaperNode = GType . Object <$> jsg "WaveShaperNode"

-- | Dictionary WaveShaperOptions (webaudio-1.1)
newtype WaveShaperOptions = WaveShaperOptions { unWaveShaperOptions :: JSVal }

instance PToJSVal WaveShaperOptions where
  pToJSVal = unWaveShaperOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal WaveShaperOptions where
  pFromJSVal = WaveShaperOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal WaveShaperOptions where
  toJSVal = return . unWaveShaperOptions
  {-# INLINE toJSVal #-}

instance FromJSVal WaveShaperOptions where
  fromJSVal v = fmap WaveShaperOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WaveShaperOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WaveShaperOptions where
  makeObject = makeObject . unWaveShaperOptions

instance IsAudioNodeOptions WaveShaperOptions

instance IsGObject WaveShaperOptions where
  typeGType _ = gTypeWaveShaperOptions
  {-# INLINE typeGType #-}

noWaveShaperOptions :: Maybe WaveShaperOptions
noWaveShaperOptions = Nothing
{-# INLINE noWaveShaperOptions #-}

gTypeWaveShaperOptions :: JSM GType
gTypeWaveShaperOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebGL2RenderingContext" (webgl2).
newtype WebGL2RenderingContext = WebGL2RenderingContext { unWebGL2RenderingContext :: JSVal }

instance PToJSVal WebGL2RenderingContext where
  pToJSVal = unWebGL2RenderingContext
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGL2RenderingContext where
  pFromJSVal = WebGL2RenderingContext
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGL2RenderingContext where
  toJSVal = return . unWebGL2RenderingContext
  {-# INLINE toJSVal #-}

instance FromJSVal WebGL2RenderingContext where
  fromJSVal v = fmap WebGL2RenderingContext <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGL2RenderingContext
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGL2RenderingContext where
  makeObject = makeObject . unWebGL2RenderingContext

instance IsWebGL2RenderingContextBase WebGL2RenderingContext
instance IsWebGL2RenderingContextOverloads WebGL2RenderingContext
instance IsWebGLRenderingContextBase WebGL2RenderingContext

instance IsGObject WebGL2RenderingContext where
  typeGType _ = gTypeWebGL2RenderingContext
  {-# INLINE typeGType #-}

noWebGL2RenderingContext :: Maybe WebGL2RenderingContext
noWebGL2RenderingContext = Nothing
{-# INLINE noWebGL2RenderingContext #-}

gTypeWebGL2RenderingContext :: JSM GType
gTypeWebGL2RenderingContext = GType . Object <$> jsg "WebGL2RenderingContext"

-- | Functions for this interface are in "JSDOM.WebGL2RenderingContextBase" (webgl2).
newtype WebGL2RenderingContextBase = WebGL2RenderingContextBase { unWebGL2RenderingContextBase :: JSVal }

instance PToJSVal WebGL2RenderingContextBase where
  pToJSVal = unWebGL2RenderingContextBase
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGL2RenderingContextBase where
  pFromJSVal = WebGL2RenderingContextBase
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGL2RenderingContextBase where
  toJSVal = return . unWebGL2RenderingContextBase
  {-# INLINE toJSVal #-}

instance FromJSVal WebGL2RenderingContextBase where
  fromJSVal v = fmap WebGL2RenderingContextBase <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGL2RenderingContextBase
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGL2RenderingContextBase where
  makeObject = makeObject . unWebGL2RenderingContextBase

class (IsGObject o) => IsWebGL2RenderingContextBase o
toWebGL2RenderingContextBase :: IsWebGL2RenderingContextBase o => o -> WebGL2RenderingContextBase
toWebGL2RenderingContextBase = WebGL2RenderingContextBase . coerce

instance IsWebGL2RenderingContextBase WebGL2RenderingContextBase

instance IsGObject WebGL2RenderingContextBase where
  typeGType _ = gTypeWebGL2RenderingContextBase
  {-# INLINE typeGType #-}

noWebGL2RenderingContextBase :: Maybe WebGL2RenderingContextBase
noWebGL2RenderingContextBase = Nothing
{-# INLINE noWebGL2RenderingContextBase #-}

gTypeWebGL2RenderingContextBase :: JSM GType
gTypeWebGL2RenderingContextBase = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebGL2RenderingContextOverloads" (webgl2).
newtype WebGL2RenderingContextOverloads = WebGL2RenderingContextOverloads { unWebGL2RenderingContextOverloads :: JSVal }

instance PToJSVal WebGL2RenderingContextOverloads where
  pToJSVal = unWebGL2RenderingContextOverloads
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGL2RenderingContextOverloads where
  pFromJSVal = WebGL2RenderingContextOverloads
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGL2RenderingContextOverloads where
  toJSVal = return . unWebGL2RenderingContextOverloads
  {-# INLINE toJSVal #-}

instance FromJSVal WebGL2RenderingContextOverloads where
  fromJSVal v = fmap WebGL2RenderingContextOverloads <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGL2RenderingContextOverloads
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGL2RenderingContextOverloads where
  makeObject = makeObject . unWebGL2RenderingContextOverloads

class (IsGObject o) => IsWebGL2RenderingContextOverloads o
toWebGL2RenderingContextOverloads :: IsWebGL2RenderingContextOverloads o => o -> WebGL2RenderingContextOverloads
toWebGL2RenderingContextOverloads = WebGL2RenderingContextOverloads . coerce

instance IsWebGL2RenderingContextOverloads WebGL2RenderingContextOverloads

instance IsGObject WebGL2RenderingContextOverloads where
  typeGType _ = gTypeWebGL2RenderingContextOverloads
  {-# INLINE typeGType #-}

noWebGL2RenderingContextOverloads :: Maybe WebGL2RenderingContextOverloads
noWebGL2RenderingContextOverloads = Nothing
{-# INLINE noWebGL2RenderingContextOverloads #-}

gTypeWebGL2RenderingContextOverloads :: JSM GType
gTypeWebGL2RenderingContextOverloads = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebGLActiveInfo" (webgl1).
newtype WebGLActiveInfo = WebGLActiveInfo { unWebGLActiveInfo :: JSVal }

instance PToJSVal WebGLActiveInfo where
  pToJSVal = unWebGLActiveInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLActiveInfo where
  pFromJSVal = WebGLActiveInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLActiveInfo where
  toJSVal = return . unWebGLActiveInfo
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLActiveInfo where
  fromJSVal v = fmap WebGLActiveInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLActiveInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLActiveInfo where
  makeObject = makeObject . unWebGLActiveInfo


instance IsGObject WebGLActiveInfo where
  typeGType _ = gTypeWebGLActiveInfo
  {-# INLINE typeGType #-}

noWebGLActiveInfo :: Maybe WebGLActiveInfo
noWebGLActiveInfo = Nothing
{-# INLINE noWebGLActiveInfo #-}

gTypeWebGLActiveInfo :: JSM GType
gTypeWebGLActiveInfo = GType . Object <$> jsg "WebGLActiveInfo"

-- | Functions for this interface are in "JSDOM.WebGLBuffer" (webgl1).
newtype WebGLBuffer = WebGLBuffer { unWebGLBuffer :: JSVal }

instance PToJSVal WebGLBuffer where
  pToJSVal = unWebGLBuffer
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLBuffer where
  pFromJSVal = WebGLBuffer
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLBuffer where
  toJSVal = return . unWebGLBuffer
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLBuffer where
  fromJSVal v = fmap WebGLBuffer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLBuffer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLBuffer where
  makeObject = makeObject . unWebGLBuffer

instance IsWebGLObject WebGLBuffer

instance IsGObject WebGLBuffer where
  typeGType _ = gTypeWebGLBuffer
  {-# INLINE typeGType #-}

noWebGLBuffer :: Maybe WebGLBuffer
noWebGLBuffer = Nothing
{-# INLINE noWebGLBuffer #-}

gTypeWebGLBuffer :: JSM GType
gTypeWebGLBuffer = GType . Object <$> jsg "WebGLBuffer"

-- | Dictionary WebGLContextAttributes (webgl1)
newtype WebGLContextAttributes = WebGLContextAttributes { unWebGLContextAttributes :: JSVal }

instance PToJSVal WebGLContextAttributes where
  pToJSVal = unWebGLContextAttributes
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLContextAttributes where
  pFromJSVal = WebGLContextAttributes
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLContextAttributes where
  toJSVal = return . unWebGLContextAttributes
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLContextAttributes where
  fromJSVal v = fmap WebGLContextAttributes <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLContextAttributes
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLContextAttributes where
  makeObject = makeObject . unWebGLContextAttributes


instance IsGObject WebGLContextAttributes where
  typeGType _ = gTypeWebGLContextAttributes
  {-# INLINE typeGType #-}

noWebGLContextAttributes :: Maybe WebGLContextAttributes
noWebGLContextAttributes = Nothing
{-# INLINE noWebGLContextAttributes #-}

gTypeWebGLContextAttributes :: JSM GType
gTypeWebGLContextAttributes = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebGLContextEvent" (webgl1).
newtype WebGLContextEvent = WebGLContextEvent { unWebGLContextEvent :: JSVal }

instance PToJSVal WebGLContextEvent where
  pToJSVal = unWebGLContextEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLContextEvent where
  pFromJSVal = WebGLContextEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLContextEvent where
  toJSVal = return . unWebGLContextEvent
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLContextEvent where
  fromJSVal v = fmap WebGLContextEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLContextEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLContextEvent where
  makeObject = makeObject . unWebGLContextEvent

instance IsEvent WebGLContextEvent

instance IsGObject WebGLContextEvent where
  typeGType _ = gTypeWebGLContextEvent
  {-# INLINE typeGType #-}

noWebGLContextEvent :: Maybe WebGLContextEvent
noWebGLContextEvent = Nothing
{-# INLINE noWebGLContextEvent #-}

gTypeWebGLContextEvent :: JSM GType
gTypeWebGLContextEvent = GType . Object <$> jsg "WebGLContextEvent"

-- | Dictionary WebGLContextEventInit (webgl1)
newtype WebGLContextEventInit = WebGLContextEventInit { unWebGLContextEventInit :: JSVal }

instance PToJSVal WebGLContextEventInit where
  pToJSVal = unWebGLContextEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLContextEventInit where
  pFromJSVal = WebGLContextEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLContextEventInit where
  toJSVal = return . unWebGLContextEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLContextEventInit where
  fromJSVal v = fmap WebGLContextEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLContextEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLContextEventInit where
  makeObject = makeObject . unWebGLContextEventInit

instance IsEventInit WebGLContextEventInit

instance IsGObject WebGLContextEventInit where
  typeGType _ = gTypeWebGLContextEventInit
  {-# INLINE typeGType #-}

noWebGLContextEventInit :: Maybe WebGLContextEventInit
noWebGLContextEventInit = Nothing
{-# INLINE noWebGLContextEventInit #-}

gTypeWebGLContextEventInit :: JSM GType
gTypeWebGLContextEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebGLFramebuffer" (webgl1).
newtype WebGLFramebuffer = WebGLFramebuffer { unWebGLFramebuffer :: JSVal }

instance PToJSVal WebGLFramebuffer where
  pToJSVal = unWebGLFramebuffer
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLFramebuffer where
  pFromJSVal = WebGLFramebuffer
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLFramebuffer where
  toJSVal = return . unWebGLFramebuffer
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLFramebuffer where
  fromJSVal v = fmap WebGLFramebuffer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLFramebuffer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLFramebuffer where
  makeObject = makeObject . unWebGLFramebuffer

instance IsWebGLObject WebGLFramebuffer

instance IsGObject WebGLFramebuffer where
  typeGType _ = gTypeWebGLFramebuffer
  {-# INLINE typeGType #-}

noWebGLFramebuffer :: Maybe WebGLFramebuffer
noWebGLFramebuffer = Nothing
{-# INLINE noWebGLFramebuffer #-}

gTypeWebGLFramebuffer :: JSM GType
gTypeWebGLFramebuffer = GType . Object <$> jsg "WebGLFramebuffer"

-- | Functions for this interface are in "JSDOM.WebGLObject" (webgl1).
newtype WebGLObject = WebGLObject { unWebGLObject :: JSVal }

instance PToJSVal WebGLObject where
  pToJSVal = unWebGLObject
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLObject where
  pFromJSVal = WebGLObject
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLObject where
  toJSVal = return . unWebGLObject
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLObject where
  fromJSVal v = fmap WebGLObject <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLObject
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLObject where
  makeObject = makeObject . unWebGLObject

class (IsGObject o) => IsWebGLObject o
toWebGLObject :: IsWebGLObject o => o -> WebGLObject
toWebGLObject = WebGLObject . coerce

instance IsWebGLObject WebGLObject

instance IsGObject WebGLObject where
  typeGType _ = gTypeWebGLObject
  {-# INLINE typeGType #-}

noWebGLObject :: Maybe WebGLObject
noWebGLObject = Nothing
{-# INLINE noWebGLObject #-}

gTypeWebGLObject :: JSM GType
gTypeWebGLObject = GType . Object <$> jsg "WebGLObject"

-- | Functions for this interface are in "JSDOM.WebGLProgram" (webgl1).
newtype WebGLProgram = WebGLProgram { unWebGLProgram :: JSVal }

instance PToJSVal WebGLProgram where
  pToJSVal = unWebGLProgram
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLProgram where
  pFromJSVal = WebGLProgram
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLProgram where
  toJSVal = return . unWebGLProgram
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLProgram where
  fromJSVal v = fmap WebGLProgram <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLProgram
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLProgram where
  makeObject = makeObject . unWebGLProgram

instance IsWebGLObject WebGLProgram

instance IsGObject WebGLProgram where
  typeGType _ = gTypeWebGLProgram
  {-# INLINE typeGType #-}

noWebGLProgram :: Maybe WebGLProgram
noWebGLProgram = Nothing
{-# INLINE noWebGLProgram #-}

gTypeWebGLProgram :: JSM GType
gTypeWebGLProgram = GType . Object <$> jsg "WebGLProgram"

-- | Functions for this interface are in "JSDOM.WebGLQuery" (webgl2).
newtype WebGLQuery = WebGLQuery { unWebGLQuery :: JSVal }

instance PToJSVal WebGLQuery where
  pToJSVal = unWebGLQuery
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLQuery where
  pFromJSVal = WebGLQuery
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLQuery where
  toJSVal = return . unWebGLQuery
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLQuery where
  fromJSVal v = fmap WebGLQuery <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLQuery
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLQuery where
  makeObject = makeObject . unWebGLQuery

instance IsWebGLObject WebGLQuery

instance IsGObject WebGLQuery where
  typeGType _ = gTypeWebGLQuery
  {-# INLINE typeGType #-}

noWebGLQuery :: Maybe WebGLQuery
noWebGLQuery = Nothing
{-# INLINE noWebGLQuery #-}

gTypeWebGLQuery :: JSM GType
gTypeWebGLQuery = GType . Object <$> jsg "WebGLQuery"

-- | Functions for this interface are in "JSDOM.WebGLRenderbuffer" (webgl1).
newtype WebGLRenderbuffer = WebGLRenderbuffer { unWebGLRenderbuffer :: JSVal }

instance PToJSVal WebGLRenderbuffer where
  pToJSVal = unWebGLRenderbuffer
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLRenderbuffer where
  pFromJSVal = WebGLRenderbuffer
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLRenderbuffer where
  toJSVal = return . unWebGLRenderbuffer
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLRenderbuffer where
  fromJSVal v = fmap WebGLRenderbuffer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLRenderbuffer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLRenderbuffer where
  makeObject = makeObject . unWebGLRenderbuffer

instance IsWebGLObject WebGLRenderbuffer

instance IsGObject WebGLRenderbuffer where
  typeGType _ = gTypeWebGLRenderbuffer
  {-# INLINE typeGType #-}

noWebGLRenderbuffer :: Maybe WebGLRenderbuffer
noWebGLRenderbuffer = Nothing
{-# INLINE noWebGLRenderbuffer #-}

gTypeWebGLRenderbuffer :: JSM GType
gTypeWebGLRenderbuffer = GType . Object <$> jsg "WebGLRenderbuffer"

-- | Functions for this interface are in "JSDOM.WebGLRenderingContext" (webgl1).
newtype WebGLRenderingContext = WebGLRenderingContext { unWebGLRenderingContext :: JSVal }

instance PToJSVal WebGLRenderingContext where
  pToJSVal = unWebGLRenderingContext
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLRenderingContext where
  pFromJSVal = WebGLRenderingContext
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLRenderingContext where
  toJSVal = return . unWebGLRenderingContext
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLRenderingContext where
  fromJSVal v = fmap WebGLRenderingContext <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLRenderingContext
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLRenderingContext where
  makeObject = makeObject . unWebGLRenderingContext

instance IsWebGLRenderingContextBase WebGLRenderingContext
instance IsWebGLRenderingContextOverloads WebGLRenderingContext

instance IsGObject WebGLRenderingContext where
  typeGType _ = gTypeWebGLRenderingContext
  {-# INLINE typeGType #-}

noWebGLRenderingContext :: Maybe WebGLRenderingContext
noWebGLRenderingContext = Nothing
{-# INLINE noWebGLRenderingContext #-}

gTypeWebGLRenderingContext :: JSM GType
gTypeWebGLRenderingContext = GType . Object <$> jsg "WebGLRenderingContext"

-- | Functions for this interface are in "JSDOM.WebGLRenderingContextBase" (webgl1).
newtype WebGLRenderingContextBase = WebGLRenderingContextBase { unWebGLRenderingContextBase :: JSVal }

instance PToJSVal WebGLRenderingContextBase where
  pToJSVal = unWebGLRenderingContextBase
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLRenderingContextBase where
  pFromJSVal = WebGLRenderingContextBase
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLRenderingContextBase where
  toJSVal = return . unWebGLRenderingContextBase
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLRenderingContextBase where
  fromJSVal v = fmap WebGLRenderingContextBase <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLRenderingContextBase
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLRenderingContextBase where
  makeObject = makeObject . unWebGLRenderingContextBase

class (IsGObject o) => IsWebGLRenderingContextBase o
toWebGLRenderingContextBase :: IsWebGLRenderingContextBase o => o -> WebGLRenderingContextBase
toWebGLRenderingContextBase = WebGLRenderingContextBase . coerce

instance IsWebGLRenderingContextBase WebGLRenderingContextBase

instance IsGObject WebGLRenderingContextBase where
  typeGType _ = gTypeWebGLRenderingContextBase
  {-# INLINE typeGType #-}

noWebGLRenderingContextBase :: Maybe WebGLRenderingContextBase
noWebGLRenderingContextBase = Nothing
{-# INLINE noWebGLRenderingContextBase #-}

gTypeWebGLRenderingContextBase :: JSM GType
gTypeWebGLRenderingContextBase = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebGLRenderingContextOverloads" (webgl1).
newtype WebGLRenderingContextOverloads = WebGLRenderingContextOverloads { unWebGLRenderingContextOverloads :: JSVal }

instance PToJSVal WebGLRenderingContextOverloads where
  pToJSVal = unWebGLRenderingContextOverloads
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLRenderingContextOverloads where
  pFromJSVal = WebGLRenderingContextOverloads
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLRenderingContextOverloads where
  toJSVal = return . unWebGLRenderingContextOverloads
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLRenderingContextOverloads where
  fromJSVal v = fmap WebGLRenderingContextOverloads <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLRenderingContextOverloads
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLRenderingContextOverloads where
  makeObject = makeObject . unWebGLRenderingContextOverloads

class (IsGObject o) => IsWebGLRenderingContextOverloads o
toWebGLRenderingContextOverloads :: IsWebGLRenderingContextOverloads o => o -> WebGLRenderingContextOverloads
toWebGLRenderingContextOverloads = WebGLRenderingContextOverloads . coerce

instance IsWebGLRenderingContextOverloads WebGLRenderingContextOverloads

instance IsGObject WebGLRenderingContextOverloads where
  typeGType _ = gTypeWebGLRenderingContextOverloads
  {-# INLINE typeGType #-}

noWebGLRenderingContextOverloads :: Maybe WebGLRenderingContextOverloads
noWebGLRenderingContextOverloads = Nothing
{-# INLINE noWebGLRenderingContextOverloads #-}

gTypeWebGLRenderingContextOverloads :: JSM GType
gTypeWebGLRenderingContextOverloads = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebGLSampler" (webgl2).
newtype WebGLSampler = WebGLSampler { unWebGLSampler :: JSVal }

instance PToJSVal WebGLSampler where
  pToJSVal = unWebGLSampler
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLSampler where
  pFromJSVal = WebGLSampler
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLSampler where
  toJSVal = return . unWebGLSampler
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLSampler where
  fromJSVal v = fmap WebGLSampler <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLSampler
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLSampler where
  makeObject = makeObject . unWebGLSampler

instance IsWebGLObject WebGLSampler

instance IsGObject WebGLSampler where
  typeGType _ = gTypeWebGLSampler
  {-# INLINE typeGType #-}

noWebGLSampler :: Maybe WebGLSampler
noWebGLSampler = Nothing
{-# INLINE noWebGLSampler #-}

gTypeWebGLSampler :: JSM GType
gTypeWebGLSampler = GType . Object <$> jsg "WebGLSampler"

-- | Functions for this interface are in "JSDOM.WebGLShader" (webgl1).
newtype WebGLShader = WebGLShader { unWebGLShader :: JSVal }

instance PToJSVal WebGLShader where
  pToJSVal = unWebGLShader
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLShader where
  pFromJSVal = WebGLShader
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLShader where
  toJSVal = return . unWebGLShader
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLShader where
  fromJSVal v = fmap WebGLShader <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLShader
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLShader where
  makeObject = makeObject . unWebGLShader

instance IsWebGLObject WebGLShader

instance IsGObject WebGLShader where
  typeGType _ = gTypeWebGLShader
  {-# INLINE typeGType #-}

noWebGLShader :: Maybe WebGLShader
noWebGLShader = Nothing
{-# INLINE noWebGLShader #-}

gTypeWebGLShader :: JSM GType
gTypeWebGLShader = GType . Object <$> jsg "WebGLShader"

-- | Functions for this interface are in "JSDOM.WebGLShaderPrecisionFormat" (webgl1).
newtype WebGLShaderPrecisionFormat = WebGLShaderPrecisionFormat { unWebGLShaderPrecisionFormat :: JSVal }

instance PToJSVal WebGLShaderPrecisionFormat where
  pToJSVal = unWebGLShaderPrecisionFormat
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLShaderPrecisionFormat where
  pFromJSVal = WebGLShaderPrecisionFormat
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLShaderPrecisionFormat where
  toJSVal = return . unWebGLShaderPrecisionFormat
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLShaderPrecisionFormat where
  fromJSVal v = fmap WebGLShaderPrecisionFormat <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLShaderPrecisionFormat
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLShaderPrecisionFormat where
  makeObject = makeObject . unWebGLShaderPrecisionFormat


instance IsGObject WebGLShaderPrecisionFormat where
  typeGType _ = gTypeWebGLShaderPrecisionFormat
  {-# INLINE typeGType #-}

noWebGLShaderPrecisionFormat :: Maybe WebGLShaderPrecisionFormat
noWebGLShaderPrecisionFormat = Nothing
{-# INLINE noWebGLShaderPrecisionFormat #-}

gTypeWebGLShaderPrecisionFormat :: JSM GType
gTypeWebGLShaderPrecisionFormat = GType . Object <$> jsg "WebGLShaderPrecisionFormat"

-- | Functions for this interface are in "JSDOM.WebGLSync" (webgl2).
newtype WebGLSync = WebGLSync { unWebGLSync :: JSVal }

instance PToJSVal WebGLSync where
  pToJSVal = unWebGLSync
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLSync where
  pFromJSVal = WebGLSync
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLSync where
  toJSVal = return . unWebGLSync
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLSync where
  fromJSVal v = fmap WebGLSync <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLSync
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLSync where
  makeObject = makeObject . unWebGLSync

instance IsWebGLObject WebGLSync

instance IsGObject WebGLSync where
  typeGType _ = gTypeWebGLSync
  {-# INLINE typeGType #-}

noWebGLSync :: Maybe WebGLSync
noWebGLSync = Nothing
{-# INLINE noWebGLSync #-}

gTypeWebGLSync :: JSM GType
gTypeWebGLSync = GType . Object <$> jsg "WebGLSync"

-- | Functions for this interface are in "JSDOM.WebGLTexture" (webgl1).
newtype WebGLTexture = WebGLTexture { unWebGLTexture :: JSVal }

instance PToJSVal WebGLTexture where
  pToJSVal = unWebGLTexture
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLTexture where
  pFromJSVal = WebGLTexture
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLTexture where
  toJSVal = return . unWebGLTexture
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLTexture where
  fromJSVal v = fmap WebGLTexture <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLTexture
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLTexture where
  makeObject = makeObject . unWebGLTexture

instance IsWebGLObject WebGLTexture

instance IsGObject WebGLTexture where
  typeGType _ = gTypeWebGLTexture
  {-# INLINE typeGType #-}

noWebGLTexture :: Maybe WebGLTexture
noWebGLTexture = Nothing
{-# INLINE noWebGLTexture #-}

gTypeWebGLTexture :: JSM GType
gTypeWebGLTexture = GType . Object <$> jsg "WebGLTexture"

-- | Functions for this interface are in "JSDOM.WebGLTransformFeedback" (webgl2).
newtype WebGLTransformFeedback = WebGLTransformFeedback { unWebGLTransformFeedback :: JSVal }

instance PToJSVal WebGLTransformFeedback where
  pToJSVal = unWebGLTransformFeedback
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLTransformFeedback where
  pFromJSVal = WebGLTransformFeedback
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLTransformFeedback where
  toJSVal = return . unWebGLTransformFeedback
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLTransformFeedback where
  fromJSVal v = fmap WebGLTransformFeedback <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLTransformFeedback
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLTransformFeedback where
  makeObject = makeObject . unWebGLTransformFeedback

instance IsWebGLObject WebGLTransformFeedback

instance IsGObject WebGLTransformFeedback where
  typeGType _ = gTypeWebGLTransformFeedback
  {-# INLINE typeGType #-}

noWebGLTransformFeedback :: Maybe WebGLTransformFeedback
noWebGLTransformFeedback = Nothing
{-# INLINE noWebGLTransformFeedback #-}

gTypeWebGLTransformFeedback :: JSM GType
gTypeWebGLTransformFeedback = GType . Object <$> jsg "WebGLTransformFeedback"

-- | Functions for this interface are in "JSDOM.WebGLUniformLocation" (webgl1).
newtype WebGLUniformLocation = WebGLUniformLocation { unWebGLUniformLocation :: JSVal }

instance PToJSVal WebGLUniformLocation where
  pToJSVal = unWebGLUniformLocation
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLUniformLocation where
  pFromJSVal = WebGLUniformLocation
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLUniformLocation where
  toJSVal = return . unWebGLUniformLocation
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLUniformLocation where
  fromJSVal v = fmap WebGLUniformLocation <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLUniformLocation
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLUniformLocation where
  makeObject = makeObject . unWebGLUniformLocation


instance IsGObject WebGLUniformLocation where
  typeGType _ = gTypeWebGLUniformLocation
  {-# INLINE typeGType #-}

noWebGLUniformLocation :: Maybe WebGLUniformLocation
noWebGLUniformLocation = Nothing
{-# INLINE noWebGLUniformLocation #-}

gTypeWebGLUniformLocation :: JSM GType
gTypeWebGLUniformLocation = GType . Object <$> jsg "WebGLUniformLocation"

-- | Functions for this interface are in "JSDOM.WebGLVertexArrayObject" (webgl2).
newtype WebGLVertexArrayObject = WebGLVertexArrayObject { unWebGLVertexArrayObject :: JSVal }

instance PToJSVal WebGLVertexArrayObject where
  pToJSVal = unWebGLVertexArrayObject
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLVertexArrayObject where
  pFromJSVal = WebGLVertexArrayObject
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLVertexArrayObject where
  toJSVal = return . unWebGLVertexArrayObject
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLVertexArrayObject where
  fromJSVal v = fmap WebGLVertexArrayObject <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLVertexArrayObject
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLVertexArrayObject where
  makeObject = makeObject . unWebGLVertexArrayObject

instance IsWebGLObject WebGLVertexArrayObject

instance IsGObject WebGLVertexArrayObject where
  typeGType _ = gTypeWebGLVertexArrayObject
  {-# INLINE typeGType #-}

noWebGLVertexArrayObject :: Maybe WebGLVertexArrayObject
noWebGLVertexArrayObject = Nothing
{-# INLINE noWebGLVertexArrayObject #-}

gTypeWebGLVertexArrayObject :: JSM GType
gTypeWebGLVertexArrayObject = GType . Object <$> jsg "WebGLVertexArrayObject"

-- | Functions for this interface are in "JSDOM.WebGLVertexArrayObjectOES" (OES_vertex_array_object).
newtype WebGLVertexArrayObjectOES = WebGLVertexArrayObjectOES { unWebGLVertexArrayObjectOES :: JSVal }

instance PToJSVal WebGLVertexArrayObjectOES where
  pToJSVal = unWebGLVertexArrayObjectOES
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebGLVertexArrayObjectOES where
  pFromJSVal = WebGLVertexArrayObjectOES
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebGLVertexArrayObjectOES where
  toJSVal = return . unWebGLVertexArrayObjectOES
  {-# INLINE toJSVal #-}

instance FromJSVal WebGLVertexArrayObjectOES where
  fromJSVal v = fmap WebGLVertexArrayObjectOES <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebGLVertexArrayObjectOES
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebGLVertexArrayObjectOES where
  makeObject = makeObject . unWebGLVertexArrayObjectOES

instance IsWebGLObject WebGLVertexArrayObjectOES

instance IsGObject WebGLVertexArrayObjectOES where
  typeGType _ = gTypeWebGLVertexArrayObjectOES
  {-# INLINE typeGType #-}

noWebGLVertexArrayObjectOES :: Maybe WebGLVertexArrayObjectOES
noWebGLVertexArrayObjectOES = Nothing
{-# INLINE noWebGLVertexArrayObjectOES #-}

gTypeWebGLVertexArrayObjectOES :: JSM GType
gTypeWebGLVertexArrayObjectOES = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebSocket" (websockets).
newtype WebSocket = WebSocket { unWebSocket :: JSVal }

instance PToJSVal WebSocket where
  pToJSVal = unWebSocket
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebSocket where
  pFromJSVal = WebSocket
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebSocket where
  toJSVal = return . unWebSocket
  {-# INLINE toJSVal #-}

instance FromJSVal WebSocket where
  fromJSVal v = fmap WebSocket <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebSocket
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebSocket where
  makeObject = makeObject . unWebSocket

instance IsEventTarget WebSocket

instance IsGObject WebSocket where
  typeGType _ = gTypeWebSocket
  {-# INLINE typeGType #-}

noWebSocket :: Maybe WebSocket
noWebSocket = Nothing
{-# INLINE noWebSocket #-}

gTypeWebSocket :: JSM GType
gTypeWebSocket = GType . Object <$> jsg "WebSocket"

-- | Functions for this interface are in "JSDOM.WebTransport" (webtransport).
newtype WebTransport = WebTransport { unWebTransport :: JSVal }

instance PToJSVal WebTransport where
  pToJSVal = unWebTransport
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransport where
  pFromJSVal = WebTransport
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransport where
  toJSVal = return . unWebTransport
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransport where
  fromJSVal v = fmap WebTransport <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransport
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransport where
  makeObject = makeObject . unWebTransport


instance IsGObject WebTransport where
  typeGType _ = gTypeWebTransport
  {-# INLINE typeGType #-}

noWebTransport :: Maybe WebTransport
noWebTransport = Nothing
{-# INLINE noWebTransport #-}

gTypeWebTransport :: JSM GType
gTypeWebTransport = GType . Object <$> jsg "WebTransport"

-- | Functions for this interface are in "JSDOM.WebTransportBidirectionalStream" (webtransport).
newtype WebTransportBidirectionalStream = WebTransportBidirectionalStream { unWebTransportBidirectionalStream :: JSVal }

instance PToJSVal WebTransportBidirectionalStream where
  pToJSVal = unWebTransportBidirectionalStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportBidirectionalStream where
  pFromJSVal = WebTransportBidirectionalStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportBidirectionalStream where
  toJSVal = return . unWebTransportBidirectionalStream
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportBidirectionalStream where
  fromJSVal v = fmap WebTransportBidirectionalStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportBidirectionalStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportBidirectionalStream where
  makeObject = makeObject . unWebTransportBidirectionalStream


instance IsGObject WebTransportBidirectionalStream where
  typeGType _ = gTypeWebTransportBidirectionalStream
  {-# INLINE typeGType #-}

noWebTransportBidirectionalStream :: Maybe WebTransportBidirectionalStream
noWebTransportBidirectionalStream = Nothing
{-# INLINE noWebTransportBidirectionalStream #-}

gTypeWebTransportBidirectionalStream :: JSM GType
gTypeWebTransportBidirectionalStream = GType . Object <$> jsg "WebTransportBidirectionalStream"

-- | Dictionary WebTransportCloseInfo (webtransport)
newtype WebTransportCloseInfo = WebTransportCloseInfo { unWebTransportCloseInfo :: JSVal }

instance PToJSVal WebTransportCloseInfo where
  pToJSVal = unWebTransportCloseInfo
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportCloseInfo where
  pFromJSVal = WebTransportCloseInfo
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportCloseInfo where
  toJSVal = return . unWebTransportCloseInfo
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportCloseInfo where
  fromJSVal v = fmap WebTransportCloseInfo <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportCloseInfo
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportCloseInfo where
  makeObject = makeObject . unWebTransportCloseInfo


instance IsGObject WebTransportCloseInfo where
  typeGType _ = gTypeWebTransportCloseInfo
  {-# INLINE typeGType #-}

noWebTransportCloseInfo :: Maybe WebTransportCloseInfo
noWebTransportCloseInfo = Nothing
{-# INLINE noWebTransportCloseInfo #-}

gTypeWebTransportCloseInfo :: JSM GType
gTypeWebTransportCloseInfo = GType . Object <$> jsg "Object"

-- | Dictionary WebTransportConnectionStats (webtransport)
newtype WebTransportConnectionStats = WebTransportConnectionStats { unWebTransportConnectionStats :: JSVal }

instance PToJSVal WebTransportConnectionStats where
  pToJSVal = unWebTransportConnectionStats
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportConnectionStats where
  pFromJSVal = WebTransportConnectionStats
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportConnectionStats where
  toJSVal = return . unWebTransportConnectionStats
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportConnectionStats where
  fromJSVal v = fmap WebTransportConnectionStats <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportConnectionStats
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportConnectionStats where
  makeObject = makeObject . unWebTransportConnectionStats


instance IsGObject WebTransportConnectionStats where
  typeGType _ = gTypeWebTransportConnectionStats
  {-# INLINE typeGType #-}

noWebTransportConnectionStats :: Maybe WebTransportConnectionStats
noWebTransportConnectionStats = Nothing
{-# INLINE noWebTransportConnectionStats #-}

gTypeWebTransportConnectionStats :: JSM GType
gTypeWebTransportConnectionStats = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebTransportDatagramDuplexStream" (webtransport).
newtype WebTransportDatagramDuplexStream = WebTransportDatagramDuplexStream { unWebTransportDatagramDuplexStream :: JSVal }

instance PToJSVal WebTransportDatagramDuplexStream where
  pToJSVal = unWebTransportDatagramDuplexStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportDatagramDuplexStream where
  pFromJSVal = WebTransportDatagramDuplexStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportDatagramDuplexStream where
  toJSVal = return . unWebTransportDatagramDuplexStream
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportDatagramDuplexStream where
  fromJSVal v = fmap WebTransportDatagramDuplexStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportDatagramDuplexStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportDatagramDuplexStream where
  makeObject = makeObject . unWebTransportDatagramDuplexStream


instance IsGObject WebTransportDatagramDuplexStream where
  typeGType _ = gTypeWebTransportDatagramDuplexStream
  {-# INLINE typeGType #-}

noWebTransportDatagramDuplexStream :: Maybe WebTransportDatagramDuplexStream
noWebTransportDatagramDuplexStream = Nothing
{-# INLINE noWebTransportDatagramDuplexStream #-}

gTypeWebTransportDatagramDuplexStream :: JSM GType
gTypeWebTransportDatagramDuplexStream = GType . Object <$> jsg "WebTransportDatagramDuplexStream"

-- | Dictionary WebTransportDatagramStats (webtransport)
newtype WebTransportDatagramStats = WebTransportDatagramStats { unWebTransportDatagramStats :: JSVal }

instance PToJSVal WebTransportDatagramStats where
  pToJSVal = unWebTransportDatagramStats
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportDatagramStats where
  pFromJSVal = WebTransportDatagramStats
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportDatagramStats where
  toJSVal = return . unWebTransportDatagramStats
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportDatagramStats where
  fromJSVal v = fmap WebTransportDatagramStats <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportDatagramStats
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportDatagramStats where
  makeObject = makeObject . unWebTransportDatagramStats


instance IsGObject WebTransportDatagramStats where
  typeGType _ = gTypeWebTransportDatagramStats
  {-# INLINE typeGType #-}

noWebTransportDatagramStats :: Maybe WebTransportDatagramStats
noWebTransportDatagramStats = Nothing
{-# INLINE noWebTransportDatagramStats #-}

gTypeWebTransportDatagramStats :: JSM GType
gTypeWebTransportDatagramStats = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebTransportDatagramsWritable" (webtransport).
newtype WebTransportDatagramsWritable = WebTransportDatagramsWritable { unWebTransportDatagramsWritable :: JSVal }

instance PToJSVal WebTransportDatagramsWritable where
  pToJSVal = unWebTransportDatagramsWritable
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportDatagramsWritable where
  pFromJSVal = WebTransportDatagramsWritable
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportDatagramsWritable where
  toJSVal = return . unWebTransportDatagramsWritable
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportDatagramsWritable where
  fromJSVal v = fmap WebTransportDatagramsWritable <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportDatagramsWritable
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportDatagramsWritable where
  makeObject = makeObject . unWebTransportDatagramsWritable

instance IsWritableStream WebTransportDatagramsWritable

instance IsGObject WebTransportDatagramsWritable where
  typeGType _ = gTypeWebTransportDatagramsWritable
  {-# INLINE typeGType #-}

noWebTransportDatagramsWritable :: Maybe WebTransportDatagramsWritable
noWebTransportDatagramsWritable = Nothing
{-# INLINE noWebTransportDatagramsWritable #-}

gTypeWebTransportDatagramsWritable :: JSM GType
gTypeWebTransportDatagramsWritable = GType . Object <$> jsg "WebTransportDatagramsWritable"

-- | Functions for this interface are in "JSDOM.WebTransportError" (webtransport).
newtype WebTransportError = WebTransportError { unWebTransportError :: JSVal }

instance PToJSVal WebTransportError where
  pToJSVal = unWebTransportError
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportError where
  pFromJSVal = WebTransportError
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportError where
  toJSVal = return . unWebTransportError
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportError where
  fromJSVal v = fmap WebTransportError <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportError
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportError where
  makeObject = makeObject . unWebTransportError

instance IsDOMException WebTransportError

instance IsGObject WebTransportError where
  typeGType _ = gTypeWebTransportError
  {-# INLINE typeGType #-}

noWebTransportError :: Maybe WebTransportError
noWebTransportError = Nothing
{-# INLINE noWebTransportError #-}

gTypeWebTransportError :: JSM GType
gTypeWebTransportError = GType . Object <$> jsg "WebTransportError"

-- | Dictionary WebTransportErrorOptions (webtransport)
newtype WebTransportErrorOptions = WebTransportErrorOptions { unWebTransportErrorOptions :: JSVal }

instance PToJSVal WebTransportErrorOptions where
  pToJSVal = unWebTransportErrorOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportErrorOptions where
  pFromJSVal = WebTransportErrorOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportErrorOptions where
  toJSVal = return . unWebTransportErrorOptions
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportErrorOptions where
  fromJSVal v = fmap WebTransportErrorOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportErrorOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportErrorOptions where
  makeObject = makeObject . unWebTransportErrorOptions


instance IsGObject WebTransportErrorOptions where
  typeGType _ = gTypeWebTransportErrorOptions
  {-# INLINE typeGType #-}

noWebTransportErrorOptions :: Maybe WebTransportErrorOptions
noWebTransportErrorOptions = Nothing
{-# INLINE noWebTransportErrorOptions #-}

gTypeWebTransportErrorOptions :: JSM GType
gTypeWebTransportErrorOptions = GType . Object <$> jsg "Object"

-- | Dictionary WebTransportHash (webtransport)
newtype WebTransportHash = WebTransportHash { unWebTransportHash :: JSVal }

instance PToJSVal WebTransportHash where
  pToJSVal = unWebTransportHash
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportHash where
  pFromJSVal = WebTransportHash
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportHash where
  toJSVal = return . unWebTransportHash
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportHash where
  fromJSVal v = fmap WebTransportHash <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportHash
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportHash where
  makeObject = makeObject . unWebTransportHash


instance IsGObject WebTransportHash where
  typeGType _ = gTypeWebTransportHash
  {-# INLINE typeGType #-}

noWebTransportHash :: Maybe WebTransportHash
noWebTransportHash = Nothing
{-# INLINE noWebTransportHash #-}

gTypeWebTransportHash :: JSM GType
gTypeWebTransportHash = GType . Object <$> jsg "Object"

-- | Dictionary WebTransportOptions (webtransport)
newtype WebTransportOptions = WebTransportOptions { unWebTransportOptions :: JSVal }

instance PToJSVal WebTransportOptions where
  pToJSVal = unWebTransportOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportOptions where
  pFromJSVal = WebTransportOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportOptions where
  toJSVal = return . unWebTransportOptions
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportOptions where
  fromJSVal v = fmap WebTransportOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportOptions where
  makeObject = makeObject . unWebTransportOptions


instance IsGObject WebTransportOptions where
  typeGType _ = gTypeWebTransportOptions
  {-# INLINE typeGType #-}

noWebTransportOptions :: Maybe WebTransportOptions
noWebTransportOptions = Nothing
{-# INLINE noWebTransportOptions #-}

gTypeWebTransportOptions :: JSM GType
gTypeWebTransportOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebTransportReceiveStream" (webtransport).
newtype WebTransportReceiveStream = WebTransportReceiveStream { unWebTransportReceiveStream :: JSVal }

instance PToJSVal WebTransportReceiveStream where
  pToJSVal = unWebTransportReceiveStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportReceiveStream where
  pFromJSVal = WebTransportReceiveStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportReceiveStream where
  toJSVal = return . unWebTransportReceiveStream
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportReceiveStream where
  fromJSVal v = fmap WebTransportReceiveStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportReceiveStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportReceiveStream where
  makeObject = makeObject . unWebTransportReceiveStream

instance IsReadableStream WebTransportReceiveStream

instance IsGObject WebTransportReceiveStream where
  typeGType _ = gTypeWebTransportReceiveStream
  {-# INLINE typeGType #-}

noWebTransportReceiveStream :: Maybe WebTransportReceiveStream
noWebTransportReceiveStream = Nothing
{-# INLINE noWebTransportReceiveStream #-}

gTypeWebTransportReceiveStream :: JSM GType
gTypeWebTransportReceiveStream = GType . Object <$> jsg "WebTransportReceiveStream"

-- | Dictionary WebTransportReceiveStreamStats (webtransport)
newtype WebTransportReceiveStreamStats = WebTransportReceiveStreamStats { unWebTransportReceiveStreamStats :: JSVal }

instance PToJSVal WebTransportReceiveStreamStats where
  pToJSVal = unWebTransportReceiveStreamStats
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportReceiveStreamStats where
  pFromJSVal = WebTransportReceiveStreamStats
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportReceiveStreamStats where
  toJSVal = return . unWebTransportReceiveStreamStats
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportReceiveStreamStats where
  fromJSVal v = fmap WebTransportReceiveStreamStats <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportReceiveStreamStats
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportReceiveStreamStats where
  makeObject = makeObject . unWebTransportReceiveStreamStats


instance IsGObject WebTransportReceiveStreamStats where
  typeGType _ = gTypeWebTransportReceiveStreamStats
  {-# INLINE typeGType #-}

noWebTransportReceiveStreamStats :: Maybe WebTransportReceiveStreamStats
noWebTransportReceiveStreamStats = Nothing
{-# INLINE noWebTransportReceiveStreamStats #-}

gTypeWebTransportReceiveStreamStats :: JSM GType
gTypeWebTransportReceiveStreamStats = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebTransportSendGroup" (webtransport).
newtype WebTransportSendGroup = WebTransportSendGroup { unWebTransportSendGroup :: JSVal }

instance PToJSVal WebTransportSendGroup where
  pToJSVal = unWebTransportSendGroup
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportSendGroup where
  pFromJSVal = WebTransportSendGroup
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportSendGroup where
  toJSVal = return . unWebTransportSendGroup
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportSendGroup where
  fromJSVal v = fmap WebTransportSendGroup <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportSendGroup
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportSendGroup where
  makeObject = makeObject . unWebTransportSendGroup


instance IsGObject WebTransportSendGroup where
  typeGType _ = gTypeWebTransportSendGroup
  {-# INLINE typeGType #-}

noWebTransportSendGroup :: Maybe WebTransportSendGroup
noWebTransportSendGroup = Nothing
{-# INLINE noWebTransportSendGroup #-}

gTypeWebTransportSendGroup :: JSM GType
gTypeWebTransportSendGroup = GType . Object <$> jsg "WebTransportSendGroup"

-- | Dictionary WebTransportSendOptions (webtransport)
newtype WebTransportSendOptions = WebTransportSendOptions { unWebTransportSendOptions :: JSVal }

instance PToJSVal WebTransportSendOptions where
  pToJSVal = unWebTransportSendOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportSendOptions where
  pFromJSVal = WebTransportSendOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportSendOptions where
  toJSVal = return . unWebTransportSendOptions
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportSendOptions where
  fromJSVal v = fmap WebTransportSendOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportSendOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportSendOptions where
  makeObject = makeObject . unWebTransportSendOptions

class (IsGObject o) => IsWebTransportSendOptions o
toWebTransportSendOptions :: IsWebTransportSendOptions o => o -> WebTransportSendOptions
toWebTransportSendOptions = WebTransportSendOptions . coerce

instance IsWebTransportSendOptions WebTransportSendOptions

instance IsGObject WebTransportSendOptions where
  typeGType _ = gTypeWebTransportSendOptions
  {-# INLINE typeGType #-}

noWebTransportSendOptions :: Maybe WebTransportSendOptions
noWebTransportSendOptions = Nothing
{-# INLINE noWebTransportSendOptions #-}

gTypeWebTransportSendOptions :: JSM GType
gTypeWebTransportSendOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebTransportSendStream" (webtransport).
newtype WebTransportSendStream = WebTransportSendStream { unWebTransportSendStream :: JSVal }

instance PToJSVal WebTransportSendStream where
  pToJSVal = unWebTransportSendStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportSendStream where
  pFromJSVal = WebTransportSendStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportSendStream where
  toJSVal = return . unWebTransportSendStream
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportSendStream where
  fromJSVal v = fmap WebTransportSendStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportSendStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportSendStream where
  makeObject = makeObject . unWebTransportSendStream

instance IsWritableStream WebTransportSendStream

instance IsGObject WebTransportSendStream where
  typeGType _ = gTypeWebTransportSendStream
  {-# INLINE typeGType #-}

noWebTransportSendStream :: Maybe WebTransportSendStream
noWebTransportSendStream = Nothing
{-# INLINE noWebTransportSendStream #-}

gTypeWebTransportSendStream :: JSM GType
gTypeWebTransportSendStream = GType . Object <$> jsg "WebTransportSendStream"

-- | Dictionary WebTransportSendStreamOptions (webtransport)
newtype WebTransportSendStreamOptions = WebTransportSendStreamOptions { unWebTransportSendStreamOptions :: JSVal }

instance PToJSVal WebTransportSendStreamOptions where
  pToJSVal = unWebTransportSendStreamOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportSendStreamOptions where
  pFromJSVal = WebTransportSendStreamOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportSendStreamOptions where
  toJSVal = return . unWebTransportSendStreamOptions
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportSendStreamOptions where
  fromJSVal v = fmap WebTransportSendStreamOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportSendStreamOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportSendStreamOptions where
  makeObject = makeObject . unWebTransportSendStreamOptions

instance IsWebTransportSendOptions WebTransportSendStreamOptions

instance IsGObject WebTransportSendStreamOptions where
  typeGType _ = gTypeWebTransportSendStreamOptions
  {-# INLINE typeGType #-}

noWebTransportSendStreamOptions :: Maybe WebTransportSendStreamOptions
noWebTransportSendStreamOptions = Nothing
{-# INLINE noWebTransportSendStreamOptions #-}

gTypeWebTransportSendStreamOptions :: JSM GType
gTypeWebTransportSendStreamOptions = GType . Object <$> jsg "Object"

-- | Dictionary WebTransportSendStreamStats (webtransport)
newtype WebTransportSendStreamStats = WebTransportSendStreamStats { unWebTransportSendStreamStats :: JSVal }

instance PToJSVal WebTransportSendStreamStats where
  pToJSVal = unWebTransportSendStreamStats
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportSendStreamStats where
  pFromJSVal = WebTransportSendStreamStats
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportSendStreamStats where
  toJSVal = return . unWebTransportSendStreamStats
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportSendStreamStats where
  fromJSVal v = fmap WebTransportSendStreamStats <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportSendStreamStats
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportSendStreamStats where
  makeObject = makeObject . unWebTransportSendStreamStats


instance IsGObject WebTransportSendStreamStats where
  typeGType _ = gTypeWebTransportSendStreamStats
  {-# INLINE typeGType #-}

noWebTransportSendStreamStats :: Maybe WebTransportSendStreamStats
noWebTransportSendStreamStats = Nothing
{-# INLINE noWebTransportSendStreamStats #-}

gTypeWebTransportSendStreamStats :: JSM GType
gTypeWebTransportSendStreamStats = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WebTransportWriter" (webtransport).
newtype WebTransportWriter = WebTransportWriter { unWebTransportWriter :: JSVal }

instance PToJSVal WebTransportWriter where
  pToJSVal = unWebTransportWriter
  {-# INLINE pToJSVal #-}

instance PFromJSVal WebTransportWriter where
  pFromJSVal = WebTransportWriter
  {-# INLINE pFromJSVal #-}

instance ToJSVal WebTransportWriter where
  toJSVal = return . unWebTransportWriter
  {-# INLINE toJSVal #-}

instance FromJSVal WebTransportWriter where
  fromJSVal v = fmap WebTransportWriter <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WebTransportWriter
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WebTransportWriter where
  makeObject = makeObject . unWebTransportWriter

instance IsWritableStreamDefaultWriter WebTransportWriter

instance IsGObject WebTransportWriter where
  typeGType _ = gTypeWebTransportWriter
  {-# INLINE typeGType #-}

noWebTransportWriter :: Maybe WebTransportWriter
noWebTransportWriter = Nothing
{-# INLINE noWebTransportWriter #-}

gTypeWebTransportWriter :: JSM GType
gTypeWebTransportWriter = GType . Object <$> jsg "WebTransportWriter"

-- | Functions for this interface are in "JSDOM.WheelEvent" (pointerevents4).
newtype WheelEvent = WheelEvent { unWheelEvent :: JSVal }

instance PToJSVal WheelEvent where
  pToJSVal = unWheelEvent
  {-# INLINE pToJSVal #-}

instance PFromJSVal WheelEvent where
  pFromJSVal = WheelEvent
  {-# INLINE pFromJSVal #-}

instance ToJSVal WheelEvent where
  toJSVal = return . unWheelEvent
  {-# INLINE toJSVal #-}

instance FromJSVal WheelEvent where
  fromJSVal v = fmap WheelEvent <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WheelEvent
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WheelEvent where
  makeObject = makeObject . unWheelEvent

instance IsMouseEvent WheelEvent
instance IsUIEvent WheelEvent
instance IsEvent WheelEvent

instance IsGObject WheelEvent where
  typeGType _ = gTypeWheelEvent
  {-# INLINE typeGType #-}

noWheelEvent :: Maybe WheelEvent
noWheelEvent = Nothing
{-# INLINE noWheelEvent #-}

gTypeWheelEvent :: JSM GType
gTypeWheelEvent = GType . Object <$> jsg "WheelEvent"

-- | Dictionary WheelEventInit (pointerevents4)
newtype WheelEventInit = WheelEventInit { unWheelEventInit :: JSVal }

instance PToJSVal WheelEventInit where
  pToJSVal = unWheelEventInit
  {-# INLINE pToJSVal #-}

instance PFromJSVal WheelEventInit where
  pFromJSVal = WheelEventInit
  {-# INLINE pFromJSVal #-}

instance ToJSVal WheelEventInit where
  toJSVal = return . unWheelEventInit
  {-# INLINE toJSVal #-}

instance FromJSVal WheelEventInit where
  fromJSVal v = fmap WheelEventInit <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WheelEventInit
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WheelEventInit where
  makeObject = makeObject . unWheelEventInit

instance IsMouseEventInit WheelEventInit
instance IsEventModifierInit WheelEventInit
instance IsUIEventInit WheelEventInit
instance IsEventInit WheelEventInit

instance IsGObject WheelEventInit where
  typeGType _ = gTypeWheelEventInit
  {-# INLINE typeGType #-}

noWheelEventInit :: Maybe WheelEventInit
noWheelEventInit = Nothing
{-# INLINE noWheelEventInit #-}

gTypeWheelEventInit :: JSM GType
gTypeWheelEventInit = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Window" (html).
newtype Window = Window { unWindow :: JSVal }

instance PToJSVal Window where
  pToJSVal = unWindow
  {-# INLINE pToJSVal #-}

instance PFromJSVal Window where
  pFromJSVal = Window
  {-# INLINE pFromJSVal #-}

instance ToJSVal Window where
  toJSVal = return . unWindow
  {-# INLINE toJSVal #-}

instance FromJSVal Window where
  fromJSVal v = fmap Window <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Window
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Window where
  makeObject = makeObject . unWindow

instance IsAnimationFrameProvider Window
instance IsGlobalEventHandlers Window
instance IsPushManagerAttribute Window
instance IsWindowEventHandlers Window
instance IsWindowLocalStorage Window
instance IsWindowOrWorkerGlobalScope Window
instance IsWindowSessionStorage Window
instance IsEventTarget Window

instance IsGObject Window where
  typeGType _ = gTypeWindow
  {-# INLINE typeGType #-}

noWindow :: Maybe Window
noWindow = Nothing
{-# INLINE noWindow #-}

gTypeWindow :: JSM GType
gTypeWindow = GType . Object <$> jsg "Window"

-- | Functions for this interface are in "JSDOM.WindowClient" (service-workers).
newtype WindowClient = WindowClient { unWindowClient :: JSVal }

instance PToJSVal WindowClient where
  pToJSVal = unWindowClient
  {-# INLINE pToJSVal #-}

instance PFromJSVal WindowClient where
  pFromJSVal = WindowClient
  {-# INLINE pFromJSVal #-}

instance ToJSVal WindowClient where
  toJSVal = return . unWindowClient
  {-# INLINE toJSVal #-}

instance FromJSVal WindowClient where
  fromJSVal v = fmap WindowClient <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WindowClient
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WindowClient where
  makeObject = makeObject . unWindowClient

instance IsClient WindowClient

instance IsGObject WindowClient where
  typeGType _ = gTypeWindowClient
  {-# INLINE typeGType #-}

noWindowClient :: Maybe WindowClient
noWindowClient = Nothing
{-# INLINE noWindowClient #-}

gTypeWindowClient :: JSM GType
gTypeWindowClient = GType . Object <$> jsg "WindowClient"

-- | Functions for this interface are in "JSDOM.WindowEventHandlers" (html).
newtype WindowEventHandlers = WindowEventHandlers { unWindowEventHandlers :: JSVal }

instance PToJSVal WindowEventHandlers where
  pToJSVal = unWindowEventHandlers
  {-# INLINE pToJSVal #-}

instance PFromJSVal WindowEventHandlers where
  pFromJSVal = WindowEventHandlers
  {-# INLINE pFromJSVal #-}

instance ToJSVal WindowEventHandlers where
  toJSVal = return . unWindowEventHandlers
  {-# INLINE toJSVal #-}

instance FromJSVal WindowEventHandlers where
  fromJSVal v = fmap WindowEventHandlers <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WindowEventHandlers
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WindowEventHandlers where
  makeObject = makeObject . unWindowEventHandlers

class (IsGObject o) => IsWindowEventHandlers o
toWindowEventHandlers :: IsWindowEventHandlers o => o -> WindowEventHandlers
toWindowEventHandlers = WindowEventHandlers . coerce

instance IsWindowEventHandlers WindowEventHandlers

instance IsGObject WindowEventHandlers where
  typeGType _ = gTypeWindowEventHandlers
  {-# INLINE typeGType #-}

noWindowEventHandlers :: Maybe WindowEventHandlers
noWindowEventHandlers = Nothing
{-# INLINE noWindowEventHandlers #-}

gTypeWindowEventHandlers :: JSM GType
gTypeWindowEventHandlers = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WindowLocalStorage" (html).
newtype WindowLocalStorage = WindowLocalStorage { unWindowLocalStorage :: JSVal }

instance PToJSVal WindowLocalStorage where
  pToJSVal = unWindowLocalStorage
  {-# INLINE pToJSVal #-}

instance PFromJSVal WindowLocalStorage where
  pFromJSVal = WindowLocalStorage
  {-# INLINE pFromJSVal #-}

instance ToJSVal WindowLocalStorage where
  toJSVal = return . unWindowLocalStorage
  {-# INLINE toJSVal #-}

instance FromJSVal WindowLocalStorage where
  fromJSVal v = fmap WindowLocalStorage <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WindowLocalStorage
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WindowLocalStorage where
  makeObject = makeObject . unWindowLocalStorage

class (IsGObject o) => IsWindowLocalStorage o
toWindowLocalStorage :: IsWindowLocalStorage o => o -> WindowLocalStorage
toWindowLocalStorage = WindowLocalStorage . coerce

instance IsWindowLocalStorage WindowLocalStorage

instance IsGObject WindowLocalStorage where
  typeGType _ = gTypeWindowLocalStorage
  {-# INLINE typeGType #-}

noWindowLocalStorage :: Maybe WindowLocalStorage
noWindowLocalStorage = Nothing
{-# INLINE noWindowLocalStorage #-}

gTypeWindowLocalStorage :: JSM GType
gTypeWindowLocalStorage = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WindowOrWorkerGlobalScope" (html).
newtype WindowOrWorkerGlobalScope = WindowOrWorkerGlobalScope { unWindowOrWorkerGlobalScope :: JSVal }

instance PToJSVal WindowOrWorkerGlobalScope where
  pToJSVal = unWindowOrWorkerGlobalScope
  {-# INLINE pToJSVal #-}

instance PFromJSVal WindowOrWorkerGlobalScope where
  pFromJSVal = WindowOrWorkerGlobalScope
  {-# INLINE pFromJSVal #-}

instance ToJSVal WindowOrWorkerGlobalScope where
  toJSVal = return . unWindowOrWorkerGlobalScope
  {-# INLINE toJSVal #-}

instance FromJSVal WindowOrWorkerGlobalScope where
  fromJSVal v = fmap WindowOrWorkerGlobalScope <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WindowOrWorkerGlobalScope
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WindowOrWorkerGlobalScope where
  makeObject = makeObject . unWindowOrWorkerGlobalScope

class (IsGObject o) => IsWindowOrWorkerGlobalScope o
toWindowOrWorkerGlobalScope :: IsWindowOrWorkerGlobalScope o => o -> WindowOrWorkerGlobalScope
toWindowOrWorkerGlobalScope = WindowOrWorkerGlobalScope . coerce

instance IsWindowOrWorkerGlobalScope WindowOrWorkerGlobalScope

instance IsGObject WindowOrWorkerGlobalScope where
  typeGType _ = gTypeWindowOrWorkerGlobalScope
  {-# INLINE typeGType #-}

noWindowOrWorkerGlobalScope :: Maybe WindowOrWorkerGlobalScope
noWindowOrWorkerGlobalScope = Nothing
{-# INLINE noWindowOrWorkerGlobalScope #-}

gTypeWindowOrWorkerGlobalScope :: JSM GType
gTypeWindowOrWorkerGlobalScope = GType . Object <$> jsg "Object"

-- | Dictionary WindowPostMessageOptions (html)
newtype WindowPostMessageOptions = WindowPostMessageOptions { unWindowPostMessageOptions :: JSVal }

instance PToJSVal WindowPostMessageOptions where
  pToJSVal = unWindowPostMessageOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal WindowPostMessageOptions where
  pFromJSVal = WindowPostMessageOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal WindowPostMessageOptions where
  toJSVal = return . unWindowPostMessageOptions
  {-# INLINE toJSVal #-}

instance FromJSVal WindowPostMessageOptions where
  fromJSVal v = fmap WindowPostMessageOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WindowPostMessageOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WindowPostMessageOptions where
  makeObject = makeObject . unWindowPostMessageOptions

instance IsStructuredSerializeOptions WindowPostMessageOptions

instance IsGObject WindowPostMessageOptions where
  typeGType _ = gTypeWindowPostMessageOptions
  {-# INLINE typeGType #-}

noWindowPostMessageOptions :: Maybe WindowPostMessageOptions
noWindowPostMessageOptions = Nothing
{-# INLINE noWindowPostMessageOptions #-}

gTypeWindowPostMessageOptions :: JSM GType
gTypeWindowPostMessageOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WindowSessionStorage" (html).
newtype WindowSessionStorage = WindowSessionStorage { unWindowSessionStorage :: JSVal }

instance PToJSVal WindowSessionStorage where
  pToJSVal = unWindowSessionStorage
  {-# INLINE pToJSVal #-}

instance PFromJSVal WindowSessionStorage where
  pFromJSVal = WindowSessionStorage
  {-# INLINE pFromJSVal #-}

instance ToJSVal WindowSessionStorage where
  toJSVal = return . unWindowSessionStorage
  {-# INLINE toJSVal #-}

instance FromJSVal WindowSessionStorage where
  fromJSVal v = fmap WindowSessionStorage <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WindowSessionStorage
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WindowSessionStorage where
  makeObject = makeObject . unWindowSessionStorage

class (IsGObject o) => IsWindowSessionStorage o
toWindowSessionStorage :: IsWindowSessionStorage o => o -> WindowSessionStorage
toWindowSessionStorage = WindowSessionStorage . coerce

instance IsWindowSessionStorage WindowSessionStorage

instance IsGObject WindowSessionStorage where
  typeGType _ = gTypeWindowSessionStorage
  {-# INLINE typeGType #-}

noWindowSessionStorage :: Maybe WindowSessionStorage
noWindowSessionStorage = Nothing
{-# INLINE noWindowSessionStorage #-}

gTypeWindowSessionStorage :: JSM GType
gTypeWindowSessionStorage = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Worker" (html).
newtype Worker = Worker { unWorker :: JSVal }

instance PToJSVal Worker where
  pToJSVal = unWorker
  {-# INLINE pToJSVal #-}

instance PFromJSVal Worker where
  pFromJSVal = Worker
  {-# INLINE pFromJSVal #-}

instance ToJSVal Worker where
  toJSVal = return . unWorker
  {-# INLINE toJSVal #-}

instance FromJSVal Worker where
  fromJSVal v = fmap Worker <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Worker
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Worker where
  makeObject = makeObject . unWorker

instance IsAbstractWorker Worker
instance IsMessageEventTarget Worker
instance IsEventTarget Worker

instance IsGObject Worker where
  typeGType _ = gTypeWorker
  {-# INLINE typeGType #-}

noWorker :: Maybe Worker
noWorker = Nothing
{-# INLINE noWorker #-}

gTypeWorker :: JSM GType
gTypeWorker = GType . Object <$> jsg "Worker"

-- | Dictionary WorkerAndParameters (webrtc-encoded-transform)
newtype WorkerAndParameters = WorkerAndParameters { unWorkerAndParameters :: JSVal }

instance PToJSVal WorkerAndParameters where
  pToJSVal = unWorkerAndParameters
  {-# INLINE pToJSVal #-}

instance PFromJSVal WorkerAndParameters where
  pFromJSVal = WorkerAndParameters
  {-# INLINE pFromJSVal #-}

instance ToJSVal WorkerAndParameters where
  toJSVal = return . unWorkerAndParameters
  {-# INLINE toJSVal #-}

instance FromJSVal WorkerAndParameters where
  fromJSVal v = fmap WorkerAndParameters <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WorkerAndParameters
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WorkerAndParameters where
  makeObject = makeObject . unWorkerAndParameters


instance IsGObject WorkerAndParameters where
  typeGType _ = gTypeWorkerAndParameters
  {-# INLINE typeGType #-}

noWorkerAndParameters :: Maybe WorkerAndParameters
noWorkerAndParameters = Nothing
{-# INLINE noWorkerAndParameters #-}

gTypeWorkerAndParameters :: JSM GType
gTypeWorkerAndParameters = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WorkerGlobalScope" (html).
newtype WorkerGlobalScope = WorkerGlobalScope { unWorkerGlobalScope :: JSVal }

instance PToJSVal WorkerGlobalScope where
  pToJSVal = unWorkerGlobalScope
  {-# INLINE pToJSVal #-}

instance PFromJSVal WorkerGlobalScope where
  pFromJSVal = WorkerGlobalScope
  {-# INLINE pFromJSVal #-}

instance ToJSVal WorkerGlobalScope where
  toJSVal = return . unWorkerGlobalScope
  {-# INLINE toJSVal #-}

instance FromJSVal WorkerGlobalScope where
  fromJSVal v = fmap WorkerGlobalScope <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WorkerGlobalScope
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WorkerGlobalScope where
  makeObject = makeObject . unWorkerGlobalScope

class (IsEventTarget o, IsFontFaceSource o, IsWindowOrWorkerGlobalScope o, IsGObject o) => IsWorkerGlobalScope o
toWorkerGlobalScope :: IsWorkerGlobalScope o => o -> WorkerGlobalScope
toWorkerGlobalScope = WorkerGlobalScope . coerce

instance IsWorkerGlobalScope WorkerGlobalScope
instance IsFontFaceSource WorkerGlobalScope
instance IsWindowOrWorkerGlobalScope WorkerGlobalScope
instance IsEventTarget WorkerGlobalScope

instance IsGObject WorkerGlobalScope where
  typeGType _ = gTypeWorkerGlobalScope
  {-# INLINE typeGType #-}

noWorkerGlobalScope :: Maybe WorkerGlobalScope
noWorkerGlobalScope = Nothing
{-# INLINE noWorkerGlobalScope #-}

gTypeWorkerGlobalScope :: JSM GType
gTypeWorkerGlobalScope = GType . Object <$> jsg "WorkerGlobalScope"

-- | Functions for this interface are in "JSDOM.WorkerLocation" (html).
newtype WorkerLocation = WorkerLocation { unWorkerLocation :: JSVal }

instance PToJSVal WorkerLocation where
  pToJSVal = unWorkerLocation
  {-# INLINE pToJSVal #-}

instance PFromJSVal WorkerLocation where
  pFromJSVal = WorkerLocation
  {-# INLINE pFromJSVal #-}

instance ToJSVal WorkerLocation where
  toJSVal = return . unWorkerLocation
  {-# INLINE toJSVal #-}

instance FromJSVal WorkerLocation where
  fromJSVal v = fmap WorkerLocation <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WorkerLocation
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WorkerLocation where
  makeObject = makeObject . unWorkerLocation


instance IsGObject WorkerLocation where
  typeGType _ = gTypeWorkerLocation
  {-# INLINE typeGType #-}

noWorkerLocation :: Maybe WorkerLocation
noWorkerLocation = Nothing
{-# INLINE noWorkerLocation #-}

gTypeWorkerLocation :: JSM GType
gTypeWorkerLocation = GType . Object <$> jsg "WorkerLocation"

-- | Functions for this interface are in "JSDOM.WorkerNavigator" (html).
newtype WorkerNavigator = WorkerNavigator { unWorkerNavigator :: JSVal }

instance PToJSVal WorkerNavigator where
  pToJSVal = unWorkerNavigator
  {-# INLINE pToJSVal #-}

instance PFromJSVal WorkerNavigator where
  pFromJSVal = WorkerNavigator
  {-# INLINE pFromJSVal #-}

instance ToJSVal WorkerNavigator where
  toJSVal = return . unWorkerNavigator
  {-# INLINE toJSVal #-}

instance FromJSVal WorkerNavigator where
  fromJSVal v = fmap WorkerNavigator <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WorkerNavigator
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WorkerNavigator where
  makeObject = makeObject . unWorkerNavigator

instance IsNavigatorBadge WorkerNavigator
instance IsNavigatorConcurrentHardware WorkerNavigator
instance IsNavigatorGPU WorkerNavigator
instance IsNavigatorID WorkerNavigator
instance IsNavigatorLanguage WorkerNavigator
instance IsNavigatorLocks WorkerNavigator
instance IsNavigatorOnLine WorkerNavigator
instance IsNavigatorStorage WorkerNavigator

instance IsGObject WorkerNavigator where
  typeGType _ = gTypeWorkerNavigator
  {-# INLINE typeGType #-}

noWorkerNavigator :: Maybe WorkerNavigator
noWorkerNavigator = Nothing
{-# INLINE noWorkerNavigator #-}

gTypeWorkerNavigator :: JSM GType
gTypeWorkerNavigator = GType . Object <$> jsg "WorkerNavigator"

-- | Dictionary WorkerOptions (html)
newtype WorkerOptions = WorkerOptions { unWorkerOptions :: JSVal }

instance PToJSVal WorkerOptions where
  pToJSVal = unWorkerOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal WorkerOptions where
  pFromJSVal = WorkerOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal WorkerOptions where
  toJSVal = return . unWorkerOptions
  {-# INLINE toJSVal #-}

instance FromJSVal WorkerOptions where
  fromJSVal v = fmap WorkerOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WorkerOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WorkerOptions where
  makeObject = makeObject . unWorkerOptions

class (IsGObject o) => IsWorkerOptions o
toWorkerOptions :: IsWorkerOptions o => o -> WorkerOptions
toWorkerOptions = WorkerOptions . coerce

instance IsWorkerOptions WorkerOptions

instance IsGObject WorkerOptions where
  typeGType _ = gTypeWorkerOptions
  {-# INLINE typeGType #-}

noWorkerOptions :: Maybe WorkerOptions
noWorkerOptions = Nothing
{-# INLINE noWorkerOptions #-}

gTypeWorkerOptions :: JSM GType
gTypeWorkerOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.Worklet" (html).
newtype Worklet = Worklet { unWorklet :: JSVal }

instance PToJSVal Worklet where
  pToJSVal = unWorklet
  {-# INLINE pToJSVal #-}

instance PFromJSVal Worklet where
  pFromJSVal = Worklet
  {-# INLINE pFromJSVal #-}

instance ToJSVal Worklet where
  toJSVal = return . unWorklet
  {-# INLINE toJSVal #-}

instance FromJSVal Worklet where
  fromJSVal v = fmap Worklet <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . Worklet
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject Worklet where
  makeObject = makeObject . unWorklet

class (IsGObject o) => IsWorklet o
toWorklet :: IsWorklet o => o -> Worklet
toWorklet = Worklet . coerce

instance IsWorklet Worklet

instance IsGObject Worklet where
  typeGType _ = gTypeWorklet
  {-# INLINE typeGType #-}

noWorklet :: Maybe Worklet
noWorklet = Nothing
{-# INLINE noWorklet #-}

gTypeWorklet :: JSM GType
gTypeWorklet = GType . Object <$> jsg "Worklet"

-- | Functions for this interface are in "JSDOM.WorkletGlobalScope" (html).
newtype WorkletGlobalScope = WorkletGlobalScope { unWorkletGlobalScope :: JSVal }

instance PToJSVal WorkletGlobalScope where
  pToJSVal = unWorkletGlobalScope
  {-# INLINE pToJSVal #-}

instance PFromJSVal WorkletGlobalScope where
  pFromJSVal = WorkletGlobalScope
  {-# INLINE pFromJSVal #-}

instance ToJSVal WorkletGlobalScope where
  toJSVal = return . unWorkletGlobalScope
  {-# INLINE toJSVal #-}

instance FromJSVal WorkletGlobalScope where
  fromJSVal v = fmap WorkletGlobalScope <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WorkletGlobalScope
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WorkletGlobalScope where
  makeObject = makeObject . unWorkletGlobalScope

class (IsGObject o) => IsWorkletGlobalScope o
toWorkletGlobalScope :: IsWorkletGlobalScope o => o -> WorkletGlobalScope
toWorkletGlobalScope = WorkletGlobalScope . coerce

instance IsWorkletGlobalScope WorkletGlobalScope

instance IsGObject WorkletGlobalScope where
  typeGType _ = gTypeWorkletGlobalScope
  {-# INLINE typeGType #-}

noWorkletGlobalScope :: Maybe WorkletGlobalScope
noWorkletGlobalScope = Nothing
{-# INLINE noWorkletGlobalScope #-}

gTypeWorkletGlobalScope :: JSM GType
gTypeWorkletGlobalScope = GType . Object <$> jsg "WorkletGlobalScope"

-- | Dictionary WorkletOptions (html)
newtype WorkletOptions = WorkletOptions { unWorkletOptions :: JSVal }

instance PToJSVal WorkletOptions where
  pToJSVal = unWorkletOptions
  {-# INLINE pToJSVal #-}

instance PFromJSVal WorkletOptions where
  pFromJSVal = WorkletOptions
  {-# INLINE pFromJSVal #-}

instance ToJSVal WorkletOptions where
  toJSVal = return . unWorkletOptions
  {-# INLINE toJSVal #-}

instance FromJSVal WorkletOptions where
  fromJSVal v = fmap WorkletOptions <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WorkletOptions
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WorkletOptions where
  makeObject = makeObject . unWorkletOptions


instance IsGObject WorkletOptions where
  typeGType _ = gTypeWorkletOptions
  {-# INLINE typeGType #-}

noWorkletOptions :: Maybe WorkletOptions
noWorkletOptions = Nothing
{-# INLINE noWorkletOptions #-}

gTypeWorkletOptions :: JSM GType
gTypeWorkletOptions = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.WritableStream" (streams).
newtype WritableStream = WritableStream { unWritableStream :: JSVal }

instance PToJSVal WritableStream where
  pToJSVal = unWritableStream
  {-# INLINE pToJSVal #-}

instance PFromJSVal WritableStream where
  pFromJSVal = WritableStream
  {-# INLINE pFromJSVal #-}

instance ToJSVal WritableStream where
  toJSVal = return . unWritableStream
  {-# INLINE toJSVal #-}

instance FromJSVal WritableStream where
  fromJSVal v = fmap WritableStream <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WritableStream
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WritableStream where
  makeObject = makeObject . unWritableStream

class (IsGObject o) => IsWritableStream o
toWritableStream :: IsWritableStream o => o -> WritableStream
toWritableStream = WritableStream . coerce

instance IsWritableStream WritableStream

instance IsGObject WritableStream where
  typeGType _ = gTypeWritableStream
  {-# INLINE typeGType #-}

noWritableStream :: Maybe WritableStream
noWritableStream = Nothing
{-# INLINE noWritableStream #-}

gTypeWritableStream :: JSM GType
gTypeWritableStream = GType . Object <$> jsg "WritableStream"

-- | Functions for this interface are in "JSDOM.WritableStreamDefaultController" (streams).
newtype WritableStreamDefaultController = WritableStreamDefaultController { unWritableStreamDefaultController :: JSVal }

instance PToJSVal WritableStreamDefaultController where
  pToJSVal = unWritableStreamDefaultController
  {-# INLINE pToJSVal #-}

instance PFromJSVal WritableStreamDefaultController where
  pFromJSVal = WritableStreamDefaultController
  {-# INLINE pFromJSVal #-}

instance ToJSVal WritableStreamDefaultController where
  toJSVal = return . unWritableStreamDefaultController
  {-# INLINE toJSVal #-}

instance FromJSVal WritableStreamDefaultController where
  fromJSVal v = fmap WritableStreamDefaultController <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WritableStreamDefaultController
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WritableStreamDefaultController where
  makeObject = makeObject . unWritableStreamDefaultController


instance IsGObject WritableStreamDefaultController where
  typeGType _ = gTypeWritableStreamDefaultController
  {-# INLINE typeGType #-}

noWritableStreamDefaultController :: Maybe WritableStreamDefaultController
noWritableStreamDefaultController = Nothing
{-# INLINE noWritableStreamDefaultController #-}

gTypeWritableStreamDefaultController :: JSM GType
gTypeWritableStreamDefaultController = GType . Object <$> jsg "WritableStreamDefaultController"

-- | Functions for this interface are in "JSDOM.WritableStreamDefaultWriter" (streams).
newtype WritableStreamDefaultWriter = WritableStreamDefaultWriter { unWritableStreamDefaultWriter :: JSVal }

instance PToJSVal WritableStreamDefaultWriter where
  pToJSVal = unWritableStreamDefaultWriter
  {-# INLINE pToJSVal #-}

instance PFromJSVal WritableStreamDefaultWriter where
  pFromJSVal = WritableStreamDefaultWriter
  {-# INLINE pFromJSVal #-}

instance ToJSVal WritableStreamDefaultWriter where
  toJSVal = return . unWritableStreamDefaultWriter
  {-# INLINE toJSVal #-}

instance FromJSVal WritableStreamDefaultWriter where
  fromJSVal v = fmap WritableStreamDefaultWriter <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WritableStreamDefaultWriter
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WritableStreamDefaultWriter where
  makeObject = makeObject . unWritableStreamDefaultWriter

class (IsGObject o) => IsWritableStreamDefaultWriter o
toWritableStreamDefaultWriter :: IsWritableStreamDefaultWriter o => o -> WritableStreamDefaultWriter
toWritableStreamDefaultWriter = WritableStreamDefaultWriter . coerce

instance IsWritableStreamDefaultWriter WritableStreamDefaultWriter

instance IsGObject WritableStreamDefaultWriter where
  typeGType _ = gTypeWritableStreamDefaultWriter
  {-# INLINE typeGType #-}

noWritableStreamDefaultWriter :: Maybe WritableStreamDefaultWriter
noWritableStreamDefaultWriter = Nothing
{-# INLINE noWritableStreamDefaultWriter #-}

gTypeWritableStreamDefaultWriter :: JSM GType
gTypeWritableStreamDefaultWriter = GType . Object <$> jsg "WritableStreamDefaultWriter"

-- | Dictionary WriteParams (fs)
newtype WriteParams = WriteParams { unWriteParams :: JSVal }

instance PToJSVal WriteParams where
  pToJSVal = unWriteParams
  {-# INLINE pToJSVal #-}

instance PFromJSVal WriteParams where
  pFromJSVal = WriteParams
  {-# INLINE pFromJSVal #-}

instance ToJSVal WriteParams where
  toJSVal = return . unWriteParams
  {-# INLINE toJSVal #-}

instance FromJSVal WriteParams where
  fromJSVal v = fmap WriteParams <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . WriteParams
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject WriteParams where
  makeObject = makeObject . unWriteParams


instance IsGObject WriteParams where
  typeGType _ = gTypeWriteParams
  {-# INLINE typeGType #-}

noWriteParams :: Maybe WriteParams
noWriteParams = Nothing
{-# INLINE noWriteParams #-}

gTypeWriteParams :: JSM GType
gTypeWriteParams = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.XMLDocument" (dom).
newtype XMLDocument = XMLDocument { unXMLDocument :: JSVal }

instance PToJSVal XMLDocument where
  pToJSVal = unXMLDocument
  {-# INLINE pToJSVal #-}

instance PFromJSVal XMLDocument where
  pFromJSVal = XMLDocument
  {-# INLINE pFromJSVal #-}

instance ToJSVal XMLDocument where
  toJSVal = return . unXMLDocument
  {-# INLINE toJSVal #-}

instance FromJSVal XMLDocument where
  fromJSVal v = fmap XMLDocument <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . XMLDocument
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject XMLDocument where
  makeObject = makeObject . unXMLDocument

instance IsDocument XMLDocument
instance IsARIANotifyMixin XMLDocument
instance IsDocumentOrShadowRoot XMLDocument
instance IsFontFaceSource XMLDocument
instance IsGlobalEventHandlers XMLDocument
instance IsNonElementParentNode XMLDocument
instance IsParentNode XMLDocument
instance IsXPathEvaluatorBase XMLDocument
instance IsNode XMLDocument
instance IsEventTarget XMLDocument

instance IsGObject XMLDocument where
  typeGType _ = gTypeXMLDocument
  {-# INLINE typeGType #-}

noXMLDocument :: Maybe XMLDocument
noXMLDocument = Nothing
{-# INLINE noXMLDocument #-}

gTypeXMLDocument :: JSM GType
gTypeXMLDocument = GType . Object <$> jsg "XMLDocument"

-- | Functions for this interface are in "JSDOM.XMLHttpRequest" (xhr).
newtype XMLHttpRequest = XMLHttpRequest { unXMLHttpRequest :: JSVal }

instance PToJSVal XMLHttpRequest where
  pToJSVal = unXMLHttpRequest
  {-# INLINE pToJSVal #-}

instance PFromJSVal XMLHttpRequest where
  pFromJSVal = XMLHttpRequest
  {-# INLINE pFromJSVal #-}

instance ToJSVal XMLHttpRequest where
  toJSVal = return . unXMLHttpRequest
  {-# INLINE toJSVal #-}

instance FromJSVal XMLHttpRequest where
  fromJSVal v = fmap XMLHttpRequest <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . XMLHttpRequest
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject XMLHttpRequest where
  makeObject = makeObject . unXMLHttpRequest

instance IsXMLHttpRequestEventTarget XMLHttpRequest
instance IsEventTarget XMLHttpRequest

instance IsGObject XMLHttpRequest where
  typeGType _ = gTypeXMLHttpRequest
  {-# INLINE typeGType #-}

noXMLHttpRequest :: Maybe XMLHttpRequest
noXMLHttpRequest = Nothing
{-# INLINE noXMLHttpRequest #-}

gTypeXMLHttpRequest :: JSM GType
gTypeXMLHttpRequest = GType . Object <$> jsg "XMLHttpRequest"

-- | Functions for this interface are in "JSDOM.XMLHttpRequestEventTarget" (xhr).
newtype XMLHttpRequestEventTarget = XMLHttpRequestEventTarget { unXMLHttpRequestEventTarget :: JSVal }

instance PToJSVal XMLHttpRequestEventTarget where
  pToJSVal = unXMLHttpRequestEventTarget
  {-# INLINE pToJSVal #-}

instance PFromJSVal XMLHttpRequestEventTarget where
  pFromJSVal = XMLHttpRequestEventTarget
  {-# INLINE pFromJSVal #-}

instance ToJSVal XMLHttpRequestEventTarget where
  toJSVal = return . unXMLHttpRequestEventTarget
  {-# INLINE toJSVal #-}

instance FromJSVal XMLHttpRequestEventTarget where
  fromJSVal v = fmap XMLHttpRequestEventTarget <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . XMLHttpRequestEventTarget
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject XMLHttpRequestEventTarget where
  makeObject = makeObject . unXMLHttpRequestEventTarget

class (IsEventTarget o, IsGObject o) => IsXMLHttpRequestEventTarget o
toXMLHttpRequestEventTarget :: IsXMLHttpRequestEventTarget o => o -> XMLHttpRequestEventTarget
toXMLHttpRequestEventTarget = XMLHttpRequestEventTarget . coerce

instance IsXMLHttpRequestEventTarget XMLHttpRequestEventTarget
instance IsEventTarget XMLHttpRequestEventTarget

instance IsGObject XMLHttpRequestEventTarget where
  typeGType _ = gTypeXMLHttpRequestEventTarget
  {-# INLINE typeGType #-}

noXMLHttpRequestEventTarget :: Maybe XMLHttpRequestEventTarget
noXMLHttpRequestEventTarget = Nothing
{-# INLINE noXMLHttpRequestEventTarget #-}

gTypeXMLHttpRequestEventTarget :: JSM GType
gTypeXMLHttpRequestEventTarget = GType . Object <$> jsg "XMLHttpRequestEventTarget"

-- | Functions for this interface are in "JSDOM.XMLHttpRequestUpload" (xhr).
newtype XMLHttpRequestUpload = XMLHttpRequestUpload { unXMLHttpRequestUpload :: JSVal }

instance PToJSVal XMLHttpRequestUpload where
  pToJSVal = unXMLHttpRequestUpload
  {-# INLINE pToJSVal #-}

instance PFromJSVal XMLHttpRequestUpload where
  pFromJSVal = XMLHttpRequestUpload
  {-# INLINE pFromJSVal #-}

instance ToJSVal XMLHttpRequestUpload where
  toJSVal = return . unXMLHttpRequestUpload
  {-# INLINE toJSVal #-}

instance FromJSVal XMLHttpRequestUpload where
  fromJSVal v = fmap XMLHttpRequestUpload <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . XMLHttpRequestUpload
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject XMLHttpRequestUpload where
  makeObject = makeObject . unXMLHttpRequestUpload

instance IsXMLHttpRequestEventTarget XMLHttpRequestUpload
instance IsEventTarget XMLHttpRequestUpload

instance IsGObject XMLHttpRequestUpload where
  typeGType _ = gTypeXMLHttpRequestUpload
  {-# INLINE typeGType #-}

noXMLHttpRequestUpload :: Maybe XMLHttpRequestUpload
noXMLHttpRequestUpload = Nothing
{-# INLINE noXMLHttpRequestUpload #-}

gTypeXMLHttpRequestUpload :: JSM GType
gTypeXMLHttpRequestUpload = GType . Object <$> jsg "XMLHttpRequestUpload"

-- | Functions for this interface are in "JSDOM.XMLSerializer" (html).
newtype XMLSerializer = XMLSerializer { unXMLSerializer :: JSVal }

instance PToJSVal XMLSerializer where
  pToJSVal = unXMLSerializer
  {-# INLINE pToJSVal #-}

instance PFromJSVal XMLSerializer where
  pFromJSVal = XMLSerializer
  {-# INLINE pFromJSVal #-}

instance ToJSVal XMLSerializer where
  toJSVal = return . unXMLSerializer
  {-# INLINE toJSVal #-}

instance FromJSVal XMLSerializer where
  fromJSVal v = fmap XMLSerializer <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . XMLSerializer
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject XMLSerializer where
  makeObject = makeObject . unXMLSerializer


instance IsGObject XMLSerializer where
  typeGType _ = gTypeXMLSerializer
  {-# INLINE typeGType #-}

noXMLSerializer :: Maybe XMLSerializer
noXMLSerializer = Nothing
{-# INLINE noXMLSerializer #-}

gTypeXMLSerializer :: JSM GType
gTypeXMLSerializer = GType . Object <$> jsg "XMLSerializer"

-- | Functions for this interface are in "JSDOM.XPathEvaluator" (dom).
newtype XPathEvaluator = XPathEvaluator { unXPathEvaluator :: JSVal }

instance PToJSVal XPathEvaluator where
  pToJSVal = unXPathEvaluator
  {-# INLINE pToJSVal #-}

instance PFromJSVal XPathEvaluator where
  pFromJSVal = XPathEvaluator
  {-# INLINE pFromJSVal #-}

instance ToJSVal XPathEvaluator where
  toJSVal = return . unXPathEvaluator
  {-# INLINE toJSVal #-}

instance FromJSVal XPathEvaluator where
  fromJSVal v = fmap XPathEvaluator <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . XPathEvaluator
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject XPathEvaluator where
  makeObject = makeObject . unXPathEvaluator

instance IsXPathEvaluatorBase XPathEvaluator

instance IsGObject XPathEvaluator where
  typeGType _ = gTypeXPathEvaluator
  {-# INLINE typeGType #-}

noXPathEvaluator :: Maybe XPathEvaluator
noXPathEvaluator = Nothing
{-# INLINE noXPathEvaluator #-}

gTypeXPathEvaluator :: JSM GType
gTypeXPathEvaluator = GType . Object <$> jsg "XPathEvaluator"

-- | Functions for this interface are in "JSDOM.XPathEvaluatorBase" (dom).
newtype XPathEvaluatorBase = XPathEvaluatorBase { unXPathEvaluatorBase :: JSVal }

instance PToJSVal XPathEvaluatorBase where
  pToJSVal = unXPathEvaluatorBase
  {-# INLINE pToJSVal #-}

instance PFromJSVal XPathEvaluatorBase where
  pFromJSVal = XPathEvaluatorBase
  {-# INLINE pFromJSVal #-}

instance ToJSVal XPathEvaluatorBase where
  toJSVal = return . unXPathEvaluatorBase
  {-# INLINE toJSVal #-}

instance FromJSVal XPathEvaluatorBase where
  fromJSVal v = fmap XPathEvaluatorBase <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . XPathEvaluatorBase
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject XPathEvaluatorBase where
  makeObject = makeObject . unXPathEvaluatorBase

class (IsGObject o) => IsXPathEvaluatorBase o
toXPathEvaluatorBase :: IsXPathEvaluatorBase o => o -> XPathEvaluatorBase
toXPathEvaluatorBase = XPathEvaluatorBase . coerce

instance IsXPathEvaluatorBase XPathEvaluatorBase

instance IsGObject XPathEvaluatorBase where
  typeGType _ = gTypeXPathEvaluatorBase
  {-# INLINE typeGType #-}

noXPathEvaluatorBase :: Maybe XPathEvaluatorBase
noXPathEvaluatorBase = Nothing
{-# INLINE noXPathEvaluatorBase #-}

gTypeXPathEvaluatorBase :: JSM GType
gTypeXPathEvaluatorBase = GType . Object <$> jsg "Object"

-- | Functions for this interface are in "JSDOM.XPathExpression" (dom).
newtype XPathExpression = XPathExpression { unXPathExpression :: JSVal }

instance PToJSVal XPathExpression where
  pToJSVal = unXPathExpression
  {-# INLINE pToJSVal #-}

instance PFromJSVal XPathExpression where
  pFromJSVal = XPathExpression
  {-# INLINE pFromJSVal #-}

instance ToJSVal XPathExpression where
  toJSVal = return . unXPathExpression
  {-# INLINE toJSVal #-}

instance FromJSVal XPathExpression where
  fromJSVal v = fmap XPathExpression <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . XPathExpression
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject XPathExpression where
  makeObject = makeObject . unXPathExpression


instance IsGObject XPathExpression where
  typeGType _ = gTypeXPathExpression
  {-# INLINE typeGType #-}

noXPathExpression :: Maybe XPathExpression
noXPathExpression = Nothing
{-# INLINE noXPathExpression #-}

gTypeXPathExpression :: JSM GType
gTypeXPathExpression = GType . Object <$> jsg "XPathExpression"

-- | Functions for this interface are in "JSDOM.XPathResult" (dom).
newtype XPathResult = XPathResult { unXPathResult :: JSVal }

instance PToJSVal XPathResult where
  pToJSVal = unXPathResult
  {-# INLINE pToJSVal #-}

instance PFromJSVal XPathResult where
  pFromJSVal = XPathResult
  {-# INLINE pFromJSVal #-}

instance ToJSVal XPathResult where
  toJSVal = return . unXPathResult
  {-# INLINE toJSVal #-}

instance FromJSVal XPathResult where
  fromJSVal v = fmap XPathResult <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . XPathResult
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject XPathResult where
  makeObject = makeObject . unXPathResult


instance IsGObject XPathResult where
  typeGType _ = gTypeXPathResult
  {-# INLINE typeGType #-}

noXPathResult :: Maybe XPathResult
noXPathResult = Nothing
{-# INLINE noXPathResult #-}

gTypeXPathResult :: JSM GType
gTypeXPathResult = GType . Object <$> jsg "XPathResult"

-- | Functions for this interface are in "JSDOM.XSLTProcessor" (dom).
newtype XSLTProcessor = XSLTProcessor { unXSLTProcessor :: JSVal }

instance PToJSVal XSLTProcessor where
  pToJSVal = unXSLTProcessor
  {-# INLINE pToJSVal #-}

instance PFromJSVal XSLTProcessor where
  pFromJSVal = XSLTProcessor
  {-# INLINE pFromJSVal #-}

instance ToJSVal XSLTProcessor where
  toJSVal = return . unXSLTProcessor
  {-# INLINE toJSVal #-}

instance FromJSVal XSLTProcessor where
  fromJSVal v = fmap XSLTProcessor <$> maybeNullOrUndefined v
  {-# INLINE fromJSVal #-}
  fromJSValUnchecked = return . XSLTProcessor
  {-# INLINE fromJSValUnchecked #-}

instance MakeObject XSLTProcessor where
  makeObject = makeObject . unXSLTProcessor


instance IsGObject XSLTProcessor where
  typeGType _ = gTypeXSLTProcessor
  {-# INLINE typeGType #-}

noXSLTProcessor :: Maybe XSLTProcessor
noXSLTProcessor = Nothing
{-# INLINE noXSLTProcessor #-}

gTypeXSLTProcessor :: JSM GType
gTypeXSLTProcessor = GType . Object <$> jsg "XSLTProcessor"