From 5ee449e2d57777b96a415d11e1a24db3f1fa2413 Mon Sep 17 00:00:00 2001 From: Ravi Hegde Date: Wed, 29 Oct 2025 18:09:56 +0530 Subject: [PATCH] feat: added a method for building wallet init Ticket: COIN-6239 --- modules/sdk-core/src/bitgo/wallet/iWallet.ts | 1 + modules/sdk-core/src/bitgo/wallet/wallet.ts | 37 ++++++++++++-------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/modules/sdk-core/src/bitgo/wallet/iWallet.ts b/modules/sdk-core/src/bitgo/wallet/iWallet.ts index 653a2d8f83..bfeadbbcd2 100644 --- a/modules/sdk-core/src/bitgo/wallet/iWallet.ts +++ b/modules/sdk-core/src/bitgo/wallet/iWallet.ts @@ -990,6 +990,7 @@ export interface IWallet { buildTokenEnablements(params?: BuildTokenEnablementOptions): Promise; sendTokenEnablement(params?: PrebuildAndSignTransactionOptions): Promise; sendTokenEnablements(params?: BuildTokenEnablementOptions): Promise; + buildWalletInitialization(params?: PrebuildTransactionOptions): Promise; sendWalletInitialization(params?: PrebuildTransactionOptions): Promise; signMessage(params: WalletSignMessageOptions): Promise; buildSignMessageRequest(params: WalletSignMessageOptions): Promise; diff --git a/modules/sdk-core/src/bitgo/wallet/wallet.ts b/modules/sdk-core/src/bitgo/wallet/wallet.ts index 8c3332be7a..ea37e77339 100644 --- a/modules/sdk-core/src/bitgo/wallet/wallet.ts +++ b/modules/sdk-core/src/bitgo/wallet/wallet.ts @@ -3243,6 +3243,28 @@ export class Wallet implements IWallet { } } + /** + * Builds wallet initialization + * @param {PrebuildTransactionOptions} params + * @returns {Promise} + */ + public async buildWalletInitialization(params: PrebuildTransactionOptions): Promise { + if (!this.baseCoin.requiresWalletInitializationTransaction()) { + throw new Error(`Wallet initialization is not required for ${this.baseCoin.getFullName()}`); + } + if (this._wallet.multisigType !== 'tss') { + throw new Error('Wallet initialization transaction is only supported for TSS wallets'); + } + if (params.reqId) { + this.bitgo.setRequestTracer(params.reqId); + } + const buildParams: PrebuildTransactionOptions = _.pick(params, this.prebuildWhitelistedParams()); + if (!buildParams.type) { + buildParams.type = 'createAccount'; + } + return await this.prebuildTransaction(buildParams); + } + /** * Signs and sends a single unsigned token enablement transaction * @param params @@ -3327,20 +3349,7 @@ export class Wallet implements IWallet { * @param params */ public async sendWalletInitialization(params: PrebuildTransactionOptions = {}): Promise { - if (!this.baseCoin.requiresWalletInitializationTransaction()) { - throw new Error(`Wallet initialization is not required for ${this.baseCoin.getFullName()}`); - } - if (this._wallet.multisigType !== 'tss') { - throw new Error('Wallet initialization transaction is only supported for TSS wallets'); - } - if (params.reqId) { - this.bitgo.setRequestTracer(params.reqId); - } - const buildParams: PrebuildTransactionOptions = _.pick(params, this.prebuildWhitelistedParams()); - if (!buildParams.type) { - buildParams.type = 'createAccount'; - } - const prebuildTx = await this.prebuildTransaction(buildParams); + const prebuildTx = await this.buildWalletInitialization(params); const unsignedBuildWithOptions: PrebuildAndSignTransactionOptions = { ...params, prebuildTx,