// Generated by tools/moui/generate_core_derives. DO NOT EDIT.
//
// Source of truth: the `derive(...)` clauses and hand-written `pub impl`
// trait blocks in moui/core/paint.mbt, moui/core/semantics.mbt, and
// moui/core/theme.mbt. Regenerate with:
//   node scripts/generate-core-derives.mjs
// The lines below re-export derived trait methods across package
// boundaries; MoonBit implicit method promotion is deprecated, so the
// explicit `pub extend` declarations are required.

///|
pub extend Color with Debug::{to_repr}

///|
pub extend Color with Eq::{not_equal, equal}

///|
pub extend Color with ToJson::{to_json}

///|
pub extend FontFamily with Debug::{to_repr}

///|
pub extend FontFamily with Eq::{not_equal, equal}

///|
pub extend FontFamily with ToJson::{to_json}

///|
pub extend FontFamilyStack with Debug::{to_repr}

///|
pub extend FontFamilyStack with Eq::{not_equal, equal}

///|
pub extend FontFamilyStack with ToJson::{to_json}

///|
pub extend FontStyle with Debug::{to_repr}

///|
pub extend FontStyle with Eq::{not_equal, equal}

///|
pub extend FontStyle with ToJson::{to_json}

///|
pub extend FontVariation with Debug::{to_repr}

///|
pub extend FontVariation with Eq::{not_equal, equal}

///|
pub extend FontVariation with ToJson::{to_json}

///|
pub extend FontSpec with Debug::{to_repr}

///|
pub extend FontSpec with Eq::{not_equal, equal}

///|
pub extend FontSpec with ToJson::{to_json}

///|
pub extend TextAlign with Debug::{to_repr}

///|
pub extend TextAlign with Eq::{not_equal, equal}

///|
pub extend TextAlign with ToJson::{to_json}

///|
pub extend TextRun with Debug::{to_repr}

///|
pub extend TextRun with Eq::{not_equal, equal}

///|
pub extend TextRun with ToJson::{to_json}

///|
pub extend RoundedRect with Debug::{to_repr}

///|
pub extend RoundedRect with Eq::{not_equal, equal}

///|
pub extend RoundedRect with ToJson::{to_json}

///|
pub extend LinearGradientSpec with Debug::{to_repr}

///|
pub extend LinearGradientSpec with Eq::{not_equal, equal}

///|
pub extend LinearGradientSpec with ToJson::{to_json}

///|
pub extend RadialGradientSpec with Debug::{to_repr}

///|
pub extend RadialGradientSpec with Eq::{not_equal, equal}

///|
pub extend RadialGradientSpec with ToJson::{to_json}

///|
pub extend Brush with Debug::{to_repr}

///|
pub extend Brush with Eq::{not_equal, equal}

///|
pub extend Brush with ToJson::{to_json}

///|
pub extend ShadowSpec with Debug::{to_repr}

///|
pub extend ShadowSpec with Eq::{not_equal, equal}

///|
pub extend ShadowSpec with ToJson::{to_json}

///|
pub extend ImageRun with Debug::{to_repr}

///|
pub extend ImageRun with Eq::{not_equal, equal}

///|
pub extend ImageRun with ToJson::{to_json}

///|
pub extend Transform2D with Debug::{to_repr}

///|
pub extend Transform2D with Eq::{not_equal, equal}

///|
pub extend Transform2D with ToJson::{to_json}

///|
pub extend BlendMode with Debug::{to_repr}

///|
pub extend BlendMode with Eq::{not_equal, equal}

///|
pub extend BlendMode with ToJson::{to_json}

///|
pub extend LayerMask with Debug::{to_repr}

///|
pub extend LayerMask with Eq::{not_equal, equal}

///|
pub extend LayerMask with ToJson::{to_json}

///|
pub extend LayerSpec with Debug::{to_repr}

///|
pub extend LayerSpec with Eq::{not_equal, equal}

///|
pub extend LayerSpec with ToJson::{to_json}

///|
pub extend RetainedLayerSpec with Debug::{to_repr}

///|
pub extend RetainedLayerSpec with Eq::{not_equal, equal}

///|
pub extend RetainedLayerSpec with ToJson::{to_json}

///|
pub extend FilterEffect with Debug::{to_repr}

///|
pub extend FilterEffect with Eq::{not_equal, equal}

///|
pub extend FilterEffect with ToJson::{to_json}

///|
pub extend PathVerb with Debug::{to_repr}

///|
pub extend PathVerb with Eq::{not_equal, equal}

///|
pub extend PathVerb with ToJson::{to_json}

///|
pub extend PathSpec with Debug::{to_repr}

///|
pub extend PathSpec with Eq::{not_equal, equal}

///|
pub extend PathSpec with ToJson::{to_json}

///|
pub extend ShaderEffectSpec with Debug::{to_repr}

///|
pub extend ShaderEffectSpec with Eq::{not_equal, equal}

///|
pub extend ShaderEffectSpec with ToJson::{to_json}

///|
pub extend DrawCommand with Debug::{to_repr}

///|
pub extend DrawCommand with Eq::{not_equal, equal}

///|
pub extend DrawCommand with ToJson::{to_json}

///|
pub extend SemanticsRole with Debug::{to_repr}

///|
pub extend SemanticsRole with Eq::{not_equal, equal}

///|
pub extend SemanticsRole with ToJson::{to_json}

///|
pub extend SemanticId with Debug::{to_repr}

///|
pub extend SemanticId with Eq::{not_equal, equal}

///|
pub extend SemanticId with ToJson::{to_json}

///|
pub extend SemanticId with Compare::{op_lt, op_le, op_ge, compare, op_gt}

///|
pub extend SemanticId with Hash::{hash, hash_combine}

///|
pub extend SemanticsNodeId with Debug::{to_repr}

///|
pub extend SemanticsNodeId with Eq::{not_equal, equal}

///|
pub extend SemanticsNodeId with ToJson::{to_json}

///|
pub extend SemanticsNodeId with Compare::{op_lt, op_le, op_ge, compare, op_gt}

///|
pub extend SemanticsNodeId with Hash::{hash, hash_combine}

///|
pub extend SemanticsGeneration with Debug::{to_repr}

///|
pub extend SemanticsGeneration with Eq::{not_equal, equal}

///|
pub extend SemanticsGeneration with ToJson::{to_json}

///|
pub extend SemanticsGeneration with Compare::{
  op_lt,
  op_le,
  op_ge,
  compare,
  op_gt,
}

///|
pub extend SemanticsGeneration with Hash::{hash, hash_combine}

///|
pub extend SemanticsActionKind with Debug::{to_repr}

///|
pub extend SemanticsActionKind with Eq::{not_equal, equal}

///|
pub extend SemanticsActionKind with ToJson::{to_json}

///|
pub extend SemanticsScrollDirection with Debug::{to_repr}

///|
pub extend SemanticsScrollDirection with Eq::{not_equal, equal}

///|
pub extend SemanticsScrollDirection with ToJson::{to_json}

///|
pub extend SemanticsAction with Debug::{to_repr}

///|
pub extend SemanticsAction with Eq::{not_equal, equal}

///|
pub extend SemanticsAction with ToJson::{to_json}

///|
pub extend SemanticsCheckedState with Debug::{to_repr}

///|
pub extend SemanticsCheckedState with Eq::{not_equal, equal}

///|
pub extend SemanticsCheckedState with ToJson::{to_json}

///|
pub extend SemanticsLive with Debug::{to_repr}

///|
pub extend SemanticsLive with Eq::{not_equal, equal}

///|
pub extend SemanticsLive with ToJson::{to_json}

///|
pub extend SemanticsNumericValue with Debug::{to_repr}

///|
pub extend SemanticsNumericValue with Eq::{not_equal, equal}

///|
pub extend SemanticsNumericValue with ToJson::{to_json}

///|
pub extend SemanticsTextValue with Debug::{to_repr}

///|
pub extend SemanticsTextValue with Eq::{not_equal, equal}

///|
pub extend SemanticsTextValue with ToJson::{to_json}

///|
pub extend SemanticsCollectionInfo with Debug::{to_repr}

///|
pub extend SemanticsCollectionInfo with Eq::{not_equal, equal}

///|
pub extend SemanticsCollectionInfo with ToJson::{to_json}

///|
pub extend SemanticsRelationsDeclaration with Debug::{to_repr}

///|
pub extend SemanticsRelationsDeclaration with Eq::{not_equal, equal}

///|
pub extend SemanticsRelationsDeclaration with ToJson::{to_json}

///|
pub extend SemanticsRelationKind with Debug::{to_repr}

///|
pub extend SemanticsRelationKind with Eq::{not_equal, equal}

///|
pub extend SemanticsRelationKind with ToJson::{to_json}

///|
pub extend SemanticsRelations with Debug::{to_repr}

///|
pub extend SemanticsRelations with Eq::{not_equal, equal}

///|
pub extend SemanticsRelations with ToJson::{to_json}

///|
pub extend SemanticsComposition with Debug::{to_repr}

///|
pub extend SemanticsComposition with Eq::{not_equal, equal}

///|
pub extend SemanticsComposition with ToJson::{to_json}

///|
pub extend SemanticsTarget with Debug::{to_repr}

///|
pub extend SemanticsTarget with Eq::{not_equal, equal}

///|
pub extend SemanticsTarget with ToJson::{to_json}

///|
pub extend SemanticsPathSegment with Debug::{to_repr}

///|
pub extend SemanticsPathSegment with Eq::{not_equal, equal}

///|
pub extend SemanticsPathSegment with ToJson::{to_json}

///|
pub extend SemanticsState with Debug::{to_repr}

///|
pub extend SemanticsState with Eq::{not_equal, equal}

///|
pub extend SemanticsState with ToJson::{to_json}

///|
pub extend SemanticsNode with Debug::{to_repr}

///|
pub extend SemanticsNode with Eq::{not_equal, equal}

///|
pub extend SemanticsNode with ToJson::{to_json}

///|
pub extend SemanticsFramePayload with Debug::{to_repr}

///|
pub extend SemanticsFramePayload with Eq::{not_equal, equal}

///|
pub extend SemanticsFramePayload with ToJson::{to_json}

///|
pub extend ScrollAlignment with Debug::{to_repr}

///|
pub extend ScrollAlignment with Eq::{not_equal, equal}

///|
pub extend ScrollAlignment with ToJson::{to_json}

///|
pub extend ColorScheme with Debug::{to_repr}

///|
pub extend ColorScheme with Eq::{not_equal, equal}

///|
pub extend ColorScheme with ToJson::{to_json}

///|
pub extend ColorPalette with Debug::{to_repr}

///|
pub extend ColorPalette with Eq::{not_equal, equal}

///|
pub extend ColorPalette with ToJson::{to_json}

///|
pub extend SpacingScale with Debug::{to_repr}

///|
pub extend SpacingScale with Eq::{not_equal, equal}

///|
pub extend SpacingScale with ToJson::{to_json}

///|
pub extend RadiusScale with Debug::{to_repr}

///|
pub extend RadiusScale with Eq::{not_equal, equal}

///|
pub extend RadiusScale with ToJson::{to_json}

///|
pub extend TypographyScale with Debug::{to_repr}

///|
pub extend TypographyScale with Eq::{not_equal, equal}

///|
pub extend TypographyScale with ToJson::{to_json}

///|
pub extend ShadowScale with Debug::{to_repr}

///|
pub extend ShadowScale with Eq::{not_equal, equal}

///|
pub extend ShadowScale with ToJson::{to_json}

///|
pub extend MotionScale with Debug::{to_repr}

///|
pub extend MotionScale with Eq::{not_equal, equal}

///|
pub extend MotionScale with ToJson::{to_json}

///|
pub extend SurfaceScale with Debug::{to_repr}

///|
pub extend SurfaceScale with Eq::{not_equal, equal}

///|
pub extend SurfaceScale with ToJson::{to_json}

///|
pub extend SurfaceLevel with Debug::{to_repr}

///|
pub extend SurfaceLevel with Eq::{not_equal, equal}

///|
pub extend SurfaceLevel with ToJson::{to_json}

///|
pub extend LayoutDirection with Debug::{to_repr}

///|
pub extend LayoutDirection with Eq::{not_equal, equal}

///|
pub extend LayoutDirection with ToJson::{to_json}

///|
pub extend AccessibilityContrast with Debug::{to_repr}

///|
pub extend AccessibilityContrast with Eq::{not_equal, equal}

///|
pub extend AccessibilityContrast with ToJson::{to_json}

///|
pub extend ContentSizeCategory with Debug::{to_repr}

///|
pub extend ContentSizeCategory with Eq::{not_equal, equal}

///|
pub extend ContentSizeCategory with ToJson::{to_json}

///|
pub extend Theme with Debug::{to_repr}

///|
pub extend Theme with Eq::{not_equal, equal}

///|
pub extend Theme with ToJson::{to_json}

///|
pub extend Environment with Debug::{to_repr}

///|
pub extend Environment with Eq::{not_equal, equal}

///|
pub extend Environment with ToJson::{to_json}