diff --git a/modules/sdk-coin-xdc/src/xdc.ts b/modules/sdk-coin-xdc/src/xdc.ts index 9724ea9c73..285004fc25 100644 --- a/modules/sdk-coin-xdc/src/xdc.ts +++ b/modules/sdk-coin-xdc/src/xdc.ts @@ -62,7 +62,8 @@ export class Xdc extends AbstractEthLikeNewCoins { !txParams?.recipients && !( txParams.prebuildTx?.consolidateId || - (txParams.type && ['acceleration', 'fillNonce', 'transferToken'].includes(txParams.type)) + (txParams.type && + ['acceleration', 'fillNonce', 'transferToken', 'tokenApproval', 'consolidate'].includes(txParams.type)) ) ) { throw new Error(`missing txParams`); diff --git a/modules/sdk-coin-xdc/src/xdcToken.ts b/modules/sdk-coin-xdc/src/xdcToken.ts index 7a4b88dece..3224250cce 100644 --- a/modules/sdk-coin-xdc/src/xdcToken.ts +++ b/modules/sdk-coin-xdc/src/xdcToken.ts @@ -73,7 +73,8 @@ export class XdcToken extends EthLikeToken { !txParams?.recipients && !( txParams.prebuildTx?.consolidateId || - (txParams.type && ['acceleration', 'fillNonce', 'transferToken'].includes(txParams.type)) + (txParams.type && + ['acceleration', 'fillNonce', 'transferToken', 'tokenApproval', 'consolidate'].includes(txParams.type)) ) ) { throw new Error(`missing txParams`); diff --git a/modules/sdk-coin-xdc/test/unit/xdcToken.ts b/modules/sdk-coin-xdc/test/unit/xdcToken.ts index 362cab347e..d59f2ce913 100644 --- a/modules/sdk-coin-xdc/test/unit/xdcToken.ts +++ b/modules/sdk-coin-xdc/test/unit/xdcToken.ts @@ -160,6 +160,40 @@ describe('XDC Token:', function () { result.should.equal(true); }); + it('should return true for tokenApproval type without recipients', async function () { + const token = bitgo.coin('txdc:tmt') as XdcToken; + const mockWallet = {} as unknown as IWallet; + + const result = await token.verifyTssTransaction({ + txParams: { + type: 'tokenApproval', + }, + txPrebuild: mockTokenTransferData.txPrebuild as unknown as Parameters< + typeof token.verifyTssTransaction + >[0]['txPrebuild'], + wallet: mockWallet, + }); + + result.should.equal(true); + }); + + it('should return true for consolidate type without recipients', async function () { + const token = bitgo.coin('txdc:tmt') as XdcToken; + const mockWallet = {} as unknown as IWallet; + + const result = await token.verifyTssTransaction({ + txParams: { + type: 'consolidate', + }, + txPrebuild: mockTokenTransferData.txPrebuild as unknown as Parameters< + typeof token.verifyTssTransaction + >[0]['txPrebuild'], + wallet: mockWallet, + }); + + result.should.equal(true); + }); + it('should throw error when txParams.recipients is missing and no valid type', async function () { const token = bitgo.coin('txdc:tmt') as XdcToken; const mockWallet = {} as unknown as IWallet;