fix(deps): update kotlin monorepo to v2.3.10

Redefine ElementType.FILE as KtNodeTypes.FILE because no longer exists in Kotlin 2.3

Fix NoTrailingSpacesRule as KDOCs are structured differently in Kotlin 2.3
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 7b3873f..6830a79 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -7,8 +7,8 @@
 # used in KotlinCommonPlugin
 #noinspection UnusedVersionCatalogEntry
 java-target = "17"
-kotlin = "2.2.21"
-kotlinDev = "2.2.21"
+kotlin = "2.3.10"
+kotlinDev = "2.3.10"
 
 [plugins]
 kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
diff --git a/ktlint-rule-engine-core/src/main/kotlin/com/pinterest/ktlint/rule/engine/core/api/ElementType.kt b/ktlint-rule-engine-core/src/main/kotlin/com/pinterest/ktlint/rule/engine/core/api/ElementType.kt
index d02b67d..c419543 100644
--- a/ktlint-rule-engine-core/src/main/kotlin/com/pinterest/ktlint/rule/engine/core/api/ElementType.kt
+++ b/ktlint-rule-engine-core/src/main/kotlin/com/pinterest/ktlint/rule/engine/core/api/ElementType.kt
@@ -5,12 +5,11 @@
 import org.jetbrains.kotlin.kdoc.lexer.KDocTokens
 import org.jetbrains.kotlin.kdoc.parser.KDocElementTypes
 import org.jetbrains.kotlin.lexer.KtTokens
-import org.jetbrains.kotlin.psi.stubs.elements.KtFileElementType
 import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes
 
 @Suppress("unused")
 public object ElementType {
-    public val FILE: IElementType = KtFileElementType.INSTANCE
+    public val FILE: IElementType = KtNodeTypes.FILE
 
     // KtNodeTypes
     public val CLASS: IElementType = KtNodeTypes.CLASS
diff --git a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/rules/NoTrailingSpacesRule.kt b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/rules/NoTrailingSpacesRule.kt
index 01d9150..d8fad2b 100644
--- a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/rules/NoTrailingSpacesRule.kt
+++ b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/rules/NoTrailingSpacesRule.kt
@@ -1,8 +1,13 @@
 package com.pinterest.ktlint.ruleset.standard.rules
 
 import com.pinterest.ktlint.rule.engine.core.api.AutocorrectDecision
+import com.pinterest.ktlint.rule.engine.core.api.ElementType
 import com.pinterest.ktlint.rule.engine.core.api.ElementType.EOL_COMMENT
 import com.pinterest.ktlint.rule.engine.core.api.ElementType.KDOC
+import com.pinterest.ktlint.rule.engine.core.api.ElementType.KDOC_END
+import com.pinterest.ktlint.rule.engine.core.api.ElementType.KDOC_LEADING_ASTERISK
+import com.pinterest.ktlint.rule.engine.core.api.ElementType.KDOC_TEXT
+import com.pinterest.ktlint.rule.engine.core.api.ElementType.WHITE_SPACE
 import com.pinterest.ktlint.rule.engine.core.api.RuleId
 import com.pinterest.ktlint.rule.engine.core.api.SinceKtlint
 import com.pinterest.ktlint.rule.engine.core.api.SinceKtlint.Status.STABLE
@@ -11,6 +16,7 @@
 import com.pinterest.ktlint.rule.engine.core.api.isPartOf
 import com.pinterest.ktlint.rule.engine.core.api.isWhiteSpace20
 import com.pinterest.ktlint.rule.engine.core.api.nextLeaf
+import com.pinterest.ktlint.rule.engine.core.api.nextSibling20
 import com.pinterest.ktlint.rule.engine.core.api.replaceTextWith
 import com.pinterest.ktlint.ruleset.standard.StandardRule
 import org.jetbrains.kotlin.com.intellij.lang.ASTNode
@@ -31,8 +37,24 @@
                         .dropLastWhile { it == ' ' }
                         .length
                 emit(node.startOffset + offsetOfFirstSpaceBeforeNewlineInText, "Trailing space(s)", true)
-                    .ifAutocorrectAllowed {
-                        node.removeTrailingSpacesBeforeNewline()
+                    .ifAutocorrectAllowed { node.removeTrailingSpacesBeforeNewline() }
+            }
+
+            if (node.elementType == KDOC_TEXT &&
+                node.text.endsWith(" ") &&
+                (
+                    node.nextLeaf
+                        ?.takeIf { it.nextLeaf?.elementType == KDOC_LEADING_ASTERISK || it.nextLeaf?.elementType == KDOC_END }
+                        ?.text
+                        ?.startsWith("\n") == true
+                )
+            ) {
+                node
+                    .text
+                    .trimEnd()
+                    .let { trimmedText ->
+                        emit(node.startOffset + trimmedText.length, "Trailing space(s)", true)
+                            .ifAutocorrectAllowed { node.replaceTextWith(trimmedText) }
                     }
             }
         } else if (!node.isCode) {
diff --git a/ktlint-ruleset-template/build.gradle.kts b/ktlint-ruleset-template/build.gradle.kts
index 56bc975..e33f4f6 100644
--- a/ktlint-ruleset-template/build.gradle.kts
+++ b/ktlint-ruleset-template/build.gradle.kts
@@ -2,7 +2,7 @@
 // build logic of other internal ktlint modules (https://github.com/pinterest/ktlint/issues/3048)..
 
 plugins {
-    kotlin("jvm") version "2.2.21"
+    kotlin("jvm") version "2.3.10"
     // Remove the line below when this custom ruleset is not to be published to maven. If you do want to publish your ruleset to Maven, you
     // still might need to configure the Maven Central repository in file `settings.gradle.xml` which is not included in the sample project
     // as it conflicts with the build of the Ktlint itself. Suggested content of that file: