@metamask/transaction-controller 60.4.0 → 60.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 (40) hide show
  1. package/CHANGELOG.md +28 -1
  2. package/dist/TransactionController.cjs +13 -66
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts +15 -46
  5. package/dist/TransactionController.d.cts.map +1 -1
  6. package/dist/TransactionController.d.mts +15 -46
  7. package/dist/TransactionController.d.mts.map +1 -1
  8. package/dist/TransactionController.mjs +15 -68
  9. package/dist/TransactionController.mjs.map +1 -1
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.d.cts +2 -2
  12. package/dist/index.d.cts.map +1 -1
  13. package/dist/index.d.mts +2 -2
  14. package/dist/index.d.mts.map +1 -1
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/types.cjs +20 -0
  17. package/dist/types.cjs.map +1 -1
  18. package/dist/types.d.cts +65 -1
  19. package/dist/types.d.cts.map +1 -1
  20. package/dist/types.d.mts +65 -1
  21. package/dist/types.d.mts.map +1 -1
  22. package/dist/types.mjs +20 -0
  23. package/dist/types.mjs.map +1 -1
  24. package/dist/utils/first-time-interaction.cjs +77 -0
  25. package/dist/utils/first-time-interaction.cjs.map +1 -0
  26. package/dist/utils/first-time-interaction.d.cts +30 -0
  27. package/dist/utils/first-time-interaction.d.cts.map +1 -0
  28. package/dist/utils/first-time-interaction.d.mts +30 -0
  29. package/dist/utils/first-time-interaction.d.mts.map +1 -0
  30. package/dist/utils/first-time-interaction.mjs +73 -0
  31. package/dist/utils/first-time-interaction.mjs.map +1 -0
  32. package/dist/utils/transaction-type.cjs +22 -5
  33. package/dist/utils/transaction-type.cjs.map +1 -1
  34. package/dist/utils/transaction-type.d.cts +14 -0
  35. package/dist/utils/transaction-type.d.cts.map +1 -1
  36. package/dist/utils/transaction-type.d.mts +14 -0
  37. package/dist/utils/transaction-type.d.mts.map +1 -1
  38. package/dist/utils/transaction-type.mjs +20 -4
  39. package/dist/utils/transaction-type.mjs.map +1 -1
  40. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -7,6 +7,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [60.6.0]
11
+
12
+ ### Added
13
+
14
+ - Expose `addTransaction` and `addTransactionBatch` methods through the messenger ([#6749](https://github.com/MetaMask/core/pull/6749))
15
+ - Add types:
16
+ - `AddTransactionOptions`
17
+ - `TransactionControllerAddTransactionAction`
18
+ - `TransactionControllerAddTransactionBatchAction`
19
+ - Add new `shieldSubscriptionApprove` transaction type for shield subscription confirmation ([#6769](https://github.com/MetaMask/core/pull/6769))
20
+
21
+ ## [60.5.0]
22
+
23
+ ### Added
24
+
25
+ - Add `predictBuy`, `predictClaim`, `predictDeposit` and `predictSell` to `TransactionType` ([#6690](https://github.com/MetaMask/core/pull/6690))
26
+
27
+ ### Changed
28
+
29
+ - Bump `@metamask/utils` from `^11.8.0` to `^11.8.1` ([#6708](https://github.com/MetaMask/core/pull/6708))
30
+
31
+ ### Fixed
32
+
33
+ - Update `isFirstTimeInteraction` to be determined using recipient if token transfer. ([#6686](https://github.com/MetaMask/core/pull/6686))
34
+
10
35
  ## [60.4.0]
11
36
 
12
37
  ### Added
@@ -1818,7 +1843,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1818
1843
 
1819
1844
  All changes listed after this point were applied to this package following the monorepo conversion.
1820
1845
 
1821
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.4.0...HEAD
1846
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.6.0...HEAD
1847
+ [60.6.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.5.0...@metamask/transaction-controller@60.6.0
1848
+ [60.5.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.4.0...@metamask/transaction-controller@60.5.0
1822
1849
  [60.4.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.3.0...@metamask/transaction-controller@60.4.0
1823
1850
  [60.3.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.2.0...@metamask/transaction-controller@60.3.0
1824
1851
  [60.2.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.1.0...@metamask/transaction-controller@60.2.0
@@ -13,7 +13,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
13
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
- var _TransactionController_instances, _TransactionController_afterAdd, _TransactionController_afterSign, _TransactionController_afterSimulate, _TransactionController_approvingTransactionIds, _TransactionController_beforeCheckPendingTransaction, _TransactionController_beforePublish, _TransactionController_beforeSign, _TransactionController_gasFeeFlows, _TransactionController_getAdditionalSignArguments, _TransactionController_getCurrentAccountEIP1559Compatibility, _TransactionController_getCurrentNetworkEIP1559Compatibility, _TransactionController_getExternalPendingTransactions, _TransactionController_getGasFeeEstimates, _TransactionController_getNetworkState, _TransactionController_getPermittedAccounts, _TransactionController_getSavedGasFees, _TransactionController_getSimulationConfig, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_internalEvents, _TransactionController_isAutomaticGasFeeUpdateEnabled, _TransactionController_isEIP7702GasFeeTokensEnabled, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isHistoryDisabled, _TransactionController_isSendFlowHistoryDisabled, _TransactionController_isSimulationEnabled, _TransactionController_isSwapsDisabled, _TransactionController_layer1GasFeeFlows, _TransactionController_methodDataHelper, _TransactionController_multichainTrackingHelper, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_publish, _TransactionController_publishBatchHook, _TransactionController_securityProviderRequest, _TransactionController_sign, _TransactionController_signAbortCallbacks, _TransactionController_skipSimulationTransactionIds, _TransactionController_testGasFeeFlows, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_retryTransaction, _TransactionController_signExternalTransaction, _TransactionController_addMetadata, _TransactionController_updateGasProperties, _TransactionController_onBootCleanup, _TransactionController_failIncompleteTransactions, _TransactionController_processApproval, _TransactionController_approveTransaction, _TransactionController_publishTransaction, _TransactionController_rejectTransaction, _TransactionController_trimTransactionsForState, _TransactionController_isFinalState, _TransactionController_isLocalFinalState, _TransactionController_requestApproval, _TransactionController_getTransaction, _TransactionController_getTransactionOrThrow, _TransactionController_getApprovalId, _TransactionController_isTransactionCompleted, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_onIncomingTransactions, _TransactionController_generateDappSuggestedGasFees, _TransactionController_addExternalTransaction, _TransactionController_markNonceDuplicatesDropped, _TransactionController_setTransactionStatusDropped, _TransactionController_getTransactionWithActionId, _TransactionController_waitForTransactionFinished, _TransactionController_updateTransactionMetaRSV, _TransactionController_getEIP1559Compatibility, _TransactionController_signTransaction, _TransactionController_onTransactionStatusChange, _TransactionController_getNonceTrackerTransactions, _TransactionController_onConfirmedTransaction, _TransactionController_updatePostBalance, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_publishTransactionForRetry, _TransactionController_isTransactionAlreadyConfirmedError, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_onGasFeePollerTransactionBatchUpdate, _TransactionController_updateTransactionBatch, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_registerActionHandlers, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow, _TransactionController_failTransaction, _TransactionController_runAfterSimulateHook;
16
+ var _TransactionController_instances, _TransactionController_afterAdd, _TransactionController_afterSign, _TransactionController_afterSimulate, _TransactionController_approvingTransactionIds, _TransactionController_beforeCheckPendingTransaction, _TransactionController_beforePublish, _TransactionController_beforeSign, _TransactionController_gasFeeFlows, _TransactionController_getAdditionalSignArguments, _TransactionController_getCurrentAccountEIP1559Compatibility, _TransactionController_getCurrentNetworkEIP1559Compatibility, _TransactionController_getExternalPendingTransactions, _TransactionController_getGasFeeEstimates, _TransactionController_getNetworkState, _TransactionController_getPermittedAccounts, _TransactionController_getSavedGasFees, _TransactionController_getSimulationConfig, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_internalEvents, _TransactionController_isAutomaticGasFeeUpdateEnabled, _TransactionController_isEIP7702GasFeeTokensEnabled, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isHistoryDisabled, _TransactionController_isSendFlowHistoryDisabled, _TransactionController_isSimulationEnabled, _TransactionController_isSwapsDisabled, _TransactionController_layer1GasFeeFlows, _TransactionController_methodDataHelper, _TransactionController_multichainTrackingHelper, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_publish, _TransactionController_publishBatchHook, _TransactionController_securityProviderRequest, _TransactionController_sign, _TransactionController_signAbortCallbacks, _TransactionController_skipSimulationTransactionIds, _TransactionController_testGasFeeFlows, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_retryTransaction, _TransactionController_signExternalTransaction, _TransactionController_addMetadata, _TransactionController_updateGasProperties, _TransactionController_onBootCleanup, _TransactionController_failIncompleteTransactions, _TransactionController_processApproval, _TransactionController_approveTransaction, _TransactionController_publishTransaction, _TransactionController_rejectTransaction, _TransactionController_trimTransactionsForState, _TransactionController_isFinalState, _TransactionController_isLocalFinalState, _TransactionController_requestApproval, _TransactionController_getTransaction, _TransactionController_getTransactionOrThrow, _TransactionController_getApprovalId, _TransactionController_isTransactionCompleted, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_onIncomingTransactions, _TransactionController_generateDappSuggestedGasFees, _TransactionController_addExternalTransaction, _TransactionController_markNonceDuplicatesDropped, _TransactionController_setTransactionStatusDropped, _TransactionController_getTransactionWithActionId, _TransactionController_waitForTransactionFinished, _TransactionController_updateTransactionMetaRSV, _TransactionController_getEIP1559Compatibility, _TransactionController_signTransaction, _TransactionController_onTransactionStatusChange, _TransactionController_getNonceTrackerTransactions, _TransactionController_onConfirmedTransaction, _TransactionController_updatePostBalance, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_publishTransactionForRetry, _TransactionController_isTransactionAlreadyConfirmedError, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_onGasFeePollerTransactionBatchUpdate, _TransactionController_updateTransactionBatch, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_registerActionHandlers, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow, _TransactionController_failTransaction, _TransactionController_runAfterSimulateHook;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.TransactionController = exports.ApprovalState = exports.SPEED_UP_RATE = exports.CANCEL_RATE = void 0;
19
19
  const base_controller_1 = require("@metamask/base-controller");
@@ -28,7 +28,6 @@ const utils_1 = require("@metamask/utils");
28
28
  const events_1 = require("events");
29
29
  const lodash_1 = require("lodash");
30
30
  const uuid_1 = require("uuid");
31
- const accounts_api_1 = require("./api/accounts-api.cjs");
32
31
  const DefaultGasFeeFlow_1 = require("./gas-flows/DefaultGasFeeFlow.cjs");
33
32
  const LineaGasFeeFlow_1 = require("./gas-flows/LineaGasFeeFlow.cjs");
34
33
  const OptimismLayer1GasFeeFlow_1 = require("./gas-flows/OptimismLayer1GasFeeFlow.cjs");
@@ -49,6 +48,7 @@ const balance_changes_1 = require("./utils/balance-changes.cjs");
49
48
  const batch_1 = require("./utils/batch.cjs");
50
49
  const eip7702_1 = require("./utils/eip7702.cjs");
51
50
  const external_transactions_1 = require("./utils/external-transactions.cjs");
51
+ const first_time_interaction_1 = require("./utils/first-time-interaction.cjs");
52
52
  const gas_1 = require("./utils/gas.cjs");
53
53
  const gas_fee_tokens_1 = require("./utils/gas-fee-tokens.cjs");
54
54
  const gas_fees_1 = require("./utils/gas-fees.cjs");
@@ -368,30 +368,11 @@ class TransactionController extends base_controller_1.BaseController {
368
368
  }
369
369
  /**
370
370
  * Add a new unapproved transaction to state. Parameters will be validated, a
371
- * unique transaction id will be generated, and gas and gasPrice will be calculated
372
- * if not provided. If A `<tx.id>:unapproved` hub event will be emitted once added.
371
+ * unique transaction ID will be generated, and `gas` and `gasPrice` will be calculated
372
+ * if not provided. A `<tx.id>:unapproved` hub event will be emitted once added.
373
373
  *
374
374
  * @param txParams - Standard parameters for an Ethereum transaction.
375
375
  * @param options - Additional options to control how the transaction is added.
376
- * @param options.actionId - Unique ID to prevent duplicate requests.
377
- * @param options.assetsFiatValues - The fiat values of the assets being sent and received.
378
- * @param options.batchId - A custom ID for the batch this transaction belongs to.
379
- * @param options.deviceConfirmedOn - An enum to indicate what device confirmed the transaction.
380
- * @param options.disableGasBuffer - Whether to disable the gas estimation buffer.
381
- * @param options.isGasFeeIncluded - Whether MetaMask will be compensated for the gas fee by the transaction.
382
- * @param options.method - RPC method that requested the transaction.
383
- * @param options.nestedTransactions - Params for any nested transactions encoded in the data.
384
- * @param options.origin - The origin of the transaction request, such as a dApp hostname.
385
- * @param options.publishHook - Custom logic to publish the transaction.
386
- * @param options.requireApproval - Whether the transaction requires approval by the user, defaults to true unless explicitly disabled.
387
- * @param options.securityAlertResponse - Response from security validator.
388
- * @param options.sendFlowHistory - The sendFlowHistory entries to add.
389
- * @param options.type - Type of transaction to add, such as 'cancel' or 'swap'.
390
- * @param options.swaps - Options for swaps transactions.
391
- * @param options.swaps.hasApproveTx - Whether the transaction has an approval transaction.
392
- * @param options.swaps.meta - Metadata for swap transaction.
393
- * @param options.networkClientId - The id of the network client for this transaction.
394
- * @param options.traceContext - The parent context for any new traces.
395
376
  * @returns Object containing a promise resolving to the transaction hash if approved.
396
377
  */
397
378
  async addTransaction(txParams, options) {
@@ -500,8 +481,14 @@ class TransactionController extends base_controller_1.BaseController {
500
481
  (0, logger_1.projectLogger)('Error while updating simulation data', error);
501
482
  throw error;
502
483
  });
503
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateFirstTimeInteraction).call(this, addedTransactionMeta, {
484
+ (0, first_time_interaction_1.updateFirstTimeInteraction)({
485
+ existingTransactions: this.state.transactions,
486
+ getTransaction: (transactionId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId),
487
+ isFirstTimeInteractionEnabled: __classPrivateFieldGet(this, _TransactionController_isFirstTimeInteractionEnabled, "f"),
488
+ trace: __classPrivateFieldGet(this, _TransactionController_trace, "f"),
504
489
  traceContext,
490
+ transactionMeta: addedTransactionMeta,
491
+ updateTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).bind(this),
505
492
  }).catch((error) => {
506
493
  (0, logger_1.projectLogger)('Error while updating first interaction properties', error);
507
494
  });
@@ -2082,48 +2069,6 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2082
2069
  });
2083
2070
  }
2084
2071
  return transactionMeta;
2085
- }, _TransactionController_updateFirstTimeInteraction = async function _TransactionController_updateFirstTimeInteraction(transactionMeta, { traceContext, } = {}) {
2086
- if (!__classPrivateFieldGet(this, _TransactionController_isFirstTimeInteractionEnabled, "f").call(this)) {
2087
- return;
2088
- }
2089
- const { chainId, id: transactionId, txParams: { to, from }, } = transactionMeta;
2090
- const request = {
2091
- chainId: (0, utils_1.hexToNumber)(chainId),
2092
- to: to,
2093
- from,
2094
- };
2095
- (0, validation_1.validateParamTo)(to);
2096
- const existingTransaction = this.state.transactions.find((tx) => tx.chainId === chainId &&
2097
- tx.txParams.from === from &&
2098
- tx.txParams.to === to &&
2099
- tx.id !== transactionId);
2100
- // Check if there is an existing transaction with the same from, to, and chainId
2101
- // else we continue to check the account address relationship from API
2102
- if (existingTransaction) {
2103
- return;
2104
- }
2105
- try {
2106
- const { count } = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Account Address Relationship', parentContext: traceContext }, () => (0, accounts_api_1.getAccountAddressRelationship)(request));
2107
- const isFirstTimeInteraction = count === undefined ? undefined : count === 0;
2108
- const finalTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
2109
- /* istanbul ignore if */
2110
- if (!finalTransactionMeta) {
2111
- (0, logger_1.projectLogger)('Cannot update first time interaction as transaction not found', transactionId);
2112
- return;
2113
- }
2114
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2115
- transactionId,
2116
- note: 'TransactionController#updateFirstInteraction - Update first time interaction',
2117
- }, (txMeta) => {
2118
- txMeta.isFirstTimeInteraction = isFirstTimeInteraction;
2119
- });
2120
- (0, logger_1.projectLogger)('Updated first time interaction', transactionId, {
2121
- isFirstTimeInteraction,
2122
- });
2123
- }
2124
- catch (error) {
2125
- (0, logger_1.projectLogger)('Error fetching account address relationship, skipping first time interaction update', error);
2126
- }
2127
2072
  }, _TransactionController_updateSimulationData = async function _TransactionController_updateSimulationData(transactionMeta, { blockTime, traceContext, } = {}) {
2128
2073
  const { chainId, id: transactionId, nestedTransactions, networkClientId, simulationData: prevSimulationData, txParams, } = transactionMeta;
2129
2074
  let simulationData = {
@@ -2258,6 +2203,8 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2258
2203
  txMeta: transactionMeta,
2259
2204
  });
2260
2205
  }, _TransactionController_registerActionHandlers = function _TransactionController_registerActionHandlers() {
2206
+ this.messagingSystem.registerActionHandler(`${controllerName}:addTransaction`, this.addTransaction.bind(this));
2207
+ this.messagingSystem.registerActionHandler(`${controllerName}:addTransactionBatch`, this.addTransactionBatch.bind(this));
2261
2208
  this.messagingSystem.registerActionHandler(`${controllerName}:confirmExternalTransaction`, this.confirmExternalTransaction.bind(this));
2262
2209
  this.messagingSystem.registerActionHandler(`${controllerName}:estimateGas`, this.estimateGas.bind(this));
2263
2210
  this.messagingSystem.registerActionHandler(`${controllerName}:getNonceLock`, this.getNonceLock.bind(this));