diff --git a/lib/versioning/cargo/index.ts b/lib/versioning/cargo/index.ts
index 3c35d50990c1480363cae17ec3ecbb8800b3c0b8..99b3beb4d5e112faa9e417cb79f46525545993f2 100644
--- a/lib/versioning/cargo/index.ts
+++ b/lib/versioning/cargo/index.ts
@@ -1,4 +1,5 @@
 import { logger } from '../../logger';
+import type { RangeStrategy } from '../../types/versioning';
 import { regEx } from '../../util/regex';
 import { api as npm } from '../npm';
 import type { NewValueConfig, VersioningApi } from '../types';
@@ -9,7 +10,12 @@ export const urls = [
   'https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html',
 ];
 export const supportsRanges = true;
-export const supportedRangeStrategies = ['bump', 'extend', 'pin', 'replace'];
+export const supportedRangeStrategies: RangeStrategy[] = [
+  'bump',
+  'widen',
+  'pin',
+  'replace',
+];
 
 const isVersion = (input: string): boolean => npm.isVersion(input);
 
diff --git a/lib/versioning/composer/index.ts b/lib/versioning/composer/index.ts
index 4e29b5dfbc318c5790a90d52e343f83d011b78fa..0882a254d97eed1d1d74da06ed599689b7f72016 100644
--- a/lib/versioning/composer/index.ts
+++ b/lib/versioning/composer/index.ts
@@ -1,6 +1,7 @@
 import semver from 'semver';
 import { parseRange } from 'semver-utils';
 import { logger } from '../../logger';
+import type { RangeStrategy } from '../../types/versioning';
 import { regEx } from '../../util/regex';
 import { api as npm } from '../npm';
 import type { NewValueConfig, VersioningApi } from '../types';
@@ -14,9 +15,9 @@ export const urls = [
   'https://semver.mwl.be',
 ];
 export const supportsRanges = true;
-export const supportedRangeStrategies = [
+export const supportedRangeStrategies: RangeStrategy[] = [
   'bump',
-  'extend',
+  'widen',
   'pin',
   'replace',
   'update-lockfile',
diff --git a/lib/versioning/conan/index.ts b/lib/versioning/conan/index.ts
index a27ffae2c15df60a504c5925f789f119b3c5e8af..6426bcedb21f9aa0fcc878e09ac8d7f15c9776e6 100644
--- a/lib/versioning/conan/index.ts
+++ b/lib/versioning/conan/index.ts
@@ -1,4 +1,5 @@
 import * as semver from 'semver';
+import type { RangeStrategy } from '../../types/versioning';
 import { api as looseAPI } from '../loose';
 import type { NewValueConfig, VersioningApi } from '../types';
 import {
@@ -26,7 +27,12 @@ export const urls = [
   'https://docs.conan.io/en/latest/versioning/version_ranges.html#version-ranges',
 ];
 export const supportsRanges = true;
-export const supportedRangeStrategies = ['auto', 'bump', 'widen', 'replace'];
+export const supportedRangeStrategies: RangeStrategy[] = [
+  'auto',
+  'bump',
+  'widen',
+  'replace',
+];
 
 const MIN = 1;
 const MAX = -1;
diff --git a/lib/versioning/gradle/index.ts b/lib/versioning/gradle/index.ts
index 63fd55ae421a08547aa93b309e296ed1f0a86367..647dfaaa998ecffb820fe7a50420c66e427ff653 100644
--- a/lib/versioning/gradle/index.ts
+++ b/lib/versioning/gradle/index.ts
@@ -1,3 +1,4 @@
+import type { RangeStrategy } from '../../types/versioning';
 import { regEx } from '../../util/regex';
 import type { NewValueConfig, VersioningApi } from '../types';
 import {
@@ -17,7 +18,7 @@ export const urls = [
   'https://docs.gradle.org/current/userguide/single_versions.html#version_ordering',
 ];
 export const supportsRanges = true;
-export const supportedRangeStrategies = ['pin'];
+export const supportedRangeStrategies: RangeStrategy[] = ['pin'];
 
 const equals = (a: string, b: string): boolean => compare(a, b) === 0;
 
diff --git a/lib/versioning/hashicorp/index.ts b/lib/versioning/hashicorp/index.ts
index c963e84f5d9d8ee8e59e0a341945a0cbcaecf469..d44937ff833f35bbb187e3a235382211ab5e7031 100644
--- a/lib/versioning/hashicorp/index.ts
+++ b/lib/versioning/hashicorp/index.ts
@@ -1,3 +1,4 @@
+import type { RangeStrategy } from '../../types/versioning';
 import { regEx } from '../../util/regex';
 import { api as npm } from '../npm';
 import type { NewValueConfig, VersioningApi } from '../types';
@@ -8,7 +9,12 @@ export const urls = [
   'https://www.terraform.io/docs/configuration/terraform.html#specifying-a-required-terraform-version',
 ];
 export const supportsRanges = true;
-export const supportedRangeStrategies = ['bump', 'extend', 'pin', 'replace'];
+export const supportedRangeStrategies: RangeStrategy[] = [
+  'bump',
+  'widen',
+  'pin',
+  'replace',
+];
 
 function hashicorp2npm(input: string): string {
   // The only case incompatible with semver is a "short" ~>, e.g. ~> 1.2
diff --git a/lib/versioning/helm/index.ts b/lib/versioning/helm/index.ts
index a05de053fd359be3057b722aff3b4f898fcaca41..cb6f53f742dcdd55c0fe6c8c7e23ed921abb79a9 100644
--- a/lib/versioning/helm/index.ts
+++ b/lib/versioning/helm/index.ts
@@ -1,3 +1,4 @@
+import type { RangeStrategy } from '../../types/versioning';
 import { api as npm } from '../npm';
 import type { VersioningApi } from '../types';
 
@@ -9,9 +10,9 @@ export const urls = [
   'https://github.com/Masterminds/semver#basic-comparisons',
 ];
 export const supportsRanges = true;
-export const supportedRangeStrategies = [
+export const supportedRangeStrategies: RangeStrategy[] = [
   'bump',
-  'extend',
+  'widen',
   'pin',
   'replace',
   'widen',
diff --git a/lib/versioning/hex/index.ts b/lib/versioning/hex/index.ts
index 08b195affb1a72953671f298c77a3f60399d60ef..cb43787797fa4e939d72b83ef7b66ffdcd7f69e0 100644
--- a/lib/versioning/hex/index.ts
+++ b/lib/versioning/hex/index.ts
@@ -1,3 +1,4 @@
+import type { RangeStrategy } from '../../types/versioning';
 import { regEx } from '../../util/regex';
 import { api as npm } from '../npm';
 import type { NewValueConfig, VersioningApi } from '../types';
@@ -6,7 +7,12 @@ export const id = 'hex';
 export const displayName = 'Hex';
 export const urls = ['https://hexdocs.pm/elixir/Version.html'];
 export const supportsRanges = true;
-export const supportedRangeStrategies = ['bump', 'extend', 'pin', 'replace'];
+export const supportedRangeStrategies: RangeStrategy[] = [
+  'bump',
+  'widen',
+  'pin',
+  'replace',
+];
 
 function hex2npm(input: string): string {
   return input
diff --git a/lib/versioning/ivy/index.ts b/lib/versioning/ivy/index.ts
index 0557cc4864abfeed6490f1ba47144d19dd0534f6..4dd8fdfb2f14313265bfe4c90dfd9a31a9c9504f 100644
--- a/lib/versioning/ivy/index.ts
+++ b/lib/versioning/ivy/index.ts
@@ -1,3 +1,4 @@
+import type { RangeStrategy } from '../../types/versioning';
 import maven from '../maven';
 import {
   TYPE_QUALIFIER,
@@ -17,7 +18,12 @@ export const id = 'ivy';
 export const displayName = 'Ivy';
 export const urls = ['https://ant.apache.org/ivy/'];
 export const supportsRanges = true;
-export const supportedRangeStrategies = ['bump', 'extend', 'pin', 'replace'];
+export const supportedRangeStrategies: RangeStrategy[] = [
+  'bump',
+  'widen',
+  'pin',
+  'replace',
+];
 
 // eslint-disable-next-line @typescript-eslint/unbound-method
 const {
diff --git a/lib/versioning/maven/index.ts b/lib/versioning/maven/index.ts
index f4c8301c1345dfd2b9cdc53459513c55f459e018..219cc5295e2bcad7175de3be44c422e52addd3aa 100644
--- a/lib/versioning/maven/index.ts
+++ b/lib/versioning/maven/index.ts
@@ -1,3 +1,4 @@
+import type { RangeStrategy } from '../../types/versioning';
 import type { NewValueConfig, VersioningApi } from '../types';
 import {
   EXCLUDING_POINT,
@@ -22,7 +23,12 @@ export const urls = [
   'https://maven.apache.org/enforcer/enforcer-rules/versionRanges.html',
 ];
 export const supportsRanges = true;
-export const supportedRangeStrategies = ['bump', 'extend', 'pin', 'replace'];
+export const supportedRangeStrategies: RangeStrategy[] = [
+  'bump',
+  'widen',
+  'pin',
+  'replace',
+];
 
 const equals = (a: string, b: string): boolean => compare(a, b) === 0;
 
diff --git a/lib/versioning/npm/index.ts b/lib/versioning/npm/index.ts
index 9736b893dc55cdd4673566ffa8d0790f6bb38536..2a87ed91fa777e07574660985e769d5a0c4d780a 100644
--- a/lib/versioning/npm/index.ts
+++ b/lib/versioning/npm/index.ts
@@ -1,5 +1,6 @@
 import semver from 'semver';
 import stable from 'semver-stable';
+import type { RangeStrategy } from '../../types/versioning';
 import type { VersioningApi } from '../types';
 import { getNewValue } from './range';
 
@@ -12,7 +13,12 @@ export const urls = [
   'https://semver.npmjs.com/',
 ];
 export const supportsRanges = true;
-export const supportedRangeStrategies = ['bump', 'extend', 'pin', 'replace'];
+export const supportedRangeStrategies: RangeStrategy[] = [
+  'bump',
+  'widen',
+  'pin',
+  'replace',
+];
 
 const {
   compare: sortVersions,
diff --git a/lib/versioning/pep440/index.ts b/lib/versioning/pep440/index.ts
index b9bf2890f5862d88a0d7de63784d91eb8e01099f..d395482b1b0baf551ae4cdb9ddf082b9150d6722 100644
--- a/lib/versioning/pep440/index.ts
+++ b/lib/versioning/pep440/index.ts
@@ -1,4 +1,5 @@
 import * as pep440 from '@renovatebot/pep440';
+import type { RangeStrategy } from '../../types/versioning';
 import type { VersioningApi } from '../types';
 import { getNewValue, isLessThanRange } from './range';
 
@@ -6,7 +7,12 @@ export const id = 'pep440';
 export const displayName = 'PEP440';
 export const urls = ['https://www.python.org/dev/peps/pep-0440/'];
 export const supportsRanges = true;
-export const supportedRangeStrategies = ['bump', 'extend', 'pin', 'replace'];
+export const supportedRangeStrategies: RangeStrategy[] = [
+  'bump',
+  'widen',
+  'pin',
+  'replace',
+];
 
 const {
   compare: sortVersions,
diff --git a/lib/versioning/poetry/index.ts b/lib/versioning/poetry/index.ts
index a2915e8aa1373b17202ab28a40821d1d1d2e7f0c..8b6301cee60b9f98c6aa5ac597bff7f16e569f0c 100644
--- a/lib/versioning/poetry/index.ts
+++ b/lib/versioning/poetry/index.ts
@@ -1,7 +1,9 @@
 import { parseRange } from 'semver-utils';
 import { logger } from '../../logger';
+import type { RangeStrategy } from '../../types/versioning';
 import { api as npm } from '../npm';
 import type { NewValueConfig, VersioningApi } from '../types';
+
 import { VERSION_PATTERN } from './patterns';
 import {
   npm2poetry,
@@ -14,7 +16,12 @@ export const id = 'poetry';
 export const displayName = 'Poetry';
 export const urls = ['https://python-poetry.org/docs/versions/'];
 export const supportsRanges = true;
-export const supportedRangeStrategies = ['bump', 'extend', 'pin', 'replace'];
+export const supportedRangeStrategies: RangeStrategy[] = [
+  'bump',
+  'widen',
+  'pin',
+  'replace',
+];
 
 function equals(a: string, b: string): boolean {
   const semverA = poetry2semver(a);
diff --git a/lib/versioning/rez/index.ts b/lib/versioning/rez/index.ts
index 68347753c2cfee25e0f77745b0c379f49a41c897..345095660e1851d43b8ac179109592aa75d3c739 100644
--- a/lib/versioning/rez/index.ts
+++ b/lib/versioning/rez/index.ts
@@ -1,7 +1,9 @@
+import type { RangeStrategy } from '../../types/versioning';
 import { regEx } from '../../util/regex';
 import { api as npm } from '../npm';
 import { api as pep440 } from '../pep440';
 import type { NewValueConfig, VersioningApi } from '../types';
+
 import {
   ascendingRange,
   descendingRange,
@@ -23,7 +25,12 @@ export const id = 'rez';
 export const displayName = 'rez';
 export const urls = ['https://github.com/nerdvegas/rez'];
 export const supportsRanges = true;
-export const supportedRangeStrategies = ['bump', 'extend', 'pin', 'replace'];
+export const supportedRangeStrategies: RangeStrategy[] = [
+  'bump',
+  'widen',
+  'pin',
+  'replace',
+];
 
 function equals(a: string, b: string): boolean {
   try {
diff --git a/lib/versioning/ruby/index.ts b/lib/versioning/ruby/index.ts
index b2218b687381fa73e66f0065bc903618b04c9faa..ace10e5b8bce85c4b07d3f486631d9bd165fd329 100644
--- a/lib/versioning/ruby/index.ts
+++ b/lib/versioning/ruby/index.ts
@@ -7,6 +7,7 @@ import {
   valid,
 } from '@renovatebot/ruby-semver';
 import { logger } from '../../logger';
+import type { RangeStrategy } from '../../types/versioning';
 import { regEx } from '../../util/regex';
 import type { NewValueConfig, VersioningApi } from '../types';
 import { isSingleOperator, isValidOperator } from './operator';
@@ -22,7 +23,12 @@ export const urls = [
   'https://www.devalot.com/articles/2012/04/gem-versions.html',
 ];
 export const supportsRanges = true;
-export const supportedRangeStrategies = ['bump', 'extend', 'pin', 'replace'];
+export const supportedRangeStrategies: RangeStrategy[] = [
+  'bump',
+  'widen',
+  'pin',
+  'replace',
+];
 
 function vtrim<T = unknown>(version: T): string | T {
   if (typeof version === 'string') {
@@ -74,12 +80,14 @@ export const isValid = (input: string): boolean =>
 
 export const matches = (version: string, range: string): boolean =>
   satisfies(vtrim(version), vtrim(range));
+
 function getSatisfyingVersion(
   versions: string[],
   range: string
 ): string | null {
   return maxSatisfying(versions.map(vtrim), vtrim(range));
 }
+
 function minSatisfyingVersion(
   versions: string[],
   range: string
diff --git a/lib/versioning/swift/index.ts b/lib/versioning/swift/index.ts
index d3de422d7797fa6f583a04e7345e2e336a783779..e920aa2b19ab5dcd80f4261d397c7fe555b965c6 100644
--- a/lib/versioning/swift/index.ts
+++ b/lib/versioning/swift/index.ts
@@ -1,5 +1,6 @@
 import semver from 'semver';
 import stable from 'semver-stable';
+import type { RangeStrategy } from '../../types/versioning';
 import { regEx } from '../../util/regex';
 import type { VersioningApi } from '../types';
 import { getNewValue, toSemverRange } from './range';
@@ -8,7 +9,12 @@ export const id = 'swift';
 export const displayName = 'Swift';
 export const urls = ['https://swift.org/package-manager/'];
 export const supportsRanges = true;
-export const supportedRangeStrategies = ['bump', 'extend', 'pin', 'replace'];
+export const supportedRangeStrategies: RangeStrategy[] = [
+  'bump',
+  'widen',
+  'pin',
+  'replace',
+];
 
 const { is: isStable } = stable;