diff --git a/modules/sdk-core/src/bitgo/wallet/wallet.ts b/modules/sdk-core/src/bitgo/wallet/wallet.ts index 73c1b4189c..9afc8d033d 100644 --- a/modules/sdk-core/src/bitgo/wallet/wallet.ts +++ b/modules/sdk-core/src/bitgo/wallet/wallet.ts @@ -4346,7 +4346,9 @@ export class Wallet implements IWallet { if ( typeof params.prebuildTx === 'string' || - (params.prebuildTx?.buildParams?.type !== 'enabletoken' && params.prebuildTx?.buildParams?.type !== 'enableMpt') + (params.prebuildTx?.buildParams?.type !== 'enabletoken' && + params.prebuildTx?.buildParams?.type !== 'enableMpt' && + params.prebuildTx?.buildParams?.type !== 'disabletoken') ) { throw new Error('Invalid build of token enablement.'); } diff --git a/modules/sdk-core/test/unit/bitgo/wallet/tokenApproval.ts b/modules/sdk-core/test/unit/bitgo/wallet/tokenApproval.ts index 7ccd1ae474..b7de3b613b 100644 --- a/modules/sdk-core/test/unit/bitgo/wallet/tokenApproval.ts +++ b/modules/sdk-core/test/unit/bitgo/wallet/tokenApproval.ts @@ -1,6 +1,6 @@ import sinon from 'sinon'; import 'should'; -import { BuildTokenApprovalResponse, Wallet } from '../../../../src'; +import { BuildTokenApprovalResponse, PrebuildTransactionResult, Wallet } from '../../../../src'; describe('Wallet - Token Approval', function () { let wallet: Wallet; @@ -224,6 +224,18 @@ describe('Wallet - Token Approval', function () { sinon.assert.calledOnce(initiateStub); }); + it('should pass validation and proceed when buildParams.type is "disabletoken"', async function () { + const initiateStub = sinon.stub(teWallet, 'initiateTransaction' as keyof Wallet).resolves({ txid: 'disable789' }); + + const result = await teWallet.sendTokenEnablement({ + // Partial fixture: only the fields sendTokenEnablement's validation guard reads. + prebuildTx: { buildParams: { type: 'disabletoken' } } as unknown as PrebuildTransactionResult, + }); + + result.should.eql({ txid: 'disable789' }); + sinon.assert.calledOnce(initiateStub); + }); + it('should throw when the coin does not require token enablement', async function () { teBaseCoin.getTokenEnablementConfig.returns({ requiresTokenEnablement: false });