@metamask-previews/transaction-controller 35.1.1-preview-e8f9512d → 35.1.1-preview-4f1ca72a

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 (104) hide show
  1. package/dist/TransactionController.js +11 -12
  2. package/dist/TransactionController.mjs +10 -11
  3. package/dist/{chunk-5HYWLTVQ.js → chunk-2EU6346V.js} +3 -3
  4. package/dist/{chunk-LFFYCDHB.mjs → chunk-6SJYXSF3.mjs} +1 -1
  5. package/dist/{chunk-LFFYCDHB.mjs.map → chunk-6SJYXSF3.mjs.map} +1 -1
  6. package/dist/{chunk-YWLMT7XH.js → chunk-76FONEDA.js} +4 -4
  7. package/dist/{chunk-UHAFIPSL.js → chunk-ARZHJFVG.js} +6 -6
  8. package/dist/{chunk-PSZ34BI5.js → chunk-AYTU4HU5.js} +1 -1
  9. package/dist/{chunk-PSZ34BI5.js.map → chunk-AYTU4HU5.js.map} +1 -1
  10. package/dist/{chunk-BZV72SCF.js → chunk-C3WC4OJ3.js} +5 -5
  11. package/dist/{chunk-JIFPK37W.mjs → chunk-GNAL5HC2.mjs} +2 -2
  12. package/dist/{chunk-4OYPDGHO.js → chunk-GPS6RX64.js} +6 -6
  13. package/dist/{chunk-AWIJZAW3.mjs → chunk-H2KZOK3J.mjs} +3 -3
  14. package/dist/{chunk-NNHSNPT2.mjs → chunk-JXXTNVU4.mjs} +2 -2
  15. package/dist/{chunk-X4XSEYPL.mjs → chunk-LTPS73D7.mjs} +3 -3
  16. package/dist/{chunk-KTGMNUTQ.js → chunk-OZ6UB42C.js} +23 -2
  17. package/dist/chunk-OZ6UB42C.js.map +1 -0
  18. package/dist/{chunk-UHSRHP55.mjs → chunk-Q56I5ONX.mjs} +22 -1
  19. package/dist/chunk-Q56I5ONX.mjs.map +1 -0
  20. package/dist/{chunk-QKV7E5BO.js → chunk-QH2H4W3N.js} +5 -5
  21. package/dist/{chunk-EHWAY6XU.js → chunk-QTKXIDGE.js} +9 -9
  22. package/dist/{chunk-VKWOHNDO.js → chunk-S3RZBMF7.js} +284 -214
  23. package/dist/chunk-S3RZBMF7.js.map +1 -0
  24. package/dist/{chunk-VGFPVAKX.mjs → chunk-SFFTNB2X.mjs} +2 -2
  25. package/dist/{chunk-XTMJ25EF.mjs → chunk-T3GOPPVF.mjs} +265 -195
  26. package/dist/chunk-T3GOPPVF.mjs.map +1 -0
  27. package/dist/{chunk-KYRW4BLA.mjs → chunk-UHG2LLVV.mjs} +3 -3
  28. package/dist/{chunk-SFFOC25Q.mjs → chunk-VXNPVIYL.mjs} +3 -3
  29. package/dist/errors.js +1 -1
  30. package/dist/errors.mjs +1 -1
  31. package/dist/gas-flows/DefaultGasFeeFlow.js +7 -7
  32. package/dist/gas-flows/DefaultGasFeeFlow.mjs +6 -6
  33. package/dist/gas-flows/LineaGasFeeFlow.js +8 -8
  34. package/dist/gas-flows/LineaGasFeeFlow.mjs +7 -7
  35. package/dist/gas-flows/TestGasFeeFlow.js +1 -1
  36. package/dist/gas-flows/TestGasFeeFlow.mjs +1 -1
  37. package/dist/helpers/EtherscanRemoteTransactionSource.js +1 -1
  38. package/dist/helpers/EtherscanRemoteTransactionSource.mjs +1 -1
  39. package/dist/helpers/GasFeePoller.js +4 -4
  40. package/dist/helpers/GasFeePoller.mjs +3 -3
  41. package/dist/helpers/MultichainTrackingHelper.js +1 -1
  42. package/dist/helpers/MultichainTrackingHelper.mjs +1 -1
  43. package/dist/helpers/PendingTransactionTracker.js +1 -1
  44. package/dist/helpers/PendingTransactionTracker.mjs +1 -1
  45. package/dist/index.js +11 -12
  46. package/dist/index.mjs +10 -11
  47. package/dist/tsconfig.build.tsbuildinfo +1 -1
  48. package/dist/types/TransactionController.d.ts +10 -8
  49. package/dist/types/TransactionController.d.ts.map +1 -1
  50. package/dist/types/index.d.ts +2 -2
  51. package/dist/types/index.d.ts.map +1 -1
  52. package/dist/types/types.d.ts +0 -40
  53. package/dist/types/types.d.ts.map +1 -1
  54. package/dist/types/utils/utils.d.ts +15 -1
  55. package/dist/types/utils/utils.d.ts.map +1 -1
  56. package/dist/types.js +2 -2
  57. package/dist/types.mjs +1 -1
  58. package/dist/utils/external-transactions.js +1 -1
  59. package/dist/utils/external-transactions.mjs +1 -1
  60. package/dist/utils/gas-fees.js +6 -6
  61. package/dist/utils/gas-fees.mjs +5 -5
  62. package/dist/utils/gas-flow.js +3 -3
  63. package/dist/utils/gas-flow.mjs +2 -2
  64. package/dist/utils/simulation-api.js +1 -1
  65. package/dist/utils/simulation-api.mjs +1 -1
  66. package/dist/utils/simulation.js +1 -1
  67. package/dist/utils/simulation.mjs +1 -1
  68. package/dist/utils/swaps.js +4 -4
  69. package/dist/utils/swaps.mjs +3 -3
  70. package/dist/utils/transaction-type.js +1 -1
  71. package/dist/utils/transaction-type.mjs +1 -1
  72. package/dist/utils/utils.js +13 -3
  73. package/dist/utils/utils.mjs +14 -4
  74. package/dist/utils/validation.js +4 -4
  75. package/dist/utils/validation.mjs +3 -3
  76. package/package.json +2 -2
  77. package/dist/chunk-5QVDIVJH.js +0 -68
  78. package/dist/chunk-5QVDIVJH.js.map +0 -1
  79. package/dist/chunk-JOQK7A5G.mjs +0 -68
  80. package/dist/chunk-JOQK7A5G.mjs.map +0 -1
  81. package/dist/chunk-KTGMNUTQ.js.map +0 -1
  82. package/dist/chunk-UHSRHP55.mjs.map +0 -1
  83. package/dist/chunk-VKWOHNDO.js.map +0 -1
  84. package/dist/chunk-XTMJ25EF.mjs.map +0 -1
  85. package/dist/types/utils/retry.d.ts +0 -11
  86. package/dist/types/utils/retry.d.ts.map +0 -1
  87. package/dist/utils/retry.js +0 -8
  88. package/dist/utils/retry.js.map +0 -1
  89. package/dist/utils/retry.mjs +0 -8
  90. package/dist/utils/retry.mjs.map +0 -1
  91. /package/dist/{chunk-5HYWLTVQ.js.map → chunk-2EU6346V.js.map} +0 -0
  92. /package/dist/{chunk-YWLMT7XH.js.map → chunk-76FONEDA.js.map} +0 -0
  93. /package/dist/{chunk-UHAFIPSL.js.map → chunk-ARZHJFVG.js.map} +0 -0
  94. /package/dist/{chunk-BZV72SCF.js.map → chunk-C3WC4OJ3.js.map} +0 -0
  95. /package/dist/{chunk-JIFPK37W.mjs.map → chunk-GNAL5HC2.mjs.map} +0 -0
  96. /package/dist/{chunk-4OYPDGHO.js.map → chunk-GPS6RX64.js.map} +0 -0
  97. /package/dist/{chunk-AWIJZAW3.mjs.map → chunk-H2KZOK3J.mjs.map} +0 -0
  98. /package/dist/{chunk-NNHSNPT2.mjs.map → chunk-JXXTNVU4.mjs.map} +0 -0
  99. /package/dist/{chunk-X4XSEYPL.mjs.map → chunk-LTPS73D7.mjs.map} +0 -0
  100. /package/dist/{chunk-QKV7E5BO.js.map → chunk-QH2H4W3N.js.map} +0 -0
  101. /package/dist/{chunk-EHWAY6XU.js.map → chunk-QTKXIDGE.js.map} +0 -0
  102. /package/dist/{chunk-VGFPVAKX.mjs.map → chunk-SFFTNB2X.mjs.map} +0 -0
  103. /package/dist/{chunk-KYRW4BLA.mjs.map → chunk-UHG2LLVV.mjs.map} +0 -0
  104. /package/dist/{chunk-SFFOC25Q.mjs.map → chunk-VXNPVIYL.mjs.map} +0 -0
@@ -2,9 +2,6 @@ import {
2
2
  getAndFormatTransactionsForNonceTracker,
3
3
  getNextNonce
4
4
  } from "./chunk-6DDVVUJC.mjs";
5
- import {
6
- getTransactionParamsWithIncreasedGasFee
7
- } from "./chunk-JOQK7A5G.mjs";
8
5
  import {
9
6
  getSimulationData
10
7
  } from "./chunk-3AVRGHUO.mjs";
@@ -14,7 +11,7 @@ import {
14
11
  import {
15
12
  validateTransactionOrigin,
16
13
  validateTxParams
17
- } from "./chunk-X4XSEYPL.mjs";
14
+ } from "./chunk-LTPS73D7.mjs";
18
15
  import {
19
16
  PendingTransactionTracker
20
17
  } from "./chunk-6B5BEO3R.mjs";
@@ -41,7 +38,7 @@ import {
41
38
  } from "./chunk-FMRLPVFZ.mjs";
42
39
  import {
43
40
  GasFeePoller
44
- } from "./chunk-VGFPVAKX.mjs";
41
+ } from "./chunk-SFFTNB2X.mjs";
45
42
  import {
46
43
  getTransactionLayer1GasFee,
47
44
  updateTransactionLayer1GasFee
@@ -57,28 +54,32 @@ import {
57
54
  } from "./chunk-EKJXGERC.mjs";
58
55
  import {
59
56
  LineaGasFeeFlow
60
- } from "./chunk-KYRW4BLA.mjs";
57
+ } from "./chunk-UHG2LLVV.mjs";
61
58
  import {
62
59
  DefaultGasFeeFlow
63
- } from "./chunk-AWIJZAW3.mjs";
60
+ } from "./chunk-H2KZOK3J.mjs";
64
61
  import {
65
62
  updateGasFees
66
- } from "./chunk-SFFOC25Q.mjs";
63
+ } from "./chunk-VXNPVIYL.mjs";
67
64
  import {
68
65
  updatePostTransactionBalance,
69
66
  updateSwapsTransaction
70
- } from "./chunk-JIFPK37W.mjs";
67
+ } from "./chunk-GNAL5HC2.mjs";
71
68
  import {
69
+ getIncreasedPriceFromExisting,
72
70
  isEIP1559Transaction,
71
+ isFeeMarketEIP1559Values,
72
+ isGasPriceValue,
73
73
  normalizeGasFeeValues,
74
74
  normalizeTransactionParams,
75
75
  normalizeTxError,
76
76
  validateGasValues,
77
- validateIfTransactionUnapproved
78
- } from "./chunk-UHSRHP55.mjs";
77
+ validateIfTransactionUnapproved,
78
+ validateMinimumIncrease
79
+ } from "./chunk-Q56I5ONX.mjs";
79
80
  import {
80
81
  getGasFeeFlow
81
- } from "./chunk-NNHSNPT2.mjs";
82
+ } from "./chunk-JXXTNVU4.mjs";
82
83
  import {
83
84
  projectLogger
84
85
  } from "./chunk-UQQWZT6C.mjs";
@@ -142,7 +143,7 @@ function getDefaultTransactionControllerState() {
142
143
  lastFetchedBlockNumbers: {}
143
144
  };
144
145
  }
145
- var _internalEvents, _incomingTransactionOptions, _pendingTransactionOptions, _trace, _transactionHistoryLimit, _isSimulationEnabled, _testGasFeeFlows, _multichainTrackingHelper, _retryTransaction, retryTransaction_fn, _createNonceTracker, createNonceTracker_fn, _createIncomingTransactionHelper, createIncomingTransactionHelper_fn, _createPendingTransactionTracker, createPendingTransactionTracker_fn, _checkForPendingTransactionAndStartPolling, _stopAllTracking, stopAllTracking_fn, _removeIncomingTransactionHelperListeners, removeIncomingTransactionHelperListeners_fn, _addIncomingTransactionHelperListeners, addIncomingTransactionHelperListeners_fn, _removePendingTransactionTrackerListeners, removePendingTransactionTrackerListeners_fn, _addPendingTransactionTrackerListeners, addPendingTransactionTrackerListeners_fn, _getNonceTrackerPendingTransactions, getNonceTrackerPendingTransactions_fn, _getGasFeeFlows, getGasFeeFlows_fn, _getLayer1GasFeeFlows, getLayer1GasFeeFlows_fn, _updateTransactionInternal, updateTransactionInternal_fn, _checkIfTransactionParamsUpdated, checkIfTransactionParamsUpdated_fn, _onTransactionParamsUpdated, onTransactionParamsUpdated_fn, _updateSimulationData, updateSimulationData_fn, _onGasFeePollerTransactionUpdate, onGasFeePollerTransactionUpdate_fn, _getNetworkClientId, getNetworkClientId_fn, _getGlobalNetworkClientId, getGlobalNetworkClientId_fn, _getGlobalChainId, getGlobalChainId_fn, _isCustomNetwork, isCustomNetwork_fn, _getSelectedAccount, getSelectedAccount_fn;
146
+ var _internalEvents, _incomingTransactionOptions, _pendingTransactionOptions, _transactionHistoryLimit, _isSimulationEnabled, _testGasFeeFlows, _multichainTrackingHelper, _createNonceTracker, createNonceTracker_fn, _createIncomingTransactionHelper, createIncomingTransactionHelper_fn, _createPendingTransactionTracker, createPendingTransactionTracker_fn, _checkForPendingTransactionAndStartPolling, _stopAllTracking, stopAllTracking_fn, _removeIncomingTransactionHelperListeners, removeIncomingTransactionHelperListeners_fn, _addIncomingTransactionHelperListeners, addIncomingTransactionHelperListeners_fn, _removePendingTransactionTrackerListeners, removePendingTransactionTrackerListeners_fn, _addPendingTransactionTrackerListeners, addPendingTransactionTrackerListeners_fn, _getNonceTrackerPendingTransactions, getNonceTrackerPendingTransactions_fn, _getGasFeeFlows, getGasFeeFlows_fn, _getLayer1GasFeeFlows, getLayer1GasFeeFlows_fn, _updateTransactionInternal, updateTransactionInternal_fn, _checkIfTransactionParamsUpdated, checkIfTransactionParamsUpdated_fn, _onTransactionParamsUpdated, onTransactionParamsUpdated_fn, _updateSimulationData, updateSimulationData_fn, _onGasFeePollerTransactionUpdate, onGasFeePollerTransactionUpdate_fn, _getNetworkClientId, getNetworkClientId_fn, _getGlobalNetworkClientId, getGlobalNetworkClientId_fn, _getGlobalChainId, getGlobalChainId_fn, _isCustomNetwork, isCustomNetwork_fn, _getSelectedAccount, getSelectedAccount_fn;
146
147
  var TransactionController = class extends BaseController {
147
148
  /**
148
149
  * Constructs a TransactionController.
@@ -171,7 +172,6 @@ var TransactionController = class extends BaseController {
171
172
  * @param options.sign - Function used to sign transactions.
172
173
  * @param options.state - Initial state to set on this controller.
173
174
  * @param options.testGasFeeFlows - Whether to use the test gas fee flow.
174
- * @param options.trace - Callback to generate trace information.
175
175
  * @param options.transactionHistoryLimit - Transaction history limit.
176
176
  * @param options.hooks - The controller hooks.
177
177
  */
@@ -199,7 +199,6 @@ var TransactionController = class extends BaseController {
199
199
  sign,
200
200
  state,
201
201
  testGasFeeFlows,
202
- trace,
203
202
  transactionHistoryLimit = 40,
204
203
  hooks
205
204
  }) {
@@ -212,7 +211,6 @@ var TransactionController = class extends BaseController {
212
211
  ...state
213
212
  }
214
213
  });
215
- __privateAdd(this, _retryTransaction);
216
214
  __privateAdd(this, _createNonceTracker);
217
215
  __privateAdd(this, _createIncomingTransactionHelper);
218
216
  __privateAdd(this, _createPendingTransactionTracker);
@@ -240,7 +238,6 @@ var TransactionController = class extends BaseController {
240
238
  __privateAdd(this, _incomingTransactionOptions, void 0);
241
239
  __privateAdd(this, _pendingTransactionOptions, void 0);
242
240
  this.signAbortCallbacks = /* @__PURE__ */ new Map();
243
- __privateAdd(this, _trace, void 0);
244
241
  __privateAdd(this, _transactionHistoryLimit, void 0);
245
242
  __privateAdd(this, _isSimulationEnabled, void 0);
246
243
  __privateAdd(this, _testGasFeeFlows, void 0);
@@ -268,7 +265,6 @@ var TransactionController = class extends BaseController {
268
265
  __privateSet(this, _transactionHistoryLimit, transactionHistoryLimit);
269
266
  this.sign = sign;
270
267
  __privateSet(this, _testGasFeeFlows, testGasFeeFlows === true);
271
- __privateSet(this, _trace, trace ?? ((_request, fn) => fn?.()));
272
268
  this.afterSign = hooks?.afterSign ?? (() => true);
273
269
  this.beforeApproveOnInit = hooks?.beforeApproveOnInit ?? (() => true);
274
270
  this.beforeCheckPendingTransaction = hooks?.beforeCheckPendingTransaction ?? /* istanbul ignore next */
@@ -443,7 +439,6 @@ var TransactionController = class extends BaseController {
443
439
  * @param opts.swaps.hasApproveTx - Whether the transaction has an approval transaction.
444
440
  * @param opts.swaps.meta - Metadata for swap transaction.
445
441
  * @param opts.networkClientId - The id of the network client for this transaction.
446
- * @param opts.traceContext - The parent context for any new traces.
447
442
  * @returns Object containing a promise resolving to the transaction hash if approved.
448
443
  */
449
444
  async addTransaction(txParams, {
@@ -455,7 +450,6 @@ var TransactionController = class extends BaseController {
455
450
  securityAlertResponse,
456
451
  sendFlowHistory,
457
452
  swaps = {},
458
- traceContext,
459
453
  type,
460
454
  networkClientId: requestNetworkClientId
461
455
  } = {}) {
@@ -507,9 +501,7 @@ var TransactionController = class extends BaseController {
507
501
  type: transactionType,
508
502
  networkClientId
509
503
  };
510
- await __privateGet(this, _trace).call(this, { name: "Estimate Gas Properties", parentContext: traceContext }, (context) => this.updateGasProperties(addedTransactionMeta, {
511
- traceContext: context
512
- }));
504
+ await this.updateGasProperties(addedTransactionMeta);
513
505
  if (!existingTransactionMeta) {
514
506
  if (method && this.securityProviderRequest) {
515
507
  const securityProviderResponse = await this.securityProviderRequest(
@@ -536,9 +528,7 @@ var TransactionController = class extends BaseController {
536
528
  );
537
529
  this.addMetadata(addedTransactionMeta);
538
530
  if (requireApproval !== false) {
539
- __privateMethod(this, _updateSimulationData, updateSimulationData_fn).call(this, addedTransactionMeta, {
540
- traceContext
541
- }).catch((error) => {
531
+ __privateMethod(this, _updateSimulationData, updateSimulationData_fn).call(this, addedTransactionMeta).catch((error) => {
542
532
  projectLogger("Error while updating simulation data", error);
543
533
  throw error;
544
534
  });
@@ -554,8 +544,7 @@ var TransactionController = class extends BaseController {
554
544
  result: this.processApproval(addedTransactionMeta, {
555
545
  isExisting: Boolean(existingTransactionMeta),
556
546
  requireApproval,
557
- actionId,
558
- traceContext
547
+ actionId
559
548
  }),
560
549
  transactionMeta: addedTransactionMeta
561
550
  };
@@ -605,30 +594,116 @@ var TransactionController = class extends BaseController {
605
594
  estimatedBaseFee,
606
595
  actionId
607
596
  } = {}) {
608
- return await __privateMethod(this, _retryTransaction, retryTransaction_fn).call(this, {
597
+ if (this.getTransactionWithActionId(actionId)) {
598
+ return;
599
+ }
600
+ if (gasValues) {
601
+ gasValues = normalizeGasFeeValues(gasValues);
602
+ validateGasValues(gasValues);
603
+ }
604
+ projectLogger("Creating cancel transaction", transactionId, gasValues);
605
+ const transactionMeta = this.getTransaction(transactionId);
606
+ if (!transactionMeta) {
607
+ return;
608
+ }
609
+ if (!this.sign) {
610
+ throw new Error("No sign method defined.");
611
+ }
612
+ const minGasPrice = getIncreasedPriceFromExisting(
613
+ transactionMeta.txParams.gasPrice,
614
+ CANCEL_RATE
615
+ );
616
+ const gasPriceFromValues = isGasPriceValue(gasValues) && gasValues.gasPrice;
617
+ const newGasPrice = gasPriceFromValues && validateMinimumIncrease(gasPriceFromValues, minGasPrice) || minGasPrice;
618
+ const existingMaxFeePerGas = transactionMeta.txParams?.maxFeePerGas;
619
+ const minMaxFeePerGas = getIncreasedPriceFromExisting(
620
+ existingMaxFeePerGas,
621
+ CANCEL_RATE
622
+ );
623
+ const maxFeePerGasValues = isFeeMarketEIP1559Values(gasValues) && gasValues.maxFeePerGas;
624
+ const newMaxFeePerGas = maxFeePerGasValues && validateMinimumIncrease(maxFeePerGasValues, minMaxFeePerGas) || existingMaxFeePerGas && minMaxFeePerGas;
625
+ const existingMaxPriorityFeePerGas = transactionMeta.txParams?.maxPriorityFeePerGas;
626
+ const minMaxPriorityFeePerGas = getIncreasedPriceFromExisting(
627
+ existingMaxPriorityFeePerGas,
628
+ CANCEL_RATE
629
+ );
630
+ const maxPriorityFeePerGasValues = isFeeMarketEIP1559Values(gasValues) && gasValues.maxPriorityFeePerGas;
631
+ const newMaxPriorityFeePerGas = maxPriorityFeePerGasValues && validateMinimumIncrease(
632
+ maxPriorityFeePerGasValues,
633
+ minMaxPriorityFeePerGas
634
+ ) || existingMaxPriorityFeePerGas && minMaxPriorityFeePerGas;
635
+ const newTxParams = newMaxFeePerGas && newMaxPriorityFeePerGas ? {
636
+ from: transactionMeta.txParams.from,
637
+ gasLimit: transactionMeta.txParams.gas,
638
+ maxFeePerGas: newMaxFeePerGas,
639
+ maxPriorityFeePerGas: newMaxPriorityFeePerGas,
640
+ type: "0x2" /* feeMarket */,
641
+ nonce: transactionMeta.txParams.nonce,
642
+ to: transactionMeta.txParams.from,
643
+ value: "0x0"
644
+ } : {
645
+ from: transactionMeta.txParams.from,
646
+ gasLimit: transactionMeta.txParams.gas,
647
+ gasPrice: newGasPrice,
648
+ nonce: transactionMeta.txParams.nonce,
649
+ to: transactionMeta.txParams.from,
650
+ value: "0x0"
651
+ };
652
+ const unsignedEthTx = this.prepareUnsignedEthTx(
653
+ transactionMeta.chainId,
654
+ newTxParams
655
+ );
656
+ const signedTx = await this.sign(
657
+ unsignedEthTx,
658
+ transactionMeta.txParams.from
659
+ );
660
+ const rawTx = bufferToHex(signedTx.serialize());
661
+ const newFee = newTxParams.maxFeePerGas ?? newTxParams.gasPrice;
662
+ const oldFee = newTxParams.maxFeePerGas ? transactionMeta.txParams.maxFeePerGas : transactionMeta.txParams.gasPrice;
663
+ projectLogger("Submitting cancel transaction", {
664
+ oldFee,
665
+ newFee,
666
+ txParams: newTxParams
667
+ });
668
+ const ethQuery = __privateGet(this, _multichainTrackingHelper).getEthQuery({
669
+ networkClientId: transactionMeta.networkClientId,
670
+ chainId: transactionMeta.chainId
671
+ });
672
+ const hash = await this.publishTransactionForRetry(
673
+ ethQuery,
674
+ rawTx,
675
+ transactionMeta
676
+ );
677
+ const cancelTransactionMeta = {
609
678
  actionId,
679
+ chainId: transactionMeta.chainId,
680
+ networkClientId: transactionMeta.networkClientId,
610
681
  estimatedBaseFee,
611
- gasValues,
612
- label: "cancel",
613
- rate: CANCEL_RATE,
614
- transactionId,
615
- transactionType: "cancel" /* cancel */,
616
- prepareTransactionParams: (txParams) => {
617
- delete txParams.data;
618
- txParams.to = txParams.from;
619
- txParams.value = "0x0";
620
- },
621
- afterSubmit: (newTransactionMeta) => {
622
- this.messagingSystem.publish(
623
- `${controllerName}:transactionFinished`,
624
- newTransactionMeta
625
- );
626
- __privateGet(this, _internalEvents).emit(
627
- `${newTransactionMeta.id}:finished`,
628
- newTransactionMeta
629
- );
630
- }
682
+ hash,
683
+ id: random(),
684
+ originalGasEstimate: transactionMeta.txParams.gas,
685
+ status: "submitted" /* submitted */,
686
+ time: Date.now(),
687
+ type: "cancel" /* cancel */,
688
+ txParams: newTxParams
689
+ };
690
+ this.addMetadata(cancelTransactionMeta);
691
+ this.messagingSystem.publish(`${controllerName}:transactionApproved`, {
692
+ transactionMeta: cancelTransactionMeta,
693
+ actionId
694
+ });
695
+ this.messagingSystem.publish(`${controllerName}:transactionSubmitted`, {
696
+ transactionMeta: cancelTransactionMeta,
697
+ actionId
631
698
  });
699
+ this.messagingSystem.publish(
700
+ `${controllerName}:transactionFinished`,
701
+ cancelTransactionMeta
702
+ );
703
+ __privateGet(this, _internalEvents).emit(
704
+ `${transactionMeta.id}:finished`,
705
+ cancelTransactionMeta
706
+ );
632
707
  }
633
708
  /**
634
709
  * Attempts to speed up a transaction increasing transaction gasPrice by ten percent.
@@ -643,21 +718,118 @@ var TransactionController = class extends BaseController {
643
718
  actionId,
644
719
  estimatedBaseFee
645
720
  } = {}) {
646
- return await __privateMethod(this, _retryTransaction, retryTransaction_fn).call(this, {
647
- actionId,
721
+ if (this.getTransactionWithActionId(actionId)) {
722
+ return;
723
+ }
724
+ if (gasValues) {
725
+ gasValues = normalizeGasFeeValues(gasValues);
726
+ validateGasValues(gasValues);
727
+ }
728
+ projectLogger("Creating speed up transaction", transactionId, gasValues);
729
+ const transactionMeta = this.getTransaction(transactionId);
730
+ if (!transactionMeta) {
731
+ return;
732
+ }
733
+ if (!this.sign) {
734
+ throw new Error("No sign method defined.");
735
+ }
736
+ const minGasPrice = getIncreasedPriceFromExisting(
737
+ transactionMeta.txParams.gasPrice,
738
+ SPEED_UP_RATE
739
+ );
740
+ const gasPriceFromValues = isGasPriceValue(gasValues) && gasValues.gasPrice;
741
+ const newGasPrice = gasPriceFromValues && validateMinimumIncrease(gasPriceFromValues, minGasPrice) || minGasPrice;
742
+ const existingMaxFeePerGas = transactionMeta.txParams?.maxFeePerGas;
743
+ const minMaxFeePerGas = getIncreasedPriceFromExisting(
744
+ existingMaxFeePerGas,
745
+ SPEED_UP_RATE
746
+ );
747
+ const maxFeePerGasValues = isFeeMarketEIP1559Values(gasValues) && gasValues.maxFeePerGas;
748
+ const newMaxFeePerGas = maxFeePerGasValues && validateMinimumIncrease(maxFeePerGasValues, minMaxFeePerGas) || existingMaxFeePerGas && minMaxFeePerGas;
749
+ const existingMaxPriorityFeePerGas = transactionMeta.txParams?.maxPriorityFeePerGas;
750
+ const minMaxPriorityFeePerGas = getIncreasedPriceFromExisting(
751
+ existingMaxPriorityFeePerGas,
752
+ SPEED_UP_RATE
753
+ );
754
+ const maxPriorityFeePerGasValues = isFeeMarketEIP1559Values(gasValues) && gasValues.maxPriorityFeePerGas;
755
+ const newMaxPriorityFeePerGas = maxPriorityFeePerGasValues && validateMinimumIncrease(
756
+ maxPriorityFeePerGasValues,
757
+ minMaxPriorityFeePerGas
758
+ ) || existingMaxPriorityFeePerGas && minMaxPriorityFeePerGas;
759
+ const txParams = newMaxFeePerGas && newMaxPriorityFeePerGas ? {
760
+ ...transactionMeta.txParams,
761
+ gasLimit: transactionMeta.txParams.gas,
762
+ maxFeePerGas: newMaxFeePerGas,
763
+ maxPriorityFeePerGas: newMaxPriorityFeePerGas,
764
+ type: "0x2" /* feeMarket */
765
+ } : {
766
+ ...transactionMeta.txParams,
767
+ gasLimit: transactionMeta.txParams.gas,
768
+ gasPrice: newGasPrice
769
+ };
770
+ const unsignedEthTx = this.prepareUnsignedEthTx(
771
+ transactionMeta.chainId,
772
+ txParams
773
+ );
774
+ const signedTx = await this.sign(
775
+ unsignedEthTx,
776
+ transactionMeta.txParams.from
777
+ );
778
+ const transactionMetaWithRsv = this.updateTransactionMetaRSV(
779
+ transactionMeta,
780
+ signedTx
781
+ );
782
+ const rawTx = bufferToHex(signedTx.serialize());
783
+ const newFee = txParams.maxFeePerGas ?? txParams.gasPrice;
784
+ const oldFee = txParams.maxFeePerGas ? transactionMetaWithRsv.txParams.maxFeePerGas : transactionMetaWithRsv.txParams.gasPrice;
785
+ projectLogger("Submitting speed up transaction", { oldFee, newFee, txParams });
786
+ const ethQuery = __privateGet(this, _multichainTrackingHelper).getEthQuery({
787
+ networkClientId: transactionMeta.networkClientId,
788
+ chainId: transactionMeta.chainId
789
+ });
790
+ const hash = await this.publishTransactionForRetry(
791
+ ethQuery,
792
+ rawTx,
793
+ transactionMeta
794
+ );
795
+ const baseTransactionMeta = {
796
+ ...transactionMetaWithRsv,
648
797
  estimatedBaseFee,
649
- gasValues,
650
- label: "speed up",
651
- rate: SPEED_UP_RATE,
652
- transactionId,
653
- transactionType: "retry" /* retry */,
654
- afterSubmit: (newTransactionMeta) => {
655
- this.messagingSystem.publish(
656
- `${controllerName}:speedupTransactionAdded`,
657
- newTransactionMeta
658
- );
798
+ id: random(),
799
+ time: Date.now(),
800
+ hash,
801
+ actionId,
802
+ originalGasEstimate: transactionMeta.txParams.gas,
803
+ type: "retry" /* retry */,
804
+ originalType: transactionMeta.type
805
+ };
806
+ const newTransactionMeta = newMaxFeePerGas && newMaxPriorityFeePerGas ? {
807
+ ...baseTransactionMeta,
808
+ txParams: {
809
+ ...transactionMeta.txParams,
810
+ maxFeePerGas: newMaxFeePerGas,
811
+ maxPriorityFeePerGas: newMaxPriorityFeePerGas
812
+ }
813
+ } : {
814
+ ...baseTransactionMeta,
815
+ txParams: {
816
+ ...transactionMeta.txParams,
817
+ gasPrice: newGasPrice
659
818
  }
819
+ };
820
+ this.addMetadata(newTransactionMeta);
821
+ this.messagingSystem.publish(`${controllerName}:transactionApproved`, {
822
+ transactionMeta: newTransactionMeta,
823
+ actionId
824
+ });
825
+ this.messagingSystem.publish(`${controllerName}:transactionSubmitted`, {
826
+ transactionMeta: newTransactionMeta,
827
+ actionId
660
828
  });
829
+ this.messagingSystem.publish(
830
+ `${controllerName}:speedupTransactionAdded`,
831
+ newTransactionMeta
832
+ );
661
833
  }
662
834
  /**
663
835
  * Estimates required gas for a given transaction.
@@ -1334,7 +1506,7 @@ var TransactionController = class extends BaseController {
1334
1506
  ]);
1335
1507
  });
1336
1508
  }
1337
- async updateGasProperties(transactionMeta, { traceContext } = {}) {
1509
+ async updateGasProperties(transactionMeta) {
1338
1510
  const isEIP1559Compatible = transactionMeta.txParams.type !== "0x0" /* legacy */ && await this.getEIP1559Compatibility(transactionMeta.networkClientId);
1339
1511
  const { networkClientId, chainId } = transactionMeta;
1340
1512
  const isCustomNetwork = __privateMethod(this, _isCustomNetwork, isCustomNetwork_fn).call(this, networkClientId);
@@ -1346,27 +1518,25 @@ var TransactionController = class extends BaseController {
1346
1518
  networkClientId,
1347
1519
  chainId
1348
1520
  });
1349
- await __privateGet(this, _trace).call(this, { name: "Update Gas", parentContext: traceContext }, async () => {
1350
- await updateGas({
1351
- ethQuery,
1352
- chainId,
1353
- isCustomNetwork,
1354
- txMeta: transactionMeta
1355
- });
1521
+ await updateGas({
1522
+ ethQuery,
1523
+ chainId,
1524
+ isCustomNetwork,
1525
+ txMeta: transactionMeta
1356
1526
  });
1357
- await __privateGet(this, _trace).call(this, { name: "Update Gas Fees", parentContext: traceContext }, async () => await updateGasFees({
1527
+ await updateGasFees({
1358
1528
  eip1559: isEIP1559Compatible,
1359
1529
  ethQuery,
1360
1530
  gasFeeFlows: this.gasFeeFlows,
1361
1531
  getGasFeeEstimates: this.getGasFeeEstimates,
1362
1532
  getSavedGasFees: this.getSavedGasFees.bind(this),
1363
1533
  txMeta: transactionMeta
1364
- }));
1365
- await __privateGet(this, _trace).call(this, { name: "Update Layer 1 Gas Fees", parentContext: traceContext }, async () => await updateTransactionLayer1GasFee({
1534
+ });
1535
+ await updateTransactionLayer1GasFee({
1366
1536
  layer1GasFeeFlows: this.layer1GasFeeFlows,
1367
1537
  provider,
1368
1538
  transactionMeta
1369
- }));
1539
+ });
1370
1540
  }
1371
1541
  onBootCleanup() {
1372
1542
  this.submitApprovedTransactions();
@@ -1390,8 +1560,7 @@ var TransactionController = class extends BaseController {
1390
1560
  isExisting = false,
1391
1561
  requireApproval,
1392
1562
  shouldShowRequest = true,
1393
- actionId,
1394
- traceContext
1563
+ actionId
1395
1564
  }) {
1396
1565
  const transactionId = transactionMeta.id;
1397
1566
  let resultCallbacks;
@@ -1400,10 +1569,9 @@ var TransactionController = class extends BaseController {
1400
1569
  if (meta && !isExisting && !isCompleted) {
1401
1570
  try {
1402
1571
  if (requireApproval !== false) {
1403
- const acceptResult = await __privateGet(this, _trace).call(this, { name: "Await Approval", parentContext: traceContext }, (context) => this.requestApproval(transactionMeta, {
1404
- shouldShowRequest,
1405
- traceContext: context
1406
- }));
1572
+ const acceptResult = await this.requestApproval(transactionMeta, {
1573
+ shouldShowRequest
1574
+ });
1407
1575
  resultCallbacks = acceptResult.resultCallbacks;
1408
1576
  const approvalValue = acceptResult.value;
1409
1577
  const updatedTransaction = approvalValue?.txMeta;
@@ -1420,10 +1588,7 @@ var TransactionController = class extends BaseController {
1420
1588
  }
1421
1589
  const { isCompleted: isTxCompleted } = this.isTransactionCompleted(transactionId);
1422
1590
  if (!isTxCompleted) {
1423
- const approvalResult = await this.approveTransaction(
1424
- transactionId,
1425
- traceContext
1426
- );
1591
+ const approvalResult = await this.approveTransaction(transactionId);
1427
1592
  if (approvalResult === "skipped-via-before-publish-hook" /* SkippedViaBeforePublishHook */ && resultCallbacks) {
1428
1593
  resultCallbacks.success();
1429
1594
  }
@@ -1477,9 +1642,8 @@ var TransactionController = class extends BaseController {
1477
1642
  * A `<tx.id>:finished` hub event is fired after success or failure.
1478
1643
  *
1479
1644
  * @param transactionId - The ID of the transaction to approve.
1480
- * @param traceContext - The parent context for any new traces.
1481
1645
  */
1482
- async approveTransaction(transactionId, traceContext) {
1646
+ async approveTransaction(transactionId) {
1483
1647
  const cleanupTasks = new Array();
1484
1648
  cleanupTasks.push(await this.mutex.acquire());
1485
1649
  let transactionMeta = this.getTransactionOrThrow(transactionId);
@@ -1527,7 +1691,10 @@ var TransactionController = class extends BaseController {
1527
1691
  };
1528
1692
  });
1529
1693
  this.onTransactionStatusChange(transactionMeta);
1530
- const rawTx = await __privateGet(this, _trace).call(this, { name: "Sign", parentContext: traceContext }, () => this.signTransaction(transactionMeta, transactionMeta.txParams));
1694
+ const rawTx = await this.signTransaction(
1695
+ transactionMeta,
1696
+ transactionMeta.txParams
1697
+ );
1531
1698
  if (!this.beforePublish(transactionMeta)) {
1532
1699
  projectLogger("Skipping publishing transaction based on hook");
1533
1700
  this.messagingSystem.publish(
@@ -1552,16 +1719,13 @@ var TransactionController = class extends BaseController {
1552
1719
  ]);
1553
1720
  }
1554
1721
  projectLogger("Publishing transaction", transactionMeta.txParams);
1555
- let hash;
1556
- await __privateGet(this, _trace).call(this, { name: "Publish", parentContext: traceContext }, async () => {
1557
- ({ transactionHash: hash } = await this.publish(
1558
- transactionMeta,
1559
- rawTx
1560
- ));
1561
- if (hash === void 0) {
1562
- hash = await this.publishTransaction(ethQuery, rawTx);
1563
- }
1564
- });
1722
+ let { transactionHash: hash } = await this.publish(
1723
+ transactionMeta,
1724
+ rawTx
1725
+ );
1726
+ if (hash === void 0) {
1727
+ hash = await this.publishTransaction(ethQuery, rawTx);
1728
+ }
1565
1729
  projectLogger("Publish successful", hash);
1566
1730
  transactionMeta = __privateMethod(this, _updateTransactionInternal, updateTransactionInternal_fn).call(this, {
1567
1731
  transactionId,
@@ -1692,19 +1856,11 @@ var TransactionController = class extends BaseController {
1692
1856
  "submitted" /* submitted */
1693
1857
  ].includes(status);
1694
1858
  }
1695
- async requestApproval(txMeta, {
1696
- shouldShowRequest,
1697
- traceContext
1698
- }) {
1859
+ async requestApproval(txMeta, { shouldShowRequest }) {
1699
1860
  const id = this.getApprovalId(txMeta);
1700
1861
  const { origin } = txMeta;
1701
1862
  const type = ApprovalType.Transaction;
1702
1863
  const requestData = { txId: txMeta.id };
1703
- await __privateGet(this, _trace).call(this, {
1704
- name: "Notification Display",
1705
- id,
1706
- parentContext: traceContext
1707
- });
1708
1864
  return await this.messagingSystem.call(
1709
1865
  "ApprovalController:addRequest",
1710
1866
  {
@@ -2088,96 +2244,10 @@ var TransactionController = class extends BaseController {
2088
2244
  _internalEvents = new WeakMap();
2089
2245
  _incomingTransactionOptions = new WeakMap();
2090
2246
  _pendingTransactionOptions = new WeakMap();
2091
- _trace = new WeakMap();
2092
2247
  _transactionHistoryLimit = new WeakMap();
2093
2248
  _isSimulationEnabled = new WeakMap();
2094
2249
  _testGasFeeFlows = new WeakMap();
2095
2250
  _multichainTrackingHelper = new WeakMap();
2096
- _retryTransaction = new WeakSet();
2097
- retryTransaction_fn = async function({
2098
- actionId,
2099
- afterSubmit,
2100
- estimatedBaseFee,
2101
- gasValues,
2102
- label,
2103
- prepareTransactionParams,
2104
- rate,
2105
- transactionId,
2106
- transactionType
2107
- }) {
2108
- if (this.getTransactionWithActionId(actionId)) {
2109
- return;
2110
- }
2111
- if (gasValues) {
2112
- gasValues = normalizeGasFeeValues(gasValues);
2113
- validateGasValues(gasValues);
2114
- }
2115
- projectLogger(`Creating ${label} transaction`, transactionId, gasValues);
2116
- const transactionMeta = this.getTransaction(transactionId);
2117
- if (!transactionMeta) {
2118
- return;
2119
- }
2120
- if (!this.sign) {
2121
- throw new Error("No sign method defined.");
2122
- }
2123
- const newTxParams = getTransactionParamsWithIncreasedGasFee(
2124
- transactionMeta.txParams,
2125
- rate,
2126
- gasValues
2127
- );
2128
- prepareTransactionParams?.(newTxParams);
2129
- const unsignedEthTx = this.prepareUnsignedEthTx(
2130
- transactionMeta.chainId,
2131
- newTxParams
2132
- );
2133
- const signedTx = await this.sign(
2134
- unsignedEthTx,
2135
- transactionMeta.txParams.from
2136
- );
2137
- const transactionMetaWithRsv = this.updateTransactionMetaRSV(
2138
- transactionMeta,
2139
- signedTx
2140
- );
2141
- const rawTx = bufferToHex(signedTx.serialize());
2142
- const newFee = newTxParams.maxFeePerGas ?? newTxParams.gasPrice;
2143
- const oldFee = newTxParams.maxFeePerGas ? transactionMetaWithRsv.txParams.maxFeePerGas : transactionMetaWithRsv.txParams.gasPrice;
2144
- projectLogger(`Submitting ${label} transaction`, {
2145
- oldFee,
2146
- newFee,
2147
- txParams: newTxParams
2148
- });
2149
- const ethQuery = __privateGet(this, _multichainTrackingHelper).getEthQuery({
2150
- networkClientId: transactionMeta.networkClientId,
2151
- chainId: transactionMeta.chainId
2152
- });
2153
- const hash = await this.publishTransactionForRetry(
2154
- ethQuery,
2155
- rawTx,
2156
- transactionMeta
2157
- );
2158
- const newTransactionMeta = {
2159
- ...transactionMetaWithRsv,
2160
- estimatedBaseFee,
2161
- id: random(),
2162
- time: Date.now(),
2163
- hash,
2164
- actionId,
2165
- originalGasEstimate: transactionMeta.txParams.gas,
2166
- type: transactionType,
2167
- txParams: newTxParams,
2168
- originalType: transactionMeta.type
2169
- };
2170
- this.addMetadata(newTransactionMeta);
2171
- this.messagingSystem.publish(`${controllerName}:transactionApproved`, {
2172
- transactionMeta: newTransactionMeta,
2173
- actionId
2174
- });
2175
- this.messagingSystem.publish(`${controllerName}:transactionSubmitted`, {
2176
- transactionMeta: newTransactionMeta,
2177
- actionId
2178
- });
2179
- afterSubmit?.(newTransactionMeta);
2180
- };
2181
2251
  _createNonceTracker = new WeakSet();
2182
2252
  createNonceTracker_fn = function({
2183
2253
  provider,
@@ -2394,7 +2464,7 @@ onTransactionParamsUpdated_fn = function(transactionMeta, updatedParams) {
2394
2464
  }
2395
2465
  };
2396
2466
  _updateSimulationData = new WeakSet();
2397
- updateSimulationData_fn = async function(transactionMeta, { traceContext } = {}) {
2467
+ updateSimulationData_fn = async function(transactionMeta) {
2398
2468
  const { id: transactionId, chainId, txParams } = transactionMeta;
2399
2469
  const { from, to, value, data } = txParams;
2400
2470
  let simulationData = {
@@ -2408,13 +2478,13 @@ updateSimulationData_fn = async function(transactionMeta, { traceContext } = {})
2408
2478
  __privateMethod(this, _updateTransactionInternal, updateTransactionInternal_fn).call(this, { transactionId, skipHistory: true }, (txMeta) => {
2409
2479
  txMeta.simulationData = void 0;
2410
2480
  });
2411
- simulationData = await __privateGet(this, _trace).call(this, { name: "Simulate", parentContext: traceContext }, () => getSimulationData({
2481
+ simulationData = await getSimulationData({
2412
2482
  chainId,
2413
2483
  from,
2414
2484
  to,
2415
2485
  value,
2416
2486
  data
2417
- }));
2487
+ });
2418
2488
  }
2419
2489
  const finalTransactionMeta = this.getTransaction(transactionId);
2420
2490
  if (!finalTransactionMeta) {
@@ -2506,4 +2576,4 @@ export {
2506
2576
  ApprovalState,
2507
2577
  TransactionController
2508
2578
  };
2509
- //# sourceMappingURL=chunk-XTMJ25EF.mjs.map
2579
+ //# sourceMappingURL=chunk-T3GOPPVF.mjs.map