@metamask/transaction-pay-controller 23.5.1 → 23.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/dist/TransactionPayController.cjs +0 -17
  3. package/dist/TransactionPayController.cjs.map +1 -1
  4. package/dist/TransactionPayController.d.cts.map +1 -1
  5. package/dist/TransactionPayController.d.mts.map +1 -1
  6. package/dist/TransactionPayController.mjs +1 -18
  7. package/dist/TransactionPayController.mjs.map +1 -1
  8. package/dist/constants.cjs +3 -1
  9. package/dist/constants.cjs.map +1 -1
  10. package/dist/constants.d.cts +2 -0
  11. package/dist/constants.d.cts.map +1 -1
  12. package/dist/constants.d.mts +2 -0
  13. package/dist/constants.d.mts.map +1 -1
  14. package/dist/constants.mjs +2 -0
  15. package/dist/constants.mjs.map +1 -1
  16. package/dist/strategy/fiat/constants.cjs +8 -1
  17. package/dist/strategy/fiat/constants.cjs.map +1 -1
  18. package/dist/strategy/fiat/constants.d.cts +4 -0
  19. package/dist/strategy/fiat/constants.d.cts.map +1 -1
  20. package/dist/strategy/fiat/constants.d.mts +4 -0
  21. package/dist/strategy/fiat/constants.d.mts.map +1 -1
  22. package/dist/strategy/fiat/constants.mjs +8 -1
  23. package/dist/strategy/fiat/constants.mjs.map +1 -1
  24. package/dist/strategy/fiat/fiat-quotes.cjs +83 -16
  25. package/dist/strategy/fiat/fiat-quotes.cjs.map +1 -1
  26. package/dist/strategy/fiat/fiat-quotes.d.cts +5 -7
  27. package/dist/strategy/fiat/fiat-quotes.d.cts.map +1 -1
  28. package/dist/strategy/fiat/fiat-quotes.d.mts +5 -7
  29. package/dist/strategy/fiat/fiat-quotes.d.mts.map +1 -1
  30. package/dist/strategy/fiat/fiat-quotes.mjs +85 -18
  31. package/dist/strategy/fiat/fiat-quotes.mjs.map +1 -1
  32. package/dist/strategy/fiat/fiat-submit.cjs +43 -12
  33. package/dist/strategy/fiat/fiat-submit.cjs.map +1 -1
  34. package/dist/strategy/fiat/fiat-submit.d.cts.map +1 -1
  35. package/dist/strategy/fiat/fiat-submit.d.mts.map +1 -1
  36. package/dist/strategy/fiat/fiat-submit.mjs +43 -12
  37. package/dist/strategy/fiat/fiat-submit.mjs.map +1 -1
  38. package/dist/strategy/fiat/utils.cjs +31 -1
  39. package/dist/strategy/fiat/utils.cjs.map +1 -1
  40. package/dist/strategy/fiat/utils.d.cts +26 -0
  41. package/dist/strategy/fiat/utils.d.cts.map +1 -1
  42. package/dist/strategy/fiat/utils.d.mts +26 -0
  43. package/dist/strategy/fiat/utils.d.mts.map +1 -1
  44. package/dist/strategy/fiat/utils.mjs +29 -1
  45. package/dist/strategy/fiat/utils.mjs.map +1 -1
  46. package/dist/strategy/relay/relay-quotes.cjs +1 -1
  47. package/dist/strategy/relay/relay-quotes.cjs.map +1 -1
  48. package/dist/strategy/relay/relay-quotes.mjs +1 -1
  49. package/dist/strategy/relay/relay-quotes.mjs.map +1 -1
  50. package/dist/types.cjs.map +1 -1
  51. package/dist/types.d.cts +2 -0
  52. package/dist/types.d.cts.map +1 -1
  53. package/dist/types.d.mts +2 -0
  54. package/dist/types.d.mts.map +1 -1
  55. package/dist/types.mjs.map +1 -1
  56. package/dist/utils/feature-flags.cjs +48 -3
  57. package/dist/utils/feature-flags.cjs.map +1 -1
  58. package/dist/utils/feature-flags.d.cts +23 -0
  59. package/dist/utils/feature-flags.d.cts.map +1 -1
  60. package/dist/utils/feature-flags.d.mts +23 -0
  61. package/dist/utils/feature-flags.d.mts.map +1 -1
  62. package/dist/utils/feature-flags.mjs +44 -2
  63. package/dist/utils/feature-flags.mjs.map +1 -1
  64. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [23.6.0]
11
+
12
+ ### Added
13
+
14
+ - Add direct mUSD fiat injection flow for Money Account deposits behind `useFiatMUSDQuoteToInjectForMoneyAccount` feature flag. When enabled, probes fiat providers for mUSD on Monad availability and, if viable, purchases mUSD directly to the Money Account, skipping the ETH-to-mUSD bridge. Falls back to the existing flow when no provider supports the direct route. Also moves `fiatPayment.caipAssetId` assignment into fiat quote functions so the asset ID always matches the quote that succeeded. ([#9080](https://github.com/MetaMask/core/pull/9080))
15
+ - Make fiat order polling interval and timeout remotely configurable via `confirmations_pay_fiat.orderPollIntervalMs` and `confirmations_pay_fiat.orderPollTimeoutMs` feature flags ([#9090](https://github.com/MetaMask/core/pull/9090))
16
+
17
+ ### Changed
18
+
19
+ - Bump `@metamask/utils` from `^11.9.0` to `^11.11.0` ([#9074](https://github.com/MetaMask/core/pull/9074))
20
+ - Bump `@metamask/assets-controller` from `^9.0.0` to `^9.0.1` ([#9083](https://github.com/MetaMask/core/pull/9083))
21
+ - Bump `@metamask/controller-utils` from `^12.1.1` to `^12.2.0` ([#9083](https://github.com/MetaMask/core/pull/9083))
22
+ - Bump `@metamask/transaction-controller` from `^67.1.0` to `^68.0.0` ([#9089](https://github.com/MetaMask/core/pull/9089))
23
+ - Bump `@metamask/ramps-controller` from `^14.1.1` to `^14.2.0` ([#9105](https://github.com/MetaMask/core/pull/9105))
24
+
25
+ ### Fixed
26
+
27
+ - Clear stale `fiatPayment.rampsQuote` when a fiat quote fetch fails, preventing the "No quotes" alert from being silently suppressed after a prior successful fetch ([#9073](https://github.com/MetaMask/core/pull/9073))
28
+
10
29
  ## [23.5.1]
11
30
 
12
31
  ### Changed
@@ -1040,7 +1059,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1040
1059
 
1041
1060
  - Initial release ([#6820](https://github.com/MetaMask/core/pull/6820))
1042
1061
 
1043
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@23.5.1...HEAD
1062
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@23.6.0...HEAD
1063
+ [23.6.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@23.5.1...@metamask/transaction-pay-controller@23.6.0
1044
1064
  [23.5.1]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@23.5.0...@metamask/transaction-pay-controller@23.5.1
1045
1065
  [23.5.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@23.4.0...@metamask/transaction-pay-controller@23.5.0
1046
1066
  [23.4.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@23.3.1...@metamask/transaction-pay-controller@23.4.0
@@ -19,11 +19,9 @@ const update_fiat_payment_1 = require("./actions/update-fiat-payment.cjs");
19
19
  const update_payment_token_1 = require("./actions/update-payment-token.cjs");
20
20
  const constants_1 = require("./constants.cjs");
21
21
  const QuoteRefresher_1 = require("./helpers/QuoteRefresher.cjs");
22
- const utils_1 = require("./strategy/fiat/utils.cjs");
23
22
  const feature_flags_1 = require("./utils/feature-flags.cjs");
24
23
  const quotes_1 = require("./utils/quotes.cjs");
25
24
  const source_amounts_1 = require("./utils/source-amounts.cjs");
26
- const token_1 = require("./utils/token.cjs");
27
25
  const transaction_1 = require("./utils/transaction.cjs");
28
26
  const MESSENGER_EXPOSED_METHODS = [
29
27
  'getAmountData',
@@ -223,7 +221,6 @@ _TransactionPayController_getAmountData = new WeakMap(), _TransactionPayControll
223
221
  });
224
222
  }, _TransactionPayController_updateTransactionData = function _TransactionPayController_updateTransactionData(transactionId, fn) {
225
223
  let shouldUpdateQuotes = false;
226
- let shouldUpdateFiatToken = false;
227
224
  this.update((state) => {
228
225
  const { transactionData } = state;
229
226
  let current = transactionData[transactionId];
@@ -264,21 +261,7 @@ _TransactionPayController_getAmountData = new WeakMap(), _TransactionPayControll
264
261
  if (isFiatAmountUpdated || isFiatPaymentMethodUpdated) {
265
262
  shouldUpdateQuotes = true;
266
263
  }
267
- if (isFiatPaymentMethodUpdated) {
268
- shouldUpdateFiatToken = true;
269
- }
270
264
  });
271
- if (shouldUpdateFiatToken) {
272
- const transaction = (0, transaction_1.getTransaction)(transactionId, this.messenger);
273
- const fiatAsset = (0, utils_1.deriveFiatAssetForFiatPayment)(transaction, this.messenger);
274
- if (fiatAsset) {
275
- __classPrivateFieldGet(this, _TransactionPayController_instances, "m", _TransactionPayController_updateTransactionData).call(this, transactionId, (data) => {
276
- if (data.fiatPayment) {
277
- data.fiatPayment.caipAssetId = (0, token_1.buildCaipAssetType)(fiatAsset.chainId, fiatAsset.address);
278
- }
279
- });
280
- }
281
- }
282
265
  if (shouldUpdateQuotes) {
283
266
  (0, quotes_1.updateQuotes)({
284
267
  getStrategies: __classPrivateFieldGet(this, _TransactionPayController_instances, "m", _TransactionPayController_getStrategiesWithFallback).bind(this),
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionPayController.cjs","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StateMetadata } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { Draft } from 'immer';\nimport { noop } from 'lodash';\n\nimport { updateFiatPayment } from './actions/update-fiat-payment';\nimport { updatePaymentToken } from './actions/update-payment-token';\nimport {\n CONTROLLER_NAME,\n isTransactionPayStrategy,\n TransactionPayStrategy,\n} from './constants';\nimport { QuoteRefresher } from './helpers/QuoteRefresher';\nimport { deriveFiatAssetForFiatPayment } from './strategy/fiat/utils';\nimport type {\n GetAmountDataCallback,\n GetDelegationTransactionCallback,\n GetPaymentOverrideDataCallback,\n PolymarketCallbacks,\n TransactionConfigCallback,\n TransactionData,\n TransactionPayControllerMessenger,\n TransactionPayControllerOptions,\n TransactionPayControllerState,\n UpdateFiatPaymentRequest,\n UpdatePaymentTokenRequest,\n} from './types';\nimport { getStrategyOrder } from './utils/feature-flags';\nimport { updateQuotes } from './utils/quotes';\nimport { updateSourceAmounts } from './utils/source-amounts';\nimport { buildCaipAssetType } from './utils/token';\nimport {\n getTransaction,\n subscribeAssetChanges,\n subscribeTransactionChanges,\n} from './utils/transaction';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'getAmountData',\n 'getDelegationTransaction',\n 'getPaymentOverrideData',\n 'getStrategy',\n 'polymarketGetDepositWalletAddress',\n 'polymarketSubmitDepositWalletBatch',\n 'setTransactionConfig',\n 'updateFiatPayment',\n 'updatePaymentToken',\n] as const;\n\nconst stateMetadata: StateMetadata<TransactionPayControllerState> = {\n transactionData: {\n includeInDebugSnapshot: false,\n includeInStateLogs: true,\n persist: false,\n usedInUi: true,\n },\n};\n\nconst getDefaultState = (): TransactionPayControllerState => ({\n transactionData: {},\n});\n\nexport class TransactionPayController extends BaseController<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState,\n TransactionPayControllerMessenger\n> {\n readonly #getAmountData?: GetAmountDataCallback;\n\n readonly #getDelegationTransaction: GetDelegationTransactionCallback;\n\n readonly #getPaymentOverrideData?: GetPaymentOverrideDataCallback;\n\n readonly #getStrategy?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy;\n\n readonly #getStrategies?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy[];\n\n readonly #polymarket?: PolymarketCallbacks;\n\n constructor({\n getAmountData,\n getDelegationTransaction,\n getPaymentOverrideData,\n getStrategy,\n getStrategies,\n messenger,\n polymarket,\n state,\n }: TransactionPayControllerOptions) {\n super({\n name: CONTROLLER_NAME,\n metadata: stateMetadata,\n messenger,\n state: { ...getDefaultState(), ...state },\n });\n\n this.#getAmountData = getAmountData;\n this.#getDelegationTransaction = getDelegationTransaction;\n this.#getPaymentOverrideData = getPaymentOverrideData;\n this.#getStrategy = getStrategy;\n this.#getStrategies = getStrategies;\n this.#polymarket = polymarket;\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n\n subscribeTransactionChanges(\n messenger,\n this.#updateTransactionData.bind(this),\n this.#removeTransactionData.bind(this),\n );\n\n subscribeAssetChanges(\n messenger,\n () => this.state,\n this.#updateTransactionData.bind(this),\n );\n\n // eslint-disable-next-line no-new\n new QuoteRefresher({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Sets the transaction configuration.\n *\n * The callback receives the current configuration properties and can mutate\n * them in place. Updated values are written back to the transaction data.\n *\n * @param transactionId - The ID of the transaction to configure.\n * @param callback - A callback that receives a mutable {@link TransactionConfig} object.\n */\n setTransactionConfig(\n transactionId: string,\n callback: TransactionConfigCallback,\n ): void {\n this.#updateTransactionData(transactionId, (transactionData) => {\n const config = {\n isMaxAmount: transactionData.isMaxAmount,\n isPostQuote: transactionData.isPostQuote,\n isHyperliquidSource: transactionData.isHyperliquidSource,\n isPolymarketDepositWallet: transactionData.isPolymarketDepositWallet,\n refundTo: transactionData.refundTo,\n accountOverride: transactionData.accountOverride,\n paymentOverride: transactionData.paymentOverride,\n };\n\n const previousAccountOverride = config.accountOverride;\n\n callback(config);\n\n transactionData.accountOverride = config.accountOverride;\n transactionData.isMaxAmount = config.isMaxAmount;\n transactionData.isPostQuote = config.isPostQuote;\n transactionData.isHyperliquidSource = config.isHyperliquidSource;\n transactionData.isPolymarketDepositWallet =\n config.isPolymarketDepositWallet;\n transactionData.refundTo = config.refundTo;\n transactionData.paymentOverride = config.paymentOverride;\n\n if (\n !config.isPostQuote &&\n config.accountOverride !== previousAccountOverride\n ) {\n transactionData.paymentToken = undefined;\n }\n });\n }\n\n /**\n * Updates the payment token for a transaction.\n *\n * Resolves token metadata and balances, then stores the new payment token\n * in the transaction data. This triggers recalculation of source amounts\n * and quote retrieval.\n *\n * @param request - The payment token update request containing the\n * transaction ID, token address, and chain ID.\n */\n updatePaymentToken(request: UpdatePaymentTokenRequest): void {\n updatePaymentToken(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Updates the fiat payment state for a transaction.\n *\n * The request callback receives the current fiat payment state and can\n * mutate it to update properties such as the selected payment method or\n * fiat amount.\n *\n * @param request - The fiat payment update request containing the\n * transaction ID and a callback to mutate fiat payment state.\n */\n updateFiatPayment(request: UpdateFiatPaymentRequest): void {\n updateFiatPayment(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Gets the delegation transaction for a given transaction.\n *\n * Converts the provided transaction into a redeem delegation by delegating\n * to the configured callback. Returns the delegation transaction data\n * including the encoded call data, target address, value, and an optional\n * authorization list.\n *\n * @param args - The arguments forwarded to the {@link GetDelegationTransactionCallback},\n * containing the transaction metadata.\n * @returns A promise resolving to the delegation transaction data.\n */\n getDelegationTransaction(\n ...args: Parameters<GetDelegationTransactionCallback>\n ): ReturnType<GetDelegationTransactionCallback> {\n return this.#getDelegationTransaction(...args);\n }\n\n /**\n * Returns additional transactions for the paymentOverride flow.\n *\n * Delegates to the client-supplied {@link GetPaymentOverrideDataCallback}.\n * Called during quote execution when `paymentOverride` is defined on the transaction.\n * Returns an empty array when no callback is configured.\n *\n * @param args - The arguments forwarded to the {@link GetPaymentOverrideDataCallback}.\n * @returns A promise resolving to the additional transactions array.\n */\n getAmountData(\n ...args: Parameters<GetAmountDataCallback>\n ): ReturnType<GetAmountDataCallback> {\n return this.#getAmountData?.(...args) ?? Promise.resolve({ updates: [] });\n }\n\n getPaymentOverrideData(\n ...args: Parameters<GetPaymentOverrideDataCallback>\n ): ReturnType<GetPaymentOverrideDataCallback> {\n return (\n this.#getPaymentOverrideData?.(...args) ?? Promise.resolve({ calls: [] })\n );\n }\n\n /**\n * Gets the preferred strategy for a transaction.\n *\n * Returns the first strategy from the ordered list of strategies applicable\n * to the given transaction. Falls back to the default strategy order derived\n * from feature flags when no custom strategy callback is configured.\n *\n * @param transaction - The transaction metadata to determine the strategy for.\n * @returns The preferred {@link TransactionPayStrategy} for the transaction.\n */\n getStrategy(transaction: TransactionMeta): TransactionPayStrategy {\n return this.#getStrategiesWithFallback(transaction)[0];\n }\n\n /**\n * Derives the Polymarket deposit-wallet address for an EOA via the\n * client-supplied callback.\n *\n * @param args - The arguments forwarded to {@link PolymarketCallbacks.getDepositWalletAddress}.\n * @returns A promise resolving to the deposit-wallet address.\n */\n polymarketGetDepositWalletAddress(\n ...args: Parameters<PolymarketCallbacks['getDepositWalletAddress']>\n ): ReturnType<PolymarketCallbacks['getDepositWalletAddress']> {\n return this.#requirePolymarket().getDepositWalletAddress(...args);\n }\n\n /**\n * Signs and broadcasts a Polymarket deposit-wallet batch via the\n * client-supplied callback.\n *\n * @param args - The arguments forwarded to {@link PolymarketCallbacks.submitDepositWalletBatch}.\n * @returns A promise resolving to the relayer-issued source hash.\n */\n polymarketSubmitDepositWalletBatch(\n ...args: Parameters<PolymarketCallbacks['submitDepositWalletBatch']>\n ): ReturnType<PolymarketCallbacks['submitDepositWalletBatch']> {\n return this.#requirePolymarket().submitDepositWalletBatch(...args);\n }\n\n #requirePolymarket(): PolymarketCallbacks {\n if (!this.#polymarket) {\n throw new Error('TransactionPayController: Polymarket callbacks missing');\n }\n return this.#polymarket;\n }\n\n #removeTransactionData(transactionId: string): void {\n this.update((state) => {\n delete state.transactionData[transactionId];\n });\n }\n\n #updateTransactionData(\n transactionId: string,\n fn: (transactionData: Draft<TransactionData>) => void,\n ): void {\n let shouldUpdateQuotes = false;\n let shouldUpdateFiatToken = false;\n\n this.update((state) => {\n const { transactionData } = state;\n let current = transactionData[transactionId];\n const originalPaymentToken = current?.paymentToken;\n const originalTokens = current?.tokens;\n const originalIsMaxAmount = current?.isMaxAmount;\n const originalIsPostQuote = current?.isPostQuote;\n const originalAccountOverride = current?.accountOverride;\n const originalFiatPaymentAmount = current?.fiatPayment?.amountFiat;\n const originalFiatPaymentMethodId =\n current?.fiatPayment?.selectedPaymentMethodId;\n\n if (!current) {\n transactionData[transactionId] = {\n fiatPayment: {},\n isLoading: false,\n tokens: [],\n };\n\n current = transactionData[transactionId];\n }\n\n fn(current);\n\n const isPaymentTokenUpdated =\n current.paymentToken?.address?.toLowerCase() !==\n originalPaymentToken?.address?.toLowerCase() ||\n current.paymentToken?.chainId !== originalPaymentToken?.chainId;\n\n const isTokensUpdated = current.tokens !== originalTokens;\n const isIsMaxUpdated = current.isMaxAmount !== originalIsMaxAmount;\n const isPostQuoteUpdated = current.isPostQuote !== originalIsPostQuote;\n const isAccountOverrideUpdated =\n current.accountOverride !== originalAccountOverride;\n const isFiatAmountUpdated =\n current.fiatPayment?.amountFiat !== originalFiatPaymentAmount;\n const isFiatPaymentMethodUpdated =\n current.fiatPayment?.selectedPaymentMethodId !==\n originalFiatPaymentMethodId;\n\n if (\n isPaymentTokenUpdated ||\n isIsMaxUpdated ||\n isTokensUpdated ||\n isPostQuoteUpdated ||\n isAccountOverrideUpdated\n ) {\n updateSourceAmounts(transactionId, current as never, this.messenger);\n\n shouldUpdateQuotes = true;\n }\n\n if (isFiatAmountUpdated || isFiatPaymentMethodUpdated) {\n shouldUpdateQuotes = true;\n }\n\n if (isFiatPaymentMethodUpdated) {\n shouldUpdateFiatToken = true;\n }\n });\n\n if (shouldUpdateFiatToken) {\n const transaction = getTransaction(\n transactionId,\n this.messenger,\n ) as TransactionMeta;\n const fiatAsset = deriveFiatAssetForFiatPayment(\n transaction,\n this.messenger,\n );\n if (fiatAsset) {\n this.#updateTransactionData(transactionId, (data) => {\n if (data.fiatPayment) {\n data.fiatPayment.caipAssetId = buildCaipAssetType(\n fiatAsset.chainId,\n fiatAsset.address,\n );\n }\n });\n }\n }\n\n if (shouldUpdateQuotes) {\n updateQuotes({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger: this.messenger,\n transactionData: this.state.transactionData[transactionId],\n transactionId,\n updateTransactionData: this.#updateTransactionData.bind(this),\n }).catch(noop);\n }\n }\n\n #getStrategiesWithFallback(\n transaction: TransactionMeta,\n ): TransactionPayStrategy[] {\n const transactionData = this.state.transactionData[transaction.id];\n\n const strategyCandidates: unknown[] =\n this.#getStrategies?.(transaction) ??\n (this.#getStrategy ? [this.#getStrategy(transaction)] : []);\n\n const validStrategies = strategyCandidates.filter(\n (strategy): strategy is TransactionPayStrategy =>\n isTransactionPayStrategy(strategy),\n );\n\n if (validStrategies.length) {\n return validStrategies;\n }\n\n const paymentToken = transactionData?.paymentToken;\n\n return getStrategyOrder(\n this.messenger,\n paymentToken?.chainId,\n paymentToken?.address,\n transaction.type,\n transactionData?.fiatPayment?.selectedPaymentMethodId,\n );\n }\n}\n"]}
1
+ {"version":3,"file":"TransactionPayController.cjs","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StateMetadata } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { Draft } from 'immer';\nimport { noop } from 'lodash';\n\nimport { updateFiatPayment } from './actions/update-fiat-payment';\nimport { updatePaymentToken } from './actions/update-payment-token';\nimport {\n CONTROLLER_NAME,\n isTransactionPayStrategy,\n TransactionPayStrategy,\n} from './constants';\nimport { QuoteRefresher } from './helpers/QuoteRefresher';\nimport type {\n GetAmountDataCallback,\n GetDelegationTransactionCallback,\n GetPaymentOverrideDataCallback,\n PolymarketCallbacks,\n TransactionConfigCallback,\n TransactionData,\n TransactionPayControllerMessenger,\n TransactionPayControllerOptions,\n TransactionPayControllerState,\n UpdateFiatPaymentRequest,\n UpdatePaymentTokenRequest,\n} from './types';\nimport { getStrategyOrder } from './utils/feature-flags';\nimport { updateQuotes } from './utils/quotes';\nimport { updateSourceAmounts } from './utils/source-amounts';\nimport {\n subscribeAssetChanges,\n subscribeTransactionChanges,\n} from './utils/transaction';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'getAmountData',\n 'getDelegationTransaction',\n 'getPaymentOverrideData',\n 'getStrategy',\n 'polymarketGetDepositWalletAddress',\n 'polymarketSubmitDepositWalletBatch',\n 'setTransactionConfig',\n 'updateFiatPayment',\n 'updatePaymentToken',\n] as const;\n\nconst stateMetadata: StateMetadata<TransactionPayControllerState> = {\n transactionData: {\n includeInDebugSnapshot: false,\n includeInStateLogs: true,\n persist: false,\n usedInUi: true,\n },\n};\n\nconst getDefaultState = (): TransactionPayControllerState => ({\n transactionData: {},\n});\n\nexport class TransactionPayController extends BaseController<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState,\n TransactionPayControllerMessenger\n> {\n readonly #getAmountData?: GetAmountDataCallback;\n\n readonly #getDelegationTransaction: GetDelegationTransactionCallback;\n\n readonly #getPaymentOverrideData?: GetPaymentOverrideDataCallback;\n\n readonly #getStrategy?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy;\n\n readonly #getStrategies?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy[];\n\n readonly #polymarket?: PolymarketCallbacks;\n\n constructor({\n getAmountData,\n getDelegationTransaction,\n getPaymentOverrideData,\n getStrategy,\n getStrategies,\n messenger,\n polymarket,\n state,\n }: TransactionPayControllerOptions) {\n super({\n name: CONTROLLER_NAME,\n metadata: stateMetadata,\n messenger,\n state: { ...getDefaultState(), ...state },\n });\n\n this.#getAmountData = getAmountData;\n this.#getDelegationTransaction = getDelegationTransaction;\n this.#getPaymentOverrideData = getPaymentOverrideData;\n this.#getStrategy = getStrategy;\n this.#getStrategies = getStrategies;\n this.#polymarket = polymarket;\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n\n subscribeTransactionChanges(\n messenger,\n this.#updateTransactionData.bind(this),\n this.#removeTransactionData.bind(this),\n );\n\n subscribeAssetChanges(\n messenger,\n () => this.state,\n this.#updateTransactionData.bind(this),\n );\n\n // eslint-disable-next-line no-new\n new QuoteRefresher({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Sets the transaction configuration.\n *\n * The callback receives the current configuration properties and can mutate\n * them in place. Updated values are written back to the transaction data.\n *\n * @param transactionId - The ID of the transaction to configure.\n * @param callback - A callback that receives a mutable {@link TransactionConfig} object.\n */\n setTransactionConfig(\n transactionId: string,\n callback: TransactionConfigCallback,\n ): void {\n this.#updateTransactionData(transactionId, (transactionData) => {\n const config = {\n isMaxAmount: transactionData.isMaxAmount,\n isPostQuote: transactionData.isPostQuote,\n isHyperliquidSource: transactionData.isHyperliquidSource,\n isPolymarketDepositWallet: transactionData.isPolymarketDepositWallet,\n refundTo: transactionData.refundTo,\n accountOverride: transactionData.accountOverride,\n paymentOverride: transactionData.paymentOverride,\n };\n\n const previousAccountOverride = config.accountOverride;\n\n callback(config);\n\n transactionData.accountOverride = config.accountOverride;\n transactionData.isMaxAmount = config.isMaxAmount;\n transactionData.isPostQuote = config.isPostQuote;\n transactionData.isHyperliquidSource = config.isHyperliquidSource;\n transactionData.isPolymarketDepositWallet =\n config.isPolymarketDepositWallet;\n transactionData.refundTo = config.refundTo;\n transactionData.paymentOverride = config.paymentOverride;\n\n if (\n !config.isPostQuote &&\n config.accountOverride !== previousAccountOverride\n ) {\n transactionData.paymentToken = undefined;\n }\n });\n }\n\n /**\n * Updates the payment token for a transaction.\n *\n * Resolves token metadata and balances, then stores the new payment token\n * in the transaction data. This triggers recalculation of source amounts\n * and quote retrieval.\n *\n * @param request - The payment token update request containing the\n * transaction ID, token address, and chain ID.\n */\n updatePaymentToken(request: UpdatePaymentTokenRequest): void {\n updatePaymentToken(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Updates the fiat payment state for a transaction.\n *\n * The request callback receives the current fiat payment state and can\n * mutate it to update properties such as the selected payment method or\n * fiat amount.\n *\n * @param request - The fiat payment update request containing the\n * transaction ID and a callback to mutate fiat payment state.\n */\n updateFiatPayment(request: UpdateFiatPaymentRequest): void {\n updateFiatPayment(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Gets the delegation transaction for a given transaction.\n *\n * Converts the provided transaction into a redeem delegation by delegating\n * to the configured callback. Returns the delegation transaction data\n * including the encoded call data, target address, value, and an optional\n * authorization list.\n *\n * @param args - The arguments forwarded to the {@link GetDelegationTransactionCallback},\n * containing the transaction metadata.\n * @returns A promise resolving to the delegation transaction data.\n */\n getDelegationTransaction(\n ...args: Parameters<GetDelegationTransactionCallback>\n ): ReturnType<GetDelegationTransactionCallback> {\n return this.#getDelegationTransaction(...args);\n }\n\n /**\n * Returns additional transactions for the paymentOverride flow.\n *\n * Delegates to the client-supplied {@link GetPaymentOverrideDataCallback}.\n * Called during quote execution when `paymentOverride` is defined on the transaction.\n * Returns an empty array when no callback is configured.\n *\n * @param args - The arguments forwarded to the {@link GetPaymentOverrideDataCallback}.\n * @returns A promise resolving to the additional transactions array.\n */\n getAmountData(\n ...args: Parameters<GetAmountDataCallback>\n ): ReturnType<GetAmountDataCallback> {\n return this.#getAmountData?.(...args) ?? Promise.resolve({ updates: [] });\n }\n\n getPaymentOverrideData(\n ...args: Parameters<GetPaymentOverrideDataCallback>\n ): ReturnType<GetPaymentOverrideDataCallback> {\n return (\n this.#getPaymentOverrideData?.(...args) ?? Promise.resolve({ calls: [] })\n );\n }\n\n /**\n * Gets the preferred strategy for a transaction.\n *\n * Returns the first strategy from the ordered list of strategies applicable\n * to the given transaction. Falls back to the default strategy order derived\n * from feature flags when no custom strategy callback is configured.\n *\n * @param transaction - The transaction metadata to determine the strategy for.\n * @returns The preferred {@link TransactionPayStrategy} for the transaction.\n */\n getStrategy(transaction: TransactionMeta): TransactionPayStrategy {\n return this.#getStrategiesWithFallback(transaction)[0];\n }\n\n /**\n * Derives the Polymarket deposit-wallet address for an EOA via the\n * client-supplied callback.\n *\n * @param args - The arguments forwarded to {@link PolymarketCallbacks.getDepositWalletAddress}.\n * @returns A promise resolving to the deposit-wallet address.\n */\n polymarketGetDepositWalletAddress(\n ...args: Parameters<PolymarketCallbacks['getDepositWalletAddress']>\n ): ReturnType<PolymarketCallbacks['getDepositWalletAddress']> {\n return this.#requirePolymarket().getDepositWalletAddress(...args);\n }\n\n /**\n * Signs and broadcasts a Polymarket deposit-wallet batch via the\n * client-supplied callback.\n *\n * @param args - The arguments forwarded to {@link PolymarketCallbacks.submitDepositWalletBatch}.\n * @returns A promise resolving to the relayer-issued source hash.\n */\n polymarketSubmitDepositWalletBatch(\n ...args: Parameters<PolymarketCallbacks['submitDepositWalletBatch']>\n ): ReturnType<PolymarketCallbacks['submitDepositWalletBatch']> {\n return this.#requirePolymarket().submitDepositWalletBatch(...args);\n }\n\n #requirePolymarket(): PolymarketCallbacks {\n if (!this.#polymarket) {\n throw new Error('TransactionPayController: Polymarket callbacks missing');\n }\n return this.#polymarket;\n }\n\n #removeTransactionData(transactionId: string): void {\n this.update((state) => {\n delete state.transactionData[transactionId];\n });\n }\n\n #updateTransactionData(\n transactionId: string,\n fn: (transactionData: Draft<TransactionData>) => void,\n ): void {\n let shouldUpdateQuotes = false;\n\n this.update((state) => {\n const { transactionData } = state;\n let current = transactionData[transactionId];\n const originalPaymentToken = current?.paymentToken;\n const originalTokens = current?.tokens;\n const originalIsMaxAmount = current?.isMaxAmount;\n const originalIsPostQuote = current?.isPostQuote;\n const originalAccountOverride = current?.accountOverride;\n const originalFiatPaymentAmount = current?.fiatPayment?.amountFiat;\n const originalFiatPaymentMethodId =\n current?.fiatPayment?.selectedPaymentMethodId;\n\n if (!current) {\n transactionData[transactionId] = {\n fiatPayment: {},\n isLoading: false,\n tokens: [],\n };\n\n current = transactionData[transactionId];\n }\n\n fn(current);\n\n const isPaymentTokenUpdated =\n current.paymentToken?.address?.toLowerCase() !==\n originalPaymentToken?.address?.toLowerCase() ||\n current.paymentToken?.chainId !== originalPaymentToken?.chainId;\n\n const isTokensUpdated = current.tokens !== originalTokens;\n const isIsMaxUpdated = current.isMaxAmount !== originalIsMaxAmount;\n const isPostQuoteUpdated = current.isPostQuote !== originalIsPostQuote;\n const isAccountOverrideUpdated =\n current.accountOverride !== originalAccountOverride;\n const isFiatAmountUpdated =\n current.fiatPayment?.amountFiat !== originalFiatPaymentAmount;\n const isFiatPaymentMethodUpdated =\n current.fiatPayment?.selectedPaymentMethodId !==\n originalFiatPaymentMethodId;\n\n if (\n isPaymentTokenUpdated ||\n isIsMaxUpdated ||\n isTokensUpdated ||\n isPostQuoteUpdated ||\n isAccountOverrideUpdated\n ) {\n updateSourceAmounts(transactionId, current as never, this.messenger);\n\n shouldUpdateQuotes = true;\n }\n\n if (isFiatAmountUpdated || isFiatPaymentMethodUpdated) {\n shouldUpdateQuotes = true;\n }\n });\n\n if (shouldUpdateQuotes) {\n updateQuotes({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger: this.messenger,\n transactionData: this.state.transactionData[transactionId],\n transactionId,\n updateTransactionData: this.#updateTransactionData.bind(this),\n }).catch(noop);\n }\n }\n\n #getStrategiesWithFallback(\n transaction: TransactionMeta,\n ): TransactionPayStrategy[] {\n const transactionData = this.state.transactionData[transaction.id];\n\n const strategyCandidates: unknown[] =\n this.#getStrategies?.(transaction) ??\n (this.#getStrategy ? [this.#getStrategy(transaction)] : []);\n\n const validStrategies = strategyCandidates.filter(\n (strategy): strategy is TransactionPayStrategy =>\n isTransactionPayStrategy(strategy),\n );\n\n if (validStrategies.length) {\n return validStrategies;\n }\n\n const paymentToken = transactionData?.paymentToken;\n\n return getStrategyOrder(\n this.messenger,\n paymentToken?.chainId,\n paymentToken?.address,\n transaction.type,\n transactionData?.fiatPayment?.selectedPaymentMethodId,\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionPayController.d.cts","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AAMxE,OAAO,EACL,eAAe,EAEf,sBAAsB,EACvB,wBAAoB;AAGrB,OAAO,KAAK,EACV,qBAAqB,EACrB,gCAAgC,EAChC,8BAA8B,EAC9B,mBAAmB,EACnB,yBAAyB,EAEzB,iCAAiC,EACjC,+BAA+B,EAC/B,6BAA6B,EAC7B,wBAAwB,EACxB,yBAAyB,EAC1B,oBAAgB;AAoCjB,qBAAa,wBAAyB,SAAQ,cAAc,CAC1D,OAAO,eAAe,EACtB,6BAA6B,EAC7B,iCAAiC,CAClC;;gBAiBa,EACV,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,SAAS,EACT,UAAU,EACV,KAAK,GACN,EAAE,+BAA+B;IAwClC;;;;;;;;OAQG;IACH,oBAAoB,CAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,yBAAyB,GAClC,IAAI;IAkCP;;;;;;;;;OASG;IACH,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAO5D;;;;;;;;;OASG;IACH,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAO1D;;;;;;;;;;;OAWG;IACH,wBAAwB,CACtB,GAAG,IAAI,EAAE,UAAU,CAAC,gCAAgC,CAAC,GACpD,UAAU,CAAC,gCAAgC,CAAC;IAI/C;;;;;;;;;OASG;IACH,aAAa,CACX,GAAG,IAAI,EAAE,UAAU,CAAC,qBAAqB,CAAC,GACzC,UAAU,CAAC,qBAAqB,CAAC;IAIpC,sBAAsB,CACpB,GAAG,IAAI,EAAE,UAAU,CAAC,8BAA8B,CAAC,GAClD,UAAU,CAAC,8BAA8B,CAAC;IAM7C;;;;;;;;;OASG;IACH,WAAW,CAAC,WAAW,EAAE,eAAe,GAAG,sBAAsB;IAIjE;;;;;;OAMG;IACH,iCAAiC,CAC/B,GAAG,IAAI,EAAE,UAAU,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC,GAClE,UAAU,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;IAI7D;;;;;;OAMG;IACH,kCAAkC,CAChC,GAAG,IAAI,EAAE,UAAU,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,CAAC,GACnE,UAAU,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;CAiJ/D"}
1
+ {"version":3,"file":"TransactionPayController.d.cts","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AAMxE,OAAO,EACL,eAAe,EAEf,sBAAsB,EACvB,wBAAoB;AAErB,OAAO,KAAK,EACV,qBAAqB,EACrB,gCAAgC,EAChC,8BAA8B,EAC9B,mBAAmB,EACnB,yBAAyB,EAEzB,iCAAiC,EACjC,+BAA+B,EAC/B,6BAA6B,EAC7B,wBAAwB,EACxB,yBAAyB,EAC1B,oBAAgB;AAkCjB,qBAAa,wBAAyB,SAAQ,cAAc,CAC1D,OAAO,eAAe,EACtB,6BAA6B,EAC7B,iCAAiC,CAClC;;gBAiBa,EACV,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,SAAS,EACT,UAAU,EACV,KAAK,GACN,EAAE,+BAA+B;IAwClC;;;;;;;;OAQG;IACH,oBAAoB,CAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,yBAAyB,GAClC,IAAI;IAkCP;;;;;;;;;OASG;IACH,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAO5D;;;;;;;;;OASG;IACH,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAO1D;;;;;;;;;;;OAWG;IACH,wBAAwB,CACtB,GAAG,IAAI,EAAE,UAAU,CAAC,gCAAgC,CAAC,GACpD,UAAU,CAAC,gCAAgC,CAAC;IAI/C;;;;;;;;;OASG;IACH,aAAa,CACX,GAAG,IAAI,EAAE,UAAU,CAAC,qBAAqB,CAAC,GACzC,UAAU,CAAC,qBAAqB,CAAC;IAIpC,sBAAsB,CACpB,GAAG,IAAI,EAAE,UAAU,CAAC,8BAA8B,CAAC,GAClD,UAAU,CAAC,8BAA8B,CAAC;IAM7C;;;;;;;;;OASG;IACH,WAAW,CAAC,WAAW,EAAE,eAAe,GAAG,sBAAsB;IAIjE;;;;;;OAMG;IACH,iCAAiC,CAC/B,GAAG,IAAI,EAAE,UAAU,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC,GAClE,UAAU,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;IAI7D;;;;;;OAMG;IACH,kCAAkC,CAChC,GAAG,IAAI,EAAE,UAAU,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,CAAC,GACnE,UAAU,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;CAuH/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionPayController.d.mts","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AAMxE,OAAO,EACL,eAAe,EAEf,sBAAsB,EACvB,wBAAoB;AAGrB,OAAO,KAAK,EACV,qBAAqB,EACrB,gCAAgC,EAChC,8BAA8B,EAC9B,mBAAmB,EACnB,yBAAyB,EAEzB,iCAAiC,EACjC,+BAA+B,EAC/B,6BAA6B,EAC7B,wBAAwB,EACxB,yBAAyB,EAC1B,oBAAgB;AAoCjB,qBAAa,wBAAyB,SAAQ,cAAc,CAC1D,OAAO,eAAe,EACtB,6BAA6B,EAC7B,iCAAiC,CAClC;;gBAiBa,EACV,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,SAAS,EACT,UAAU,EACV,KAAK,GACN,EAAE,+BAA+B;IAwClC;;;;;;;;OAQG;IACH,oBAAoB,CAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,yBAAyB,GAClC,IAAI;IAkCP;;;;;;;;;OASG;IACH,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAO5D;;;;;;;;;OASG;IACH,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAO1D;;;;;;;;;;;OAWG;IACH,wBAAwB,CACtB,GAAG,IAAI,EAAE,UAAU,CAAC,gCAAgC,CAAC,GACpD,UAAU,CAAC,gCAAgC,CAAC;IAI/C;;;;;;;;;OASG;IACH,aAAa,CACX,GAAG,IAAI,EAAE,UAAU,CAAC,qBAAqB,CAAC,GACzC,UAAU,CAAC,qBAAqB,CAAC;IAIpC,sBAAsB,CACpB,GAAG,IAAI,EAAE,UAAU,CAAC,8BAA8B,CAAC,GAClD,UAAU,CAAC,8BAA8B,CAAC;IAM7C;;;;;;;;;OASG;IACH,WAAW,CAAC,WAAW,EAAE,eAAe,GAAG,sBAAsB;IAIjE;;;;;;OAMG;IACH,iCAAiC,CAC/B,GAAG,IAAI,EAAE,UAAU,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC,GAClE,UAAU,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;IAI7D;;;;;;OAMG;IACH,kCAAkC,CAChC,GAAG,IAAI,EAAE,UAAU,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,CAAC,GACnE,UAAU,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;CAiJ/D"}
1
+ {"version":3,"file":"TransactionPayController.d.mts","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AAMxE,OAAO,EACL,eAAe,EAEf,sBAAsB,EACvB,wBAAoB;AAErB,OAAO,KAAK,EACV,qBAAqB,EACrB,gCAAgC,EAChC,8BAA8B,EAC9B,mBAAmB,EACnB,yBAAyB,EAEzB,iCAAiC,EACjC,+BAA+B,EAC/B,6BAA6B,EAC7B,wBAAwB,EACxB,yBAAyB,EAC1B,oBAAgB;AAkCjB,qBAAa,wBAAyB,SAAQ,cAAc,CAC1D,OAAO,eAAe,EACtB,6BAA6B,EAC7B,iCAAiC,CAClC;;gBAiBa,EACV,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,SAAS,EACT,UAAU,EACV,KAAK,GACN,EAAE,+BAA+B;IAwClC;;;;;;;;OAQG;IACH,oBAAoB,CAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,yBAAyB,GAClC,IAAI;IAkCP;;;;;;;;;OASG;IACH,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAO5D;;;;;;;;;OASG;IACH,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAO1D;;;;;;;;;;;OAWG;IACH,wBAAwB,CACtB,GAAG,IAAI,EAAE,UAAU,CAAC,gCAAgC,CAAC,GACpD,UAAU,CAAC,gCAAgC,CAAC;IAI/C;;;;;;;;;OASG;IACH,aAAa,CACX,GAAG,IAAI,EAAE,UAAU,CAAC,qBAAqB,CAAC,GACzC,UAAU,CAAC,qBAAqB,CAAC;IAIpC,sBAAsB,CACpB,GAAG,IAAI,EAAE,UAAU,CAAC,8BAA8B,CAAC,GAClD,UAAU,CAAC,8BAA8B,CAAC;IAM7C;;;;;;;;;OASG;IACH,WAAW,CAAC,WAAW,EAAE,eAAe,GAAG,sBAAsB;IAIjE;;;;;;OAMG;IACH,iCAAiC,CAC/B,GAAG,IAAI,EAAE,UAAU,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC,GAClE,UAAU,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;IAI7D;;;;;;OAMG;IACH,kCAAkC,CAChC,GAAG,IAAI,EAAE,UAAU,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,CAAC,GACnE,UAAU,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;CAuH/D"}
@@ -17,12 +17,10 @@ import { updateFiatPayment } from "./actions/update-fiat-payment.mjs";
17
17
  import { updatePaymentToken } from "./actions/update-payment-token.mjs";
18
18
  import { CONTROLLER_NAME, isTransactionPayStrategy, TransactionPayStrategy } from "./constants.mjs";
19
19
  import { QuoteRefresher } from "./helpers/QuoteRefresher.mjs";
20
- import { deriveFiatAssetForFiatPayment } from "./strategy/fiat/utils.mjs";
21
20
  import { getStrategyOrder } from "./utils/feature-flags.mjs";
22
21
  import { updateQuotes } from "./utils/quotes.mjs";
23
22
  import { updateSourceAmounts } from "./utils/source-amounts.mjs";
24
- import { buildCaipAssetType } from "./utils/token.mjs";
25
- import { getTransaction, subscribeAssetChanges, subscribeTransactionChanges } from "./utils/transaction.mjs";
23
+ import { subscribeAssetChanges, subscribeTransactionChanges } from "./utils/transaction.mjs";
26
24
  const MESSENGER_EXPOSED_METHODS = [
27
25
  'getAmountData',
28
26
  'getDelegationTransaction',
@@ -220,7 +218,6 @@ _TransactionPayController_getAmountData = new WeakMap(), _TransactionPayControll
220
218
  });
221
219
  }, _TransactionPayController_updateTransactionData = function _TransactionPayController_updateTransactionData(transactionId, fn) {
222
220
  let shouldUpdateQuotes = false;
223
- let shouldUpdateFiatToken = false;
224
221
  this.update((state) => {
225
222
  const { transactionData } = state;
226
223
  let current = transactionData[transactionId];
@@ -261,21 +258,7 @@ _TransactionPayController_getAmountData = new WeakMap(), _TransactionPayControll
261
258
  if (isFiatAmountUpdated || isFiatPaymentMethodUpdated) {
262
259
  shouldUpdateQuotes = true;
263
260
  }
264
- if (isFiatPaymentMethodUpdated) {
265
- shouldUpdateFiatToken = true;
266
- }
267
261
  });
268
- if (shouldUpdateFiatToken) {
269
- const transaction = getTransaction(transactionId, this.messenger);
270
- const fiatAsset = deriveFiatAssetForFiatPayment(transaction, this.messenger);
271
- if (fiatAsset) {
272
- __classPrivateFieldGet(this, _TransactionPayController_instances, "m", _TransactionPayController_updateTransactionData).call(this, transactionId, (data) => {
273
- if (data.fiatPayment) {
274
- data.fiatPayment.caipAssetId = buildCaipAssetType(fiatAsset.chainId, fiatAsset.address);
275
- }
276
- });
277
- }
278
- }
279
262
  if (shouldUpdateQuotes) {
280
263
  updateQuotes({
281
264
  getStrategies: __classPrivateFieldGet(this, _TransactionPayController_instances, "m", _TransactionPayController_getStrategiesWithFallback).bind(this),
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionPayController.mjs","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StateMetadata } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { Draft } from 'immer';\nimport { noop } from 'lodash';\n\nimport { updateFiatPayment } from './actions/update-fiat-payment';\nimport { updatePaymentToken } from './actions/update-payment-token';\nimport {\n CONTROLLER_NAME,\n isTransactionPayStrategy,\n TransactionPayStrategy,\n} from './constants';\nimport { QuoteRefresher } from './helpers/QuoteRefresher';\nimport { deriveFiatAssetForFiatPayment } from './strategy/fiat/utils';\nimport type {\n GetAmountDataCallback,\n GetDelegationTransactionCallback,\n GetPaymentOverrideDataCallback,\n PolymarketCallbacks,\n TransactionConfigCallback,\n TransactionData,\n TransactionPayControllerMessenger,\n TransactionPayControllerOptions,\n TransactionPayControllerState,\n UpdateFiatPaymentRequest,\n UpdatePaymentTokenRequest,\n} from './types';\nimport { getStrategyOrder } from './utils/feature-flags';\nimport { updateQuotes } from './utils/quotes';\nimport { updateSourceAmounts } from './utils/source-amounts';\nimport { buildCaipAssetType } from './utils/token';\nimport {\n getTransaction,\n subscribeAssetChanges,\n subscribeTransactionChanges,\n} from './utils/transaction';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'getAmountData',\n 'getDelegationTransaction',\n 'getPaymentOverrideData',\n 'getStrategy',\n 'polymarketGetDepositWalletAddress',\n 'polymarketSubmitDepositWalletBatch',\n 'setTransactionConfig',\n 'updateFiatPayment',\n 'updatePaymentToken',\n] as const;\n\nconst stateMetadata: StateMetadata<TransactionPayControllerState> = {\n transactionData: {\n includeInDebugSnapshot: false,\n includeInStateLogs: true,\n persist: false,\n usedInUi: true,\n },\n};\n\nconst getDefaultState = (): TransactionPayControllerState => ({\n transactionData: {},\n});\n\nexport class TransactionPayController extends BaseController<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState,\n TransactionPayControllerMessenger\n> {\n readonly #getAmountData?: GetAmountDataCallback;\n\n readonly #getDelegationTransaction: GetDelegationTransactionCallback;\n\n readonly #getPaymentOverrideData?: GetPaymentOverrideDataCallback;\n\n readonly #getStrategy?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy;\n\n readonly #getStrategies?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy[];\n\n readonly #polymarket?: PolymarketCallbacks;\n\n constructor({\n getAmountData,\n getDelegationTransaction,\n getPaymentOverrideData,\n getStrategy,\n getStrategies,\n messenger,\n polymarket,\n state,\n }: TransactionPayControllerOptions) {\n super({\n name: CONTROLLER_NAME,\n metadata: stateMetadata,\n messenger,\n state: { ...getDefaultState(), ...state },\n });\n\n this.#getAmountData = getAmountData;\n this.#getDelegationTransaction = getDelegationTransaction;\n this.#getPaymentOverrideData = getPaymentOverrideData;\n this.#getStrategy = getStrategy;\n this.#getStrategies = getStrategies;\n this.#polymarket = polymarket;\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n\n subscribeTransactionChanges(\n messenger,\n this.#updateTransactionData.bind(this),\n this.#removeTransactionData.bind(this),\n );\n\n subscribeAssetChanges(\n messenger,\n () => this.state,\n this.#updateTransactionData.bind(this),\n );\n\n // eslint-disable-next-line no-new\n new QuoteRefresher({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Sets the transaction configuration.\n *\n * The callback receives the current configuration properties and can mutate\n * them in place. Updated values are written back to the transaction data.\n *\n * @param transactionId - The ID of the transaction to configure.\n * @param callback - A callback that receives a mutable {@link TransactionConfig} object.\n */\n setTransactionConfig(\n transactionId: string,\n callback: TransactionConfigCallback,\n ): void {\n this.#updateTransactionData(transactionId, (transactionData) => {\n const config = {\n isMaxAmount: transactionData.isMaxAmount,\n isPostQuote: transactionData.isPostQuote,\n isHyperliquidSource: transactionData.isHyperliquidSource,\n isPolymarketDepositWallet: transactionData.isPolymarketDepositWallet,\n refundTo: transactionData.refundTo,\n accountOverride: transactionData.accountOverride,\n paymentOverride: transactionData.paymentOverride,\n };\n\n const previousAccountOverride = config.accountOverride;\n\n callback(config);\n\n transactionData.accountOverride = config.accountOverride;\n transactionData.isMaxAmount = config.isMaxAmount;\n transactionData.isPostQuote = config.isPostQuote;\n transactionData.isHyperliquidSource = config.isHyperliquidSource;\n transactionData.isPolymarketDepositWallet =\n config.isPolymarketDepositWallet;\n transactionData.refundTo = config.refundTo;\n transactionData.paymentOverride = config.paymentOverride;\n\n if (\n !config.isPostQuote &&\n config.accountOverride !== previousAccountOverride\n ) {\n transactionData.paymentToken = undefined;\n }\n });\n }\n\n /**\n * Updates the payment token for a transaction.\n *\n * Resolves token metadata and balances, then stores the new payment token\n * in the transaction data. This triggers recalculation of source amounts\n * and quote retrieval.\n *\n * @param request - The payment token update request containing the\n * transaction ID, token address, and chain ID.\n */\n updatePaymentToken(request: UpdatePaymentTokenRequest): void {\n updatePaymentToken(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Updates the fiat payment state for a transaction.\n *\n * The request callback receives the current fiat payment state and can\n * mutate it to update properties such as the selected payment method or\n * fiat amount.\n *\n * @param request - The fiat payment update request containing the\n * transaction ID and a callback to mutate fiat payment state.\n */\n updateFiatPayment(request: UpdateFiatPaymentRequest): void {\n updateFiatPayment(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Gets the delegation transaction for a given transaction.\n *\n * Converts the provided transaction into a redeem delegation by delegating\n * to the configured callback. Returns the delegation transaction data\n * including the encoded call data, target address, value, and an optional\n * authorization list.\n *\n * @param args - The arguments forwarded to the {@link GetDelegationTransactionCallback},\n * containing the transaction metadata.\n * @returns A promise resolving to the delegation transaction data.\n */\n getDelegationTransaction(\n ...args: Parameters<GetDelegationTransactionCallback>\n ): ReturnType<GetDelegationTransactionCallback> {\n return this.#getDelegationTransaction(...args);\n }\n\n /**\n * Returns additional transactions for the paymentOverride flow.\n *\n * Delegates to the client-supplied {@link GetPaymentOverrideDataCallback}.\n * Called during quote execution when `paymentOverride` is defined on the transaction.\n * Returns an empty array when no callback is configured.\n *\n * @param args - The arguments forwarded to the {@link GetPaymentOverrideDataCallback}.\n * @returns A promise resolving to the additional transactions array.\n */\n getAmountData(\n ...args: Parameters<GetAmountDataCallback>\n ): ReturnType<GetAmountDataCallback> {\n return this.#getAmountData?.(...args) ?? Promise.resolve({ updates: [] });\n }\n\n getPaymentOverrideData(\n ...args: Parameters<GetPaymentOverrideDataCallback>\n ): ReturnType<GetPaymentOverrideDataCallback> {\n return (\n this.#getPaymentOverrideData?.(...args) ?? Promise.resolve({ calls: [] })\n );\n }\n\n /**\n * Gets the preferred strategy for a transaction.\n *\n * Returns the first strategy from the ordered list of strategies applicable\n * to the given transaction. Falls back to the default strategy order derived\n * from feature flags when no custom strategy callback is configured.\n *\n * @param transaction - The transaction metadata to determine the strategy for.\n * @returns The preferred {@link TransactionPayStrategy} for the transaction.\n */\n getStrategy(transaction: TransactionMeta): TransactionPayStrategy {\n return this.#getStrategiesWithFallback(transaction)[0];\n }\n\n /**\n * Derives the Polymarket deposit-wallet address for an EOA via the\n * client-supplied callback.\n *\n * @param args - The arguments forwarded to {@link PolymarketCallbacks.getDepositWalletAddress}.\n * @returns A promise resolving to the deposit-wallet address.\n */\n polymarketGetDepositWalletAddress(\n ...args: Parameters<PolymarketCallbacks['getDepositWalletAddress']>\n ): ReturnType<PolymarketCallbacks['getDepositWalletAddress']> {\n return this.#requirePolymarket().getDepositWalletAddress(...args);\n }\n\n /**\n * Signs and broadcasts a Polymarket deposit-wallet batch via the\n * client-supplied callback.\n *\n * @param args - The arguments forwarded to {@link PolymarketCallbacks.submitDepositWalletBatch}.\n * @returns A promise resolving to the relayer-issued source hash.\n */\n polymarketSubmitDepositWalletBatch(\n ...args: Parameters<PolymarketCallbacks['submitDepositWalletBatch']>\n ): ReturnType<PolymarketCallbacks['submitDepositWalletBatch']> {\n return this.#requirePolymarket().submitDepositWalletBatch(...args);\n }\n\n #requirePolymarket(): PolymarketCallbacks {\n if (!this.#polymarket) {\n throw new Error('TransactionPayController: Polymarket callbacks missing');\n }\n return this.#polymarket;\n }\n\n #removeTransactionData(transactionId: string): void {\n this.update((state) => {\n delete state.transactionData[transactionId];\n });\n }\n\n #updateTransactionData(\n transactionId: string,\n fn: (transactionData: Draft<TransactionData>) => void,\n ): void {\n let shouldUpdateQuotes = false;\n let shouldUpdateFiatToken = false;\n\n this.update((state) => {\n const { transactionData } = state;\n let current = transactionData[transactionId];\n const originalPaymentToken = current?.paymentToken;\n const originalTokens = current?.tokens;\n const originalIsMaxAmount = current?.isMaxAmount;\n const originalIsPostQuote = current?.isPostQuote;\n const originalAccountOverride = current?.accountOverride;\n const originalFiatPaymentAmount = current?.fiatPayment?.amountFiat;\n const originalFiatPaymentMethodId =\n current?.fiatPayment?.selectedPaymentMethodId;\n\n if (!current) {\n transactionData[transactionId] = {\n fiatPayment: {},\n isLoading: false,\n tokens: [],\n };\n\n current = transactionData[transactionId];\n }\n\n fn(current);\n\n const isPaymentTokenUpdated =\n current.paymentToken?.address?.toLowerCase() !==\n originalPaymentToken?.address?.toLowerCase() ||\n current.paymentToken?.chainId !== originalPaymentToken?.chainId;\n\n const isTokensUpdated = current.tokens !== originalTokens;\n const isIsMaxUpdated = current.isMaxAmount !== originalIsMaxAmount;\n const isPostQuoteUpdated = current.isPostQuote !== originalIsPostQuote;\n const isAccountOverrideUpdated =\n current.accountOverride !== originalAccountOverride;\n const isFiatAmountUpdated =\n current.fiatPayment?.amountFiat !== originalFiatPaymentAmount;\n const isFiatPaymentMethodUpdated =\n current.fiatPayment?.selectedPaymentMethodId !==\n originalFiatPaymentMethodId;\n\n if (\n isPaymentTokenUpdated ||\n isIsMaxUpdated ||\n isTokensUpdated ||\n isPostQuoteUpdated ||\n isAccountOverrideUpdated\n ) {\n updateSourceAmounts(transactionId, current as never, this.messenger);\n\n shouldUpdateQuotes = true;\n }\n\n if (isFiatAmountUpdated || isFiatPaymentMethodUpdated) {\n shouldUpdateQuotes = true;\n }\n\n if (isFiatPaymentMethodUpdated) {\n shouldUpdateFiatToken = true;\n }\n });\n\n if (shouldUpdateFiatToken) {\n const transaction = getTransaction(\n transactionId,\n this.messenger,\n ) as TransactionMeta;\n const fiatAsset = deriveFiatAssetForFiatPayment(\n transaction,\n this.messenger,\n );\n if (fiatAsset) {\n this.#updateTransactionData(transactionId, (data) => {\n if (data.fiatPayment) {\n data.fiatPayment.caipAssetId = buildCaipAssetType(\n fiatAsset.chainId,\n fiatAsset.address,\n );\n }\n });\n }\n }\n\n if (shouldUpdateQuotes) {\n updateQuotes({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger: this.messenger,\n transactionData: this.state.transactionData[transactionId],\n transactionId,\n updateTransactionData: this.#updateTransactionData.bind(this),\n }).catch(noop);\n }\n }\n\n #getStrategiesWithFallback(\n transaction: TransactionMeta,\n ): TransactionPayStrategy[] {\n const transactionData = this.state.transactionData[transaction.id];\n\n const strategyCandidates: unknown[] =\n this.#getStrategies?.(transaction) ??\n (this.#getStrategy ? [this.#getStrategy(transaction)] : []);\n\n const validStrategies = strategyCandidates.filter(\n (strategy): strategy is TransactionPayStrategy =>\n isTransactionPayStrategy(strategy),\n );\n\n if (validStrategies.length) {\n return validStrategies;\n }\n\n const paymentToken = transactionData?.paymentToken;\n\n return getStrategyOrder(\n this.messenger,\n paymentToken?.chainId,\n paymentToken?.address,\n transaction.type,\n transactionData?.fiatPayment?.selectedPaymentMethodId,\n );\n }\n}\n"]}
1
+ {"version":3,"file":"TransactionPayController.mjs","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StateMetadata } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { Draft } from 'immer';\nimport { noop } from 'lodash';\n\nimport { updateFiatPayment } from './actions/update-fiat-payment';\nimport { updatePaymentToken } from './actions/update-payment-token';\nimport {\n CONTROLLER_NAME,\n isTransactionPayStrategy,\n TransactionPayStrategy,\n} from './constants';\nimport { QuoteRefresher } from './helpers/QuoteRefresher';\nimport type {\n GetAmountDataCallback,\n GetDelegationTransactionCallback,\n GetPaymentOverrideDataCallback,\n PolymarketCallbacks,\n TransactionConfigCallback,\n TransactionData,\n TransactionPayControllerMessenger,\n TransactionPayControllerOptions,\n TransactionPayControllerState,\n UpdateFiatPaymentRequest,\n UpdatePaymentTokenRequest,\n} from './types';\nimport { getStrategyOrder } from './utils/feature-flags';\nimport { updateQuotes } from './utils/quotes';\nimport { updateSourceAmounts } from './utils/source-amounts';\nimport {\n subscribeAssetChanges,\n subscribeTransactionChanges,\n} from './utils/transaction';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'getAmountData',\n 'getDelegationTransaction',\n 'getPaymentOverrideData',\n 'getStrategy',\n 'polymarketGetDepositWalletAddress',\n 'polymarketSubmitDepositWalletBatch',\n 'setTransactionConfig',\n 'updateFiatPayment',\n 'updatePaymentToken',\n] as const;\n\nconst stateMetadata: StateMetadata<TransactionPayControllerState> = {\n transactionData: {\n includeInDebugSnapshot: false,\n includeInStateLogs: true,\n persist: false,\n usedInUi: true,\n },\n};\n\nconst getDefaultState = (): TransactionPayControllerState => ({\n transactionData: {},\n});\n\nexport class TransactionPayController extends BaseController<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState,\n TransactionPayControllerMessenger\n> {\n readonly #getAmountData?: GetAmountDataCallback;\n\n readonly #getDelegationTransaction: GetDelegationTransactionCallback;\n\n readonly #getPaymentOverrideData?: GetPaymentOverrideDataCallback;\n\n readonly #getStrategy?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy;\n\n readonly #getStrategies?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy[];\n\n readonly #polymarket?: PolymarketCallbacks;\n\n constructor({\n getAmountData,\n getDelegationTransaction,\n getPaymentOverrideData,\n getStrategy,\n getStrategies,\n messenger,\n polymarket,\n state,\n }: TransactionPayControllerOptions) {\n super({\n name: CONTROLLER_NAME,\n metadata: stateMetadata,\n messenger,\n state: { ...getDefaultState(), ...state },\n });\n\n this.#getAmountData = getAmountData;\n this.#getDelegationTransaction = getDelegationTransaction;\n this.#getPaymentOverrideData = getPaymentOverrideData;\n this.#getStrategy = getStrategy;\n this.#getStrategies = getStrategies;\n this.#polymarket = polymarket;\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n\n subscribeTransactionChanges(\n messenger,\n this.#updateTransactionData.bind(this),\n this.#removeTransactionData.bind(this),\n );\n\n subscribeAssetChanges(\n messenger,\n () => this.state,\n this.#updateTransactionData.bind(this),\n );\n\n // eslint-disable-next-line no-new\n new QuoteRefresher({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Sets the transaction configuration.\n *\n * The callback receives the current configuration properties and can mutate\n * them in place. Updated values are written back to the transaction data.\n *\n * @param transactionId - The ID of the transaction to configure.\n * @param callback - A callback that receives a mutable {@link TransactionConfig} object.\n */\n setTransactionConfig(\n transactionId: string,\n callback: TransactionConfigCallback,\n ): void {\n this.#updateTransactionData(transactionId, (transactionData) => {\n const config = {\n isMaxAmount: transactionData.isMaxAmount,\n isPostQuote: transactionData.isPostQuote,\n isHyperliquidSource: transactionData.isHyperliquidSource,\n isPolymarketDepositWallet: transactionData.isPolymarketDepositWallet,\n refundTo: transactionData.refundTo,\n accountOverride: transactionData.accountOverride,\n paymentOverride: transactionData.paymentOverride,\n };\n\n const previousAccountOverride = config.accountOverride;\n\n callback(config);\n\n transactionData.accountOverride = config.accountOverride;\n transactionData.isMaxAmount = config.isMaxAmount;\n transactionData.isPostQuote = config.isPostQuote;\n transactionData.isHyperliquidSource = config.isHyperliquidSource;\n transactionData.isPolymarketDepositWallet =\n config.isPolymarketDepositWallet;\n transactionData.refundTo = config.refundTo;\n transactionData.paymentOverride = config.paymentOverride;\n\n if (\n !config.isPostQuote &&\n config.accountOverride !== previousAccountOverride\n ) {\n transactionData.paymentToken = undefined;\n }\n });\n }\n\n /**\n * Updates the payment token for a transaction.\n *\n * Resolves token metadata and balances, then stores the new payment token\n * in the transaction data. This triggers recalculation of source amounts\n * and quote retrieval.\n *\n * @param request - The payment token update request containing the\n * transaction ID, token address, and chain ID.\n */\n updatePaymentToken(request: UpdatePaymentTokenRequest): void {\n updatePaymentToken(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Updates the fiat payment state for a transaction.\n *\n * The request callback receives the current fiat payment state and can\n * mutate it to update properties such as the selected payment method or\n * fiat amount.\n *\n * @param request - The fiat payment update request containing the\n * transaction ID and a callback to mutate fiat payment state.\n */\n updateFiatPayment(request: UpdateFiatPaymentRequest): void {\n updateFiatPayment(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Gets the delegation transaction for a given transaction.\n *\n * Converts the provided transaction into a redeem delegation by delegating\n * to the configured callback. Returns the delegation transaction data\n * including the encoded call data, target address, value, and an optional\n * authorization list.\n *\n * @param args - The arguments forwarded to the {@link GetDelegationTransactionCallback},\n * containing the transaction metadata.\n * @returns A promise resolving to the delegation transaction data.\n */\n getDelegationTransaction(\n ...args: Parameters<GetDelegationTransactionCallback>\n ): ReturnType<GetDelegationTransactionCallback> {\n return this.#getDelegationTransaction(...args);\n }\n\n /**\n * Returns additional transactions for the paymentOverride flow.\n *\n * Delegates to the client-supplied {@link GetPaymentOverrideDataCallback}.\n * Called during quote execution when `paymentOverride` is defined on the transaction.\n * Returns an empty array when no callback is configured.\n *\n * @param args - The arguments forwarded to the {@link GetPaymentOverrideDataCallback}.\n * @returns A promise resolving to the additional transactions array.\n */\n getAmountData(\n ...args: Parameters<GetAmountDataCallback>\n ): ReturnType<GetAmountDataCallback> {\n return this.#getAmountData?.(...args) ?? Promise.resolve({ updates: [] });\n }\n\n getPaymentOverrideData(\n ...args: Parameters<GetPaymentOverrideDataCallback>\n ): ReturnType<GetPaymentOverrideDataCallback> {\n return (\n this.#getPaymentOverrideData?.(...args) ?? Promise.resolve({ calls: [] })\n );\n }\n\n /**\n * Gets the preferred strategy for a transaction.\n *\n * Returns the first strategy from the ordered list of strategies applicable\n * to the given transaction. Falls back to the default strategy order derived\n * from feature flags when no custom strategy callback is configured.\n *\n * @param transaction - The transaction metadata to determine the strategy for.\n * @returns The preferred {@link TransactionPayStrategy} for the transaction.\n */\n getStrategy(transaction: TransactionMeta): TransactionPayStrategy {\n return this.#getStrategiesWithFallback(transaction)[0];\n }\n\n /**\n * Derives the Polymarket deposit-wallet address for an EOA via the\n * client-supplied callback.\n *\n * @param args - The arguments forwarded to {@link PolymarketCallbacks.getDepositWalletAddress}.\n * @returns A promise resolving to the deposit-wallet address.\n */\n polymarketGetDepositWalletAddress(\n ...args: Parameters<PolymarketCallbacks['getDepositWalletAddress']>\n ): ReturnType<PolymarketCallbacks['getDepositWalletAddress']> {\n return this.#requirePolymarket().getDepositWalletAddress(...args);\n }\n\n /**\n * Signs and broadcasts a Polymarket deposit-wallet batch via the\n * client-supplied callback.\n *\n * @param args - The arguments forwarded to {@link PolymarketCallbacks.submitDepositWalletBatch}.\n * @returns A promise resolving to the relayer-issued source hash.\n */\n polymarketSubmitDepositWalletBatch(\n ...args: Parameters<PolymarketCallbacks['submitDepositWalletBatch']>\n ): ReturnType<PolymarketCallbacks['submitDepositWalletBatch']> {\n return this.#requirePolymarket().submitDepositWalletBatch(...args);\n }\n\n #requirePolymarket(): PolymarketCallbacks {\n if (!this.#polymarket) {\n throw new Error('TransactionPayController: Polymarket callbacks missing');\n }\n return this.#polymarket;\n }\n\n #removeTransactionData(transactionId: string): void {\n this.update((state) => {\n delete state.transactionData[transactionId];\n });\n }\n\n #updateTransactionData(\n transactionId: string,\n fn: (transactionData: Draft<TransactionData>) => void,\n ): void {\n let shouldUpdateQuotes = false;\n\n this.update((state) => {\n const { transactionData } = state;\n let current = transactionData[transactionId];\n const originalPaymentToken = current?.paymentToken;\n const originalTokens = current?.tokens;\n const originalIsMaxAmount = current?.isMaxAmount;\n const originalIsPostQuote = current?.isPostQuote;\n const originalAccountOverride = current?.accountOverride;\n const originalFiatPaymentAmount = current?.fiatPayment?.amountFiat;\n const originalFiatPaymentMethodId =\n current?.fiatPayment?.selectedPaymentMethodId;\n\n if (!current) {\n transactionData[transactionId] = {\n fiatPayment: {},\n isLoading: false,\n tokens: [],\n };\n\n current = transactionData[transactionId];\n }\n\n fn(current);\n\n const isPaymentTokenUpdated =\n current.paymentToken?.address?.toLowerCase() !==\n originalPaymentToken?.address?.toLowerCase() ||\n current.paymentToken?.chainId !== originalPaymentToken?.chainId;\n\n const isTokensUpdated = current.tokens !== originalTokens;\n const isIsMaxUpdated = current.isMaxAmount !== originalIsMaxAmount;\n const isPostQuoteUpdated = current.isPostQuote !== originalIsPostQuote;\n const isAccountOverrideUpdated =\n current.accountOverride !== originalAccountOverride;\n const isFiatAmountUpdated =\n current.fiatPayment?.amountFiat !== originalFiatPaymentAmount;\n const isFiatPaymentMethodUpdated =\n current.fiatPayment?.selectedPaymentMethodId !==\n originalFiatPaymentMethodId;\n\n if (\n isPaymentTokenUpdated ||\n isIsMaxUpdated ||\n isTokensUpdated ||\n isPostQuoteUpdated ||\n isAccountOverrideUpdated\n ) {\n updateSourceAmounts(transactionId, current as never, this.messenger);\n\n shouldUpdateQuotes = true;\n }\n\n if (isFiatAmountUpdated || isFiatPaymentMethodUpdated) {\n shouldUpdateQuotes = true;\n }\n });\n\n if (shouldUpdateQuotes) {\n updateQuotes({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger: this.messenger,\n transactionData: this.state.transactionData[transactionId],\n transactionId,\n updateTransactionData: this.#updateTransactionData.bind(this),\n }).catch(noop);\n }\n }\n\n #getStrategiesWithFallback(\n transaction: TransactionMeta,\n ): TransactionPayStrategy[] {\n const transactionData = this.state.transactionData[transaction.id];\n\n const strategyCandidates: unknown[] =\n this.#getStrategies?.(transaction) ??\n (this.#getStrategy ? [this.#getStrategy(transaction)] : []);\n\n const validStrategies = strategyCandidates.filter(\n (strategy): strategy is TransactionPayStrategy =>\n isTransactionPayStrategy(strategy),\n );\n\n if (validStrategies.length) {\n return validStrategies;\n }\n\n const paymentToken = transactionData?.paymentToken;\n\n return getStrategyOrder(\n this.messenger,\n paymentToken?.chainId,\n paymentToken?.address,\n transaction.type,\n transactionData?.fiatPayment?.selectedPaymentMethodId,\n );\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isTransactionPayStrategy = exports.TransactionPayStrategy = exports.PaymentOverride = exports.STABLECOINS = exports.SLIP44_COIN_TYPE_BY_CHAIN = exports.USDC_DECIMALS = exports.HYPERCORE_USDC_DECIMALS = exports.HYPERCORE_USDC_ADDRESS = exports.POLYGON_PUSD_ADDRESS = exports.POLYGON_USDCE_ADDRESS = exports.ARBITRUM_USDC_ADDRESS = exports.NATIVE_TOKEN_ADDRESS = exports.CHAIN_ID_HYPERCORE = exports.CHAIN_ID_POLYGON = exports.CHAIN_ID_MAINNET = exports.CHAIN_ID_ARBITRUM = exports.PERPS_DEPOSIT_TYPES = exports.CONTROLLER_NAME = void 0;
3
+ exports.isTransactionPayStrategy = exports.TransactionPayStrategy = exports.PaymentOverride = exports.STABLECOINS = exports.SLIP44_COIN_TYPE_BY_CHAIN = exports.USDC_DECIMALS = exports.HYPERCORE_USDC_DECIMALS = exports.HYPERCORE_USDC_ADDRESS = exports.MUSD_MONAD_ADDRESS = exports.POLYGON_PUSD_ADDRESS = exports.POLYGON_USDCE_ADDRESS = exports.ARBITRUM_USDC_ADDRESS = exports.NATIVE_TOKEN_ADDRESS = exports.CHAIN_ID_MONAD = exports.CHAIN_ID_HYPERCORE = exports.CHAIN_ID_POLYGON = exports.CHAIN_ID_MAINNET = exports.CHAIN_ID_ARBITRUM = exports.PERPS_DEPOSIT_TYPES = exports.CONTROLLER_NAME = void 0;
4
4
  const transaction_controller_1 = require("@metamask/transaction-controller");
5
5
  exports.CONTROLLER_NAME = 'TransactionPayController';
6
6
  /**
@@ -15,10 +15,12 @@ exports.CHAIN_ID_ARBITRUM = '0xa4b1';
15
15
  exports.CHAIN_ID_MAINNET = '0x1';
16
16
  exports.CHAIN_ID_POLYGON = '0x89';
17
17
  exports.CHAIN_ID_HYPERCORE = '0x539';
18
+ exports.CHAIN_ID_MONAD = '0x8f';
18
19
  exports.NATIVE_TOKEN_ADDRESS = '0x0000000000000000000000000000000000000000';
19
20
  exports.ARBITRUM_USDC_ADDRESS = '0xaf88d065e77c8cC2239327C5EDb3A432268e5831';
20
21
  exports.POLYGON_USDCE_ADDRESS = '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174';
21
22
  exports.POLYGON_PUSD_ADDRESS = '0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB';
23
+ exports.MUSD_MONAD_ADDRESS = '0xaca92e438df0b2401ff60da7e4337b687a2435da';
22
24
  exports.HYPERCORE_USDC_ADDRESS = '0x00000000000000000000000000000000';
23
25
  exports.HYPERCORE_USDC_DECIMALS = 8;
24
26
  exports.USDC_DECIMALS = 6;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,6EAAmE;AAGtD,QAAA,eAAe,GAAG,0BAA0B,CAAC;AAE1D;;;GAGG;AACU,QAAA,mBAAmB,GAAsB;IACpD,wCAAe,CAAC,YAAY;IAC5B,wCAAe,CAAC,oBAAoB;CACrC,CAAC;AAEW,QAAA,iBAAiB,GAAG,QAAe,CAAC;AACpC,QAAA,gBAAgB,GAAG,KAAY,CAAC;AAChC,QAAA,gBAAgB,GAAG,MAAa,CAAC;AACjC,QAAA,kBAAkB,GAAG,OAAc,CAAC;AAEpC,QAAA,oBAAoB,GAC/B,4CAAmD,CAAC;AAEzC,QAAA,qBAAqB,GAChC,4CAAmD,CAAC;AAEzC,QAAA,qBAAqB,GAChC,4CAAmD,CAAC;AAEzC,QAAA,oBAAoB,GAC/B,4CAAmD,CAAC;AAEzC,QAAA,sBAAsB,GAAG,oCAAoC,CAAC;AAE9D,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAC5B,QAAA,aAAa,GAAG,CAAC,CAAC;AAElB,QAAA,yBAAyB,GAAwB;IAC5D,CAAC,wBAAgB,CAAC,EAAE,GAAG,EAAE,MAAM;CAChC,CAAC;AAEW,QAAA,WAAW,GAAuB;IAC7C,UAAU;IACV,KAAK,EAAE;QACL,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,yBAAiB,CAAC,EAAE,CAAC,6BAAqB,CAAC,WAAW,EAAS,CAAC;IACjE,QAAQ;IACR,QAAQ,EAAE;QACR,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,wBAAgB,CAAC,EAAE;QAClB,6BAAqB,CAAC,WAAW,EAAS;QAC1C,4BAAoB,CAAC,WAAW,EAAS;KAC1C;IACD,CAAC,0BAAkB,CAAC,EAAE,CAAC,8BAAsB,CAAC,EAAE,OAAO;CACxD,CAAC;AAEF,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,gDAA6B,CAAA;IAC7B,kCAAe,CAAA;IACf,sCAAmB,CAAA;AACrB,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,uCAAa,CAAA;IACb,yCAAe,CAAA;IACf,2CAAiB,CAAA;IACjB,uCAAa,CAAA;AACf,CAAC,EAPW,sBAAsB,sCAAtB,sBAAsB,QAOjC;AAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAExE;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,QAAiB;IAEjB,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAkC,CAAC,CAAC;AAClE,CAAC;AAJD,4DAIC","sourcesContent":["import { TransactionType } from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\n\nexport const CONTROLLER_NAME = 'TransactionPayController';\n\n/**\n * Parent transaction types that represent a Hyperliquid perps deposit and\n * share the same Arbitrum-USDC → Hypercore handling in pay strategies.\n */\nexport const PERPS_DEPOSIT_TYPES: TransactionType[] = [\n TransactionType.perpsDeposit,\n TransactionType.perpsDepositAndOrder,\n];\n\nexport const CHAIN_ID_ARBITRUM = '0xa4b1' as Hex;\nexport const CHAIN_ID_MAINNET = '0x1' as Hex;\nexport const CHAIN_ID_POLYGON = '0x89' as Hex;\nexport const CHAIN_ID_HYPERCORE = '0x539' as Hex;\n\nexport const NATIVE_TOKEN_ADDRESS =\n '0x0000000000000000000000000000000000000000' as Hex;\n\nexport const ARBITRUM_USDC_ADDRESS =\n '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' as Hex;\n\nexport const POLYGON_USDCE_ADDRESS =\n '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' as Hex;\n\nexport const POLYGON_PUSD_ADDRESS =\n '0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB' as Hex;\n\nexport const HYPERCORE_USDC_ADDRESS = '0x00000000000000000000000000000000';\n\nexport const HYPERCORE_USDC_DECIMALS = 8;\nexport const USDC_DECIMALS = 6;\n\nexport const SLIP44_COIN_TYPE_BY_CHAIN: Record<Hex, number> = {\n [CHAIN_ID_POLYGON]: 966, // POL\n};\n\nexport const STABLECOINS: Record<Hex, Hex[]> = {\n // Mainnet\n '0x1': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC\n '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT\n ],\n [CHAIN_ID_ARBITRUM]: [ARBITRUM_USDC_ADDRESS.toLowerCase() as Hex],\n // Linea\n '0xe708': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0x176211869ca2b568f2a7d4ee941e073a821ee1ff', // USDC\n '0xa219439258ca9da29e9cc4ce5596924745e12b93', // USDT\n ],\n [CHAIN_ID_POLYGON]: [\n POLYGON_USDCE_ADDRESS.toLowerCase() as Hex,\n POLYGON_PUSD_ADDRESS.toLowerCase() as Hex,\n ],\n [CHAIN_ID_HYPERCORE]: [HYPERCORE_USDC_ADDRESS], // USDC\n};\n\nexport enum PaymentOverride {\n MoneyAccount = 'moneyAccount',\n Perps = 'perps',\n Predict = 'predict',\n}\n\nexport enum TransactionPayStrategy {\n Across = 'across',\n Bridge = 'bridge',\n Fiat = 'fiat',\n Relay = 'relay',\n Server = 'server',\n Test = 'test',\n}\n\nconst VALID_STRATEGIES = new Set(Object.values(TransactionPayStrategy));\n\n/**\n * Checks if a value is a valid transaction pay strategy.\n *\n * @param strategy - Candidate strategy value.\n * @returns True if the value is a valid strategy.\n */\nexport function isTransactionPayStrategy(\n strategy: unknown,\n): strategy is TransactionPayStrategy {\n return VALID_STRATEGIES.has(strategy as TransactionPayStrategy);\n}\n"]}
1
+ {"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,6EAAmE;AAGtD,QAAA,eAAe,GAAG,0BAA0B,CAAC;AAE1D;;;GAGG;AACU,QAAA,mBAAmB,GAAsB;IACpD,wCAAe,CAAC,YAAY;IAC5B,wCAAe,CAAC,oBAAoB;CACrC,CAAC;AAEW,QAAA,iBAAiB,GAAG,QAAe,CAAC;AACpC,QAAA,gBAAgB,GAAG,KAAY,CAAC;AAChC,QAAA,gBAAgB,GAAG,MAAa,CAAC;AACjC,QAAA,kBAAkB,GAAG,OAAc,CAAC;AACpC,QAAA,cAAc,GAAG,MAAa,CAAC;AAE/B,QAAA,oBAAoB,GAC/B,4CAAmD,CAAC;AAEzC,QAAA,qBAAqB,GAChC,4CAAmD,CAAC;AAEzC,QAAA,qBAAqB,GAChC,4CAAmD,CAAC;AAEzC,QAAA,oBAAoB,GAC/B,4CAAmD,CAAC;AAEzC,QAAA,kBAAkB,GAC7B,4CAAmD,CAAC;AAEzC,QAAA,sBAAsB,GAAG,oCAAoC,CAAC;AAE9D,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAC5B,QAAA,aAAa,GAAG,CAAC,CAAC;AAElB,QAAA,yBAAyB,GAAwB;IAC5D,CAAC,wBAAgB,CAAC,EAAE,GAAG,EAAE,MAAM;CAChC,CAAC;AAEW,QAAA,WAAW,GAAuB;IAC7C,UAAU;IACV,KAAK,EAAE;QACL,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,yBAAiB,CAAC,EAAE,CAAC,6BAAqB,CAAC,WAAW,EAAS,CAAC;IACjE,QAAQ;IACR,QAAQ,EAAE;QACR,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,wBAAgB,CAAC,EAAE;QAClB,6BAAqB,CAAC,WAAW,EAAS;QAC1C,4BAAoB,CAAC,WAAW,EAAS;KAC1C;IACD,CAAC,0BAAkB,CAAC,EAAE,CAAC,8BAAsB,CAAC,EAAE,OAAO;CACxD,CAAC;AAEF,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,gDAA6B,CAAA;IAC7B,kCAAe,CAAA;IACf,sCAAmB,CAAA;AACrB,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,uCAAa,CAAA;IACb,yCAAe,CAAA;IACf,2CAAiB,CAAA;IACjB,uCAAa,CAAA;AACf,CAAC,EAPW,sBAAsB,sCAAtB,sBAAsB,QAOjC;AAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAExE;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,QAAiB;IAEjB,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAkC,CAAC,CAAC;AAClE,CAAC;AAJD,4DAIC","sourcesContent":["import { TransactionType } from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\n\nexport const CONTROLLER_NAME = 'TransactionPayController';\n\n/**\n * Parent transaction types that represent a Hyperliquid perps deposit and\n * share the same Arbitrum-USDC → Hypercore handling in pay strategies.\n */\nexport const PERPS_DEPOSIT_TYPES: TransactionType[] = [\n TransactionType.perpsDeposit,\n TransactionType.perpsDepositAndOrder,\n];\n\nexport const CHAIN_ID_ARBITRUM = '0xa4b1' as Hex;\nexport const CHAIN_ID_MAINNET = '0x1' as Hex;\nexport const CHAIN_ID_POLYGON = '0x89' as Hex;\nexport const CHAIN_ID_HYPERCORE = '0x539' as Hex;\nexport const CHAIN_ID_MONAD = '0x8f' as Hex;\n\nexport const NATIVE_TOKEN_ADDRESS =\n '0x0000000000000000000000000000000000000000' as Hex;\n\nexport const ARBITRUM_USDC_ADDRESS =\n '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' as Hex;\n\nexport const POLYGON_USDCE_ADDRESS =\n '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' as Hex;\n\nexport const POLYGON_PUSD_ADDRESS =\n '0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB' as Hex;\n\nexport const MUSD_MONAD_ADDRESS =\n '0xaca92e438df0b2401ff60da7e4337b687a2435da' as Hex;\n\nexport const HYPERCORE_USDC_ADDRESS = '0x00000000000000000000000000000000';\n\nexport const HYPERCORE_USDC_DECIMALS = 8;\nexport const USDC_DECIMALS = 6;\n\nexport const SLIP44_COIN_TYPE_BY_CHAIN: Record<Hex, number> = {\n [CHAIN_ID_POLYGON]: 966, // POL\n};\n\nexport const STABLECOINS: Record<Hex, Hex[]> = {\n // Mainnet\n '0x1': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC\n '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT\n ],\n [CHAIN_ID_ARBITRUM]: [ARBITRUM_USDC_ADDRESS.toLowerCase() as Hex],\n // Linea\n '0xe708': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0x176211869ca2b568f2a7d4ee941e073a821ee1ff', // USDC\n '0xa219439258ca9da29e9cc4ce5596924745e12b93', // USDT\n ],\n [CHAIN_ID_POLYGON]: [\n POLYGON_USDCE_ADDRESS.toLowerCase() as Hex,\n POLYGON_PUSD_ADDRESS.toLowerCase() as Hex,\n ],\n [CHAIN_ID_HYPERCORE]: [HYPERCORE_USDC_ADDRESS], // USDC\n};\n\nexport enum PaymentOverride {\n MoneyAccount = 'moneyAccount',\n Perps = 'perps',\n Predict = 'predict',\n}\n\nexport enum TransactionPayStrategy {\n Across = 'across',\n Bridge = 'bridge',\n Fiat = 'fiat',\n Relay = 'relay',\n Server = 'server',\n Test = 'test',\n}\n\nconst VALID_STRATEGIES = new Set(Object.values(TransactionPayStrategy));\n\n/**\n * Checks if a value is a valid transaction pay strategy.\n *\n * @param strategy - Candidate strategy value.\n * @returns True if the value is a valid strategy.\n */\nexport function isTransactionPayStrategy(\n strategy: unknown,\n): strategy is TransactionPayStrategy {\n return VALID_STRATEGIES.has(strategy as TransactionPayStrategy);\n}\n"]}
@@ -10,10 +10,12 @@ export declare const CHAIN_ID_ARBITRUM: `0x${string}`;
10
10
  export declare const CHAIN_ID_MAINNET: `0x${string}`;
11
11
  export declare const CHAIN_ID_POLYGON: `0x${string}`;
12
12
  export declare const CHAIN_ID_HYPERCORE: `0x${string}`;
13
+ export declare const CHAIN_ID_MONAD: `0x${string}`;
13
14
  export declare const NATIVE_TOKEN_ADDRESS: `0x${string}`;
14
15
  export declare const ARBITRUM_USDC_ADDRESS: `0x${string}`;
15
16
  export declare const POLYGON_USDCE_ADDRESS: `0x${string}`;
16
17
  export declare const POLYGON_PUSD_ADDRESS: `0x${string}`;
18
+ export declare const MUSD_MONAD_ADDRESS: `0x${string}`;
17
19
  export declare const HYPERCORE_USDC_ADDRESS = "0x00000000000000000000000000000000";
18
20
  export declare const HYPERCORE_USDC_DECIMALS = 8;
19
21
  export declare const USDC_DECIMALS = 6;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAGhD,CAAC;AAEF,eAAO,MAAM,iBAAiB,eAAkB,CAAC;AACjD,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,gBAAgB,eAAgB,CAAC;AAC9C,eAAO,MAAM,kBAAkB,eAAiB,CAAC;AAEjD,eAAO,MAAM,oBAAoB,eACoB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,oBAAoB,eACoB,CAAC;AAEtD,eAAO,MAAM,sBAAsB,uCAAuC,CAAC;AAE3E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAEzD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAmB1C,CAAC;AAEF,oBAAY,eAAe;IACzB,YAAY,iBAAiB;IAC7B,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,oBAAY,sBAAsB;IAChC,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAID;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,GAChB,QAAQ,IAAI,sBAAsB,CAEpC"}
1
+ {"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAGhD,CAAC;AAEF,eAAO,MAAM,iBAAiB,eAAkB,CAAC;AACjD,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,gBAAgB,eAAgB,CAAC;AAC9C,eAAO,MAAM,kBAAkB,eAAiB,CAAC;AACjD,eAAO,MAAM,cAAc,eAAgB,CAAC;AAE5C,eAAO,MAAM,oBAAoB,eACoB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,oBAAoB,eACoB,CAAC;AAEtD,eAAO,MAAM,kBAAkB,eACsB,CAAC;AAEtD,eAAO,MAAM,sBAAsB,uCAAuC,CAAC;AAE3E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAEzD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAmB1C,CAAC;AAEF,oBAAY,eAAe;IACzB,YAAY,iBAAiB;IAC7B,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,oBAAY,sBAAsB;IAChC,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAID;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,GAChB,QAAQ,IAAI,sBAAsB,CAEpC"}
@@ -10,10 +10,12 @@ export declare const CHAIN_ID_ARBITRUM: `0x${string}`;
10
10
  export declare const CHAIN_ID_MAINNET: `0x${string}`;
11
11
  export declare const CHAIN_ID_POLYGON: `0x${string}`;
12
12
  export declare const CHAIN_ID_HYPERCORE: `0x${string}`;
13
+ export declare const CHAIN_ID_MONAD: `0x${string}`;
13
14
  export declare const NATIVE_TOKEN_ADDRESS: `0x${string}`;
14
15
  export declare const ARBITRUM_USDC_ADDRESS: `0x${string}`;
15
16
  export declare const POLYGON_USDCE_ADDRESS: `0x${string}`;
16
17
  export declare const POLYGON_PUSD_ADDRESS: `0x${string}`;
18
+ export declare const MUSD_MONAD_ADDRESS: `0x${string}`;
17
19
  export declare const HYPERCORE_USDC_ADDRESS = "0x00000000000000000000000000000000";
18
20
  export declare const HYPERCORE_USDC_DECIMALS = 8;
19
21
  export declare const USDC_DECIMALS = 6;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAGhD,CAAC;AAEF,eAAO,MAAM,iBAAiB,eAAkB,CAAC;AACjD,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,gBAAgB,eAAgB,CAAC;AAC9C,eAAO,MAAM,kBAAkB,eAAiB,CAAC;AAEjD,eAAO,MAAM,oBAAoB,eACoB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,oBAAoB,eACoB,CAAC;AAEtD,eAAO,MAAM,sBAAsB,uCAAuC,CAAC;AAE3E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAEzD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAmB1C,CAAC;AAEF,oBAAY,eAAe;IACzB,YAAY,iBAAiB;IAC7B,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,oBAAY,sBAAsB;IAChC,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAID;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,GAChB,QAAQ,IAAI,sBAAsB,CAEpC"}
1
+ {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAGhD,CAAC;AAEF,eAAO,MAAM,iBAAiB,eAAkB,CAAC;AACjD,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,gBAAgB,eAAgB,CAAC;AAC9C,eAAO,MAAM,kBAAkB,eAAiB,CAAC;AACjD,eAAO,MAAM,cAAc,eAAgB,CAAC;AAE5C,eAAO,MAAM,oBAAoB,eACoB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,oBAAoB,eACoB,CAAC;AAEtD,eAAO,MAAM,kBAAkB,eACsB,CAAC;AAEtD,eAAO,MAAM,sBAAsB,uCAAuC,CAAC;AAE3E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAEzD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAmB1C,CAAC;AAEF,oBAAY,eAAe;IACzB,YAAY,iBAAiB;IAC7B,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,oBAAY,sBAAsB;IAChC,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAID;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,GAChB,QAAQ,IAAI,sBAAsB,CAEpC"}
@@ -12,10 +12,12 @@ export const CHAIN_ID_ARBITRUM = '0xa4b1';
12
12
  export const CHAIN_ID_MAINNET = '0x1';
13
13
  export const CHAIN_ID_POLYGON = '0x89';
14
14
  export const CHAIN_ID_HYPERCORE = '0x539';
15
+ export const CHAIN_ID_MONAD = '0x8f';
15
16
  export const NATIVE_TOKEN_ADDRESS = '0x0000000000000000000000000000000000000000';
16
17
  export const ARBITRUM_USDC_ADDRESS = '0xaf88d065e77c8cC2239327C5EDb3A432268e5831';
17
18
  export const POLYGON_USDCE_ADDRESS = '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174';
18
19
  export const POLYGON_PUSD_ADDRESS = '0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB';
20
+ export const MUSD_MONAD_ADDRESS = '0xaca92e438df0b2401ff60da7e4337b687a2435da';
19
21
  export const HYPERCORE_USDC_ADDRESS = '0x00000000000000000000000000000000';
20
22
  export const HYPERCORE_USDC_DECIMALS = 8;
21
23
  export const USDC_DECIMALS = 6;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AAGnE,MAAM,CAAC,MAAM,eAAe,GAAG,0BAA0B,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,eAAe,CAAC,YAAY;IAC5B,eAAe,CAAC,oBAAoB;CACrC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAe,CAAC;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAY,CAAC;AAC7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAa,CAAC;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAC/B,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAChC,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAChC,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,oBAAoB,GAC/B,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,oCAAoC,CAAC;AAE3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B,MAAM,CAAC,MAAM,yBAAyB,GAAwB;IAC5D,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,MAAM;CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAuB;IAC7C,UAAU;IACV,KAAK,EAAE;QACL,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,iBAAiB,CAAC,EAAE,CAAC,qBAAqB,CAAC,WAAW,EAAS,CAAC;IACjE,QAAQ;IACR,QAAQ,EAAE;QACR,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,gBAAgB,CAAC,EAAE;QAClB,qBAAqB,CAAC,WAAW,EAAS;QAC1C,oBAAoB,CAAC,WAAW,EAAS;KAC1C;IACD,CAAC,kBAAkB,CAAC,EAAE,CAAC,sBAAsB,CAAC,EAAE,OAAO;CACxD,CAAC;AAEF,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,gDAA6B,CAAA;IAC7B,kCAAe,CAAA;IACf,sCAAmB,CAAA;AACrB,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,MAAM,CAAN,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,uCAAa,CAAA;IACb,yCAAe,CAAA;IACf,2CAAiB,CAAA;IACjB,uCAAa,CAAA;AACf,CAAC,EAPW,sBAAsB,KAAtB,sBAAsB,QAOjC;AAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAExE;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAiB;IAEjB,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAkC,CAAC,CAAC;AAClE,CAAC","sourcesContent":["import { TransactionType } from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\n\nexport const CONTROLLER_NAME = 'TransactionPayController';\n\n/**\n * Parent transaction types that represent a Hyperliquid perps deposit and\n * share the same Arbitrum-USDC → Hypercore handling in pay strategies.\n */\nexport const PERPS_DEPOSIT_TYPES: TransactionType[] = [\n TransactionType.perpsDeposit,\n TransactionType.perpsDepositAndOrder,\n];\n\nexport const CHAIN_ID_ARBITRUM = '0xa4b1' as Hex;\nexport const CHAIN_ID_MAINNET = '0x1' as Hex;\nexport const CHAIN_ID_POLYGON = '0x89' as Hex;\nexport const CHAIN_ID_HYPERCORE = '0x539' as Hex;\n\nexport const NATIVE_TOKEN_ADDRESS =\n '0x0000000000000000000000000000000000000000' as Hex;\n\nexport const ARBITRUM_USDC_ADDRESS =\n '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' as Hex;\n\nexport const POLYGON_USDCE_ADDRESS =\n '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' as Hex;\n\nexport const POLYGON_PUSD_ADDRESS =\n '0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB' as Hex;\n\nexport const HYPERCORE_USDC_ADDRESS = '0x00000000000000000000000000000000';\n\nexport const HYPERCORE_USDC_DECIMALS = 8;\nexport const USDC_DECIMALS = 6;\n\nexport const SLIP44_COIN_TYPE_BY_CHAIN: Record<Hex, number> = {\n [CHAIN_ID_POLYGON]: 966, // POL\n};\n\nexport const STABLECOINS: Record<Hex, Hex[]> = {\n // Mainnet\n '0x1': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC\n '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT\n ],\n [CHAIN_ID_ARBITRUM]: [ARBITRUM_USDC_ADDRESS.toLowerCase() as Hex],\n // Linea\n '0xe708': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0x176211869ca2b568f2a7d4ee941e073a821ee1ff', // USDC\n '0xa219439258ca9da29e9cc4ce5596924745e12b93', // USDT\n ],\n [CHAIN_ID_POLYGON]: [\n POLYGON_USDCE_ADDRESS.toLowerCase() as Hex,\n POLYGON_PUSD_ADDRESS.toLowerCase() as Hex,\n ],\n [CHAIN_ID_HYPERCORE]: [HYPERCORE_USDC_ADDRESS], // USDC\n};\n\nexport enum PaymentOverride {\n MoneyAccount = 'moneyAccount',\n Perps = 'perps',\n Predict = 'predict',\n}\n\nexport enum TransactionPayStrategy {\n Across = 'across',\n Bridge = 'bridge',\n Fiat = 'fiat',\n Relay = 'relay',\n Server = 'server',\n Test = 'test',\n}\n\nconst VALID_STRATEGIES = new Set(Object.values(TransactionPayStrategy));\n\n/**\n * Checks if a value is a valid transaction pay strategy.\n *\n * @param strategy - Candidate strategy value.\n * @returns True if the value is a valid strategy.\n */\nexport function isTransactionPayStrategy(\n strategy: unknown,\n): strategy is TransactionPayStrategy {\n return VALID_STRATEGIES.has(strategy as TransactionPayStrategy);\n}\n"]}
1
+ {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AAGnE,MAAM,CAAC,MAAM,eAAe,GAAG,0BAA0B,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,eAAe,CAAC,YAAY;IAC5B,eAAe,CAAC,oBAAoB;CACrC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAe,CAAC;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAY,CAAC;AAC7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAa,CAAC;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAc,CAAC;AACjD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,oBAAoB,GAC/B,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAChC,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAChC,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,oBAAoB,GAC/B,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,kBAAkB,GAC7B,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,oCAAoC,CAAC;AAE3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B,MAAM,CAAC,MAAM,yBAAyB,GAAwB;IAC5D,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,MAAM;CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAuB;IAC7C,UAAU;IACV,KAAK,EAAE;QACL,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,iBAAiB,CAAC,EAAE,CAAC,qBAAqB,CAAC,WAAW,EAAS,CAAC;IACjE,QAAQ;IACR,QAAQ,EAAE;QACR,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,gBAAgB,CAAC,EAAE;QAClB,qBAAqB,CAAC,WAAW,EAAS;QAC1C,oBAAoB,CAAC,WAAW,EAAS;KAC1C;IACD,CAAC,kBAAkB,CAAC,EAAE,CAAC,sBAAsB,CAAC,EAAE,OAAO;CACxD,CAAC;AAEF,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,gDAA6B,CAAA;IAC7B,kCAAe,CAAA;IACf,sCAAmB,CAAA;AACrB,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,MAAM,CAAN,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,uCAAa,CAAA;IACb,yCAAe,CAAA;IACf,2CAAiB,CAAA;IACjB,uCAAa,CAAA;AACf,CAAC,EAPW,sBAAsB,KAAtB,sBAAsB,QAOjC;AAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAExE;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAiB;IAEjB,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAkC,CAAC,CAAC;AAClE,CAAC","sourcesContent":["import { TransactionType } from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\n\nexport const CONTROLLER_NAME = 'TransactionPayController';\n\n/**\n * Parent transaction types that represent a Hyperliquid perps deposit and\n * share the same Arbitrum-USDC → Hypercore handling in pay strategies.\n */\nexport const PERPS_DEPOSIT_TYPES: TransactionType[] = [\n TransactionType.perpsDeposit,\n TransactionType.perpsDepositAndOrder,\n];\n\nexport const CHAIN_ID_ARBITRUM = '0xa4b1' as Hex;\nexport const CHAIN_ID_MAINNET = '0x1' as Hex;\nexport const CHAIN_ID_POLYGON = '0x89' as Hex;\nexport const CHAIN_ID_HYPERCORE = '0x539' as Hex;\nexport const CHAIN_ID_MONAD = '0x8f' as Hex;\n\nexport const NATIVE_TOKEN_ADDRESS =\n '0x0000000000000000000000000000000000000000' as Hex;\n\nexport const ARBITRUM_USDC_ADDRESS =\n '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' as Hex;\n\nexport const POLYGON_USDCE_ADDRESS =\n '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' as Hex;\n\nexport const POLYGON_PUSD_ADDRESS =\n '0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB' as Hex;\n\nexport const MUSD_MONAD_ADDRESS =\n '0xaca92e438df0b2401ff60da7e4337b687a2435da' as Hex;\n\nexport const HYPERCORE_USDC_ADDRESS = '0x00000000000000000000000000000000';\n\nexport const HYPERCORE_USDC_DECIMALS = 8;\nexport const USDC_DECIMALS = 6;\n\nexport const SLIP44_COIN_TYPE_BY_CHAIN: Record<Hex, number> = {\n [CHAIN_ID_POLYGON]: 966, // POL\n};\n\nexport const STABLECOINS: Record<Hex, Hex[]> = {\n // Mainnet\n '0x1': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC\n '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT\n ],\n [CHAIN_ID_ARBITRUM]: [ARBITRUM_USDC_ADDRESS.toLowerCase() as Hex],\n // Linea\n '0xe708': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0x176211869ca2b568f2a7d4ee941e073a821ee1ff', // USDC\n '0xa219439258ca9da29e9cc4ce5596924745e12b93', // USDT\n ],\n [CHAIN_ID_POLYGON]: [\n POLYGON_USDCE_ADDRESS.toLowerCase() as Hex,\n POLYGON_PUSD_ADDRESS.toLowerCase() as Hex,\n ],\n [CHAIN_ID_HYPERCORE]: [HYPERCORE_USDC_ADDRESS], // USDC\n};\n\nexport enum PaymentOverride {\n MoneyAccount = 'moneyAccount',\n Perps = 'perps',\n Predict = 'predict',\n}\n\nexport enum TransactionPayStrategy {\n Across = 'across',\n Bridge = 'bridge',\n Fiat = 'fiat',\n Relay = 'relay',\n Server = 'server',\n Test = 'test',\n}\n\nconst VALID_STRATEGIES = new Set(Object.values(TransactionPayStrategy));\n\n/**\n * Checks if a value is a valid transaction pay strategy.\n *\n * @param strategy - Candidate strategy value.\n * @returns True if the value is a valid strategy.\n */\nexport function isTransactionPayStrategy(\n strategy: unknown,\n): strategy is TransactionPayStrategy {\n return VALID_STRATEGIES.has(strategy as TransactionPayStrategy);\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FIAT_ENABLED_TYPES = exports.FIAT_ASSET_ID_BY_TX_TYPE = exports.ETH_MAINNET_FIAT_ASSET = exports.DEFAULT_FIAT_CURRENCY = void 0;
3
+ exports.MUSD_PROBE_AMOUNT_USD = exports.MUSD_MONAD_FIAT_ASSET = exports.FIAT_ENABLED_TYPES = exports.FIAT_ASSET_ID_BY_TX_TYPE = exports.ETH_MAINNET_FIAT_ASSET = exports.DEFAULT_FIAT_CURRENCY = void 0;
4
4
  const transaction_controller_1 = require("@metamask/transaction-controller");
5
5
  const constants_1 = require("../../constants.cjs");
6
6
  exports.DEFAULT_FIAT_CURRENCY = 'USD';
@@ -26,4 +26,11 @@ exports.FIAT_ENABLED_TYPES = [
26
26
  transaction_controller_1.TransactionType.perpsDeposit,
27
27
  transaction_controller_1.TransactionType.predictDeposit,
28
28
  ];
29
+ /** Fiat asset descriptor for mUSD on Monad. */
30
+ exports.MUSD_MONAD_FIAT_ASSET = {
31
+ address: constants_1.MUSD_MONAD_ADDRESS,
32
+ chainId: constants_1.CHAIN_ID_MONAD,
33
+ };
34
+ /** Fixed USD amount used to probe whether any fiat provider can sell mUSD on Monad. */
35
+ exports.MUSD_PROBE_AMOUNT_USD = 50;
29
36
  //# sourceMappingURL=constants.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":";;;AAAA,6EAAmE;AAGnE,mDAKyB;AAEZ,QAAA,qBAAqB,GAAG,KAAK,CAAC;AAO3C,MAAM,sBAAsB,GAA4B;IACtD,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,4BAAgB;CAC1B,CAAC;AAEF,MAAM,uBAAuB,GAA4B;IACvD,OAAO,EAAE,gCAAoB;IAC7B,OAAO,EAAE,6BAAiB;CAC3B,CAAC;AAEW,QAAA,sBAAsB,GAA4B;IAC7D,OAAO,EAAE,gCAAoB;IAC7B,OAAO,EAAE,4BAAgB;CAC1B,CAAC;AAEW,QAAA,wBAAwB,GAEjC;IACF,CAAC,wCAAe,CAAC,mBAAmB,CAAC,EAAE,8BAAsB;IAC7D,CAAC,wCAAe,CAAC,YAAY,CAAC,EAAE,uBAAuB;IACvD,CAAC,wCAAe,CAAC,cAAc,CAAC,EAAE,sBAAsB;CACzD,CAAC;AAEW,QAAA,kBAAkB,GAAsB;IACnD,wCAAe,CAAC,mBAAmB;IACnC,wCAAe,CAAC,YAAY;IAC5B,wCAAe,CAAC,cAAc;CAC/B,CAAC","sourcesContent":["import { TransactionType } from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\n\nimport {\n CHAIN_ID_ARBITRUM,\n CHAIN_ID_MAINNET,\n CHAIN_ID_POLYGON,\n NATIVE_TOKEN_ADDRESS,\n} from '../../constants';\n\nexport const DEFAULT_FIAT_CURRENCY = 'USD';\n\nexport type TransactionPayFiatAsset = {\n address: Hex;\n chainId: Hex;\n};\n\nconst POLYGON_POL_FIAT_ASSET: TransactionPayFiatAsset = {\n address: '0x0000000000000000000000000000000000001010',\n chainId: CHAIN_ID_POLYGON,\n};\n\nconst ARBITRUM_ETH_FIAT_ASSET: TransactionPayFiatAsset = {\n address: NATIVE_TOKEN_ADDRESS,\n chainId: CHAIN_ID_ARBITRUM,\n};\n\nexport const ETH_MAINNET_FIAT_ASSET: TransactionPayFiatAsset = {\n address: NATIVE_TOKEN_ADDRESS,\n chainId: CHAIN_ID_MAINNET,\n};\n\nexport const FIAT_ASSET_ID_BY_TX_TYPE: Partial<\n Record<TransactionType, TransactionPayFiatAsset>\n> = {\n [TransactionType.moneyAccountDeposit]: ETH_MAINNET_FIAT_ASSET,\n [TransactionType.perpsDeposit]: ARBITRUM_ETH_FIAT_ASSET,\n [TransactionType.predictDeposit]: POLYGON_POL_FIAT_ASSET,\n};\n\nexport const FIAT_ENABLED_TYPES: TransactionType[] = [\n TransactionType.moneyAccountDeposit,\n TransactionType.perpsDeposit,\n TransactionType.predictDeposit,\n];\n"]}
1
+ {"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":";;;AAAA,6EAAmE;AAGnE,mDAOyB;AAEZ,QAAA,qBAAqB,GAAG,KAAK,CAAC;AAO3C,MAAM,sBAAsB,GAA4B;IACtD,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,4BAAgB;CAC1B,CAAC;AAEF,MAAM,uBAAuB,GAA4B;IACvD,OAAO,EAAE,gCAAoB;IAC7B,OAAO,EAAE,6BAAiB;CAC3B,CAAC;AAEW,QAAA,sBAAsB,GAA4B;IAC7D,OAAO,EAAE,gCAAoB;IAC7B,OAAO,EAAE,4BAAgB;CAC1B,CAAC;AAEW,QAAA,wBAAwB,GAEjC;IACF,CAAC,wCAAe,CAAC,mBAAmB,CAAC,EAAE,8BAAsB;IAC7D,CAAC,wCAAe,CAAC,YAAY,CAAC,EAAE,uBAAuB;IACvD,CAAC,wCAAe,CAAC,cAAc,CAAC,EAAE,sBAAsB;CACzD,CAAC;AAEW,QAAA,kBAAkB,GAAsB;IACnD,wCAAe,CAAC,mBAAmB;IACnC,wCAAe,CAAC,YAAY;IAC5B,wCAAe,CAAC,cAAc;CAC/B,CAAC;AAEF,+CAA+C;AAClC,QAAA,qBAAqB,GAA4B;IAC5D,OAAO,EAAE,8BAAkB;IAC3B,OAAO,EAAE,0BAAc;CACxB,CAAC;AAEF,uFAAuF;AAC1E,QAAA,qBAAqB,GAAG,EAAE,CAAC","sourcesContent":["import { TransactionType } from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\n\nimport {\n CHAIN_ID_ARBITRUM,\n CHAIN_ID_MAINNET,\n CHAIN_ID_MONAD,\n CHAIN_ID_POLYGON,\n MUSD_MONAD_ADDRESS,\n NATIVE_TOKEN_ADDRESS,\n} from '../../constants';\n\nexport const DEFAULT_FIAT_CURRENCY = 'USD';\n\nexport type TransactionPayFiatAsset = {\n address: Hex;\n chainId: Hex;\n};\n\nconst POLYGON_POL_FIAT_ASSET: TransactionPayFiatAsset = {\n address: '0x0000000000000000000000000000000000001010',\n chainId: CHAIN_ID_POLYGON,\n};\n\nconst ARBITRUM_ETH_FIAT_ASSET: TransactionPayFiatAsset = {\n address: NATIVE_TOKEN_ADDRESS,\n chainId: CHAIN_ID_ARBITRUM,\n};\n\nexport const ETH_MAINNET_FIAT_ASSET: TransactionPayFiatAsset = {\n address: NATIVE_TOKEN_ADDRESS,\n chainId: CHAIN_ID_MAINNET,\n};\n\nexport const FIAT_ASSET_ID_BY_TX_TYPE: Partial<\n Record<TransactionType, TransactionPayFiatAsset>\n> = {\n [TransactionType.moneyAccountDeposit]: ETH_MAINNET_FIAT_ASSET,\n [TransactionType.perpsDeposit]: ARBITRUM_ETH_FIAT_ASSET,\n [TransactionType.predictDeposit]: POLYGON_POL_FIAT_ASSET,\n};\n\nexport const FIAT_ENABLED_TYPES: TransactionType[] = [\n TransactionType.moneyAccountDeposit,\n TransactionType.perpsDeposit,\n TransactionType.predictDeposit,\n];\n\n/** Fiat asset descriptor for mUSD on Monad. */\nexport const MUSD_MONAD_FIAT_ASSET: TransactionPayFiatAsset = {\n address: MUSD_MONAD_ADDRESS,\n chainId: CHAIN_ID_MONAD,\n};\n\n/** Fixed USD amount used to probe whether any fiat provider can sell mUSD on Monad. */\nexport const MUSD_PROBE_AMOUNT_USD = 50;\n"]}
@@ -8,4 +8,8 @@ export type TransactionPayFiatAsset = {
8
8
  export declare const ETH_MAINNET_FIAT_ASSET: TransactionPayFiatAsset;
9
9
  export declare const FIAT_ASSET_ID_BY_TX_TYPE: Partial<Record<TransactionType, TransactionPayFiatAsset>>;
10
10
  export declare const FIAT_ENABLED_TYPES: TransactionType[];
11
+ /** Fiat asset descriptor for mUSD on Monad. */
12
+ export declare const MUSD_MONAD_FIAT_ASSET: TransactionPayFiatAsset;
13
+ /** Fixed USD amount used to probe whether any fiat provider can sell mUSD on Monad. */
14
+ export declare const MUSD_PROBE_AMOUNT_USD = 50;
11
15
  //# sourceMappingURL=constants.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAS3C,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAYF,eAAO,MAAM,sBAAsB,EAAE,uBAGpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,OAAO,CAC5C,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAKjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAI/C,CAAC"}
1
+ {"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAW3C,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAYF,eAAO,MAAM,sBAAsB,EAAE,uBAGpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,OAAO,CAC5C,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAKjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAI/C,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,qBAAqB,EAAE,uBAGnC,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,qBAAqB,KAAK,CAAC"}
@@ -8,4 +8,8 @@ export type TransactionPayFiatAsset = {
8
8
  export declare const ETH_MAINNET_FIAT_ASSET: TransactionPayFiatAsset;
9
9
  export declare const FIAT_ASSET_ID_BY_TX_TYPE: Partial<Record<TransactionType, TransactionPayFiatAsset>>;
10
10
  export declare const FIAT_ENABLED_TYPES: TransactionType[];
11
+ /** Fiat asset descriptor for mUSD on Monad. */
12
+ export declare const MUSD_MONAD_FIAT_ASSET: TransactionPayFiatAsset;
13
+ /** Fixed USD amount used to probe whether any fiat provider can sell mUSD on Monad. */
14
+ export declare const MUSD_PROBE_AMOUNT_USD = 50;
11
15
  //# sourceMappingURL=constants.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAS3C,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAYF,eAAO,MAAM,sBAAsB,EAAE,uBAGpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,OAAO,CAC5C,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAKjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAI/C,CAAC"}
1
+ {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAW3C,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAYF,eAAO,MAAM,sBAAsB,EAAE,uBAGpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,OAAO,CAC5C,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAKjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAI/C,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,qBAAqB,EAAE,uBAGnC,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,qBAAqB,KAAK,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { TransactionType } from "@metamask/transaction-controller";
2
- import { CHAIN_ID_ARBITRUM, CHAIN_ID_MAINNET, CHAIN_ID_POLYGON, NATIVE_TOKEN_ADDRESS } from "../../constants.mjs";
2
+ import { CHAIN_ID_ARBITRUM, CHAIN_ID_MAINNET, CHAIN_ID_MONAD, CHAIN_ID_POLYGON, MUSD_MONAD_ADDRESS, NATIVE_TOKEN_ADDRESS } from "../../constants.mjs";
3
3
  export const DEFAULT_FIAT_CURRENCY = 'USD';
4
4
  const POLYGON_POL_FIAT_ASSET = {
5
5
  address: '0x0000000000000000000000000000000000001010',
@@ -23,4 +23,11 @@ export const FIAT_ENABLED_TYPES = [
23
23
  TransactionType.perpsDeposit,
24
24
  TransactionType.predictDeposit,
25
25
  ];
26
+ /** Fiat asset descriptor for mUSD on Monad. */
27
+ export const MUSD_MONAD_FIAT_ASSET = {
28
+ address: MUSD_MONAD_ADDRESS,
29
+ chainId: CHAIN_ID_MONAD,
30
+ };
31
+ /** Fixed USD amount used to probe whether any fiat provider can sell mUSD on Monad. */
32
+ export const MUSD_PROBE_AMOUNT_USD = 50;
26
33
  //# sourceMappingURL=constants.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AAGnE,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACrB,4BAAwB;AAEzB,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAO3C,MAAM,sBAAsB,GAA4B;IACtD,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,gBAAgB;CAC1B,CAAC;AAEF,MAAM,uBAAuB,GAA4B;IACvD,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,iBAAiB;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAA4B;IAC7D,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,gBAAgB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAEjC;IACF,CAAC,eAAe,CAAC,mBAAmB,CAAC,EAAE,sBAAsB;IAC7D,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,uBAAuB;IACvD,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,sBAAsB;CACzD,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,eAAe,CAAC,mBAAmB;IACnC,eAAe,CAAC,YAAY;IAC5B,eAAe,CAAC,cAAc;CAC/B,CAAC","sourcesContent":["import { TransactionType } from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\n\nimport {\n CHAIN_ID_ARBITRUM,\n CHAIN_ID_MAINNET,\n CHAIN_ID_POLYGON,\n NATIVE_TOKEN_ADDRESS,\n} from '../../constants';\n\nexport const DEFAULT_FIAT_CURRENCY = 'USD';\n\nexport type TransactionPayFiatAsset = {\n address: Hex;\n chainId: Hex;\n};\n\nconst POLYGON_POL_FIAT_ASSET: TransactionPayFiatAsset = {\n address: '0x0000000000000000000000000000000000001010',\n chainId: CHAIN_ID_POLYGON,\n};\n\nconst ARBITRUM_ETH_FIAT_ASSET: TransactionPayFiatAsset = {\n address: NATIVE_TOKEN_ADDRESS,\n chainId: CHAIN_ID_ARBITRUM,\n};\n\nexport const ETH_MAINNET_FIAT_ASSET: TransactionPayFiatAsset = {\n address: NATIVE_TOKEN_ADDRESS,\n chainId: CHAIN_ID_MAINNET,\n};\n\nexport const FIAT_ASSET_ID_BY_TX_TYPE: Partial<\n Record<TransactionType, TransactionPayFiatAsset>\n> = {\n [TransactionType.moneyAccountDeposit]: ETH_MAINNET_FIAT_ASSET,\n [TransactionType.perpsDeposit]: ARBITRUM_ETH_FIAT_ASSET,\n [TransactionType.predictDeposit]: POLYGON_POL_FIAT_ASSET,\n};\n\nexport const FIAT_ENABLED_TYPES: TransactionType[] = [\n TransactionType.moneyAccountDeposit,\n TransactionType.perpsDeposit,\n TransactionType.predictDeposit,\n];\n"]}
1
+ {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AAGnE,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACrB,4BAAwB;AAEzB,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAO3C,MAAM,sBAAsB,GAA4B;IACtD,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,gBAAgB;CAC1B,CAAC;AAEF,MAAM,uBAAuB,GAA4B;IACvD,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,iBAAiB;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAA4B;IAC7D,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,gBAAgB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAEjC;IACF,CAAC,eAAe,CAAC,mBAAmB,CAAC,EAAE,sBAAsB;IAC7D,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,uBAAuB;IACvD,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,sBAAsB;CACzD,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,eAAe,CAAC,mBAAmB;IACnC,eAAe,CAAC,YAAY;IAC5B,eAAe,CAAC,cAAc;CAC/B,CAAC;AAEF,+CAA+C;AAC/C,MAAM,CAAC,MAAM,qBAAqB,GAA4B;IAC5D,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,cAAc;CACxB,CAAC;AAEF,uFAAuF;AACvF,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC","sourcesContent":["import { TransactionType } from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\n\nimport {\n CHAIN_ID_ARBITRUM,\n CHAIN_ID_MAINNET,\n CHAIN_ID_MONAD,\n CHAIN_ID_POLYGON,\n MUSD_MONAD_ADDRESS,\n NATIVE_TOKEN_ADDRESS,\n} from '../../constants';\n\nexport const DEFAULT_FIAT_CURRENCY = 'USD';\n\nexport type TransactionPayFiatAsset = {\n address: Hex;\n chainId: Hex;\n};\n\nconst POLYGON_POL_FIAT_ASSET: TransactionPayFiatAsset = {\n address: '0x0000000000000000000000000000000000001010',\n chainId: CHAIN_ID_POLYGON,\n};\n\nconst ARBITRUM_ETH_FIAT_ASSET: TransactionPayFiatAsset = {\n address: NATIVE_TOKEN_ADDRESS,\n chainId: CHAIN_ID_ARBITRUM,\n};\n\nexport const ETH_MAINNET_FIAT_ASSET: TransactionPayFiatAsset = {\n address: NATIVE_TOKEN_ADDRESS,\n chainId: CHAIN_ID_MAINNET,\n};\n\nexport const FIAT_ASSET_ID_BY_TX_TYPE: Partial<\n Record<TransactionType, TransactionPayFiatAsset>\n> = {\n [TransactionType.moneyAccountDeposit]: ETH_MAINNET_FIAT_ASSET,\n [TransactionType.perpsDeposit]: ARBITRUM_ETH_FIAT_ASSET,\n [TransactionType.predictDeposit]: POLYGON_POL_FIAT_ASSET,\n};\n\nexport const FIAT_ENABLED_TYPES: TransactionType[] = [\n TransactionType.moneyAccountDeposit,\n TransactionType.perpsDeposit,\n TransactionType.predictDeposit,\n];\n\n/** Fiat asset descriptor for mUSD on Monad. */\nexport const MUSD_MONAD_FIAT_ASSET: TransactionPayFiatAsset = {\n address: MUSD_MONAD_ADDRESS,\n chainId: CHAIN_ID_MONAD,\n};\n\n/** Fixed USD amount used to probe whether any fiat provider can sell mUSD on Monad. */\nexport const MUSD_PROBE_AMOUNT_USD = 50;\n"]}