From b957d4afb7824a165864cbd6019a7540b315ebe9 Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Tue, 20 Apr 2021 12:52:57 +0400
Subject: [PATCH] refactor(config): Extract interfaces from "index.ts" to
 separate "types.ts" (#9629)

---
 lib/config/decrypt.spec.ts                           | 2 +-
 lib/config/index.ts                                  | 7 +------
 lib/config/massage.spec.ts                           | 2 +-
 lib/config/migration.spec.ts                         | 5 ++++-
 lib/config/presets/index.spec.ts                     | 2 +-
 lib/config/types.ts                                  | 5 +++++
 lib/config/validation.spec.ts                        | 2 +-
 lib/manager/bazel/update.spec.ts                     | 2 +-
 lib/manager/gomod/update.spec.ts                     | 2 +-
 lib/util/emoji.ts                                    | 2 +-
 lib/util/package-rules.spec.ts                       | 2 +-
 lib/util/package-rules.ts                            | 7 ++-----
 lib/workers/branch/automerge.spec.ts                 | 2 +-
 lib/workers/branch/automerge.ts                      | 2 +-
 lib/workers/branch/index.ts                          | 2 +-
 lib/workers/branch/reuse.spec.ts                     | 2 +-
 lib/workers/branch/reuse.ts                          | 2 +-
 lib/workers/branch/schedule.spec.ts                  | 2 +-
 lib/workers/branch/schedule.ts                       | 2 +-
 lib/workers/branch/status-checks.ts                  | 2 +-
 lib/workers/global/autodiscover.spec.ts              | 2 +-
 lib/workers/global/autodiscover.ts                   | 2 +-
 lib/workers/global/index.ts                          | 9 +++++----
 lib/workers/pr/index.ts                              | 2 +-
 lib/workers/repository/configured.ts                 | 2 +-
 lib/workers/repository/dependency-dashboard.ts       | 2 +-
 lib/workers/repository/error-config.ts               | 2 +-
 lib/workers/repository/error.ts                      | 2 +-
 lib/workers/repository/extract/index.spec.ts         | 2 +-
 lib/workers/repository/extract/index.ts              | 7 ++-----
 lib/workers/repository/extract/manager-files.spec.ts | 2 +-
 lib/workers/repository/finalise/index.ts             | 2 +-
 lib/workers/repository/finalise/prune.ts             | 2 +-
 lib/workers/repository/index.ts                      | 2 +-
 lib/workers/repository/init/apis.ts                  | 2 +-
 lib/workers/repository/init/cache.ts                 | 2 +-
 lib/workers/repository/init/config.ts                | 3 ++-
 lib/workers/repository/init/index.ts                 | 2 +-
 lib/workers/repository/init/vulnerability.ts         | 2 +-
 lib/workers/repository/onboarding/branch/check.ts    | 2 +-
 lib/workers/repository/onboarding/branch/config.ts   | 2 +-
 lib/workers/repository/onboarding/branch/create.ts   | 2 +-
 lib/workers/repository/onboarding/branch/index.ts    | 2 +-
 lib/workers/repository/onboarding/branch/rebase.ts   | 2 +-
 lib/workers/repository/onboarding/pr/base-branch.ts  | 2 +-
 lib/workers/repository/onboarding/pr/pr-list.ts      | 2 +-
 lib/workers/repository/process/fetch.ts              | 8 ++------
 lib/workers/repository/process/index.ts              | 3 ++-
 lib/workers/repository/process/lookup/update-type.ts | 2 +-
 lib/workers/repository/process/sort.spec.ts          | 2 +-
 lib/workers/repository/result.ts                     | 2 +-
 lib/workers/repository/updates/branchify.ts          | 2 +-
 lib/workers/repository/updates/flatten.ts            | 2 +-
 test/util.ts                                         | 2 +-
 54 files changed, 70 insertions(+), 74 deletions(-)

diff --git a/lib/config/decrypt.spec.ts b/lib/config/decrypt.spec.ts
index 5bf81c44af..f0f604e60a 100644
--- a/lib/config/decrypt.spec.ts
+++ b/lib/config/decrypt.spec.ts
@@ -2,7 +2,7 @@ import fs from 'fs';
 import { getName } from '../../test/util';
 import { setAdminConfig } from './admin';
 import { decryptConfig } from './decrypt';
-import { RenovateConfig } from '.';
+import type { RenovateConfig } from './types';
 
 const privateKey = fs.readFileSync('lib/config/keys/__fixtures__/private.pem');
 
diff --git a/lib/config/index.ts b/lib/config/index.ts
index 9a13ac0b95..6fbe43fc3c 100644
--- a/lib/config/index.ts
+++ b/lib/config/index.ts
@@ -10,19 +10,14 @@ import * as fileParser from './file';
 import { resolveConfigPresets } from './presets';
 import type {
   GlobalConfig,
+  ManagerConfig,
   RenovateConfig,
   RenovateConfigStage,
 } from './types';
 import { mergeChildConfig } from './utils';
 
-export * from './types';
 export { mergeChildConfig };
 
-export interface ManagerConfig extends RenovateConfig {
-  language: string;
-  manager: string;
-}
-
 export function getManagerConfig(
   config: RenovateConfig,
   manager: string
diff --git a/lib/config/massage.spec.ts b/lib/config/massage.spec.ts
index 54ee01afca..19693d5a04 100644
--- a/lib/config/massage.spec.ts
+++ b/lib/config/massage.spec.ts
@@ -1,6 +1,6 @@
 import { getName } from '../../test/util';
 import * as massage from './massage';
-import { RenovateConfig } from '.';
+import type { RenovateConfig } from './types';
 
 describe(getName(__filename), () => {
   describe('massageConfig', () => {
diff --git a/lib/config/migration.spec.ts b/lib/config/migration.spec.ts
index afcfbfef68..7bd348c5ea 100644
--- a/lib/config/migration.spec.ts
+++ b/lib/config/migration.spec.ts
@@ -3,7 +3,10 @@ import { PLATFORM_TYPE_GITHUB } from '../constants/platforms';
 import { getConfig } from './defaults';
 import * as configMigration from './migration';
 import { MigratedConfig } from './migration';
-import { RenovateSharedConfig, RenovateConfig as _RenovateConfig } from '.';
+import type {
+  RenovateSharedConfig,
+  RenovateConfig as _RenovateConfig,
+} from './types';
 
 const defaultConfig = getConfig();
 
diff --git a/lib/config/presets/index.spec.ts b/lib/config/presets/index.spec.ts
index 4ac3017213..08acc21349 100644
--- a/lib/config/presets/index.spec.ts
+++ b/lib/config/presets/index.spec.ts
@@ -1,5 +1,5 @@
-import { RenovateConfig } from '..';
 import { getName, mocked } from '../../../test/util';
+import type { RenovateConfig } from '../types';
 import presetIkatyang from './__fixtures__/renovate-config-ikatyang.json';
 import * as _local from './local';
 import * as _npm from './npm';
diff --git a/lib/config/types.ts b/lib/config/types.ts
index 7ae1789e6f..21806dd46c 100644
--- a/lib/config/types.ts
+++ b/lib/config/types.ts
@@ -350,3 +350,8 @@ export interface PackageRuleInputConfig extends Record<string, unknown> {
   datasource?: string;
   packageRules?: (PackageRule & PackageRuleInputConfig)[];
 }
+
+export interface ManagerConfig extends RenovateConfig {
+  language: string;
+  manager: string;
+}
diff --git a/lib/config/validation.spec.ts b/lib/config/validation.spec.ts
index 6f52338d39..fe9582f4b3 100644
--- a/lib/config/validation.spec.ts
+++ b/lib/config/validation.spec.ts
@@ -1,6 +1,6 @@
 import { getName } from '../../test/util';
+import type { RenovateConfig } from './types';
 import * as configValidation from './validation';
-import { RenovateConfig } from '.';
 
 describe(getName(__filename), () => {
   describe('getParentName()', () => {
diff --git a/lib/manager/bazel/update.spec.ts b/lib/manager/bazel/update.spec.ts
index 0a28bff4a8..41d5fadef2 100644
--- a/lib/manager/bazel/update.spec.ts
+++ b/lib/manager/bazel/update.spec.ts
@@ -3,7 +3,7 @@ import { Readable } from 'stream';
 import { resolve } from 'upath';
 import * as httpMock from '../../../test/http-mock';
 import { getName } from '../../../test/util';
-import { UpdateType } from '../../config';
+import type { UpdateType } from '../../config/types';
 import { updateDependency } from './update';
 
 const content = readFileSync(
diff --git a/lib/manager/gomod/update.spec.ts b/lib/manager/gomod/update.spec.ts
index 3009615cfb..6dfba946bf 100644
--- a/lib/manager/gomod/update.spec.ts
+++ b/lib/manager/gomod/update.spec.ts
@@ -1,6 +1,6 @@
 import { readFileSync } from 'fs';
 import { getName } from '../../../test/util';
-import { UpdateType } from '../../config';
+import type { UpdateType } from '../../config/types';
 import { updateDependency } from './update';
 
 const gomod1 = readFileSync('lib/manager/gomod/__fixtures__/1/go.mod', 'utf8');
diff --git a/lib/util/emoji.ts b/lib/util/emoji.ts
index fbcad748d6..c5df9713a0 100644
--- a/lib/util/emoji.ts
+++ b/lib/util/emoji.ts
@@ -1,5 +1,5 @@
 import emoji from 'node-emoji';
-import { RenovateConfig } from '../config';
+import type { RenovateConfig } from '../config/types';
 
 let unicodeEmoji = false;
 
diff --git a/lib/util/package-rules.spec.ts b/lib/util/package-rules.spec.ts
index 05acb9f6db..bdc9cc0fc2 100644
--- a/lib/util/package-rules.spec.ts
+++ b/lib/util/package-rules.spec.ts
@@ -1,4 +1,4 @@
-import type { PackageRuleInputConfig, UpdateType } from '../config';
+import type { PackageRuleInputConfig, UpdateType } from '../config/types';
 import {
   LANGUAGE_DOCKER,
   LANGUAGE_JAVASCRIPT,
diff --git a/lib/util/package-rules.ts b/lib/util/package-rules.ts
index c268afd89f..2524e9fe60 100644
--- a/lib/util/package-rules.ts
+++ b/lib/util/package-rules.ts
@@ -1,10 +1,7 @@
 import is from '@sindresorhus/is';
 import minimatch from 'minimatch';
-import {
-  PackageRule,
-  PackageRuleInputConfig,
-  mergeChildConfig,
-} from '../config';
+import { mergeChildConfig } from '../config';
+import type { PackageRule, PackageRuleInputConfig } from '../config/types';
 import { logger } from '../logger';
 import * as allVersioning from '../versioning';
 import { configRegexPredicate, isConfigRegex, regEx } from './regex';
diff --git a/lib/workers/branch/automerge.spec.ts b/lib/workers/branch/automerge.spec.ts
index 0d561f0080..d963832fdd 100644
--- a/lib/workers/branch/automerge.spec.ts
+++ b/lib/workers/branch/automerge.spec.ts
@@ -1,6 +1,6 @@
 import { defaultConfig, getName, git, platform } from '../../../test/util';
-import { RenovateConfig } from '../../config';
 import { setAdminConfig } from '../../config/admin';
+import type { RenovateConfig } from '../../config/types';
 import { BranchStatus } from '../../types';
 import { tryBranchAutomerge } from './automerge';
 
diff --git a/lib/workers/branch/automerge.ts b/lib/workers/branch/automerge.ts
index a6298c0780..674953beee 100644
--- a/lib/workers/branch/automerge.ts
+++ b/lib/workers/branch/automerge.ts
@@ -1,5 +1,5 @@
-import { RenovateConfig } from '../../config';
 import { getAdminConfig } from '../../config/admin';
+import type { RenovateConfig } from '../../config/types';
 import { logger } from '../../logger';
 import { platform } from '../../platform';
 import { BranchStatus } from '../../types';
diff --git a/lib/workers/branch/index.ts b/lib/workers/branch/index.ts
index 9a8eadd874..ae25f57494 100644
--- a/lib/workers/branch/index.ts
+++ b/lib/workers/branch/index.ts
@@ -1,6 +1,6 @@
 import { DateTime } from 'luxon';
-import { RenovateConfig } from '../../config';
 import { getAdminConfig } from '../../config/admin';
+import type { RenovateConfig } from '../../config/types';
 import {
   CONFIG_VALIDATION,
   MANAGER_LOCKFILE_ERROR,
diff --git a/lib/workers/branch/reuse.spec.ts b/lib/workers/branch/reuse.spec.ts
index 762ed32024..8acbb4e062 100644
--- a/lib/workers/branch/reuse.spec.ts
+++ b/lib/workers/branch/reuse.spec.ts
@@ -1,5 +1,5 @@
 import { getName, git, platform } from '../../../test/util';
-import { RenovateConfig } from '../../config';
+import type { RenovateConfig } from '../../config/types';
 import { Pr } from '../../platform';
 import { PrState } from '../../types';
 import { shouldReuseExistingBranch } from './reuse';
diff --git a/lib/workers/branch/reuse.ts b/lib/workers/branch/reuse.ts
index c105d1f203..dabee5d66e 100644
--- a/lib/workers/branch/reuse.ts
+++ b/lib/workers/branch/reuse.ts
@@ -1,5 +1,5 @@
-import { RenovateConfig } from '../../config';
 import { getAdminConfig } from '../../config/admin';
+import type { RenovateConfig } from '../../config/types';
 import { logger } from '../../logger';
 import { platform } from '../../platform';
 import { branchExists, isBranchModified, isBranchStale } from '../../util/git';
diff --git a/lib/workers/branch/schedule.spec.ts b/lib/workers/branch/schedule.spec.ts
index 24c2b4b6d4..4848afff0d 100644
--- a/lib/workers/branch/schedule.spec.ts
+++ b/lib/workers/branch/schedule.spec.ts
@@ -1,6 +1,6 @@
 import mockDate from 'mockdate';
 import { getName } from '../../../test/util';
-import { RenovateConfig } from '../../config';
+import type { RenovateConfig } from '../../config/types';
 import * as schedule from './schedule';
 
 describe(getName(__filename), () => {
diff --git a/lib/workers/branch/schedule.ts b/lib/workers/branch/schedule.ts
index 009f76a608..ec34edaff0 100644
--- a/lib/workers/branch/schedule.ts
+++ b/lib/workers/branch/schedule.ts
@@ -1,7 +1,7 @@
 import later from '@breejs/later';
 import is from '@sindresorhus/is';
 import { DateTime } from 'luxon';
-import { RenovateConfig } from '../../config';
+import type { RenovateConfig } from '../../config/types';
 import { logger } from '../../logger';
 
 const scheduleMappings: Record<string, string> = {
diff --git a/lib/workers/branch/status-checks.ts b/lib/workers/branch/status-checks.ts
index eedc10c912..58313744f8 100644
--- a/lib/workers/branch/status-checks.ts
+++ b/lib/workers/branch/status-checks.ts
@@ -1,4 +1,4 @@
-import { RenovateConfig } from '../../config';
+import type { RenovateConfig } from '../../config/types';
 import { logger } from '../../logger';
 import { platform } from '../../platform';
 import { BranchStatus } from '../../types';
diff --git a/lib/workers/global/autodiscover.spec.ts b/lib/workers/global/autodiscover.spec.ts
index 7779fcd41f..cf0da927bc 100644
--- a/lib/workers/global/autodiscover.spec.ts
+++ b/lib/workers/global/autodiscover.spec.ts
@@ -1,5 +1,5 @@
 import { getName } from '../../../test/util';
-import { RenovateConfig } from '../../config';
+import type { RenovateConfig } from '../../config/types';
 import { PLATFORM_TYPE_GITHUB } from '../../constants/platforms';
 import * as platform from '../../platform';
 import * as _ghApi from '../../platform/github';
diff --git a/lib/workers/global/autodiscover.ts b/lib/workers/global/autodiscover.ts
index 396f32b9e2..bcb993d8dd 100644
--- a/lib/workers/global/autodiscover.ts
+++ b/lib/workers/global/autodiscover.ts
@@ -1,6 +1,6 @@
 import is from '@sindresorhus/is';
 import minimatch from 'minimatch';
-import { GlobalConfig } from '../../config';
+import type { GlobalConfig } from '../../config/types';
 import { logger } from '../../logger';
 import { platform } from '../../platform';
 
diff --git a/lib/workers/global/index.ts b/lib/workers/global/index.ts
index 06600d5da6..0d7978fb73 100644
--- a/lib/workers/global/index.ts
+++ b/lib/workers/global/index.ts
@@ -5,8 +5,12 @@ import { satisfies } from 'semver';
 import upath from 'upath';
 import * as pkg from '../../../package.json';
 import * as configParser from '../../config';
-import { GlobalConfig } from '../../config';
 import { validateConfigSecrets } from '../../config/secrets';
+import type {
+  GlobalConfig,
+  RenovateConfig,
+  RenovateRepository,
+} from '../../config/types';
 import { getProblems, logger, setMeta } from '../../logger';
 import { setUtilConfig } from '../../util';
 import * as hostRules from '../../util/host-rules';
@@ -15,9 +19,6 @@ import { autodiscoverRepositories } from './autodiscover';
 import { globalFinalize, globalInitialize } from './initialize';
 import { Limit, isLimitReached } from './limits';
 
-type RenovateConfig = configParser.RenovateConfig;
-type RenovateRepository = configParser.RenovateRepository;
-
 export async function getRepositoryConfig(
   globalConfig: RenovateConfig,
   repository: RenovateRepository
diff --git a/lib/workers/pr/index.ts b/lib/workers/pr/index.ts
index d210137832..0ddb2aab61 100644
--- a/lib/workers/pr/index.ts
+++ b/lib/workers/pr/index.ts
@@ -1,5 +1,5 @@
-import { RenovateConfig } from '../../config';
 import { getAdminConfig } from '../../config/admin';
+import type { RenovateConfig } from '../../config/types';
 import {
   PLATFORM_INTEGRATION_UNAUTHORIZED,
   PLATFORM_RATE_LIMIT_EXCEEDED,
diff --git a/lib/workers/repository/configured.ts b/lib/workers/repository/configured.ts
index 1f33f1e335..80e88016f5 100644
--- a/lib/workers/repository/configured.ts
+++ b/lib/workers/repository/configured.ts
@@ -1,4 +1,4 @@
-import { RenovateConfig } from '../../config';
+import type { RenovateConfig } from '../../config/types';
 import {
   REPOSITORY_DISABLED_BY_CONFIG,
   REPOSITORY_FORKED,
diff --git a/lib/workers/repository/dependency-dashboard.ts b/lib/workers/repository/dependency-dashboard.ts
index 2d57520cdc..8e75e00599 100644
--- a/lib/workers/repository/dependency-dashboard.ts
+++ b/lib/workers/repository/dependency-dashboard.ts
@@ -1,7 +1,7 @@
 import is from '@sindresorhus/is';
 import { nameFromLevel } from 'bunyan';
-import { RenovateConfig } from '../../config';
 import { getAdminConfig } from '../../config/admin';
+import type { RenovateConfig } from '../../config/types';
 import { getProblems, logger } from '../../logger';
 import { Pr, platform } from '../../platform';
 import { PrState } from '../../types';
diff --git a/lib/workers/repository/error-config.ts b/lib/workers/repository/error-config.ts
index d41d4dab7c..0ccc619dfc 100644
--- a/lib/workers/repository/error-config.ts
+++ b/lib/workers/repository/error-config.ts
@@ -1,5 +1,5 @@
-import { RenovateConfig } from '../../config';
 import { getAdminConfig } from '../../config/admin';
+import type { RenovateConfig } from '../../config/types';
 import { logger } from '../../logger';
 import { platform } from '../../platform';
 import { PrState } from '../../types';
diff --git a/lib/workers/repository/error.ts b/lib/workers/repository/error.ts
index 9bdf1dedab..65aa292b75 100644
--- a/lib/workers/repository/error.ts
+++ b/lib/workers/repository/error.ts
@@ -1,4 +1,4 @@
-import { RenovateConfig } from '../../config';
+import type { RenovateConfig } from '../../config/types';
 
 import {
   CONFIG_SECRETS_EXPOSED,
diff --git a/lib/workers/repository/extract/index.spec.ts b/lib/workers/repository/extract/index.spec.ts
index d4f3e54f95..6b05823675 100644
--- a/lib/workers/repository/extract/index.spec.ts
+++ b/lib/workers/repository/extract/index.spec.ts
@@ -1,5 +1,5 @@
 import { defaultConfig, getName, git, mocked } from '../../../../test/util';
-import { RenovateConfig } from '../../../config';
+import type { RenovateConfig } from '../../../config/types';
 import * as _managerFiles from './manager-files';
 import { extractAllDependencies } from '.';
 
diff --git a/lib/workers/repository/extract/index.ts b/lib/workers/repository/extract/index.ts
index 69de5551a8..9d99e5e7f2 100644
--- a/lib/workers/repository/extract/index.ts
+++ b/lib/workers/repository/extract/index.ts
@@ -1,9 +1,6 @@
 import is from '@sindresorhus/is';
-import {
-  RenovateConfig,
-  getManagerConfig,
-  mergeChildConfig,
-} from '../../../config';
+import { getManagerConfig, mergeChildConfig } from '../../../config';
+import type { RenovateConfig } from '../../../config/types';
 import { logger } from '../../../logger';
 import { getManagerList } from '../../../manager';
 import type { PackageFile } from '../../../manager/types';
diff --git a/lib/workers/repository/extract/manager-files.spec.ts b/lib/workers/repository/extract/manager-files.spec.ts
index 8666f88921..cd33536ac3 100644
--- a/lib/workers/repository/extract/manager-files.spec.ts
+++ b/lib/workers/repository/extract/manager-files.spec.ts
@@ -1,5 +1,5 @@
 import { fs, getConfig, getName, mocked } from '../../../../test/util';
-import { RenovateConfig } from '../../../config';
+import type { RenovateConfig } from '../../../config/types';
 import * as _html from '../../../manager/html';
 import * as _fileMatch from './file-match';
 import { getManagerPackageFiles } from './manager-files';
diff --git a/lib/workers/repository/finalise/index.ts b/lib/workers/repository/finalise/index.ts
index c8ff40d7c7..6d456e74ab 100644
--- a/lib/workers/repository/finalise/index.ts
+++ b/lib/workers/repository/finalise/index.ts
@@ -1,4 +1,4 @@
-import { RenovateConfig } from '../../../config';
+import type { RenovateConfig } from '../../../config/types';
 import { platform } from '../../../platform';
 import * as repositoryCache from '../../../util/cache/repository';
 import { pruneStaleBranches } from './prune';
diff --git a/lib/workers/repository/finalise/prune.ts b/lib/workers/repository/finalise/prune.ts
index be6b63351c..921cad4cdc 100644
--- a/lib/workers/repository/finalise/prune.ts
+++ b/lib/workers/repository/finalise/prune.ts
@@ -1,5 +1,5 @@
-import { RenovateConfig } from '../../../config';
 import { getAdminConfig } from '../../../config/admin';
+import type { RenovateConfig } from '../../../config/types';
 import { REPOSITORY_CHANGED } from '../../../constants/error-messages';
 import { logger } from '../../../logger';
 import { platform } from '../../../platform';
diff --git a/lib/workers/repository/index.ts b/lib/workers/repository/index.ts
index 02c4ec312f..162ac84aeb 100644
--- a/lib/workers/repository/index.ts
+++ b/lib/workers/repository/index.ts
@@ -1,6 +1,6 @@
 import fs from 'fs-extra';
-import { RenovateConfig } from '../../config';
 import { setAdminConfig } from '../../config/admin';
+import type { RenovateConfig } from '../../config/types';
 import { logger, setMeta } from '../../logger';
 import { deleteLocalFile, privateCacheDir } from '../../util/fs';
 import * as queue from '../../util/http/queue';
diff --git a/lib/workers/repository/init/apis.ts b/lib/workers/repository/init/apis.ts
index d83b30b1e2..44d1c6face 100644
--- a/lib/workers/repository/init/apis.ts
+++ b/lib/workers/repository/init/apis.ts
@@ -1,5 +1,5 @@
-import { RenovateConfig } from '../../../config';
 import { configFileNames } from '../../../config/app-strings';
+import type { RenovateConfig } from '../../../config/types';
 import {
   REPOSITORY_DISABLED_BY_CONFIG,
   REPOSITORY_FORKED,
diff --git a/lib/workers/repository/init/cache.ts b/lib/workers/repository/init/cache.ts
index 40995f8b18..7144938a35 100644
--- a/lib/workers/repository/init/cache.ts
+++ b/lib/workers/repository/init/cache.ts
@@ -1,5 +1,5 @@
 import * as fs from 'fs-extra';
-import { RenovateConfig } from '../../../config';
+import type { RenovateConfig } from '../../../config/types';
 import * as memCache from '../../../util/cache/memory';
 import * as repositoryCache from '../../../util/cache/repository';
 import { privateCacheDir } from '../../../util/fs';
diff --git a/lib/workers/repository/init/config.ts b/lib/workers/repository/init/config.ts
index 6f782f6cdf..fb802acef3 100644
--- a/lib/workers/repository/init/config.ts
+++ b/lib/workers/repository/init/config.ts
@@ -3,12 +3,13 @@ import jsonValidator from 'json-dup-key-validator';
 import JSON5 from 'json5';
 import upath from 'upath';
 
-import { RenovateConfig, mergeChildConfig } from '../../../config';
+import { mergeChildConfig } from '../../../config';
 import { configFileNames } from '../../../config/app-strings';
 import { decryptConfig } from '../../../config/decrypt';
 import { migrateAndValidate } from '../../../config/migrate-validate';
 import { migrateConfig } from '../../../config/migration';
 import * as presets from '../../../config/presets';
+import type { RenovateConfig } from '../../../config/types';
 import {
   CONFIG_VALIDATION,
   REPOSITORY_CHANGED,
diff --git a/lib/workers/repository/init/index.ts b/lib/workers/repository/init/index.ts
index 4896b9501d..07a47f1f4c 100644
--- a/lib/workers/repository/init/index.ts
+++ b/lib/workers/repository/init/index.ts
@@ -1,5 +1,5 @@
-import { RenovateConfig } from '../../../config';
 import { applySecretsToConfig } from '../../../config/secrets';
+import type { RenovateConfig } from '../../../config/types';
 import { logger } from '../../../logger';
 import { clone } from '../../../util/clone';
 import { setUserRepoConfig } from '../../../util/git';
diff --git a/lib/workers/repository/init/vulnerability.ts b/lib/workers/repository/init/vulnerability.ts
index c4e5940d1f..dfab167a79 100644
--- a/lib/workers/repository/init/vulnerability.ts
+++ b/lib/workers/repository/init/vulnerability.ts
@@ -1,4 +1,4 @@
-import { PackageRule, RenovateConfig } from '../../../config';
+import type { PackageRule, RenovateConfig } from '../../../config/types';
 import { NO_VULNERABILITY_ALERTS } from '../../../constants/error-messages';
 import * as datasourceMaven from '../../../datasource/maven';
 import { id as npmId } from '../../../datasource/npm';
diff --git a/lib/workers/repository/onboarding/branch/check.ts b/lib/workers/repository/onboarding/branch/check.ts
index 5590738c5e..9a2a436921 100644
--- a/lib/workers/repository/onboarding/branch/check.ts
+++ b/lib/workers/repository/onboarding/branch/check.ts
@@ -1,5 +1,5 @@
-import { RenovateConfig } from '../../../../config';
 import { configFileNames } from '../../../../config/app-strings';
+import type { RenovateConfig } from '../../../../config/types';
 import {
   REPOSITORY_CLOSED_ONBOARDING,
   REPOSITORY_NO_CONFIG,
diff --git a/lib/workers/repository/onboarding/branch/config.ts b/lib/workers/repository/onboarding/branch/config.ts
index a21b40ff44..224f495b01 100644
--- a/lib/workers/repository/onboarding/branch/config.ts
+++ b/lib/workers/repository/onboarding/branch/config.ts
@@ -1,6 +1,6 @@
-import { RenovateConfig } from '../../../../config';
 import { getPreset } from '../../../../config/presets/local';
 import { PRESET_DEP_NOT_FOUND } from '../../../../config/presets/util';
+import type { RenovateConfig } from '../../../../config/types';
 import { logger } from '../../../../logger';
 import { clone } from '../../../../util/clone';
 
diff --git a/lib/workers/repository/onboarding/branch/create.ts b/lib/workers/repository/onboarding/branch/create.ts
index 0bd094d7d9..0dc023124d 100644
--- a/lib/workers/repository/onboarding/branch/create.ts
+++ b/lib/workers/repository/onboarding/branch/create.ts
@@ -1,6 +1,6 @@
-import { RenovateConfig } from '../../../../config';
 import { getAdminConfig } from '../../../../config/admin';
 import { configFileNames } from '../../../../config/app-strings';
+import type { RenovateConfig } from '../../../../config/types';
 import { logger } from '../../../../logger';
 import { commitFiles } from '../../../../util/git';
 import { formatCommitMessagePrefix } from '../../util/commit-message';
diff --git a/lib/workers/repository/onboarding/branch/index.ts b/lib/workers/repository/onboarding/branch/index.ts
index 47812ecee5..d9f63474bc 100644
--- a/lib/workers/repository/onboarding/branch/index.ts
+++ b/lib/workers/repository/onboarding/branch/index.ts
@@ -1,5 +1,5 @@
-import { RenovateConfig } from '../../../../config';
 import { getAdminConfig } from '../../../../config/admin';
+import type { RenovateConfig } from '../../../../config/types';
 import {
   REPOSITORY_FORKED,
   REPOSITORY_NO_PACKAGE_FILES,
diff --git a/lib/workers/repository/onboarding/branch/rebase.ts b/lib/workers/repository/onboarding/branch/rebase.ts
index aa4557e436..63354f5167 100644
--- a/lib/workers/repository/onboarding/branch/rebase.ts
+++ b/lib/workers/repository/onboarding/branch/rebase.ts
@@ -1,6 +1,6 @@
-import { RenovateConfig } from '../../../../config';
 import { getAdminConfig } from '../../../../config/admin';
 import { configFileNames } from '../../../../config/app-strings';
+import type { RenovateConfig } from '../../../../config/types';
 import { logger } from '../../../../logger';
 import {
   commitFiles,
diff --git a/lib/workers/repository/onboarding/pr/base-branch.ts b/lib/workers/repository/onboarding/pr/base-branch.ts
index 76cdb4b08a..0e574e18dc 100644
--- a/lib/workers/repository/onboarding/pr/base-branch.ts
+++ b/lib/workers/repository/onboarding/pr/base-branch.ts
@@ -1,4 +1,4 @@
-import { RenovateConfig } from '../../../../config';
+import type { RenovateConfig } from '../../../../config/types';
 
 export function getBaseBranchDesc(config: RenovateConfig): string {
   // Describe base branch only if it's configured
diff --git a/lib/workers/repository/onboarding/pr/pr-list.ts b/lib/workers/repository/onboarding/pr/pr-list.ts
index b44a94067b..f5adce0610 100644
--- a/lib/workers/repository/onboarding/pr/pr-list.ts
+++ b/lib/workers/repository/onboarding/pr/pr-list.ts
@@ -1,4 +1,4 @@
-import { RenovateConfig } from '../../../../config';
+import type { RenovateConfig } from '../../../../config/types';
 import { logger } from '../../../../logger';
 import { emojify } from '../../../../util/emoji';
 import type { BranchConfig } from '../../../types';
diff --git a/lib/workers/repository/process/fetch.ts b/lib/workers/repository/process/fetch.ts
index df521037c0..10bc0afa51 100644
--- a/lib/workers/repository/process/fetch.ts
+++ b/lib/workers/repository/process/fetch.ts
@@ -1,10 +1,6 @@
 import pAll from 'p-all';
-import {
-  ManagerConfig,
-  RenovateConfig,
-  getManagerConfig,
-  mergeChildConfig,
-} from '../../../config';
+import { getManagerConfig, mergeChildConfig } from '../../../config';
+import type { ManagerConfig, RenovateConfig } from '../../../config/types';
 import { getDefaultConfig } from '../../../datasource';
 import { logger } from '../../../logger';
 import { getPackageUpdates } from '../../../manager';
diff --git a/lib/workers/repository/process/index.ts b/lib/workers/repository/process/index.ts
index a8044ddb56..008d948bc9 100644
--- a/lib/workers/repository/process/index.ts
+++ b/lib/workers/repository/process/index.ts
@@ -1,4 +1,5 @@
-import { RenovateConfig, mergeChildConfig } from '../../../config';
+import { mergeChildConfig } from '../../../config';
+import type { RenovateConfig } from '../../../config/types';
 import { logger } from '../../../logger';
 import type { PackageFile } from '../../../manager/types';
 import { platform } from '../../../platform';
diff --git a/lib/workers/repository/process/lookup/update-type.ts b/lib/workers/repository/process/lookup/update-type.ts
index 2ec97d4dba..956d7b310a 100644
--- a/lib/workers/repository/process/lookup/update-type.ts
+++ b/lib/workers/repository/process/lookup/update-type.ts
@@ -1,4 +1,4 @@
-import { UpdateType } from '../../../../config';
+import type { UpdateType } from '../../../../config/types';
 import * as allVersioning from '../../../../versioning';
 
 export interface UpdateTypeConfig {
diff --git a/lib/workers/repository/process/sort.spec.ts b/lib/workers/repository/process/sort.spec.ts
index 95612f625a..9f2fd3c306 100644
--- a/lib/workers/repository/process/sort.spec.ts
+++ b/lib/workers/repository/process/sort.spec.ts
@@ -1,5 +1,5 @@
 import { getName } from '../../../../test/util';
-import { UpdateType } from '../../../config';
+import type { UpdateType } from '../../../config/types';
 import { sortBranches } from './sort';
 
 describe(getName(__filename), () => {
diff --git a/lib/workers/repository/result.ts b/lib/workers/repository/result.ts
index 7b965f89d0..9039eeab97 100644
--- a/lib/workers/repository/result.ts
+++ b/lib/workers/repository/result.ts
@@ -1,4 +1,4 @@
-import { RenovateConfig } from '../../config';
+import type { RenovateConfig } from '../../config/types';
 import {
   CONFIG_SECRETS_EXPOSED,
   CONFIG_VALIDATION,
diff --git a/lib/workers/repository/updates/branchify.ts b/lib/workers/repository/updates/branchify.ts
index 96e0b372d1..40d5628124 100644
--- a/lib/workers/repository/updates/branchify.ts
+++ b/lib/workers/repository/updates/branchify.ts
@@ -1,5 +1,5 @@
 import type { Merge } from 'type-fest';
-import { RenovateConfig, ValidationMessage } from '../../../config';
+import type { RenovateConfig, ValidationMessage } from '../../../config/types';
 import { addMeta, logger, removeMeta } from '../../../logger';
 import type { BranchConfig, BranchUpgradeConfig } from '../../types';
 import { embedChangelogs } from '../changelog';
diff --git a/lib/workers/repository/updates/flatten.ts b/lib/workers/repository/updates/flatten.ts
index 9a195d1d3e..6261b851c8 100644
--- a/lib/workers/repository/updates/flatten.ts
+++ b/lib/workers/repository/updates/flatten.ts
@@ -1,9 +1,9 @@
 import {
-  RenovateConfig,
   filterConfig,
   getManagerConfig,
   mergeChildConfig,
 } from '../../../config';
+import type { RenovateConfig } from '../../../config/types';
 import { LANGUAGE_DOCKER } from '../../../constants/languages';
 import { getDefaultConfig } from '../../../datasource';
 import { get } from '../../../manager';
diff --git a/test/util.ts b/test/util.ts
index 844a7e74e2..06f596fb1e 100644
--- a/test/util.ts
+++ b/test/util.ts
@@ -1,7 +1,7 @@
 import crypto from 'crypto';
 import { expect } from '@jest/globals';
-import { RenovateConfig as _RenovateConfig } from '../lib/config';
 import { getConfig } from '../lib/config/defaults';
+import type { RenovateConfig as _RenovateConfig } from '../lib/config/types';
 import * as _logger from '../lib/logger';
 import { platform as _platform } from '../lib/platform';
 import * as _env from '../lib/util/exec/env';
-- 
GitLab