diff --git a/.eslintrc.js b/.eslintrc.js
index 31c4faa44113d2a3d936e07a2923c68bc179aaee..ffc4c8a23e19ddd937755c6a89c0c81c396b41d8 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -114,7 +114,7 @@ module.exports = {
     '@typescript-eslint/no-unsafe-argument': 0, // thousands of errors :-/
 
     '@typescript-eslint/restrict-template-expressions': [
-      1,
+      2,
       { allowNumber: true, allowBoolean: true },
     ],
     '@typescript-eslint/restrict-plus-operands': 2,
diff --git a/lib/config/validation.ts b/lib/config/validation.ts
index 92209fc4f7788f27c4062c087d4d42184e32c945..a9ba6d08d85c34f5c013be2585839adfe25b7b7a 100644
--- a/lib/config/validation.ts
+++ b/lib/config/validation.ts
@@ -196,6 +196,8 @@ export async function validateConfig(
         optionParents[key] &&
         optionParents[key] !== parentName
       ) {
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
         const message = `${key} should only be configured within a "${optionParents[key]}" object. Was found in ${parentName}`;
         warnings.push({
           topic: `${parentPath ? `${parentPath}.` : ''}${key}`,
diff --git a/lib/logger/utils.spec.ts b/lib/logger/utils.spec.ts
index 3915857bc42258a7dea559166f5611863c7f9e6f..95b02ef5f0a97aca723cf7afb0474ac97da114c2 100644
--- a/lib/logger/utils.spec.ts
+++ b/lib/logger/utils.spec.ts
@@ -23,6 +23,8 @@ describe('logger/utils', () => {
     // Mock when the function exits
     const mockExit = jest.spyOn(process, 'exit');
     mockExit.mockImplementationOnce((number) => {
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       throw new Error(`process.exit: ${number}`);
     });
     expect(() => {
diff --git a/lib/modules/datasource/adoptium-java/index.ts b/lib/modules/datasource/adoptium-java/index.ts
index a92f8963c12401328f375b66fcc33fe059df0b08..ec337967c81bbf973ac4ef4166f68cf8bc95d45a 100644
--- a/lib/modules/datasource/adoptium-java/index.ts
+++ b/lib/modules/datasource/adoptium-java/index.ts
@@ -54,6 +54,8 @@ export class AdoptiumJavaDatasource extends Datasource {
   @cache({
     namespace: `datasource-${datasource}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}:${getImageType(packageName)}`,
   })
   async getReleases({
@@ -65,6 +67,8 @@ export class AdoptiumJavaDatasource extends Datasource {
       { registryUrl, packageName, imageType },
       'fetching java release'
     );
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const url = `${registryUrl}v3/info/release_versions?page_size=${pageSize}&image_type=${imageType}&project=jdk&release_type=ga&sort_method=DATE&sort_order=DESC&vendor=adoptium`;
 
     const result: ReleaseResult = {
diff --git a/lib/modules/datasource/artifactory/index.ts b/lib/modules/datasource/artifactory/index.ts
index e6669adaa714eafd4c88242145d1fa8ce0b8f3a1..9492924be1bae69ea18583f52aa123d3dd904a2c 100644
--- a/lib/modules/datasource/artifactory/index.ts
+++ b/lib/modules/datasource/artifactory/index.ts
@@ -24,6 +24,8 @@ export class ArtifactoryDatasource extends Datasource {
   @cache({
     namespace: `datasource-${datasource}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}:${packageName}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/cdnjs/index.spec.ts b/lib/modules/datasource/cdnjs/index.spec.ts
index 550b87d665224d17bd2bcd04657aa43b222d4d80..71c807634de316f750d6907c8a03b1a9fa69100e 100644
--- a/lib/modules/datasource/cdnjs/index.spec.ts
+++ b/lib/modules/datasource/cdnjs/index.spec.ts
@@ -7,6 +7,8 @@ import { CdnJsDatasource } from '.';
 const baseUrl = 'https://api.cdnjs.com/';
 
 const pathFor = (s: string): string =>
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
   `/libraries/${s.split('/').shift()}?fields=homepage,repository,assets`;
 
 describe('modules/datasource/cdnjs/index', () => {
diff --git a/lib/modules/datasource/cdnjs/index.ts b/lib/modules/datasource/cdnjs/index.ts
index 4960375561a706cfce2fe92f78587daef27db71a..5988d1b12d395bc8ced356bb0cdb5bc13349fdc9 100644
--- a/lib/modules/datasource/cdnjs/index.ts
+++ b/lib/modules/datasource/cdnjs/index.ts
@@ -24,6 +24,8 @@ export class CdnJsDatasource extends Datasource {
   }: GetReleasesConfig): Promise<ReleaseResult | null> {
     // Each library contains multiple assets, so we cache at the library level instead of per-asset
     const library = packageName.split('/')[0];
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const url = `${registryUrl}libraries/${library}?fields=homepage,repository,assets`;
     let result: ReleaseResult | null = null;
     try {
diff --git a/lib/modules/datasource/conan/index.ts b/lib/modules/datasource/conan/index.ts
index 2889565e559719e54cef057befec09ef24c0efcb..f85269a59013768bd046600d8d7f30eeb5d42a8f 100644
--- a/lib/modules/datasource/conan/index.ts
+++ b/lib/modules/datasource/conan/index.ts
@@ -53,6 +53,8 @@ export class ConanDatasource extends Datasource {
   @cache({
     namespace: `datasource-${datasource}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}:${packageName}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/conda/index.ts b/lib/modules/datasource/conda/index.ts
index 18b82986ba52056f69b67ce46d18785ebcf513d4..401ab3a0bdaa3da81a218ac3d3b0e75a1589d61a 100644
--- a/lib/modules/datasource/conda/index.ts
+++ b/lib/modules/datasource/conda/index.ts
@@ -23,6 +23,8 @@ export class CondaDatasource extends Datasource {
   @cache({
     namespace: `datasource-${datasource}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}:${packageName}`,
   })
   async getReleases({
@@ -31,6 +33,8 @@ export class CondaDatasource extends Datasource {
   }: GetReleasesConfig): Promise<ReleaseResult | null> {
     logger.trace({ registryUrl, packageName }, 'fetching conda package');
 
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const url = `${registryUrl}${packageName}`;
 
     const result: ReleaseResult = {
diff --git a/lib/modules/datasource/crate/index.ts b/lib/modules/datasource/crate/index.ts
index cd4f723819f00e5e1ebf52029faedec8e7bf80b2..482903e4d94b4f5aa2ece8ddd9b8afe2f81a1ddc 100644
--- a/lib/modules/datasource/crate/index.ts
+++ b/lib/modules/datasource/crate/index.ts
@@ -38,6 +38,8 @@ export class CrateDatasource extends Datasource {
   @cache({
     namespace: `datasource-${CrateDatasource.id}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}/${packageName}`,
     cacheable: ({ registryUrl }: GetReleasesConfig) =>
       CrateDatasource.areReleasesCacheable(registryUrl),
diff --git a/lib/modules/datasource/docker/index.ts b/lib/modules/datasource/docker/index.ts
index 73b431f59d67661c654d4fb904b667a65b3cb7c1..09a410680a940772772a71dfc70310b4f008389e 100644
--- a/lib/modules/datasource/docker/index.ts
+++ b/lib/modules/datasource/docker/index.ts
@@ -845,6 +845,8 @@ export class DockerDatasource extends Datasource {
       registryUrl!
     );
     logger.debug(
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `getDigest(${registryHost}, ${dockerRepository}, ${newValue})`
     );
     const newTag = newValue ?? 'latest';
diff --git a/lib/modules/datasource/galaxy-collection/index.ts b/lib/modules/datasource/galaxy-collection/index.ts
index be8fd108d308452fafc6d99c4ad85405ede00879..9e1fd5df9a40c835fd9ef8cd192dce9399bac80c 100644
--- a/lib/modules/datasource/galaxy-collection/index.ts
+++ b/lib/modules/datasource/galaxy-collection/index.ts
@@ -32,6 +32,8 @@ export class GalaxyCollectionDatasource extends Datasource {
   }: GetReleasesConfig): Promise<ReleaseResult | null> {
     const [namespace, projectName] = packageName.split('.');
 
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const baseUrl = `${registryUrl}api/v2/collections/${namespace}/${projectName}/`;
 
     let baseUrlResponse: HttpResponse<BaseProjectResult>;
diff --git a/lib/modules/datasource/galaxy/index.ts b/lib/modules/datasource/galaxy/index.ts
index 2d5d7aa1f89d546a7a52f3e3f59879e2c6971821..82e886c6546fd989f5d5e2303a85e46f3520b70e 100644
--- a/lib/modules/datasource/galaxy/index.ts
+++ b/lib/modules/datasource/galaxy/index.ts
@@ -29,7 +29,10 @@ export class GalaxyDatasource extends Datasource {
     const userName = lookUp[0];
     const projectName = lookUp[1];
 
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const galaxyAPIUrl = `${registryUrl}api/v1/roles/?owner__username=${userName}&name=${projectName}`;
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const galaxyProjectUrl = `${registryUrl}${userName}/${projectName}`;
 
     let raw: HttpResponse<GalaxyResult> | null = null;
diff --git a/lib/modules/datasource/git-refs/base.ts b/lib/modules/datasource/git-refs/base.ts
index 3b3e656a78a7ac775aeb199208f9fbd2876a5587..eddd489e9cf67b4588d67378477f61607414108b 100644
--- a/lib/modules/datasource/git-refs/base.ts
+++ b/lib/modules/datasource/git-refs/base.ts
@@ -1,5 +1,5 @@
 import is from '@sindresorhus/is';
-import simpleGit from 'simple-git';
+import { simpleGit } from 'simple-git';
 import { logger } from '../../../logger';
 import { cache } from '../../../util/cache/package/decorator';
 import { simpleGitConfig } from '../../../util/git/config';
diff --git a/lib/modules/datasource/github-releases/index.ts b/lib/modules/datasource/github-releases/index.ts
index 8ed5f66920daab958bed0e6317fc6829b6b4ad63..33d02b4f73ab0448e537d83c2e8e076167cf18b5 100644
--- a/lib/modules/datasource/github-releases/index.ts
+++ b/lib/modules/datasource/github-releases/index.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import hasha from 'hasha';
 import { logger } from '../../../logger';
 import { cache } from '../../../util/cache/package/decorator';
diff --git a/lib/modules/datasource/gitlab-packages/index.ts b/lib/modules/datasource/gitlab-packages/index.ts
index edc1d8f023cf9005c89a62852df27f68ba3e40c4..dd862e437b0cbcad881822adb5456c99edd48d37 100644
--- a/lib/modules/datasource/gitlab-packages/index.ts
+++ b/lib/modules/datasource/gitlab-packages/index.ts
@@ -43,6 +43,8 @@ export class GitlabPackagesDatasource extends Datasource {
   @cache({
     namespace: `datasource-${datasource}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}-${packageName}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/gitlab-releases/index.ts b/lib/modules/datasource/gitlab-releases/index.ts
index 556362c55b963d4f691b428c307ca5e92c51a85b..37182f47a3fb854134735d2be3f9a3bd0ce01819 100644
--- a/lib/modules/datasource/gitlab-releases/index.ts
+++ b/lib/modules/datasource/gitlab-releases/index.ts
@@ -19,6 +19,8 @@ export class GitlabReleasesDatasource extends Datasource {
   @cache({
     namespace: `datasource-${GitlabReleasesDatasource.id}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}/${packageName}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/go/base.ts b/lib/modules/datasource/go/base.ts
index b370c3bb02555d168ea41afd2df8ba5acec845ad..b6bbc1a3dc04cc1e08579164a78acdfa1f810288 100644
--- a/lib/modules/datasource/go/base.ts
+++ b/lib/modules/datasource/go/base.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import URL from 'url';
 import { PlatformId } from '../../../constants';
 import { logger } from '../../../logger';
diff --git a/lib/modules/datasource/go/index.ts b/lib/modules/datasource/go/index.ts
index 1830ed81c7a72c3d303fe1abb4107a8cd1e6c2ad..8b58406455ca2791321e73bca0abb0400bbc7df2 100644
--- a/lib/modules/datasource/go/index.ts
+++ b/lib/modules/datasource/go/index.ts
@@ -25,6 +25,8 @@ export class GoDatasource extends Datasource {
 
   @cache({
     namespace: `datasource-${GoDatasource.id}`,
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     key: ({ packageName }: Partial<DigestConfig>) => `${packageName}-digest`,
   })
   getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {
diff --git a/lib/modules/datasource/go/releases-goproxy.ts b/lib/modules/datasource/go/releases-goproxy.ts
index 27dced5604d6b55972451d219b60023b2e440b8c..0f98bbfbf93aef692b6d2fdccaf937af60a34eca 100644
--- a/lib/modules/datasource/go/releases-goproxy.ts
+++ b/lib/modules/datasource/go/releases-goproxy.ts
@@ -229,6 +229,8 @@ export class GoProxyDatasource extends Datasource {
   static getCacheKey({ packageName }: GetReleasesConfig): string {
     const goproxy = process.env.GOPROXY;
     const noproxy = GoProxyDatasource.parseNoproxy();
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     return `${packageName}@@${goproxy}@@${noproxy?.toString()}`;
   }
 }
diff --git a/lib/modules/datasource/golang-version/index.ts b/lib/modules/datasource/golang-version/index.ts
index ecaeb256281935f3f792d6cac0cf340a94cf54d4..1b0ad45e544faf25c031097c97284ebd5d4c664d 100644
--- a/lib/modules/datasource/golang-version/index.ts
+++ b/lib/modules/datasource/golang-version/index.ts
@@ -40,6 +40,8 @@ export class GolangVersionDatasource extends Datasource {
       sourceUrl: 'https://github.com/golang/go',
       releases: [],
     };
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const golangVersionsUrl = `${registryUrl}master/internal/history/release.go`;
 
     const response = await this.http.get(golangVersionsUrl);
diff --git a/lib/modules/datasource/gradle-version/index.ts b/lib/modules/datasource/gradle-version/index.ts
index d2d8ddd67943bcd76c510ac7df594eb10577a452..0652e02c71cd2d629920e94167b36a2c53984000 100644
--- a/lib/modules/datasource/gradle-version/index.ts
+++ b/lib/modules/datasource/gradle-version/index.ts
@@ -26,6 +26,8 @@ export class GradleVersionDatasource extends Datasource {
 
   @cache({
     namespace: `datasource-${GradleVersionDatasource.id}`,
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     key: ({ registryUrl }: GetReleasesConfig) => `${registryUrl}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/jenkins-plugins/index.ts b/lib/modules/datasource/jenkins-plugins/index.ts
index 85048c5da3821a91c67319f78cc6f962b0d7fa2a..aef686da9b17ae2ebd40a80b928b73dd3dac561e 100644
--- a/lib/modules/datasource/jenkins-plugins/index.ts
+++ b/lib/modules/datasource/jenkins-plugins/index.ts
@@ -74,7 +74,9 @@ export class JenkinsPluginsDatasource extends Datasource {
         version,
         downloadUrl: plugins[name][version]?.url,
         releaseTimestamp: plugins[name][version]?.buildDate
-          ? new Date(`${plugins[name][version].buildDate} UTC`)
+          ? // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+            new Date(`${plugins[name][version].buildDate} UTC`)
           : null,
       }));
     }
diff --git a/lib/modules/datasource/maven/util.ts b/lib/modules/datasource/maven/util.ts
index 1a06e0436ca6d68f3f241eb3f9be51da0fc89ce9..27cedda4b67e585d582308020f30199551267460 100644
--- a/lib/modules/datasource/maven/util.ts
+++ b/lib/modules/datasource/maven/util.ts
@@ -369,10 +369,14 @@ export async function createUrlForDependencyPom(
 
     // If we were able to resolve the version, use that, otherwise fall back to using -SNAPSHOT
     if (fullVersion !== null) {
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       return `${version}/${dependency.name}-${fullVersion}.pom`;
     }
   }
 
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
   return `${version}/${dependency.name}-${version}.pom`;
 }
 
diff --git a/lib/modules/datasource/node/index.ts b/lib/modules/datasource/node/index.ts
index 96e3a1612bc3493e515d48a534bf0529fd4fa65d..c3585953904bae1a185a26179ba4d7d999fa42e7 100644
--- a/lib/modules/datasource/node/index.ts
+++ b/lib/modules/datasource/node/index.ts
@@ -23,6 +23,8 @@ export class NodeDatasource extends Datasource {
 
   @cache({
     namespace: `datasource-${datasource}`,
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     key: ({ registryUrl }: GetReleasesConfig) => `${registryUrl}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/npm/get.ts b/lib/modules/datasource/npm/get.ts
index bcaeac57a1840aea0d7f3eea2a87d74731c7ee0b..5660a02d5f98ad2dd0b6ff5d2374807ed3fb96c4 100644
--- a/lib/modules/datasource/npm/get.ts
+++ b/lib/modules/datasource/npm/get.ts
@@ -35,6 +35,8 @@ function getPackageSource(repository: any): PackageSource {
     if (is.nonEmptyString(repository.directory)) {
       res.sourceDirectory = repository.directory;
     }
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const sourceUrlCopy = `${res.sourceUrl}`;
     const sourceUrlSplit: string[] = sourceUrlCopy.split('/');
     if (sourceUrlSplit.length > 7 && sourceUrlSplit[2] === 'github.com') {
diff --git a/lib/modules/datasource/nuget/v2.ts b/lib/modules/datasource/nuget/v2.ts
index 7353f9514cdc296d64f471accb4f7fd72a8bba81..a8000f9186758016aec2dec3ba6e1cb2cc20497f 100644
--- a/lib/modules/datasource/nuget/v2.ts
+++ b/lib/modules/datasource/nuget/v2.ts
@@ -33,6 +33,8 @@ export async function getReleases(
       const version = getPkgProp(pkgInfo, 'Version');
       const releaseTimestamp = getPkgProp(pkgInfo, 'Published');
       dep.releases.push({
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
         version: removeBuildMeta(`${version}`),
         releaseTimestamp,
       });
diff --git a/lib/modules/datasource/nuget/v3.ts b/lib/modules/datasource/nuget/v3.ts
index b2c81d1e0a9e0f07c54a20134297bc1dfc6727c8..d3893923912941a60f3457b1fb8e789b815d159f 100644
--- a/lib/modules/datasource/nuget/v3.ts
+++ b/lib/modules/datasource/nuget/v3.ts
@@ -169,7 +169,11 @@ export async function getReleases(
     if (is.nonEmptyString(packageBaseAddress)) {
       const nuspecUrl = `${ensureTrailingSlash(
         packageBaseAddress
-      )}${pkgName.toLowerCase()}/${latestStable}/${pkgName.toLowerCase()}.nuspec`;
+      )}${pkgName.toLowerCase()}/${
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+        latestStable
+      }/${pkgName.toLowerCase()}.nuspec`;
       const metaresult = await http.get(nuspecUrl);
       const nuspec = new XmlDocument(metaresult.body);
       const sourceUrl = nuspec.valueWithPath('metadata.repository@url');
diff --git a/lib/modules/datasource/pod/index.ts b/lib/modules/datasource/pod/index.ts
index f567e237c79a85b004c46d721d88d8a36e661c55..33998c1c1865a34fac68e4da3b5fb49acef53260 100644
--- a/lib/modules/datasource/pod/index.ts
+++ b/lib/modules/datasource/pod/index.ts
@@ -209,6 +209,8 @@ export class PodDatasource extends Datasource {
     ttlMinutes: 30,
     namespace: `datasource-${PodDatasource.id}`,
     key: ({ packageName, registryUrl }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}:${packageName}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/puppet-forge/index.ts b/lib/modules/datasource/puppet-forge/index.ts
index beeb323001cf7d57613047d01bdd82742cdddfdc..8c2b4ad289bd0f003e97d6b9c5bc3e5fa7439bab 100644
--- a/lib/modules/datasource/puppet-forge/index.ts
+++ b/lib/modules/datasource/puppet-forge/index.ts
@@ -18,6 +18,8 @@ export class PuppetForgeDatasource extends Datasource {
   }: GetReleasesConfig): Promise<ReleaseResult | null> {
     // https://forgeapi.puppet.com
     const moduleSlug = packageName.replace('/', '-');
+    // TODO: types (#7154)
+    /* eslint-disable-next-line @typescript-eslint/restrict-template-expressions */
     const url = `${registryUrl}/v3/modules/${moduleSlug}?exclude_fields=current_release`;
 
     let module: PuppetModule;
diff --git a/lib/modules/datasource/ruby-version/index.ts b/lib/modules/datasource/ruby-version/index.ts
index a04cc1b552649c965370cbd600c1ee6b04d0b15a..ac155f6bdb5ba9557034ca9c6b493fbd9eaf709b 100644
--- a/lib/modules/datasource/ruby-version/index.ts
+++ b/lib/modules/datasource/ruby-version/index.ts
@@ -28,6 +28,8 @@ export class RubyVersionDatasource extends Datasource {
       sourceUrl: 'https://github.com/ruby/ruby',
       releases: [],
     };
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const rubyVersionsUrl = `${registryUrl}en/downloads/releases/`;
     try {
       const response = await this.http.get(rubyVersionsUrl);
diff --git a/lib/modules/datasource/rubygems/index.ts b/lib/modules/datasource/rubygems/index.ts
index 4eab67ef7b8121c4900e1232a7b6ec49630f95eb..ad3190635b7303545da9f7f30e57b823d235a9c6 100644
--- a/lib/modules/datasource/rubygems/index.ts
+++ b/lib/modules/datasource/rubygems/index.ts
@@ -32,6 +32,8 @@ export class RubyGemsDatasource extends Datasource {
   @cache({
     namespace: `datasource-${RubyGemsDatasource.id}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      /* eslint-disable @typescript-eslint/restrict-template-expressions */
       `${registryUrl}/${packageName}`,
   })
   getReleases({
diff --git a/lib/modules/datasource/terraform-module/index.ts b/lib/modules/datasource/terraform-module/index.ts
index 61817a45cfbc17b93bf70803aabcdf440d72534f..7e412935d5ca658fe7f833cda2f9e6e9f46a0f1e 100644
--- a/lib/modules/datasource/terraform-module/index.ts
+++ b/lib/modules/datasource/terraform-module/index.ts
@@ -80,6 +80,8 @@ export class TerraformModuleDatasource extends TerraformDatasource {
     let pkgUrl: string;
 
     try {
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       pkgUrl = `${registryUrl}${serviceDiscovery['modules.v1']}${repository}`;
       res = (await this.http.getJson<TerraformRelease>(pkgUrl)).body;
       const returnedName = res.namespace + '/' + res.name + '/' + res.provider;
@@ -123,6 +125,8 @@ export class TerraformModuleDatasource extends TerraformDatasource {
     let res: TerraformModuleVersions;
     let pkgUrl: string;
     try {
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       pkgUrl = `${registryUrl}${serviceDiscovery['modules.v1']}${repository}/versions`;
       res = (await this.http.getJson<TerraformModuleVersions>(pkgUrl)).body;
       if (res.modules.length < 1) {
diff --git a/lib/modules/datasource/terraform-provider/index.ts b/lib/modules/datasource/terraform-provider/index.ts
index af8b2a217e63f2665cd937dc60504e82af4d8518..c2f1882dd74a6f99ad178fc04ba63eed4b75939f 100644
--- a/lib/modules/datasource/terraform-provider/index.ts
+++ b/lib/modules/datasource/terraform-provider/index.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import is from '@sindresorhus/is';
 import pMap from 'p-map';
 import { logger } from '../../../logger';
diff --git a/lib/modules/manager/bazel/update.ts b/lib/modules/manager/bazel/update.ts
index 1556e2890f3f75b7d8f2920f197f5a3f09577de1..68579aeae85fea7db9d146e7440c0ab080801982 100644
--- a/lib/modules/manager/bazel/update.ts
+++ b/lib/modules/manager/bazel/update.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import hasha from 'hasha';
 import { logger } from '../../../logger';
 import * as packageCache from '../../../util/cache/package';
diff --git a/lib/modules/manager/bundler/extract.ts b/lib/modules/manager/bundler/extract.ts
index 858c6a5ff81a8ee7ce0c264d30f700a734e67f6f..acbfd51c2bbe0da21ee0b8d3d18c11653a5ce967 100644
--- a/lib/modules/manager/bundler/extract.ts
+++ b/lib/modules/manager/bundler/extract.ts
@@ -191,6 +191,8 @@ export async function extractPackageFile(
       res.lockFiles = [gemfileLock];
       const lockedEntries = extractLockFileEntries(lockContent);
       for (const dep of res.deps) {
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
         const lockedDepValue = lockedEntries.get(`${dep.depName}`);
         if (lockedDepValue) {
           dep.lockedVersion = lockedDepValue;
diff --git a/lib/modules/manager/bundler/host-rules.ts b/lib/modules/manager/bundler/host-rules.ts
index 5937e54bf880140faa31df8df2cdae139fc31b0a..36234cf255d36c21c6faad55052eca4f3452d1be 100644
--- a/lib/modules/manager/bundler/host-rules.ts
+++ b/lib/modules/manager/bundler/host-rules.ts
@@ -18,8 +18,12 @@ export function findAllAuthenticatable({
 
 export function getAuthenticationHeaderValue(hostRule: HostRule): string {
   if (hostRule.username) {
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     return `${hostRule.username}:${hostRule.password}`;
   }
 
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
   return `${hostRule.token}`;
 }
diff --git a/lib/modules/manager/bundler/update-locked.ts b/lib/modules/manager/bundler/update-locked.ts
index fc6295a89a24a1e13badbdaf717a4b4fe9cc5911..a9389343aa5df6224001517c06401e1ce4b0b179 100644
--- a/lib/modules/manager/bundler/update-locked.ts
+++ b/lib/modules/manager/bundler/update-locked.ts
@@ -10,6 +10,8 @@ export function updateLockedDependency(
   const { depName, currentVersion, newVersion, lockFile, lockFileContent } =
     config;
   logger.debug(
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     `bundler.updateLockedDependency: ${depName}@${currentVersion} -> ${newVersion} [${lockFile}]`
   );
   try {
diff --git a/lib/modules/manager/composer/update-locked.ts b/lib/modules/manager/composer/update-locked.ts
index 9187bfb1ebe2b0ebaf4bc62c9e8023e9caea25c6..3d3b614c7fcba598dc6bb949406b6fa9ec308b6b 100644
--- a/lib/modules/manager/composer/update-locked.ts
+++ b/lib/modules/manager/composer/update-locked.ts
@@ -9,6 +9,8 @@ export function updateLockedDependency(
   const { depName, currentVersion, newVersion, lockFile, lockFileContent } =
     config;
   logger.debug(
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     `composer.updateLockedDependency: ${depName}@${currentVersion} -> ${newVersion} [${lockFile}]`
   );
   try {
diff --git a/lib/modules/manager/composer/utils.ts b/lib/modules/manager/composer/utils.ts
index 92c5eecf26ec49e19a08e28eccbd9858f610298e..6474fbd0e8d7789a2ea0365f71a498f1532923d8 100644
--- a/lib/modules/manager/composer/utils.ts
+++ b/lib/modules/manager/composer/utils.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import { quote } from 'shlex';
 import { GlobalConfig } from '../../../config/global';
 import { logger } from '../../../logger';
diff --git a/lib/modules/manager/git-submodules/artifacts.ts b/lib/modules/manager/git-submodules/artifacts.ts
index f77865f0c4d9283198d6f9fe9f02ee8f65862549..4f960c128ced40f40adebf670f66a7fd4953c8f0 100644
--- a/lib/modules/manager/git-submodules/artifacts.ts
+++ b/lib/modules/manager/git-submodules/artifacts.ts
@@ -6,6 +6,8 @@ export default function updateArtifacts({
 }: UpdateArtifact): UpdateArtifactsResult[] | null {
   const res: UpdateArtifactsResult[] = [];
   updatedDeps.forEach((dep) => {
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     logger.info(`Updating submodule ${dep.depName}`);
     res.push({
       file: { type: 'addition', path: dep.depName!, contents: '' },
diff --git a/lib/modules/manager/gitlabci/utils.ts b/lib/modules/manager/gitlabci/utils.ts
index 8c6092b2ab0219315801082ec680c6ebf138e957..d8afde40bae3663711b653b2591f50910e728769 100644
--- a/lib/modules/manager/gitlabci/utils.ts
+++ b/lib/modules/manager/gitlabci/utils.ts
@@ -31,7 +31,8 @@ export function getGitlabDep(
   const match = depProxyRe.exec(imageName);
   if (match?.groups) {
     const dep = { ...getDep(match.groups.depName), replaceString: imageName };
-    // TODO: #7154
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     dep.autoReplaceStringTemplate = `${match.groups.prefix}${dep.autoReplaceStringTemplate}`;
     return dep;
   }
diff --git a/lib/modules/manager/gomod/artifacts.ts b/lib/modules/manager/gomod/artifacts.ts
index 4b41ccfabafe2f582822f3a2774d1541530b1c2b..2bc7c2b537311dfe94bd8b4a11178c90214840c5 100644
--- a/lib/modules/manager/gomod/artifacts.ts
+++ b/lib/modules/manager/gomod/artifacts.ts
@@ -66,6 +66,8 @@ function getGitEnvironmentVariables(): NodeJS.ProcessEnv {
       const httpUrl = createURLFromHostOrURL(hostRule.matchHost!)?.toString();
       if (validateUrl(httpUrl)) {
         logger.debug(
+          // TODO: types (#7154)
+          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
           `Adding Git authentication for Go Module retrieval for ${httpUrl} using token auth.`
         );
         environmentVariables = getGitAuthenticatedEnvironmentVariables(
@@ -90,6 +92,8 @@ function getUpdateImportPathCmds(
   const updateImportCommands = updatedDeps
     .map((dep) => dep.depName!)
     .filter((x) => !x.startsWith('gopkg.in'))
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     .map((depName) => `mod upgrade --mod-name=${depName} -t=${newMajor}`);
 
   if (updateImportCommands.length > 0) {
diff --git a/lib/modules/manager/gomod/update.ts b/lib/modules/manager/gomod/update.ts
index 63908e67ef30bae4c2da9c87cfa8fd0530261894..f6abe980c6d12afc232d71c94fc1cc50eeb4f1b2 100644
--- a/lib/modules/manager/gomod/update.ts
+++ b/lib/modules/manager/gomod/update.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import { logger } from '../../../logger';
 import { newlineRegex, regEx } from '../../../util/regex';
 import type { UpdateDependencyConfig } from '../types';
diff --git a/lib/modules/manager/gradle/__testutil__/gradle.ts b/lib/modules/manager/gradle/__testutil__/gradle.ts
index 95f9d84980ff671b60a43b7c1f5f0a9a1bd5ef1c..d673ee31ccaa5bbec1fb6aa3575fc80ddbd0c94a 100644
--- a/lib/modules/manager/gradle/__testutil__/gradle.ts
+++ b/lib/modules/manager/gradle/__testutil__/gradle.ts
@@ -20,7 +20,11 @@ function parseJavaVersion(javaVersionOutput: string | undefined): number {
   if (enforceJava) {
     throw Error(`This test suite needs Java and ${failIfNoJavaEnv} is set. However, we cannot parse the Java version.
 The output of java -version was:
-${javaVersionOutput}`);
+${
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+  javaVersionOutput
+}`);
   }
   return 0;
 }
diff --git a/lib/modules/manager/gradle/parser.ts b/lib/modules/manager/gradle/parser.ts
index c3c69dcb77df2c6a281e7aadc3f0800bb2f2934f..48e620a89e21eafd342501e29fa93c852b746c67 100644
--- a/lib/modules/manager/gradle/parser.ts
+++ b/lib/modules/manager/gradle/parser.ts
@@ -185,6 +185,8 @@ function processDepInterpolation({
         const lastToken = token.children[token.children.length - 1];
         if (
           lastToken.type === TokenType.String &&
+          // TODO: types (#7154)
+          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
           lastToken.value.startsWith(`:${dep.currentValue}`)
         ) {
           packageFile = packageFileOrig;
@@ -1193,6 +1195,8 @@ export async function parseGradle(
       // Should not happen, but it's better to be prepared
       logger.warn(
         { packageFile },
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
         `${packageFile} parsing error, results can be incomplete`
       );
       break;
diff --git a/lib/modules/manager/gradle/update.ts b/lib/modules/manager/gradle/update.ts
index 3b8cf531eb86053912dd1d6bec4f9e3a5b2e13d2..36ab93dc6b4257272e15e8262974ae58c1c5b1e9 100644
--- a/lib/modules/manager/gradle/update.ts
+++ b/lib/modules/manager/gradle/update.ts
@@ -24,6 +24,8 @@ export function updateDependency({
       return fileContent;
     }
     if (version === currentValue || upgrade.groupName) {
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       return `${leftPart}${newValue}${restPart}`;
     }
     logger.debug({ depName, version, currentValue, newValue }, 'Unknown value');
diff --git a/lib/modules/manager/homebrew/extract.ts b/lib/modules/manager/homebrew/extract.ts
index 716de3178fb920f59b26d17eec43330f1250c2c7..c2d20d9e6f67834914731487a2b669730d9b8ce3 100644
--- a/lib/modules/manager/homebrew/extract.ts
+++ b/lib/modules/manager/homebrew/extract.ts
@@ -166,6 +166,8 @@ export function extractPackageFile(content: string): PackageFile | null {
     skipReason = 'invalid-sha256';
   }
   const dep: PackageDependency = {
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     depName: `${ownerName}/${repoName}`,
     managerData: { ownerName, repoName, sha256, url },
     currentValue,
diff --git a/lib/modules/manager/homebrew/update.ts b/lib/modules/manager/homebrew/update.ts
index 8b8c9655ec4e40cdc16227fc23f3f89243156a0b..aa71dde55756f1a8c926b138c5cb5c186a619156 100644
--- a/lib/modules/manager/homebrew/update.ts
+++ b/lib/modules/manager/homebrew/update.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import hasha from 'hasha';
 import semver from 'semver';
 import { logger } from '../../../logger';
diff --git a/lib/modules/manager/kustomize/extract.ts b/lib/modules/manager/kustomize/extract.ts
index 59d0346e054419003e8492e23aa30c37460e0393..25f6509bd33ed34175e691e5d8aedc58cee2424a 100644
--- a/lib/modules/manager/kustomize/extract.ts
+++ b/lib/modules/manager/kustomize/extract.ts
@@ -87,6 +87,8 @@ export function extractImage(image: Image): PackageDependency | null {
       };
     }
 
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const dep = splitImageParts(`${depName}:${newTag}`);
     return {
       ...dep,
diff --git a/lib/modules/manager/npm/extract/locked-versions.ts b/lib/modules/manager/npm/extract/locked-versions.ts
index b8d881027afef652ba135280abbdb8d294716728..ac197b1a24a1e56a4770717db14a27535edd14f2 100644
--- a/lib/modules/manager/npm/extract/locked-versions.ts
+++ b/lib/modules/manager/npm/extract/locked-versions.ts
@@ -35,6 +35,8 @@ export async function getLockedVersions(
       for (const dep of packageFile.deps) {
         dep.lockedVersion =
           lockFileCache[yarnLock].lockedVersions[
+            // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
             `${dep.depName}@${dep.currentValue}`
           ];
         if (
@@ -46,6 +48,8 @@ export async function getLockedVersions(
         }
       }
     } else if (npmLock) {
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       logger.debug(`Found ${npmLock} for ${packageFile.packageFile}`);
       lockFiles.push(npmLock);
       if (!lockFileCache[npmLock]) {
diff --git a/lib/modules/manager/npm/post-update/index.ts b/lib/modules/manager/npm/post-update/index.ts
index 1e21bacd46294cd5a529734d2c1c06a50c77dd4a..ee8697e385266aa1a135fa88c94bd5626b23ed9a 100644
--- a/lib/modules/manager/npm/post-update/index.ts
+++ b/lib/modules/manager/npm/post-update/index.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import is from '@sindresorhus/is';
 import deepmerge from 'deepmerge';
 import detectIndent from 'detect-indent';
diff --git a/lib/modules/manager/npm/post-update/lerna.ts b/lib/modules/manager/npm/post-update/lerna.ts
index 90db8a57c187b1958a15186b5d90278e2b99448c..22d9a8717fb7651c33f86cceba88f5063c775ef2 100644
--- a/lib/modules/manager/npm/post-update/lerna.ts
+++ b/lib/modules/manager/npm/post-update/lerna.ts
@@ -18,6 +18,8 @@ export function getLernaVersion(
   const lernaDep = lernaPackageFile.deps?.find((d) => d.depName === 'lerna');
   if (!lernaDep || !semver.validRange(lernaDep.currentValue)) {
     logger.warn(
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `Could not detect lerna version in ${lernaPackageFile.packageFile}, using 'latest'`
     );
     return 'latest';
diff --git a/lib/modules/manager/npm/post-update/npm.ts b/lib/modules/manager/npm/post-update/npm.ts
index a9375269bdacf7f6f1fb5d6e7723afc4bbc04f7a..b757111cdec4ea69ea083bef54ff52ff2772a9eb 100644
--- a/lib/modules/manager/npm/post-update/npm.ts
+++ b/lib/modules/manager/npm/post-update/npm.ts
@@ -89,6 +89,8 @@ export async function generateLockFile(
       const updateCmd =
         `npm install ${cmdOptions}` +
         lockUpdates
+          // TODO: types (#7154)
+          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
           .map((update) => ` ${update.depName}@${update.newVersion}`)
           .join('');
       commands.push(updateCmd);
diff --git a/lib/modules/manager/npm/post-update/rules.ts b/lib/modules/manager/npm/post-update/rules.ts
index dad235b0566e5da67bc608a3753e2058ef4d4bd3..dd905086d280420f4ce06383420d16a44cdf577c 100644
--- a/lib/modules/manager/npm/post-update/rules.ts
+++ b/lib/modules/manager/npm/post-update/rules.ts
@@ -23,7 +23,9 @@ export function processHostRules(): HostRulesResult {
       uri =
         is.string(uri) && validateUrl(uri)
           ? uri.replace(regEx(/^https?:/), '')
-          : `//${uri}/`;
+          : // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+            `//${uri}/`;
       if (hostRule.token) {
         const key = hostRule.authType === 'Basic' ? '_auth' : '_authToken';
         additionalNpmrcContent.push(`${uri}:${key}=${hostRule.token}`);
diff --git a/lib/modules/manager/npm/post-update/yarn.ts b/lib/modules/manager/npm/post-update/yarn.ts
index 2129f4a9ce13bb2b8dbf178907955f9d09f3feec..d1036e9109f298d0b2f4ddc726dc0c8c7a565078 100644
--- a/lib/modules/manager/npm/post-update/yarn.ts
+++ b/lib/modules/manager/npm/post-update/yarn.ts
@@ -195,6 +195,8 @@ export async function generateLockFile(
 
     if (yarnUpdate && !isYarn1) {
       logger.debug('Updating Yarn binary');
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       commands.push(`yarn set version ${yarnUpdate.newValue}`);
     }
 
@@ -219,6 +221,8 @@ export async function generateLockFile(
         // `yarn up` updates to the latest release, so the range should be specified
         commands.push(
           `yarn up ${lockUpdates
+            // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
             .map((update) => `${update.depName}@${update.newValue}`)
             .filter(uniqueStrings)
             .join(' ')}${cmdOptions}`
diff --git a/lib/modules/manager/npm/update/dependency/index.ts b/lib/modules/manager/npm/update/dependency/index.ts
index 57ef571f6308d390f947bcfe0f6f6d9b9b400b76..72437a726e9cfac7b8044fc54fc87a7b09409cb6 100644
--- a/lib/modules/manager/npm/update/dependency/index.ts
+++ b/lib/modules/manager/npm/update/dependency/index.ts
@@ -130,8 +130,12 @@ export function updateDependency({
     }
   }
   if (upgrade.npmPackageAlias) {
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     newValue = `npm:${upgrade.packageName}@${newValue}`;
   }
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
   logger.debug(`npm.updateDependency(): ${depType}.${depName} = ${newValue}`);
   try {
     const parsedContents: NpmPackage = JSON.parse(fileContent);
@@ -140,6 +144,8 @@ export function updateDependency({
     let oldVersion: string | undefined;
     if (depType === 'packageManager') {
       oldVersion = parsedContents[depType];
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       newValue = `${depName}@${newValue}`;
     } else if (isOverrideObject(upgrade)) {
       overrideDepParents = managerData?.parents;
@@ -248,6 +254,8 @@ export function updateDependency({
             'dependenciesMeta',
             depName,
             depKey,
+            // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
             `${depName}@${newValue}`
           );
         }
diff --git a/lib/modules/manager/npm/update/locked-dependency/package-lock/index.ts b/lib/modules/manager/npm/update/locked-dependency/package-lock/index.ts
index 353641cb6bfd6842718b5eaa9dd2e8af2e667d05..b7a6a23be37e1da67baaa5c3b7c34e0c17444260 100644
--- a/lib/modules/manager/npm/update/locked-dependency/package-lock/index.ts
+++ b/lib/modules/manager/npm/update/locked-dependency/package-lock/index.ts
@@ -25,6 +25,8 @@ export async function updateLockedDependency(
     allowHigherOrRemoved = false,
   } = config;
   logger.debug(
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     `npm.updateLockedDependency: ${depName}@${currentVersion} -> ${newVersion} [${lockFile}]`
   );
   try {
@@ -50,6 +52,8 @@ export async function updateLockedDependency(
     );
     if (lockedDeps.some((dep) => dep.bundled)) {
       logger.info(
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
         `Package ${depName}@${currentVersion} is bundled and cannot be updated`
       );
       return { status: 'update-failed' };
@@ -63,12 +67,16 @@ export async function updateLockedDependency(
       let status: 'update-failed' | 'already-updated';
       if (newLockedDeps.length) {
         logger.debug(
+          // TODO: types (#7154)
+          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
           `${depName}@${currentVersion} not found in ${lockFile} but ${depName}@${newVersion} was - looks like it's already updated`
         );
         status = 'already-updated';
       } else {
         if (lockfileVersion !== 1) {
           logger.debug(
+            // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
             `Found lockfileVersion ${packageLockJson.lockfileVersion}`
           );
           status = 'update-failed';
@@ -104,6 +112,8 @@ export async function updateLockedDependency(
           }
         } else {
           logger.debug(
+            // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
             `${depName}@${currentVersion} not found in ${lockFile} - cannot update`
           );
           status = 'update-failed';
@@ -151,6 +161,8 @@ export async function updateLockedDependency(
         // Parent dependency is compatible with the new version we want
         logger.debug(
           `${depName} can be updated to ${newVersion} in-range with matching constraint "${constraint}" in ${
+            // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
             parentDepName ? `${parentDepName}@${parentVersion}` : packageFile
           }`
         );
@@ -234,6 +246,8 @@ export async function updateLockedDependency(
       // istanbul ignore if: hard to test due to recursion
       if (!parentUpdateResult.files) {
         logger.debug(
+          // TODO: types (#7154)
+          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
           `Update of ${depName} to ${newVersion} impossible due to failed update of parent ${parentUpdate.depName} to ${parentUpdate.newVersion}`
         );
         return { status: 'update-failed' };
diff --git a/lib/modules/manager/npm/update/locked-dependency/yarn-lock/index.ts b/lib/modules/manager/npm/update/locked-dependency/yarn-lock/index.ts
index da325462afe76a5ceed984f87ef819d8196a4345..86c9301a72bd45df6e3ef1c9ee3142b39d0fda7a 100644
--- a/lib/modules/manager/npm/update/locked-dependency/yarn-lock/index.ts
+++ b/lib/modules/manager/npm/update/locked-dependency/yarn-lock/index.ts
@@ -12,6 +12,8 @@ export function updateLockedDependency(
   const { depName, currentVersion, newVersion, lockFile, lockFileContent } =
     config;
   logger.debug(
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     `npm.updateLockedDependency: ${depName}@${currentVersion} -> ${newVersion} [${lockFile}]`
   );
   let yarnLock: YarnLock;
@@ -41,11 +43,15 @@ export function updateLockedDependency(
       );
       if (newLockedDeps.length) {
         logger.debug(
+          // TODO: types (#7154)
+          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
           `${depName}@${currentVersion} not found in ${lockFile} but ${depName}@${newVersion} was - looks like it's already updated`
         );
         return { status: 'already-updated' };
       }
       logger.debug(
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
         `${depName}@${currentVersion} not found in ${lockFile} - cannot update`
       );
       return { status: 'update-failed' };
diff --git a/lib/modules/platform/azure/index.ts b/lib/modules/platform/azure/index.ts
index 012119069dfa34c10b5581f5fec9f28a7d64dde1..feb18fac5396a1a2071d45cb34d7b2a4f6f1e825 100644
--- a/lib/modules/platform/azure/index.ts
+++ b/lib/modules/platform/azure/index.ts
@@ -688,6 +688,7 @@ export async function mergePr({
     `Updating PR ${pullRequestId} to status ${PullRequestStatus.Completed} (${
       PullRequestStatus[PullRequestStatus.Completed]
     }) with lastMergeSourceCommit ${
+      // TODO: types (#7154)
       // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       pr.lastMergeSourceCommit?.commitId
     } using mergeStrategy ${mergeMethod} (${
diff --git a/lib/modules/platform/bitbucket-server/utils.ts b/lib/modules/platform/bitbucket-server/utils.ts
index a3c1c8ab3b26b5b18c497eed88852295b6bf5a43..5320b7ce141ab3326d8f21d5fcd62c6e082fae92 100644
--- a/lib/modules/platform/bitbucket-server/utils.ts
+++ b/lib/modules/platform/bitbucket-server/utils.ts
@@ -168,6 +168,8 @@ function generateUrlFromEndpoint(
   const url = new URL(defaultEndpoint);
   const generatedUrl = git.getUrl({
     protocol: url.protocol as GitProtocol,
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     auth: `${opts.username}:${opts.password}`,
     host: `${url.host}${url.pathname}${
       // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
diff --git a/lib/modules/platform/bitbucket/index.ts b/lib/modules/platform/bitbucket/index.ts
index 9156c93f0f362e4abb47389bdcbb757eed06133f..2f089c1d50ade7dda00fd7565178bf3d4a2cf191 100644
--- a/lib/modules/platform/bitbucket/index.ts
+++ b/lib/modules/platform/bitbucket/index.ts
@@ -194,6 +194,8 @@ export async function initRepo({
 
   const url = git.getUrl({
     protocol: 'https',
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     auth: `${opts.username}:${opts.password}`,
     hostname: hostnameWithoutApiPrefix,
     repository,
@@ -249,6 +251,8 @@ export async function findPr({
   prTitle,
   state = PrState.All,
 }: FindPRConfig): Promise<Pr | null> {
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
   logger.debug(`findPr(${branchName}, ${prTitle}, ${state})`);
   const prList = await getPrList();
   const pr = prList.find(
@@ -330,6 +334,8 @@ async function getStatus(
 ): Promise<utils.BitbucketStatus[]> {
   const sha = await getBranchCommit(branchName);
   return utils.accumulateValues<utils.BitbucketStatus>(
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     `/2.0/repositories/${config.repository}/commit/${sha}/statuses`,
     'get',
     { useCache }
@@ -399,6 +405,8 @@ export async function setBranchStatus({
   };
 
   await bitbucketHttp.postJson(
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     `/2.0/repositories/${config.repository}/commit/${sha}/statuses/build`,
     { body }
   );
@@ -847,6 +855,8 @@ export async function mergePr({
   id: prNo,
   strategy: mergeStrategy,
 }: MergePRConfig): Promise<boolean> {
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
   logger.debug(`mergePr(${prNo}, ${branchName}, ${mergeStrategy})`);
 
   // Bitbucket Cloud does not support a rebase-alike; https://jira.atlassian.com/browse/BCLOUD-16610
diff --git a/lib/modules/platform/gitea/index.spec.ts b/lib/modules/platform/gitea/index.spec.ts
index 540db41ee571c797b140f4c43f9df5d84e43c6e2..299b39a0db9f6fae91d3354613d87f06ae89c24d 100644
--- a/lib/modules/platform/gitea/index.spec.ts
+++ b/lib/modules/platform/gitea/index.spec.ts
@@ -453,6 +453,8 @@ describe('modules/platform/gitea/index', () => {
       };
       await gitea.initRepo(repoCfg);
 
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       const url = new URL(`${mockRepo.clone_url}`);
       url.username = token;
       expect(gitvcs.initRepo).toHaveBeenCalledWith(
@@ -478,6 +480,8 @@ describe('modules/platform/gitea/index', () => {
       };
       await gitea.initRepo(repoCfg);
 
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       const url = new URL(`${mockRepo.clone_url}`);
       url.username = token;
       expect(gitvcs.initRepo).toHaveBeenCalledWith(
diff --git a/lib/modules/platform/github/index.ts b/lib/modules/platform/github/index.ts
index 8477040ff003c381e1b92e1d247515a3ebe44be8..5ab17a290ecb16e3d5090ef99a0705c6d2067c98 100644
--- a/lib/modules/platform/github/index.ts
+++ b/lib/modules/platform/github/index.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import URL from 'url';
 import is from '@sindresorhus/is';
 import delay from 'delay';