From 36ffe11ff6216e6fd461a4fd3633ea613cf98f1f Mon Sep 17 00:00:00 2001 From: Deepak Jangid Date: Wed, 17 Dec 2025 12:57:19 +0530 Subject: [PATCH] feat(sdk-core): support forwarderVersion 5 in createAddress - Update SDK validation to allow forwarderVersion 0-5 (was 0-4) - Add t.literal(5) to ForwarderVersion type in express schemas - Update unit tests for new valid range TICKET: COIN-6943 --- modules/bitgo/test/v2/unit/wallet.ts | 4 ++-- modules/express/src/typedRoutes/schemas/address.ts | 9 ++++++++- modules/express/test/unit/typedRoutes/createAddress.ts | 4 ++-- modules/sdk-core/src/bitgo/wallet/wallet.ts | 4 ++-- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/modules/bitgo/test/v2/unit/wallet.ts b/modules/bitgo/test/v2/unit/wallet.ts index 8761d161a0..d6f198138e 100644 --- a/modules/bitgo/test/v2/unit/wallet.ts +++ b/modules/bitgo/test/v2/unit/wallet.ts @@ -820,8 +820,8 @@ describe('V2 Wallet:', function () { // @ts-expect-error checking type mismatch await wallet.createAddress({ allowSkipVerifyAddress: null }).should.be.rejectedWith(message); - message = 'forwarderVersion has to be an integer 0, 1, 2, 3 or 4'; - await wallet.createAddress({ forwarderVersion: 5 }).should.be.rejectedWith(message); + message = 'forwarderVersion has to be an integer 0, 1, 2, 3, 4 or 5'; + await wallet.createAddress({ forwarderVersion: 6 }).should.be.rejectedWith(message); await wallet.createAddress({ forwarderVersion: -1 }).should.be.rejectedWith(message); }); diff --git a/modules/express/src/typedRoutes/schemas/address.ts b/modules/express/src/typedRoutes/schemas/address.ts index 0e9a9b9b66..ad2a1cc522 100644 --- a/modules/express/src/typedRoutes/schemas/address.ts +++ b/modules/express/src/typedRoutes/schemas/address.ts @@ -1,6 +1,13 @@ import * as t from 'io-ts'; -export const ForwarderVersion = t.union([t.literal(0), t.literal(1), t.literal(2), t.literal(3), t.literal(4)]); +export const ForwarderVersion = t.union([ + t.literal(0), + t.literal(1), + t.literal(2), + t.literal(3), + t.literal(4), + t.literal(5), +]); export const EIP1559 = t.type({ maxFeePerGas: t.number, diff --git a/modules/express/test/unit/typedRoutes/createAddress.ts b/modules/express/test/unit/typedRoutes/createAddress.ts index 3a494f128f..5e34dd1669 100644 --- a/modules/express/test/unit/typedRoutes/createAddress.ts +++ b/modules/express/test/unit/typedRoutes/createAddress.ts @@ -276,7 +276,7 @@ describe('CreateAddress codec tests', function () { }); it('should validate body with all forwarder version values', function () { - const forwarderVersions = [0, 1, 2, 3, 4]; + const forwarderVersions = [0, 1, 2, 3, 4, 5]; forwarderVersions.forEach((version) => { const validBody = { @@ -289,7 +289,7 @@ describe('CreateAddress codec tests', function () { it('should reject body with invalid forwarder version', function () { const invalidBody = { - forwarderVersion: 5, // not in union [0,1,2,3,4] + forwarderVersion: 6, // not in union [0,1,2,3,4,5] }; assert.throws(() => { diff --git a/modules/sdk-core/src/bitgo/wallet/wallet.ts b/modules/sdk-core/src/bitgo/wallet/wallet.ts index 61ae23a458..ea143758fb 100644 --- a/modules/sdk-core/src/bitgo/wallet/wallet.ts +++ b/modules/sdk-core/src/bitgo/wallet/wallet.ts @@ -1290,8 +1290,8 @@ export class Wallet implements IWallet { } if (!_.isUndefined(forwarderVersion)) { - if (!_.isInteger(forwarderVersion) || forwarderVersion < 0 || forwarderVersion > 4) { - throw new Error('forwarderVersion has to be an integer 0, 1, 2, 3 or 4'); + if (!_.isInteger(forwarderVersion) || forwarderVersion < 0 || forwarderVersion > 5) { + throw new Error('forwarderVersion has to be an integer 0, 1, 2, 3, 4 or 5'); } addressParams.forwarderVersion = forwarderVersion; }