diff --git a/commitlint.config.js b/commitlint.config.js index 6b6f491bb0..4338fd14c2 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -72,6 +72,7 @@ module.exports = { 'ME-', 'ANT-', 'CGARD-', + 'CHALO-', '#', // Prefix used by GitHub issues ], }, diff --git a/modules/sdk-coin-canton/src/canton.ts b/modules/sdk-coin-canton/src/canton.ts index 995145914b..6fad9677a1 100644 --- a/modules/sdk-coin-canton/src/canton.ts +++ b/modules/sdk-coin-canton/src/canton.ts @@ -245,5 +245,8 @@ export class Canton extends BaseCoin { if (params.txRequestId) { intent.txRequestId = params.txRequestId; } + if (params.contractId) { + intent.contractId = params.contractId; + } } } diff --git a/modules/sdk-core/src/bitgo/utils/mpcUtils.ts b/modules/sdk-core/src/bitgo/utils/mpcUtils.ts index 896aca5411..b332f02a48 100644 --- a/modules/sdk-core/src/bitgo/utils/mpcUtils.ts +++ b/modules/sdk-core/src/bitgo/utils/mpcUtils.ts @@ -141,6 +141,10 @@ export abstract class MpcUtils { assert(params.txRequestId, `'txRequestId' is required parameter for ${params.intentType} intent`); } + if (params.intentType === 'transferOfferWithdrawn' && baseCoin.getFamily() === 'canton') { + assert(params.contractId, `'contractId' is required parameter for ${params.intentType} intent`); + } + if ( ![ 'acceleration', @@ -150,6 +154,7 @@ export abstract class MpcUtils { 'customTx', 'transferAccept', 'transferReject', + 'transferOfferWithdrawn', ].includes(params.intentType) ) { assert(params.recipients, `'recipients' is a required parameter for ${params.intentType} intent`); diff --git a/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts b/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts index ba2f3b6d46..297924897c 100644 --- a/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts +++ b/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts @@ -270,6 +270,7 @@ export interface PrebuildTransactionWithIntentOptions extends IntentOptionsBase }; txRequestId?: string; isTestTransaction?: boolean; + contractId?: string; } export interface IntentRecipient { address: { @@ -340,6 +341,7 @@ export interface PopulatedIntent extends PopulatedIntentBase { aptosCustomTransactionParams?: aptosCustomTransactionParams; txRequestId?: string; isTestTransaction?: boolean; + contractId?: string; } export type TxRequestState = diff --git a/modules/sdk-core/src/bitgo/wallet/iWallet.ts b/modules/sdk-core/src/bitgo/wallet/iWallet.ts index 4c523e1a2f..53e292db55 100644 --- a/modules/sdk-core/src/bitgo/wallet/iWallet.ts +++ b/modules/sdk-core/src/bitgo/wallet/iWallet.ts @@ -218,6 +218,7 @@ export interface PrebuildTransactionOptions { }; txRequestId?: string; isTestTransaction?: boolean; + contractId?: string; } 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 3786c0c2e1..ae9d9179fe 100644 --- a/modules/sdk-core/src/bitgo/wallet/wallet.ts +++ b/modules/sdk-core/src/bitgo/wallet/wallet.ts @@ -3714,6 +3714,19 @@ export class Wallet implements IWallet { ); break; } + case 'transferOfferWithdrawn': { + txRequest = await this.tssUtils!.prebuildTxWithIntent( + { + reqId, + intentType: 'transferOfferWithdrawn', + contractId: params.contractId, + sequenceId: params.contractId, + }, + apiVersion, + params.preview + ); + break; + } case 'customTx': txRequest = await this.tssUtils!.prebuildTxWithIntent( {