From 78cce2e3ef70c5d0701cbe63d20d89534c08012f Mon Sep 17 00:00:00 2001 From: Kashif Jamil Date: Wed, 15 Apr 2026 13:36:06 +0530 Subject: [PATCH] feat(kaspa): wire Kaspa into coin factory and account-lib - Register kaspa/tkaspa in coinFactory.ts (registerCoinConstructors + getCoinConstructor switch) - Import/export Kaspa, Tkaspa in bitgo/src/v2/coins/index.ts - Add Kaspa to account-lib coinBuilderMap (TransactionBuilderFactory) - Add @bitgo/sdk-coin-kaspa dependency to account-lib/package.json and bitgo/package.json - Add sdk-coin-kaspa tsconfig references in account-lib, bitgo, and tsconfig.packages.json - Add /modules/sdk-coin-kaspa/ ownership to CODEOWNERS - Regenerate Dockerfile via yarn update-dockerfile Jira: CECHO-388 --- CODEOWNERS | 1 + Dockerfile | 3 +++ modules/account-lib/package.json | 1 + modules/account-lib/src/index.ts | 5 +++++ modules/account-lib/tsconfig.json | 3 +++ modules/bitgo/package.json | 1 + modules/bitgo/src/v2/coinFactory.ts | 8 ++++++++ modules/bitgo/src/v2/coins/index.ts | 2 ++ modules/bitgo/tsconfig.json | 3 +++ tsconfig.packages.json | 3 +++ 10 files changed, 30 insertions(+) diff --git a/CODEOWNERS b/CODEOWNERS index c117c16963..fb4104259a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -76,6 +76,7 @@ /modules/sdk-coin-icp/ @BitGo/ethalt-team /modules/sdk-coin-initia/ @BitGo/ethalt-team /modules/sdk-coin-iota/ @BitGo/ethalt-team +/modules/sdk-coin-kaspa/ @BitGo/ethalt-team /modules/sdk-coin-mon/ @BitGo/ethalt-team /modules/sdk-coin-mantra/ @BitGo/ethalt-team /modules/sdk-coin-near/ @BitGo/ethalt-team diff --git a/Dockerfile b/Dockerfile index 49e234d06d..70a19adeca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -95,6 +95,7 @@ COPY --from=builder /tmp/bitgo/modules/sdk-coin-icp /var/modules/sdk-coin-icp/ COPY --from=builder /tmp/bitgo/modules/sdk-coin-initia /var/modules/sdk-coin-initia/ COPY --from=builder /tmp/bitgo/modules/sdk-coin-injective /var/modules/sdk-coin-injective/ COPY --from=builder /tmp/bitgo/modules/sdk-coin-islm /var/modules/sdk-coin-islm/ +COPY --from=builder /tmp/bitgo/modules/sdk-coin-kaspa /var/modules/sdk-coin-kaspa/ COPY --from=builder /tmp/bitgo/modules/sdk-coin-mon /var/modules/sdk-coin-mon/ COPY --from=builder /tmp/bitgo/modules/sdk-coin-near /var/modules/sdk-coin-near/ COPY --from=builder /tmp/bitgo/modules/sdk-coin-oas /var/modules/sdk-coin-oas/ @@ -195,6 +196,7 @@ cd /var/modules/sdk-coin-icp && yarn link && \ cd /var/modules/sdk-coin-initia && yarn link && \ cd /var/modules/sdk-coin-injective && yarn link && \ cd /var/modules/sdk-coin-islm && yarn link && \ +cd /var/modules/sdk-coin-kaspa && yarn link && \ cd /var/modules/sdk-coin-mon && yarn link && \ cd /var/modules/sdk-coin-near && yarn link && \ cd /var/modules/sdk-coin-oas && yarn link && \ @@ -298,6 +300,7 @@ RUN cd /var/bitgo-express && \ yarn link @bitgo/sdk-coin-initia && \ yarn link @bitgo/sdk-coin-injective && \ yarn link @bitgo/sdk-coin-islm && \ + yarn link @bitgo/sdk-coin-kaspa && \ yarn link @bitgo/sdk-coin-mon && \ yarn link @bitgo/sdk-coin-near && \ yarn link @bitgo/sdk-coin-oas && \ diff --git a/modules/account-lib/package.json b/modules/account-lib/package.json index 67b2b5cf06..20de22f530 100644 --- a/modules/account-lib/package.json +++ b/modules/account-lib/package.json @@ -53,6 +53,7 @@ "@bitgo/sdk-coin-evm": "^1.14.12", "@bitgo/sdk-coin-flr": "^1.11.1", "@bitgo/sdk-coin-flrp": "^1.12.1", + "@bitgo/sdk-coin-kaspa": "^1.0.0", "@bitgo/sdk-coin-hash": "^3.9.3", "@bitgo/sdk-coin-hbar": "^2.7.3", "@bitgo/sdk-coin-icp": "^1.22.3", diff --git a/modules/account-lib/src/index.ts b/modules/account-lib/src/index.ts index 9e20042797..28a59d72ff 100644 --- a/modules/account-lib/src/index.ts +++ b/modules/account-lib/src/index.ts @@ -212,6 +212,9 @@ export { Canton }; import { FlrPLib as FlrP } from '@bitgo/sdk-coin-flrp'; export { FlrP }; +import * as Kaspa from '@bitgo/sdk-coin-kaspa'; +export { Kaspa }; + import { MIDNIGHT_TNC_HASH } from './utils'; export { MIDNIGHT_TNC_HASH }; @@ -330,6 +333,8 @@ const coinBuilderMap = { tcanton: Canton.TransactionBuilderFactory, flrp: FlrP.TransactionBuilderFactory, tflrp: FlrP.TransactionBuilderFactory, + kaspa: Kaspa.TransactionBuilderFactory, + tkaspa: Kaspa.TransactionBuilderFactory, }; const coinMessageBuilderFactoryMap = { diff --git a/modules/account-lib/tsconfig.json b/modules/account-lib/tsconfig.json index 4b6b79cabf..7376290736 100644 --- a/modules/account-lib/tsconfig.json +++ b/modules/account-lib/tsconfig.json @@ -79,6 +79,9 @@ { "path": "../sdk-coin-islm" }, + { + "path": "../sdk-coin-kaspa" + }, { "path": "../sdk-coin-mon" }, diff --git a/modules/bitgo/package.json b/modules/bitgo/package.json index dc0436d661..963c2be8ff 100644 --- a/modules/bitgo/package.json +++ b/modules/bitgo/package.json @@ -84,6 +84,7 @@ "@bitgo/sdk-coin-evm": "^1.14.12", "@bitgo/sdk-coin-flr": "^1.11.1", "@bitgo/sdk-coin-flrp": "^1.12.1", + "@bitgo/sdk-coin-kaspa": "^1.0.0", "@bitgo/sdk-coin-hash": "^3.9.3", "@bitgo/sdk-coin-hbar": "^2.7.3", "@bitgo/sdk-coin-icp": "^1.22.3", diff --git a/modules/bitgo/src/v2/coinFactory.ts b/modules/bitgo/src/v2/coinFactory.ts index f48257905f..59a39abd8b 100644 --- a/modules/bitgo/src/v2/coinFactory.ts +++ b/modules/bitgo/src/v2/coinFactory.ts @@ -107,6 +107,8 @@ import { Iota, Islm, JettonToken, + Kaspa, + Tkaspa, Lnbtc, Ltc, Mon, @@ -294,6 +296,7 @@ export function registerCoinConstructors(coinFactory: CoinFactory, coinMap: Coin coinFactory.register('injective', Injective.createInstance); coinFactory.register('iota', Iota.createInstance); coinFactory.register('islm', Islm.createInstance); + coinFactory.register('kaspa', Kaspa.createInstance); coinFactory.register('near', Near.createInstance); coinFactory.register('oas', Oas.createInstance); coinFactory.register('ofc', Ofc.createInstance); @@ -362,6 +365,7 @@ export function registerCoinConstructors(coinFactory: CoinFactory, coinMap: Coin coinFactory.register('tinjective', Tinjective.createInstance); coinFactory.register('tiota', Iota.createInstance); coinFactory.register('tislm', Tislm.createInstance); + coinFactory.register('tkaspa', Tkaspa.createInstance); coinFactory.register('tlnbtc', Tlnbtc.createInstance); coinFactory.register('tltc', Tltc.createInstance); coinFactory.register('tnear', TNear.createInstance); @@ -733,6 +737,8 @@ export function getCoinConstructor(coinName: string): CoinConstructor | undefine return Iota.createInstance; case 'islm': return Islm.createInstance; + case 'kaspa': + return Kaspa.createInstance; case 'near': return Near.createInstance; case 'oas': @@ -869,6 +875,8 @@ export function getCoinConstructor(coinName: string): CoinConstructor | undefine return Iota.createInstance; case 'tislm': return Tislm.createInstance; + case 'tkaspa': + return Tkaspa.createInstance; case 'tlnbtc': return Tlnbtc.createInstance; case 'tltc': diff --git a/modules/bitgo/src/v2/coins/index.ts b/modules/bitgo/src/v2/coins/index.ts index 606c54f97c..a8953622c8 100644 --- a/modules/bitgo/src/v2/coins/index.ts +++ b/modules/bitgo/src/v2/coins/index.ts @@ -40,6 +40,7 @@ import { Hash, Thash, HashToken } from '@bitgo/sdk-coin-hash'; import { Hbar, Thbar } from '@bitgo/sdk-coin-hbar'; import { Icp, Ticp } from '@bitgo/sdk-coin-icp'; import { Initia, Tinitia } from '@bitgo/sdk-coin-initia'; +import { Kaspa, Tkaspa } from '@bitgo/sdk-coin-kaspa'; import { Injective, Tinjective } from '@bitgo/sdk-coin-injective'; import { Iota } from '@bitgo/sdk-coin-iota'; import { Islm, Tislm } from '@bitgo/sdk-coin-islm'; @@ -118,6 +119,7 @@ export { Hbar, Thbar }; export { Icp, Ticp }; export { Initia, Tinitia }; export { Iota }; +export { Kaspa, Tkaspa }; export { Lnbtc, Tlnbtc }; export { Ltc, Tltc }; export { Mon, Tmon, MonToken }; diff --git a/modules/bitgo/tsconfig.json b/modules/bitgo/tsconfig.json index 5f24815255..8c16adaaf4 100644 --- a/modules/bitgo/tsconfig.json +++ b/modules/bitgo/tsconfig.json @@ -185,6 +185,9 @@ { "path": "../sdk-coin-islm" }, + { + "path": "../sdk-coin-kaspa" + }, { "path": "../sdk-coin-lnbtc" }, diff --git a/tsconfig.packages.json b/tsconfig.packages.json index ccc72d8d5e..7e4d5d74c7 100644 --- a/tsconfig.packages.json +++ b/tsconfig.packages.json @@ -169,6 +169,9 @@ { "path": "./modules/sdk-coin-islm" }, + { + "path": "./modules/sdk-coin-kaspa" + }, { "path": "./modules/sdk-coin-lnbtc" },