Remove implements JSObject from all types and publish 0.4.0 (#97)

This is needed to be able to move JS types to extension types.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7847166..7941071 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,12 @@
+## 0.4.0
+
+- Remove `implements JSObject` from all types. This is needed to move the JS
+types exposed in `dart:js_interop` to extension types. This subtyping will be
+added back in a future version when we move all `package:web` types to extension
+types.
+
 ## 0.3.1-dev
+
 - Add `onMessage` getter to `WindowEventGetters` extension methods.
 - `helpers.dart`: expose the `EventStreamProviders` class.
 - Add `createIFrameElement` method to `helpers.dart`.
diff --git a/lib/src/dom/accelerometer.dart b/lib/src/dom/accelerometer.dart
index 54e50f0..4f187de 100644
--- a/lib/src/dom/accelerometer.dart
+++ b/lib/src/dom/accelerometer.dart
@@ -49,7 +49,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AccelerometerReadingValues implements JSObject {
+class AccelerometerReadingValues {
   external factory AccelerometerReadingValues({
     required num? x,
     required num? y,
diff --git a/lib/src/dom/ambient_light.dart b/lib/src/dom/ambient_light.dart
index b5766e6..38496e1 100644
--- a/lib/src/dom/ambient_light.dart
+++ b/lib/src/dom/ambient_light.dart
@@ -19,7 +19,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AmbientLightReadingValues implements JSObject {
+class AmbientLightReadingValues {
   external factory AmbientLightReadingValues({required num? illuminance});
 }
 
diff --git a/lib/src/dom/anchors.dart b/lib/src/dom/anchors.dart
index eadc674..4aa88fb 100644
--- a/lib/src/dom/anchors.dart
+++ b/lib/src/dom/anchors.dart
@@ -8,7 +8,7 @@
 
 @JS('XRAnchor')
 @staticInterop
-class XRAnchor implements JSObject {}
+class XRAnchor {}
 
 extension XRAnchorExtension on XRAnchor {
   external JSPromise requestPersistentHandle();
@@ -18,6 +18,6 @@
 
 @JS('XRAnchorSet')
 @staticInterop
-class XRAnchorSet implements JSObject {}
+class XRAnchorSet {}
 
 extension XRAnchorSetExtension on XRAnchorSet {}
diff --git a/lib/src/dom/angle_instanced_arrays.dart b/lib/src/dom/angle_instanced_arrays.dart
index 3c5cd54..1c62ed5 100644
--- a/lib/src/dom/angle_instanced_arrays.dart
+++ b/lib/src/dom/angle_instanced_arrays.dart
@@ -8,7 +8,7 @@
 
 @JS('ANGLE_instanced_arrays')
 @staticInterop
-class ANGLE_instanced_arrays implements JSObject {
+class ANGLE_instanced_arrays {
   external static GLenum get VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE;
 }
 
diff --git a/lib/src/dom/attribution_reporting_api.dart b/lib/src/dom/attribution_reporting_api.dart
index f598f93..1814c8b 100644
--- a/lib/src/dom/attribution_reporting_api.dart
+++ b/lib/src/dom/attribution_reporting_api.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AttributionReportingRequestOptions implements JSObject {
+class AttributionReportingRequestOptions {
   external factory AttributionReportingRequestOptions({
     required bool eventSourceEligible,
     required bool triggerEligible,
diff --git a/lib/src/dom/audio_output.dart b/lib/src/dom/audio_output.dart
index 907d47b..1f34c89 100644
--- a/lib/src/dom/audio_output.dart
+++ b/lib/src/dom/audio_output.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioOutputOptions implements JSObject {
+class AudioOutputOptions {
   external factory AudioOutputOptions({String deviceId});
 }
 
diff --git a/lib/src/dom/background_fetch.dart b/lib/src/dom/background_fetch.dart
index b5c7d40..6df9e03 100644
--- a/lib/src/dom/background_fetch.dart
+++ b/lib/src/dom/background_fetch.dart
@@ -14,7 +14,7 @@
 
 @JS('BackgroundFetchManager')
 @staticInterop
-class BackgroundFetchManager implements JSObject {}
+class BackgroundFetchManager {}
 
 extension BackgroundFetchManagerExtension on BackgroundFetchManager {
   external JSPromise fetch(
@@ -29,7 +29,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BackgroundFetchUIOptions implements JSObject {
+class BackgroundFetchUIOptions {
   external factory BackgroundFetchUIOptions({
     JSArray icons,
     String title,
@@ -83,7 +83,7 @@
 
 @JS('BackgroundFetchRecord')
 @staticInterop
-class BackgroundFetchRecord implements JSObject {}
+class BackgroundFetchRecord {}
 
 extension BackgroundFetchRecordExtension on BackgroundFetchRecord {
   external Request get request;
diff --git a/lib/src/dom/background_sync.dart b/lib/src/dom/background_sync.dart
index af49e8e..f7415fe 100644
--- a/lib/src/dom/background_sync.dart
+++ b/lib/src/dom/background_sync.dart
@@ -8,7 +8,7 @@
 
 @JS('SyncManager')
 @staticInterop
-class SyncManager implements JSObject {}
+class SyncManager {}
 
 extension SyncManagerExtension on SyncManager {
   external JSPromise register(String tag);
diff --git a/lib/src/dom/capture_handle_identity.dart b/lib/src/dom/capture_handle_identity.dart
index 048a6c3..04dcb82 100644
--- a/lib/src/dom/capture_handle_identity.dart
+++ b/lib/src/dom/capture_handle_identity.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CaptureHandleConfig implements JSObject {
+class CaptureHandleConfig {
   external factory CaptureHandleConfig({
     bool exposeOrigin,
     String handle,
@@ -27,7 +27,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CaptureHandle implements JSObject {
+class CaptureHandle {
   external factory CaptureHandle({
     String origin,
     String handle,
diff --git a/lib/src/dom/clipboard_apis.dart b/lib/src/dom/clipboard_apis.dart
index 56aa76e..0959530 100644
--- a/lib/src/dom/clipboard_apis.dart
+++ b/lib/src/dom/clipboard_apis.dart
@@ -39,7 +39,7 @@
 
 @JS('ClipboardItem')
 @staticInterop
-class ClipboardItem implements JSObject {
+class ClipboardItem {
   external factory ClipboardItem(
     JSAny items, [
     ClipboardItemOptions options,
@@ -57,7 +57,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ClipboardItemOptions implements JSObject {
+class ClipboardItemOptions {
   external factory ClipboardItemOptions({PresentationStyle presentationStyle});
 }
 
diff --git a/lib/src/dom/compression.dart b/lib/src/dom/compression.dart
index 8451483..47bcf56 100644
--- a/lib/src/dom/compression.dart
+++ b/lib/src/dom/compression.dart
@@ -10,7 +10,7 @@
 
 @JS('CompressionStream')
 @staticInterop
-class CompressionStream implements JSObject {
+class CompressionStream {
   external factory CompressionStream(CompressionFormat format);
 }
 
@@ -21,7 +21,7 @@
 
 @JS('DecompressionStream')
 @staticInterop
-class DecompressionStream implements JSObject {
+class DecompressionStream {
   external factory DecompressionStream(CompressionFormat format);
 }
 
diff --git a/lib/src/dom/compute_pressure.dart b/lib/src/dom/compute_pressure.dart
index 3e8b288..7d8d3fa 100644
--- a/lib/src/dom/compute_pressure.dart
+++ b/lib/src/dom/compute_pressure.dart
@@ -12,7 +12,7 @@
 
 @JS('PressureObserver')
 @staticInterop
-class PressureObserver implements JSObject {
+class PressureObserver {
   external factory PressureObserver(
     PressureUpdateCallback callback, [
     PressureObserverOptions options,
@@ -30,7 +30,7 @@
 
 @JS('PressureRecord')
 @staticInterop
-class PressureRecord implements JSObject {}
+class PressureRecord {}
 
 extension PressureRecordExtension on PressureRecord {
   external JSObject toJSON();
@@ -42,7 +42,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PressureObserverOptions implements JSObject {
+class PressureObserverOptions {
   external factory PressureObserverOptions({num sampleRate});
 }
 
diff --git a/lib/src/dom/contact_picker.dart b/lib/src/dom/contact_picker.dart
index 9dd79c9..cd645b2 100644
--- a/lib/src/dom/contact_picker.dart
+++ b/lib/src/dom/contact_picker.dart
@@ -8,7 +8,7 @@
 
 @JS('ContactAddress')
 @staticInterop
-class ContactAddress implements JSObject {}
+class ContactAddress {}
 
 extension ContactAddressExtension on ContactAddress {
   external JSObject toJSON();
@@ -27,7 +27,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ContactInfo implements JSObject {
+class ContactInfo {
   external factory ContactInfo({
     JSArray address,
     JSArray email,
@@ -53,7 +53,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ContactsSelectOptions implements JSObject {
+class ContactsSelectOptions {
   external factory ContactsSelectOptions({bool multiple});
 }
 
@@ -64,7 +64,7 @@
 
 @JS('ContactsManager')
 @staticInterop
-class ContactsManager implements JSObject {}
+class ContactsManager {}
 
 extension ContactsManagerExtension on ContactsManager {
   external JSPromise getProperties();
diff --git a/lib/src/dom/content_index.dart b/lib/src/dom/content_index.dart
index 1c9c4ec..cddd981 100644
--- a/lib/src/dom/content_index.dart
+++ b/lib/src/dom/content_index.dart
@@ -11,7 +11,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ContentDescription implements JSObject {
+class ContentDescription {
   external factory ContentDescription({
     required String id,
     required String title,
@@ -39,7 +39,7 @@
 
 @JS('ContentIndex')
 @staticInterop
-class ContentIndex implements JSObject {}
+class ContentIndex {}
 
 extension ContentIndexExtension on ContentIndex {
   external JSPromise add(ContentDescription description);
diff --git a/lib/src/dom/cookie_store.dart b/lib/src/dom/cookie_store.dart
index 22cb29c..2ac44c4 100644
--- a/lib/src/dom/cookie_store.dart
+++ b/lib/src/dom/cookie_store.dart
@@ -31,7 +31,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CookieStoreGetOptions implements JSObject {
+class CookieStoreGetOptions {
   external factory CookieStoreGetOptions({
     String name,
     String url,
@@ -48,7 +48,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CookieInit implements JSObject {
+class CookieInit {
   external factory CookieInit({
     required String name,
     required String value,
@@ -80,7 +80,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CookieStoreDeleteOptions implements JSObject {
+class CookieStoreDeleteOptions {
   external factory CookieStoreDeleteOptions({
     required String name,
     String? domain,
@@ -103,7 +103,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CookieListItem implements JSObject {
+class CookieListItem {
   external factory CookieListItem({
     String name,
     String value,
@@ -137,7 +137,7 @@
 
 @JS('CookieStoreManager')
 @staticInterop
-class CookieStoreManager implements JSObject {}
+class CookieStoreManager {}
 
 extension CookieStoreManagerExtension on CookieStoreManager {
   external JSPromise subscribe(JSArray subscriptions);
diff --git a/lib/src/dom/credential_management.dart b/lib/src/dom/credential_management.dart
index 72b260c..62dcdf0 100644
--- a/lib/src/dom/credential_management.dart
+++ b/lib/src/dom/credential_management.dart
@@ -14,7 +14,7 @@
 
 @JS('Credential')
 @staticInterop
-class Credential implements JSObject {
+class Credential {
   external static JSPromise isConditionalMediationAvailable();
 }
 
@@ -25,7 +25,7 @@
 
 @JS('CredentialsContainer')
 @staticInterop
-class CredentialsContainer implements JSObject {}
+class CredentialsContainer {}
 
 extension CredentialsContainerExtension on CredentialsContainer {
   external JSPromise get([CredentialRequestOptions options]);
@@ -37,7 +37,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CredentialData implements JSObject {
+class CredentialData {
   external factory CredentialData({required String id});
 }
 
@@ -49,7 +49,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CredentialRequestOptions implements JSObject {
+class CredentialRequestOptions {
   external factory CredentialRequestOptions({
     IdentityCredentialRequestOptions identity,
     CredentialMediationRequirement mediation,
@@ -81,7 +81,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CredentialCreationOptions implements JSObject {
+class CredentialCreationOptions {
   external factory CredentialCreationOptions({
     AbortSignal signal,
     PasswordCredentialInit password,
@@ -152,7 +152,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FederatedCredentialRequestOptions implements JSObject {
+class FederatedCredentialRequestOptions {
   external factory FederatedCredentialRequestOptions({
     JSArray providers,
     JSArray protocols,
diff --git a/lib/src/dom/css_animation_worklet.dart b/lib/src/dom/css_animation_worklet.dart
index a4b2a36..1cb6d28 100644
--- a/lib/src/dom/css_animation_worklet.dart
+++ b/lib/src/dom/css_animation_worklet.dart
@@ -22,7 +22,7 @@
 
 @JS('WorkletAnimationEffect')
 @staticInterop
-class WorkletAnimationEffect implements JSObject {}
+class WorkletAnimationEffect {}
 
 extension WorkletAnimationEffectExtension on WorkletAnimationEffect {
   external EffectTiming getTiming();
@@ -48,7 +48,7 @@
 
 @JS('WorkletGroupEffect')
 @staticInterop
-class WorkletGroupEffect implements JSObject {}
+class WorkletGroupEffect {}
 
 extension WorkletGroupEffectExtension on WorkletGroupEffect {
   external JSArray getChildren();
diff --git a/lib/src/dom/css_font_loading.dart b/lib/src/dom/css_font_loading.dart
index 9677347..1957dfa 100644
--- a/lib/src/dom/css_font_loading.dart
+++ b/lib/src/dom/css_font_loading.dart
@@ -14,7 +14,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FontFaceDescriptors implements JSObject {
+class FontFaceDescriptors {
   external factory FontFaceDescriptors({
     String style,
     String weight,
@@ -54,7 +54,7 @@
 
 @JS('FontFace')
 @staticInterop
-class FontFace implements JSObject {
+class FontFace {
   external factory FontFace(
     String family,
     JSAny source, [
@@ -95,11 +95,11 @@
 
 @JS('FontFaceFeatures')
 @staticInterop
-class FontFaceFeatures implements JSObject {}
+class FontFaceFeatures {}
 
 @JS('FontFaceVariationAxis')
 @staticInterop
-class FontFaceVariationAxis implements JSObject {}
+class FontFaceVariationAxis {}
 
 extension FontFaceVariationAxisExtension on FontFaceVariationAxis {
   external String get name;
@@ -111,13 +111,13 @@
 
 @JS('FontFaceVariations')
 @staticInterop
-class FontFaceVariations implements JSObject {}
+class FontFaceVariations {}
 
 extension FontFaceVariationsExtension on FontFaceVariations {}
 
 @JS('FontFacePalette')
 @staticInterop
-class FontFacePalette implements JSObject {}
+class FontFacePalette {}
 
 extension FontFacePaletteExtension on FontFacePalette {
   external int get length;
@@ -127,7 +127,7 @@
 
 @JS('FontFacePalettes')
 @staticInterop
-class FontFacePalettes implements JSObject {}
+class FontFacePalettes {}
 
 extension FontFacePalettesExtension on FontFacePalettes {
   external int get length;
diff --git a/lib/src/dom/css_fonts.dart b/lib/src/dom/css_fonts.dart
index f0e6605..57991b2 100644
--- a/lib/src/dom/css_fonts.dart
+++ b/lib/src/dom/css_fonts.dart
@@ -31,7 +31,7 @@
 
 @JS('CSSFontFeatureValuesMap')
 @staticInterop
-class CSSFontFeatureValuesMap implements JSObject {}
+class CSSFontFeatureValuesMap {}
 
 extension CSSFontFeatureValuesMapExtension on CSSFontFeatureValuesMap {
   external void set(
diff --git a/lib/src/dom/css_highlight_api.dart b/lib/src/dom/css_highlight_api.dart
index 01bb648..89bff88 100644
--- a/lib/src/dom/css_highlight_api.dart
+++ b/lib/src/dom/css_highlight_api.dart
@@ -10,7 +10,7 @@
 
 @JS('Highlight')
 @staticInterop
-class Highlight implements JSObject {
+class Highlight {
   external factory Highlight(AbstractRange initialRanges);
 }
 
@@ -23,6 +23,6 @@
 
 @JS('HighlightRegistry')
 @staticInterop
-class HighlightRegistry implements JSObject {}
+class HighlightRegistry {}
 
 extension HighlightRegistryExtension on HighlightRegistry {}
diff --git a/lib/src/dom/css_layout_api.dart b/lib/src/dom/css_layout_api.dart
index 74634e1..0fe7191 100644
--- a/lib/src/dom/css_layout_api.dart
+++ b/lib/src/dom/css_layout_api.dart
@@ -27,7 +27,7 @@
 @JS()
 @staticInterop
 @anonymous
-class LayoutOptions implements JSObject {
+class LayoutOptions {
   external factory LayoutOptions({
     ChildDisplayType childDisplay,
     LayoutSizingMode sizing,
@@ -43,7 +43,7 @@
 
 @JS('LayoutChild')
 @staticInterop
-class LayoutChild implements JSObject {}
+class LayoutChild {}
 
 extension LayoutChildExtension on LayoutChild {
   external JSPromise intrinsicSizes();
@@ -56,7 +56,7 @@
 
 @JS('LayoutFragment')
 @staticInterop
-class LayoutFragment implements JSObject {}
+class LayoutFragment {}
 
 extension LayoutFragmentExtension on LayoutFragment {
   external num get inlineSize;
@@ -71,7 +71,7 @@
 
 @JS('IntrinsicSizes')
 @staticInterop
-class IntrinsicSizes implements JSObject {}
+class IntrinsicSizes {}
 
 extension IntrinsicSizesExtension on IntrinsicSizes {
   external num get minContentSize;
@@ -80,7 +80,7 @@
 
 @JS('LayoutConstraints')
 @staticInterop
-class LayoutConstraints implements JSObject {}
+class LayoutConstraints {}
 
 extension LayoutConstraintsExtension on LayoutConstraints {
   external num get availableInlineSize;
@@ -97,7 +97,7 @@
 @JS()
 @staticInterop
 @anonymous
-class LayoutConstraintsOptions implements JSObject {
+class LayoutConstraintsOptions {
   external factory LayoutConstraintsOptions({
     num availableInlineSize,
     num availableBlockSize,
@@ -134,7 +134,7 @@
 
 @JS('ChildBreakToken')
 @staticInterop
-class ChildBreakToken implements JSObject {}
+class ChildBreakToken {}
 
 extension ChildBreakTokenExtension on ChildBreakToken {
   external BreakType get breakType;
@@ -143,7 +143,7 @@
 
 @JS('BreakToken')
 @staticInterop
-class BreakToken implements JSObject {}
+class BreakToken {}
 
 extension BreakTokenExtension on BreakToken {
   external JSArray get childBreakTokens;
@@ -153,7 +153,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BreakTokenOptions implements JSObject {
+class BreakTokenOptions {
   external factory BreakTokenOptions({
     JSArray childBreakTokens,
     JSAny? data,
@@ -169,7 +169,7 @@
 
 @JS('LayoutEdges')
 @staticInterop
-class LayoutEdges implements JSObject {}
+class LayoutEdges {}
 
 extension LayoutEdgesExtension on LayoutEdges {
   external num get inlineStart;
@@ -183,7 +183,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FragmentResultOptions implements JSObject {
+class FragmentResultOptions {
   external factory FragmentResultOptions({
     num inlineSize,
     num blockSize,
@@ -211,7 +211,7 @@
 
 @JS('FragmentResult')
 @staticInterop
-class FragmentResult implements JSObject {
+class FragmentResult {
   external factory FragmentResult([FragmentResultOptions options]);
 }
 
@@ -223,7 +223,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IntrinsicSizesResultOptions implements JSObject {
+class IntrinsicSizesResultOptions {
   external factory IntrinsicSizesResultOptions({
     num maxContentSize,
     num minContentSize,
diff --git a/lib/src/dom/css_nav.dart b/lib/src/dom/css_nav.dart
index 0fb606f..981d905 100644
--- a/lib/src/dom/css_nav.dart
+++ b/lib/src/dom/css_nav.dart
@@ -13,7 +13,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FocusableAreasOption implements JSObject {
+class FocusableAreasOption {
   external factory FocusableAreasOption({FocusableAreaSearchMode mode});
 }
 
@@ -25,7 +25,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SpatialNavigationSearchOptions implements JSObject {
+class SpatialNavigationSearchOptions {
   external factory SpatialNavigationSearchOptions({
     JSArray? candidates,
     Node? container,
diff --git a/lib/src/dom/css_paint_api.dart b/lib/src/dom/css_paint_api.dart
index 7acc118..eb08cf9 100644
--- a/lib/src/dom/css_paint_api.dart
+++ b/lib/src/dom/css_paint_api.dart
@@ -23,7 +23,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PaintRenderingContext2DSettings implements JSObject {
+class PaintRenderingContext2DSettings {
   external factory PaintRenderingContext2DSettings({bool alpha});
 }
 
@@ -35,7 +35,7 @@
 
 @JS('PaintRenderingContext2D')
 @staticInterop
-class PaintRenderingContext2D implements JSObject {}
+class PaintRenderingContext2D {}
 
 extension PaintRenderingContext2DExtension on PaintRenderingContext2D {
   external void save();
@@ -239,7 +239,7 @@
 
 @JS('PaintSize')
 @staticInterop
-class PaintSize implements JSObject {}
+class PaintSize {}
 
 extension PaintSizeExtension on PaintSize {
   external num get width;
diff --git a/lib/src/dom/css_parser_api.dart b/lib/src/dom/css_parser_api.dart
index ee1c423..d7414a7 100644
--- a/lib/src/dom/css_parser_api.dart
+++ b/lib/src/dom/css_parser_api.dart
@@ -10,7 +10,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CSSParserOptions implements JSObject {
+class CSSParserOptions {
   external factory CSSParserOptions({JSObject atRules});
 }
 
@@ -21,7 +21,7 @@
 
 @JS('CSSParserRule')
 @staticInterop
-class CSSParserRule implements JSObject {}
+class CSSParserRule {}
 
 @JS('CSSParserAtRule')
 @staticInterop
@@ -69,7 +69,7 @@
 
 @JS('CSSParserValue')
 @staticInterop
-class CSSParserValue implements JSObject {}
+class CSSParserValue {}
 
 @JS('CSSParserBlock')
 @staticInterop
diff --git a/lib/src/dom/css_properties_values_api.dart b/lib/src/dom/css_properties_values_api.dart
index 9f3e695..2a99f51 100644
--- a/lib/src/dom/css_properties_values_api.dart
+++ b/lib/src/dom/css_properties_values_api.dart
@@ -9,7 +9,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PropertyDefinition implements JSObject {
+class PropertyDefinition {
   external factory PropertyDefinition({
     required String name,
     String syntax,
diff --git a/lib/src/dom/css_regions.dart b/lib/src/dom/css_regions.dart
index a75cb99..9e6ddc7 100644
--- a/lib/src/dom/css_regions.dart
+++ b/lib/src/dom/css_regions.dart
@@ -8,7 +8,7 @@
 
 @JS('NamedFlowMap')
 @staticInterop
-class NamedFlowMap implements JSObject {}
+class NamedFlowMap {}
 
 extension NamedFlowMapExtension on NamedFlowMap {}
 
diff --git a/lib/src/dom/css_typed_om.dart b/lib/src/dom/css_typed_om.dart
index dcbf390..111740e 100644
--- a/lib/src/dom/css_typed_om.dart
+++ b/lib/src/dom/css_typed_om.dart
@@ -19,7 +19,7 @@
 
 @JS('CSSStyleValue')
 @staticInterop
-class CSSStyleValue implements JSObject {
+class CSSStyleValue {
   external static CSSStyleValue parse(
     String property,
     String cssText,
@@ -32,7 +32,7 @@
 
 @JS('StylePropertyMapReadOnly')
 @staticInterop
-class StylePropertyMapReadOnly implements JSObject {}
+class StylePropertyMapReadOnly {}
 
 extension StylePropertyMapReadOnlyExtension on StylePropertyMapReadOnly {
   external CSSStyleValue? get(String property);
@@ -70,7 +70,7 @@
 
 @JS('CSSVariableReferenceValue')
 @staticInterop
-class CSSVariableReferenceValue implements JSObject {
+class CSSVariableReferenceValue {
   external factory CSSVariableReferenceValue(
     String variable, [
     CSSUnparsedValue? fallback,
@@ -97,7 +97,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CSSNumericType implements JSObject {
+class CSSNumericType {
   external factory CSSNumericType({
     int length,
     int angle,
@@ -249,7 +249,7 @@
 
 @JS('CSSNumericArray')
 @staticInterop
-class CSSNumericArray implements JSObject {}
+class CSSNumericArray {}
 
 extension CSSNumericArrayExtension on CSSNumericArray {
   external int get length;
@@ -269,7 +269,7 @@
 
 @JS('CSSTransformComponent')
 @staticInterop
-class CSSTransformComponent implements JSObject {}
+class CSSTransformComponent {}
 
 extension CSSTransformComponentExtension on CSSTransformComponent {
   external DOMMatrix toMatrix();
@@ -403,7 +403,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CSSMatrixComponentOptions implements JSObject {
+class CSSMatrixComponentOptions {
   external factory CSSMatrixComponentOptions({bool is2D});
 }
 
diff --git a/lib/src/dom/css_view_transitions.dart b/lib/src/dom/css_view_transitions.dart
index 8b6f759..217c265 100644
--- a/lib/src/dom/css_view_transitions.dart
+++ b/lib/src/dom/css_view_transitions.dart
@@ -8,7 +8,7 @@
 
 @JS('ViewTransition')
 @staticInterop
-class ViewTransition implements JSObject {}
+class ViewTransition {}
 
 extension ViewTransitionExtension on ViewTransition {
   external void skipTransition();
diff --git a/lib/src/dom/cssom.dart b/lib/src/dom/cssom.dart
index d5a83b3..106b944 100644
--- a/lib/src/dom/cssom.dart
+++ b/lib/src/dom/cssom.dart
@@ -12,7 +12,7 @@
 
 @JS('MediaList')
 @staticInterop
-class MediaList implements JSObject {}
+class MediaList {}
 
 extension MediaListExtension on MediaList {
   external String? item(int index);
@@ -25,7 +25,7 @@
 
 @JS('StyleSheet')
 @staticInterop
-class StyleSheet implements JSObject {}
+class StyleSheet {}
 
 extension StyleSheetExtension on StyleSheet {
   external String get type;
@@ -66,7 +66,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CSSStyleSheetInit implements JSObject {
+class CSSStyleSheetInit {
   external factory CSSStyleSheetInit({
     String baseURL,
     JSAny media,
@@ -85,7 +85,7 @@
 
 @JS('StyleSheetList')
 @staticInterop
-class StyleSheetList implements JSObject {}
+class StyleSheetList {}
 
 extension StyleSheetListExtension on StyleSheetList {
   external CSSStyleSheet? item(int index);
@@ -94,7 +94,7 @@
 
 @JS('CSSRuleList')
 @staticInterop
-class CSSRuleList implements JSObject {}
+class CSSRuleList {}
 
 extension CSSRuleListExtension on CSSRuleList {
   external CSSRule? item(int index);
@@ -103,7 +103,7 @@
 
 @JS('CSSRule')
 @staticInterop
-class CSSRule implements JSObject {
+class CSSRule {
   external static int get KEYFRAMES_RULE;
   external static int get KEYFRAME_RULE;
   external static int get SUPPORTS_RULE;
@@ -193,7 +193,7 @@
 
 @JS('CSSStyleDeclaration')
 @staticInterop
-class CSSStyleDeclaration implements JSObject {}
+class CSSStyleDeclaration {}
 
 extension CSSStyleDeclarationExtension on CSSStyleDeclaration {
   external String item(int index);
diff --git a/lib/src/dom/cssom_view.dart b/lib/src/dom/cssom_view.dart
index 82a9dfd..e52bd2d 100644
--- a/lib/src/dom/cssom_view.dart
+++ b/lib/src/dom/cssom_view.dart
@@ -17,7 +17,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ScrollOptions implements JSObject {
+class ScrollOptions {
   external factory ScrollOptions({ScrollBehavior behavior});
 }
 
@@ -89,7 +89,7 @@
 
 @JS('Screen')
 @staticInterop
-class Screen implements JSObject {}
+class Screen {}
 
 extension ScreenExtension on Screen {
   external int get availWidth;
@@ -106,7 +106,7 @@
 
 @JS('CaretPosition')
 @staticInterop
-class CaretPosition implements JSObject {}
+class CaretPosition {}
 
 extension CaretPositionExtension on CaretPosition {
   external DOMRect? getClientRect();
@@ -134,7 +134,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CheckVisibilityOptions implements JSObject {
+class CheckVisibilityOptions {
   external factory CheckVisibilityOptions({
     bool checkOpacity,
     bool checkVisibilityCSS,
@@ -151,7 +151,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BoxQuadOptions implements JSObject {
+class BoxQuadOptions {
   external factory BoxQuadOptions({
     CSSBoxType box,
     GeometryNode relativeTo,
@@ -168,7 +168,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ConvertCoordinateOptions implements JSObject {
+class ConvertCoordinateOptions {
   external factory ConvertCoordinateOptions({
     CSSBoxType fromBox,
     CSSBoxType toBox,
diff --git a/lib/src/dom/custom_state_pseudo_class.dart b/lib/src/dom/custom_state_pseudo_class.dart
index ef30f35..31b4062 100644
--- a/lib/src/dom/custom_state_pseudo_class.dart
+++ b/lib/src/dom/custom_state_pseudo_class.dart
@@ -6,7 +6,7 @@
 
 @JS('CustomStateSet')
 @staticInterop
-class CustomStateSet implements JSObject {}
+class CustomStateSet {}
 
 extension CustomStateSetExtension on CustomStateSet {
   external void add(String value);
diff --git a/lib/src/dom/digital_goods.dart b/lib/src/dom/digital_goods.dart
index 4fa410b..8f9f7f5 100644
--- a/lib/src/dom/digital_goods.dart
+++ b/lib/src/dom/digital_goods.dart
@@ -10,7 +10,7 @@
 
 @JS('DigitalGoodsService')
 @staticInterop
-class DigitalGoodsService implements JSObject {}
+class DigitalGoodsService {}
 
 extension DigitalGoodsServiceExtension on DigitalGoodsService {
   external JSPromise getDetails(JSArray itemIds);
@@ -22,7 +22,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ItemDetails implements JSObject {
+class ItemDetails {
   external factory ItemDetails({
     required String itemId,
     required String title,
@@ -66,7 +66,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PurchaseDetails implements JSObject {
+class PurchaseDetails {
   external factory PurchaseDetails({
     required String itemId,
     required String purchaseToken,
diff --git a/lib/src/dom/document_picture_in_picture.dart b/lib/src/dom/document_picture_in_picture.dart
index 421e924..f308976 100644
--- a/lib/src/dom/document_picture_in_picture.dart
+++ b/lib/src/dom/document_picture_in_picture.dart
@@ -21,7 +21,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DocumentPictureInPictureOptions implements JSObject {
+class DocumentPictureInPictureOptions {
   external factory DocumentPictureInPictureOptions({
     int width,
     int height,
diff --git a/lib/src/dom/dom.dart b/lib/src/dom/dom.dart
index b1f5168..dba9b0b 100644
--- a/lib/src/dom/dom.dart
+++ b/lib/src/dom/dom.dart
@@ -33,7 +33,7 @@
 
 @JS('Event')
 @staticInterop
-class Event implements JSObject {
+class Event {
   external factory Event(
     String type, [
     EventInit eventInitDict,
@@ -75,7 +75,7 @@
 @JS()
 @staticInterop
 @anonymous
-class EventInit implements JSObject {
+class EventInit {
   external factory EventInit({
     bool bubbles,
     bool cancelable,
@@ -125,7 +125,7 @@
 
 @JS('EventTarget')
 @staticInterop
-class EventTarget implements JSObject {
+class EventTarget {
   external factory EventTarget();
 }
 
@@ -146,7 +146,7 @@
 @JS()
 @staticInterop
 @anonymous
-class EventListenerOptions implements JSObject {
+class EventListenerOptions {
   external factory EventListenerOptions({bool capture});
 }
 
@@ -177,7 +177,7 @@
 
 @JS('AbortController')
 @staticInterop
-class AbortController implements JSObject {
+class AbortController {
   external factory AbortController();
 }
 
@@ -204,7 +204,7 @@
 
 @JS('NodeList')
 @staticInterop
-class NodeList implements JSObject {}
+class NodeList {}
 
 extension NodeListExtension on NodeList {
   external Node? item(int index);
@@ -213,7 +213,7 @@
 
 @JS('HTMLCollection')
 @staticInterop
-class HTMLCollection implements JSObject {}
+class HTMLCollection {}
 
 extension HTMLCollectionExtension on HTMLCollection {
   external Element? item(int index);
@@ -223,7 +223,7 @@
 
 @JS('MutationObserver')
 @staticInterop
-class MutationObserver implements JSObject {
+class MutationObserver {
   external factory MutationObserver(MutationCallback callback);
 }
 
@@ -239,7 +239,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MutationObserverInit implements JSObject {
+class MutationObserverInit {
   external factory MutationObserverInit({
     bool childList,
     bool attributes,
@@ -270,7 +270,7 @@
 
 @JS('MutationRecord')
 @staticInterop
-class MutationRecord implements JSObject {}
+class MutationRecord {}
 
 extension MutationRecordExtension on MutationRecord {
   external String get type;
@@ -350,7 +350,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GetRootNodeOptions implements JSObject {
+class GetRootNodeOptions {
   external factory GetRootNodeOptions({bool composed});
 }
 
@@ -801,7 +801,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ElementCreationOptions implements JSObject {
+class ElementCreationOptions {
   external factory ElementCreationOptions({String is_});
 }
 
@@ -814,7 +814,7 @@
 
 @JS('DOMImplementation')
 @staticInterop
-class DOMImplementation implements JSObject {}
+class DOMImplementation {}
 
 extension DOMImplementationExtension on DOMImplementation {
   external DocumentType createDocumentType(
@@ -1161,7 +1161,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ShadowRootInit implements JSObject {
+class ShadowRootInit {
   external factory ShadowRootInit({
     required ShadowRootMode mode,
     bool delegatesFocus,
@@ -1180,7 +1180,7 @@
 
 @JS('NamedNodeMap')
 @staticInterop
-class NamedNodeMap implements JSObject {}
+class NamedNodeMap {}
 
 extension NamedNodeMapExtension on NamedNodeMap {
   external Attr? item(int index);
@@ -1297,7 +1297,7 @@
 
 @JS('AbstractRange')
 @staticInterop
-class AbstractRange implements JSObject {}
+class AbstractRange {}
 
 extension AbstractRangeExtension on AbstractRange {
   external Node get startContainer;
@@ -1310,7 +1310,7 @@
 @JS()
 @staticInterop
 @anonymous
-class StaticRangeInit implements JSObject {
+class StaticRangeInit {
   external factory StaticRangeInit({
     required Node startContainer,
     required int startOffset,
@@ -1391,7 +1391,7 @@
 
 @JS('NodeIterator')
 @staticInterop
-class NodeIterator implements JSObject {}
+class NodeIterator {}
 
 extension NodeIteratorExtension on NodeIterator {
   external Node? nextNode();
@@ -1406,7 +1406,7 @@
 
 @JS('TreeWalker')
 @staticInterop
-class TreeWalker implements JSObject {}
+class TreeWalker {}
 
 extension TreeWalkerExtension on TreeWalker {
   external Node? parentNode();
@@ -1425,7 +1425,7 @@
 
 @JS('DOMTokenList')
 @staticInterop
-class DOMTokenList implements JSObject {}
+class DOMTokenList {}
 
 extension DOMTokenListExtension on DOMTokenList {
   external String? item(int index);
@@ -1448,7 +1448,7 @@
 
 @JS('XPathResult')
 @staticInterop
-class XPathResult implements JSObject {
+class XPathResult {
   external static int get ANY_TYPE;
   external static int get NUMBER_TYPE;
   external static int get STRING_TYPE;
@@ -1475,7 +1475,7 @@
 
 @JS('XPathExpression')
 @staticInterop
-class XPathExpression implements JSObject {}
+class XPathExpression {}
 
 extension XPathExpressionExtension on XPathExpression {
   external XPathResult evaluate(
@@ -1487,7 +1487,7 @@
 
 @JS('XPathEvaluator')
 @staticInterop
-class XPathEvaluator implements JSObject {
+class XPathEvaluator {
   external factory XPathEvaluator();
 }
 
@@ -1508,7 +1508,7 @@
 
 @JS('XSLTProcessor')
 @staticInterop
-class XSLTProcessor implements JSObject {
+class XSLTProcessor {
   external factory XSLTProcessor();
 }
 
diff --git a/lib/src/dom/dom_parsing.dart b/lib/src/dom/dom_parsing.dart
index 8ad76de..59ea67b 100644
--- a/lib/src/dom/dom_parsing.dart
+++ b/lib/src/dom/dom_parsing.dart
@@ -8,7 +8,7 @@
 
 @JS('XMLSerializer')
 @staticInterop
-class XMLSerializer implements JSObject {
+class XMLSerializer {
   external factory XMLSerializer();
 }
 
diff --git a/lib/src/dom/edit_context.dart b/lib/src/dom/edit_context.dart
index 70197b0..79e8a19 100644
--- a/lib/src/dom/edit_context.dart
+++ b/lib/src/dom/edit_context.dart
@@ -14,7 +14,7 @@
 @JS()
 @staticInterop
 @anonymous
-class EditContextInit implements JSObject {
+class EditContextInit {
   external factory EditContextInit({
     String text,
     int selectionStart,
@@ -130,7 +130,7 @@
 @JS()
 @staticInterop
 @anonymous
-class TextFormatInit implements JSObject {
+class TextFormatInit {
   external factory TextFormatInit({
     int rangeStart,
     int rangeEnd,
@@ -152,7 +152,7 @@
 
 @JS('TextFormat')
 @staticInterop
-class TextFormat implements JSObject {
+class TextFormat {
   external factory TextFormat([TextFormatInit options]);
 }
 
diff --git a/lib/src/dom/element_capture.dart b/lib/src/dom/element_capture.dart
index 849521d..26565c2 100644
--- a/lib/src/dom/element_capture.dart
+++ b/lib/src/dom/element_capture.dart
@@ -8,6 +8,6 @@
 
 @JS('RestrictionTarget')
 @staticInterop
-class RestrictionTarget implements JSObject {
+class RestrictionTarget {
   external static JSPromise fromElement(Element element);
 }
diff --git a/lib/src/dom/encoding.dart b/lib/src/dom/encoding.dart
index b001114..7f1b7e6 100644
--- a/lib/src/dom/encoding.dart
+++ b/lib/src/dom/encoding.dart
@@ -10,7 +10,7 @@
 @JS()
 @staticInterop
 @anonymous
-class TextDecoderOptions implements JSObject {
+class TextDecoderOptions {
   external factory TextDecoderOptions({
     bool fatal,
     bool ignoreBOM,
@@ -27,7 +27,7 @@
 @JS()
 @staticInterop
 @anonymous
-class TextDecodeOptions implements JSObject {
+class TextDecodeOptions {
   external factory TextDecodeOptions({bool stream});
 }
 
@@ -38,7 +38,7 @@
 
 @JS('TextDecoder')
 @staticInterop
-class TextDecoder implements JSObject {
+class TextDecoder {
   external factory TextDecoder([
     String label,
     TextDecoderOptions options,
@@ -58,7 +58,7 @@
 @JS()
 @staticInterop
 @anonymous
-class TextEncoderEncodeIntoResult implements JSObject {
+class TextEncoderEncodeIntoResult {
   external factory TextEncoderEncodeIntoResult({
     int read,
     int written,
@@ -74,7 +74,7 @@
 
 @JS('TextEncoder')
 @staticInterop
-class TextEncoder implements JSObject {
+class TextEncoder {
   external factory TextEncoder();
 }
 
@@ -89,7 +89,7 @@
 
 @JS('TextDecoderStream')
 @staticInterop
-class TextDecoderStream implements JSObject {
+class TextDecoderStream {
   external factory TextDecoderStream([
     String label,
     TextDecoderOptions options,
@@ -106,7 +106,7 @@
 
 @JS('TextEncoderStream')
 @staticInterop
-class TextEncoderStream implements JSObject {
+class TextEncoderStream {
   external factory TextEncoderStream();
 }
 
diff --git a/lib/src/dom/encrypted_media.dart b/lib/src/dom/encrypted_media.dart
index c8e7cd9..8ff298b 100644
--- a/lib/src/dom/encrypted_media.dart
+++ b/lib/src/dom/encrypted_media.dart
@@ -17,7 +17,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaKeySystemConfiguration implements JSObject {
+class MediaKeySystemConfiguration {
   external factory MediaKeySystemConfiguration({
     String label,
     JSArray initDataTypes,
@@ -49,7 +49,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaKeySystemMediaCapability implements JSObject {
+class MediaKeySystemMediaCapability {
   external factory MediaKeySystemMediaCapability({
     String contentType,
     String? encryptionScheme,
@@ -69,7 +69,7 @@
 
 @JS('MediaKeySystemAccess')
 @staticInterop
-class MediaKeySystemAccess implements JSObject {}
+class MediaKeySystemAccess {}
 
 extension MediaKeySystemAccessExtension on MediaKeySystemAccess {
   external MediaKeySystemConfiguration getConfiguration();
@@ -79,7 +79,7 @@
 
 @JS('MediaKeys')
 @staticInterop
-class MediaKeys implements JSObject {}
+class MediaKeys {}
 
 extension MediaKeysExtension on MediaKeys {
   external MediaKeySession createSession([MediaKeySessionType sessionType]);
@@ -111,7 +111,7 @@
 
 @JS('MediaKeyStatusMap')
 @staticInterop
-class MediaKeyStatusMap implements JSObject {}
+class MediaKeyStatusMap {}
 
 extension MediaKeyStatusMapExtension on MediaKeyStatusMap {
   external bool has(BufferSource keyId);
diff --git a/lib/src/dom/entries_api.dart b/lib/src/dom/entries_api.dart
index 60e64af..9d78127 100644
--- a/lib/src/dom/entries_api.dart
+++ b/lib/src/dom/entries_api.dart
@@ -11,7 +11,7 @@
 
 @JS('FileSystemEntry')
 @staticInterop
-class FileSystemEntry implements JSObject {}
+class FileSystemEntry {}
 
 extension FileSystemEntryExtension on FileSystemEntry {
   external void getParent([
@@ -48,7 +48,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FileSystemFlags implements JSObject {
+class FileSystemFlags {
   external factory FileSystemFlags({
     bool create,
     bool exclusive,
@@ -64,7 +64,7 @@
 
 @JS('FileSystemDirectoryReader')
 @staticInterop
-class FileSystemDirectoryReader implements JSObject {}
+class FileSystemDirectoryReader {}
 
 extension FileSystemDirectoryReaderExtension on FileSystemDirectoryReader {
   external void readEntries(
@@ -86,7 +86,7 @@
 
 @JS('FileSystem')
 @staticInterop
-class FileSystem implements JSObject {}
+class FileSystem {}
 
 extension FileSystemExtension on FileSystem {
   external String get name;
diff --git a/lib/src/dom/event_timing.dart b/lib/src/dom/event_timing.dart
index 34ec200..1354e59 100644
--- a/lib/src/dom/event_timing.dart
+++ b/lib/src/dom/event_timing.dart
@@ -23,6 +23,6 @@
 
 @JS('EventCounts')
 @staticInterop
-class EventCounts implements JSObject {}
+class EventCounts {}
 
 extension EventCountsExtension on EventCounts {}
diff --git a/lib/src/dom/ext_blend_minmax.dart b/lib/src/dom/ext_blend_minmax.dart
index 25819c0..fd664df 100644
--- a/lib/src/dom/ext_blend_minmax.dart
+++ b/lib/src/dom/ext_blend_minmax.dart
@@ -8,7 +8,7 @@
 
 @JS('EXT_blend_minmax')
 @staticInterop
-class EXT_blend_minmax implements JSObject {
+class EXT_blend_minmax {
   external static GLenum get MIN_EXT;
   external static GLenum get MAX_EXT;
 }
diff --git a/lib/src/dom/ext_color_buffer_float.dart b/lib/src/dom/ext_color_buffer_float.dart
index 200e7eb..850366a 100644
--- a/lib/src/dom/ext_color_buffer_float.dart
+++ b/lib/src/dom/ext_color_buffer_float.dart
@@ -6,4 +6,4 @@
 
 @JS('EXT_color_buffer_float')
 @staticInterop
-class EXT_color_buffer_float implements JSObject {}
+class EXT_color_buffer_float {}
diff --git a/lib/src/dom/ext_color_buffer_half_float.dart b/lib/src/dom/ext_color_buffer_half_float.dart
index e181a9e..06926d5 100644
--- a/lib/src/dom/ext_color_buffer_half_float.dart
+++ b/lib/src/dom/ext_color_buffer_half_float.dart
@@ -8,7 +8,7 @@
 
 @JS('EXT_color_buffer_half_float')
 @staticInterop
-class EXT_color_buffer_half_float implements JSObject {
+class EXT_color_buffer_half_float {
   external static GLenum get RGBA16F_EXT;
   external static GLenum get RGB16F_EXT;
   external static GLenum get FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT;
diff --git a/lib/src/dom/ext_disjoint_timer_query.dart b/lib/src/dom/ext_disjoint_timer_query.dart
index 2515636..ea94b59 100644
--- a/lib/src/dom/ext_disjoint_timer_query.dart
+++ b/lib/src/dom/ext_disjoint_timer_query.dart
@@ -14,7 +14,7 @@
 
 @JS('EXT_disjoint_timer_query')
 @staticInterop
-class EXT_disjoint_timer_query implements JSObject {
+class EXT_disjoint_timer_query {
   external static GLenum get QUERY_COUNTER_BITS_EXT;
   external static GLenum get CURRENT_QUERY_EXT;
   external static GLenum get QUERY_RESULT_EXT;
diff --git a/lib/src/dom/ext_disjoint_timer_query_webgl2.dart b/lib/src/dom/ext_disjoint_timer_query_webgl2.dart
index 16cf9cf..6408caf 100644
--- a/lib/src/dom/ext_disjoint_timer_query_webgl2.dart
+++ b/lib/src/dom/ext_disjoint_timer_query_webgl2.dart
@@ -9,7 +9,7 @@
 
 @JS('EXT_disjoint_timer_query_webgl2')
 @staticInterop
-class EXT_disjoint_timer_query_webgl2 implements JSObject {
+class EXT_disjoint_timer_query_webgl2 {
   external static GLenum get QUERY_COUNTER_BITS_EXT;
   external static GLenum get TIME_ELAPSED_EXT;
   external static GLenum get TIMESTAMP_EXT;
diff --git a/lib/src/dom/ext_float_blend.dart b/lib/src/dom/ext_float_blend.dart
index fad6466..8fa3267 100644
--- a/lib/src/dom/ext_float_blend.dart
+++ b/lib/src/dom/ext_float_blend.dart
@@ -6,4 +6,4 @@
 
 @JS('EXT_float_blend')
 @staticInterop
-class EXT_float_blend implements JSObject {}
+class EXT_float_blend {}
diff --git a/lib/src/dom/ext_frag_depth.dart b/lib/src/dom/ext_frag_depth.dart
index 4c3b0d4..41cab29 100644
--- a/lib/src/dom/ext_frag_depth.dart
+++ b/lib/src/dom/ext_frag_depth.dart
@@ -6,4 +6,4 @@
 
 @JS('EXT_frag_depth')
 @staticInterop
-class EXT_frag_depth implements JSObject {}
+class EXT_frag_depth {}
diff --git a/lib/src/dom/ext_shader_texture_lod.dart b/lib/src/dom/ext_shader_texture_lod.dart
index 868080a..72da307 100644
--- a/lib/src/dom/ext_shader_texture_lod.dart
+++ b/lib/src/dom/ext_shader_texture_lod.dart
@@ -6,4 +6,4 @@
 
 @JS('EXT_shader_texture_lod')
 @staticInterop
-class EXT_shader_texture_lod implements JSObject {}
+class EXT_shader_texture_lod {}
diff --git a/lib/src/dom/ext_srgb.dart b/lib/src/dom/ext_srgb.dart
index f649b87..ad22e7d 100644
--- a/lib/src/dom/ext_srgb.dart
+++ b/lib/src/dom/ext_srgb.dart
@@ -8,7 +8,7 @@
 
 @JS('EXT_sRGB')
 @staticInterop
-class EXT_sRGB implements JSObject {
+class EXT_sRGB {
   external static GLenum get SRGB_EXT;
   external static GLenum get SRGB_ALPHA_EXT;
   external static GLenum get SRGB8_ALPHA8_EXT;
diff --git a/lib/src/dom/ext_texture_compression_bptc.dart b/lib/src/dom/ext_texture_compression_bptc.dart
index d054c75..b7759b3 100644
--- a/lib/src/dom/ext_texture_compression_bptc.dart
+++ b/lib/src/dom/ext_texture_compression_bptc.dart
@@ -8,7 +8,7 @@
 
 @JS('EXT_texture_compression_bptc')
 @staticInterop
-class EXT_texture_compression_bptc implements JSObject {
+class EXT_texture_compression_bptc {
   external static GLenum get COMPRESSED_RGBA_BPTC_UNORM_EXT;
   external static GLenum get COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT;
   external static GLenum get COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;
diff --git a/lib/src/dom/ext_texture_compression_rgtc.dart b/lib/src/dom/ext_texture_compression_rgtc.dart
index 323b1c5..d521c71 100644
--- a/lib/src/dom/ext_texture_compression_rgtc.dart
+++ b/lib/src/dom/ext_texture_compression_rgtc.dart
@@ -8,7 +8,7 @@
 
 @JS('EXT_texture_compression_rgtc')
 @staticInterop
-class EXT_texture_compression_rgtc implements JSObject {
+class EXT_texture_compression_rgtc {
   external static GLenum get COMPRESSED_RED_RGTC1_EXT;
   external static GLenum get COMPRESSED_SIGNED_RED_RGTC1_EXT;
   external static GLenum get COMPRESSED_RED_GREEN_RGTC2_EXT;
diff --git a/lib/src/dom/ext_texture_filter_anisotropic.dart b/lib/src/dom/ext_texture_filter_anisotropic.dart
index 123f4f3..b36ba81 100644
--- a/lib/src/dom/ext_texture_filter_anisotropic.dart
+++ b/lib/src/dom/ext_texture_filter_anisotropic.dart
@@ -8,7 +8,7 @@
 
 @JS('EXT_texture_filter_anisotropic')
 @staticInterop
-class EXT_texture_filter_anisotropic implements JSObject {
+class EXT_texture_filter_anisotropic {
   external static GLenum get TEXTURE_MAX_ANISOTROPY_EXT;
   external static GLenum get MAX_TEXTURE_MAX_ANISOTROPY_EXT;
 }
diff --git a/lib/src/dom/ext_texture_norm16.dart b/lib/src/dom/ext_texture_norm16.dart
index d963b56..d045f5b 100644
--- a/lib/src/dom/ext_texture_norm16.dart
+++ b/lib/src/dom/ext_texture_norm16.dart
@@ -8,7 +8,7 @@
 
 @JS('EXT_texture_norm16')
 @staticInterop
-class EXT_texture_norm16 implements JSObject {
+class EXT_texture_norm16 {
   external static GLenum get R16_EXT;
   external static GLenum get RG16_EXT;
   external static GLenum get RGB16_EXT;
diff --git a/lib/src/dom/eyedropper_api.dart b/lib/src/dom/eyedropper_api.dart
index bdc1469..632cf7b 100644
--- a/lib/src/dom/eyedropper_api.dart
+++ b/lib/src/dom/eyedropper_api.dart
@@ -9,7 +9,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ColorSelectionResult implements JSObject {
+class ColorSelectionResult {
   external factory ColorSelectionResult({String sRGBHex});
 }
 
@@ -21,7 +21,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ColorSelectionOptions implements JSObject {
+class ColorSelectionOptions {
   external factory ColorSelectionOptions({AbortSignal signal});
 }
 
@@ -32,7 +32,7 @@
 
 @JS('EyeDropper')
 @staticInterop
-class EyeDropper implements JSObject {
+class EyeDropper {
   external factory EyeDropper();
 }
 
diff --git a/lib/src/dom/fedcm.dart b/lib/src/dom/fedcm.dart
index 97e4d9e..0680a20 100644
--- a/lib/src/dom/fedcm.dart
+++ b/lib/src/dom/fedcm.dart
@@ -19,7 +19,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IdentityCredentialRequestOptions implements JSObject {
+class IdentityCredentialRequestOptions {
   external factory IdentityCredentialRequestOptions({
     required JSArray providers,
     IdentityCredentialRequestOptionsContext context,
@@ -37,7 +37,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IdentityProviderConfig implements JSObject {
+class IdentityProviderConfig {
   external factory IdentityProviderConfig({
     required String configURL,
     required String clientId,
@@ -60,7 +60,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IdentityProviderWellKnown implements JSObject {
+class IdentityProviderWellKnown {
   external factory IdentityProviderWellKnown({required JSArray provider_urls});
 }
 
@@ -72,7 +72,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IdentityProviderIcon implements JSObject {
+class IdentityProviderIcon {
   external factory IdentityProviderIcon({
     required String url,
     int size,
@@ -89,7 +89,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IdentityProviderBranding implements JSObject {
+class IdentityProviderBranding {
   external factory IdentityProviderBranding({
     String background_color,
     String color,
@@ -112,7 +112,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IdentityProviderAPIConfig implements JSObject {
+class IdentityProviderAPIConfig {
   external factory IdentityProviderAPIConfig({
     required String accounts_endpoint,
     required String client_metadata_endpoint,
@@ -135,7 +135,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IdentityProviderAccount implements JSObject {
+class IdentityProviderAccount {
   external factory IdentityProviderAccount({
     required String id,
     required String name,
@@ -167,7 +167,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IdentityProviderAccountList implements JSObject {
+class IdentityProviderAccountList {
   external factory IdentityProviderAccountList({JSArray accounts});
 }
 
@@ -179,7 +179,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IdentityProviderToken implements JSObject {
+class IdentityProviderToken {
   external factory IdentityProviderToken({required String token});
 }
 
@@ -191,7 +191,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IdentityProviderClientMetadata implements JSObject {
+class IdentityProviderClientMetadata {
   external factory IdentityProviderClientMetadata({
     String privacy_policy_url,
     String terms_of_service_url,
@@ -209,7 +209,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IdentityUserInfo implements JSObject {
+class IdentityUserInfo {
   external factory IdentityUserInfo({
     String email,
     String name,
@@ -231,6 +231,6 @@
 
 @JS('IdentityProvider')
 @staticInterop
-class IdentityProvider implements JSObject {
+class IdentityProvider {
   external static JSPromise getUserInfo(IdentityProviderConfig config);
 }
diff --git a/lib/src/dom/fenced_frame.dart b/lib/src/dom/fenced_frame.dart
index e1c0e82..3cceec7 100644
--- a/lib/src/dom/fenced_frame.dart
+++ b/lib/src/dom/fenced_frame.dart
@@ -32,7 +32,7 @@
 
 @JS('FencedFrameConfig')
 @staticInterop
-class FencedFrameConfig implements JSObject {}
+class FencedFrameConfig {}
 
 extension FencedFrameConfigExtension on FencedFrameConfig {
   external void setSharedStorageContext(String contextString);
@@ -45,7 +45,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FenceEvent implements JSObject {
+class FenceEvent {
   external factory FenceEvent({
     String eventType,
     String eventData,
@@ -70,7 +70,7 @@
 
 @JS('Fence')
 @staticInterop
-class Fence implements JSObject {}
+class Fence {}
 
 extension FenceExtension on Fence {
   external void reportEvent([ReportEventType event]);
diff --git a/lib/src/dom/fetch.dart b/lib/src/dom/fetch.dart
index 676b1f4..8d47757 100644
--- a/lib/src/dom/fetch.dart
+++ b/lib/src/dom/fetch.dart
@@ -26,7 +26,7 @@
 
 @JS('Headers')
 @staticInterop
-class Headers implements JSObject {
+class Headers {
   external factory Headers([HeadersInit init]);
 }
 
@@ -47,7 +47,7 @@
 
 @JS('Request')
 @staticInterop
-class Request implements JSObject {
+class Request {
   external factory Request(
     RequestInfo input, [
     RequestInit init,
@@ -84,7 +84,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RequestInit implements JSObject {
+class RequestInit {
   external factory RequestInit({
     AttributionReportingRequestOptions attributionReporting,
     String method,
@@ -151,7 +151,7 @@
 
 @JS('Response')
 @staticInterop
-class Response implements JSObject {
+class Response {
   external factory Response([
     BodyInit? body,
     ResponseInit init,
@@ -190,7 +190,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ResponseInit implements JSObject {
+class ResponseInit {
   external factory ResponseInit({
     int status,
     String statusText,
diff --git a/lib/src/dom/fido.dart b/lib/src/dom/fido.dart
index 88bccf5..9eb2308 100644
--- a/lib/src/dom/fido.dart
+++ b/lib/src/dom/fido.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class HMACGetSecretInput implements JSObject {
+class HMACGetSecretInput {
   external factory HMACGetSecretInput({
     required JSArrayBuffer salt1,
     JSArrayBuffer salt2,
@@ -24,7 +24,7 @@
 @JS()
 @staticInterop
 @anonymous
-class HMACGetSecretOutput implements JSObject {
+class HMACGetSecretOutput {
   external factory HMACGetSecretOutput({
     required JSArrayBuffer output1,
     JSArrayBuffer output2,
diff --git a/lib/src/dom/file_system_access.dart b/lib/src/dom/file_system_access.dart
index 5c98c9d..867ca5d 100644
--- a/lib/src/dom/file_system_access.dart
+++ b/lib/src/dom/file_system_access.dart
@@ -32,7 +32,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FileSystemHandlePermissionDescriptor implements JSObject {
+class FileSystemHandlePermissionDescriptor {
   external factory FileSystemHandlePermissionDescriptor(
       {FileSystemPermissionMode mode});
 }
@@ -46,7 +46,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FilePickerAcceptType implements JSObject {
+class FilePickerAcceptType {
   external factory FilePickerAcceptType({
     String description,
     JSAny accept,
@@ -63,7 +63,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FilePickerOptions implements JSObject {
+class FilePickerOptions {
   external factory FilePickerOptions({
     JSArray types,
     bool excludeAcceptAllOption,
@@ -110,7 +110,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DirectoryPickerOptions implements JSObject {
+class DirectoryPickerOptions {
   external factory DirectoryPickerOptions({
     String id,
     StartInDirectory startIn,
diff --git a/lib/src/dom/fileapi.dart b/lib/src/dom/fileapi.dart
index 036dff6..e9d1a8c 100644
--- a/lib/src/dom/fileapi.dart
+++ b/lib/src/dom/fileapi.dart
@@ -14,7 +14,7 @@
 
 @JS('Blob')
 @staticInterop
-class Blob implements JSObject {
+class Blob {
   external factory Blob([
     JSArray blobParts,
     BlobPropertyBag options,
@@ -37,7 +37,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BlobPropertyBag implements JSObject {
+class BlobPropertyBag {
   external factory BlobPropertyBag({
     String type,
     EndingType endings,
@@ -81,7 +81,7 @@
 
 @JS('FileList')
 @staticInterop
-class FileList implements JSObject {}
+class FileList {}
 
 extension FileListExtension on FileList {
   external File? item(int index);
@@ -126,7 +126,7 @@
 
 @JS('FileReaderSync')
 @staticInterop
-class FileReaderSync implements JSObject {
+class FileReaderSync {
   external factory FileReaderSync();
 }
 
diff --git a/lib/src/dom/font_metrics_api.dart b/lib/src/dom/font_metrics_api.dart
index 44a8dc9..fae1176 100644
--- a/lib/src/dom/font_metrics_api.dart
+++ b/lib/src/dom/font_metrics_api.dart
@@ -6,7 +6,7 @@
 
 @JS('FontMetrics')
 @staticInterop
-class FontMetrics implements JSObject {}
+class FontMetrics {}
 
 extension FontMetricsExtension on FontMetrics {
   external num get width;
@@ -27,7 +27,7 @@
 
 @JS('Baseline')
 @staticInterop
-class Baseline implements JSObject {}
+class Baseline {}
 
 extension BaselineExtension on Baseline {
   external String get name;
@@ -36,7 +36,7 @@
 
 @JS('Font')
 @staticInterop
-class Font implements JSObject {}
+class Font {}
 
 extension FontExtension on Font {
   external String get name;
diff --git a/lib/src/dom/fs.dart b/lib/src/dom/fs.dart
index b5e9a87..7c9ad14 100644
--- a/lib/src/dom/fs.dart
+++ b/lib/src/dom/fs.dart
@@ -14,7 +14,7 @@
 
 @JS('FileSystemHandle')
 @staticInterop
-class FileSystemHandle implements JSObject {}
+class FileSystemHandle {}
 
 extension FileSystemHandleExtension on FileSystemHandle {
   external JSPromise queryPermission(
@@ -29,7 +29,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FileSystemCreateWritableOptions implements JSObject {
+class FileSystemCreateWritableOptions {
   external factory FileSystemCreateWritableOptions({bool keepExistingData});
 }
 
@@ -52,7 +52,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FileSystemGetFileOptions implements JSObject {
+class FileSystemGetFileOptions {
   external factory FileSystemGetFileOptions({bool create});
 }
 
@@ -64,7 +64,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FileSystemGetDirectoryOptions implements JSObject {
+class FileSystemGetDirectoryOptions {
   external factory FileSystemGetDirectoryOptions({bool create});
 }
 
@@ -77,7 +77,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FileSystemRemoveOptions implements JSObject {
+class FileSystemRemoveOptions {
   external factory FileSystemRemoveOptions({bool recursive});
 }
 
@@ -109,7 +109,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WriteParams implements JSObject {
+class WriteParams {
   external factory WriteParams({
     required WriteCommandType type,
     int? size,
@@ -143,7 +143,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FileSystemReadWriteOptions implements JSObject {
+class FileSystemReadWriteOptions {
   external factory FileSystemReadWriteOptions({int at});
 }
 
@@ -154,7 +154,7 @@
 
 @JS('FileSystemSyncAccessHandle')
 @staticInterop
-class FileSystemSyncAccessHandle implements JSObject {}
+class FileSystemSyncAccessHandle {}
 
 extension FileSystemSyncAccessHandleExtension on FileSystemSyncAccessHandle {
   external int read(
diff --git a/lib/src/dom/fullscreen.dart b/lib/src/dom/fullscreen.dart
index cb060e7..b15fbf6 100644
--- a/lib/src/dom/fullscreen.dart
+++ b/lib/src/dom/fullscreen.dart
@@ -11,7 +11,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FullscreenOptions implements JSObject {
+class FullscreenOptions {
   external factory FullscreenOptions({
     FullscreenNavigationUI navigationUI,
     ScreenDetailed screen,
diff --git a/lib/src/dom/gamepad.dart b/lib/src/dom/gamepad.dart
index cbd8ec9..1692158 100644
--- a/lib/src/dom/gamepad.dart
+++ b/lib/src/dom/gamepad.dart
@@ -12,7 +12,7 @@
 
 @JS('Gamepad')
 @staticInterop
-class Gamepad implements JSObject {}
+class Gamepad {}
 
 extension GamepadExtension on Gamepad {
   external GamepadHand get hand;
@@ -31,7 +31,7 @@
 
 @JS('GamepadButton')
 @staticInterop
-class GamepadButton implements JSObject {}
+class GamepadButton {}
 
 extension GamepadButtonExtension on GamepadButton {
   external bool get pressed;
diff --git a/lib/src/dom/gamepad_extensions.dart b/lib/src/dom/gamepad_extensions.dart
index cf4632c..5026f35 100644
--- a/lib/src/dom/gamepad_extensions.dart
+++ b/lib/src/dom/gamepad_extensions.dart
@@ -11,7 +11,7 @@
 
 @JS('GamepadHapticActuator')
 @staticInterop
-class GamepadHapticActuator implements JSObject {}
+class GamepadHapticActuator {}
 
 extension GamepadHapticActuatorExtension on GamepadHapticActuator {
   external bool canPlayEffectType(GamepadHapticEffectType type);
@@ -30,7 +30,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GamepadEffectParameters implements JSObject {
+class GamepadEffectParameters {
   external factory GamepadEffectParameters({
     num duration,
     num startDelay,
@@ -52,7 +52,7 @@
 
 @JS('GamepadPose')
 @staticInterop
-class GamepadPose implements JSObject {}
+class GamepadPose {}
 
 extension GamepadPoseExtension on GamepadPose {
   external bool get hasOrientation;
@@ -67,7 +67,7 @@
 
 @JS('GamepadTouch')
 @staticInterop
-class GamepadTouch implements JSObject {}
+class GamepadTouch {}
 
 extension GamepadTouchExtension on GamepadTouch {
   external int get touchId;
diff --git a/lib/src/dom/generic_sensor.dart b/lib/src/dom/generic_sensor.dart
index 6fea9ec..4c709a5 100644
--- a/lib/src/dom/generic_sensor.dart
+++ b/lib/src/dom/generic_sensor.dart
@@ -32,7 +32,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SensorOptions implements JSObject {
+class SensorOptions {
   external factory SensorOptions({num frequency});
 }
 
@@ -69,7 +69,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MockSensorConfiguration implements JSObject {
+class MockSensorConfiguration {
   external factory MockSensorConfiguration({
     required MockSensorType mockSensorType,
     bool connected,
@@ -92,7 +92,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MockSensor implements JSObject {
+class MockSensor {
   external factory MockSensor({
     num maxSamplingFrequency,
     num minSamplingFrequency,
@@ -112,6 +112,6 @@
 @JS()
 @staticInterop
 @anonymous
-class MockSensorReadingValues implements JSObject {
+class MockSensorReadingValues {
   external factory MockSensorReadingValues();
 }
diff --git a/lib/src/dom/geolocation.dart b/lib/src/dom/geolocation.dart
index 8400243..cc642db 100644
--- a/lib/src/dom/geolocation.dart
+++ b/lib/src/dom/geolocation.dart
@@ -11,7 +11,7 @@
 
 @JS('Geolocation')
 @staticInterop
-class Geolocation implements JSObject {}
+class Geolocation {}
 
 extension GeolocationExtension on Geolocation {
   external void getCurrentPosition(
@@ -30,7 +30,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PositionOptions implements JSObject {
+class PositionOptions {
   external factory PositionOptions({
     bool enableHighAccuracy,
     int timeout,
@@ -49,7 +49,7 @@
 
 @JS('GeolocationPosition')
 @staticInterop
-class GeolocationPosition implements JSObject {}
+class GeolocationPosition {}
 
 extension GeolocationPositionExtension on GeolocationPosition {
   external GeolocationCoordinates get coords;
@@ -58,7 +58,7 @@
 
 @JS('GeolocationCoordinates')
 @staticInterop
-class GeolocationCoordinates implements JSObject {}
+class GeolocationCoordinates {}
 
 extension GeolocationCoordinatesExtension on GeolocationCoordinates {
   external num get accuracy;
@@ -72,7 +72,7 @@
 
 @JS('GeolocationPositionError')
 @staticInterop
-class GeolocationPositionError implements JSObject {
+class GeolocationPositionError {
   external static int get PERMISSION_DENIED;
   external static int get POSITION_UNAVAILABLE;
   external static int get TIMEOUT;
diff --git a/lib/src/dom/geolocation_sensor.dart b/lib/src/dom/geolocation_sensor.dart
index 0b851a0..2aca6f2 100644
--- a/lib/src/dom/geolocation_sensor.dart
+++ b/lib/src/dom/geolocation_sensor.dart
@@ -48,7 +48,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GeolocationSensorReading implements JSObject {
+class GeolocationSensorReading {
   external factory GeolocationSensorReading({
     DOMHighResTimeStamp? timestamp,
     num? latitude,
@@ -83,7 +83,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GeolocationReadingValues implements JSObject {
+class GeolocationReadingValues {
   external factory GeolocationReadingValues({
     required num? latitude,
     required num? longitude,
diff --git a/lib/src/dom/geometry.dart b/lib/src/dom/geometry.dart
index f1df51f..a28c647 100644
--- a/lib/src/dom/geometry.dart
+++ b/lib/src/dom/geometry.dart
@@ -6,7 +6,7 @@
 
 @JS('DOMPointReadOnly')
 @staticInterop
-class DOMPointReadOnly implements JSObject {
+class DOMPointReadOnly {
   external factory DOMPointReadOnly([
     num x,
     num y,
@@ -53,7 +53,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DOMPointInit implements JSObject {
+class DOMPointInit {
   external factory DOMPointInit({
     num x,
     num y,
@@ -75,7 +75,7 @@
 
 @JS('DOMRectReadOnly')
 @staticInterop
-class DOMRectReadOnly implements JSObject {
+class DOMRectReadOnly {
   external factory DOMRectReadOnly([
     num x,
     num y,
@@ -125,7 +125,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DOMRectInit implements JSObject {
+class DOMRectInit {
   external factory DOMRectInit({
     num x,
     num y,
@@ -147,7 +147,7 @@
 
 @JS('DOMRectList')
 @staticInterop
-class DOMRectList implements JSObject {}
+class DOMRectList {}
 
 extension DOMRectListExtension on DOMRectList {
   external DOMRect? item(int index);
@@ -156,7 +156,7 @@
 
 @JS('DOMQuad')
 @staticInterop
-class DOMQuad implements JSObject {
+class DOMQuad {
   external factory DOMQuad([
     DOMPointInit p1,
     DOMPointInit p2,
@@ -180,7 +180,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DOMQuadInit implements JSObject {
+class DOMQuadInit {
   external factory DOMQuadInit({
     DOMPointInit p1,
     DOMPointInit p2,
@@ -202,7 +202,7 @@
 
 @JS('DOMMatrixReadOnly')
 @staticInterop
-class DOMMatrixReadOnly implements JSObject {
+class DOMMatrixReadOnly {
   external factory DOMMatrixReadOnly([JSAny init]);
 
   external static DOMMatrixReadOnly fromMatrix([DOMMatrixInit other]);
@@ -385,7 +385,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DOMMatrix2DInit implements JSObject {
+class DOMMatrix2DInit {
   external factory DOMMatrix2DInit({
     num a,
     num b,
diff --git a/lib/src/dom/get_installed_related_apps.dart b/lib/src/dom/get_installed_related_apps.dart
index 6405622..5184e65 100644
--- a/lib/src/dom/get_installed_related_apps.dart
+++ b/lib/src/dom/get_installed_related_apps.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RelatedApplication implements JSObject {
+class RelatedApplication {
   external factory RelatedApplication({
     required String platform,
     String url,
diff --git a/lib/src/dom/gyroscope.dart b/lib/src/dom/gyroscope.dart
index 79c390a..b853223 100644
--- a/lib/src/dom/gyroscope.dart
+++ b/lib/src/dom/gyroscope.dart
@@ -36,7 +36,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GyroscopeReadingValues implements JSObject {
+class GyroscopeReadingValues {
   external factory GyroscopeReadingValues({
     required num? x,
     required num? y,
diff --git a/lib/src/dom/html.dart b/lib/src/dom/html.dart
index 63a76bb..04028ef 100644
--- a/lib/src/dom/html.dart
+++ b/lib/src/dom/html.dart
@@ -131,7 +131,7 @@
 
 @JS('HTMLAllCollection')
 @staticInterop
-class HTMLAllCollection implements JSObject {}
+class HTMLAllCollection {}
 
 extension HTMLAllCollectionExtension on HTMLAllCollection {
   external JSObject? namedItem(String name);
@@ -174,7 +174,7 @@
 
 @JS('DOMStringList')
 @staticInterop
-class DOMStringList implements JSObject {}
+class DOMStringList {}
 
 extension DOMStringListExtension on DOMStringList {
   external String? item(int index);
@@ -458,7 +458,7 @@
 
 @JS('DOMStringMap')
 @staticInterop
-class DOMStringMap implements JSObject {}
+class DOMStringMap {}
 
 @JS('HTMLHtmlElement')
 @staticInterop
@@ -1254,7 +1254,7 @@
 
 @JS('MediaError')
 @staticInterop
-class MediaError implements JSObject {
+class MediaError {
   external static int get MEDIA_ERR_ABORTED;
   external static int get MEDIA_ERR_NETWORK;
   external static int get MEDIA_ERR_DECODE;
@@ -1283,7 +1283,7 @@
 
 @JS('AudioTrack')
 @staticInterop
-class AudioTrack implements JSObject {}
+class AudioTrack {}
 
 extension AudioTrackExtension on AudioTrack {
   external String get id;
@@ -1313,7 +1313,7 @@
 
 @JS('VideoTrack')
 @staticInterop
-class VideoTrack implements JSObject {}
+class VideoTrack {}
 
 extension VideoTrackExtension on VideoTrack {
   external String get id;
@@ -1363,7 +1363,7 @@
 
 @JS('TextTrackCueList')
 @staticInterop
-class TextTrackCueList implements JSObject {}
+class TextTrackCueList {}
 
 extension TextTrackCueListExtension on TextTrackCueList {
   external TextTrackCue? getCueById(String id);
@@ -1392,7 +1392,7 @@
 
 @JS('TimeRanges')
 @staticInterop
-class TimeRanges implements JSObject {}
+class TimeRanges {}
 
 extension TimeRangesExtension on TimeRanges {
   external num start(int index);
@@ -2107,7 +2107,7 @@
 
 @JS('ValidityState')
 @staticInterop
-class ValidityState implements JSObject {}
+class ValidityState {}
 
 extension ValidityStateExtension on ValidityState {
   external bool get valueMissing;
@@ -2269,7 +2269,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AssignedNodesOptions implements JSObject {
+class AssignedNodesOptions {
   external factory AssignedNodesOptions({bool flatten});
 }
 
@@ -2309,7 +2309,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CanvasRenderingContext2DSettings implements JSObject {
+class CanvasRenderingContext2DSettings {
   external factory CanvasRenderingContext2DSettings({
     bool alpha,
     bool desynchronized,
@@ -2332,7 +2332,7 @@
 
 @JS('CanvasRenderingContext2D')
 @staticInterop
-class CanvasRenderingContext2D implements JSObject {}
+class CanvasRenderingContext2D {}
 
 extension CanvasRenderingContext2DExtension on CanvasRenderingContext2D {
   external CanvasRenderingContext2DSettings getContextAttributes();
@@ -2599,7 +2599,7 @@
 
 @JS('CanvasGradient')
 @staticInterop
-class CanvasGradient implements JSObject {}
+class CanvasGradient {}
 
 extension CanvasGradientExtension on CanvasGradient {
   external void addColorStop(
@@ -2610,7 +2610,7 @@
 
 @JS('CanvasPattern')
 @staticInterop
-class CanvasPattern implements JSObject {}
+class CanvasPattern {}
 
 extension CanvasPatternExtension on CanvasPattern {
   external void setTransform([DOMMatrix2DInit transform]);
@@ -2618,7 +2618,7 @@
 
 @JS('TextMetrics')
 @staticInterop
-class TextMetrics implements JSObject {}
+class TextMetrics {}
 
 extension TextMetricsExtension on TextMetrics {
   external num get width;
@@ -2638,7 +2638,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ImageDataSettings implements JSObject {
+class ImageDataSettings {
   external factory ImageDataSettings({PredefinedColorSpace colorSpace});
 }
 
@@ -2649,7 +2649,7 @@
 
 @JS('ImageData')
 @staticInterop
-class ImageData implements JSObject {
+class ImageData {
   external factory ImageData(
     JSAny dataOrSw,
     int shOrSw, [
@@ -2667,7 +2667,7 @@
 
 @JS('Path2D')
 @staticInterop
-class Path2D implements JSObject {
+class Path2D {
   external factory Path2D([JSAny path]);
 }
 
@@ -2741,7 +2741,7 @@
 
 @JS('ImageBitmapRenderingContext')
 @staticInterop
-class ImageBitmapRenderingContext implements JSObject {}
+class ImageBitmapRenderingContext {}
 
 extension ImageBitmapRenderingContextExtension on ImageBitmapRenderingContext {
   external void transferFromImageBitmap(ImageBitmap? bitmap);
@@ -2751,7 +2751,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ImageBitmapRenderingContextSettings implements JSObject {
+class ImageBitmapRenderingContextSettings {
   external factory ImageBitmapRenderingContextSettings({bool alpha});
 }
 
@@ -2764,7 +2764,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ImageEncodeOptions implements JSObject {
+class ImageEncodeOptions {
   external factory ImageEncodeOptions({
     String type,
     num quality,
@@ -2806,7 +2806,7 @@
 
 @JS('OffscreenCanvasRenderingContext2D')
 @staticInterop
-class OffscreenCanvasRenderingContext2D implements JSObject {}
+class OffscreenCanvasRenderingContext2D {}
 
 extension OffscreenCanvasRenderingContext2DExtension
     on OffscreenCanvasRenderingContext2D {
@@ -3069,7 +3069,7 @@
 
 @JS('CustomElementRegistry')
 @staticInterop
-class CustomElementRegistry implements JSObject {}
+class CustomElementRegistry {}
 
 extension CustomElementRegistryExtension on CustomElementRegistry {
   external void define(
@@ -3086,7 +3086,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ElementDefinitionOptions implements JSObject {
+class ElementDefinitionOptions {
   external factory ElementDefinitionOptions({String extends_});
 }
 
@@ -3099,7 +3099,7 @@
 
 @JS('ElementInternals')
 @staticInterop
-class ElementInternals implements JSObject {}
+class ElementInternals {}
 
 extension ElementInternalsExtension on ElementInternals {
   external void setFormValue(
@@ -3223,7 +3223,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ValidityStateFlags implements JSObject {
+class ValidityStateFlags {
   external factory ValidityStateFlags({
     bool valueMissing,
     bool typeMismatch,
@@ -3274,7 +3274,7 @@
 
 @JS('UserActivation')
 @staticInterop
-class UserActivation implements JSObject {}
+class UserActivation {}
 
 extension UserActivationExtension on UserActivation {
   external bool get hasBeenActive;
@@ -3315,7 +3315,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FocusOptions implements JSObject {
+class FocusOptions {
   external factory FocusOptions({
     bool preventScroll,
     bool focusVisible,
@@ -3331,7 +3331,7 @@
 
 @JS('DataTransfer')
 @staticInterop
-class DataTransfer implements JSObject {
+class DataTransfer {
   external factory DataTransfer();
 }
 
@@ -3358,7 +3358,7 @@
 
 @JS('DataTransferItemList')
 @staticInterop
-class DataTransferItemList implements JSObject {}
+class DataTransferItemList {}
 
 extension DataTransferItemListExtension on DataTransferItemList {
   external DataTransferItem? add(
@@ -3372,7 +3372,7 @@
 
 @JS('DataTransferItem')
 @staticInterop
-class DataTransferItem implements JSObject {}
+class DataTransferItem {}
 
 extension DataTransferItemExtension on DataTransferItem {
   external FileSystemEntry? webkitGetAsEntry();
@@ -3851,7 +3851,7 @@
 
 @JS('BarProp')
 @staticInterop
-class BarProp implements JSObject {}
+class BarProp {}
 
 extension BarPropExtension on BarProp {
   external bool get visible;
@@ -3859,7 +3859,7 @@
 
 @JS('Location')
 @staticInterop
-class Location implements JSObject {}
+class Location {}
 
 extension LocationExtension on Location {
   external void assign(String url);
@@ -3887,7 +3887,7 @@
 
 @JS('History')
 @staticInterop
-class History implements JSObject {}
+class History {}
 
 extension HistoryExtension on History {
   external void go([int delta]);
@@ -3944,7 +3944,7 @@
 @JS()
 @staticInterop
 @anonymous
-class NavigationUpdateCurrentEntryOptions implements JSObject {
+class NavigationUpdateCurrentEntryOptions {
   external factory NavigationUpdateCurrentEntryOptions({required JSAny? state});
 }
 
@@ -3957,7 +3957,7 @@
 @JS()
 @staticInterop
 @anonymous
-class NavigationOptions implements JSObject {
+class NavigationOptions {
   external factory NavigationOptions({JSAny? info});
 }
 
@@ -3998,7 +3998,7 @@
 @JS()
 @staticInterop
 @anonymous
-class NavigationResult implements JSObject {
+class NavigationResult {
   external factory NavigationResult({
     JSPromise committed,
     JSPromise finished,
@@ -4029,7 +4029,7 @@
 
 @JS('NavigationTransition')
 @staticInterop
-class NavigationTransition implements JSObject {}
+class NavigationTransition {}
 
 extension NavigationTransitionExtension on NavigationTransition {
   external NavigationType get navigationType;
@@ -4105,7 +4105,7 @@
 @JS()
 @staticInterop
 @anonymous
-class NavigationInterceptOptions implements JSObject {
+class NavigationInterceptOptions {
   external factory NavigationInterceptOptions({
     NavigationInterceptHandler handler,
     NavigationFocusReset focusReset,
@@ -4124,7 +4124,7 @@
 
 @JS('NavigationDestination')
 @staticInterop
-class NavigationDestination implements JSObject {}
+class NavigationDestination {}
 
 extension NavigationDestinationExtension on NavigationDestination {
   external JSAny? getState();
@@ -4340,7 +4340,7 @@
 
 @JS('DOMParser')
 @staticInterop
-class DOMParser implements JSObject {
+class DOMParser {
   external factory DOMParser();
 }
 
@@ -4353,7 +4353,7 @@
 
 @JS('Navigator')
 @staticInterop
-class Navigator implements JSObject {}
+class Navigator {}
 
 extension NavigatorExtension on Navigator {
   external AutoplayPolicy getAutoplayPolicy(JSAny contextOrElementOrType);
@@ -4453,7 +4453,7 @@
 
 @JS('PluginArray')
 @staticInterop
-class PluginArray implements JSObject {}
+class PluginArray {}
 
 extension PluginArrayExtension on PluginArray {
   external void refresh();
@@ -4464,7 +4464,7 @@
 
 @JS('MimeTypeArray')
 @staticInterop
-class MimeTypeArray implements JSObject {}
+class MimeTypeArray {}
 
 extension MimeTypeArrayExtension on MimeTypeArray {
   external MimeType? item(int index);
@@ -4474,7 +4474,7 @@
 
 @JS('Plugin')
 @staticInterop
-class Plugin implements JSObject {}
+class Plugin {}
 
 extension PluginExtension on Plugin {
   external MimeType? item(int index);
@@ -4487,7 +4487,7 @@
 
 @JS('MimeType')
 @staticInterop
-class MimeType implements JSObject {}
+class MimeType {}
 
 extension MimeTypeExtension on MimeType {
   external String get type;
@@ -4498,7 +4498,7 @@
 
 @JS('ImageBitmap')
 @staticInterop
-class ImageBitmap implements JSObject {}
+class ImageBitmap {}
 
 extension ImageBitmapExtension on ImageBitmap {
   external void close();
@@ -4509,7 +4509,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ImageBitmapOptions implements JSObject {
+class ImageBitmapOptions {
   external factory ImageBitmapOptions({
     ImageOrientation imageOrientation,
     PremultiplyAlpha premultiplyAlpha,
@@ -4617,7 +4617,7 @@
 @JS()
 @staticInterop
 @anonymous
-class EventSourceInit implements JSObject {
+class EventSourceInit {
   external factory EventSourceInit({bool withCredentials});
 }
 
@@ -4628,7 +4628,7 @@
 
 @JS('MessageChannel')
 @staticInterop
-class MessageChannel implements JSObject {
+class MessageChannel {
   external factory MessageChannel();
 }
 
@@ -4657,7 +4657,7 @@
 @JS()
 @staticInterop
 @anonymous
-class StructuredSerializeOptions implements JSObject {
+class StructuredSerializeOptions {
   external factory StructuredSerializeOptions({JSArray transfer});
 }
 
@@ -4805,7 +4805,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WorkerOptions implements JSObject {
+class WorkerOptions {
   external factory WorkerOptions({
     WorkerType type,
     RequestCredentials credentials,
@@ -4839,7 +4839,7 @@
 
 @JS('WorkerNavigator')
 @staticInterop
-class WorkerNavigator implements JSObject {}
+class WorkerNavigator {}
 
 extension WorkerNavigatorExtension on WorkerNavigator {
   external JSPromise setAppBadge([int contents]);
@@ -4877,7 +4877,7 @@
 
 @JS('WorkerLocation')
 @staticInterop
-class WorkerLocation implements JSObject {}
+class WorkerLocation {}
 
 extension WorkerLocationExtension on WorkerLocation {
   external String get href;
@@ -4893,11 +4893,11 @@
 
 @JS('WorkletGlobalScope')
 @staticInterop
-class WorkletGlobalScope implements JSObject {}
+class WorkletGlobalScope {}
 
 @JS('Worklet')
 @staticInterop
-class Worklet implements JSObject {}
+class Worklet {}
 
 extension WorkletExtension on Worklet {
   external JSPromise addModule(
@@ -4909,7 +4909,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WorkletOptions implements JSObject {
+class WorkletOptions {
   external factory WorkletOptions({RequestCredentials credentials});
 }
 
@@ -4920,7 +4920,7 @@
 
 @JS('Storage')
 @staticInterop
-class Storage implements JSObject {}
+class Storage {}
 
 extension StorageExtension on Storage {
   external String? key(int index);
@@ -5143,7 +5143,7 @@
 
 @JS('External')
 @staticInterop
-class External implements JSObject {}
+class External {}
 
 extension ExternalExtension on External {
   external void AddSearchProvider();
diff --git a/lib/src/dom/idle_detection.dart b/lib/src/dom/idle_detection.dart
index 1fa3189..689f2ba 100644
--- a/lib/src/dom/idle_detection.dart
+++ b/lib/src/dom/idle_detection.dart
@@ -13,7 +13,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IdleOptions implements JSObject {
+class IdleOptions {
   external factory IdleOptions({
     int threshold,
     AbortSignal signal,
diff --git a/lib/src/dom/image_capture.dart b/lib/src/dom/image_capture.dart
index 166ecf0..8458ee9 100644
--- a/lib/src/dom/image_capture.dart
+++ b/lib/src/dom/image_capture.dart
@@ -13,7 +13,7 @@
 
 @JS('ImageCapture')
 @staticInterop
-class ImageCapture implements JSObject {
+class ImageCapture {
   external factory ImageCapture(MediaStreamTrack videoTrack);
 }
 
@@ -28,7 +28,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PhotoCapabilities implements JSObject {
+class PhotoCapabilities {
   external factory PhotoCapabilities({
     RedEyeReduction redEyeReduction,
     MediaSettingsRange imageHeight,
@@ -51,7 +51,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PhotoSettings implements JSObject {
+class PhotoSettings {
   external factory PhotoSettings({
     FillLightMode fillLightMode,
     num imageHeight,
@@ -74,7 +74,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaSettingsRange implements JSObject {
+class MediaSettingsRange {
   external factory MediaSettingsRange({
     num max,
     num min,
@@ -94,7 +94,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ConstrainPoint2DParameters implements JSObject {
+class ConstrainPoint2DParameters {
   external factory ConstrainPoint2DParameters({
     JSArray exact,
     JSArray ideal,
@@ -111,7 +111,7 @@
 @JS()
 @staticInterop
 @anonymous
-class Point2D implements JSObject {
+class Point2D {
   external factory Point2D({
     num x,
     num y,
diff --git a/lib/src/dom/image_resource.dart b/lib/src/dom/image_resource.dart
index 9557dcd..549a6c9 100644
--- a/lib/src/dom/image_resource.dart
+++ b/lib/src/dom/image_resource.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ImageResource implements JSObject {
+class ImageResource {
   external factory ImageResource({
     required String src,
     String sizes,
diff --git a/lib/src/dom/indexeddb.dart b/lib/src/dom/indexeddb.dart
index dc44a7f..a88f682 100644
--- a/lib/src/dom/indexeddb.dart
+++ b/lib/src/dom/indexeddb.dart
@@ -73,7 +73,7 @@
 
 @JS('IDBFactory')
 @staticInterop
-class IDBFactory implements JSObject {}
+class IDBFactory {}
 
 extension IDBFactoryExtension on IDBFactory {
   external IDBOpenDBRequest open(
@@ -91,7 +91,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IDBDatabaseInfo implements JSObject {
+class IDBDatabaseInfo {
   external factory IDBDatabaseInfo({
     String name,
     int version,
@@ -137,7 +137,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IDBTransactionOptions implements JSObject {
+class IDBTransactionOptions {
   external factory IDBTransactionOptions({IDBTransactionDurability durability});
 }
 
@@ -149,7 +149,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IDBObjectStoreParameters implements JSObject {
+class IDBObjectStoreParameters {
   external factory IDBObjectStoreParameters({
     JSAny? keyPath,
     bool autoIncrement,
@@ -165,7 +165,7 @@
 
 @JS('IDBObjectStore')
 @staticInterop
-class IDBObjectStore implements JSObject {}
+class IDBObjectStore {}
 
 extension IDBObjectStoreExtension on IDBObjectStore {
   external IDBRequest put(
@@ -215,7 +215,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IDBIndexParameters implements JSObject {
+class IDBIndexParameters {
   external factory IDBIndexParameters({
     bool unique,
     bool multiEntry,
@@ -231,7 +231,7 @@
 
 @JS('IDBIndex')
 @staticInterop
-class IDBIndex implements JSObject {}
+class IDBIndex {}
 
 extension IDBIndexExtension on IDBIndex {
   external IDBRequest get(JSAny? query);
@@ -263,7 +263,7 @@
 
 @JS('IDBKeyRange')
 @staticInterop
-class IDBKeyRange implements JSObject {
+class IDBKeyRange {
   external static IDBKeyRange only(JSAny? value);
   external static IDBKeyRange lowerBound(
     JSAny? lower, [
@@ -291,7 +291,7 @@
 
 @JS('IDBCursor')
 @staticInterop
-class IDBCursor implements JSObject {}
+class IDBCursor {}
 
 extension IDBCursorExtension on IDBCursor {
   external void advance(int count);
diff --git a/lib/src/dom/ink_enhancement.dart b/lib/src/dom/ink_enhancement.dart
index d009de8..5a23620 100644
--- a/lib/src/dom/ink_enhancement.dart
+++ b/lib/src/dom/ink_enhancement.dart
@@ -9,7 +9,7 @@
 
 @JS('Ink')
 @staticInterop
-class Ink implements JSObject {}
+class Ink {}
 
 extension InkExtension on Ink {
   external JSPromise requestPresenter([InkPresenterParam param]);
@@ -18,7 +18,7 @@
 @JS()
 @staticInterop
 @anonymous
-class InkPresenterParam implements JSObject {
+class InkPresenterParam {
   external factory InkPresenterParam({Element? presentationArea});
 }
 
@@ -29,7 +29,7 @@
 
 @JS('InkPresenter')
 @staticInterop
-class InkPresenter implements JSObject {}
+class InkPresenter {}
 
 extension InkPresenterExtension on InkPresenter {
   external void updateInkTrailStartPoint(
@@ -43,7 +43,7 @@
 @JS()
 @staticInterop
 @anonymous
-class InkTrailStyle implements JSObject {
+class InkTrailStyle {
   external factory InkTrailStyle({
     required String color,
     required num diameter,
diff --git a/lib/src/dom/input_device_capabilities.dart b/lib/src/dom/input_device_capabilities.dart
index eb41a19..82840b7 100644
--- a/lib/src/dom/input_device_capabilities.dart
+++ b/lib/src/dom/input_device_capabilities.dart
@@ -6,7 +6,7 @@
 
 @JS('InputDeviceCapabilities')
 @staticInterop
-class InputDeviceCapabilities implements JSObject {
+class InputDeviceCapabilities {
   external factory InputDeviceCapabilities(
       [InputDeviceCapabilitiesInit deviceInitDict]);
 }
@@ -19,7 +19,7 @@
 @JS()
 @staticInterop
 @anonymous
-class InputDeviceCapabilitiesInit implements JSObject {
+class InputDeviceCapabilitiesInit {
   external factory InputDeviceCapabilitiesInit({
     bool firesTouchEvents,
     bool pointerMovementScrolls,
diff --git a/lib/src/dom/intersection_observer.dart b/lib/src/dom/intersection_observer.dart
index e16d649..bc17dba 100644
--- a/lib/src/dom/intersection_observer.dart
+++ b/lib/src/dom/intersection_observer.dart
@@ -12,7 +12,7 @@
 
 @JS('IntersectionObserver')
 @staticInterop
-class IntersectionObserver implements JSObject {
+class IntersectionObserver {
   external factory IntersectionObserver(
     IntersectionObserverCallback callback, [
     IntersectionObserverInit options,
@@ -32,7 +32,7 @@
 
 @JS('IntersectionObserverEntry')
 @staticInterop
-class IntersectionObserverEntry implements JSObject {
+class IntersectionObserverEntry {
   external factory IntersectionObserverEntry(
       IntersectionObserverEntryInit intersectionObserverEntryInit);
 }
@@ -50,7 +50,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IntersectionObserverEntryInit implements JSObject {
+class IntersectionObserverEntryInit {
   external factory IntersectionObserverEntryInit({
     required DOMHighResTimeStamp time,
     required DOMRectInit? rootBounds,
@@ -83,7 +83,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IntersectionObserverInit implements JSObject {
+class IntersectionObserverInit {
   external factory IntersectionObserverInit({
     JSObject? root,
     String rootMargin,
diff --git a/lib/src/dom/is_input_pending.dart b/lib/src/dom/is_input_pending.dart
index ace6d8d..ae7bb1c 100644
--- a/lib/src/dom/is_input_pending.dart
+++ b/lib/src/dom/is_input_pending.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IsInputPendingOptions implements JSObject {
+class IsInputPendingOptions {
   external factory IsInputPendingOptions({bool includeContinuous});
 }
 
@@ -18,7 +18,7 @@
 
 @JS('Scheduling')
 @staticInterop
-class Scheduling implements JSObject {}
+class Scheduling {}
 
 extension SchedulingExtension on Scheduling {
   external bool isInputPending([IsInputPendingOptions isInputPendingOptions]);
diff --git a/lib/src/dom/js_self_profiling.dart b/lib/src/dom/js_self_profiling.dart
index ad07c2c..fcdac66 100644
--- a/lib/src/dom/js_self_profiling.dart
+++ b/lib/src/dom/js_self_profiling.dart
@@ -24,7 +24,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ProfilerTrace implements JSObject {
+class ProfilerTrace {
   external factory ProfilerTrace({
     required JSArray resources,
     required JSArray frames,
@@ -47,7 +47,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ProfilerSample implements JSObject {
+class ProfilerSample {
   external factory ProfilerSample({
     required DOMHighResTimeStamp timestamp,
     int stackId,
@@ -64,7 +64,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ProfilerStack implements JSObject {
+class ProfilerStack {
   external factory ProfilerStack({
     int parentId,
     required int frameId,
@@ -81,7 +81,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ProfilerFrame implements JSObject {
+class ProfilerFrame {
   external factory ProfilerFrame({
     required String name,
     int resourceId,
@@ -104,7 +104,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ProfilerInitOptions implements JSObject {
+class ProfilerInitOptions {
   external factory ProfilerInitOptions({
     required DOMHighResTimeStamp sampleInterval,
     required int maxBufferSize,
diff --git a/lib/src/dom/keyboard_map.dart b/lib/src/dom/keyboard_map.dart
index aa82290..a30773b 100644
--- a/lib/src/dom/keyboard_map.dart
+++ b/lib/src/dom/keyboard_map.dart
@@ -6,6 +6,6 @@
 
 @JS('KeyboardLayoutMap')
 @staticInterop
-class KeyboardLayoutMap implements JSObject {}
+class KeyboardLayoutMap {}
 
 extension KeyboardLayoutMapExtension on KeyboardLayoutMap {}
diff --git a/lib/src/dom/khr_parallel_shader_compile.dart b/lib/src/dom/khr_parallel_shader_compile.dart
index 5d05a17..53420c8 100644
--- a/lib/src/dom/khr_parallel_shader_compile.dart
+++ b/lib/src/dom/khr_parallel_shader_compile.dart
@@ -8,6 +8,6 @@
 
 @JS('KHR_parallel_shader_compile')
 @staticInterop
-class KHR_parallel_shader_compile implements JSObject {
+class KHR_parallel_shader_compile {
   external static GLenum get COMPLETION_STATUS_KHR;
 }
diff --git a/lib/src/dom/layout_instability.dart b/lib/src/dom/layout_instability.dart
index 5098454..d817358 100644
--- a/lib/src/dom/layout_instability.dart
+++ b/lib/src/dom/layout_instability.dart
@@ -23,7 +23,7 @@
 
 @JS('LayoutShiftAttribution')
 @staticInterop
-class LayoutShiftAttribution implements JSObject {}
+class LayoutShiftAttribution {}
 
 extension LayoutShiftAttributionExtension on LayoutShiftAttribution {
   external Node? get node;
diff --git a/lib/src/dom/local_font_access.dart b/lib/src/dom/local_font_access.dart
index d67136a..7112df2 100644
--- a/lib/src/dom/local_font_access.dart
+++ b/lib/src/dom/local_font_access.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class QueryOptions implements JSObject {
+class QueryOptions {
   external factory QueryOptions({JSArray postscriptNames});
 }
 
@@ -18,7 +18,7 @@
 
 @JS('FontData')
 @staticInterop
-class FontData implements JSObject {}
+class FontData {}
 
 extension FontDataExtension on FontData {
   external JSPromise blob();
diff --git a/lib/src/dom/magnetometer.dart b/lib/src/dom/magnetometer.dart
index 33940f6..1d0beb9 100644
--- a/lib/src/dom/magnetometer.dart
+++ b/lib/src/dom/magnetometer.dart
@@ -52,7 +52,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MagnetometerReadingValues implements JSObject {
+class MagnetometerReadingValues {
   external factory MagnetometerReadingValues({
     required num? x,
     required num? y,
@@ -72,7 +72,7 @@
 @JS()
 @staticInterop
 @anonymous
-class UncalibratedMagnetometerReadingValues implements JSObject {
+class UncalibratedMagnetometerReadingValues {
   external factory UncalibratedMagnetometerReadingValues({
     required num? x,
     required num? y,
diff --git a/lib/src/dom/manifest_incubations.dart b/lib/src/dom/manifest_incubations.dart
index 1c1c4d0..9a025e7 100644
--- a/lib/src/dom/manifest_incubations.dart
+++ b/lib/src/dom/manifest_incubations.dart
@@ -24,7 +24,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PromptResponseObject implements JSObject {
+class PromptResponseObject {
   external factory PromptResponseObject({AppBannerPromptOutcome userChoice});
 }
 
diff --git a/lib/src/dom/media_capabilities.dart b/lib/src/dom/media_capabilities.dart
index 89dc9b6..88b9d97 100644
--- a/lib/src/dom/media_capabilities.dart
+++ b/lib/src/dom/media_capabilities.dart
@@ -15,7 +15,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaConfiguration implements JSObject {
+class MediaConfiguration {
   external factory MediaConfiguration({
     VideoConfiguration video,
     AudioConfiguration audio,
@@ -63,7 +63,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoConfiguration implements JSObject {
+class VideoConfiguration {
   external factory VideoConfiguration({
     required String contentType,
     required int width,
@@ -107,7 +107,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioConfiguration implements JSObject {
+class AudioConfiguration {
   external factory AudioConfiguration({
     required String contentType,
     String channels,
@@ -133,7 +133,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaCapabilitiesKeySystemConfiguration implements JSObject {
+class MediaCapabilitiesKeySystemConfiguration {
   external factory MediaCapabilitiesKeySystemConfiguration({
     required String keySystem,
     String initDataType,
@@ -166,7 +166,7 @@
 @JS()
 @staticInterop
 @anonymous
-class KeySystemTrackConfiguration implements JSObject {
+class KeySystemTrackConfiguration {
   external factory KeySystemTrackConfiguration({
     String robustness,
     String? encryptionScheme,
@@ -183,7 +183,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaCapabilitiesInfo implements JSObject {
+class MediaCapabilitiesInfo {
   external factory MediaCapabilitiesInfo({
     required bool supported,
     required bool smooth,
@@ -234,7 +234,7 @@
 
 @JS('MediaCapabilities')
 @staticInterop
-class MediaCapabilities implements JSObject {}
+class MediaCapabilities {}
 
 extension MediaCapabilitiesExtension on MediaCapabilities {
   external JSPromise decodingInfo(MediaDecodingConfiguration configuration);
diff --git a/lib/src/dom/media_playback_quality.dart b/lib/src/dom/media_playback_quality.dart
index cfdf8bc..07497be 100644
--- a/lib/src/dom/media_playback_quality.dart
+++ b/lib/src/dom/media_playback_quality.dart
@@ -8,7 +8,7 @@
 
 @JS('VideoPlaybackQuality')
 @staticInterop
-class VideoPlaybackQuality implements JSObject {}
+class VideoPlaybackQuality {}
 
 extension VideoPlaybackQualityExtension on VideoPlaybackQuality {
   external DOMHighResTimeStamp get creationTime;
diff --git a/lib/src/dom/media_source.dart b/lib/src/dom/media_source.dart
index 0423461..e9a9205 100644
--- a/lib/src/dom/media_source.dart
+++ b/lib/src/dom/media_source.dart
@@ -46,7 +46,7 @@
 
 @JS('MediaSourceHandle')
 @staticInterop
-class MediaSourceHandle implements JSObject {}
+class MediaSourceHandle {}
 
 @JS('SourceBuffer')
 @staticInterop
diff --git a/lib/src/dom/mediacapture_automation.dart b/lib/src/dom/mediacapture_automation.dart
index c74516c..a73cfef 100644
--- a/lib/src/dom/mediacapture_automation.dart
+++ b/lib/src/dom/mediacapture_automation.dart
@@ -9,7 +9,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MockCapturePromptResultConfiguration implements JSObject {
+class MockCapturePromptResultConfiguration {
   external factory MockCapturePromptResultConfiguration({
     MockCapturePromptResult getUserMedia,
     MockCapturePromptResult getDisplayMedia,
@@ -27,7 +27,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MockCaptureDeviceConfiguration implements JSObject {
+class MockCaptureDeviceConfiguration {
   external factory MockCaptureDeviceConfiguration({
     String label,
     String deviceId,
diff --git a/lib/src/dom/mediacapture_region.dart b/lib/src/dom/mediacapture_region.dart
index 8d26f74..ce2fee5 100644
--- a/lib/src/dom/mediacapture_region.dart
+++ b/lib/src/dom/mediacapture_region.dart
@@ -10,7 +10,7 @@
 
 @JS('CropTarget')
 @staticInterop
-class CropTarget implements JSObject {
+class CropTarget {
   external static JSPromise fromElement(Element element);
 }
 
diff --git a/lib/src/dom/mediacapture_streams.dart b/lib/src/dom/mediacapture_streams.dart
index 8504809..7fdab3f 100644
--- a/lib/src/dom/mediacapture_streams.dart
+++ b/lib/src/dom/mediacapture_streams.dart
@@ -87,7 +87,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaTrackSupportedConstraints implements JSObject {
+class MediaTrackSupportedConstraints {
   external factory MediaTrackSupportedConstraints({
     bool whiteBalanceMode,
     bool exposureMode,
@@ -210,7 +210,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaTrackCapabilities implements JSObject {
+class MediaTrackCapabilities {
   external factory MediaTrackCapabilities({
     JSArray whiteBalanceMode,
     JSArray exposureMode,
@@ -335,7 +335,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaTrackConstraintSet implements JSObject {
+class MediaTrackConstraintSet {
   external factory MediaTrackConstraintSet({
     ConstrainDOMString whiteBalanceMode,
     ConstrainDOMString exposureMode,
@@ -457,7 +457,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaTrackSettings implements JSObject {
+class MediaTrackSettings {
   external factory MediaTrackSettings({
     String whiteBalanceMode,
     String exposureMode,
@@ -636,7 +636,7 @@
 
 @JS('MediaDeviceInfo')
 @staticInterop
-class MediaDeviceInfo implements JSObject {}
+class MediaDeviceInfo {}
 
 extension MediaDeviceInfoExtension on MediaDeviceInfo {
   external JSObject toJSON();
@@ -657,7 +657,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaStreamConstraints implements JSObject {
+class MediaStreamConstraints {
   external factory MediaStreamConstraints({
     JSAny video,
     JSAny audio,
@@ -680,7 +680,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DoubleRange implements JSObject {
+class DoubleRange {
   external factory DoubleRange({
     num max,
     num min,
@@ -714,7 +714,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ULongRange implements JSObject {
+class ULongRange {
   external factory ULongRange({
     int max,
     int min,
@@ -748,7 +748,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ConstrainBooleanParameters implements JSObject {
+class ConstrainBooleanParameters {
   external factory ConstrainBooleanParameters({
     bool exact,
     bool ideal,
@@ -765,7 +765,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ConstrainDOMStringParameters implements JSObject {
+class ConstrainDOMStringParameters {
   external factory ConstrainDOMStringParameters({
     JSAny exact,
     JSAny ideal,
diff --git a/lib/src/dom/mediacapture_transform.dart b/lib/src/dom/mediacapture_transform.dart
index 7dd1adf..f3f6bbe 100644
--- a/lib/src/dom/mediacapture_transform.dart
+++ b/lib/src/dom/mediacapture_transform.dart
@@ -9,7 +9,7 @@
 
 @JS('MediaStreamTrackProcessor')
 @staticInterop
-class MediaStreamTrackProcessor implements JSObject {
+class MediaStreamTrackProcessor {
   external factory MediaStreamTrackProcessor(
       MediaStreamTrackProcessorInit init);
 }
@@ -22,7 +22,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaStreamTrackProcessorInit implements JSObject {
+class MediaStreamTrackProcessorInit {
   external factory MediaStreamTrackProcessorInit({
     required MediaStreamTrack track,
     int maxBufferSize,
@@ -39,7 +39,7 @@
 
 @JS('VideoTrackGenerator')
 @staticInterop
-class VideoTrackGenerator implements JSObject {
+class VideoTrackGenerator {
   external factory VideoTrackGenerator();
 }
 
diff --git a/lib/src/dom/mediacapture_viewport.dart b/lib/src/dom/mediacapture_viewport.dart
index bd6a9b8..ee4db84 100644
--- a/lib/src/dom/mediacapture_viewport.dart
+++ b/lib/src/dom/mediacapture_viewport.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ViewportMediaStreamConstraints implements JSObject {
+class ViewportMediaStreamConstraints {
   external factory ViewportMediaStreamConstraints({
     JSAny video,
     JSAny audio,
diff --git a/lib/src/dom/mediasession.dart b/lib/src/dom/mediasession.dart
index 259316c..47fdb12 100644
--- a/lib/src/dom/mediasession.dart
+++ b/lib/src/dom/mediasession.dart
@@ -10,7 +10,7 @@
 
 @JS('MediaSession')
 @staticInterop
-class MediaSession implements JSObject {}
+class MediaSession {}
 
 extension MediaSessionExtension on MediaSession {
   external void setActionHandler(
@@ -28,7 +28,7 @@
 
 @JS('MediaMetadata')
 @staticInterop
-class MediaMetadata implements JSObject {
+class MediaMetadata {
   external factory MediaMetadata([MediaMetadataInit init]);
 }
 
@@ -46,7 +46,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaMetadataInit implements JSObject {
+class MediaMetadataInit {
   external factory MediaMetadataInit({
     String title,
     String artist,
@@ -69,7 +69,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaImage implements JSObject {
+class MediaImage {
   external factory MediaImage({
     required String src,
     String sizes,
@@ -89,7 +89,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaPositionState implements JSObject {
+class MediaPositionState {
   external factory MediaPositionState({
     num duration,
     num playbackRate,
@@ -109,7 +109,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaSessionActionDetails implements JSObject {
+class MediaSessionActionDetails {
   external factory MediaSessionActionDetails({
     required MediaSessionAction action,
     num seekOffset,
diff --git a/lib/src/dom/mediastream_recording.dart b/lib/src/dom/mediastream_recording.dart
index 2314134..cb520df 100644
--- a/lib/src/dom/mediastream_recording.dart
+++ b/lib/src/dom/mediastream_recording.dart
@@ -53,7 +53,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaRecorderOptions implements JSObject {
+class MediaRecorderOptions {
   external factory MediaRecorderOptions({
     String mimeType,
     int audioBitsPerSecond,
@@ -99,7 +99,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BlobEventInit implements JSObject {
+class BlobEventInit {
   external factory BlobEventInit({
     required Blob data,
     DOMHighResTimeStamp timecode,
diff --git a/lib/src/dom/navigation_timing.dart b/lib/src/dom/navigation_timing.dart
index 2a7029f..ea7ecbd 100644
--- a/lib/src/dom/navigation_timing.dart
+++ b/lib/src/dom/navigation_timing.dart
@@ -31,7 +31,7 @@
 
 @JS('PerformanceTiming')
 @staticInterop
-class PerformanceTiming implements JSObject {}
+class PerformanceTiming {}
 
 extension PerformanceTimingExtension on PerformanceTiming {
   external JSObject toJSON();
@@ -60,7 +60,7 @@
 
 @JS('PerformanceNavigation')
 @staticInterop
-class PerformanceNavigation implements JSObject {
+class PerformanceNavigation {
   external static int get TYPE_NAVIGATE;
   external static int get TYPE_RELOAD;
   external static int get TYPE_BACK_FORWARD;
diff --git a/lib/src/dom/notifications.dart b/lib/src/dom/notifications.dart
index 4a9f0fb..783c18e 100644
--- a/lib/src/dom/notifications.dart
+++ b/lib/src/dom/notifications.dart
@@ -58,7 +58,7 @@
 @JS()
 @staticInterop
 @anonymous
-class NotificationOptions implements JSObject {
+class NotificationOptions {
   external factory NotificationOptions({
     NotificationDirection dir,
     String lang,
@@ -111,7 +111,7 @@
 @JS()
 @staticInterop
 @anonymous
-class NotificationAction implements JSObject {
+class NotificationAction {
   external factory NotificationAction({
     required String action,
     required String title,
@@ -131,7 +131,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GetNotificationOptions implements JSObject {
+class GetNotificationOptions {
   external factory GetNotificationOptions({String tag});
 }
 
diff --git a/lib/src/dom/oes_draw_buffers_indexed.dart b/lib/src/dom/oes_draw_buffers_indexed.dart
index af49b3c..d22515f 100644
--- a/lib/src/dom/oes_draw_buffers_indexed.dart
+++ b/lib/src/dom/oes_draw_buffers_indexed.dart
@@ -8,7 +8,7 @@
 
 @JS('OES_draw_buffers_indexed')
 @staticInterop
-class OES_draw_buffers_indexed implements JSObject {}
+class OES_draw_buffers_indexed {}
 
 extension OESDrawBuffersIndexedExtension on OES_draw_buffers_indexed {
   external void enableiOES(
diff --git a/lib/src/dom/oes_element_index_uint.dart b/lib/src/dom/oes_element_index_uint.dart
index 44d8e97..4182bef 100644
--- a/lib/src/dom/oes_element_index_uint.dart
+++ b/lib/src/dom/oes_element_index_uint.dart
@@ -6,4 +6,4 @@
 
 @JS('OES_element_index_uint')
 @staticInterop
-class OES_element_index_uint implements JSObject {}
+class OES_element_index_uint {}
diff --git a/lib/src/dom/oes_fbo_render_mipmap.dart b/lib/src/dom/oes_fbo_render_mipmap.dart
index 3053add..a13065f 100644
--- a/lib/src/dom/oes_fbo_render_mipmap.dart
+++ b/lib/src/dom/oes_fbo_render_mipmap.dart
@@ -6,4 +6,4 @@
 
 @JS('OES_fbo_render_mipmap')
 @staticInterop
-class OES_fbo_render_mipmap implements JSObject {}
+class OES_fbo_render_mipmap {}
diff --git a/lib/src/dom/oes_standard_derivatives.dart b/lib/src/dom/oes_standard_derivatives.dart
index fc72e2a..ae7422e 100644
--- a/lib/src/dom/oes_standard_derivatives.dart
+++ b/lib/src/dom/oes_standard_derivatives.dart
@@ -8,6 +8,6 @@
 
 @JS('OES_standard_derivatives')
 @staticInterop
-class OES_standard_derivatives implements JSObject {
+class OES_standard_derivatives {
   external static GLenum get FRAGMENT_SHADER_DERIVATIVE_HINT_OES;
 }
diff --git a/lib/src/dom/oes_texture_float.dart b/lib/src/dom/oes_texture_float.dart
index 25d7b2b..965844a 100644
--- a/lib/src/dom/oes_texture_float.dart
+++ b/lib/src/dom/oes_texture_float.dart
@@ -6,4 +6,4 @@
 
 @JS('OES_texture_float')
 @staticInterop
-class OES_texture_float implements JSObject {}
+class OES_texture_float {}
diff --git a/lib/src/dom/oes_texture_float_linear.dart b/lib/src/dom/oes_texture_float_linear.dart
index edd50aa..ab9b23b 100644
--- a/lib/src/dom/oes_texture_float_linear.dart
+++ b/lib/src/dom/oes_texture_float_linear.dart
@@ -6,4 +6,4 @@
 
 @JS('OES_texture_float_linear')
 @staticInterop
-class OES_texture_float_linear implements JSObject {}
+class OES_texture_float_linear {}
diff --git a/lib/src/dom/oes_texture_half_float.dart b/lib/src/dom/oes_texture_half_float.dart
index 9c987f4..07ab9b6 100644
--- a/lib/src/dom/oes_texture_half_float.dart
+++ b/lib/src/dom/oes_texture_half_float.dart
@@ -8,6 +8,6 @@
 
 @JS('OES_texture_half_float')
 @staticInterop
-class OES_texture_half_float implements JSObject {
+class OES_texture_half_float {
   external static GLenum get HALF_FLOAT_OES;
 }
diff --git a/lib/src/dom/oes_texture_half_float_linear.dart b/lib/src/dom/oes_texture_half_float_linear.dart
index 0dac1e1..c4a3dd9 100644
--- a/lib/src/dom/oes_texture_half_float_linear.dart
+++ b/lib/src/dom/oes_texture_half_float_linear.dart
@@ -6,4 +6,4 @@
 
 @JS('OES_texture_half_float_linear')
 @staticInterop
-class OES_texture_half_float_linear implements JSObject {}
+class OES_texture_half_float_linear {}
diff --git a/lib/src/dom/oes_vertex_array_object.dart b/lib/src/dom/oes_vertex_array_object.dart
index 9dc8b33..fa97633 100644
--- a/lib/src/dom/oes_vertex_array_object.dart
+++ b/lib/src/dom/oes_vertex_array_object.dart
@@ -12,7 +12,7 @@
 
 @JS('OES_vertex_array_object')
 @staticInterop
-class OES_vertex_array_object implements JSObject {
+class OES_vertex_array_object {
   external static GLenum get VERTEX_ARRAY_BINDING_OES;
 }
 
diff --git a/lib/src/dom/orientation_event.dart b/lib/src/dom/orientation_event.dart
index 9387b14..233ba46 100644
--- a/lib/src/dom/orientation_event.dart
+++ b/lib/src/dom/orientation_event.dart
@@ -49,7 +49,7 @@
 
 @JS('DeviceMotionEventAcceleration')
 @staticInterop
-class DeviceMotionEventAcceleration implements JSObject {}
+class DeviceMotionEventAcceleration {}
 
 extension DeviceMotionEventAccelerationExtension
     on DeviceMotionEventAcceleration {
@@ -60,7 +60,7 @@
 
 @JS('DeviceMotionEventRotationRate')
 @staticInterop
-class DeviceMotionEventRotationRate implements JSObject {}
+class DeviceMotionEventRotationRate {}
 
 extension DeviceMotionEventRotationRateExtension
     on DeviceMotionEventRotationRate {
@@ -90,7 +90,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DeviceMotionEventAccelerationInit implements JSObject {
+class DeviceMotionEventAccelerationInit {
   external factory DeviceMotionEventAccelerationInit({
     num? x,
     num? y,
@@ -111,7 +111,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DeviceMotionEventRotationRateInit implements JSObject {
+class DeviceMotionEventRotationRateInit {
   external factory DeviceMotionEventRotationRateInit({
     num? alpha,
     num? beta,
diff --git a/lib/src/dom/orientation_sensor.dart b/lib/src/dom/orientation_sensor.dart
index 6ce7690..4069d6a 100644
--- a/lib/src/dom/orientation_sensor.dart
+++ b/lib/src/dom/orientation_sensor.dart
@@ -48,7 +48,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AbsoluteOrientationReadingValues implements JSObject {
+class AbsoluteOrientationReadingValues {
   external factory AbsoluteOrientationReadingValues(
       {required JSArray? quaternion});
 }
diff --git a/lib/src/dom/ovr_multiview2.dart b/lib/src/dom/ovr_multiview2.dart
index f6fdfaa..c3ae1b1 100644
--- a/lib/src/dom/ovr_multiview2.dart
+++ b/lib/src/dom/ovr_multiview2.dart
@@ -8,7 +8,7 @@
 
 @JS('OVR_multiview2')
 @staticInterop
-class OVR_multiview2 implements JSObject {
+class OVR_multiview2 {
   external static GLenum get FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR;
   external static GLenum get FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR;
   external static GLenum get MAX_VIEWS_OVR;
diff --git a/lib/src/dom/payment_handler.dart b/lib/src/dom/payment_handler.dart
index a8d38b2..1dba7e7 100644
--- a/lib/src/dom/payment_handler.dart
+++ b/lib/src/dom/payment_handler.dart
@@ -12,7 +12,7 @@
 
 @JS('PaymentManager')
 @staticInterop
-class PaymentManager implements JSObject {}
+class PaymentManager {}
 
 extension PaymentManagerExtension on PaymentManager {
   external JSPromise enableDelegations(JSArray delegations);
@@ -33,7 +33,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PaymentRequestDetailsUpdate implements JSObject {
+class PaymentRequestDetailsUpdate {
   external factory PaymentRequestDetailsUpdate({
     String error,
     PaymentCurrencyAmount total,
@@ -125,7 +125,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PaymentHandlerResponse implements JSObject {
+class PaymentHandlerResponse {
   external factory PaymentHandlerResponse({
     String methodName,
     JSObject details,
@@ -157,7 +157,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AddressInit implements JSObject {
+class AddressInit {
   external factory AddressInit({
     String country,
     JSArray addressLine,
@@ -198,7 +198,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PaymentOptions implements JSObject {
+class PaymentOptions {
   external factory PaymentOptions({
     bool requestPayerName,
     bool requestBillingAddress,
@@ -227,7 +227,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PaymentShippingOption implements JSObject {
+class PaymentShippingOption {
   external factory PaymentShippingOption({
     required String id,
     required String label,
@@ -250,7 +250,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AddressErrors implements JSObject {
+class AddressErrors {
   external factory AddressErrors({
     String addressLine,
     String city,
diff --git a/lib/src/dom/payment_request.dart b/lib/src/dom/payment_request.dart
index 7bc5557..9946e65 100644
--- a/lib/src/dom/payment_request.dart
+++ b/lib/src/dom/payment_request.dart
@@ -32,7 +32,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PaymentMethodData implements JSObject {
+class PaymentMethodData {
   external factory PaymentMethodData({
     required String supportedMethods,
     JSObject data,
@@ -49,7 +49,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PaymentCurrencyAmount implements JSObject {
+class PaymentCurrencyAmount {
   external factory PaymentCurrencyAmount({
     required String currency,
     required String value,
@@ -66,7 +66,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PaymentDetailsBase implements JSObject {
+class PaymentDetailsBase {
   external factory PaymentDetailsBase({
     JSArray displayItems,
     JSArray modifiers,
@@ -117,7 +117,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PaymentDetailsModifier implements JSObject {
+class PaymentDetailsModifier {
   external factory PaymentDetailsModifier({
     required String supportedMethods,
     PaymentItem total,
@@ -140,7 +140,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PaymentItem implements JSObject {
+class PaymentItem {
   external factory PaymentItem({
     required String label,
     required PaymentCurrencyAmount amount,
@@ -160,7 +160,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PaymentCompleteDetails implements JSObject {
+class PaymentCompleteDetails {
   external factory PaymentCompleteDetails({JSObject? data});
 }
 
@@ -188,7 +188,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PaymentValidationErrors implements JSObject {
+class PaymentValidationErrors {
   external factory PaymentValidationErrors({
     String error,
     JSObject paymentMethod,
diff --git a/lib/src/dom/performance_measure_memory.dart b/lib/src/dom/performance_measure_memory.dart
index 01b5b44..258b2cd 100644
--- a/lib/src/dom/performance_measure_memory.dart
+++ b/lib/src/dom/performance_measure_memory.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MemoryMeasurement implements JSObject {
+class MemoryMeasurement {
   external factory MemoryMeasurement({
     int bytes,
     JSArray breakdown,
@@ -24,7 +24,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MemoryBreakdownEntry implements JSObject {
+class MemoryBreakdownEntry {
   external factory MemoryBreakdownEntry({
     int bytes,
     JSArray attribution,
@@ -44,7 +44,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MemoryAttribution implements JSObject {
+class MemoryAttribution {
   external factory MemoryAttribution({
     String url,
     MemoryAttributionContainer container,
@@ -64,7 +64,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MemoryAttributionContainer implements JSObject {
+class MemoryAttributionContainer {
   external factory MemoryAttributionContainer({
     String id,
     String src,
diff --git a/lib/src/dom/performance_timeline.dart b/lib/src/dom/performance_timeline.dart
index c4d6b8a..45f56a8 100644
--- a/lib/src/dom/performance_timeline.dart
+++ b/lib/src/dom/performance_timeline.dart
@@ -11,7 +11,7 @@
 
 @JS('PerformanceEntry')
 @staticInterop
-class PerformanceEntry implements JSObject {}
+class PerformanceEntry {}
 
 extension PerformanceEntryExtension on PerformanceEntry {
   external JSObject toJSON();
@@ -23,7 +23,7 @@
 
 @JS('PerformanceObserver')
 @staticInterop
-class PerformanceObserver implements JSObject {
+class PerformanceObserver {
   external factory PerformanceObserver(PerformanceObserverCallback callback);
 
   external static JSArray get supportedEntryTypes;
@@ -38,7 +38,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PerformanceObserverCallbackOptions implements JSObject {
+class PerformanceObserverCallbackOptions {
   external factory PerformanceObserverCallbackOptions(
       {int droppedEntriesCount});
 }
@@ -52,7 +52,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PerformanceObserverInit implements JSObject {
+class PerformanceObserverInit {
   external factory PerformanceObserverInit({
     DOMHighResTimeStamp durationThreshold,
     JSArray entryTypes,
@@ -74,7 +74,7 @@
 
 @JS('PerformanceObserverEntryList')
 @staticInterop
-class PerformanceObserverEntryList implements JSObject {}
+class PerformanceObserverEntryList {}
 
 extension PerformanceObserverEntryListExtension
     on PerformanceObserverEntryList {
diff --git a/lib/src/dom/periodic_background_sync.dart b/lib/src/dom/periodic_background_sync.dart
index aa73522..3520d95 100644
--- a/lib/src/dom/periodic_background_sync.dart
+++ b/lib/src/dom/periodic_background_sync.dart
@@ -8,7 +8,7 @@
 
 @JS('PeriodicSyncManager')
 @staticInterop
-class PeriodicSyncManager implements JSObject {}
+class PeriodicSyncManager {}
 
 extension PeriodicSyncManagerExtension on PeriodicSyncManager {
   external JSPromise register(
@@ -22,7 +22,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BackgroundSyncOptions implements JSObject {
+class BackgroundSyncOptions {
   external factory BackgroundSyncOptions({int minInterval});
 }
 
diff --git a/lib/src/dom/permissions.dart b/lib/src/dom/permissions.dart
index 55ed0dc..45f0f4d 100644
--- a/lib/src/dom/permissions.dart
+++ b/lib/src/dom/permissions.dart
@@ -11,7 +11,7 @@
 
 @JS('Permissions')
 @staticInterop
-class Permissions implements JSObject {}
+class Permissions {}
 
 extension PermissionsExtension on Permissions {
   external JSPromise request(JSObject permissionDesc);
@@ -22,7 +22,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PermissionDescriptor implements JSObject {
+class PermissionDescriptor {
   external factory PermissionDescriptor({required String name});
 }
 
@@ -45,7 +45,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PermissionSetParameters implements JSObject {
+class PermissionSetParameters {
   external factory PermissionSetParameters({
     required PermissionDescriptor descriptor,
     required PermissionState state,
diff --git a/lib/src/dom/permissions_policy.dart b/lib/src/dom/permissions_policy.dart
index d5fd097..67480dc 100644
--- a/lib/src/dom/permissions_policy.dart
+++ b/lib/src/dom/permissions_policy.dart
@@ -8,7 +8,7 @@
 
 @JS('PermissionsPolicy')
 @staticInterop
-class PermissionsPolicy implements JSObject {}
+class PermissionsPolicy {}
 
 extension PermissionsPolicyExtension on PermissionsPolicy {
   external bool allowsFeature(
diff --git a/lib/src/dom/presentation_api.dart b/lib/src/dom/presentation_api.dart
index 3d3b670..74f8354 100644
--- a/lib/src/dom/presentation_api.dart
+++ b/lib/src/dom/presentation_api.dart
@@ -13,7 +13,7 @@
 
 @JS('Presentation')
 @staticInterop
-class Presentation implements JSObject {}
+class Presentation {}
 
 extension PresentationExtension on Presentation {
   external set defaultRequest(PresentationRequest? value);
@@ -131,7 +131,7 @@
 
 @JS('PresentationReceiver')
 @staticInterop
-class PresentationReceiver implements JSObject {}
+class PresentationReceiver {}
 
 extension PresentationReceiverExtension on PresentationReceiver {
   external JSPromise get connectionList;
diff --git a/lib/src/dom/proximity.dart b/lib/src/dom/proximity.dart
index 1dbe43f..d7c59f4 100644
--- a/lib/src/dom/proximity.dart
+++ b/lib/src/dom/proximity.dart
@@ -21,7 +21,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ProximityReadingValues implements JSObject {
+class ProximityReadingValues {
   external factory ProximityReadingValues({
     required num? distance,
     required num? max,
diff --git a/lib/src/dom/push_api.dart b/lib/src/dom/push_api.dart
index fc415b5..79efe6f 100644
--- a/lib/src/dom/push_api.dart
+++ b/lib/src/dom/push_api.dart
@@ -26,7 +26,7 @@
 
 @JS('PushManager')
 @staticInterop
-class PushManager implements JSObject {
+class PushManager {
   external static JSArray get supportedContentEncodings;
 }
 
@@ -38,7 +38,7 @@
 
 @JS('PushSubscriptionOptions')
 @staticInterop
-class PushSubscriptionOptions implements JSObject {}
+class PushSubscriptionOptions {}
 
 extension PushSubscriptionOptionsExtension on PushSubscriptionOptions {
   external bool get userVisibleOnly;
@@ -48,7 +48,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PushSubscriptionOptionsInit implements JSObject {
+class PushSubscriptionOptionsInit {
   external factory PushSubscriptionOptionsInit({
     bool userVisibleOnly,
     JSAny? applicationServerKey,
@@ -64,7 +64,7 @@
 
 @JS('PushSubscription')
 @staticInterop
-class PushSubscription implements JSObject {}
+class PushSubscription {}
 
 extension PushSubscriptionExtension on PushSubscription {
   external JSArrayBuffer? getKey(PushEncryptionKeyName name);
@@ -78,7 +78,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PushSubscriptionJSON implements JSObject {
+class PushSubscriptionJSON {
   external factory PushSubscriptionJSON({
     String endpoint,
     EpochTimeStamp? expirationTime,
@@ -97,7 +97,7 @@
 
 @JS('PushMessageData')
 @staticInterop
-class PushMessageData implements JSObject {}
+class PushMessageData {}
 
 extension PushMessageDataExtension on PushMessageData {
   external JSArrayBuffer arrayBuffer();
diff --git a/lib/src/dom/raw_camera_access.dart b/lib/src/dom/raw_camera_access.dart
index ab76d75..aecfea4 100644
--- a/lib/src/dom/raw_camera_access.dart
+++ b/lib/src/dom/raw_camera_access.dart
@@ -6,7 +6,7 @@
 
 @JS('XRCamera')
 @staticInterop
-class XRCamera implements JSObject {}
+class XRCamera {}
 
 extension XRCameraExtension on XRCamera {
   external int get width;
diff --git a/lib/src/dom/real_world_meshing.dart b/lib/src/dom/real_world_meshing.dart
index 50592cb..7172301 100644
--- a/lib/src/dom/real_world_meshing.dart
+++ b/lib/src/dom/real_world_meshing.dart
@@ -9,7 +9,7 @@
 
 @JS('XRMesh')
 @staticInterop
-class XRMesh implements JSObject {}
+class XRMesh {}
 
 extension XRMeshExtension on XRMesh {
   external XRSpace get meshSpace;
@@ -21,6 +21,6 @@
 
 @JS('XRMeshSet')
 @staticInterop
-class XRMeshSet implements JSObject {}
+class XRMeshSet {}
 
 extension XRMeshSetExtension on XRMeshSet {}
diff --git a/lib/src/dom/reporting.dart b/lib/src/dom/reporting.dart
index 76f7bf9..3d4e4ac 100644
--- a/lib/src/dom/reporting.dart
+++ b/lib/src/dom/reporting.dart
@@ -9,7 +9,7 @@
 
 @JS('ReportBody')
 @staticInterop
-class ReportBody implements JSObject {}
+class ReportBody {}
 
 extension ReportBodyExtension on ReportBody {
   external JSObject toJSON();
@@ -17,7 +17,7 @@
 
 @JS('Report')
 @staticInterop
-class Report implements JSObject {}
+class Report {}
 
 extension ReportExtension on Report {
   external JSObject toJSON();
@@ -28,7 +28,7 @@
 
 @JS('ReportingObserver')
 @staticInterop
-class ReportingObserver implements JSObject {
+class ReportingObserver {
   external factory ReportingObserver(
     ReportingObserverCallback callback, [
     ReportingObserverOptions options,
@@ -44,7 +44,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ReportingObserverOptions implements JSObject {
+class ReportingObserverOptions {
   external factory ReportingObserverOptions({
     JSArray types,
     bool buffered,
@@ -61,7 +61,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GenerateTestReportParameters implements JSObject {
+class GenerateTestReportParameters {
   external factory GenerateTestReportParameters({
     required String message,
     String group,
diff --git a/lib/src/dom/requestidlecallback.dart b/lib/src/dom/requestidlecallback.dart
index bb350e2..3a35f9d 100644
--- a/lib/src/dom/requestidlecallback.dart
+++ b/lib/src/dom/requestidlecallback.dart
@@ -11,7 +11,7 @@
 @JS()
 @staticInterop
 @anonymous
-class IdleRequestOptions implements JSObject {
+class IdleRequestOptions {
   external factory IdleRequestOptions({int timeout});
 }
 
@@ -22,7 +22,7 @@
 
 @JS('IdleDeadline')
 @staticInterop
-class IdleDeadline implements JSObject {}
+class IdleDeadline {}
 
 extension IdleDeadlineExtension on IdleDeadline {
   external DOMHighResTimeStamp timeRemaining();
diff --git a/lib/src/dom/resize_observer.dart b/lib/src/dom/resize_observer.dart
index a99df16..26dc513 100644
--- a/lib/src/dom/resize_observer.dart
+++ b/lib/src/dom/resize_observer.dart
@@ -13,7 +13,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ResizeObserverOptions implements JSObject {
+class ResizeObserverOptions {
   external factory ResizeObserverOptions({ResizeObserverBoxOptions box});
 }
 
@@ -24,7 +24,7 @@
 
 @JS('ResizeObserver')
 @staticInterop
-class ResizeObserver implements JSObject {
+class ResizeObserver {
   external factory ResizeObserver(ResizeObserverCallback callback);
 }
 
@@ -39,7 +39,7 @@
 
 @JS('ResizeObserverEntry')
 @staticInterop
-class ResizeObserverEntry implements JSObject {}
+class ResizeObserverEntry {}
 
 extension ResizeObserverEntryExtension on ResizeObserverEntry {
   external Element get target;
@@ -51,7 +51,7 @@
 
 @JS('ResizeObserverSize')
 @staticInterop
-class ResizeObserverSize implements JSObject {}
+class ResizeObserverSize {}
 
 extension ResizeObserverSizeExtension on ResizeObserverSize {
   external num get inlineSize;
diff --git a/lib/src/dom/sanitizer_api.dart b/lib/src/dom/sanitizer_api.dart
index 57244dd..c72203a 100644
--- a/lib/src/dom/sanitizer_api.dart
+++ b/lib/src/dom/sanitizer_api.dart
@@ -10,7 +10,7 @@
 
 @JS('Sanitizer')
 @staticInterop
-class Sanitizer implements JSObject {
+class Sanitizer {
   external factory Sanitizer([SanitizerConfig config]);
 
   external static SanitizerConfig getDefaultConfiguration();
@@ -28,7 +28,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SetHTMLOptions implements JSObject {
+class SetHTMLOptions {
   external factory SetHTMLOptions({Sanitizer sanitizer});
 }
 
@@ -40,7 +40,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SanitizerConfig implements JSObject {
+class SanitizerConfig {
   external factory SanitizerConfig({
     JSArray allowElements,
     JSArray blockElements,
diff --git a/lib/src/dom/scheduling_apis.dart b/lib/src/dom/scheduling_apis.dart
index fed3833..3c307df 100644
--- a/lib/src/dom/scheduling_apis.dart
+++ b/lib/src/dom/scheduling_apis.dart
@@ -13,7 +13,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SchedulerPostTaskOptions implements JSObject {
+class SchedulerPostTaskOptions {
   external factory SchedulerPostTaskOptions({
     AbortSignal signal,
     TaskPriority priority,
@@ -32,7 +32,7 @@
 
 @JS('Scheduler')
 @staticInterop
-class Scheduler implements JSObject {}
+class Scheduler {}
 
 extension SchedulerExtension on Scheduler {
   external JSPromise postTask(
@@ -70,7 +70,7 @@
 @JS()
 @staticInterop
 @anonymous
-class TaskControllerInit implements JSObject {
+class TaskControllerInit {
   external factory TaskControllerInit({TaskPriority priority});
 }
 
@@ -92,7 +92,7 @@
 @JS()
 @staticInterop
 @anonymous
-class TaskSignalAnyInit implements JSObject {
+class TaskSignalAnyInit {
   external factory TaskSignalAnyInit({JSAny priority});
 }
 
diff --git a/lib/src/dom/screen_capture.dart b/lib/src/dom/screen_capture.dart
index 82524ea..79736c3 100644
--- a/lib/src/dom/screen_capture.dart
+++ b/lib/src/dom/screen_capture.dart
@@ -30,7 +30,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DisplayMediaStreamOptions implements JSObject {
+class DisplayMediaStreamOptions {
   external factory DisplayMediaStreamOptions({
     JSAny video,
     JSAny audio,
diff --git a/lib/src/dom/screen_wake_lock.dart b/lib/src/dom/screen_wake_lock.dart
index b2a3872..840c29a 100644
--- a/lib/src/dom/screen_wake_lock.dart
+++ b/lib/src/dom/screen_wake_lock.dart
@@ -11,7 +11,7 @@
 
 @JS('WakeLock')
 @staticInterop
-class WakeLock implements JSObject {}
+class WakeLock {}
 
 extension WakeLockExtension on WakeLock {
   external JSPromise request([WakeLockType type]);
diff --git a/lib/src/dom/scroll_animations.dart b/lib/src/dom/scroll_animations.dart
index cf6405e..0bf1f26 100644
--- a/lib/src/dom/scroll_animations.dart
+++ b/lib/src/dom/scroll_animations.dart
@@ -13,7 +13,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ScrollTimelineOptions implements JSObject {
+class ScrollTimelineOptions {
   external factory ScrollTimelineOptions({
     Element? source,
     ScrollAxis axis,
@@ -41,7 +41,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ViewTimelineOptions implements JSObject {
+class ViewTimelineOptions {
   external factory ViewTimelineOptions({
     Element subject,
     ScrollAxis axis,
diff --git a/lib/src/dom/scroll_to_text_fragment.dart b/lib/src/dom/scroll_to_text_fragment.dart
index 1d666a3..899599d 100644
--- a/lib/src/dom/scroll_to_text_fragment.dart
+++ b/lib/src/dom/scroll_to_text_fragment.dart
@@ -6,4 +6,4 @@
 
 @JS('FragmentDirective')
 @staticInterop
-class FragmentDirective implements JSObject {}
+class FragmentDirective {}
diff --git a/lib/src/dom/secure_payment_confirmation.dart b/lib/src/dom/secure_payment_confirmation.dart
index 0575446..97e4b28 100644
--- a/lib/src/dom/secure_payment_confirmation.dart
+++ b/lib/src/dom/secure_payment_confirmation.dart
@@ -11,7 +11,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SecurePaymentConfirmationRequest implements JSObject {
+class SecurePaymentConfirmationRequest {
   external factory SecurePaymentConfirmationRequest({
     required BufferSource challenge,
     required String rpId,
@@ -53,7 +53,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticationExtensionsPaymentInputs implements JSObject {
+class AuthenticationExtensionsPaymentInputs {
   external factory AuthenticationExtensionsPaymentInputs({
     bool isPayment,
     String rpId,
@@ -99,7 +99,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CollectedClientAdditionalPaymentData implements JSObject {
+class CollectedClientAdditionalPaymentData {
   external factory CollectedClientAdditionalPaymentData({
     required String rpId,
     required String topOrigin,
@@ -129,7 +129,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PaymentCredentialInstrument implements JSObject {
+class PaymentCredentialInstrument {
   external factory PaymentCredentialInstrument({
     required String displayName,
     required String icon,
diff --git a/lib/src/dom/selection_api.dart b/lib/src/dom/selection_api.dart
index 69c0de1..0622fa7 100644
--- a/lib/src/dom/selection_api.dart
+++ b/lib/src/dom/selection_api.dart
@@ -8,7 +8,7 @@
 
 @JS('Selection')
 @staticInterop
-class Selection implements JSObject {}
+class Selection {}
 
 extension SelectionExtension on Selection {
   external Range getRangeAt(int index);
diff --git a/lib/src/dom/serial.dart b/lib/src/dom/serial.dart
index 890d2bd..6314ad5 100644
--- a/lib/src/dom/serial.dart
+++ b/lib/src/dom/serial.dart
@@ -28,7 +28,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SerialPortRequestOptions implements JSObject {
+class SerialPortRequestOptions {
   external factory SerialPortRequestOptions({
     JSArray filters,
     JSArray allowedBluetoothServiceClassIds,
@@ -45,7 +45,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SerialPortFilter implements JSObject {
+class SerialPortFilter {
   external factory SerialPortFilter({
     int usbVendorId,
     int usbProductId,
@@ -84,7 +84,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SerialPortInfo implements JSObject {
+class SerialPortInfo {
   external factory SerialPortInfo({
     int usbVendorId,
     int usbProductId,
@@ -104,7 +104,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SerialOptions implements JSObject {
+class SerialOptions {
   external factory SerialOptions({
     required int baudRate,
     int dataBits,
@@ -133,7 +133,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SerialOutputSignals implements JSObject {
+class SerialOutputSignals {
   external factory SerialOutputSignals({
     bool dataTerminalReady,
     bool requestToSend,
@@ -155,7 +155,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SerialInputSignals implements JSObject {
+class SerialInputSignals {
   external factory SerialInputSignals({
     required bool dataCarrierDetect,
     required bool clearToSend,
diff --git a/lib/src/dom/server_timing.dart b/lib/src/dom/server_timing.dart
index 6daf09d..2ac820e 100644
--- a/lib/src/dom/server_timing.dart
+++ b/lib/src/dom/server_timing.dart
@@ -8,7 +8,7 @@
 
 @JS('PerformanceServerTiming')
 @staticInterop
-class PerformanceServerTiming implements JSObject {}
+class PerformanceServerTiming {}
 
 extension PerformanceServerTimingExtension on PerformanceServerTiming {
   external JSObject toJSON();
diff --git a/lib/src/dom/service_workers.dart b/lib/src/dom/service_workers.dart
index aa7a89e..f3e88c9 100644
--- a/lib/src/dom/service_workers.dart
+++ b/lib/src/dom/service_workers.dart
@@ -93,7 +93,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RegistrationOptions implements JSObject {
+class RegistrationOptions {
   external factory RegistrationOptions({
     String scope,
     WorkerType type,
@@ -112,7 +112,7 @@
 
 @JS('NavigationPreloadManager')
 @staticInterop
-class NavigationPreloadManager implements JSObject {}
+class NavigationPreloadManager {}
 
 extension NavigationPreloadManagerExtension on NavigationPreloadManager {
   external JSPromise enable();
@@ -124,7 +124,7 @@
 @JS()
 @staticInterop
 @anonymous
-class NavigationPreloadState implements JSObject {
+class NavigationPreloadState {
   external factory NavigationPreloadState({
     bool enabled,
     String headerValue,
@@ -190,7 +190,7 @@
 
 @JS('Client')
 @staticInterop
-class Client implements JSObject {}
+class Client {}
 
 extension ClientExtension on Client {
   external void postMessage(
@@ -218,7 +218,7 @@
 
 @JS('Clients')
 @staticInterop
-class Clients implements JSObject {}
+class Clients {}
 
 extension ClientsExtension on Clients {
   external JSPromise get(String id);
@@ -230,7 +230,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ClientQueryOptions implements JSObject {
+class ClientQueryOptions {
   external factory ClientQueryOptions({
     bool includeUncontrolled,
     ClientType type,
@@ -357,7 +357,7 @@
 
 @JS('Cache')
 @staticInterop
-class Cache implements JSObject {}
+class Cache {}
 
 extension CacheExtension on Cache {
   external JSPromise match(
@@ -387,7 +387,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CacheQueryOptions implements JSObject {
+class CacheQueryOptions {
   external factory CacheQueryOptions({
     bool ignoreSearch,
     bool ignoreMethod,
@@ -406,7 +406,7 @@
 
 @JS('CacheStorage')
 @staticInterop
-class CacheStorage implements JSObject {}
+class CacheStorage {}
 
 extension CacheStorageExtension on CacheStorage {
   external JSPromise match(
diff --git a/lib/src/dom/shape_detection_api.dart b/lib/src/dom/shape_detection_api.dart
index d4ea22f..2ce4d5e 100644
--- a/lib/src/dom/shape_detection_api.dart
+++ b/lib/src/dom/shape_detection_api.dart
@@ -12,7 +12,7 @@
 
 @JS('FaceDetector')
 @staticInterop
-class FaceDetector implements JSObject {
+class FaceDetector {
   external factory FaceDetector([FaceDetectorOptions faceDetectorOptions]);
 }
 
@@ -23,7 +23,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FaceDetectorOptions implements JSObject {
+class FaceDetectorOptions {
   external factory FaceDetectorOptions({
     int maxDetectedFaces,
     bool fastMode,
@@ -40,7 +40,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DetectedFace implements JSObject {
+class DetectedFace {
   external factory DetectedFace({
     required DOMRectReadOnly boundingBox,
     required JSArray? landmarks,
@@ -57,7 +57,7 @@
 @JS()
 @staticInterop
 @anonymous
-class Landmark implements JSObject {
+class Landmark {
   external factory Landmark({
     required JSArray locations,
     LandmarkType type,
@@ -73,7 +73,7 @@
 
 @JS('BarcodeDetector')
 @staticInterop
-class BarcodeDetector implements JSObject {
+class BarcodeDetector {
   external factory BarcodeDetector(
       [BarcodeDetectorOptions barcodeDetectorOptions]);
 
@@ -87,7 +87,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BarcodeDetectorOptions implements JSObject {
+class BarcodeDetectorOptions {
   external factory BarcodeDetectorOptions({JSArray formats});
 }
 
@@ -99,7 +99,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DetectedBarcode implements JSObject {
+class DetectedBarcode {
   external factory DetectedBarcode({
     required DOMRectReadOnly boundingBox,
     required String rawValue,
diff --git a/lib/src/dom/shared_storage.dart b/lib/src/dom/shared_storage.dart
index 2238b91..0bfe6a9 100644
--- a/lib/src/dom/shared_storage.dart
+++ b/lib/src/dom/shared_storage.dart
@@ -28,12 +28,12 @@
 
 @JS('SharedStorageOperation')
 @staticInterop
-class SharedStorageOperation implements JSObject {}
+class SharedStorageOperation {}
 
 @JS()
 @staticInterop
 @anonymous
-class SharedStorageRunOperationMethodOptions implements JSObject {
+class SharedStorageRunOperationMethodOptions {
   external factory SharedStorageRunOperationMethodOptions({
     JSObject data,
     bool resolveToConfig,
@@ -73,7 +73,7 @@
 
 @JS('SharedStorage')
 @staticInterop
-class SharedStorage implements JSObject {}
+class SharedStorage {}
 
 extension SharedStorageExtension on SharedStorage {
   external JSPromise set(
@@ -92,7 +92,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SharedStorageSetMethodOptions implements JSObject {
+class SharedStorageSetMethodOptions {
   external factory SharedStorageSetMethodOptions({bool ignoreIfPresent});
 }
 
@@ -122,7 +122,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SharedStorageUrlWithMetadata implements JSObject {
+class SharedStorageUrlWithMetadata {
   external factory SharedStorageUrlWithMetadata({
     required String url,
     JSObject reportingMetadata,
diff --git a/lib/src/dom/speech_api.dart b/lib/src/dom/speech_api.dart
index 0c81878..e257fb8 100644
--- a/lib/src/dom/speech_api.dart
+++ b/lib/src/dom/speech_api.dart
@@ -88,7 +88,7 @@
 
 @JS('SpeechRecognitionAlternative')
 @staticInterop
-class SpeechRecognitionAlternative implements JSObject {}
+class SpeechRecognitionAlternative {}
 
 extension SpeechRecognitionAlternativeExtension
     on SpeechRecognitionAlternative {
@@ -98,7 +98,7 @@
 
 @JS('SpeechRecognitionResult')
 @staticInterop
-class SpeechRecognitionResult implements JSObject {}
+class SpeechRecognitionResult {}
 
 extension SpeechRecognitionResultExtension on SpeechRecognitionResult {
   external SpeechRecognitionAlternative item(int index);
@@ -108,7 +108,7 @@
 
 @JS('SpeechRecognitionResultList')
 @staticInterop
-class SpeechRecognitionResultList implements JSObject {}
+class SpeechRecognitionResultList {}
 
 extension SpeechRecognitionResultListExtension on SpeechRecognitionResultList {
   external SpeechRecognitionResult item(int index);
@@ -148,7 +148,7 @@
 
 @JS('SpeechGrammar')
 @staticInterop
-class SpeechGrammar implements JSObject {}
+class SpeechGrammar {}
 
 extension SpeechGrammarExtension on SpeechGrammar {
   external set src(String value);
@@ -159,7 +159,7 @@
 
 @JS('SpeechGrammarList')
 @staticInterop
-class SpeechGrammarList implements JSObject {
+class SpeechGrammarList {
   external factory SpeechGrammarList();
 }
 
@@ -300,7 +300,7 @@
 
 @JS('SpeechSynthesisVoice')
 @staticInterop
-class SpeechSynthesisVoice implements JSObject {}
+class SpeechSynthesisVoice {}
 
 extension SpeechSynthesisVoiceExtension on SpeechSynthesisVoice {
   external String get voiceURI;
diff --git a/lib/src/dom/storage.dart b/lib/src/dom/storage.dart
index 0321b7c..81983e7 100644
--- a/lib/src/dom/storage.dart
+++ b/lib/src/dom/storage.dart
@@ -6,7 +6,7 @@
 
 @JS('StorageManager')
 @staticInterop
-class StorageManager implements JSObject {}
+class StorageManager {}
 
 extension StorageManagerExtension on StorageManager {
   external JSPromise getDirectory();
@@ -18,7 +18,7 @@
 @JS()
 @staticInterop
 @anonymous
-class StorageEstimate implements JSObject {
+class StorageEstimate {
   external factory StorageEstimate({
     int usage,
     int quota,
diff --git a/lib/src/dom/storage_buckets.dart b/lib/src/dom/storage_buckets.dart
index f0740cd..6d94670 100644
--- a/lib/src/dom/storage_buckets.dart
+++ b/lib/src/dom/storage_buckets.dart
@@ -10,7 +10,7 @@
 
 @JS('StorageBucketManager')
 @staticInterop
-class StorageBucketManager implements JSObject {}
+class StorageBucketManager {}
 
 extension StorageBucketManagerExtension on StorageBucketManager {
   external JSPromise open(
@@ -24,7 +24,7 @@
 @JS()
 @staticInterop
 @anonymous
-class StorageBucketOptions implements JSObject {
+class StorageBucketOptions {
   external factory StorageBucketOptions({
     bool persisted,
     int? quota,
@@ -43,7 +43,7 @@
 
 @JS('StorageBucket')
 @staticInterop
-class StorageBucket implements JSObject {}
+class StorageBucket {}
 
 extension StorageBucketExtension on StorageBucket {
   external JSPromise persist();
diff --git a/lib/src/dom/streams.dart b/lib/src/dom/streams.dart
index b932d88..e5c4b90 100644
--- a/lib/src/dom/streams.dart
+++ b/lib/src/dom/streams.dart
@@ -26,7 +26,7 @@
 
 @JS('ReadableStream')
 @staticInterop
-class ReadableStream implements JSObject {
+class ReadableStream {
   external factory ReadableStream([
     JSObject underlyingSource,
     QueuingStrategy strategy,
@@ -54,7 +54,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ReadableStreamGetReaderOptions implements JSObject {
+class ReadableStreamGetReaderOptions {
   external factory ReadableStreamGetReaderOptions(
       {ReadableStreamReaderMode mode});
 }
@@ -68,7 +68,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ReadableStreamIteratorOptions implements JSObject {
+class ReadableStreamIteratorOptions {
   external factory ReadableStreamIteratorOptions({bool preventCancel});
 }
 
@@ -81,7 +81,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ReadableWritablePair implements JSObject {
+class ReadableWritablePair {
   external factory ReadableWritablePair({
     required ReadableStream readable,
     required WritableStream writable,
@@ -98,7 +98,7 @@
 @JS()
 @staticInterop
 @anonymous
-class StreamPipeOptions implements JSObject {
+class StreamPipeOptions {
   external factory StreamPipeOptions({
     bool preventClose,
     bool preventAbort,
@@ -121,7 +121,7 @@
 @JS()
 @staticInterop
 @anonymous
-class UnderlyingSource implements JSObject {
+class UnderlyingSource {
   external factory UnderlyingSource({
     UnderlyingSourceStartCallback start,
     UnderlyingSourcePullCallback pull,
@@ -146,7 +146,7 @@
 
 @JS('ReadableStreamDefaultReader')
 @staticInterop
-class ReadableStreamDefaultReader implements JSObject {
+class ReadableStreamDefaultReader {
   external factory ReadableStreamDefaultReader(ReadableStream stream);
 }
 
@@ -160,7 +160,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ReadableStreamReadResult implements JSObject {
+class ReadableStreamReadResult {
   external factory ReadableStreamReadResult({
     JSAny? value,
     bool done,
@@ -176,7 +176,7 @@
 
 @JS('ReadableStreamBYOBReader')
 @staticInterop
-class ReadableStreamBYOBReader implements JSObject {
+class ReadableStreamBYOBReader {
   external factory ReadableStreamBYOBReader(ReadableStream stream);
 }
 
@@ -189,7 +189,7 @@
 
 @JS('ReadableStreamDefaultController')
 @staticInterop
-class ReadableStreamDefaultController implements JSObject {}
+class ReadableStreamDefaultController {}
 
 extension ReadableStreamDefaultControllerExtension
     on ReadableStreamDefaultController {
@@ -201,7 +201,7 @@
 
 @JS('ReadableByteStreamController')
 @staticInterop
-class ReadableByteStreamController implements JSObject {}
+class ReadableByteStreamController {}
 
 extension ReadableByteStreamControllerExtension
     on ReadableByteStreamController {
@@ -214,7 +214,7 @@
 
 @JS('ReadableStreamBYOBRequest')
 @staticInterop
-class ReadableStreamBYOBRequest implements JSObject {}
+class ReadableStreamBYOBRequest {}
 
 extension ReadableStreamBYOBRequestExtension on ReadableStreamBYOBRequest {
   external void respond(int bytesWritten);
@@ -224,7 +224,7 @@
 
 @JS('WritableStream')
 @staticInterop
-class WritableStream implements JSObject {
+class WritableStream {
   external factory WritableStream([
     JSObject underlyingSink,
     QueuingStrategy strategy,
@@ -241,7 +241,7 @@
 @JS()
 @staticInterop
 @anonymous
-class UnderlyingSink implements JSObject {
+class UnderlyingSink {
   external factory UnderlyingSink({
     UnderlyingSinkStartCallback start,
     UnderlyingSinkWriteCallback write,
@@ -266,7 +266,7 @@
 
 @JS('WritableStreamDefaultWriter')
 @staticInterop
-class WritableStreamDefaultWriter implements JSObject {
+class WritableStreamDefaultWriter {
   external factory WritableStreamDefaultWriter(WritableStream stream);
 }
 
@@ -282,7 +282,7 @@
 
 @JS('WritableStreamDefaultController')
 @staticInterop
-class WritableStreamDefaultController implements JSObject {}
+class WritableStreamDefaultController {}
 
 extension WritableStreamDefaultControllerExtension
     on WritableStreamDefaultController {
@@ -292,7 +292,7 @@
 
 @JS('TransformStream')
 @staticInterop
-class TransformStream implements JSObject {
+class TransformStream {
   external factory TransformStream([
     JSObject transformer,
     QueuingStrategy writableStrategy,
@@ -308,7 +308,7 @@
 @JS()
 @staticInterop
 @anonymous
-class Transformer implements JSObject {
+class Transformer {
   external factory Transformer({
     TransformerStartCallback start,
     TransformerTransformCallback transform,
@@ -336,7 +336,7 @@
 
 @JS('TransformStreamDefaultController')
 @staticInterop
-class TransformStreamDefaultController implements JSObject {}
+class TransformStreamDefaultController {}
 
 extension TransformStreamDefaultControllerExtension
     on TransformStreamDefaultController {
@@ -349,7 +349,7 @@
 @JS()
 @staticInterop
 @anonymous
-class QueuingStrategy implements JSObject {
+class QueuingStrategy {
   external factory QueuingStrategy({
     num highWaterMark,
     QueuingStrategySize size,
@@ -366,7 +366,7 @@
 @JS()
 @staticInterop
 @anonymous
-class QueuingStrategyInit implements JSObject {
+class QueuingStrategyInit {
   external factory QueuingStrategyInit({required num highWaterMark});
 }
 
@@ -377,7 +377,7 @@
 
 @JS('ByteLengthQueuingStrategy')
 @staticInterop
-class ByteLengthQueuingStrategy implements JSObject {
+class ByteLengthQueuingStrategy {
   external factory ByteLengthQueuingStrategy(QueuingStrategyInit init);
 }
 
@@ -388,7 +388,7 @@
 
 @JS('CountQueuingStrategy')
 @staticInterop
-class CountQueuingStrategy implements JSObject {
+class CountQueuingStrategy {
   external factory CountQueuingStrategy(QueuingStrategyInit init);
 }
 
diff --git a/lib/src/dom/svg.dart b/lib/src/dom/svg.dart
index 2c3d594..111ca62 100644
--- a/lib/src/dom/svg.dart
+++ b/lib/src/dom/svg.dart
@@ -239,7 +239,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SVGBoundingBoxOptions implements JSObject {
+class SVGBoundingBoxOptions {
   external factory SVGBoundingBoxOptions({
     bool fill,
     bool stroke,
@@ -286,7 +286,7 @@
 
 @JS('SVGNumber')
 @staticInterop
-class SVGNumber implements JSObject {}
+class SVGNumber {}
 
 extension SVGNumberExtension on SVGNumber {
   external set value(num value);
@@ -295,7 +295,7 @@
 
 @JS('SVGLength')
 @staticInterop
-class SVGLength implements JSObject {
+class SVGLength {
   external static int get SVG_LENGTHTYPE_UNKNOWN;
   external static int get SVG_LENGTHTYPE_NUMBER;
   external static int get SVG_LENGTHTYPE_PERCENTAGE;
@@ -326,7 +326,7 @@
 
 @JS('SVGAngle')
 @staticInterop
-class SVGAngle implements JSObject {
+class SVGAngle {
   external static int get SVG_ANGLETYPE_UNKNOWN;
   external static int get SVG_ANGLETYPE_UNSPECIFIED;
   external static int get SVG_ANGLETYPE_DEG;
@@ -351,7 +351,7 @@
 
 @JS('SVGNumberList')
 @staticInterop
-class SVGNumberList implements JSObject {}
+class SVGNumberList {}
 
 extension SVGNumberListExtension on SVGNumberList {
   external void clear();
@@ -373,7 +373,7 @@
 
 @JS('SVGLengthList')
 @staticInterop
-class SVGLengthList implements JSObject {}
+class SVGLengthList {}
 
 extension SVGLengthListExtension on SVGLengthList {
   external void clear();
@@ -395,7 +395,7 @@
 
 @JS('SVGStringList')
 @staticInterop
-class SVGStringList implements JSObject {}
+class SVGStringList {}
 
 extension SVGStringListExtension on SVGStringList {
   external void clear();
@@ -417,7 +417,7 @@
 
 @JS('SVGAnimatedBoolean')
 @staticInterop
-class SVGAnimatedBoolean implements JSObject {}
+class SVGAnimatedBoolean {}
 
 extension SVGAnimatedBooleanExtension on SVGAnimatedBoolean {
   external set baseVal(bool value);
@@ -427,7 +427,7 @@
 
 @JS('SVGAnimatedEnumeration')
 @staticInterop
-class SVGAnimatedEnumeration implements JSObject {}
+class SVGAnimatedEnumeration {}
 
 extension SVGAnimatedEnumerationExtension on SVGAnimatedEnumeration {
   external set baseVal(int value);
@@ -437,7 +437,7 @@
 
 @JS('SVGAnimatedInteger')
 @staticInterop
-class SVGAnimatedInteger implements JSObject {}
+class SVGAnimatedInteger {}
 
 extension SVGAnimatedIntegerExtension on SVGAnimatedInteger {
   external set baseVal(int value);
@@ -447,7 +447,7 @@
 
 @JS('SVGAnimatedNumber')
 @staticInterop
-class SVGAnimatedNumber implements JSObject {}
+class SVGAnimatedNumber {}
 
 extension SVGAnimatedNumberExtension on SVGAnimatedNumber {
   external set baseVal(num value);
@@ -457,7 +457,7 @@
 
 @JS('SVGAnimatedLength')
 @staticInterop
-class SVGAnimatedLength implements JSObject {}
+class SVGAnimatedLength {}
 
 extension SVGAnimatedLengthExtension on SVGAnimatedLength {
   external SVGLength get baseVal;
@@ -466,7 +466,7 @@
 
 @JS('SVGAnimatedAngle')
 @staticInterop
-class SVGAnimatedAngle implements JSObject {}
+class SVGAnimatedAngle {}
 
 extension SVGAnimatedAngleExtension on SVGAnimatedAngle {
   external SVGAngle get baseVal;
@@ -475,7 +475,7 @@
 
 @JS('SVGAnimatedString')
 @staticInterop
-class SVGAnimatedString implements JSObject {}
+class SVGAnimatedString {}
 
 extension SVGAnimatedStringExtension on SVGAnimatedString {
   external set baseVal(String value);
@@ -485,7 +485,7 @@
 
 @JS('SVGAnimatedRect')
 @staticInterop
-class SVGAnimatedRect implements JSObject {}
+class SVGAnimatedRect {}
 
 extension SVGAnimatedRectExtension on SVGAnimatedRect {
   external DOMRect get baseVal;
@@ -494,7 +494,7 @@
 
 @JS('SVGAnimatedNumberList')
 @staticInterop
-class SVGAnimatedNumberList implements JSObject {}
+class SVGAnimatedNumberList {}
 
 extension SVGAnimatedNumberListExtension on SVGAnimatedNumberList {
   external SVGNumberList get baseVal;
@@ -503,7 +503,7 @@
 
 @JS('SVGAnimatedLengthList')
 @staticInterop
-class SVGAnimatedLengthList implements JSObject {}
+class SVGAnimatedLengthList {}
 
 extension SVGAnimatedLengthListExtension on SVGAnimatedLengthList {
   external SVGLengthList get baseVal;
@@ -512,7 +512,7 @@
 
 @JS('SVGUnitTypes')
 @staticInterop
-class SVGUnitTypes implements JSObject {
+class SVGUnitTypes {
   external static int get SVG_UNIT_TYPE_UNKNOWN;
   external static int get SVG_UNIT_TYPE_USERSPACEONUSE;
   external static int get SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
@@ -687,7 +687,7 @@
 
 @JS('SVGTransform')
 @staticInterop
-class SVGTransform implements JSObject {
+class SVGTransform {
   external static int get SVG_TRANSFORM_UNKNOWN;
   external static int get SVG_TRANSFORM_MATRIX;
   external static int get SVG_TRANSFORM_TRANSLATE;
@@ -721,7 +721,7 @@
 
 @JS('SVGTransformList')
 @staticInterop
-class SVGTransformList implements JSObject {}
+class SVGTransformList {}
 
 extension SVGTransformListExtension on SVGTransformList {
   external void clear();
@@ -745,7 +745,7 @@
 
 @JS('SVGAnimatedTransformList')
 @staticInterop
-class SVGAnimatedTransformList implements JSObject {}
+class SVGAnimatedTransformList {}
 
 extension SVGAnimatedTransformListExtension on SVGAnimatedTransformList {
   external SVGTransformList get baseVal;
@@ -754,7 +754,7 @@
 
 @JS('SVGPreserveAspectRatio')
 @staticInterop
-class SVGPreserveAspectRatio implements JSObject {
+class SVGPreserveAspectRatio {
   external static int get SVG_PRESERVEASPECTRATIO_UNKNOWN;
   external static int get SVG_PRESERVEASPECTRATIO_NONE;
   external static int get SVG_PRESERVEASPECTRATIO_XMINYMIN;
@@ -780,7 +780,7 @@
 
 @JS('SVGAnimatedPreserveAspectRatio')
 @staticInterop
-class SVGAnimatedPreserveAspectRatio implements JSObject {}
+class SVGAnimatedPreserveAspectRatio {}
 
 extension SVGAnimatedPreserveAspectRatioExtension
     on SVGAnimatedPreserveAspectRatio {
@@ -839,7 +839,7 @@
 
 @JS('SVGPointList')
 @staticInterop
-class SVGPointList implements JSObject {}
+class SVGPointList {}
 
 extension SVGPointListExtension on SVGPointList {
   external void clear();
diff --git a/lib/src/dom/text_detection_api.dart b/lib/src/dom/text_detection_api.dart
index 5953c7c..a149391 100644
--- a/lib/src/dom/text_detection_api.dart
+++ b/lib/src/dom/text_detection_api.dart
@@ -9,7 +9,7 @@
 
 @JS('TextDetector')
 @staticInterop
-class TextDetector implements JSObject {
+class TextDetector {
   external factory TextDetector();
 }
 
@@ -20,7 +20,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DetectedText implements JSObject {
+class DetectedText {
   external factory DetectedText({
     required DOMRectReadOnly boundingBox,
     required String rawValue,
diff --git a/lib/src/dom/touch_events.dart b/lib/src/dom/touch_events.dart
index becd9a5..848171c 100644
--- a/lib/src/dom/touch_events.dart
+++ b/lib/src/dom/touch_events.dart
@@ -12,7 +12,7 @@
 @JS()
 @staticInterop
 @anonymous
-class TouchInit implements JSObject {
+class TouchInit {
   external factory TouchInit({
     required int identifier,
     required EventTarget target,
@@ -67,7 +67,7 @@
 
 @JS('Touch')
 @staticInterop
-class Touch implements JSObject {
+class Touch {
   external factory Touch(TouchInit touchInitDict);
 }
 
@@ -91,7 +91,7 @@
 
 @JS('TouchList')
 @staticInterop
-class TouchList implements JSObject {}
+class TouchList {}
 
 extension TouchListExtension on TouchList {
   external Touch? item(int index);
diff --git a/lib/src/dom/trust_token_api.dart b/lib/src/dom/trust_token_api.dart
index ced465e..37f0d03 100644
--- a/lib/src/dom/trust_token_api.dart
+++ b/lib/src/dom/trust_token_api.dart
@@ -11,7 +11,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PrivateToken implements JSObject {
+class PrivateToken {
   external factory PrivateToken({
     required TokenVersion version,
     required OperationType operation,
diff --git a/lib/src/dom/trusted_types.dart b/lib/src/dom/trusted_types.dart
index 09ec71a..8190523 100644
--- a/lib/src/dom/trusted_types.dart
+++ b/lib/src/dom/trusted_types.dart
@@ -14,7 +14,7 @@
 
 @JS('TrustedHTML')
 @staticInterop
-class TrustedHTML implements JSObject {
+class TrustedHTML {
   external static TrustedHTML fromLiteral(JSObject templateStringsArray);
 }
 
@@ -24,7 +24,7 @@
 
 @JS('TrustedScript')
 @staticInterop
-class TrustedScript implements JSObject {
+class TrustedScript {
   external static TrustedScript fromLiteral(JSObject templateStringsArray);
 }
 
@@ -34,7 +34,7 @@
 
 @JS('TrustedScriptURL')
 @staticInterop
-class TrustedScriptURL implements JSObject {
+class TrustedScriptURL {
   external static TrustedScriptURL fromLiteral(JSObject templateStringsArray);
 }
 
@@ -44,7 +44,7 @@
 
 @JS('TrustedTypePolicyFactory')
 @staticInterop
-class TrustedTypePolicyFactory implements JSObject {}
+class TrustedTypePolicyFactory {}
 
 extension TrustedTypePolicyFactoryExtension on TrustedTypePolicyFactory {
   external TrustedTypePolicy createPolicy(
@@ -72,7 +72,7 @@
 
 @JS('TrustedTypePolicy')
 @staticInterop
-class TrustedTypePolicy implements JSObject {}
+class TrustedTypePolicy {}
 
 extension TrustedTypePolicyExtension on TrustedTypePolicy {
   external TrustedHTML createHTML(
@@ -93,7 +93,7 @@
 @JS()
 @staticInterop
 @anonymous
-class TrustedTypePolicyOptions implements JSObject {
+class TrustedTypePolicyOptions {
   external factory TrustedTypePolicyOptions({
     CreateHTMLCallback? createHTML,
     CreateScriptCallback? createScript,
diff --git a/lib/src/dom/turtledove.dart b/lib/src/dom/turtledove.dart
index b105166..97c5869 100644
--- a/lib/src/dom/turtledove.dart
+++ b/lib/src/dom/turtledove.dart
@@ -9,7 +9,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuctionAd implements JSObject {
+class AuctionAd {
   external factory AuctionAd({
     required String renderURL,
     JSAny? metadata,
@@ -35,7 +35,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GenerateBidInterestGroup implements JSObject {
+class GenerateBidInterestGroup {
   external factory GenerateBidInterestGroup({
     required String owner,
     required String name,
@@ -105,7 +105,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuctionAdInterestGroupKey implements JSObject {
+class AuctionAdInterestGroupKey {
   external factory AuctionAdInterestGroupKey({
     required String owner,
     required String name,
@@ -122,7 +122,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuctionAdConfig implements JSObject {
+class AuctionAdConfig {
   external factory AuctionAdConfig({
     required String seller,
     required String decisionLogicURL,
@@ -189,7 +189,7 @@
 
 @JS('InterestGroupScriptRunnerGlobalScope')
 @staticInterop
-class InterestGroupScriptRunnerGlobalScope implements JSObject {}
+class InterestGroupScriptRunnerGlobalScope {}
 
 @JS('InterestGroupBiddingScriptRunnerGlobalScope')
 @staticInterop
@@ -209,7 +209,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AdRender implements JSObject {
+class AdRender {
   external factory AdRender({
     required String url,
     String width,
@@ -229,7 +229,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GenerateBidOutput implements JSObject {
+class GenerateBidOutput {
   external factory GenerateBidOutput({
     num bid,
     String bidCurrency,
@@ -284,7 +284,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PreviousWin implements JSObject {
+class PreviousWin {
   external factory PreviousWin({
     required int timeDelta,
     required String adJSON,
@@ -301,7 +301,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BiddingBrowserSignals implements JSObject {
+class BiddingBrowserSignals {
   external factory BiddingBrowserSignals({
     required String topWindowHostname,
     required String seller,
@@ -339,7 +339,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ScoringBrowserSignals implements JSObject {
+class ScoringBrowserSignals {
   external factory ScoringBrowserSignals({
     required String topWindowHostname,
     required String interestGroupOwner,
@@ -371,7 +371,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ReportingBrowserSignals implements JSObject {
+class ReportingBrowserSignals {
   external factory ReportingBrowserSignals({
     required String topWindowHostname,
     required String interestGroupOwner,
@@ -467,7 +467,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ScoreAdOutput implements JSObject {
+class ScoreAdOutput {
   external factory ScoreAdOutput({
     required num desirability,
     num bid,
diff --git a/lib/src/dom/ua_client_hints.dart b/lib/src/dom/ua_client_hints.dart
index 70706a8..fe44740 100644
--- a/lib/src/dom/ua_client_hints.dart
+++ b/lib/src/dom/ua_client_hints.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class NavigatorUABrandVersion implements JSObject {
+class NavigatorUABrandVersion {
   external factory NavigatorUABrandVersion({
     String brand,
     String version,
@@ -24,7 +24,7 @@
 @JS()
 @staticInterop
 @anonymous
-class UADataValues implements JSObject {
+class UADataValues {
   external factory UADataValues({
     String architecture,
     String bitness,
@@ -68,7 +68,7 @@
 @JS()
 @staticInterop
 @anonymous
-class UALowEntropyJSON implements JSObject {
+class UALowEntropyJSON {
   external factory UALowEntropyJSON({
     JSArray brands,
     bool mobile,
@@ -87,7 +87,7 @@
 
 @JS('NavigatorUAData')
 @staticInterop
-class NavigatorUAData implements JSObject {}
+class NavigatorUAData {}
 
 extension NavigatorUADataExtension on NavigatorUAData {
   external JSPromise getHighEntropyValues(JSArray hints);
diff --git a/lib/src/dom/url.dart b/lib/src/dom/url.dart
index 50da0f0..dbf68bc 100644
--- a/lib/src/dom/url.dart
+++ b/lib/src/dom/url.dart
@@ -6,7 +6,7 @@
 
 @JS('URL')
 @staticInterop
-class URL implements JSObject {
+class URL {
   external factory URL(
     String url, [
     String base,
@@ -48,7 +48,7 @@
 
 @JS('URLSearchParams')
 @staticInterop
-class URLSearchParams implements JSObject {
+class URLSearchParams {
   external factory URLSearchParams([JSAny init]);
 }
 
diff --git a/lib/src/dom/urlpattern.dart b/lib/src/dom/urlpattern.dart
index 3f556be..7962d59 100644
--- a/lib/src/dom/urlpattern.dart
+++ b/lib/src/dom/urlpattern.dart
@@ -8,7 +8,7 @@
 
 @JS('URLPattern')
 @staticInterop
-class URLPattern implements JSObject {
+class URLPattern {
   external factory URLPattern([
     URLPatternInput input,
     JSAny baseURLOrOptions,
@@ -38,7 +38,7 @@
 @JS()
 @staticInterop
 @anonymous
-class URLPatternInit implements JSObject {
+class URLPatternInit {
   external factory URLPatternInit({
     String protocol,
     String username,
@@ -76,7 +76,7 @@
 @JS()
 @staticInterop
 @anonymous
-class URLPatternOptions implements JSObject {
+class URLPatternOptions {
   external factory URLPatternOptions({bool ignoreCase});
 }
 
@@ -88,7 +88,7 @@
 @JS()
 @staticInterop
 @anonymous
-class URLPatternResult implements JSObject {
+class URLPatternResult {
   external factory URLPatternResult({
     JSArray inputs,
     URLPatternComponentResult protocol,
@@ -126,7 +126,7 @@
 @JS()
 @staticInterop
 @anonymous
-class URLPatternComponentResult implements JSObject {
+class URLPatternComponentResult {
   external factory URLPatternComponentResult({
     String input,
     JSAny groups,
diff --git a/lib/src/dom/user_timing.dart b/lib/src/dom/user_timing.dart
index 9fa9eb1..250d120 100644
--- a/lib/src/dom/user_timing.dart
+++ b/lib/src/dom/user_timing.dart
@@ -10,7 +10,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PerformanceMarkOptions implements JSObject {
+class PerformanceMarkOptions {
   external factory PerformanceMarkOptions({
     JSAny? detail,
     DOMHighResTimeStamp startTime,
@@ -27,7 +27,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PerformanceMeasureOptions implements JSObject {
+class PerformanceMeasureOptions {
   external factory PerformanceMeasureOptions({
     JSAny? detail,
     JSAny start,
diff --git a/lib/src/dom/video_rvfc.dart b/lib/src/dom/video_rvfc.dart
index c63c7f6..9b6c275 100644
--- a/lib/src/dom/video_rvfc.dart
+++ b/lib/src/dom/video_rvfc.dart
@@ -11,7 +11,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoFrameCallbackMetadata implements JSObject {
+class VideoFrameCallbackMetadata {
   external factory VideoFrameCallbackMetadata({
     required DOMHighResTimeStamp presentationTime,
     required DOMHighResTimeStamp expectedDisplayTime,
diff --git a/lib/src/dom/wasm_js_api.dart b/lib/src/dom/wasm_js_api.dart
index 4bdb305..99ff013 100644
--- a/lib/src/dom/wasm_js_api.dart
+++ b/lib/src/dom/wasm_js_api.dart
@@ -13,7 +13,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WebAssemblyInstantiatedSource implements JSObject {
+class WebAssemblyInstantiatedSource {
   external factory WebAssemblyInstantiatedSource({
     required Module module,
     required Instance instance,
@@ -52,7 +52,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ModuleExportDescriptor implements JSObject {
+class ModuleExportDescriptor {
   external factory ModuleExportDescriptor({
     required String name,
     required ImportExportKind kind,
@@ -69,7 +69,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ModuleImportDescriptor implements JSObject {
+class ModuleImportDescriptor {
   external factory ModuleImportDescriptor({
     required String module,
     required String name,
@@ -88,7 +88,7 @@
 
 @JS('Module')
 @staticInterop
-class Module implements JSObject {
+class Module {
   external factory Module(BufferSource bytes);
 
   external static JSArray exports(Module moduleObject);
@@ -101,7 +101,7 @@
 
 @JS('Instance')
 @staticInterop
-class Instance implements JSObject {
+class Instance {
   external factory Instance(
     Module module, [
     JSObject importObject,
@@ -115,7 +115,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MemoryDescriptor implements JSObject {
+class MemoryDescriptor {
   external factory MemoryDescriptor({
     required int initial,
     int maximum,
@@ -131,7 +131,7 @@
 
 @JS('Memory')
 @staticInterop
-class Memory implements JSObject {
+class Memory {
   external factory Memory(MemoryDescriptor descriptor);
 }
 
@@ -143,7 +143,7 @@
 @JS()
 @staticInterop
 @anonymous
-class TableDescriptor implements JSObject {
+class TableDescriptor {
   external factory TableDescriptor({
     required TableKind element,
     required int initial,
@@ -162,7 +162,7 @@
 
 @JS('Table')
 @staticInterop
-class Table implements JSObject {
+class Table {
   external factory Table(
     TableDescriptor descriptor, [
     JSAny? value,
@@ -185,7 +185,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GlobalDescriptor implements JSObject {
+class GlobalDescriptor {
   external factory GlobalDescriptor({
     required ValueType value,
     bool mutable,
@@ -201,7 +201,7 @@
 
 @JS('Global')
 @staticInterop
-class Global implements JSObject {
+class Global {
   external factory Global(
     GlobalDescriptor descriptor, [
     JSAny? v,
diff --git a/lib/src/dom/web_animations.dart b/lib/src/dom/web_animations.dart
index 87361ab..bbbb6ef 100644
--- a/lib/src/dom/web_animations.dart
+++ b/lib/src/dom/web_animations.dart
@@ -19,7 +19,7 @@
 
 @JS('AnimationTimeline')
 @staticInterop
-class AnimationTimeline implements JSObject {}
+class AnimationTimeline {}
 
 extension AnimationTimelineExtension on AnimationTimeline {
   external Animation play([AnimationEffect? effect]);
@@ -30,7 +30,7 @@
 @JS()
 @staticInterop
 @anonymous
-class DocumentTimelineOptions implements JSObject {
+class DocumentTimelineOptions {
   external factory DocumentTimelineOptions({DOMHighResTimeStamp originTime});
 }
 
@@ -90,7 +90,7 @@
 
 @JS('AnimationEffect')
 @staticInterop
-class AnimationEffect implements JSObject {}
+class AnimationEffect {}
 
 extension AnimationEffectExtension on AnimationEffect {
   external void before(AnimationEffect effects);
@@ -108,7 +108,7 @@
 @JS()
 @staticInterop
 @anonymous
-class EffectTiming implements JSObject {
+class EffectTiming {
   external factory EffectTiming({
     num delay,
     num endDelay,
@@ -146,7 +146,7 @@
 @JS()
 @staticInterop
 @anonymous
-class OptionalEffectTiming implements JSObject {
+class OptionalEffectTiming {
   external factory OptionalEffectTiming({
     num playbackRate,
     num delay,
@@ -236,7 +236,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BaseComputedKeyframe implements JSObject {
+class BaseComputedKeyframe {
   external factory BaseComputedKeyframe({
     num? offset,
     num computedOffset,
@@ -259,7 +259,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BasePropertyIndexedKeyframe implements JSObject {
+class BasePropertyIndexedKeyframe {
   external factory BasePropertyIndexedKeyframe({
     JSAny? offset,
     JSAny easing,
@@ -279,7 +279,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BaseKeyframe implements JSObject {
+class BaseKeyframe {
   external factory BaseKeyframe({
     num? offset,
     String easing,
@@ -342,7 +342,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GetAnimationsOptions implements JSObject {
+class GetAnimationsOptions {
   external factory GetAnimationsOptions({bool subtree});
 }
 
diff --git a/lib/src/dom/web_animations_2.dart b/lib/src/dom/web_animations_2.dart
index a3a04bc..18d38a0 100644
--- a/lib/src/dom/web_animations_2.dart
+++ b/lib/src/dom/web_animations_2.dart
@@ -13,7 +13,7 @@
 
 @JS('GroupEffect')
 @staticInterop
-class GroupEffect implements JSObject {
+class GroupEffect {
   external factory GroupEffect(
     JSArray? children, [
     JSAny timing,
@@ -31,7 +31,7 @@
 
 @JS('AnimationNodeList')
 @staticInterop
-class AnimationNodeList implements JSObject {}
+class AnimationNodeList {}
 
 extension AnimationNodeListExtension on AnimationNodeList {
   external AnimationEffect? item(int index);
@@ -54,7 +54,7 @@
 @JS()
 @staticInterop
 @anonymous
-class TimelineRangeOffset implements JSObject {
+class TimelineRangeOffset {
   external factory TimelineRangeOffset({
     String? rangeName,
     CSSNumericValue offset,
diff --git a/lib/src/dom/web_app_launch.dart b/lib/src/dom/web_app_launch.dart
index 54f01fd..b72d70f 100644
--- a/lib/src/dom/web_app_launch.dart
+++ b/lib/src/dom/web_app_launch.dart
@@ -8,7 +8,7 @@
 
 @JS('LaunchParams')
 @staticInterop
-class LaunchParams implements JSObject {}
+class LaunchParams {}
 
 extension LaunchParamsExtension on LaunchParams {
   external String? get targetURL;
@@ -17,7 +17,7 @@
 
 @JS('LaunchQueue')
 @staticInterop
-class LaunchQueue implements JSObject {}
+class LaunchQueue {}
 
 extension LaunchQueueExtension on LaunchQueue {
   external void setConsumer(LaunchConsumer consumer);
diff --git a/lib/src/dom/web_bluetooth.dart b/lib/src/dom/web_bluetooth.dart
index 4fd3fcc..0405f5f 100644
--- a/lib/src/dom/web_bluetooth.dart
+++ b/lib/src/dom/web_bluetooth.dart
@@ -17,7 +17,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BluetoothDataFilterInit implements JSObject {
+class BluetoothDataFilterInit {
   external factory BluetoothDataFilterInit({
     BufferSource dataPrefix,
     BufferSource mask,
@@ -62,7 +62,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BluetoothLEScanFilterInit implements JSObject {
+class BluetoothLEScanFilterInit {
   external factory BluetoothLEScanFilterInit({
     JSArray services,
     String name,
@@ -88,7 +88,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RequestDeviceOptions implements JSObject {
+class RequestDeviceOptions {
   external factory RequestDeviceOptions({
     JSArray filters,
     JSArray exclusionFilters,
@@ -166,7 +166,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AllowedBluetoothDevice implements JSObject {
+class AllowedBluetoothDevice {
   external factory AllowedBluetoothDevice({
     required String deviceId,
     required bool mayUseGATT,
@@ -189,7 +189,7 @@
 @JS()
 @staticInterop
 @anonymous
-class BluetoothPermissionStorage implements JSObject {
+class BluetoothPermissionStorage {
   external factory BluetoothPermissionStorage(
       {required JSArray allowedDevices});
 }
@@ -261,7 +261,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WatchAdvertisementsOptions implements JSObject {
+class WatchAdvertisementsOptions {
   external factory WatchAdvertisementsOptions({AbortSignal signal});
 }
 
@@ -272,14 +272,14 @@
 
 @JS('BluetoothManufacturerDataMap')
 @staticInterop
-class BluetoothManufacturerDataMap implements JSObject {}
+class BluetoothManufacturerDataMap {}
 
 extension BluetoothManufacturerDataMapExtension
     on BluetoothManufacturerDataMap {}
 
 @JS('BluetoothServiceDataMap')
 @staticInterop
-class BluetoothServiceDataMap implements JSObject {}
+class BluetoothServiceDataMap {}
 
 extension BluetoothServiceDataMapExtension on BluetoothServiceDataMap {}
 
@@ -341,7 +341,7 @@
 
 @JS('BluetoothRemoteGATTServer')
 @staticInterop
-class BluetoothRemoteGATTServer implements JSObject {}
+class BluetoothRemoteGATTServer {}
 
 extension BluetoothRemoteGATTServerExtension on BluetoothRemoteGATTServer {
   external JSPromise connect();
@@ -400,7 +400,7 @@
 
 @JS('BluetoothCharacteristicProperties')
 @staticInterop
-class BluetoothCharacteristicProperties implements JSObject {}
+class BluetoothCharacteristicProperties {}
 
 extension BluetoothCharacteristicPropertiesExtension
     on BluetoothCharacteristicProperties {
@@ -417,7 +417,7 @@
 
 @JS('BluetoothRemoteGATTDescriptor')
 @staticInterop
-class BluetoothRemoteGATTDescriptor implements JSObject {}
+class BluetoothRemoteGATTDescriptor {}
 
 extension BluetoothRemoteGATTDescriptorExtension
     on BluetoothRemoteGATTDescriptor {
@@ -430,7 +430,7 @@
 
 @JS('BluetoothUUID')
 @staticInterop
-class BluetoothUUID implements JSObject {
+class BluetoothUUID {
   external static UUID getService(JSAny name);
   external static UUID getCharacteristic(JSAny name);
   external static UUID getDescriptor(JSAny name);
diff --git a/lib/src/dom/web_locks.dart b/lib/src/dom/web_locks.dart
index 8d21b67..616a7fc 100644
--- a/lib/src/dom/web_locks.dart
+++ b/lib/src/dom/web_locks.dart
@@ -11,7 +11,7 @@
 
 @JS('LockManager')
 @staticInterop
-class LockManager implements JSObject {}
+class LockManager {}
 
 extension LockManagerExtension on LockManager {
   external JSPromise request(
@@ -25,7 +25,7 @@
 @JS()
 @staticInterop
 @anonymous
-class LockOptions implements JSObject {
+class LockOptions {
   external factory LockOptions({
     LockMode mode,
     bool ifAvailable,
@@ -48,7 +48,7 @@
 @JS()
 @staticInterop
 @anonymous
-class LockManagerSnapshot implements JSObject {
+class LockManagerSnapshot {
   external factory LockManagerSnapshot({
     JSArray held,
     JSArray pending,
@@ -65,7 +65,7 @@
 @JS()
 @staticInterop
 @anonymous
-class LockInfo implements JSObject {
+class LockInfo {
   external factory LockInfo({
     String name,
     LockMode mode,
@@ -84,7 +84,7 @@
 
 @JS('Lock')
 @staticInterop
-class Lock implements JSObject {}
+class Lock {}
 
 extension LockExtension on Lock {
   external String get name;
diff --git a/lib/src/dom/web_nfc.dart b/lib/src/dom/web_nfc.dart
index 5ce94a0..8145403 100644
--- a/lib/src/dom/web_nfc.dart
+++ b/lib/src/dom/web_nfc.dart
@@ -11,7 +11,7 @@
 
 @JS('NDEFMessage')
 @staticInterop
-class NDEFMessage implements JSObject {
+class NDEFMessage {
   external factory NDEFMessage(NDEFMessageInit messageInit);
 }
 
@@ -22,7 +22,7 @@
 @JS()
 @staticInterop
 @anonymous
-class NDEFMessageInit implements JSObject {
+class NDEFMessageInit {
   external factory NDEFMessageInit({required JSArray records});
 }
 
@@ -33,7 +33,7 @@
 
 @JS('NDEFRecord')
 @staticInterop
-class NDEFRecord implements JSObject {
+class NDEFRecord {
   external factory NDEFRecord(NDEFRecordInit recordInit);
 }
 
@@ -50,7 +50,7 @@
 @JS()
 @staticInterop
 @anonymous
-class NDEFRecordInit implements JSObject {
+class NDEFRecordInit {
   external factory NDEFRecordInit({
     required String recordType,
     String mediaType,
@@ -129,7 +129,7 @@
 @JS()
 @staticInterop
 @anonymous
-class NDEFWriteOptions implements JSObject {
+class NDEFWriteOptions {
   external factory NDEFWriteOptions({
     bool overwrite,
     AbortSignal? signal,
@@ -146,7 +146,7 @@
 @JS()
 @staticInterop
 @anonymous
-class NDEFMakeReadOnlyOptions implements JSObject {
+class NDEFMakeReadOnlyOptions {
   external factory NDEFMakeReadOnlyOptions({AbortSignal? signal});
 }
 
@@ -158,7 +158,7 @@
 @JS()
 @staticInterop
 @anonymous
-class NDEFScanOptions implements JSObject {
+class NDEFScanOptions {
   external factory NDEFScanOptions({AbortSignal signal});
 }
 
diff --git a/lib/src/dom/web_otp.dart b/lib/src/dom/web_otp.dart
index 841e7f6..45c593c 100644
--- a/lib/src/dom/web_otp.dart
+++ b/lib/src/dom/web_otp.dart
@@ -19,7 +19,7 @@
 @JS()
 @staticInterop
 @anonymous
-class OTPCredentialRequestOptions implements JSObject {
+class OTPCredentialRequestOptions {
   external factory OTPCredentialRequestOptions({JSArray transport});
 }
 
diff --git a/lib/src/dom/web_share.dart b/lib/src/dom/web_share.dart
index e4be1af..546a0da 100644
--- a/lib/src/dom/web_share.dart
+++ b/lib/src/dom/web_share.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ShareData implements JSObject {
+class ShareData {
   external factory ShareData({
     JSArray files,
     String title,
diff --git a/lib/src/dom/webaudio.dart b/lib/src/dom/webaudio.dart
index 6adadb9..5c6cb40 100644
--- a/lib/src/dom/webaudio.dart
+++ b/lib/src/dom/webaudio.dart
@@ -110,7 +110,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioContextOptions implements JSObject {
+class AudioContextOptions {
   external factory AudioContextOptions({
     JSAny latencyHint,
     num sampleRate,
@@ -133,7 +133,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioSinkOptions implements JSObject {
+class AudioSinkOptions {
   external factory AudioSinkOptions({required AudioSinkType type});
 }
 
@@ -144,7 +144,7 @@
 
 @JS('AudioSinkInfo')
 @staticInterop
-class AudioSinkInfo implements JSObject {}
+class AudioSinkInfo {}
 
 extension AudioSinkInfoExtension on AudioSinkInfo {
   external AudioSinkType get type;
@@ -153,7 +153,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioTimestamp implements JSObject {
+class AudioTimestamp {
   external factory AudioTimestamp({
     num contextTime,
     DOMHighResTimeStamp performanceTime,
@@ -181,7 +181,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioRenderCapacityOptions implements JSObject {
+class AudioRenderCapacityOptions {
   external factory AudioRenderCapacityOptions({num updateInterval});
 }
 
@@ -252,7 +252,7 @@
 @JS()
 @staticInterop
 @anonymous
-class OfflineAudioContextOptions implements JSObject {
+class OfflineAudioContextOptions {
   external factory OfflineAudioContextOptions({
     int numberOfChannels,
     required int length,
@@ -301,7 +301,7 @@
 
 @JS('AudioBuffer')
 @staticInterop
-class AudioBuffer implements JSObject {
+class AudioBuffer {
   external factory AudioBuffer(AudioBufferOptions options);
 }
 
@@ -326,7 +326,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioBufferOptions implements JSObject {
+class AudioBufferOptions {
   external factory AudioBufferOptions({
     int numberOfChannels,
     required int length,
@@ -372,7 +372,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioNodeOptions implements JSObject {
+class AudioNodeOptions {
   external factory AudioNodeOptions({
     int channelCount,
     ChannelCountMode channelCountMode,
@@ -391,7 +391,7 @@
 
 @JS('AudioParam')
 @staticInterop
-class AudioParam implements JSObject {}
+class AudioParam {}
 
 extension AudioParamExtension on AudioParam {
   external AudioParam setValueAtTime(
@@ -516,7 +516,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioBufferSourceOptions implements JSObject {
+class AudioBufferSourceOptions {
   external factory AudioBufferSourceOptions({
     AudioBuffer? buffer,
     num detune,
@@ -552,7 +552,7 @@
 
 @JS('AudioListener')
 @staticInterop
-class AudioListener implements JSObject {}
+class AudioListener {}
 
 extension AudioListenerExtension on AudioListener {
   external void setPosition(
@@ -721,7 +721,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ConstantSourceOptions implements JSObject {
+class ConstantSourceOptions {
   external factory ConstantSourceOptions({num offset});
 }
 
@@ -912,7 +912,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaElementAudioSourceOptions implements JSObject {
+class MediaElementAudioSourceOptions {
   external factory MediaElementAudioSourceOptions(
       {required HTMLMediaElement mediaElement});
 }
@@ -953,7 +953,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaStreamAudioSourceOptions implements JSObject {
+class MediaStreamAudioSourceOptions {
   external factory MediaStreamAudioSourceOptions(
       {required MediaStream mediaStream});
 }
@@ -976,7 +976,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MediaStreamTrackAudioSourceOptions implements JSObject {
+class MediaStreamTrackAudioSourceOptions {
   external factory MediaStreamTrackAudioSourceOptions(
       {required MediaStreamTrack mediaStreamTrack});
 }
@@ -1126,7 +1126,7 @@
 
 @JS('PeriodicWave')
 @staticInterop
-class PeriodicWave implements JSObject {
+class PeriodicWave {
   external factory PeriodicWave(
     BaseAudioContext context, [
     PeriodicWaveOptions options,
@@ -1136,7 +1136,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PeriodicWaveConstraints implements JSObject {
+class PeriodicWaveConstraints {
   external factory PeriodicWaveConstraints({bool disableNormalization});
 }
 
@@ -1256,7 +1256,7 @@
 
 @JS('AudioParamMap')
 @staticInterop
-class AudioParamMap implements JSObject {}
+class AudioParamMap {}
 
 extension AudioParamMapExtension on AudioParamMap {}
 
@@ -1305,7 +1305,7 @@
 
 @JS('AudioWorkletProcessor')
 @staticInterop
-class AudioWorkletProcessor implements JSObject {
+class AudioWorkletProcessor {
   external factory AudioWorkletProcessor();
 }
 
@@ -1316,7 +1316,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioParamDescriptor implements JSObject {
+class AudioParamDescriptor {
   external factory AudioParamDescriptor({
     required String name,
     num defaultValue,
diff --git a/lib/src/dom/webauthn.dart b/lib/src/dom/webauthn.dart
index e985e6e..268d37d 100644
--- a/lib/src/dom/webauthn.dart
+++ b/lib/src/dom/webauthn.dart
@@ -48,7 +48,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RegistrationResponseJSON implements JSObject {
+class RegistrationResponseJSON {
   external factory RegistrationResponseJSON({
     required Base64URLString id,
     required Base64URLString rawId,
@@ -78,7 +78,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticatorAttestationResponseJSON implements JSObject {
+class AuthenticatorAttestationResponseJSON {
   external factory AuthenticatorAttestationResponseJSON({
     required Base64URLString clientDataJSON,
     required Base64URLString authenticatorData,
@@ -108,7 +108,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticationResponseJSON implements JSObject {
+class AuthenticationResponseJSON {
   external factory AuthenticationResponseJSON({
     required Base64URLString id,
     required Base64URLString rawId,
@@ -138,7 +138,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticatorAssertionResponseJSON implements JSObject {
+class AuthenticatorAssertionResponseJSON {
   external factory AuthenticatorAssertionResponseJSON({
     required Base64URLString clientDataJSON,
     required Base64URLString authenticatorData,
@@ -165,14 +165,14 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticationExtensionsClientOutputsJSON implements JSObject {
+class AuthenticationExtensionsClientOutputsJSON {
   external factory AuthenticationExtensionsClientOutputsJSON();
 }
 
 @JS()
 @staticInterop
 @anonymous
-class PublicKeyCredentialCreationOptionsJSON implements JSObject {
+class PublicKeyCredentialCreationOptionsJSON {
   external factory PublicKeyCredentialCreationOptionsJSON({
     required PublicKeyCredentialRpEntity rp,
     required PublicKeyCredentialUserEntityJSON user,
@@ -217,7 +217,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PublicKeyCredentialUserEntityJSON implements JSObject {
+class PublicKeyCredentialUserEntityJSON {
   external factory PublicKeyCredentialUserEntityJSON({
     required Base64URLString id,
     required String name,
@@ -238,7 +238,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PublicKeyCredentialDescriptorJSON implements JSObject {
+class PublicKeyCredentialDescriptorJSON {
   external factory PublicKeyCredentialDescriptorJSON({
     required Base64URLString id,
     required String type,
@@ -259,14 +259,14 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticationExtensionsClientInputsJSON implements JSObject {
+class AuthenticationExtensionsClientInputsJSON {
   external factory AuthenticationExtensionsClientInputsJSON();
 }
 
 @JS()
 @staticInterop
 @anonymous
-class PublicKeyCredentialRequestOptionsJSON implements JSObject {
+class PublicKeyCredentialRequestOptionsJSON {
   external factory PublicKeyCredentialRequestOptionsJSON({
     required Base64URLString challenge,
     int timeout,
@@ -304,7 +304,7 @@
 
 @JS('AuthenticatorResponse')
 @staticInterop
-class AuthenticatorResponse implements JSObject {}
+class AuthenticatorResponse {}
 
 extension AuthenticatorResponseExtension on AuthenticatorResponse {
   external JSArrayBuffer get clientDataJSON;
@@ -338,7 +338,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PublicKeyCredentialParameters implements JSObject {
+class PublicKeyCredentialParameters {
   external factory PublicKeyCredentialParameters({
     required String type,
     required COSEAlgorithmIdentifier alg,
@@ -356,7 +356,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PublicKeyCredentialCreationOptions implements JSObject {
+class PublicKeyCredentialCreationOptions {
   external factory PublicKeyCredentialCreationOptions({
     required PublicKeyCredentialRpEntity rp,
     required PublicKeyCredentialUserEntity user,
@@ -401,7 +401,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PublicKeyCredentialEntity implements JSObject {
+class PublicKeyCredentialEntity {
   external factory PublicKeyCredentialEntity({required String name});
 }
 
@@ -443,7 +443,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticatorSelectionCriteria implements JSObject {
+class AuthenticatorSelectionCriteria {
   external factory AuthenticatorSelectionCriteria({
     String authenticatorAttachment,
     String residentKey,
@@ -467,7 +467,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PublicKeyCredentialRequestOptions implements JSObject {
+class PublicKeyCredentialRequestOptions {
   external factory PublicKeyCredentialRequestOptions({
     required BufferSource challenge,
     int timeout,
@@ -506,7 +506,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticationExtensionsClientInputs implements JSObject {
+class AuthenticationExtensionsClientInputs {
   external factory AuthenticationExtensionsClientInputs({
     String credentialProtectionPolicy,
     bool enforceCredentialProtectionPolicy,
@@ -564,7 +564,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticationExtensionsClientOutputs implements JSObject {
+class AuthenticationExtensionsClientOutputs {
   external factory AuthenticationExtensionsClientOutputs({
     bool hmacCreateSecret,
     HMACGetSecretOutput hmacGetSecret,
@@ -604,7 +604,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CollectedClientData implements JSObject {
+class CollectedClientData {
   external factory CollectedClientData({
     required String type,
     required String challenge,
@@ -630,7 +630,7 @@
 @JS()
 @staticInterop
 @anonymous
-class TokenBinding implements JSObject {
+class TokenBinding {
   external factory TokenBinding({
     required String status,
     String id,
@@ -647,7 +647,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PublicKeyCredentialDescriptor implements JSObject {
+class PublicKeyCredentialDescriptor {
   external factory PublicKeyCredentialDescriptor({
     required String type,
     required BufferSource id,
@@ -668,7 +668,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CredentialPropertiesOutput implements JSObject {
+class CredentialPropertiesOutput {
   external factory CredentialPropertiesOutput({bool rk});
 }
 
@@ -680,7 +680,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticationExtensionsPRFValues implements JSObject {
+class AuthenticationExtensionsPRFValues {
   external factory AuthenticationExtensionsPRFValues({
     required BufferSource first,
     BufferSource second,
@@ -698,7 +698,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticationExtensionsPRFInputs implements JSObject {
+class AuthenticationExtensionsPRFInputs {
   external factory AuthenticationExtensionsPRFInputs({
     AuthenticationExtensionsPRFValues eval,
     JSAny evalByCredential,
@@ -716,7 +716,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticationExtensionsPRFOutputs implements JSObject {
+class AuthenticationExtensionsPRFOutputs {
   external factory AuthenticationExtensionsPRFOutputs({
     bool enabled,
     AuthenticationExtensionsPRFValues results,
@@ -734,7 +734,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticationExtensionsLargeBlobInputs implements JSObject {
+class AuthenticationExtensionsLargeBlobInputs {
   external factory AuthenticationExtensionsLargeBlobInputs({
     String support,
     bool read,
@@ -755,7 +755,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticationExtensionsLargeBlobOutputs implements JSObject {
+class AuthenticationExtensionsLargeBlobOutputs {
   external factory AuthenticationExtensionsLargeBlobOutputs({
     bool supported,
     JSArrayBuffer blob,
@@ -776,7 +776,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticationExtensionsDevicePublicKeyInputs implements JSObject {
+class AuthenticationExtensionsDevicePublicKeyInputs {
   external factory AuthenticationExtensionsDevicePublicKeyInputs({
     String attestation,
     JSArray attestationFormats,
@@ -794,7 +794,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AuthenticationExtensionsDevicePublicKeyOutputs implements JSObject {
+class AuthenticationExtensionsDevicePublicKeyOutputs {
   external factory AuthenticationExtensionsDevicePublicKeyOutputs(
       {JSArrayBuffer signature});
 }
diff --git a/lib/src/dom/webcodecs.dart b/lib/src/dom/webcodecs.dart
index 2a2b4b7..4aa623c 100644
--- a/lib/src/dom/webcodecs.dart
+++ b/lib/src/dom/webcodecs.dart
@@ -59,7 +59,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioDecoderInit implements JSObject {
+class AudioDecoderInit {
   external factory AudioDecoderInit({
     required AudioDataOutputCallback output,
     required WebCodecsErrorCallback error,
@@ -96,7 +96,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoDecoderInit implements JSObject {
+class VideoDecoderInit {
   external factory VideoDecoderInit({
     required VideoFrameOutputCallback output,
     required WebCodecsErrorCallback error,
@@ -133,7 +133,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioEncoderInit implements JSObject {
+class AudioEncoderInit {
   external factory AudioEncoderInit({
     required EncodedAudioChunkOutputCallback output,
     required WebCodecsErrorCallback error,
@@ -150,7 +150,7 @@
 @JS()
 @staticInterop
 @anonymous
-class EncodedAudioChunkMetadata implements JSObject {
+class EncodedAudioChunkMetadata {
   external factory EncodedAudioChunkMetadata(
       {AudioDecoderConfig decoderConfig});
 }
@@ -186,7 +186,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoEncoderInit implements JSObject {
+class VideoEncoderInit {
   external factory VideoEncoderInit({
     required EncodedVideoChunkOutputCallback output,
     required WebCodecsErrorCallback error,
@@ -203,7 +203,7 @@
 @JS()
 @staticInterop
 @anonymous
-class EncodedVideoChunkMetadata implements JSObject {
+class EncodedVideoChunkMetadata {
   external factory EncodedVideoChunkMetadata({
     VideoDecoderConfig decoderConfig,
     SvcOutputMetadata svc,
@@ -223,7 +223,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SvcOutputMetadata implements JSObject {
+class SvcOutputMetadata {
   external factory SvcOutputMetadata({int temporalLayerId});
 }
 
@@ -235,7 +235,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioDecoderSupport implements JSObject {
+class AudioDecoderSupport {
   external factory AudioDecoderSupport({
     bool supported,
     AudioDecoderConfig config,
@@ -252,7 +252,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoDecoderSupport implements JSObject {
+class VideoDecoderSupport {
   external factory VideoDecoderSupport({
     bool supported,
     VideoDecoderConfig config,
@@ -269,7 +269,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioEncoderSupport implements JSObject {
+class AudioEncoderSupport {
   external factory AudioEncoderSupport({
     bool supported,
     AudioEncoderConfig config,
@@ -286,7 +286,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoEncoderSupport implements JSObject {
+class VideoEncoderSupport {
   external factory VideoEncoderSupport({
     bool supported,
     VideoEncoderConfig config,
@@ -303,7 +303,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioDecoderConfig implements JSObject {
+class AudioDecoderConfig {
   external factory AudioDecoderConfig({
     required String codec,
     required int sampleRate,
@@ -326,7 +326,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoDecoderConfig implements JSObject {
+class VideoDecoderConfig {
   external factory VideoDecoderConfig({
     required String codec,
     AllowSharedBufferSource description,
@@ -364,7 +364,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioEncoderConfig implements JSObject {
+class AudioEncoderConfig {
   external factory AudioEncoderConfig({
     AacEncoderConfig aac,
     FlacEncoderConfig flac,
@@ -399,7 +399,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoEncoderConfig implements JSObject {
+class VideoEncoderConfig {
   external factory VideoEncoderConfig({
     AV1EncoderConfig av1,
     AvcEncoderConfig avc,
@@ -455,7 +455,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoEncoderEncodeOptions implements JSObject {
+class VideoEncoderEncodeOptions {
   external factory VideoEncoderEncodeOptions({
     VideoEncoderEncodeOptionsForAv1 av1,
     VideoEncoderEncodeOptionsForAvc avc,
@@ -480,7 +480,7 @@
 
 @JS('EncodedAudioChunk')
 @staticInterop
-class EncodedAudioChunk implements JSObject {
+class EncodedAudioChunk {
   external factory EncodedAudioChunk(EncodedAudioChunkInit init);
 }
 
@@ -495,7 +495,7 @@
 @JS()
 @staticInterop
 @anonymous
-class EncodedAudioChunkInit implements JSObject {
+class EncodedAudioChunkInit {
   external factory EncodedAudioChunkInit({
     required EncodedAudioChunkType type,
     required int timestamp,
@@ -517,7 +517,7 @@
 
 @JS('EncodedVideoChunk')
 @staticInterop
-class EncodedVideoChunk implements JSObject {
+class EncodedVideoChunk {
   external factory EncodedVideoChunk(EncodedVideoChunkInit init);
 }
 
@@ -532,7 +532,7 @@
 @JS()
 @staticInterop
 @anonymous
-class EncodedVideoChunkInit implements JSObject {
+class EncodedVideoChunkInit {
   external factory EncodedVideoChunkInit({
     required EncodedVideoChunkType type,
     required int timestamp,
@@ -554,7 +554,7 @@
 
 @JS('AudioData')
 @staticInterop
-class AudioData implements JSObject {
+class AudioData {
   external factory AudioData(AudioDataInit init);
 }
 
@@ -577,7 +577,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioDataInit implements JSObject {
+class AudioDataInit {
   external factory AudioDataInit({
     required AudioSampleFormat format,
     required num sampleRate,
@@ -609,7 +609,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AudioDataCopyToOptions implements JSObject {
+class AudioDataCopyToOptions {
   external factory AudioDataCopyToOptions({
     required int planeIndex,
     int frameOffset,
@@ -631,7 +631,7 @@
 
 @JS('VideoFrame')
 @staticInterop
-class VideoFrame implements JSObject {
+class VideoFrame {
   external factory VideoFrame(
     JSObject dataOrImage, [
     JSObject init,
@@ -662,7 +662,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoFrameInit implements JSObject {
+class VideoFrameInit {
   external factory VideoFrameInit({
     int duration,
     int timestamp,
@@ -694,7 +694,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoFrameBufferInit implements JSObject {
+class VideoFrameBufferInit {
   external factory VideoFrameBufferInit({
     required VideoPixelFormat format,
     required int codedWidth,
@@ -738,14 +738,14 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoFrameMetadata implements JSObject {
+class VideoFrameMetadata {
   external factory VideoFrameMetadata();
 }
 
 @JS()
 @staticInterop
 @anonymous
-class VideoFrameCopyToOptions implements JSObject {
+class VideoFrameCopyToOptions {
   external factory VideoFrameCopyToOptions({
     DOMRectInit rect,
     JSArray layout,
@@ -762,7 +762,7 @@
 @JS()
 @staticInterop
 @anonymous
-class PlaneLayout implements JSObject {
+class PlaneLayout {
   external factory PlaneLayout({
     required int offset,
     required int stride,
@@ -778,7 +778,7 @@
 
 @JS('VideoColorSpace')
 @staticInterop
-class VideoColorSpace implements JSObject {
+class VideoColorSpace {
   external factory VideoColorSpace([VideoColorSpaceInit init]);
 }
 
@@ -793,7 +793,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoColorSpaceInit implements JSObject {
+class VideoColorSpaceInit {
   external factory VideoColorSpaceInit({
     VideoColorPrimaries? primaries,
     VideoTransferCharacteristics? transfer,
@@ -815,7 +815,7 @@
 
 @JS('ImageDecoder')
 @staticInterop
-class ImageDecoder implements JSObject {
+class ImageDecoder {
   external factory ImageDecoder(ImageDecoderInit init);
 
   external static JSPromise isTypeSupported(String type);
@@ -834,7 +834,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ImageDecoderInit implements JSObject {
+class ImageDecoderInit {
   external factory ImageDecoderInit({
     required String type,
     required ImageBufferSource data,
@@ -866,7 +866,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ImageDecodeOptions implements JSObject {
+class ImageDecodeOptions {
   external factory ImageDecodeOptions({
     int frameIndex,
     bool completeFramesOnly,
@@ -883,7 +883,7 @@
 @JS()
 @staticInterop
 @anonymous
-class ImageDecodeResult implements JSObject {
+class ImageDecodeResult {
   external factory ImageDecodeResult({
     required VideoFrame image,
     required bool complete,
@@ -899,7 +899,7 @@
 
 @JS('ImageTrackList')
 @staticInterop
-class ImageTrackList implements JSObject {}
+class ImageTrackList {}
 
 extension ImageTrackListExtension on ImageTrackList {
   external JSPromise get ready;
@@ -910,7 +910,7 @@
 
 @JS('ImageTrack')
 @staticInterop
-class ImageTrack implements JSObject {}
+class ImageTrack {}
 
 extension ImageTrackExtension on ImageTrack {
   external bool get animated;
diff --git a/lib/src/dom/webcodecs_aac_codec_registration.dart b/lib/src/dom/webcodecs_aac_codec_registration.dart
index 0db50b6..209495c 100644
--- a/lib/src/dom/webcodecs_aac_codec_registration.dart
+++ b/lib/src/dom/webcodecs_aac_codec_registration.dart
@@ -9,7 +9,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AacEncoderConfig implements JSObject {
+class AacEncoderConfig {
   external factory AacEncoderConfig({AacBitstreamFormat format});
 }
 
diff --git a/lib/src/dom/webcodecs_av1_codec_registration.dart b/lib/src/dom/webcodecs_av1_codec_registration.dart
index b181c22..ec8248d 100644
--- a/lib/src/dom/webcodecs_av1_codec_registration.dart
+++ b/lib/src/dom/webcodecs_av1_codec_registration.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AV1EncoderConfig implements JSObject {
+class AV1EncoderConfig {
   external factory AV1EncoderConfig({bool forceScreenContentTools});
 }
 
@@ -19,7 +19,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoEncoderEncodeOptionsForAv1 implements JSObject {
+class VideoEncoderEncodeOptionsForAv1 {
   external factory VideoEncoderEncodeOptionsForAv1({int? quantizer});
 }
 
diff --git a/lib/src/dom/webcodecs_avc_codec_registration.dart b/lib/src/dom/webcodecs_avc_codec_registration.dart
index 2e27c8b..b088cf3 100644
--- a/lib/src/dom/webcodecs_avc_codec_registration.dart
+++ b/lib/src/dom/webcodecs_avc_codec_registration.dart
@@ -9,7 +9,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AvcEncoderConfig implements JSObject {
+class AvcEncoderConfig {
   external factory AvcEncoderConfig({AvcBitstreamFormat format});
 }
 
@@ -21,7 +21,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoEncoderEncodeOptionsForAvc implements JSObject {
+class VideoEncoderEncodeOptionsForAvc {
   external factory VideoEncoderEncodeOptionsForAvc({int? quantizer});
 }
 
diff --git a/lib/src/dom/webcodecs_flac_codec_registration.dart b/lib/src/dom/webcodecs_flac_codec_registration.dart
index 408b261..ae056ab 100644
--- a/lib/src/dom/webcodecs_flac_codec_registration.dart
+++ b/lib/src/dom/webcodecs_flac_codec_registration.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class FlacEncoderConfig implements JSObject {
+class FlacEncoderConfig {
   external factory FlacEncoderConfig({
     int blockSize,
     int compressLevel,
diff --git a/lib/src/dom/webcodecs_hevc_codec_registration.dart b/lib/src/dom/webcodecs_hevc_codec_registration.dart
index 17c8253..297c431 100644
--- a/lib/src/dom/webcodecs_hevc_codec_registration.dart
+++ b/lib/src/dom/webcodecs_hevc_codec_registration.dart
@@ -9,7 +9,7 @@
 @JS()
 @staticInterop
 @anonymous
-class HevcEncoderConfig implements JSObject {
+class HevcEncoderConfig {
   external factory HevcEncoderConfig({HevcBitstreamFormat format});
 }
 
@@ -21,7 +21,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoEncoderEncodeOptionsForHevc implements JSObject {
+class VideoEncoderEncodeOptionsForHevc {
   external factory VideoEncoderEncodeOptionsForHevc({int? quantizer});
 }
 
diff --git a/lib/src/dom/webcodecs_opus_codec_registration.dart b/lib/src/dom/webcodecs_opus_codec_registration.dart
index fcd323f..7161975 100644
--- a/lib/src/dom/webcodecs_opus_codec_registration.dart
+++ b/lib/src/dom/webcodecs_opus_codec_registration.dart
@@ -9,7 +9,7 @@
 @JS()
 @staticInterop
 @anonymous
-class OpusEncoderConfig implements JSObject {
+class OpusEncoderConfig {
   external factory OpusEncoderConfig({
     OpusBitstreamFormat format,
     int frameDuration,
diff --git a/lib/src/dom/webcodecs_vp9_codec_registration.dart b/lib/src/dom/webcodecs_vp9_codec_registration.dart
index 6e38922..894ae2a 100644
--- a/lib/src/dom/webcodecs_vp9_codec_registration.dart
+++ b/lib/src/dom/webcodecs_vp9_codec_registration.dart
@@ -7,7 +7,7 @@
 @JS()
 @staticInterop
 @anonymous
-class VideoEncoderEncodeOptionsForVp9 implements JSObject {
+class VideoEncoderEncodeOptionsForVp9 {
   external factory VideoEncoderEncodeOptionsForVp9({int? quantizer});
 }
 
diff --git a/lib/src/dom/webcryptoapi.dart b/lib/src/dom/webcryptoapi.dart
index 7b0f6ba..499b250 100644
--- a/lib/src/dom/webcryptoapi.dart
+++ b/lib/src/dom/webcryptoapi.dart
@@ -16,7 +16,7 @@
 
 @JS('Crypto')
 @staticInterop
-class Crypto implements JSObject {}
+class Crypto {}
 
 extension CryptoExtension on Crypto {
   external ArrayBufferView getRandomValues(ArrayBufferView array);
@@ -27,7 +27,7 @@
 @JS()
 @staticInterop
 @anonymous
-class Algorithm implements JSObject {
+class Algorithm {
   external factory Algorithm({required String name});
 }
 
@@ -39,7 +39,7 @@
 @JS()
 @staticInterop
 @anonymous
-class KeyAlgorithm implements JSObject {
+class KeyAlgorithm {
   external factory KeyAlgorithm({required String name});
 }
 
@@ -50,7 +50,7 @@
 
 @JS('CryptoKey')
 @staticInterop
-class CryptoKey implements JSObject {}
+class CryptoKey {}
 
 extension CryptoKeyExtension on CryptoKey {
   external KeyType get type;
@@ -61,7 +61,7 @@
 
 @JS('SubtleCrypto')
 @staticInterop
-class SubtleCrypto implements JSObject {}
+class SubtleCrypto {}
 
 extension SubtleCryptoExtension on SubtleCrypto {
   external JSPromise encrypt(
@@ -137,7 +137,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RsaOtherPrimesInfo implements JSObject {
+class RsaOtherPrimesInfo {
   external factory RsaOtherPrimesInfo({
     String r,
     String d,
@@ -157,7 +157,7 @@
 @JS()
 @staticInterop
 @anonymous
-class JsonWebKey implements JSObject {
+class JsonWebKey {
   external factory JsonWebKey({
     String kty,
     String use,
@@ -222,7 +222,7 @@
 @JS()
 @staticInterop
 @anonymous
-class CryptoKeyPair implements JSObject {
+class CryptoKeyPair {
   external factory CryptoKeyPair({
     CryptoKey publicKey,
     CryptoKey privateKey,
diff --git a/lib/src/dom/webgl1.dart b/lib/src/dom/webgl1.dart
index fb1fd91..fcfee87 100644
--- a/lib/src/dom/webgl1.dart
+++ b/lib/src/dom/webgl1.dart
@@ -30,7 +30,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WebGLContextAttributes implements JSObject {
+class WebGLContextAttributes {
   external factory WebGLContextAttributes({
     bool alpha,
     bool depth,
@@ -70,7 +70,7 @@
 
 @JS('WebGLObject')
 @staticInterop
-class WebGLObject implements JSObject {}
+class WebGLObject {}
 
 @JS('WebGLBuffer')
 @staticInterop
@@ -98,11 +98,11 @@
 
 @JS('WebGLUniformLocation')
 @staticInterop
-class WebGLUniformLocation implements JSObject {}
+class WebGLUniformLocation {}
 
 @JS('WebGLActiveInfo')
 @staticInterop
-class WebGLActiveInfo implements JSObject {}
+class WebGLActiveInfo {}
 
 extension WebGLActiveInfoExtension on WebGLActiveInfo {
   external GLint get size;
@@ -112,7 +112,7 @@
 
 @JS('WebGLShaderPrecisionFormat')
 @staticInterop
-class WebGLShaderPrecisionFormat implements JSObject {}
+class WebGLShaderPrecisionFormat {}
 
 extension WebGLShaderPrecisionFormatExtension on WebGLShaderPrecisionFormat {
   external GLint get rangeMin;
@@ -122,7 +122,7 @@
 
 @JS('WebGLRenderingContext')
 @staticInterop
-class WebGLRenderingContext implements JSObject {
+class WebGLRenderingContext {
   external static GLenum get DEPTH_BUFFER_BIT;
   external static GLenum get STENCIL_BUFFER_BIT;
   external static GLenum get COLOR_BUFFER_BIT;
diff --git a/lib/src/dom/webgl2.dart b/lib/src/dom/webgl2.dart
index 8b1aab0..1c7950c 100644
--- a/lib/src/dom/webgl2.dart
+++ b/lib/src/dom/webgl2.dart
@@ -34,7 +34,7 @@
 
 @JS('WebGL2RenderingContext')
 @staticInterop
-class WebGL2RenderingContext implements JSObject {
+class WebGL2RenderingContext {
   external static GLenum get DEPTH_BUFFER_BIT;
   external static GLenum get STENCIL_BUFFER_BIT;
   external static GLenum get COLOR_BUFFER_BIT;
diff --git a/lib/src/dom/webgl_blend_equation_advanced_coherent.dart b/lib/src/dom/webgl_blend_equation_advanced_coherent.dart
index 0cb7284..1b2e845 100644
--- a/lib/src/dom/webgl_blend_equation_advanced_coherent.dart
+++ b/lib/src/dom/webgl_blend_equation_advanced_coherent.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_blend_equation_advanced_coherent')
 @staticInterop
-class WEBGL_blend_equation_advanced_coherent implements JSObject {
+class WEBGL_blend_equation_advanced_coherent {
   external static GLenum get MULTIPLY;
   external static GLenum get SCREEN;
   external static GLenum get OVERLAY;
diff --git a/lib/src/dom/webgl_clip_cull_distance.dart b/lib/src/dom/webgl_clip_cull_distance.dart
index 0a024cc..5dd5d9f 100644
--- a/lib/src/dom/webgl_clip_cull_distance.dart
+++ b/lib/src/dom/webgl_clip_cull_distance.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_clip_cull_distance')
 @staticInterop
-class WEBGL_clip_cull_distance implements JSObject {
+class WEBGL_clip_cull_distance {
   external static GLenum get MAX_CLIP_DISTANCES_WEBGL;
   external static GLenum get MAX_CULL_DISTANCES_WEBGL;
   external static GLenum get MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL;
diff --git a/lib/src/dom/webgl_color_buffer_float.dart b/lib/src/dom/webgl_color_buffer_float.dart
index 4d5a3fd..ffe478c 100644
--- a/lib/src/dom/webgl_color_buffer_float.dart
+++ b/lib/src/dom/webgl_color_buffer_float.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_color_buffer_float')
 @staticInterop
-class WEBGL_color_buffer_float implements JSObject {
+class WEBGL_color_buffer_float {
   external static GLenum get RGBA32F_EXT;
   external static GLenum get FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT;
   external static GLenum get UNSIGNED_NORMALIZED_EXT;
diff --git a/lib/src/dom/webgl_compressed_texture_astc.dart b/lib/src/dom/webgl_compressed_texture_astc.dart
index 38f3993..12f62aa 100644
--- a/lib/src/dom/webgl_compressed_texture_astc.dart
+++ b/lib/src/dom/webgl_compressed_texture_astc.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_compressed_texture_astc')
 @staticInterop
-class WEBGL_compressed_texture_astc implements JSObject {
+class WEBGL_compressed_texture_astc {
   external static GLenum get COMPRESSED_RGBA_ASTC_4x4_KHR;
   external static GLenum get COMPRESSED_RGBA_ASTC_5x4_KHR;
   external static GLenum get COMPRESSED_RGBA_ASTC_5x5_KHR;
diff --git a/lib/src/dom/webgl_compressed_texture_etc.dart b/lib/src/dom/webgl_compressed_texture_etc.dart
index 7f9ee84..c55a028 100644
--- a/lib/src/dom/webgl_compressed_texture_etc.dart
+++ b/lib/src/dom/webgl_compressed_texture_etc.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_compressed_texture_etc')
 @staticInterop
-class WEBGL_compressed_texture_etc implements JSObject {
+class WEBGL_compressed_texture_etc {
   external static GLenum get COMPRESSED_R11_EAC;
   external static GLenum get COMPRESSED_SIGNED_R11_EAC;
   external static GLenum get COMPRESSED_RG11_EAC;
diff --git a/lib/src/dom/webgl_compressed_texture_etc1.dart b/lib/src/dom/webgl_compressed_texture_etc1.dart
index 547ec60..6a49b08 100644
--- a/lib/src/dom/webgl_compressed_texture_etc1.dart
+++ b/lib/src/dom/webgl_compressed_texture_etc1.dart
@@ -8,6 +8,6 @@
 
 @JS('WEBGL_compressed_texture_etc1')
 @staticInterop
-class WEBGL_compressed_texture_etc1 implements JSObject {
+class WEBGL_compressed_texture_etc1 {
   external static GLenum get COMPRESSED_RGB_ETC1_WEBGL;
 }
diff --git a/lib/src/dom/webgl_compressed_texture_pvrtc.dart b/lib/src/dom/webgl_compressed_texture_pvrtc.dart
index 136eeec..a9ad8fb 100644
--- a/lib/src/dom/webgl_compressed_texture_pvrtc.dart
+++ b/lib/src/dom/webgl_compressed_texture_pvrtc.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_compressed_texture_pvrtc')
 @staticInterop
-class WEBGL_compressed_texture_pvrtc implements JSObject {
+class WEBGL_compressed_texture_pvrtc {
   external static GLenum get COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
   external static GLenum get COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
   external static GLenum get COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
diff --git a/lib/src/dom/webgl_compressed_texture_s3tc.dart b/lib/src/dom/webgl_compressed_texture_s3tc.dart
index db23f40..7ace66d 100644
--- a/lib/src/dom/webgl_compressed_texture_s3tc.dart
+++ b/lib/src/dom/webgl_compressed_texture_s3tc.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_compressed_texture_s3tc')
 @staticInterop
-class WEBGL_compressed_texture_s3tc implements JSObject {
+class WEBGL_compressed_texture_s3tc {
   external static GLenum get COMPRESSED_RGB_S3TC_DXT1_EXT;
   external static GLenum get COMPRESSED_RGBA_S3TC_DXT1_EXT;
   external static GLenum get COMPRESSED_RGBA_S3TC_DXT3_EXT;
diff --git a/lib/src/dom/webgl_compressed_texture_s3tc_srgb.dart b/lib/src/dom/webgl_compressed_texture_s3tc_srgb.dart
index c143b68..fc6ca0d 100644
--- a/lib/src/dom/webgl_compressed_texture_s3tc_srgb.dart
+++ b/lib/src/dom/webgl_compressed_texture_s3tc_srgb.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_compressed_texture_s3tc_srgb')
 @staticInterop
-class WEBGL_compressed_texture_s3tc_srgb implements JSObject {
+class WEBGL_compressed_texture_s3tc_srgb {
   external static GLenum get COMPRESSED_SRGB_S3TC_DXT1_EXT;
   external static GLenum get COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;
   external static GLenum get COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;
diff --git a/lib/src/dom/webgl_debug_renderer_info.dart b/lib/src/dom/webgl_debug_renderer_info.dart
index 7248be2..2f5bb7f 100644
--- a/lib/src/dom/webgl_debug_renderer_info.dart
+++ b/lib/src/dom/webgl_debug_renderer_info.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_debug_renderer_info')
 @staticInterop
-class WEBGL_debug_renderer_info implements JSObject {
+class WEBGL_debug_renderer_info {
   external static GLenum get UNMASKED_VENDOR_WEBGL;
   external static GLenum get UNMASKED_RENDERER_WEBGL;
 }
diff --git a/lib/src/dom/webgl_debug_shaders.dart b/lib/src/dom/webgl_debug_shaders.dart
index c65d539..0eee2c8 100644
--- a/lib/src/dom/webgl_debug_shaders.dart
+++ b/lib/src/dom/webgl_debug_shaders.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_debug_shaders')
 @staticInterop
-class WEBGL_debug_shaders implements JSObject {}
+class WEBGL_debug_shaders {}
 
 extension WEBGLDebugShadersExtension on WEBGL_debug_shaders {
   external String getTranslatedShaderSource(WebGLShader shader);
diff --git a/lib/src/dom/webgl_depth_texture.dart b/lib/src/dom/webgl_depth_texture.dart
index 94d525e..0ba9ec3 100644
--- a/lib/src/dom/webgl_depth_texture.dart
+++ b/lib/src/dom/webgl_depth_texture.dart
@@ -8,6 +8,6 @@
 
 @JS('WEBGL_depth_texture')
 @staticInterop
-class WEBGL_depth_texture implements JSObject {
+class WEBGL_depth_texture {
   external static GLenum get UNSIGNED_INT_24_8_WEBGL;
 }
diff --git a/lib/src/dom/webgl_draw_buffers.dart b/lib/src/dom/webgl_draw_buffers.dart
index dd3b6a1..badda36 100644
--- a/lib/src/dom/webgl_draw_buffers.dart
+++ b/lib/src/dom/webgl_draw_buffers.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_draw_buffers')
 @staticInterop
-class WEBGL_draw_buffers implements JSObject {
+class WEBGL_draw_buffers {
   external static GLenum get COLOR_ATTACHMENT0_WEBGL;
   external static GLenum get COLOR_ATTACHMENT1_WEBGL;
   external static GLenum get COLOR_ATTACHMENT2_WEBGL;
diff --git a/lib/src/dom/webgl_draw_instanced_base_vertex_base_instance.dart b/lib/src/dom/webgl_draw_instanced_base_vertex_base_instance.dart
index 35d846f..7b2064c 100644
--- a/lib/src/dom/webgl_draw_instanced_base_vertex_base_instance.dart
+++ b/lib/src/dom/webgl_draw_instanced_base_vertex_base_instance.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_draw_instanced_base_vertex_base_instance')
 @staticInterop
-class WEBGL_draw_instanced_base_vertex_base_instance implements JSObject {}
+class WEBGL_draw_instanced_base_vertex_base_instance {}
 
 extension WEBGLDrawInstancedBaseVertexBaseInstanceExtension
     on WEBGL_draw_instanced_base_vertex_base_instance {
diff --git a/lib/src/dom/webgl_lose_context.dart b/lib/src/dom/webgl_lose_context.dart
index 6bd01d6..dd7288b 100644
--- a/lib/src/dom/webgl_lose_context.dart
+++ b/lib/src/dom/webgl_lose_context.dart
@@ -6,7 +6,7 @@
 
 @JS('WEBGL_lose_context')
 @staticInterop
-class WEBGL_lose_context implements JSObject {}
+class WEBGL_lose_context {}
 
 extension WEBGLLoseContextExtension on WEBGL_lose_context {
   external void loseContext();
diff --git a/lib/src/dom/webgl_multi_draw.dart b/lib/src/dom/webgl_multi_draw.dart
index e53abc4..2fa9a09 100644
--- a/lib/src/dom/webgl_multi_draw.dart
+++ b/lib/src/dom/webgl_multi_draw.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_multi_draw')
 @staticInterop
-class WEBGL_multi_draw implements JSObject {}
+class WEBGL_multi_draw {}
 
 extension WEBGLMultiDrawExtension on WEBGL_multi_draw {
   external void multiDrawArraysWEBGL(
diff --git a/lib/src/dom/webgl_multi_draw_instanced_base_vertex_base_instance.dart b/lib/src/dom/webgl_multi_draw_instanced_base_vertex_base_instance.dart
index 4d1782b..1d40283 100644
--- a/lib/src/dom/webgl_multi_draw_instanced_base_vertex_base_instance.dart
+++ b/lib/src/dom/webgl_multi_draw_instanced_base_vertex_base_instance.dart
@@ -8,8 +8,7 @@
 
 @JS('WEBGL_multi_draw_instanced_base_vertex_base_instance')
 @staticInterop
-class WEBGL_multi_draw_instanced_base_vertex_base_instance
-    implements JSObject {}
+class WEBGL_multi_draw_instanced_base_vertex_base_instance {}
 
 extension WEBGLMultiDrawInstancedBaseVertexBaseInstanceExtension
     on WEBGL_multi_draw_instanced_base_vertex_base_instance {
diff --git a/lib/src/dom/webgl_provoking_vertex.dart b/lib/src/dom/webgl_provoking_vertex.dart
index 937ec6a..77cfbe7 100644
--- a/lib/src/dom/webgl_provoking_vertex.dart
+++ b/lib/src/dom/webgl_provoking_vertex.dart
@@ -8,7 +8,7 @@
 
 @JS('WEBGL_provoking_vertex')
 @staticInterop
-class WEBGL_provoking_vertex implements JSObject {
+class WEBGL_provoking_vertex {
   external static GLenum get FIRST_VERTEX_CONVENTION_WEBGL;
   external static GLenum get LAST_VERTEX_CONVENTION_WEBGL;
   external static GLenum get PROVOKING_VERTEX_WEBGL;
diff --git a/lib/src/dom/webgpu.dart b/lib/src/dom/webgpu.dart
index 8f9ccc6..a0ddc78 100644
--- a/lib/src/dom/webgpu.dart
+++ b/lib/src/dom/webgpu.dart
@@ -70,7 +70,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUObjectDescriptorBase implements JSObject {
+class GPUObjectDescriptorBase {
   external factory GPUObjectDescriptorBase({String label});
 }
 
@@ -81,7 +81,7 @@
 
 @JS('GPUSupportedLimits')
 @staticInterop
-class GPUSupportedLimits implements JSObject {}
+class GPUSupportedLimits {}
 
 extension GPUSupportedLimitsExtension on GPUSupportedLimits {
   external int get maxTextureDimension1D;
@@ -120,19 +120,19 @@
 
 @JS('GPUSupportedFeatures')
 @staticInterop
-class GPUSupportedFeatures implements JSObject {}
+class GPUSupportedFeatures {}
 
 extension GPUSupportedFeaturesExtension on GPUSupportedFeatures {}
 
 @JS('WGSLLanguageFeatures')
 @staticInterop
-class WGSLLanguageFeatures implements JSObject {}
+class WGSLLanguageFeatures {}
 
 extension WGSLLanguageFeaturesExtension on WGSLLanguageFeatures {}
 
 @JS('GPUAdapterInfo')
 @staticInterop
-class GPUAdapterInfo implements JSObject {}
+class GPUAdapterInfo {}
 
 extension GPUAdapterInfoExtension on GPUAdapterInfo {
   external String get vendor;
@@ -143,7 +143,7 @@
 
 @JS('GPU')
 @staticInterop
-class GPU implements JSObject {}
+class GPU {}
 
 extension GPUExtension on GPU {
   external JSPromise requestAdapter([GPURequestAdapterOptions options]);
@@ -154,7 +154,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPURequestAdapterOptions implements JSObject {
+class GPURequestAdapterOptions {
   external factory GPURequestAdapterOptions({
     GPUPowerPreference powerPreference,
     bool forceFallbackAdapter,
@@ -170,7 +170,7 @@
 
 @JS('GPUAdapter')
 @staticInterop
-class GPUAdapter implements JSObject {}
+class GPUAdapter {}
 
 extension GPUAdapterExtension on GPUAdapter {
   external JSPromise requestDevice([GPUDeviceDescriptor descriptor]);
@@ -245,7 +245,7 @@
 
 @JS('GPUBuffer')
 @staticInterop
-class GPUBuffer implements JSObject {}
+class GPUBuffer {}
 
 extension GPUBufferExtension on GPUBuffer {
   external JSPromise mapAsync(
@@ -316,7 +316,7 @@
 
 @JS('GPUTexture')
 @staticInterop
-class GPUTexture implements JSObject {}
+class GPUTexture {}
 
 extension GPUTextureExtension on GPUTexture {
   external GPUTextureView createView([GPUTextureViewDescriptor descriptor]);
@@ -380,7 +380,7 @@
 
 @JS('GPUTextureView')
 @staticInterop
-class GPUTextureView implements JSObject {}
+class GPUTextureView {}
 
 extension GPUTextureViewExtension on GPUTextureView {
   external set label(String value);
@@ -421,7 +421,7 @@
 
 @JS('GPUExternalTexture')
 @staticInterop
-class GPUExternalTexture implements JSObject {}
+class GPUExternalTexture {}
 
 extension GPUExternalTextureExtension on GPUExternalTexture {
   external set label(String value);
@@ -448,7 +448,7 @@
 
 @JS('GPUSampler')
 @staticInterop
-class GPUSampler implements JSObject {}
+class GPUSampler {}
 
 extension GPUSamplerExtension on GPUSampler {
   external set label(String value);
@@ -498,7 +498,7 @@
 
 @JS('GPUBindGroupLayout')
 @staticInterop
-class GPUBindGroupLayout implements JSObject {}
+class GPUBindGroupLayout {}
 
 extension GPUBindGroupLayoutExtension on GPUBindGroupLayout {
   external set label(String value);
@@ -521,7 +521,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUBindGroupLayoutEntry implements JSObject {
+class GPUBindGroupLayoutEntry {
   external factory GPUBindGroupLayoutEntry({
     required GPUIndex32 binding,
     required GPUShaderStageFlags visibility,
@@ -564,7 +564,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUBufferBindingLayout implements JSObject {
+class GPUBufferBindingLayout {
   external factory GPUBufferBindingLayout({
     GPUBufferBindingType type,
     bool hasDynamicOffset,
@@ -584,7 +584,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUSamplerBindingLayout implements JSObject {
+class GPUSamplerBindingLayout {
   external factory GPUSamplerBindingLayout({GPUSamplerBindingType type});
 }
 
@@ -596,7 +596,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUTextureBindingLayout implements JSObject {
+class GPUTextureBindingLayout {
   external factory GPUTextureBindingLayout({
     GPUTextureSampleType sampleType,
     GPUTextureViewDimension viewDimension,
@@ -616,7 +616,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUStorageTextureBindingLayout implements JSObject {
+class GPUStorageTextureBindingLayout {
   external factory GPUStorageTextureBindingLayout({
     GPUStorageTextureAccess access,
     required GPUTextureFormat format,
@@ -637,13 +637,13 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUExternalTextureBindingLayout implements JSObject {
+class GPUExternalTextureBindingLayout {
   external factory GPUExternalTextureBindingLayout();
 }
 
 @JS('GPUBindGroup')
 @staticInterop
-class GPUBindGroup implements JSObject {}
+class GPUBindGroup {}
 
 extension GPUBindGroupExtension on GPUBindGroup {
   external set label(String value);
@@ -670,7 +670,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUBindGroupEntry implements JSObject {
+class GPUBindGroupEntry {
   external factory GPUBindGroupEntry({
     required GPUIndex32 binding,
     required GPUBindingResource resource,
@@ -687,7 +687,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUBufferBinding implements JSObject {
+class GPUBufferBinding {
   external factory GPUBufferBinding({
     required GPUBuffer buffer,
     GPUSize64 offset,
@@ -706,7 +706,7 @@
 
 @JS('GPUPipelineLayout')
 @staticInterop
-class GPUPipelineLayout implements JSObject {}
+class GPUPipelineLayout {}
 
 extension GPUPipelineLayoutExtension on GPUPipelineLayout {
   external set label(String value);
@@ -728,7 +728,7 @@
 
 @JS('GPUShaderModule')
 @staticInterop
-class GPUShaderModule implements JSObject {}
+class GPUShaderModule {}
 
 extension GPUShaderModuleExtension on GPUShaderModule {
   external JSPromise getCompilationInfo();
@@ -759,7 +759,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUShaderModuleCompilationHint implements JSObject {
+class GPUShaderModuleCompilationHint {
   external factory GPUShaderModuleCompilationHint({JSAny layout});
 }
 
@@ -771,7 +771,7 @@
 
 @JS('GPUCompilationMessage')
 @staticInterop
-class GPUCompilationMessage implements JSObject {}
+class GPUCompilationMessage {}
 
 extension GPUCompilationMessageExtension on GPUCompilationMessage {
   external String get message;
@@ -784,7 +784,7 @@
 
 @JS('GPUCompilationInfo')
 @staticInterop
-class GPUCompilationInfo implements JSObject {}
+class GPUCompilationInfo {}
 
 extension GPUCompilationInfoExtension on GPUCompilationInfo {
   external JSArray get messages;
@@ -806,7 +806,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUPipelineErrorInit implements JSObject {
+class GPUPipelineErrorInit {
   external factory GPUPipelineErrorInit(
       {required GPUPipelineErrorReason reason});
 }
@@ -831,7 +831,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUProgrammableStage implements JSObject {
+class GPUProgrammableStage {
   external factory GPUProgrammableStage({
     required GPUShaderModule module,
     required String entryPoint,
@@ -850,7 +850,7 @@
 
 @JS('GPUComputePipeline')
 @staticInterop
-class GPUComputePipeline implements JSObject {}
+class GPUComputePipeline {}
 
 extension GPUComputePipelineExtension on GPUComputePipeline {
   external GPUBindGroupLayout getBindGroupLayout(int index);
@@ -874,7 +874,7 @@
 
 @JS('GPURenderPipeline')
 @staticInterop
-class GPURenderPipeline implements JSObject {}
+class GPURenderPipeline {}
 
 extension GPURenderPipelineExtension on GPURenderPipeline {
   external GPUBindGroupLayout getBindGroupLayout(int index);
@@ -911,7 +911,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUPrimitiveState implements JSObject {
+class GPUPrimitiveState {
   external factory GPUPrimitiveState({
     GPUPrimitiveTopology topology,
     GPUIndexFormat stripIndexFormat,
@@ -937,7 +937,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUMultisampleState implements JSObject {
+class GPUMultisampleState {
   external factory GPUMultisampleState({
     GPUSize32 count,
     GPUSampleMask mask,
@@ -969,7 +969,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUColorTargetState implements JSObject {
+class GPUColorTargetState {
   external factory GPUColorTargetState({
     required GPUTextureFormat format,
     GPUBlendState blend,
@@ -989,7 +989,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUBlendState implements JSObject {
+class GPUBlendState {
   external factory GPUBlendState({
     required GPUBlendComponent color,
     required GPUBlendComponent alpha,
@@ -1019,7 +1019,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUBlendComponent implements JSObject {
+class GPUBlendComponent {
   external factory GPUBlendComponent({
     GPUBlendOperation operation,
     GPUBlendFactor srcFactor,
@@ -1039,7 +1039,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUDepthStencilState implements JSObject {
+class GPUDepthStencilState {
   external factory GPUDepthStencilState({
     required GPUTextureFormat format,
     required bool depthWriteEnabled,
@@ -1080,7 +1080,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUStencilFaceState implements JSObject {
+class GPUStencilFaceState {
   external factory GPUStencilFaceState({
     GPUCompareFunction compare,
     GPUStencilOperation failOp,
@@ -1115,7 +1115,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUVertexBufferLayout implements JSObject {
+class GPUVertexBufferLayout {
   external factory GPUVertexBufferLayout({
     required GPUSize64 arrayStride,
     GPUVertexStepMode stepMode,
@@ -1135,7 +1135,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUVertexAttribute implements JSObject {
+class GPUVertexAttribute {
   external factory GPUVertexAttribute({
     required GPUVertexFormat format,
     required GPUSize64 offset,
@@ -1155,7 +1155,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUImageDataLayout implements JSObject {
+class GPUImageDataLayout {
   external factory GPUImageDataLayout({
     GPUSize64 offset,
     GPUSize32 bytesPerRow,
@@ -1187,7 +1187,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUImageCopyTexture implements JSObject {
+class GPUImageCopyTexture {
   external factory GPUImageCopyTexture({
     required GPUTexture texture,
     GPUIntegerCoordinate mipLevel,
@@ -1227,7 +1227,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUImageCopyExternalImage implements JSObject {
+class GPUImageCopyExternalImage {
   external factory GPUImageCopyExternalImage({
     required GPUImageCopyExternalImageSource source,
     GPUOrigin2D origin,
@@ -1246,7 +1246,7 @@
 
 @JS('GPUCommandBuffer')
 @staticInterop
-class GPUCommandBuffer implements JSObject {}
+class GPUCommandBuffer {}
 
 extension GPUCommandBufferExtension on GPUCommandBuffer {
   external set label(String value);
@@ -1262,7 +1262,7 @@
 
 @JS('GPUCommandEncoder')
 @staticInterop
-class GPUCommandEncoder implements JSObject {}
+class GPUCommandEncoder {}
 
 extension GPUCommandEncoderExtension on GPUCommandEncoder {
   external GPURenderPassEncoder beginRenderPass(
@@ -1324,7 +1324,7 @@
 
 @JS('GPUComputePassEncoder')
 @staticInterop
-class GPUComputePassEncoder implements JSObject {}
+class GPUComputePassEncoder {}
 
 extension GPUComputePassEncoderExtension on GPUComputePassEncoder {
   external void setPipeline(GPUComputePipeline pipeline);
@@ -1355,7 +1355,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUComputePassTimestampWrites implements JSObject {
+class GPUComputePassTimestampWrites {
   external factory GPUComputePassTimestampWrites({
     required GPUQuerySet querySet,
     GPUSize32 beginningOfPassWriteIndex,
@@ -1388,7 +1388,7 @@
 
 @JS('GPURenderPassEncoder')
 @staticInterop
-class GPURenderPassEncoder implements JSObject {}
+class GPURenderPassEncoder {}
 
 extension GPURenderPassEncoderExtension on GPURenderPassEncoder {
   external void setViewport(
@@ -1462,7 +1462,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPURenderPassTimestampWrites implements JSObject {
+class GPURenderPassTimestampWrites {
   external factory GPURenderPassTimestampWrites({
     required GPUQuerySet querySet,
     GPUSize32 beginningOfPassWriteIndex,
@@ -1510,7 +1510,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPURenderPassColorAttachment implements JSObject {
+class GPURenderPassColorAttachment {
   external factory GPURenderPassColorAttachment({
     required GPUTextureView view,
     GPUTextureView resolveTarget,
@@ -1537,7 +1537,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPURenderPassDepthStencilAttachment implements JSObject {
+class GPURenderPassDepthStencilAttachment {
   external factory GPURenderPassDepthStencilAttachment({
     required GPUTextureView view,
     num depthClearValue,
@@ -1595,7 +1595,7 @@
 
 @JS('GPURenderBundle')
 @staticInterop
-class GPURenderBundle implements JSObject {}
+class GPURenderBundle {}
 
 extension GPURenderBundleExtension on GPURenderBundle {
   external set label(String value);
@@ -1611,7 +1611,7 @@
 
 @JS('GPURenderBundleEncoder')
 @staticInterop
-class GPURenderBundleEncoder implements JSObject {}
+class GPURenderBundleEncoder {}
 
 extension GPURenderBundleEncoderExtension on GPURenderBundleEncoder {
   external GPURenderBundle finish([GPURenderBundleDescriptor descriptor]);
@@ -1690,7 +1690,7 @@
 
 @JS('GPUQueue')
 @staticInterop
-class GPUQueue implements JSObject {}
+class GPUQueue {}
 
 extension GPUQueueExtension on GPUQueue {
   external void submit(JSArray commandBuffers);
@@ -1719,7 +1719,7 @@
 
 @JS('GPUQuerySet')
 @staticInterop
-class GPUQuerySet implements JSObject {}
+class GPUQuerySet {}
 
 extension GPUQuerySetExtension on GPUQuerySet {
   external void destroy();
@@ -1748,7 +1748,7 @@
 
 @JS('GPUCanvasContext')
 @staticInterop
-class GPUCanvasContext implements JSObject {}
+class GPUCanvasContext {}
 
 extension GPUCanvasContextExtension on GPUCanvasContext {
   external void configure(GPUCanvasConfiguration configuration);
@@ -1760,7 +1760,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUCanvasConfiguration implements JSObject {
+class GPUCanvasConfiguration {
   external factory GPUCanvasConfiguration({
     required GPUDevice device,
     required GPUTextureFormat format,
@@ -1788,7 +1788,7 @@
 
 @JS('GPUDeviceLostInfo')
 @staticInterop
-class GPUDeviceLostInfo implements JSObject {}
+class GPUDeviceLostInfo {}
 
 extension GPUDeviceLostInfoExtension on GPUDeviceLostInfo {
   external GPUDeviceLostReason get reason;
@@ -1797,7 +1797,7 @@
 
 @JS('GPUError')
 @staticInterop
-class GPUError implements JSObject {}
+class GPUError {}
 
 extension GPUErrorExtension on GPUError {
   external String get message;
@@ -1849,7 +1849,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUColorDict implements JSObject {
+class GPUColorDict {
   external factory GPUColorDict({
     required num r,
     required num g,
@@ -1872,7 +1872,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUOrigin2DDict implements JSObject {
+class GPUOrigin2DDict {
   external factory GPUOrigin2DDict({
     GPUIntegerCoordinate x,
     GPUIntegerCoordinate y,
@@ -1889,7 +1889,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUOrigin3DDict implements JSObject {
+class GPUOrigin3DDict {
   external factory GPUOrigin3DDict({
     GPUIntegerCoordinate x,
     GPUIntegerCoordinate y,
@@ -1909,7 +1909,7 @@
 @JS()
 @staticInterop
 @anonymous
-class GPUExtent3DDict implements JSObject {
+class GPUExtent3DDict {
   external factory GPUExtent3DDict({
     required GPUIntegerCoordinate width,
     GPUIntegerCoordinate height,
diff --git a/lib/src/dom/webhid.dart b/lib/src/dom/webhid.dart
index 3f723cd..26b8916 100644
--- a/lib/src/dom/webhid.dart
+++ b/lib/src/dom/webhid.dart
@@ -26,7 +26,7 @@
 @JS()
 @staticInterop
 @anonymous
-class HIDDeviceRequestOptions implements JSObject {
+class HIDDeviceRequestOptions {
   external factory HIDDeviceRequestOptions({
     required JSArray filters,
     JSArray exclusionFilters,
@@ -43,7 +43,7 @@
 @JS()
 @staticInterop
 @anonymous
-class HIDDeviceFilter implements JSObject {
+class HIDDeviceFilter {
   external factory HIDDeviceFilter({
     int vendorId,
     int productId,
@@ -152,7 +152,7 @@
 @JS()
 @staticInterop
 @anonymous
-class HIDCollectionInfo implements JSObject {
+class HIDCollectionInfo {
   external factory HIDCollectionInfo({
     int usagePage,
     int usage,
@@ -184,7 +184,7 @@
 @JS()
 @staticInterop
 @anonymous
-class HIDReportInfo implements JSObject {
+class HIDReportInfo {
   external factory HIDReportInfo({
     int reportId,
     JSArray items,
@@ -201,7 +201,7 @@
 @JS()
 @staticInterop
 @anonymous
-class HIDReportItem implements JSObject {
+class HIDReportItem {
   external factory HIDReportItem({
     bool isAbsolute,
     bool isArray,
diff --git a/lib/src/dom/webidl.dart b/lib/src/dom/webidl.dart
index 3060b49..9d0bdea 100644
--- a/lib/src/dom/webidl.dart
+++ b/lib/src/dom/webidl.dart
@@ -11,7 +11,7 @@
 
 @JS('DOMException')
 @staticInterop
-class DOMException implements JSObject {
+class DOMException {
   external factory DOMException([
     String message,
     String name,
diff --git a/lib/src/dom/webmidi.dart b/lib/src/dom/webmidi.dart
index 1f405dc..fed1a47 100644
--- a/lib/src/dom/webmidi.dart
+++ b/lib/src/dom/webmidi.dart
@@ -28,7 +28,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MIDIOptions implements JSObject {
+class MIDIOptions {
   external factory MIDIOptions({
     bool sysex,
     bool software,
@@ -44,13 +44,13 @@
 
 @JS('MIDIInputMap')
 @staticInterop
-class MIDIInputMap implements JSObject {}
+class MIDIInputMap {}
 
 extension MIDIInputMapExtension on MIDIInputMap {}
 
 @JS('MIDIOutputMap')
 @staticInterop
-class MIDIOutputMap implements JSObject {}
+class MIDIOutputMap {}
 
 extension MIDIOutputMapExtension on MIDIOutputMap {}
 
diff --git a/lib/src/dom/webnn.dart b/lib/src/dom/webnn.dart
index c07c18d..ec5f146 100644
--- a/lib/src/dom/webnn.dart
+++ b/lib/src/dom/webnn.dart
@@ -28,7 +28,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLContextOptions implements JSObject {
+class MLContextOptions {
   external factory MLContextOptions({
     MLDeviceType deviceType,
     MLPowerPreference powerPreference,
@@ -44,7 +44,7 @@
 
 @JS('ML')
 @staticInterop
-class ML implements JSObject {}
+class ML {}
 
 extension MLExtension on ML {
   external JSPromise createContext([JSObject gpuDeviceOrOptions]);
@@ -53,12 +53,12 @@
 
 @JS('MLGraph')
 @staticInterop
-class MLGraph implements JSObject {}
+class MLGraph {}
 
 @JS()
 @staticInterop
 @anonymous
-class MLOperandDescriptor implements JSObject {
+class MLOperandDescriptor {
   external factory MLOperandDescriptor({
     required MLOperandType type,
     JSArray dimensions,
@@ -74,15 +74,15 @@
 
 @JS('MLOperand')
 @staticInterop
-class MLOperand implements JSObject {}
+class MLOperand {}
 
 @JS('MLActivation')
 @staticInterop
-class MLActivation implements JSObject {}
+class MLActivation {}
 
 @JS('MLContext')
 @staticInterop
-class MLContext implements JSObject {}
+class MLContext {}
 
 extension MLContextExtension on MLContext {
   external void computeSync(
@@ -101,7 +101,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLComputeResult implements JSObject {
+class MLComputeResult {
   external factory MLComputeResult({
     MLNamedArrayBufferViews inputs,
     MLNamedArrayBufferViews outputs,
@@ -117,7 +117,7 @@
 
 @JS('MLCommandEncoder')
 @staticInterop
-class MLCommandEncoder implements JSObject {}
+class MLCommandEncoder {}
 
 extension MLCommandEncoderExtension on MLCommandEncoder {
   external void initializeGraph(MLGraph graph);
@@ -132,7 +132,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLBufferResourceView implements JSObject {
+class MLBufferResourceView {
   external factory MLBufferResourceView({
     required GPUBuffer resource,
     int offset,
@@ -151,7 +151,7 @@
 
 @JS('MLGraphBuilder')
 @staticInterop
-class MLGraphBuilder implements JSObject {
+class MLGraphBuilder {
   external factory MLGraphBuilder(MLContext context);
 }
 
@@ -392,7 +392,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLBatchNormalizationOptions implements JSObject {
+class MLBatchNormalizationOptions {
   external factory MLBatchNormalizationOptions({
     MLOperand scale,
     MLOperand bias,
@@ -418,7 +418,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLClampOptions implements JSObject {
+class MLClampOptions {
   external factory MLClampOptions({
     num minValue,
     num maxValue,
@@ -435,7 +435,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLConv2dOptions implements JSObject {
+class MLConv2dOptions {
   external factory MLConv2dOptions({
     JSArray padding,
     JSArray strides,
@@ -473,7 +473,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLConvTranspose2dOptions implements JSObject {
+class MLConvTranspose2dOptions {
   external factory MLConvTranspose2dOptions({
     JSArray padding,
     JSArray strides,
@@ -517,7 +517,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLEluOptions implements JSObject {
+class MLEluOptions {
   external factory MLEluOptions({num alpha});
 }
 
@@ -529,7 +529,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLGemmOptions implements JSObject {
+class MLGemmOptions {
   external factory MLGemmOptions({
     MLOperand c,
     num alpha,
@@ -555,7 +555,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLGruOptions implements JSObject {
+class MLGruOptions {
   external factory MLGruOptions({
     MLOperand bias,
     MLOperand recurrentBias,
@@ -590,7 +590,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLGruCellOptions implements JSObject {
+class MLGruCellOptions {
   external factory MLGruCellOptions({
     MLOperand bias,
     MLOperand recurrentBias,
@@ -616,7 +616,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLHardSigmoidOptions implements JSObject {
+class MLHardSigmoidOptions {
   external factory MLHardSigmoidOptions({
     num alpha,
     num beta,
@@ -633,7 +633,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLInstanceNormalizationOptions implements JSObject {
+class MLInstanceNormalizationOptions {
   external factory MLInstanceNormalizationOptions({
     MLOperand scale,
     MLOperand bias,
@@ -657,7 +657,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLLeakyReluOptions implements JSObject {
+class MLLeakyReluOptions {
   external factory MLLeakyReluOptions({num alpha});
 }
 
@@ -669,7 +669,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLLinearOptions implements JSObject {
+class MLLinearOptions {
   external factory MLLinearOptions({
     num alpha,
     num beta,
@@ -686,7 +686,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLLstmOptions implements JSObject {
+class MLLstmOptions {
   external factory MLLstmOptions({
     MLOperand bias,
     MLOperand recurrentBias,
@@ -724,7 +724,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLLstmCellOptions implements JSObject {
+class MLLstmCellOptions {
   external factory MLLstmCellOptions({
     MLOperand bias,
     MLOperand recurrentBias,
@@ -750,7 +750,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLPadOptions implements JSObject {
+class MLPadOptions {
   external factory MLPadOptions({
     MLPaddingMode mode,
     num value,
@@ -767,7 +767,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLPool2dOptions implements JSObject {
+class MLPool2dOptions {
   external factory MLPool2dOptions({
     JSArray windowDimensions,
     JSArray padding,
@@ -802,7 +802,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLReduceOptions implements JSObject {
+class MLReduceOptions {
   external factory MLReduceOptions({
     JSArray axes,
     bool keepDimensions,
@@ -819,7 +819,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLResample2dOptions implements JSObject {
+class MLResample2dOptions {
   external factory MLResample2dOptions({
     MLInterpolationMode mode,
     JSArray scales,
@@ -842,7 +842,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLSoftplusOptions implements JSObject {
+class MLSoftplusOptions {
   external factory MLSoftplusOptions({num steepness});
 }
 
@@ -854,7 +854,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLSplitOptions implements JSObject {
+class MLSplitOptions {
   external factory MLSplitOptions({int axis});
 }
 
@@ -866,7 +866,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLSqueezeOptions implements JSObject {
+class MLSqueezeOptions {
   external factory MLSqueezeOptions({JSArray axes});
 }
 
@@ -878,7 +878,7 @@
 @JS()
 @staticInterop
 @anonymous
-class MLTransposeOptions implements JSObject {
+class MLTransposeOptions {
   external factory MLTransposeOptions({JSArray permutation});
 }
 
diff --git a/lib/src/dom/webrtc.dart b/lib/src/dom/webrtc.dart
index d083b07..2f956f0 100644
--- a/lib/src/dom/webrtc.dart
+++ b/lib/src/dom/webrtc.dart
@@ -45,7 +45,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCConfiguration implements JSObject {
+class RTCConfiguration {
   external factory RTCConfiguration({
     String peerIdentity,
     JSArray iceServers,
@@ -77,7 +77,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCIceServer implements JSObject {
+class RTCIceServer {
   external factory RTCIceServer({
     required JSAny urls,
     String username,
@@ -97,7 +97,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCOfferAnswerOptions implements JSObject {
+class RTCOfferAnswerOptions {
   external factory RTCOfferAnswerOptions();
 }
 
@@ -225,7 +225,7 @@
 
 @JS('RTCSessionDescription')
 @staticInterop
-class RTCSessionDescription implements JSObject {
+class RTCSessionDescription {
   external factory RTCSessionDescription(
       RTCSessionDescriptionInit descriptionInitDict);
 }
@@ -239,7 +239,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCSessionDescriptionInit implements JSObject {
+class RTCSessionDescriptionInit {
   external factory RTCSessionDescriptionInit({
     required RTCSdpType type,
     String sdp,
@@ -256,7 +256,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCLocalSessionDescriptionInit implements JSObject {
+class RTCLocalSessionDescriptionInit {
   external factory RTCLocalSessionDescriptionInit({
     RTCSdpType type,
     String sdp,
@@ -273,7 +273,7 @@
 
 @JS('RTCIceCandidate')
 @staticInterop
-class RTCIceCandidate implements JSObject {
+class RTCIceCandidate {
   external factory RTCIceCandidate([RTCIceCandidateInit candidateInitDict]);
 }
 
@@ -300,7 +300,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCIceCandidateInit implements JSObject {
+class RTCIceCandidateInit {
   external factory RTCIceCandidateInit({
     String candidate,
     String? sdpMid,
@@ -400,7 +400,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCCertificateExpiration implements JSObject {
+class RTCCertificateExpiration {
   external factory RTCCertificateExpiration({int expires});
 }
 
@@ -411,7 +411,7 @@
 
 @JS('RTCCertificate')
 @staticInterop
-class RTCCertificate implements JSObject {}
+class RTCCertificate {}
 
 extension RTCCertificateExtension on RTCCertificate {
   external JSArray getFingerprints();
@@ -421,7 +421,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCRtpTransceiverInit implements JSObject {
+class RTCRtpTransceiverInit {
   external factory RTCRtpTransceiverInit({
     RTCRtpTransceiverDirection direction,
     JSArray streams,
@@ -440,7 +440,7 @@
 
 @JS('RTCRtpSender')
 @staticInterop
-class RTCRtpSender implements JSObject {
+class RTCRtpSender {
   external static RTCRtpCapabilities? getCapabilities(String kind);
 }
 
@@ -464,7 +464,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCRtpParameters implements JSObject {
+class RTCRtpParameters {
   external factory RTCRtpParameters({
     required JSArray headerExtensions,
     required RTCRtcpParameters rtcp,
@@ -511,7 +511,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCRtpCodingParameters implements JSObject {
+class RTCRtpCodingParameters {
   external factory RTCRtpCodingParameters({String rid});
 }
 
@@ -555,7 +555,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCRtcpParameters implements JSObject {
+class RTCRtcpParameters {
   external factory RTCRtcpParameters({
     String cname,
     bool reducedSize,
@@ -572,7 +572,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCRtpHeaderExtensionParameters implements JSObject {
+class RTCRtpHeaderExtensionParameters {
   external factory RTCRtpHeaderExtensionParameters({
     required String uri,
     required int id,
@@ -593,7 +593,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCRtpCodec implements JSObject {
+class RTCRtpCodec {
   external factory RTCRtpCodec({
     required String mimeType,
     required int clockRate,
@@ -628,7 +628,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCRtpCapabilities implements JSObject {
+class RTCRtpCapabilities {
   external factory RTCRtpCapabilities({
     required JSArray codecs,
     required JSArray headerExtensions,
@@ -652,7 +652,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCRtpHeaderExtensionCapability implements JSObject {
+class RTCRtpHeaderExtensionCapability {
   external factory RTCRtpHeaderExtensionCapability({required String uri});
 }
 
@@ -665,13 +665,13 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCSetParameterOptions implements JSObject {
+class RTCSetParameterOptions {
   external factory RTCSetParameterOptions();
 }
 
 @JS('RTCRtpReceiver')
 @staticInterop
-class RTCRtpReceiver implements JSObject {
+class RTCRtpReceiver {
   external static RTCRtpCapabilities? getCapabilities(String kind);
 }
 
@@ -689,7 +689,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCRtpContributingSource implements JSObject {
+class RTCRtpContributingSource {
   external factory RTCRtpContributingSource({
     required DOMHighResTimeStamp timestamp,
     required int source,
@@ -718,7 +718,7 @@
 
 @JS('RTCRtpTransceiver')
 @staticInterop
-class RTCRtpTransceiver implements JSObject {}
+class RTCRtpTransceiver {}
 
 extension RTCRtpTransceiverExtension on RTCRtpTransceiver {
   external void stop();
@@ -748,7 +748,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCDtlsFingerprint implements JSObject {
+class RTCDtlsFingerprint {
   external factory RTCDtlsFingerprint({
     String algorithm,
     String value,
@@ -800,7 +800,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCIceParameters implements JSObject {
+class RTCIceParameters {
   external factory RTCIceParameters({
     bool iceLite,
     String usernameFragment,
@@ -820,7 +820,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCIceCandidatePair implements JSObject {
+class RTCIceCandidatePair {
   external factory RTCIceCandidatePair({
     RTCIceCandidate local,
     RTCIceCandidate remote,
@@ -924,7 +924,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCDataChannelInit implements JSObject {
+class RTCDataChannelInit {
   external factory RTCDataChannelInit({
     RTCPriorityType priority,
     bool ordered,
@@ -1021,14 +1021,14 @@
 
 @JS('RTCStatsReport')
 @staticInterop
-class RTCStatsReport implements JSObject {}
+class RTCStatsReport {}
 
 extension RTCStatsReportExtension on RTCStatsReport {}
 
 @JS()
 @staticInterop
 @anonymous
-class RTCStats implements JSObject {
+class RTCStats {
   external factory RTCStats({
     required DOMHighResTimeStamp timestamp,
     required RTCStatsType type,
@@ -1066,7 +1066,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCErrorInit implements JSObject {
+class RTCErrorInit {
   external factory RTCErrorInit({
     int httpRequestStatusCode,
     required RTCErrorDetailType errorDetail,
diff --git a/lib/src/dom/webrtc_encoded_transform.dart b/lib/src/dom/webrtc_encoded_transform.dart
index 40719dd..aeff22d 100644
--- a/lib/src/dom/webrtc_encoded_transform.dart
+++ b/lib/src/dom/webrtc_encoded_transform.dart
@@ -19,7 +19,7 @@
 @JS()
 @staticInterop
 @anonymous
-class SFrameTransformOptions implements JSObject {
+class SFrameTransformOptions {
   external factory SFrameTransformOptions({SFrameTransformRole role});
 }
 
@@ -84,7 +84,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCEncodedVideoFrameMetadata implements JSObject {
+class RTCEncodedVideoFrameMetadata {
   external factory RTCEncodedVideoFrameMetadata({
     int frameId,
     JSArray dependencies,
@@ -128,7 +128,7 @@
 
 @JS('RTCEncodedVideoFrame')
 @staticInterop
-class RTCEncodedVideoFrame implements JSObject {}
+class RTCEncodedVideoFrame {}
 
 extension RTCEncodedVideoFrameExtension on RTCEncodedVideoFrame {
   external RTCEncodedVideoFrameMetadata getMetadata();
@@ -140,7 +140,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCEncodedAudioFrameMetadata implements JSObject {
+class RTCEncodedAudioFrameMetadata {
   external factory RTCEncodedAudioFrameMetadata({
     int synchronizationSource,
     int payloadType,
@@ -166,7 +166,7 @@
 
 @JS('RTCEncodedAudioFrame')
 @staticInterop
-class RTCEncodedAudioFrame implements JSObject {}
+class RTCEncodedAudioFrame {}
 
 extension RTCEncodedAudioFrameExtension on RTCEncodedAudioFrame {
   external RTCEncodedAudioFrameMetadata getMetadata();
@@ -184,7 +184,7 @@
 
 @JS('RTCRtpScriptTransformer')
 @staticInterop
-class RTCRtpScriptTransformer implements JSObject {}
+class RTCRtpScriptTransformer {}
 
 extension RTCRtpScriptTransformerExtension on RTCRtpScriptTransformer {
   external JSPromise generateKeyFrame([String rid]);
@@ -196,7 +196,7 @@
 
 @JS('RTCRtpScriptTransform')
 @staticInterop
-class RTCRtpScriptTransform implements JSObject {
+class RTCRtpScriptTransform {
   external factory RTCRtpScriptTransform(
     Worker worker, [
     JSAny? options,
diff --git a/lib/src/dom/webrtc_ice.dart b/lib/src/dom/webrtc_ice.dart
index 8cba0ee..30b667a 100644
--- a/lib/src/dom/webrtc_ice.dart
+++ b/lib/src/dom/webrtc_ice.dart
@@ -9,7 +9,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCIceGatherOptions implements JSObject {
+class RTCIceGatherOptions {
   external factory RTCIceGatherOptions({
     RTCIceTransportPolicy gatherPolicy,
     JSArray iceServers,
diff --git a/lib/src/dom/webrtc_identity.dart b/lib/src/dom/webrtc_identity.dart
index dd39bbf..5a4cf0d 100644
--- a/lib/src/dom/webrtc_identity.dart
+++ b/lib/src/dom/webrtc_identity.dart
@@ -21,7 +21,7 @@
 
 @JS('RTCIdentityProviderRegistrar')
 @staticInterop
-class RTCIdentityProviderRegistrar implements JSObject {}
+class RTCIdentityProviderRegistrar {}
 
 extension RTCIdentityProviderRegistrarExtension
     on RTCIdentityProviderRegistrar {
@@ -31,7 +31,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCIdentityProvider implements JSObject {
+class RTCIdentityProvider {
   external factory RTCIdentityProvider({
     required GenerateAssertionCallback generateAssertion,
     required ValidateAssertionCallback validateAssertion,
@@ -48,7 +48,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCIdentityAssertionResult implements JSObject {
+class RTCIdentityAssertionResult {
   external factory RTCIdentityAssertionResult({
     required RTCIdentityProviderDetails idp,
     required String assertion,
@@ -65,7 +65,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCIdentityProviderDetails implements JSObject {
+class RTCIdentityProviderDetails {
   external factory RTCIdentityProviderDetails({
     required String domain,
     String protocol,
@@ -82,7 +82,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCIdentityValidationResult implements JSObject {
+class RTCIdentityValidationResult {
   external factory RTCIdentityValidationResult({
     required String identity,
     required String contents,
@@ -99,7 +99,7 @@
 @JS()
 @staticInterop
 @anonymous
-class RTCIdentityProviderOptions implements JSObject {
+class RTCIdentityProviderOptions {
   external factory RTCIdentityProviderOptions({
     String protocol,
     String usernameHint,
@@ -118,7 +118,7 @@
 
 @JS('RTCIdentityAssertion')
 @staticInterop
-class RTCIdentityAssertion implements JSObject {
+class RTCIdentityAssertion {
   external factory RTCIdentityAssertion(
     String idp,
     String name,
diff --git a/lib/src/dom/webtransport.dart b/lib/src/dom/webtransport.dart
index 119279e..bbb4573 100644
--- a/lib/src/dom/webtransport.dart
+++ b/lib/src/dom/webtransport.dart
@@ -14,7 +14,7 @@
 
 @JS('WebTransportDatagramDuplexStream')
 @staticInterop
-class WebTransportDatagramDuplexStream implements JSObject {}
+class WebTransportDatagramDuplexStream {}
 
 extension WebTransportDatagramDuplexStreamExtension
     on WebTransportDatagramDuplexStream {
@@ -33,7 +33,7 @@
 
 @JS('WebTransport')
 @staticInterop
-class WebTransport implements JSObject {
+class WebTransport {
   external factory WebTransport(
     String url, [
     WebTransportOptions options,
@@ -60,7 +60,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WebTransportHash implements JSObject {
+class WebTransportHash {
   external factory WebTransportHash({
     String algorithm,
     BufferSource value,
@@ -77,7 +77,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WebTransportOptions implements JSObject {
+class WebTransportOptions {
   external factory WebTransportOptions({
     bool allowPooling,
     bool requireUnreliable,
@@ -100,7 +100,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WebTransportCloseInfo implements JSObject {
+class WebTransportCloseInfo {
   external factory WebTransportCloseInfo({
     int closeCode,
     String reason,
@@ -117,7 +117,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WebTransportSendStreamOptions implements JSObject {
+class WebTransportSendStreamOptions {
   external factory WebTransportSendStreamOptions({int? sendOrder});
 }
 
@@ -130,7 +130,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WebTransportConnectionStats implements JSObject {
+class WebTransportConnectionStats {
   external factory WebTransportConnectionStats({
     DOMHighResTimeStamp timestamp,
     int bytesSent,
@@ -177,7 +177,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WebTransportDatagramStats implements JSObject {
+class WebTransportDatagramStats {
   external factory WebTransportDatagramStats({
     DOMHighResTimeStamp timestamp,
     int expiredOutgoing,
@@ -210,7 +210,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WebTransportSendStreamStats implements JSObject {
+class WebTransportSendStreamStats {
   external factory WebTransportSendStreamStats({
     DOMHighResTimeStamp timestamp,
     int bytesWritten,
@@ -241,7 +241,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WebTransportReceiveStreamStats implements JSObject {
+class WebTransportReceiveStreamStats {
   external factory WebTransportReceiveStreamStats({
     DOMHighResTimeStamp timestamp,
     int bytesReceived,
@@ -261,7 +261,7 @@
 
 @JS('WebTransportBidirectionalStream')
 @staticInterop
-class WebTransportBidirectionalStream implements JSObject {}
+class WebTransportBidirectionalStream {}
 
 extension WebTransportBidirectionalStreamExtension
     on WebTransportBidirectionalStream {
@@ -286,7 +286,7 @@
 @JS()
 @staticInterop
 @anonymous
-class WebTransportErrorOptions implements JSObject {
+class WebTransportErrorOptions {
   external factory WebTransportErrorOptions({
     WebTransportErrorSource source,
     int? streamErrorCode,
diff --git a/lib/src/dom/webusb.dart b/lib/src/dom/webusb.dart
index 1bf891c..170cf31 100644
--- a/lib/src/dom/webusb.dart
+++ b/lib/src/dom/webusb.dart
@@ -18,7 +18,7 @@
 @JS()
 @staticInterop
 @anonymous
-class USBDeviceFilter implements JSObject {
+class USBDeviceFilter {
   external factory USBDeviceFilter({
     int vendorId,
     int productId,
@@ -47,7 +47,7 @@
 @JS()
 @staticInterop
 @anonymous
-class USBDeviceRequestOptions implements JSObject {
+class USBDeviceRequestOptions {
   external factory USBDeviceRequestOptions({
     required JSArray filters,
     JSArray exclusionFilters,
@@ -101,7 +101,7 @@
 
 @JS('USBInTransferResult')
 @staticInterop
-class USBInTransferResult implements JSObject {
+class USBInTransferResult {
   external factory USBInTransferResult(
     USBTransferStatus status, [
     JSDataView? data,
@@ -115,7 +115,7 @@
 
 @JS('USBOutTransferResult')
 @staticInterop
-class USBOutTransferResult implements JSObject {
+class USBOutTransferResult {
   external factory USBOutTransferResult(
     USBTransferStatus status, [
     int bytesWritten,
@@ -129,7 +129,7 @@
 
 @JS('USBIsochronousInTransferPacket')
 @staticInterop
-class USBIsochronousInTransferPacket implements JSObject {
+class USBIsochronousInTransferPacket {
   external factory USBIsochronousInTransferPacket(
     USBTransferStatus status, [
     JSDataView? data,
@@ -144,7 +144,7 @@
 
 @JS('USBIsochronousInTransferResult')
 @staticInterop
-class USBIsochronousInTransferResult implements JSObject {
+class USBIsochronousInTransferResult {
   external factory USBIsochronousInTransferResult(
     JSArray packets, [
     JSDataView? data,
@@ -159,7 +159,7 @@
 
 @JS('USBIsochronousOutTransferPacket')
 @staticInterop
-class USBIsochronousOutTransferPacket implements JSObject {
+class USBIsochronousOutTransferPacket {
   external factory USBIsochronousOutTransferPacket(
     USBTransferStatus status, [
     int bytesWritten,
@@ -174,7 +174,7 @@
 
 @JS('USBIsochronousOutTransferResult')
 @staticInterop
-class USBIsochronousOutTransferResult implements JSObject {
+class USBIsochronousOutTransferResult {
   external factory USBIsochronousOutTransferResult(JSArray packets);
 }
 
@@ -185,7 +185,7 @@
 
 @JS('USBDevice')
 @staticInterop
-class USBDevice implements JSObject {}
+class USBDevice {}
 
 extension USBDeviceExtension on USBDevice {
   external JSPromise open();
@@ -250,7 +250,7 @@
 @JS()
 @staticInterop
 @anonymous
-class USBControlTransferParameters implements JSObject {
+class USBControlTransferParameters {
   external factory USBControlTransferParameters({
     required USBRequestType requestType,
     required USBRecipient recipient,
@@ -276,7 +276,7 @@
 
 @JS('USBConfiguration')
 @staticInterop
-class USBConfiguration implements JSObject {
+class USBConfiguration {
   external factory USBConfiguration(
     USBDevice device,
     int configurationValue,
@@ -291,7 +291,7 @@
 
 @JS('USBInterface')
 @staticInterop
-class USBInterface implements JSObject {
+class USBInterface {
   external factory USBInterface(
     USBConfiguration configuration,
     int interfaceNumber,
@@ -307,7 +307,7 @@
 
 @JS('USBAlternateInterface')
 @staticInterop
-class USBAlternateInterface implements JSObject {
+class USBAlternateInterface {
   external factory USBAlternateInterface(
     USBInterface deviceInterface,
     int alternateSetting,
@@ -325,7 +325,7 @@
 
 @JS('USBEndpoint')
 @staticInterop
-class USBEndpoint implements JSObject {
+class USBEndpoint {
   external factory USBEndpoint(
     USBAlternateInterface alternate,
     int endpointNumber,
@@ -360,7 +360,7 @@
 @JS()
 @staticInterop
 @anonymous
-class AllowedUSBDevice implements JSObject {
+class AllowedUSBDevice {
   external factory AllowedUSBDevice({
     required int vendorId,
     required int productId,
@@ -380,7 +380,7 @@
 @JS()
 @staticInterop
 @anonymous
-class USBPermissionStorage implements JSObject {
+class USBPermissionStorage {
   external factory USBPermissionStorage({JSArray allowedDevices});
 }
 
diff --git a/lib/src/dom/webvtt.dart b/lib/src/dom/webvtt.dart
index b8a99e9..7100902 100644
--- a/lib/src/dom/webvtt.dart
+++ b/lib/src/dom/webvtt.dart
@@ -51,7 +51,7 @@
 
 @JS('VTTRegion')
 @staticInterop
-class VTTRegion implements JSObject {
+class VTTRegion {
   external factory VTTRegion();
 }
 
diff --git a/lib/src/dom/webxr.dart b/lib/src/dom/webxr.dart
index 9d6f742..d3d4b61 100644
--- a/lib/src/dom/webxr.dart
+++ b/lib/src/dom/webxr.dart
@@ -47,7 +47,7 @@
 @JS()
 @staticInterop
 @anonymous
-class XRSessionInit implements JSObject {
+class XRSessionInit {
   external factory XRSessionInit({
     XRDepthStateInit depthSensing,
     XRDOMOverlayInit? domOverlay,
@@ -123,7 +123,7 @@
 @JS()
 @staticInterop
 @anonymous
-class XRRenderStateInit implements JSObject {
+class XRRenderStateInit {
   external factory XRRenderStateInit({
     num depthNear,
     num depthFar,
@@ -148,7 +148,7 @@
 
 @JS('XRRenderState')
 @staticInterop
-class XRRenderState implements JSObject {}
+class XRRenderState {}
 
 extension XRRenderStateExtension on XRRenderState {
   external num get depthNear;
@@ -160,7 +160,7 @@
 
 @JS('XRFrame')
 @staticInterop
-class XRFrame implements JSObject {}
+class XRFrame {}
 
 extension XRFrameExtension on XRFrame {
   external JSPromise createAnchor(
@@ -221,7 +221,7 @@
 
 @JS('XRView')
 @staticInterop
-class XRView implements JSObject {}
+class XRView {}
 
 extension XRViewExtension on XRView {
   external void requestViewportScale(num? scale);
@@ -235,7 +235,7 @@
 
 @JS('XRViewport')
 @staticInterop
-class XRViewport implements JSObject {}
+class XRViewport {}
 
 extension XRViewportExtension on XRViewport {
   external int get x;
@@ -246,7 +246,7 @@
 
 @JS('XRRigidTransform')
 @staticInterop
-class XRRigidTransform implements JSObject {
+class XRRigidTransform {
   external factory XRRigidTransform([
     DOMPointInit position,
     DOMPointInit orientation,
@@ -262,7 +262,7 @@
 
 @JS('XRPose')
 @staticInterop
-class XRPose implements JSObject {}
+class XRPose {}
 
 extension XRPoseExtension on XRPose {
   external XRRigidTransform get transform;
@@ -281,7 +281,7 @@
 
 @JS('XRInputSource')
 @staticInterop
-class XRInputSource implements JSObject {}
+class XRInputSource {}
 
 extension XRInputSourceExtension on XRInputSource {
   external Gamepad? get gamepad;
@@ -295,7 +295,7 @@
 
 @JS('XRInputSourceArray')
 @staticInterop
-class XRInputSourceArray implements JSObject {}
+class XRInputSourceArray {}
 
 extension XRInputSourceArrayExtension on XRInputSourceArray {
   external int get length;
@@ -308,7 +308,7 @@
 @JS()
 @staticInterop
 @anonymous
-class XRWebGLLayerInit implements JSObject {
+class XRWebGLLayerInit {
   external factory XRWebGLLayerInit({
     bool antialias,
     bool depth,
diff --git a/lib/src/dom/webxr_depth_sensing.dart b/lib/src/dom/webxr_depth_sensing.dart
index ec1b916..2e4d96b 100644
--- a/lib/src/dom/webxr_depth_sensing.dart
+++ b/lib/src/dom/webxr_depth_sensing.dart
@@ -13,7 +13,7 @@
 @JS()
 @staticInterop
 @anonymous
-class XRDepthStateInit implements JSObject {
+class XRDepthStateInit {
   external factory XRDepthStateInit({
     required JSArray usagePreference,
     required JSArray dataFormatPreference,
@@ -29,7 +29,7 @@
 
 @JS('XRDepthInformation')
 @staticInterop
-class XRDepthInformation implements JSObject {}
+class XRDepthInformation {}
 
 extension XRDepthInformationExtension on XRDepthInformation {
   external int get width;
diff --git a/lib/src/dom/webxr_dom_overlays.dart b/lib/src/dom/webxr_dom_overlays.dart
index f1bdbca..f357fde 100644
--- a/lib/src/dom/webxr_dom_overlays.dart
+++ b/lib/src/dom/webxr_dom_overlays.dart
@@ -11,7 +11,7 @@
 @JS()
 @staticInterop
 @anonymous
-class XRDOMOverlayInit implements JSObject {
+class XRDOMOverlayInit {
   external factory XRDOMOverlayInit({required Element root});
 }
 
@@ -23,7 +23,7 @@
 @JS()
 @staticInterop
 @anonymous
-class XRDOMOverlayState implements JSObject {
+class XRDOMOverlayState {
   external factory XRDOMOverlayState({XRDOMOverlayType type});
 }
 
diff --git a/lib/src/dom/webxr_hand_input.dart b/lib/src/dom/webxr_hand_input.dart
index 011a100..5d1a39f 100644
--- a/lib/src/dom/webxr_hand_input.dart
+++ b/lib/src/dom/webxr_hand_input.dart
@@ -10,7 +10,7 @@
 
 @JS('XRHand')
 @staticInterop
-class XRHand implements JSObject {}
+class XRHand {}
 
 extension XRHandExtension on XRHand {
   external XRJointSpace get(XRHandJoint key);
diff --git a/lib/src/dom/webxr_hit_test.dart b/lib/src/dom/webxr_hit_test.dart
index 7f6efc8..0e9488a 100644
--- a/lib/src/dom/webxr_hit_test.dart
+++ b/lib/src/dom/webxr_hit_test.dart
@@ -12,7 +12,7 @@
 @JS()
 @staticInterop
 @anonymous
-class XRHitTestOptionsInit implements JSObject {
+class XRHitTestOptionsInit {
   external factory XRHitTestOptionsInit({
     required XRSpace space,
     JSArray entityTypes,
@@ -32,7 +32,7 @@
 @JS()
 @staticInterop
 @anonymous
-class XRTransientInputHitTestOptionsInit implements JSObject {
+class XRTransientInputHitTestOptionsInit {
   external factory XRTransientInputHitTestOptionsInit({
     required String profile,
     JSArray entityTypes,
@@ -52,7 +52,7 @@
 
 @JS('XRHitTestSource')
 @staticInterop
-class XRHitTestSource implements JSObject {}
+class XRHitTestSource {}
 
 extension XRHitTestSourceExtension on XRHitTestSource {
   external void cancel();
@@ -60,7 +60,7 @@
 
 @JS('XRTransientInputHitTestSource')
 @staticInterop
-class XRTransientInputHitTestSource implements JSObject {}
+class XRTransientInputHitTestSource {}
 
 extension XRTransientInputHitTestSourceExtension
     on XRTransientInputHitTestSource {
@@ -69,7 +69,7 @@
 
 @JS('XRHitTestResult')
 @staticInterop
-class XRHitTestResult implements JSObject {}
+class XRHitTestResult {}
 
 extension XRHitTestResultExtension on XRHitTestResult {
   external JSPromise createAnchor();
@@ -78,7 +78,7 @@
 
 @JS('XRTransientInputHitTestResult')
 @staticInterop
-class XRTransientInputHitTestResult implements JSObject {}
+class XRTransientInputHitTestResult {}
 
 extension XRTransientInputHitTestResultExtension
     on XRTransientInputHitTestResult {
@@ -89,7 +89,7 @@
 @JS()
 @staticInterop
 @anonymous
-class XRRayDirectionInit implements JSObject {
+class XRRayDirectionInit {
   external factory XRRayDirectionInit({
     num x,
     num y,
@@ -111,7 +111,7 @@
 
 @JS('XRRay')
 @staticInterop
-class XRRay implements JSObject {
+class XRRay {
   external factory XRRay([
     JSObject originOrTransform,
     XRRayDirectionInit direction,
diff --git a/lib/src/dom/webxr_lighting_estimation.dart b/lib/src/dom/webxr_lighting_estimation.dart
index b64fe27..4922c27 100644
--- a/lib/src/dom/webxr_lighting_estimation.dart
+++ b/lib/src/dom/webxr_lighting_estimation.dart
@@ -23,7 +23,7 @@
 
 @JS('XRLightEstimate')
 @staticInterop
-class XRLightEstimate implements JSObject {}
+class XRLightEstimate {}
 
 extension XRLightEstimateExtension on XRLightEstimate {
   external JSFloat32Array get sphericalHarmonicsCoefficients;
@@ -34,7 +34,7 @@
 @JS()
 @staticInterop
 @anonymous
-class XRLightProbeInit implements JSObject {
+class XRLightProbeInit {
   external factory XRLightProbeInit({XRReflectionFormat reflectionFormat});
 }
 
diff --git a/lib/src/dom/webxrlayers.dart b/lib/src/dom/webxrlayers.dart
index 75e637f..78b63d4 100644
--- a/lib/src/dom/webxrlayers.dart
+++ b/lib/src/dom/webxrlayers.dart
@@ -123,7 +123,7 @@
 
 @JS('XRSubImage')
 @staticInterop
-class XRSubImage implements JSObject {}
+class XRSubImage {}
 
 extension XRSubImageExtension on XRSubImage {
   external XRViewport get viewport;
@@ -149,7 +149,7 @@
 @JS()
 @staticInterop
 @anonymous
-class XRProjectionLayerInit implements JSObject {
+class XRProjectionLayerInit {
   external factory XRProjectionLayerInit({
     XRTextureType textureType,
     GLenum colorFormat,
@@ -175,7 +175,7 @@
 @JS()
 @staticInterop
 @anonymous
-class XRLayerInit implements JSObject {
+class XRLayerInit {
   external factory XRLayerInit({
     required XRSpace space,
     GLenum colorFormat,
@@ -302,7 +302,7 @@
 
 @JS('XRWebGLBinding')
 @staticInterop
-class XRWebGLBinding implements JSObject {
+class XRWebGLBinding {
   external factory XRWebGLBinding(
     XRSession session,
     XRWebGLRenderingContext context,
@@ -335,7 +335,7 @@
 @JS()
 @staticInterop
 @anonymous
-class XRMediaLayerInit implements JSObject {
+class XRMediaLayerInit {
   external factory XRMediaLayerInit({
     required XRSpace space,
     XRLayerLayout layout,
@@ -423,7 +423,7 @@
 
 @JS('XRMediaBinding')
 @staticInterop
-class XRMediaBinding implements JSObject {
+class XRMediaBinding {
   external factory XRMediaBinding(XRSession session);
 }
 
diff --git a/lib/src/dom/xhr.dart b/lib/src/dom/xhr.dart
index 3f653df..236a74b 100644
--- a/lib/src/dom/xhr.dart
+++ b/lib/src/dom/xhr.dart
@@ -89,7 +89,7 @@
 
 @JS('FormData')
 @staticInterop
-class FormData implements JSObject {
+class FormData {
   external factory FormData([
     HTMLFormElement form,
     HTMLElement? submitter,
diff --git a/lib/src/helpers/events/providers.dart b/lib/src/helpers/events/providers.dart
index d730b38..7bcab0f 100644
--- a/lib/src/helpers/events/providers.dart
+++ b/lib/src/helpers/events/providers.dart
@@ -612,13 +612,14 @@
 }
 
 String _determineVisibilityChangeEventType(EventTarget e) {
-  if (e.typeofEquals('undefined')) {
+  final jsObject = e as JSObject;
+  if (jsObject.typeofEquals('undefined')) {
     return 'visibilitychange';
-  } else if (e.hasProperty('mozHidden'.toJS).toDart) {
+  } else if (jsObject.hasProperty('mozHidden'.toJS).toDart) {
     return 'mozvisibilitychange';
-  } else if (e.hasProperty('msHidden'.toJS).toDart) {
+  } else if (jsObject.hasProperty('msHidden'.toJS).toDart) {
     return 'msvisibilitychange';
-  } else if (e.hasProperty('webkitHidden'.toJS).toDart) {
+  } else if (jsObject.hasProperty('webkitHidden'.toJS).toDart) {
     return 'webkitvisibilitychange';
   }
   return 'visibilitychange';
diff --git a/pubspec.yaml b/pubspec.yaml
index ddaeb68..2d05feb 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,7 +1,7 @@
 name: web
 description: >-
   Lightweight DOM and JS bindings built around JS static interop.
-version: 0.3.1-dev
+version: 0.4.0
 
 repository: https://github.com/dart-lang/web
 
diff --git a/test/helpers_test.dart b/test/helpers_test.dart
index f30819e..26efef7 100644
--- a/test/helpers_test.dart
+++ b/test/helpers_test.dart
@@ -12,7 +12,7 @@
 
 void main() {
   test('instanceOfString works with package:web types', () {
-    final div = document.createElement('div');
+    final div = document.createElement('div') as JSObject;
 
     expect(div.instanceOfString('bob'), false);
     expect(div.instanceOfString('HTMLDivElement'), true);
diff --git a/test/smoke_test.dart b/test/smoke_test.dart
index b1f2978..41e0449 100644
--- a/test/smoke_test.dart
+++ b/test/smoke_test.dart
@@ -5,6 +5,8 @@
 @TestOn('browser')
 library;
 
+import 'dart:js_interop';
+
 import 'package:test/test.dart';
 import 'package:web/web.dart';
 
@@ -24,7 +26,7 @@
     final div = document.createElement('div') as HTMLDivElement;
     div.innerText = 'Hello World!';
     div.id = 'foo';
-    document.body!.append(div);
+    document.body!.append(div as JSObject);
     final found = document.getElementById('foo') as HTMLDivElement;
     expect(found.innerText, equals('Hello World!'));
     document.body!.removeChild(div);
diff --git a/tool/bindings_generator/translator.dart b/tool/bindings_generator/translator.dart
index 64d9da8..10b2ab6 100644
--- a/tool/bindings_generator/translator.dart
+++ b/tool/bindings_generator/translator.dart
@@ -777,10 +777,13 @@
       if (interfacelike.inheritance != null) interfacelike.inheritance!
     ];
 
-    // All non-namespace root classes must inherit from `JSObject`.
-    if (implements.isEmpty && !isNamespace) {
-      implements.add('JSObject');
-    }
+    // TODO(srujzs): Add back implements clause once we move to extension types.
+    // For now, we don't emit this so that `dart:js_interop` can move to
+    // extension types.
+    // // All non-namespace root classes must inherit from `JSObject`.
+    // if (implements.isEmpty && !isNamespace) {
+    //   implements.add('JSObject');
+    // }
     return [
       if (getterName != null)
         _topLevelGetter(_RawType(dartClassName, false), getterName),