Skip to content

Commit 5ee449e

Browse files
committed
feat: added a method for building wallet init
Ticket: COIN-6239
1 parent ec683b8 commit 5ee449e

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

modules/sdk-core/src/bitgo/wallet/iWallet.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -990,6 +990,7 @@ export interface IWallet {
990990
buildTokenEnablements(params?: BuildTokenEnablementOptions): Promise<PrebuildTransactionResult[]>;
991991
sendTokenEnablement(params?: PrebuildAndSignTransactionOptions): Promise<any>;
992992
sendTokenEnablements(params?: BuildTokenEnablementOptions): Promise<any>;
993+
buildWalletInitialization(params?: PrebuildTransactionOptions): Promise<PrebuildTransactionResult>;
993994
sendWalletInitialization(params?: PrebuildTransactionOptions): Promise<WalletInitResult>;
994995
signMessage(params: WalletSignMessageOptions): Promise<SignedMessage>;
995996
buildSignMessageRequest(params: WalletSignMessageOptions): Promise<TxRequest>;

modules/sdk-core/src/bitgo/wallet/wallet.ts

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3243,6 +3243,28 @@ export class Wallet implements IWallet {
32433243
}
32443244
}
32453245

3246+
/**
3247+
* Builds wallet initialization
3248+
* @param {PrebuildTransactionOptions} params
3249+
* @returns {Promise<PrebuildTransactionResult>}
3250+
*/
3251+
public async buildWalletInitialization(params: PrebuildTransactionOptions): Promise<PrebuildTransactionResult> {
3252+
if (!this.baseCoin.requiresWalletInitializationTransaction()) {
3253+
throw new Error(`Wallet initialization is not required for ${this.baseCoin.getFullName()}`);
3254+
}
3255+
if (this._wallet.multisigType !== 'tss') {
3256+
throw new Error('Wallet initialization transaction is only supported for TSS wallets');
3257+
}
3258+
if (params.reqId) {
3259+
this.bitgo.setRequestTracer(params.reqId);
3260+
}
3261+
const buildParams: PrebuildTransactionOptions = _.pick(params, this.prebuildWhitelistedParams());
3262+
if (!buildParams.type) {
3263+
buildParams.type = 'createAccount';
3264+
}
3265+
return await this.prebuildTransaction(buildParams);
3266+
}
3267+
32463268
/**
32473269
* Signs and sends a single unsigned token enablement transaction
32483270
* @param params
@@ -3327,20 +3349,7 @@ export class Wallet implements IWallet {
33273349
* @param params
33283350
*/
33293351
public async sendWalletInitialization(params: PrebuildTransactionOptions = {}): Promise<WalletInitResult> {
3330-
if (!this.baseCoin.requiresWalletInitializationTransaction()) {
3331-
throw new Error(`Wallet initialization is not required for ${this.baseCoin.getFullName()}`);
3332-
}
3333-
if (this._wallet.multisigType !== 'tss') {
3334-
throw new Error('Wallet initialization transaction is only supported for TSS wallets');
3335-
}
3336-
if (params.reqId) {
3337-
this.bitgo.setRequestTracer(params.reqId);
3338-
}
3339-
const buildParams: PrebuildTransactionOptions = _.pick(params, this.prebuildWhitelistedParams());
3340-
if (!buildParams.type) {
3341-
buildParams.type = 'createAccount';
3342-
}
3343-
const prebuildTx = await this.prebuildTransaction(buildParams);
3352+
const prebuildTx = await this.buildWalletInitialization(params);
33443353
const unsignedBuildWithOptions: PrebuildAndSignTransactionOptions = {
33453354
...params,
33463355
prebuildTx,

0 commit comments

Comments
 (0)