From 4fddaecb311ffa3e46189c7eeeb59bc23fb973f6 Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Wed, 20 May 2026 17:22:29 +0530 Subject: [PATCH 1/3] feat: add transaction data property useMoneyAccount --- .../src/TransactionPayController.test.ts | 12 ++++++++++++ .../src/TransactionPayController.ts | 2 ++ packages/transaction-pay-controller/src/types.ts | 6 ++++++ 3 files changed, 20 insertions(+) diff --git a/packages/transaction-pay-controller/src/TransactionPayController.test.ts b/packages/transaction-pay-controller/src/TransactionPayController.test.ts index 76d3ecd6d6..734e3ebeae 100644 --- a/packages/transaction-pay-controller/src/TransactionPayController.test.ts +++ b/packages/transaction-pay-controller/src/TransactionPayController.test.ts @@ -206,6 +206,18 @@ describe('TransactionPayController', () => { ).toBe(true); }); + it('updates useMoneyAccount in state', () => { + const controller = createController(); + + controller.setTransactionConfig(TRANSACTION_ID_MOCK, (config) => { + config.useMoneyAccount = true; + }); + + expect( + controller.state.transactionData[TRANSACTION_ID_MOCK].useMoneyAccount, + ).toBe(true); + }); + it('triggers source amounts and quotes update when only isPostQuote changes', () => { const controller = createController(); diff --git a/packages/transaction-pay-controller/src/TransactionPayController.ts b/packages/transaction-pay-controller/src/TransactionPayController.ts index 70b4b3f8d6..f851b686d9 100644 --- a/packages/transaction-pay-controller/src/TransactionPayController.ts +++ b/packages/transaction-pay-controller/src/TransactionPayController.ts @@ -140,6 +140,7 @@ export class TransactionPayController extends BaseController< isPolymarketDepositWallet: transactionData.isPolymarketDepositWallet, refundTo: transactionData.refundTo, accountOverride: transactionData.accountOverride, + useMoneyAccount: transactionData.useMoneyAccount, }; const previousAccountOverride = config.accountOverride; @@ -153,6 +154,7 @@ export class TransactionPayController extends BaseController< transactionData.isPolymarketDepositWallet = config.isPolymarketDepositWallet; transactionData.refundTo = config.refundTo; + transactionData.useMoneyAccount = config.useMoneyAccount; if ( !config.isPostQuote && diff --git a/packages/transaction-pay-controller/src/types.ts b/packages/transaction-pay-controller/src/types.ts index 8844400512..b46019fc57 100644 --- a/packages/transaction-pay-controller/src/types.ts +++ b/packages/transaction-pay-controller/src/types.ts @@ -140,6 +140,9 @@ export type TransactionConfig = { * When `isPostQuote` is false, it provides the funds and pays for gas. */ accountOverride?: Hex; + + /** Whether to use the Money Account (Money Keyring) as the payment source. */ + useMoneyAccount?: boolean; }; /** Callback to update transaction config. */ @@ -246,6 +249,9 @@ export type TransactionData = { */ accountOverride?: Hex; + /** Whether to use the Money Account (Money Keyring) as the payment source. */ + useMoneyAccount?: boolean; + /** * Token selected for the transaction. * - For standard flows (isPostQuote=false): This is the SOURCE/payment token From a1258e6fdc606fe2335f899eea6277514cdd166b Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Wed, 20 May 2026 17:25:38 +0530 Subject: [PATCH 2/3] update changelog --- packages/transaction-pay-controller/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/transaction-pay-controller/CHANGELOG.md b/packages/transaction-pay-controller/CHANGELOG.md index fc2ba23cda..92fc201ea4 100644 --- a/packages/transaction-pay-controller/CHANGELOG.md +++ b/packages/transaction-pay-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Add `useMoneyAccount` property to `TransactionConfig` and `TransactionData`, settable via `setTransactionConfig` ([#8858](https://github.com/MetaMask/core/pull/8858)) + ## [22.6.1] ### Changed From 08202375755cda4e61b14dc80450fda158f0cce1 Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Thu, 21 May 2026 17:16:01 +0530 Subject: [PATCH 3/3] update --- packages/transaction-pay-controller/CHANGELOG.md | 2 +- .../src/TransactionPayController.test.ts | 10 +++++----- .../src/TransactionPayController.ts | 4 ++-- .../transaction-pay-controller/src/constants.ts | 6 ++++++ packages/transaction-pay-controller/src/index.ts | 2 +- packages/transaction-pay-controller/src/types.ts | 14 +++++++++----- 6 files changed, 24 insertions(+), 14 deletions(-) diff --git a/packages/transaction-pay-controller/CHANGELOG.md b/packages/transaction-pay-controller/CHANGELOG.md index 92fc201ea4..34f767d311 100644 --- a/packages/transaction-pay-controller/CHANGELOG.md +++ b/packages/transaction-pay-controller/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Add `useMoneyAccount` property to `TransactionConfig` and `TransactionData`, settable via `setTransactionConfig` ([#8858](https://github.com/MetaMask/core/pull/8858)) +- Add `paymentOverride` property (type `PaymentOverride`) to `TransactionConfig` and `TransactionData`, settable via `setTransactionConfig` ([#8858](https://github.com/MetaMask/core/pull/8858)) ## [22.6.1] diff --git a/packages/transaction-pay-controller/src/TransactionPayController.test.ts b/packages/transaction-pay-controller/src/TransactionPayController.test.ts index 734e3ebeae..a8a93c81cc 100644 --- a/packages/transaction-pay-controller/src/TransactionPayController.test.ts +++ b/packages/transaction-pay-controller/src/TransactionPayController.test.ts @@ -6,7 +6,7 @@ import type { Hex } from '@metamask/utils'; import { TransactionPayController } from '.'; import { updateFiatPayment } from './actions/update-fiat-payment'; import { updatePaymentToken } from './actions/update-payment-token'; -import { TransactionPayStrategy } from './constants'; +import { PaymentOverride, TransactionPayStrategy } from './constants'; import { deriveFiatAssetForFiatPayment } from './strategy/fiat/utils'; import { getMessengerMock } from './tests/messenger-mock'; import type { @@ -206,16 +206,16 @@ describe('TransactionPayController', () => { ).toBe(true); }); - it('updates useMoneyAccount in state', () => { + it('updates paymentOverride in state', () => { const controller = createController(); controller.setTransactionConfig(TRANSACTION_ID_MOCK, (config) => { - config.useMoneyAccount = true; + config.paymentOverride = PaymentOverride.MoneyAccount; }); expect( - controller.state.transactionData[TRANSACTION_ID_MOCK].useMoneyAccount, - ).toBe(true); + controller.state.transactionData[TRANSACTION_ID_MOCK].paymentOverride, + ).toBe(PaymentOverride.MoneyAccount); }); it('triggers source amounts and quotes update when only isPostQuote changes', () => { diff --git a/packages/transaction-pay-controller/src/TransactionPayController.ts b/packages/transaction-pay-controller/src/TransactionPayController.ts index f851b686d9..567bfedabc 100644 --- a/packages/transaction-pay-controller/src/TransactionPayController.ts +++ b/packages/transaction-pay-controller/src/TransactionPayController.ts @@ -140,7 +140,7 @@ export class TransactionPayController extends BaseController< isPolymarketDepositWallet: transactionData.isPolymarketDepositWallet, refundTo: transactionData.refundTo, accountOverride: transactionData.accountOverride, - useMoneyAccount: transactionData.useMoneyAccount, + paymentOverride: transactionData.paymentOverride, }; const previousAccountOverride = config.accountOverride; @@ -154,7 +154,7 @@ export class TransactionPayController extends BaseController< transactionData.isPolymarketDepositWallet = config.isPolymarketDepositWallet; transactionData.refundTo = config.refundTo; - transactionData.useMoneyAccount = config.useMoneyAccount; + transactionData.paymentOverride = config.paymentOverride; if ( !config.isPostQuote && diff --git a/packages/transaction-pay-controller/src/constants.ts b/packages/transaction-pay-controller/src/constants.ts index 5f05ff249b..a808fe7341 100644 --- a/packages/transaction-pay-controller/src/constants.ts +++ b/packages/transaction-pay-controller/src/constants.ts @@ -59,6 +59,12 @@ export const STABLECOINS: Record = { [CHAIN_ID_HYPERCORE]: [HYPERCORE_USDC_ADDRESS], // USDC }; +export enum PaymentOverride { + MoneyAccount = 'moneyAccount', + Perps = 'perps', + Predict = 'predict', +} + export enum TransactionPayStrategy { Across = 'across', Bridge = 'bridge', diff --git a/packages/transaction-pay-controller/src/index.ts b/packages/transaction-pay-controller/src/index.ts index c31382d8ba..44cd88e82a 100644 --- a/packages/transaction-pay-controller/src/index.ts +++ b/packages/transaction-pay-controller/src/index.ts @@ -29,7 +29,7 @@ export type { TransactionPayControllerUpdatePaymentTokenAction, TransactionPayControllerUpdateFiatPaymentAction, } from './TransactionPayController-method-action-types'; -export { TransactionPayStrategy } from './constants'; +export { PaymentOverride, TransactionPayStrategy } from './constants'; export { TransactionPayController } from './TransactionPayController'; export { TransactionPayPublishHook } from './helpers/TransactionPayPublishHook'; export type { TransactionPayBridgeQuote } from './strategy/bridge/types'; diff --git a/packages/transaction-pay-controller/src/types.ts b/packages/transaction-pay-controller/src/types.ts index b46019fc57..d6795dccdf 100644 --- a/packages/transaction-pay-controller/src/types.ts +++ b/packages/transaction-pay-controller/src/types.ts @@ -58,7 +58,11 @@ import type { import type { Hex, Json } from '@metamask/utils'; import type { Draft } from 'immer'; -import type { CONTROLLER_NAME, TransactionPayStrategy } from './constants'; +import type { + CONTROLLER_NAME, + PaymentOverride, + TransactionPayStrategy, +} from './constants'; import type { TransactionPayControllerMethodActions } from './TransactionPayController-method-action-types'; export type AllowedActions = @@ -141,8 +145,8 @@ export type TransactionConfig = { */ accountOverride?: Hex; - /** Whether to use the Money Account (Money Keyring) as the payment source. */ - useMoneyAccount?: boolean; + /** Overrides the payment source for the transaction. */ + paymentOverride?: PaymentOverride; }; /** Callback to update transaction config. */ @@ -249,8 +253,8 @@ export type TransactionData = { */ accountOverride?: Hex; - /** Whether to use the Money Account (Money Keyring) as the payment source. */ - useMoneyAccount?: boolean; + /** Overrides the payment source for the transaction. */ + paymentOverride?: PaymentOverride; /** * Token selected for the transaction.