From 5cd582e86a77c5df3629d0cc484da95a3b504998 Mon Sep 17 00:00:00 2001 From: Sreeraj S Date: Tue, 9 Jun 2026 13:53:55 +0000 Subject: [PATCH] feat(sdk-core): add execType to txrequest intent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add ExecType enum (EXEC_UNSPECIFIED, EXEC_TRY) and wire it through the intent layer so callers can set execType on txrequests. The field flows from PrebuildTransactionOptions → IntentOptionsBase → PopulatedIntentBase → the POST /wallet/{id}/txrequests body under intent.execType, without introducing a top-level txrequest param. Ticket: CSHLD-972 Session-Id: caa99360-6177-4227-8aba-5043f8cb453f Task-Id: 49710c31-924d-41fb-b44b-2dc4a10bce34 --- modules/sdk-core/src/bitgo/utils/mpcUtils.ts | 1 + .../sdk-core/src/bitgo/utils/tss/baseTypes.ts | 7 +++++++ modules/sdk-core/src/bitgo/wallet/iWallet.ts | 2 ++ modules/sdk-core/src/bitgo/wallet/wallet.ts | 19 +++++++++++++++++++ 4 files changed, 29 insertions(+) diff --git a/modules/sdk-core/src/bitgo/utils/mpcUtils.ts b/modules/sdk-core/src/bitgo/utils/mpcUtils.ts index e328512199..412f312aa3 100644 --- a/modules/sdk-core/src/bitgo/utils/mpcUtils.ts +++ b/modules/sdk-core/src/bitgo/utils/mpcUtils.ts @@ -224,6 +224,7 @@ export abstract class MpcUtils { recipients: intentRecipients, tokenName: params.tokenName, isTestTransaction: params.isTestTransaction, + execType: params.execType, }; if (baseCoin.isEVM() && baseCoin.supportsTss()) { diff --git a/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts b/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts index 306dd20549..45f6c1d3e5 100644 --- a/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts +++ b/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts @@ -269,6 +269,11 @@ export interface TokenTransferRecipientParams { tokenId?: string; decimalPlaces?: number; } +export enum ExecType { + EXEC_UNSPECIFIED = 'EXEC_UNSPECIFIED', + EXEC_TRY = 'EXEC_TRY', +} + interface IntentOptionsBase { reqId: IRequestTracer; intentType: string; @@ -278,6 +283,7 @@ interface IntentOptionsBase { memo?: Memo; custodianTransactionId?: string; custodianMessageId?: string; + execType?: ExecType; } /** @@ -393,6 +399,7 @@ interface PopulatedIntentBase { comment?: string; memo?: string; isTss?: boolean; + execType?: ExecType; } export interface PopulatedIntentForMessageSigning extends PopulatedIntentBase { diff --git a/modules/sdk-core/src/bitgo/wallet/iWallet.ts b/modules/sdk-core/src/bitgo/wallet/iWallet.ts index 2a087e3df4..e867a5ed1d 100644 --- a/modules/sdk-core/src/bitgo/wallet/iWallet.ts +++ b/modules/sdk-core/src/bitgo/wallet/iWallet.ts @@ -33,6 +33,7 @@ import { CustomPaillierModulusGetterFunction, CustomRShareGeneratingFunction, CustomSShareGeneratingFunction, + ExecType, TokenEnablement, TokenTransferRecipientParams, TxRequest, @@ -297,6 +298,7 @@ export interface PrebuildTransactionOptions { * Parameters for executing DAML commands on Canton. */ cantonCommandParams?: CantonCommandParams; + execType?: ExecType; } export interface PrebuildAndSignTransactionOptions extends PrebuildTransactionOptions, WalletSignTransactionOptions { diff --git a/modules/sdk-core/src/bitgo/wallet/wallet.ts b/modules/sdk-core/src/bitgo/wallet/wallet.ts index 46c4e9a0b7..b84d64bc58 100644 --- a/modules/sdk-core/src/bitgo/wallet/wallet.ts +++ b/modules/sdk-core/src/bitgo/wallet/wallet.ts @@ -4181,6 +4181,7 @@ export class Wallet implements IWallet { unspents: params.unspents, senderAddress: params.senderAddress, isTestTransaction: params.isTestTransaction, + execType: params.execType, }, apiVersion, params.preview @@ -4198,6 +4199,7 @@ export class Wallet implements IWallet { feeToken: params.feeToken, unspents: params.unspents, sequenceId: params.sequenceId, + execType: params.execType, }, apiVersion, params.preview @@ -4211,6 +4213,7 @@ export class Wallet implements IWallet { recipients: params.recipients || [], enableTokens: params.enableTokens, memo: params.memo, + execType: params.execType, }, apiVersion, params.preview @@ -4223,6 +4226,7 @@ export class Wallet implements IWallet { intentType: 'closeAssociatedTokenAccount', recipients: params.recipients || [], memo: params.memo, + execType: params.execType, }, apiVersion, params.preview @@ -4238,6 +4242,7 @@ export class Wallet implements IWallet { receiveAddress: params.receiveAddress, feeOptions, feeToken: params.feeToken, + execType: params.execType, }, apiVersion, params.preview @@ -4253,6 +4258,7 @@ export class Wallet implements IWallet { receiveAddress: params.receiveAddress, feeOptions, feeToken: params.feeToken, + execType: params.execType, }, apiVersion, params.preview @@ -4265,6 +4271,7 @@ export class Wallet implements IWallet { intentType: 'tokenApproval', tokenName: params.tokenName, feeToken: params.feeToken, + execType: params.execType, }, apiVersion, params.preview @@ -4276,6 +4283,7 @@ export class Wallet implements IWallet { reqId, intentType: 'createAccount', recipients: params.recipients || [], + execType: params.execType, }, apiVersion, params.preview @@ -4288,6 +4296,7 @@ export class Wallet implements IWallet { intentType: 'transferAccept', txRequestId: params.txRequestId, sequenceId: params.txRequestId, + execType: params.execType, }, apiVersion, params.preview @@ -4301,6 +4310,7 @@ export class Wallet implements IWallet { intentType: 'transferReject', txRequestId: params.txRequestId, sequenceId: params.txRequestId, + execType: params.execType, }, apiVersion, params.preview @@ -4314,6 +4324,7 @@ export class Wallet implements IWallet { intentType: 'transferOfferWithdrawn', transferOfferId: params.transferOfferId, sequenceId: params.transferOfferId, + execType: params.execType, }, apiVersion, params.preview @@ -4332,6 +4343,7 @@ export class Wallet implements IWallet { tokenName: params.tokenName, sequenceId: params.sequenceId, comment: params.comment, + execType: params.execType, }, apiVersion, params.preview @@ -4352,6 +4364,7 @@ export class Wallet implements IWallet { nonce: params.nonce, memo: params.memo, feeOptions, + execType: params.execType, }, apiVersion, params.preview @@ -4368,6 +4381,7 @@ export class Wallet implements IWallet { nonce: params.nonce, feeOptions, feeToken: params.feeToken, + execType: params.execType, }, apiVersion, params.preview @@ -4384,6 +4398,7 @@ export class Wallet implements IWallet { nonce: params.nonce, feeOptions, feeToken: params.feeToken, + execType: params.execType, }, apiVersion, params.preview @@ -4397,6 +4412,7 @@ export class Wallet implements IWallet { sequenceId: params.sequenceId, comment: params.comment, recipients: params.recipients || [], + execType: params.execType, }, apiVersion, params.preview @@ -4410,6 +4426,7 @@ export class Wallet implements IWallet { sequenceId: params.sequenceId, comment: params.comment, recipients: params.recipients || [], + execType: params.execType, }, apiVersion, params.preview @@ -4425,6 +4442,7 @@ export class Wallet implements IWallet { amount: string; clientIdempotencyKey?: string; }, + execType: params.execType, }, apiVersion, params.preview @@ -4441,6 +4459,7 @@ export class Wallet implements IWallet { operationId?: string; clientIdempotencyKey?: string; }, + execType: params.execType, }, apiVersion, params.preview