From 596a624d5b89584fcc4bcdc1fa914e93ddc43d22 Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Fri, 2 Jan 2026 22:41:47 +0530 Subject: [PATCH] fix: add xdc token contructor Ticket: COIN-7060 --- modules/sdk-coin-xdc/package.json | 1 + modules/sdk-coin-xdc/src/register.ts | 7 +++++ modules/sdk-coin-xdc/test/unit/xdcToken.ts | 30 ++++++++++++++++++++++ modules/sdk-core/src/bitgo/environments.ts | 6 +++++ 4 files changed, 44 insertions(+) create mode 100644 modules/sdk-coin-xdc/test/unit/xdcToken.ts diff --git a/modules/sdk-coin-xdc/package.json b/modules/sdk-coin-xdc/package.json index 3fd5464cd9..120a3288b1 100644 --- a/modules/sdk-coin-xdc/package.json +++ b/modules/sdk-coin-xdc/package.json @@ -43,6 +43,7 @@ "@bitgo/abstract-eth": "^24.19.4", "@bitgo/sdk-core": "^36.25.0", "@bitgo/statics": "^58.19.0", + "@bitgo/sdk-coin-evm": "^1.11.0", "@ethereumjs/common": "^2.6.5", "@ethereumjs/tx": "^3.3.0" }, diff --git a/modules/sdk-coin-xdc/src/register.ts b/modules/sdk-coin-xdc/src/register.ts index 6e4b22b549..c5c5de0bdc 100644 --- a/modules/sdk-coin-xdc/src/register.ts +++ b/modules/sdk-coin-xdc/src/register.ts @@ -1,8 +1,15 @@ import { BitGoBase } from '@bitgo/sdk-core'; +import { EthLikeErc20Token } from '@bitgo/sdk-coin-evm'; import { Xdc } from './xdc'; import { Txdc } from './txdc'; export const register = (sdk: BitGoBase): void => { sdk.register('xdc', Xdc.createInstance); sdk.register('txdc', Txdc.createInstance); + EthLikeErc20Token.createTokenConstructors({ + Mainnet: 'xdc', + Testnet: 'txdc', + }).forEach(({ name, coinConstructor }) => { + sdk.register(name, coinConstructor); + }); }; diff --git a/modules/sdk-coin-xdc/test/unit/xdcToken.ts b/modules/sdk-coin-xdc/test/unit/xdcToken.ts new file mode 100644 index 0000000000..ec80f226fa --- /dev/null +++ b/modules/sdk-coin-xdc/test/unit/xdcToken.ts @@ -0,0 +1,30 @@ +import 'should'; +import { TestBitGo, TestBitGoAPI } from '@bitgo/sdk-test'; +import { BitGoAPI } from '@bitgo/sdk-api'; + +import { register } from '../../src'; + +describe('XDC Token:', function () { + let bitgo: TestBitGoAPI; + let xdcTokenCoin; + const tokenName = 'xdc:usdc'; + + before(function () { + bitgo = TestBitGo.decorate(BitGoAPI, { env: 'prod' }); + register(bitgo); + bitgo.initializeTestVars(); + xdcTokenCoin = bitgo.coin(tokenName); + }); + + it('should return constants', function () { + xdcTokenCoin.getChain().should.equal('xdc:usdc'); + xdcTokenCoin.getBaseChain().should.equal('xdc'); + xdcTokenCoin.getFullName().should.equal('ERC20 Token'); + xdcTokenCoin.getBaseFactor().should.equal(1e6); + xdcTokenCoin.type.should.equal(tokenName); + xdcTokenCoin.name.should.equal('USD Coin'); + xdcTokenCoin.coin.should.equal('xdc'); + xdcTokenCoin.network.should.equal('Mainnet'); + xdcTokenCoin.decimalPlaces.should.equal(6); + }); +}); diff --git a/modules/sdk-core/src/bitgo/environments.ts b/modules/sdk-core/src/bitgo/environments.ts index 0160484b67..92be991b96 100644 --- a/modules/sdk-core/src/bitgo/environments.ts +++ b/modules/sdk-core/src/bitgo/environments.ts @@ -303,6 +303,9 @@ const mainnetBase: EnvironmentTemplate = { arc: { baseUrl: 'https://testnet.arcscan.app/api/v2', // WIN-8039 => add mainnet url when available }, + xdc: { + baseUrl: 'https://api.etherscan.io/v2', + }, }, icpNodeUrl: 'https://ic0.app', worldExplorerBaseUrl: 'https://worldscan.org/', @@ -469,6 +472,9 @@ const testnetBase: EnvironmentTemplate = { arc: { baseUrl: 'https://testnet.arcscan.app/api/v2', }, + xdc: { + baseUrl: 'https://api.etherscan.io/v2', + }, }, stxNodeUrl: 'https://api.testnet.hiro.so', vetNodeUrl: 'https://sync-testnet.vechain.org',