diff --git a/mercurial/configuration/__init__.py b/mercurial/configuration/__init__.py
--- a/mercurial/configuration/__init__.py
+++ b/mercurial/configuration/__init__.py
@@ -0,0 +1,36 @@
+# configuration related constants
+
+from __future__ import annotations
+
+from typing import (
+    List,
+    Tuple,
+    Union,
+)
+
+# keep typing simple for now
+ConfigLevelT = str
+LEVEL_USER = 'user'  # "user" is the default level and never passed explicitly
+LEVEL_LOCAL = 'local'
+LEVEL_GLOBAL = 'global'
+LEVEL_SHARED = 'shared'
+LEVEL_NON_SHARED = 'non_shared'
+EDIT_LEVELS = (
+    LEVEL_USER,
+    LEVEL_LOCAL,
+    LEVEL_GLOBAL,
+    LEVEL_SHARED,
+    LEVEL_NON_SHARED,
+)
+
+ConfigItemT = Tuple[bytes, bytes, bytes, bytes]
+ResourceIDT = Tuple[bytes, bytes]
+FileRCT = bytes
+ComponentT = Tuple[
+    bytes,
+    Union[
+        List[ConfigItemT],
+        FileRCT,
+        ResourceIDT,
+    ],
+]
diff --git a/mercurial/configuration/command.py b/mercurial/configuration/command.py
--- a/mercurial/configuration/command.py
+++ b/mercurial/configuration/command.py
@@ -19,29 +19,24 @@ from .. import (
     vfs as vfsmod,
 )
 
-from . import rcutil
+from . import (
+    ConfigLevelT,
+    EDIT_LEVELS,
+    LEVEL_GLOBAL,
+    LEVEL_LOCAL,
+    LEVEL_NON_SHARED,
+    LEVEL_SHARED,
+    LEVEL_USER,
+    rcutil,
+)
 
 EDIT_FLAG = 'edit'
 
 
-# keep typing simple for now
-ConfigLevelT = str
-LEVEL_USER = 'user'  # "user" is the default level and never passed explicitly
-LEVEL_LOCAL = 'local'
-LEVEL_GLOBAL = 'global'
-LEVEL_SHARED = 'shared'
-LEVEL_NON_SHARED = 'non_shared'
-EDIT_LEVELS = (
-    LEVEL_USER,
-    LEVEL_LOCAL,
-    LEVEL_GLOBAL,
-    LEVEL_SHARED,
-    LEVEL_NON_SHARED,
-)
-
-
 def find_edit_level(
-    ui: uimod.ui, repo, opts: Dict[str, Any]
+    ui: uimod.ui,
+    repo,
+    opts: Dict[str, Any],
 ) -> Optional[ConfigLevelT]:
     """return the level we should edit, if any.
 
diff --git a/mercurial/configuration/rcutil.py b/mercurial/configuration/rcutil.py
--- a/mercurial/configuration/rcutil.py
+++ b/mercurial/configuration/rcutil.py
@@ -13,11 +13,10 @@ from typing import (
     Dict,
     List,
     Optional,
-    Tuple,
-    Union,
 )
 
 from .. import (
+    configuration as conf_mod,
     encoding,
     localrepo,
     pycompat,
@@ -37,17 +36,10 @@ fallbackpager = scmplatform.fallbackpage
 systemrcpath = scmplatform.systemrcpath
 userrcpath = scmplatform.userrcpath
 
-ConfigItemT = Tuple[bytes, bytes, bytes, bytes]
-ResourceIDT = Tuple[bytes, bytes]
-FileRCT = bytes
-ComponentT = Tuple[
-    bytes,
-    Union[
-        List[ConfigItemT],
-        FileRCT,
-        ResourceIDT,
-    ],
-]
+ComponentT = conf_mod.ComponentT
+ConfigItemT = conf_mod.ConfigItemT
+FileRCT = conf_mod.FileRCT
+ResourceIDT = conf_mod.ResourceIDT
 
 
 def _expandrcpath(path: bytes) -> List[FileRCT]: