@metamask/transaction-controller 36.1.0 → 37.1.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.
- package/CHANGELOG.md +47 -1
- package/dist/TransactionController.cjs +2071 -0
- package/dist/TransactionController.cjs.map +1 -0
- package/dist/{types/TransactionController.d.ts → TransactionController.d.cts} +19 -26
- package/dist/TransactionController.d.cts.map +1 -0
- package/dist/TransactionController.d.mts +828 -0
- package/dist/TransactionController.d.mts.map +1 -0
- package/dist/TransactionController.mjs +2072 -44
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/constants.cjs +170 -0
- package/dist/constants.cjs.map +1 -0
- package/dist/{types/constants.d.ts → constants.d.cts} +1 -1
- package/dist/constants.d.cts.map +1 -0
- package/dist/constants.d.mts +143 -0
- package/dist/constants.d.mts.map +1 -0
- package/dist/constants.mjs +165 -18
- package/dist/constants.mjs.map +1 -1
- package/dist/errors.cjs +30 -0
- package/dist/{chunk-HMOSP33F.js.map → errors.cjs.map} +1 -1
- package/dist/{types/errors.d.ts → errors.d.cts} +2 -2
- package/dist/errors.d.cts.map +1 -0
- package/dist/errors.d.mts +15 -0
- package/dist/errors.d.mts.map +1 -0
- package/dist/errors.mjs +22 -14
- package/dist/errors.mjs.map +1 -1
- package/dist/gas-flows/DefaultGasFeeFlow.cjs +87 -0
- package/dist/gas-flows/DefaultGasFeeFlow.cjs.map +1 -0
- package/dist/{types/gas-flows/DefaultGasFeeFlow.d.ts → gas-flows/DefaultGasFeeFlow.d.cts} +2 -2
- package/dist/gas-flows/DefaultGasFeeFlow.d.cts.map +1 -0
- package/dist/gas-flows/DefaultGasFeeFlow.d.mts +10 -0
- package/dist/gas-flows/DefaultGasFeeFlow.d.mts.map +1 -0
- package/dist/gas-flows/DefaultGasFeeFlow.mjs +81 -13
- package/dist/gas-flows/DefaultGasFeeFlow.mjs.map +1 -1
- package/dist/gas-flows/LineaGasFeeFlow.cjs +102 -0
- package/dist/gas-flows/LineaGasFeeFlow.cjs.map +1 -0
- package/dist/{types/gas-flows/LineaGasFeeFlow.d.ts → gas-flows/LineaGasFeeFlow.d.cts} +2 -2
- package/dist/gas-flows/LineaGasFeeFlow.d.cts.map +1 -0
- package/dist/gas-flows/LineaGasFeeFlow.d.mts +12 -0
- package/dist/gas-flows/LineaGasFeeFlow.d.mts.map +1 -0
- package/dist/gas-flows/LineaGasFeeFlow.mjs +96 -14
- package/dist/gas-flows/LineaGasFeeFlow.mjs.map +1 -1
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs +29 -0
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs.map +1 -0
- package/dist/{types/gas-flows/OptimismLayer1GasFeeFlow.d.ts → gas-flows/OptimismLayer1GasFeeFlow.d.cts} +3 -3
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.cts.map +1 -0
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts +10 -0
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts.map +1 -0
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs +24 -10
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs.map +1 -1
- package/dist/gas-flows/OracleLayer1GasFeeFlow.cjs +92 -0
- package/dist/gas-flows/OracleLayer1GasFeeFlow.cjs.map +1 -0
- package/dist/{types/gas-flows/OracleLayer1GasFeeFlow.d.ts → gas-flows/OracleLayer1GasFeeFlow.d.cts} +3 -3
- package/dist/gas-flows/OracleLayer1GasFeeFlow.d.cts.map +1 -0
- package/dist/gas-flows/OracleLayer1GasFeeFlow.d.mts +12 -0
- package/dist/gas-flows/OracleLayer1GasFeeFlow.d.mts.map +1 -0
- package/dist/gas-flows/OracleLayer1GasFeeFlow.mjs +88 -7
- package/dist/gas-flows/OracleLayer1GasFeeFlow.mjs.map +1 -1
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs +21 -0
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs.map +1 -0
- package/dist/{types/gas-flows/ScrollLayer1GasFeeFlow.d.ts → gas-flows/ScrollLayer1GasFeeFlow.d.cts} +3 -3
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.cts.map +1 -0
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts +10 -0
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts.map +1 -0
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.mjs +16 -10
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.mjs.map +1 -1
- package/dist/gas-flows/TestGasFeeFlow.cjs +73 -0
- package/dist/{chunk-FMRLPVFZ.mjs.map → gas-flows/TestGasFeeFlow.cjs.map} +1 -1
- package/dist/{types/gas-flows/TestGasFeeFlow.d.ts → gas-flows/TestGasFeeFlow.d.cts} +2 -2
- package/dist/gas-flows/TestGasFeeFlow.d.cts.map +1 -0
- package/dist/gas-flows/TestGasFeeFlow.d.mts +12 -0
- package/dist/gas-flows/TestGasFeeFlow.d.mts.map +1 -0
- package/dist/gas-flows/TestGasFeeFlow.mjs +67 -7
- package/dist/gas-flows/TestGasFeeFlow.mjs.map +1 -1
- package/dist/helpers/EtherscanRemoteTransactionSource.cjs +149 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.cjs.map +1 -0
- package/dist/{types/helpers/EtherscanRemoteTransactionSource.d.ts → helpers/EtherscanRemoteTransactionSource.d.cts} +3 -3
- package/dist/helpers/EtherscanRemoteTransactionSource.d.cts.map +1 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.d.mts +15 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.d.mts.map +1 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.mjs +147 -10
- package/dist/helpers/EtherscanRemoteTransactionSource.mjs.map +1 -1
- package/dist/helpers/GasFeePoller.cjs +185 -0
- package/dist/helpers/GasFeePoller.cjs.map +1 -0
- package/dist/{types/helpers/GasFeePoller.d.ts → helpers/GasFeePoller.d.cts} +7 -7
- package/dist/helpers/GasFeePoller.d.cts.map +1 -0
- package/dist/helpers/GasFeePoller.d.mts +35 -0
- package/dist/helpers/GasFeePoller.d.mts.map +1 -0
- package/dist/helpers/GasFeePoller.mjs +183 -10
- package/dist/helpers/GasFeePoller.mjs.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.cjs +199 -0
- package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -0
- package/dist/{types/helpers/IncomingTransactionHelper.d.ts → helpers/IncomingTransactionHelper.d.cts} +6 -6
- package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -0
- package/dist/helpers/IncomingTransactionHelper.d.mts +40 -0
- package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -0
- package/dist/helpers/IncomingTransactionHelper.mjs +190 -7
- package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.cjs +284 -0
- package/dist/helpers/MultichainTrackingHelper.cjs.map +1 -0
- package/dist/{types/helpers/MultichainTrackingHelper.d.ts → helpers/MultichainTrackingHelper.d.cts} +8 -8
- package/dist/helpers/MultichainTrackingHelper.d.cts.map +1 -0
- package/dist/helpers/MultichainTrackingHelper.d.mts +76 -0
- package/dist/helpers/MultichainTrackingHelper.d.mts.map +1 -0
- package/dist/helpers/MultichainTrackingHelper.mjs +282 -11
- package/dist/helpers/MultichainTrackingHelper.mjs.map +1 -1
- package/dist/helpers/PendingTransactionTracker.cjs +327 -0
- package/dist/helpers/PendingTransactionTracker.cjs.map +1 -0
- package/dist/{types/helpers/PendingTransactionTracker.d.ts → helpers/PendingTransactionTracker.d.cts} +7 -8
- package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -0
- package/dist/helpers/PendingTransactionTracker.d.mts +42 -0
- package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -0
- package/dist/helpers/PendingTransactionTracker.mjs +319 -8
- package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
- package/dist/index.cjs +32 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{types/index.d.ts → index.d.cts} +11 -10
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +11 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +7 -76
- package/dist/index.mjs.map +1 -1
- package/dist/logger.cjs +9 -0
- package/dist/logger.cjs.map +1 -0
- package/dist/{types/logger.d.ts → logger.d.cts} +2 -2
- package/dist/logger.d.cts.map +1 -0
- package/dist/logger.d.mts +6 -0
- package/dist/logger.d.mts.map +1 -0
- package/dist/logger.mjs +5 -11
- package/dist/logger.mjs.map +1 -1
- package/dist/types.cjs +308 -0
- package/dist/types.cjs.map +1 -0
- package/dist/{types/types.d.ts → types.d.cts} +35 -35
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +1027 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +304 -23
- package/dist/types.mjs.map +1 -1
- package/dist/utils/etherscan.cjs +111 -0
- package/dist/utils/etherscan.cjs.map +1 -0
- package/dist/{types/utils/etherscan.d.ts → utils/etherscan.d.cts} +2 -2
- package/dist/utils/etherscan.d.cts.map +1 -0
- package/dist/utils/etherscan.d.mts +71 -0
- package/dist/utils/etherscan.d.mts.map +1 -0
- package/dist/utils/etherscan.mjs +104 -13
- package/dist/utils/etherscan.mjs.map +1 -1
- package/dist/utils/external-transactions.cjs +36 -0
- package/dist/utils/external-transactions.cjs.map +1 -0
- package/dist/{types/utils/external-transactions.d.ts → utils/external-transactions.d.cts} +2 -2
- package/dist/utils/external-transactions.d.cts.map +1 -0
- package/dist/utils/external-transactions.d.mts +10 -0
- package/dist/utils/external-transactions.d.mts.map +1 -0
- package/dist/utils/external-transactions.mjs +31 -8
- package/dist/utils/external-transactions.mjs.map +1 -1
- package/dist/utils/gas-fees.cjs +208 -0
- package/dist/utils/gas-fees.cjs.map +1 -0
- package/dist/{types/utils/gas-fees.d.ts → utils/gas-fees.d.cts} +5 -5
- package/dist/utils/gas-fees.d.cts.map +1 -0
- package/dist/utils/gas-fees.d.mts +26 -0
- package/dist/utils/gas-fees.d.mts.map +1 -0
- package/dist/utils/gas-fees.mjs +202 -15
- package/dist/utils/gas-fees.mjs.map +1 -1
- package/dist/utils/gas-flow.cjs +76 -0
- package/dist/utils/gas-flow.cjs.map +1 -0
- package/dist/{types/utils/gas-flow.d.ts → utils/gas-flow.d.cts} +5 -5
- package/dist/utils/gas-flow.d.cts.map +1 -0
- package/dist/utils/gas-flow.d.mts +26 -0
- package/dist/utils/gas-flow.d.mts.map +1 -0
- package/dist/utils/gas-flow.mjs +70 -10
- package/dist/utils/gas-flow.mjs.map +1 -1
- package/dist/utils/gas.cjs +112 -0
- package/dist/utils/gas.cjs.map +1 -0
- package/dist/{types/utils/gas.d.ts → utils/gas.d.cts} +4 -4
- package/dist/utils/gas.d.cts.map +1 -0
- package/dist/utils/gas.d.mts +28 -0
- package/dist/utils/gas.d.mts.map +1 -0
- package/dist/utils/gas.mjs +105 -19
- package/dist/utils/gas.mjs.map +1 -1
- package/dist/utils/history.cjs +164 -0
- package/dist/utils/history.cjs.map +1 -0
- package/dist/{types/utils/history.d.ts → utils/history.d.cts} +2 -2
- package/dist/utils/history.d.cts.map +1 -0
- package/dist/utils/history.d.mts +29 -0
- package/dist/utils/history.d.mts.map +1 -0
- package/dist/utils/history.mjs +163 -13
- package/dist/utils/history.mjs.map +1 -1
- package/dist/utils/layer1-gas-fee-flow.cjs +59 -0
- package/dist/utils/layer1-gas-fee-flow.cjs.map +1 -0
- package/dist/{types/utils/layer1-gas-fee-flow.d.ts → utils/layer1-gas-fee-flow.d.cts} +4 -4
- package/dist/utils/layer1-gas-fee-flow.d.cts.map +1 -0
- package/dist/utils/layer1-gas-fee-flow.d.mts +25 -0
- package/dist/utils/layer1-gas-fee-flow.d.mts.map +1 -0
- package/dist/utils/layer1-gas-fee-flow.mjs +53 -10
- package/dist/utils/layer1-gas-fee-flow.mjs.map +1 -1
- package/dist/utils/nonce.cjs +66 -0
- package/dist/utils/nonce.cjs.map +1 -0
- package/dist/{types/utils/nonce.d.ts → utils/nonce.d.cts} +3 -3
- package/dist/utils/nonce.d.cts.map +1 -0
- package/dist/utils/nonce.d.mts +21 -0
- package/dist/utils/nonce.d.mts.map +1 -0
- package/dist/utils/nonce.mjs +60 -10
- package/dist/utils/nonce.mjs.map +1 -1
- package/dist/utils/retry.cjs +89 -0
- package/dist/utils/retry.cjs.map +1 -0
- package/dist/{types/utils/retry.d.ts → utils/retry.d.cts} +3 -3
- package/dist/utils/retry.d.cts.map +1 -0
- package/dist/utils/retry.d.mts +11 -0
- package/dist/utils/retry.d.mts.map +1 -0
- package/dist/utils/retry.mjs +84 -7
- package/dist/utils/retry.mjs.map +1 -1
- package/dist/utils/simulation-api.cjs +72 -0
- package/dist/utils/simulation-api.cjs.map +1 -0
- package/dist/{types/utils/simulation-api.d.ts → utils/simulation-api.d.cts} +2 -2
- package/dist/utils/simulation-api.d.cts.map +1 -0
- package/dist/utils/simulation-api.d.mts +107 -0
- package/dist/utils/simulation-api.d.mts.map +1 -0
- package/dist/utils/simulation-api.mjs +67 -10
- package/dist/utils/simulation-api.mjs.map +1 -1
- package/dist/utils/simulation.cjs +443 -0
- package/dist/utils/simulation.cjs.map +1 -0
- package/dist/{types/utils/simulation.d.ts → utils/simulation.d.cts} +6 -6
- package/dist/utils/simulation.d.cts.map +1 -0
- package/dist/utils/simulation.d.mts +46 -0
- package/dist/utils/simulation.d.mts.map +1 -0
- package/dist/utils/simulation.mjs +436 -15
- package/dist/utils/simulation.mjs.map +1 -1
- package/dist/utils/swaps.cjs +309 -0
- package/dist/utils/swaps.cjs.map +1 -0
- package/dist/{types/utils/swaps.d.ts → utils/swaps.d.cts} +5 -5
- package/dist/utils/swaps.d.cts.map +1 -0
- package/dist/utils/swaps.d.mts +84 -0
- package/dist/utils/swaps.d.mts.map +1 -0
- package/dist/utils/swaps.mjs +303 -22
- package/dist/utils/swaps.mjs.map +1 -1
- package/dist/utils/transaction-type.cjs +115 -0
- package/dist/utils/transaction-type.cjs.map +1 -0
- package/dist/{types/utils/transaction-type.d.ts → utils/transaction-type.d.cts} +3 -3
- package/dist/utils/transaction-type.d.cts.map +1 -0
- package/dist/utils/transaction-type.d.mts +14 -0
- package/dist/utils/transaction-type.d.mts.map +1 -0
- package/dist/utils/transaction-type.mjs +110 -10
- package/dist/utils/transaction-type.mjs.map +1 -1
- package/dist/utils/utils.cjs +151 -0
- package/dist/utils/utils.cjs.map +1 -0
- package/dist/{types/utils/utils.d.ts → utils/utils.d.cts} +2 -2
- package/dist/utils/utils.d.cts.map +1 -0
- package/dist/utils/utils.d.mts +52 -0
- package/dist/utils/utils.d.mts.map +1 -0
- package/dist/utils/utils.mjs +139 -21
- package/dist/utils/utils.mjs.map +1 -1
- package/dist/utils/validation.cjs +267 -0
- package/dist/{chunk-4OYPDGHO.js.map → utils/validation.cjs.map} +1 -1
- package/dist/{types/utils/validation.d.ts → utils/validation.d.cts} +2 -2
- package/dist/utils/validation.d.cts.map +1 -0
- package/dist/utils/validation.d.mts +20 -0
- package/dist/utils/validation.d.mts.map +1 -0
- package/dist/utils/validation.mjs +261 -11
- package/dist/utils/validation.mjs.map +1 -1
- package/package.json +20 -15
- package/dist/TransactionController.js +0 -46
- package/dist/TransactionController.js.map +0 -1
- package/dist/chunk-2XKEAKQG.js +0 -55
- package/dist/chunk-2XKEAKQG.js.map +0 -1
- package/dist/chunk-3AVRGHUO.mjs +0 -360
- package/dist/chunk-3AVRGHUO.mjs.map +0 -1
- package/dist/chunk-3ZV5YEUV.mjs +0 -239
- package/dist/chunk-3ZV5YEUV.mjs.map +0 -1
- package/dist/chunk-4OYPDGHO.js +0 -201
- package/dist/chunk-4V4XIPCI.mjs +0 -338
- package/dist/chunk-4V4XIPCI.mjs.map +0 -1
- package/dist/chunk-5G6OHAXI.mjs +0 -137
- package/dist/chunk-5G6OHAXI.mjs.map +0 -1
- package/dist/chunk-5HYWLTVQ.js +0 -228
- package/dist/chunk-5HYWLTVQ.js.map +0 -1
- package/dist/chunk-5QVDIVJH.js +0 -68
- package/dist/chunk-5QVDIVJH.js.map +0 -1
- package/dist/chunk-6B5BEO3R.mjs +0 -399
- package/dist/chunk-6B5BEO3R.mjs.map +0 -1
- package/dist/chunk-6DDVVUJC.mjs +0 -50
- package/dist/chunk-6DDVVUJC.mjs.map +0 -1
- package/dist/chunk-6OLJWLKK.js +0 -338
- package/dist/chunk-6OLJWLKK.js.map +0 -1
- package/dist/chunk-7LXE4KHV.js +0 -40
- package/dist/chunk-7LXE4KHV.js.map +0 -1
- package/dist/chunk-7NMV2NPM.js +0 -172
- package/dist/chunk-7NMV2NPM.js.map +0 -1
- package/dist/chunk-AWIJZAW3.mjs +0 -112
- package/dist/chunk-AWIJZAW3.mjs.map +0 -1
- package/dist/chunk-BZV72SCF.js +0 -226
- package/dist/chunk-BZV72SCF.js.map +0 -1
- package/dist/chunk-EGQCE3FK.mjs +0 -85
- package/dist/chunk-EGQCE3FK.mjs.map +0 -1
- package/dist/chunk-EHWAY6XU.js +0 -112
- package/dist/chunk-EHWAY6XU.js.map +0 -1
- package/dist/chunk-EKJXGERC.mjs +0 -172
- package/dist/chunk-EKJXGERC.mjs.map +0 -1
- package/dist/chunk-FG74Z3F5.mjs +0 -102
- package/dist/chunk-FG74Z3F5.mjs.map +0 -1
- package/dist/chunk-FMRLPVFZ.mjs +0 -66
- package/dist/chunk-FRKQ3Z2L.mjs +0 -40
- package/dist/chunk-FRKQ3Z2L.mjs.map +0 -1
- package/dist/chunk-HMOSP33F.js +0 -36
- package/dist/chunk-HQSNKCXI.mjs +0 -36
- package/dist/chunk-HQSNKCXI.mjs.map +0 -1
- package/dist/chunk-JIFPK37W.mjs +0 -257
- package/dist/chunk-JIFPK37W.mjs.map +0 -1
- package/dist/chunk-JOQK7A5G.mjs +0 -68
- package/dist/chunk-JOQK7A5G.mjs.map +0 -1
- package/dist/chunk-K4KOSAGM.mjs +0 -61
- package/dist/chunk-K4KOSAGM.mjs.map +0 -1
- package/dist/chunk-KG4UW4K4.mjs +0 -88
- package/dist/chunk-KG4UW4K4.mjs.map +0 -1
- package/dist/chunk-KT6UAKBB.js +0 -61
- package/dist/chunk-KT6UAKBB.js.map +0 -1
- package/dist/chunk-KTGMNUTQ.js +0 -106
- package/dist/chunk-KTGMNUTQ.js.map +0 -1
- package/dist/chunk-KYRW4BLA.mjs +0 -121
- package/dist/chunk-KYRW4BLA.mjs.map +0 -1
- package/dist/chunk-LFFYCDHB.mjs +0 -92
- package/dist/chunk-LFFYCDHB.mjs.map +0 -1
- package/dist/chunk-NNCUD3QF.js +0 -360
- package/dist/chunk-NNCUD3QF.js.map +0 -1
- package/dist/chunk-NNHSNPT2.mjs +0 -67
- package/dist/chunk-NNHSNPT2.mjs.map +0 -1
- package/dist/chunk-NOHEXQ7Y.mjs +0 -55
- package/dist/chunk-NOHEXQ7Y.mjs.map +0 -1
- package/dist/chunk-NYKRCWBG.js +0 -31
- package/dist/chunk-NYKRCWBG.js.map +0 -1
- package/dist/chunk-O6ZZVIFH.mjs +0 -176
- package/dist/chunk-O6ZZVIFH.mjs.map +0 -1
- package/dist/chunk-PRUNMTRD.js +0 -50
- package/dist/chunk-PRUNMTRD.js.map +0 -1
- package/dist/chunk-PSZ34BI5.js +0 -92
- package/dist/chunk-PSZ34BI5.js.map +0 -1
- package/dist/chunk-QKV7E5BO.js +0 -257
- package/dist/chunk-QKV7E5BO.js.map +0 -1
- package/dist/chunk-RHDPOIS4.js +0 -239
- package/dist/chunk-RHDPOIS4.js.map +0 -1
- package/dist/chunk-S6VGOPUY.js +0 -14
- package/dist/chunk-S6VGOPUY.js.map +0 -1
- package/dist/chunk-SD6CWFDF.js +0 -88
- package/dist/chunk-SD6CWFDF.js.map +0 -1
- package/dist/chunk-SFFOC25Q.mjs +0 -226
- package/dist/chunk-SFFOC25Q.mjs.map +0 -1
- package/dist/chunk-SMC5Q6ZH.mjs +0 -120
- package/dist/chunk-SMC5Q6ZH.mjs.map +0 -1
- package/dist/chunk-TIE3CPF7.js +0 -120
- package/dist/chunk-TIE3CPF7.js.map +0 -1
- package/dist/chunk-TJMQEH57.js +0 -66
- package/dist/chunk-TJMQEH57.js.map +0 -1
- package/dist/chunk-UGN7PBON.js +0 -176
- package/dist/chunk-UGN7PBON.js.map +0 -1
- package/dist/chunk-UHAFIPSL.js +0 -121
- package/dist/chunk-UHAFIPSL.js.map +0 -1
- package/dist/chunk-UHSRHP55.mjs +0 -106
- package/dist/chunk-UHSRHP55.mjs.map +0 -1
- package/dist/chunk-ULD4JC3Q.js +0 -399
- package/dist/chunk-ULD4JC3Q.js.map +0 -1
- package/dist/chunk-UQQWZT6C.mjs +0 -14
- package/dist/chunk-UQQWZT6C.mjs.map +0 -1
- package/dist/chunk-V72C4MCR.js +0 -137
- package/dist/chunk-V72C4MCR.js.map +0 -1
- package/dist/chunk-VEVVBHP3.mjs +0 -31
- package/dist/chunk-VEVVBHP3.mjs.map +0 -1
- package/dist/chunk-VGFPVAKX.mjs +0 -228
- package/dist/chunk-VGFPVAKX.mjs.map +0 -1
- package/dist/chunk-VKWOHNDO.js +0 -2509
- package/dist/chunk-VKWOHNDO.js.map +0 -1
- package/dist/chunk-WR5F34OW.js +0 -23
- package/dist/chunk-WR5F34OW.js.map +0 -1
- package/dist/chunk-X4XSEYPL.mjs +0 -201
- package/dist/chunk-X4XSEYPL.mjs.map +0 -1
- package/dist/chunk-XTMJ25EF.mjs +0 -2509
- package/dist/chunk-XTMJ25EF.mjs.map +0 -1
- package/dist/chunk-XUI43LEZ.mjs +0 -30
- package/dist/chunk-XUI43LEZ.mjs.map +0 -1
- package/dist/chunk-XVYXRCRL.js +0 -85
- package/dist/chunk-XVYXRCRL.js.map +0 -1
- package/dist/chunk-YVCX6Z75.js +0 -102
- package/dist/chunk-YVCX6Z75.js.map +0 -1
- package/dist/chunk-YWLMT7XH.js +0 -67
- package/dist/chunk-YWLMT7XH.js.map +0 -1
- package/dist/chunk-Z4BLTVTB.js +0 -30
- package/dist/chunk-Z4BLTVTB.js.map +0 -1
- package/dist/chunk-Z4GV3YQQ.mjs +0 -23
- package/dist/chunk-Z4GV3YQQ.mjs.map +0 -1
- package/dist/constants.js +0 -20
- package/dist/constants.js.map +0 -1
- package/dist/errors.js +0 -15
- package/dist/errors.js.map +0 -1
- package/dist/gas-flows/DefaultGasFeeFlow.js +0 -15
- package/dist/gas-flows/DefaultGasFeeFlow.js.map +0 -1
- package/dist/gas-flows/LineaGasFeeFlow.js +0 -16
- package/dist/gas-flows/LineaGasFeeFlow.js.map +0 -1
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.js +0 -11
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.js.map +0 -1
- package/dist/gas-flows/OracleLayer1GasFeeFlow.js +0 -9
- package/dist/gas-flows/OracleLayer1GasFeeFlow.js.map +0 -1
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.js +0 -11
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.js.map +0 -1
- package/dist/gas-flows/TestGasFeeFlow.js +0 -9
- package/dist/gas-flows/TestGasFeeFlow.js.map +0 -1
- package/dist/helpers/EtherscanRemoteTransactionSource.js +0 -12
- package/dist/helpers/EtherscanRemoteTransactionSource.js.map +0 -1
- package/dist/helpers/GasFeePoller.js +0 -12
- package/dist/helpers/GasFeePoller.js.map +0 -1
- package/dist/helpers/IncomingTransactionHelper.js +0 -9
- package/dist/helpers/IncomingTransactionHelper.js.map +0 -1
- package/dist/helpers/MultichainTrackingHelper.js +0 -13
- package/dist/helpers/MultichainTrackingHelper.js.map +0 -1
- package/dist/helpers/PendingTransactionTracker.js +0 -10
- package/dist/helpers/PendingTransactionTracker.js.map +0 -1
- package/dist/index.js +0 -77
- package/dist/index.js.map +0 -1
- package/dist/logger.js +0 -12
- package/dist/logger.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/dist/types/TransactionController.d.ts.map +0 -1
- package/dist/types/constants.d.ts.map +0 -1
- package/dist/types/errors.d.ts.map +0 -1
- package/dist/types/gas-flows/DefaultGasFeeFlow.d.ts.map +0 -1
- package/dist/types/gas-flows/LineaGasFeeFlow.d.ts.map +0 -1
- package/dist/types/gas-flows/OptimismLayer1GasFeeFlow.d.ts.map +0 -1
- package/dist/types/gas-flows/OracleLayer1GasFeeFlow.d.ts.map +0 -1
- package/dist/types/gas-flows/ScrollLayer1GasFeeFlow.d.ts.map +0 -1
- package/dist/types/gas-flows/TestGasFeeFlow.d.ts.map +0 -1
- package/dist/types/helpers/EtherscanRemoteTransactionSource.d.ts.map +0 -1
- package/dist/types/helpers/GasFeePoller.d.ts.map +0 -1
- package/dist/types/helpers/IncomingTransactionHelper.d.ts.map +0 -1
- package/dist/types/helpers/MultichainTrackingHelper.d.ts.map +0 -1
- package/dist/types/helpers/PendingTransactionTracker.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/logger.d.ts.map +0 -1
- package/dist/types/types.d.ts.map +0 -1
- package/dist/types/utils/etherscan.d.ts.map +0 -1
- package/dist/types/utils/external-transactions.d.ts.map +0 -1
- package/dist/types/utils/gas-fees.d.ts.map +0 -1
- package/dist/types/utils/gas-flow.d.ts.map +0 -1
- package/dist/types/utils/gas.d.ts.map +0 -1
- package/dist/types/utils/history.d.ts.map +0 -1
- package/dist/types/utils/layer1-gas-fee-flow.d.ts.map +0 -1
- package/dist/types/utils/nonce.d.ts.map +0 -1
- package/dist/types/utils/retry.d.ts.map +0 -1
- package/dist/types/utils/simulation-api.d.ts.map +0 -1
- package/dist/types/utils/simulation.d.ts.map +0 -1
- package/dist/types/utils/swaps.d.ts.map +0 -1
- package/dist/types/utils/transaction-type.d.ts.map +0 -1
- package/dist/types/utils/utils.d.ts.map +0 -1
- package/dist/types/utils/validation.d.ts.map +0 -1
- package/dist/types.js +0 -24
- package/dist/types.js.map +0 -1
- package/dist/utils/etherscan.js +0 -14
- package/dist/utils/etherscan.js.map +0 -1
- package/dist/utils/external-transactions.js +0 -9
- package/dist/utils/external-transactions.js.map +0 -1
- package/dist/utils/gas-fees.js +0 -16
- package/dist/utils/gas-fees.js.map +0 -1
- package/dist/utils/gas-flow.js +0 -11
- package/dist/utils/gas-flow.js.map +0 -1
- package/dist/utils/gas.js +0 -20
- package/dist/utils/gas.js.map +0 -1
- package/dist/utils/history.js +0 -14
- package/dist/utils/history.js.map +0 -1
- package/dist/utils/layer1-gas-fee-flow.js +0 -11
- package/dist/utils/layer1-gas-fee-flow.js.map +0 -1
- package/dist/utils/nonce.js +0 -11
- package/dist/utils/nonce.js.map +0 -1
- package/dist/utils/retry.js +0 -8
- package/dist/utils/retry.js.map +0 -1
- package/dist/utils/simulation-api.js +0 -11
- package/dist/utils/simulation-api.js.map +0 -1
- package/dist/utils/simulation.js +0 -17
- package/dist/utils/simulation.js.map +0 -1
- package/dist/utils/swaps.js +0 -24
- package/dist/utils/swaps.js.map +0 -1
- package/dist/utils/transaction-type.js +0 -11
- package/dist/utils/transaction-type.js.map +0 -1
- package/dist/utils/utils.js +0 -23
- package/dist/utils/utils.js.map +0 -1
- package/dist/utils/validation.js +0 -12
- package/dist/utils/validation.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionController.cjs","sourceRoot":"","sources":["../src/TransactionController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Hardfork, Common, type ChainConfig } from '@ethereumjs/common';\nimport type { TypedTransaction } from '@ethereumjs/tx';\nimport { TransactionFactory } from '@ethereumjs/tx';\nimport { bufferToHex } from '@ethereumjs/util';\nimport type { AccountsControllerGetSelectedAccountAction } from '@metamask/accounts-controller';\nimport type {\n AcceptResultCallbacks,\n AddApprovalRequest,\n AddResult,\n} from '@metamask/approval-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedControllerMessenger,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport {\n query,\n ApprovalType,\n ORIGIN_METAMASK,\n convertHexToDecimal,\n isInfuraNetworkType,\n} from '@metamask/controller-utils';\nimport type { TraceCallback, TraceContext } from '@metamask/controller-utils';\nimport EthQuery from '@metamask/eth-query';\nimport type {\n FetchGasFeeEstimateOptions,\n GasFeeState,\n} from '@metamask/gas-fee-controller';\nimport type {\n BlockTracker,\n NetworkClientId,\n NetworkController,\n NetworkControllerStateChangeEvent,\n NetworkState,\n Provider,\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerGetNetworkClientByIdAction,\n} from '@metamask/network-controller';\nimport { NetworkClientType } from '@metamask/network-controller';\nimport type {\n NonceLock,\n Transaction as NonceTrackerTransaction,\n} from '@metamask/nonce-tracker';\nimport { NonceTracker } from '@metamask/nonce-tracker';\nimport { errorCodes, rpcErrors, providerErrors } from '@metamask/rpc-errors';\nimport type { Hex } from '@metamask/utils';\nimport { add0x } from '@metamask/utils';\nimport { Mutex } from 'async-mutex';\nimport { MethodRegistry } from 'eth-method-registry';\nimport { EventEmitter } from 'events';\nimport { cloneDeep, mapValues, merge, pickBy, sortBy, isEqual } from 'lodash';\nimport { v1 as random } from 'uuid';\n\nimport { DefaultGasFeeFlow } from './gas-flows/DefaultGasFeeFlow';\nimport { LineaGasFeeFlow } from './gas-flows/LineaGasFeeFlow';\nimport { OptimismLayer1GasFeeFlow } from './gas-flows/OptimismLayer1GasFeeFlow';\nimport { ScrollLayer1GasFeeFlow } from './gas-flows/ScrollLayer1GasFeeFlow';\nimport { TestGasFeeFlow } from './gas-flows/TestGasFeeFlow';\nimport { EtherscanRemoteTransactionSource } from './helpers/EtherscanRemoteTransactionSource';\nimport { GasFeePoller } from './helpers/GasFeePoller';\nimport type { IncomingTransactionOptions } from './helpers/IncomingTransactionHelper';\nimport { IncomingTransactionHelper } from './helpers/IncomingTransactionHelper';\nimport { MultichainTrackingHelper } from './helpers/MultichainTrackingHelper';\nimport { PendingTransactionTracker } from './helpers/PendingTransactionTracker';\nimport { projectLogger as log } from './logger';\nimport type {\n DappSuggestedGasFees,\n Layer1GasFeeFlow,\n SavedGasFees,\n SecurityProviderRequest,\n SendFlowHistoryEntry,\n TransactionParams,\n TransactionMeta,\n TransactionReceipt,\n WalletDevice,\n SecurityAlertResponse,\n GasFeeFlow,\n SimulationData,\n GasFeeEstimates,\n GasFeeFlowResponse,\n GasPriceValue,\n FeeMarketEIP1559Values,\n SubmitHistoryEntry,\n} from './types';\nimport {\n TransactionEnvelopeType,\n TransactionType,\n TransactionStatus,\n SimulationErrorCode,\n} from './types';\nimport { validateConfirmedExternalTransaction } from './utils/external-transactions';\nimport { addGasBuffer, estimateGas, updateGas } from './utils/gas';\nimport { updateGasFees } from './utils/gas-fees';\nimport { getGasFeeFlow } from './utils/gas-flow';\nimport {\n addInitialHistorySnapshot,\n updateTransactionHistory,\n} from './utils/history';\nimport {\n getTransactionLayer1GasFee,\n updateTransactionLayer1GasFee,\n} from './utils/layer1-gas-fee-flow';\nimport {\n getAndFormatTransactionsForNonceTracker,\n getNextNonce,\n} from './utils/nonce';\nimport { getTransactionParamsWithIncreasedGasFee } from './utils/retry';\nimport { getSimulationData } from './utils/simulation';\nimport {\n updatePostTransactionBalance,\n updateSwapsTransaction,\n} from './utils/swaps';\nimport { determineTransactionType } from './utils/transaction-type';\nimport {\n normalizeTransactionParams,\n isEIP1559Transaction,\n validateGasValues,\n validateIfTransactionUnapproved,\n normalizeTxError,\n normalizeGasFeeValues,\n} from './utils/utils';\nimport {\n validateTransactionOrigin,\n validateTxParams,\n} from './utils/validation';\n\n/**\n * Metadata for the TransactionController state, describing how to \"anonymize\"\n * the state and which parts should be persisted.\n */\nconst metadata = {\n transactions: {\n persist: true,\n anonymous: false,\n },\n methodData: {\n persist: true,\n anonymous: false,\n },\n lastFetchedBlockNumbers: {\n persist: true,\n anonymous: false,\n },\n submitHistory: {\n persist: true,\n anonymous: false,\n },\n};\n\nexport const HARDFORK = Hardfork.London;\nconst SUBMIT_HISTORY_LIMIT = 100;\n\n/**\n * Object with new transaction's meta and a promise resolving to the\n * transaction hash if successful.\n *\n * @property result - Promise resolving to a new transaction hash\n * @property transactionMeta - Meta information about this new transaction\n */\n// This interface was created before this ESLint rule was added.\n// Convert to a `type` in a future major version.\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport interface Result {\n result: Promise<string>;\n transactionMeta: TransactionMeta;\n}\n\n/**\n * Method data registry object\n *\n * @property registryMethod - Registry method raw string\n * @property parsedRegistryMethod - Registry method object, containing name and method arguments\n */\nexport type MethodData = {\n registryMethod: string;\n parsedRegistryMethod:\n | {\n name: string;\n args: { type: string }[];\n }\n | {\n // We're using `any` instead of `undefined` for compatibility with `Json`\n // TODO: Correct this type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n name?: any;\n // We're using `any` instead of `undefined` for compatibility with `Json`\n // TODO: Correct this type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args?: any;\n };\n};\n\n/**\n * Transaction controller state\n *\n * @property transactions - A list of TransactionMeta objects\n * @property methodData - Object containing all known method data information\n * @property lastFetchedBlockNumbers - Last fetched block numbers.\n */\nexport type TransactionControllerState = {\n transactions: TransactionMeta[];\n methodData: Record<string, MethodData>;\n lastFetchedBlockNumbers: { [key: string]: number };\n submitHistory: SubmitHistoryEntry[];\n};\n\n/**\n * Multiplier used to determine a transaction's increased gas fee during cancellation\n */\nexport const CANCEL_RATE = 1.1;\n\n/**\n * Multiplier used to determine a transaction's increased gas fee during speed up\n */\nexport const SPEED_UP_RATE = 1.1;\n\n/**\n * Represents the `TransactionController:getState` action.\n */\nexport type TransactionControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n TransactionControllerState\n>;\n\n/**\n * The internal actions available to the TransactionController.\n */\nexport type TransactionControllerActions = TransactionControllerGetStateAction;\n\n/**\n * Configuration options for the PendingTransactionTracker\n *\n * @property isResubmitEnabled - Whether transaction publishing is automatically retried.\n */\nexport type PendingTransactionOptions = {\n isResubmitEnabled?: () => boolean;\n};\n\n/**\n * TransactionController constructor options.\n *\n * @property blockTracker - The block tracker used to poll for new blocks data.\n * @property disableHistory - Whether to disable storing history in transaction metadata.\n * @property disableSendFlowHistory - Explicitly disable transaction metadata history.\n * @property disableSwaps - Whether to disable additional processing on swaps transactions.\n * @property getCurrentAccountEIP1559Compatibility - Whether or not the account supports EIP-1559.\n * @property getCurrentNetworkEIP1559Compatibility - Whether or not the network supports EIP-1559.\n * @property getExternalPendingTransactions - Callback to retrieve pending transactions from external sources.\n * @property getGasFeeEstimates - Callback to retrieve gas fee estimates.\n * @property getNetworkClientRegistry - Gets the network client registry.\n * @property getNetworkState - Gets the state of the network controller.\n * @property getPermittedAccounts - Get accounts that a given origin has permissions for.\n * @property getSavedGasFees - Gets the saved gas fee config.\n * @property getSelectedAddress - Gets the address of the currently selected account.\n * @property incomingTransactions - Configuration options for incoming transaction support.\n * @property isMultichainEnabled - Enable multichain support.\n * @property isSimulationEnabled - Whether new transactions will be automatically simulated.\n * @property messenger - The controller messenger.\n * @property onNetworkStateChange - Allows subscribing to network controller state changes.\n * @property pendingTransactions - Configuration options for pending transaction support.\n * @property provider - The provider used to create the underlying EthQuery instance.\n * @property securityProviderRequest - A function for verifying a transaction, whether it is malicious or not.\n * @property sign - Function used to sign transactions.\n * @property state - Initial state to set on this controller.\n * @property transactionHistoryLimit - Transaction history limit.\n * @property hooks - The controller hooks.\n * @property hooks.afterSign - Additional logic to execute after signing a transaction. Return false to not change the status to signed.\n * @property hooks.beforeApproveOnInit - Additional logic to execute before starting an approval flow for a transaction during initialization. Return false to skip the transaction.\n * @property hooks.beforeCheckPendingTransaction - Additional logic to execute before checking pending transactions. Return false to prevent the broadcast of the transaction.\n * @property hooks.beforePublish - Additional logic to execute before publishing a transaction. Return false to prevent the broadcast of the transaction.\n * @property hooks.getAdditionalSignArguments - Returns additional arguments required to sign a transaction.\n * @property hooks.publish - Alternate logic to publish a transaction.\n */\nexport type TransactionControllerOptions = {\n blockTracker: BlockTracker;\n disableHistory: boolean;\n disableSendFlowHistory: boolean;\n disableSwaps: boolean;\n getCurrentAccountEIP1559Compatibility?: () => Promise<boolean>;\n getCurrentNetworkEIP1559Compatibility: () => Promise<boolean>;\n getExternalPendingTransactions?: (\n address: string,\n chainId?: string,\n ) => NonceTrackerTransaction[];\n getGasFeeEstimates?: (\n options: FetchGasFeeEstimateOptions,\n ) => Promise<GasFeeState>;\n getNetworkClientRegistry: NetworkController['getNetworkClientRegistry'];\n getNetworkState: () => NetworkState;\n getPermittedAccounts?: (origin?: string) => Promise<string[]>;\n getSavedGasFees?: (chainId: Hex) => SavedGasFees | undefined;\n incomingTransactions?: IncomingTransactionOptions;\n isMultichainEnabled: boolean;\n isSimulationEnabled?: () => boolean;\n messenger: TransactionControllerMessenger;\n onNetworkStateChange: (listener: (state: NetworkState) => void) => void;\n pendingTransactions?: PendingTransactionOptions;\n provider: Provider;\n securityProviderRequest?: SecurityProviderRequest;\n sign?: (\n transaction: TypedTransaction,\n from: string,\n transactionMeta?: TransactionMeta,\n ) => Promise<TypedTransaction>;\n state?: Partial<TransactionControllerState>;\n testGasFeeFlows?: boolean;\n trace?: TraceCallback;\n transactionHistoryLimit: number;\n hooks: {\n afterSign?: (\n transactionMeta: TransactionMeta,\n signedTx: TypedTransaction,\n ) => boolean;\n beforeCheckPendingTransaction?: (\n transactionMeta: TransactionMeta,\n ) => boolean;\n beforePublish?: (transactionMeta: TransactionMeta) => boolean;\n getAdditionalSignArguments?: (\n transactionMeta: TransactionMeta,\n ) => (TransactionMeta | undefined)[];\n publish?: (\n transactionMeta: TransactionMeta,\n ) => Promise<{ transactionHash: string }>;\n };\n};\n\n/**\n * The name of the {@link TransactionController}.\n */\nconst controllerName = 'TransactionController';\n\n/**\n * The external actions available to the {@link TransactionController}.\n */\nexport type AllowedActions =\n | AddApprovalRequest\n | NetworkControllerFindNetworkClientIdByChainIdAction\n | NetworkControllerGetNetworkClientByIdAction\n | AccountsControllerGetSelectedAccountAction;\n\n/**\n * The external events available to the {@link TransactionController}.\n */\nexport type AllowedEvents = NetworkControllerStateChangeEvent;\n\n/**\n * Represents the `TransactionController:stateChange` event.\n */\nexport type TransactionControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof controllerName,\n TransactionControllerState\n>;\n\n/**\n * Represents the `TransactionController:incomingTransactionBlockReceived` event.\n */\nexport type TransactionControllerIncomingTransactionBlockReceivedEvent = {\n type: `${typeof controllerName}:incomingTransactionBlockReceived`;\n payload: [blockNumber: number];\n};\n\n/**\n * Represents the `TransactionController:postTransactionBalanceUpdated` event.\n */\nexport type TransactionControllerPostTransactionBalanceUpdatedEvent = {\n type: `${typeof controllerName}:postTransactionBalanceUpdated`;\n payload: [\n {\n transactionMeta: TransactionMeta;\n approvalTransactionMeta?: TransactionMeta;\n },\n ];\n};\n\n/**\n * Represents the `TransactionController:speedUpTransactionAdded` event.\n */\nexport type TransactionControllerSpeedupTransactionAddedEvent = {\n type: `${typeof controllerName}:speedupTransactionAdded`;\n payload: [transactionMeta: TransactionMeta];\n};\n\n/**\n * Represents the `TransactionController:transactionApproved` event.\n */\nexport type TransactionControllerTransactionApprovedEvent = {\n type: `${typeof controllerName}:transactionApproved`;\n payload: [\n {\n transactionMeta: TransactionMeta;\n actionId?: string;\n },\n ];\n};\n\n/**\n * Represents the `TransactionController:transactionConfirmed` event.\n */\nexport type TransactionControllerTransactionConfirmedEvent = {\n type: `${typeof controllerName}:transactionConfirmed`;\n payload: [transactionMeta: TransactionMeta];\n};\n\n/**\n * Represents the `TransactionController:transactionDropped` event.\n */\nexport type TransactionControllerTransactionDroppedEvent = {\n type: `${typeof controllerName}:transactionDropped`;\n payload: [{ transactionMeta: TransactionMeta }];\n};\n\n/**\n * Represents the `TransactionController:transactionFailed` event.\n */\nexport type TransactionControllerTransactionFailedEvent = {\n type: `${typeof controllerName}:transactionFailed`;\n payload: [\n {\n actionId?: string;\n error: string;\n transactionMeta: TransactionMeta;\n },\n ];\n};\n\n/**\n * Represents the `TransactionController:transactionFinished` event.\n */\nexport type TransactionControllerTransactionFinishedEvent = {\n type: `${typeof controllerName}:transactionFinished`;\n payload: [transactionMeta: TransactionMeta];\n};\n\n/**\n * Represents the `TransactionController:transactionNewSwapApproval` event.\n */\nexport type TransactionControllerTransactionNewSwapApprovalEvent = {\n type: `${typeof controllerName}:transactionNewSwapApproval`;\n payload: [{ transactionMeta: TransactionMeta }];\n};\n\n/**\n * Represents the `TransactionController:transactionNewSwap` event.\n */\nexport type TransactionControllerTransactionNewSwapEvent = {\n type: `${typeof controllerName}:transactionNewSwap`;\n payload: [{ transactionMeta: TransactionMeta }];\n};\n\n/**\n * Represents the `TransactionController:transactionNewSwapApproval` event.\n */\nexport type TransactionControllerTransactionNewSwapAndSendEvent = {\n type: `${typeof controllerName}:transactionNewSwapAndSend`;\n payload: [{ transactionMeta: TransactionMeta }];\n};\n\n/**\n * Represents the `TransactionController:transactionPublishingSkipped` event.\n */\nexport type TransactionControllerTransactionPublishingSkipped = {\n type: `${typeof controllerName}:transactionPublishingSkipped`;\n payload: [transactionMeta: TransactionMeta];\n};\n\n/**\n * Represents the `TransactionController:transactionRejected` event.\n */\nexport type TransactionControllerTransactionRejectedEvent = {\n type: `${typeof controllerName}:transactionRejected`;\n payload: [\n {\n transactionMeta: TransactionMeta;\n actionId?: string;\n },\n ];\n};\n\n/**\n * Represents the `TransactionController:transactionStatusUpdated` event.\n */\nexport type TransactionControllerTransactionStatusUpdatedEvent = {\n type: `${typeof controllerName}:transactionStatusUpdated`;\n payload: [\n {\n transactionMeta: TransactionMeta;\n },\n ];\n};\n\n/**\n * Represents the `TransactionController:transactionSubmitted` event.\n */\nexport type TransactionControllerTransactionSubmittedEvent = {\n type: `${typeof controllerName}:transactionSubmitted`;\n payload: [\n {\n transactionMeta: TransactionMeta;\n actionId?: string;\n },\n ];\n};\n\n/**\n * Represents the `TransactionController:unapprovedTransactionAdded` event.\n */\nexport type TransactionControllerUnapprovedTransactionAddedEvent = {\n type: `${typeof controllerName}:unapprovedTransactionAdded`;\n payload: [transactionMeta: TransactionMeta];\n};\n\n/**\n * The internal events available to the {@link TransactionController}.\n */\nexport type TransactionControllerEvents =\n | TransactionControllerIncomingTransactionBlockReceivedEvent\n | TransactionControllerPostTransactionBalanceUpdatedEvent\n | TransactionControllerSpeedupTransactionAddedEvent\n | TransactionControllerStateChangeEvent\n | TransactionControllerTransactionApprovedEvent\n | TransactionControllerTransactionConfirmedEvent\n | TransactionControllerTransactionDroppedEvent\n | TransactionControllerTransactionFailedEvent\n | TransactionControllerTransactionFinishedEvent\n | TransactionControllerTransactionNewSwapApprovalEvent\n | TransactionControllerTransactionNewSwapEvent\n | TransactionControllerTransactionNewSwapAndSendEvent\n | TransactionControllerTransactionPublishingSkipped\n | TransactionControllerTransactionRejectedEvent\n | TransactionControllerTransactionStatusUpdatedEvent\n | TransactionControllerTransactionSubmittedEvent\n | TransactionControllerUnapprovedTransactionAddedEvent;\n\n/**\n * The messenger of the {@link TransactionController}.\n */\nexport type TransactionControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n TransactionControllerActions | AllowedActions,\n TransactionControllerEvents | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n>;\n\n/**\n * Possible states of the approve transaction step.\n */\nexport enum ApprovalState {\n Approved = 'approved',\n NotApproved = 'not-approved',\n SkippedViaBeforePublishHook = 'skipped-via-before-publish-hook',\n}\n\n/**\n * Get the default TransactionsController state.\n *\n * @returns The default TransactionsController state.\n */\nfunction getDefaultTransactionControllerState(): TransactionControllerState {\n return {\n methodData: {},\n transactions: [],\n lastFetchedBlockNumbers: {},\n submitHistory: [],\n };\n}\n\n/**\n * Controller responsible for submitting and managing transactions.\n */\nexport class TransactionController extends BaseController<\n typeof controllerName,\n TransactionControllerState,\n TransactionControllerMessenger\n> {\n #internalEvents = new EventEmitter();\n\n private readonly isHistoryDisabled: boolean;\n\n private readonly isSwapsDisabled: boolean;\n\n private readonly isSendFlowHistoryDisabled: boolean;\n\n private readonly approvingTransactionIds: Set<string> = new Set();\n\n private readonly nonceTracker: NonceTracker;\n\n private readonly registry: MethodRegistry;\n\n private readonly mutex = new Mutex();\n\n private readonly gasFeeFlows: GasFeeFlow[];\n\n private readonly getSavedGasFees: (chainId: Hex) => SavedGasFees | undefined;\n\n private readonly getNetworkState: () => NetworkState;\n\n private readonly getCurrentAccountEIP1559Compatibility: () => Promise<boolean>;\n\n private readonly getCurrentNetworkEIP1559Compatibility: (\n networkClientId?: NetworkClientId,\n ) => Promise<boolean>;\n\n private readonly getGasFeeEstimates: (\n options: FetchGasFeeEstimateOptions,\n ) => Promise<GasFeeState>;\n\n private readonly getPermittedAccounts?: (\n origin?: string,\n ) => Promise<string[]>;\n\n private readonly getExternalPendingTransactions: (\n address: string,\n chainId?: string,\n ) => NonceTrackerTransaction[];\n\n private readonly layer1GasFeeFlows: Layer1GasFeeFlow[];\n\n readonly #incomingTransactionOptions: IncomingTransactionOptions;\n\n private readonly incomingTransactionHelper: IncomingTransactionHelper;\n\n private readonly securityProviderRequest?: SecurityProviderRequest;\n\n readonly #pendingTransactionOptions: PendingTransactionOptions;\n\n private readonly pendingTransactionTracker: PendingTransactionTracker;\n\n private readonly signAbortCallbacks: Map<string, () => void> = new Map();\n\n #trace: TraceCallback;\n\n #transactionHistoryLimit: number;\n\n #isSimulationEnabled: () => boolean;\n\n #testGasFeeFlows: boolean;\n\n private readonly afterSign: (\n transactionMeta: TransactionMeta,\n signedTx: TypedTransaction,\n ) => boolean;\n\n private readonly beforeCheckPendingTransaction: (\n transactionMeta: TransactionMeta,\n ) => boolean;\n\n private readonly beforePublish: (transactionMeta: TransactionMeta) => boolean;\n\n private readonly publish: (\n transactionMeta: TransactionMeta,\n rawTx: string,\n ) => Promise<{ transactionHash?: string }>;\n\n private readonly getAdditionalSignArguments: (\n transactionMeta: TransactionMeta,\n ) => (TransactionMeta | undefined)[];\n\n private failTransaction(\n transactionMeta: TransactionMeta,\n error: Error,\n actionId?: string,\n ) {\n let newTransactionMeta: TransactionMeta;\n\n try {\n newTransactionMeta = this.#updateTransactionInternal(\n {\n transactionId: transactionMeta.id,\n note: 'TransactionController#failTransaction - Add error message and set status to failed',\n skipValidation: true,\n },\n (draftTransactionMeta) => {\n draftTransactionMeta.status = TransactionStatus.failed;\n\n (\n draftTransactionMeta as TransactionMeta & {\n status: TransactionStatus.failed;\n }\n ).error = normalizeTxError(error);\n },\n );\n } catch (err: unknown) {\n log('Failed to mark transaction as failed', err);\n\n newTransactionMeta = {\n ...transactionMeta,\n status: TransactionStatus.failed,\n error: normalizeTxError(error),\n };\n }\n\n this.messagingSystem.publish(`${controllerName}:transactionFailed`, {\n actionId,\n error: error.message,\n transactionMeta: newTransactionMeta,\n });\n\n this.onTransactionStatusChange(newTransactionMeta);\n\n this.messagingSystem.publish(\n `${controllerName}:transactionFinished`,\n newTransactionMeta,\n );\n\n this.#internalEvents.emit(\n `${transactionMeta.id}:finished`,\n newTransactionMeta,\n );\n }\n\n private async registryLookup(fourBytePrefix: string): Promise<MethodData> {\n const registryMethod = await this.registry.lookup(fourBytePrefix);\n if (!registryMethod) {\n return {\n registryMethod: '',\n parsedRegistryMethod: { name: undefined, args: undefined },\n };\n }\n const parsedRegistryMethod = this.registry.parse(registryMethod);\n return { registryMethod, parsedRegistryMethod };\n }\n\n #multichainTrackingHelper: MultichainTrackingHelper;\n\n /**\n * Method used to sign transactions\n */\n sign?: (\n transaction: TypedTransaction,\n from: string,\n transactionMeta?: TransactionMeta,\n ) => Promise<TypedTransaction>;\n\n /**\n * Constructs a TransactionController.\n *\n * @param options - The controller options.\n * @param options.blockTracker - The block tracker used to poll for new blocks data.\n * @param options.disableHistory - Whether to disable storing history in transaction metadata.\n * @param options.disableSendFlowHistory - Explicitly disable transaction metadata history.\n * @param options.disableSwaps - Whether to disable additional processing on swaps transactions.\n * @param options.getCurrentAccountEIP1559Compatibility - Whether or not the account supports EIP-1559.\n * @param options.getCurrentNetworkEIP1559Compatibility - Whether or not the network supports EIP-1559.\n * @param options.getExternalPendingTransactions - Callback to retrieve pending transactions from external sources.\n * @param options.getGasFeeEstimates - Callback to retrieve gas fee estimates.\n * @param options.getNetworkClientRegistry - Gets the network client registry.\n * @param options.getNetworkState - Gets the state of the network controller.\n * @param options.getPermittedAccounts - Get accounts that a given origin has permissions for.\n * @param options.getSavedGasFees - Gets the saved gas fee config.\n * @param options.incomingTransactions - Configuration options for incoming transaction support.\n * @param options.isMultichainEnabled - Enable multichain support.\n * @param options.isSimulationEnabled - Whether new transactions will be automatically simulated.\n * @param options.messenger - The controller messenger.\n * @param options.onNetworkStateChange - Allows subscribing to network controller state changes.\n * @param options.pendingTransactions - Configuration options for pending transaction support.\n * @param options.provider - The provider used to create the underlying EthQuery instance.\n * @param options.securityProviderRequest - A function for verifying a transaction, whether it is malicious or not.\n * @param options.sign - Function used to sign transactions.\n * @param options.state - Initial state to set on this controller.\n * @param options.testGasFeeFlows - Whether to use the test gas fee flow.\n * @param options.trace - Callback to generate trace information.\n * @param options.transactionHistoryLimit - Transaction history limit.\n * @param options.hooks - The controller hooks.\n */\n constructor({\n blockTracker,\n disableHistory,\n disableSendFlowHistory,\n disableSwaps,\n getCurrentAccountEIP1559Compatibility,\n getCurrentNetworkEIP1559Compatibility,\n getExternalPendingTransactions,\n getGasFeeEstimates,\n getNetworkClientRegistry,\n getNetworkState,\n getPermittedAccounts,\n getSavedGasFees,\n incomingTransactions = {},\n isMultichainEnabled = false,\n isSimulationEnabled,\n messenger,\n onNetworkStateChange,\n pendingTransactions = {},\n provider,\n securityProviderRequest,\n sign,\n state,\n testGasFeeFlows,\n trace,\n transactionHistoryLimit = 40,\n hooks,\n }: TransactionControllerOptions) {\n super({\n name: controllerName,\n metadata,\n messenger,\n state: {\n ...getDefaultTransactionControllerState(),\n ...state,\n },\n });\n\n this.messagingSystem = messenger;\n this.getNetworkState = getNetworkState;\n this.isSendFlowHistoryDisabled = disableSendFlowHistory ?? false;\n this.isHistoryDisabled = disableHistory ?? false;\n this.isSwapsDisabled = disableSwaps ?? false;\n this.#isSimulationEnabled = isSimulationEnabled ?? (() => true);\n // @ts-expect-error the type in eth-method-registry is inappropriate and should be changed\n this.registry = new MethodRegistry({ provider });\n this.getSavedGasFees = getSavedGasFees ?? ((_chainId) => undefined);\n this.getCurrentAccountEIP1559Compatibility =\n getCurrentAccountEIP1559Compatibility ?? (() => Promise.resolve(true));\n this.getCurrentNetworkEIP1559Compatibility =\n getCurrentNetworkEIP1559Compatibility;\n this.getGasFeeEstimates =\n getGasFeeEstimates || (() => Promise.resolve({} as GasFeeState));\n this.getPermittedAccounts = getPermittedAccounts;\n this.getExternalPendingTransactions =\n getExternalPendingTransactions ?? (() => []);\n this.securityProviderRequest = securityProviderRequest;\n this.#incomingTransactionOptions = incomingTransactions;\n this.#pendingTransactionOptions = pendingTransactions;\n this.#transactionHistoryLimit = transactionHistoryLimit;\n this.sign = sign;\n this.#testGasFeeFlows = testGasFeeFlows === true;\n this.#trace = trace ?? (((_request, fn) => fn?.()) as TraceCallback);\n\n this.afterSign = hooks?.afterSign ?? (() => true);\n this.beforeCheckPendingTransaction =\n hooks?.beforeCheckPendingTransaction ??\n /* istanbul ignore next */\n (() => true);\n this.beforePublish = hooks?.beforePublish ?? (() => true);\n this.getAdditionalSignArguments =\n hooks?.getAdditionalSignArguments ?? (() => []);\n this.publish =\n hooks?.publish ?? (() => Promise.resolve({ transactionHash: undefined }));\n\n this.nonceTracker = this.#createNonceTracker({\n provider,\n blockTracker,\n });\n\n const findNetworkClientIdByChainId = (chainId: Hex) => {\n return this.messagingSystem.call(\n `NetworkController:findNetworkClientIdByChainId`,\n chainId,\n );\n };\n\n this.#multichainTrackingHelper = new MultichainTrackingHelper({\n isMultichainEnabled,\n provider,\n nonceTracker: this.nonceTracker,\n incomingTransactionOptions: incomingTransactions,\n findNetworkClientIdByChainId,\n getNetworkClientById: ((networkClientId: NetworkClientId) => {\n return this.messagingSystem.call(\n `NetworkController:getNetworkClientById`,\n networkClientId,\n );\n }) as NetworkController['getNetworkClientById'],\n getNetworkClientRegistry,\n removeIncomingTransactionHelperListeners:\n this.#removeIncomingTransactionHelperListeners.bind(this),\n removePendingTransactionTrackerListeners:\n this.#removePendingTransactionTrackerListeners.bind(this),\n createNonceTracker: this.#createNonceTracker.bind(this),\n createIncomingTransactionHelper:\n this.#createIncomingTransactionHelper.bind(this),\n createPendingTransactionTracker:\n this.#createPendingTransactionTracker.bind(this),\n onNetworkStateChange: (listener) => {\n this.messagingSystem.subscribe(\n 'NetworkController:stateChange',\n listener,\n );\n },\n });\n this.#multichainTrackingHelper.initialize();\n\n const etherscanRemoteTransactionSource =\n new EtherscanRemoteTransactionSource({\n includeTokenTransfers: incomingTransactions.includeTokenTransfers,\n });\n\n this.incomingTransactionHelper = this.#createIncomingTransactionHelper({\n blockTracker,\n etherscanRemoteTransactionSource,\n });\n\n this.pendingTransactionTracker = this.#createPendingTransactionTracker({\n provider,\n blockTracker,\n });\n\n this.gasFeeFlows = this.#getGasFeeFlows();\n this.layer1GasFeeFlows = this.#getLayer1GasFeeFlows();\n\n const gasFeePoller = new GasFeePoller({\n findNetworkClientIdByChainId,\n gasFeeFlows: this.gasFeeFlows,\n getGasFeeControllerEstimates: this.getGasFeeEstimates,\n getProvider: (chainId, networkClientId) =>\n this.#multichainTrackingHelper.getProvider({\n networkClientId,\n chainId,\n }),\n getTransactions: () => this.state.transactions,\n layer1GasFeeFlows: this.layer1GasFeeFlows,\n onStateChange: (listener) => {\n this.messagingSystem.subscribe(\n 'TransactionController:stateChange',\n listener,\n );\n },\n });\n\n gasFeePoller.hub.on(\n 'transaction-updated',\n this.#onGasFeePollerTransactionUpdate.bind(this),\n );\n\n // when transactionsController state changes\n // check for pending transactions and start polling if there are any\n this.messagingSystem.subscribe(\n 'TransactionController:stateChange',\n this.#checkForPendingTransactionAndStartPolling,\n );\n\n // TODO once v2 is merged make sure this only runs when\n // selectedNetworkClientId changes\n onNetworkStateChange(() => {\n log('Detected network change', this.getChainId());\n this.pendingTransactionTracker.startIfPendingTransactions();\n this.onBootCleanup();\n });\n\n this.onBootCleanup();\n this.#checkForPendingTransactionAndStartPolling();\n }\n\n /**\n * Stops polling and removes listeners to prepare the controller for garbage collection.\n */\n destroy() {\n this.#stopAllTracking();\n }\n\n /**\n * Handle new method data request.\n *\n * @param fourBytePrefix - The method prefix.\n * @returns The method data object corresponding to the given signature prefix.\n */\n async handleMethodData(fourBytePrefix: string): Promise<MethodData> {\n const releaseLock = await this.mutex.acquire();\n try {\n const { methodData } = this.state;\n const knownMethod = Object.keys(methodData).find(\n (knownFourBytePrefix) => fourBytePrefix === knownFourBytePrefix,\n );\n if (knownMethod) {\n return methodData[fourBytePrefix];\n }\n const registry = await this.registryLookup(fourBytePrefix);\n this.update((state) => {\n state.methodData[fourBytePrefix] = registry;\n });\n return registry;\n } finally {\n releaseLock();\n }\n }\n\n /**\n * Add a new unapproved transaction to state. Parameters will be validated, a\n * unique transaction id will be generated, and gas and gasPrice will be calculated\n * if not provided. If A `<tx.id>:unapproved` hub event will be emitted once added.\n *\n * @param txParams - Standard parameters for an Ethereum transaction.\n * @param opts - Additional options to control how the transaction is added.\n * @param opts.actionId - Unique ID to prevent duplicate requests.\n * @param opts.deviceConfirmedOn - An enum to indicate what device confirmed the transaction.\n * @param opts.method - RPC method that requested the transaction.\n * @param opts.origin - The origin of the transaction request, such as a dApp hostname.\n * @param opts.requireApproval - Whether the transaction requires approval by the user, defaults to true unless explicitly disabled.\n * @param opts.securityAlertResponse - Response from security validator.\n * @param opts.sendFlowHistory - The sendFlowHistory entries to add.\n * @param opts.type - Type of transaction to add, such as 'cancel' or 'swap'.\n * @param opts.swaps - Options for swaps transactions.\n * @param opts.swaps.hasApproveTx - Whether the transaction has an approval transaction.\n * @param opts.swaps.meta - Metadata for swap transaction.\n * @param opts.networkClientId - The id of the network client for this transaction.\n * @param opts.traceContext - The parent context for any new traces.\n * @returns Object containing a promise resolving to the transaction hash if approved.\n */\n async addTransaction(\n txParams: TransactionParams,\n {\n actionId,\n deviceConfirmedOn,\n method,\n origin,\n requireApproval,\n securityAlertResponse,\n sendFlowHistory,\n swaps = {},\n traceContext,\n type,\n networkClientId: requestNetworkClientId,\n }: {\n actionId?: string;\n deviceConfirmedOn?: WalletDevice;\n method?: string;\n origin?: string;\n requireApproval?: boolean | undefined;\n securityAlertResponse?: SecurityAlertResponse;\n sendFlowHistory?: SendFlowHistoryEntry[];\n swaps?: {\n hasApproveTx?: boolean;\n meta?: Partial<TransactionMeta>;\n };\n traceContext?: unknown;\n type?: TransactionType;\n networkClientId?: NetworkClientId;\n } = {},\n ): Promise<Result> {\n log('Adding transaction', txParams);\n\n txParams = normalizeTransactionParams(txParams);\n if (\n requestNetworkClientId &&\n !this.#multichainTrackingHelper.has(requestNetworkClientId)\n ) {\n throw new Error(\n 'The networkClientId for this transaction could not be found',\n );\n }\n\n const networkClientId =\n requestNetworkClientId ?? this.#getGlobalNetworkClientId();\n\n const isEIP1559Compatible = await this.getEIP1559Compatibility(\n networkClientId,\n );\n\n validateTxParams(txParams, isEIP1559Compatible);\n\n if (origin && this.getPermittedAccounts) {\n await validateTransactionOrigin(\n await this.getPermittedAccounts(origin),\n this.#getSelectedAccount().address,\n txParams.from,\n origin,\n );\n }\n\n const dappSuggestedGasFees = this.generateDappSuggestedGasFees(\n txParams,\n origin,\n );\n\n const chainId = this.getChainId(networkClientId);\n const ethQuery = this.#multichainTrackingHelper.getEthQuery({\n networkClientId,\n chainId,\n });\n\n const transactionType =\n type ?? (await determineTransactionType(txParams, ethQuery)).type;\n\n const existingTransactionMeta = this.getTransactionWithActionId(actionId);\n\n // If a request to add a transaction with the same actionId is submitted again, a new transaction will not be created for it.\n let addedTransactionMeta = existingTransactionMeta\n ? cloneDeep(existingTransactionMeta)\n : {\n // Add actionId to txMeta to check if same actionId is seen again\n actionId,\n chainId,\n dappSuggestedGasFees,\n deviceConfirmedOn,\n id: random(),\n origin,\n securityAlertResponse,\n status: TransactionStatus.unapproved as const,\n time: Date.now(),\n txParams,\n userEditedGasLimit: false,\n verifiedOnBlockchain: false,\n type: transactionType,\n networkClientId,\n };\n\n await this.#trace(\n { name: 'Estimate Gas Properties', parentContext: traceContext },\n (context) =>\n this.updateGasProperties(addedTransactionMeta, {\n traceContext: context,\n }),\n );\n\n // Checks if a transaction already exists with a given actionId\n if (!existingTransactionMeta) {\n // Set security provider response\n if (method && this.securityProviderRequest) {\n const securityProviderResponse = await this.securityProviderRequest(\n addedTransactionMeta,\n method,\n );\n addedTransactionMeta.securityProviderResponse =\n securityProviderResponse;\n }\n\n if (!this.isSendFlowHistoryDisabled) {\n addedTransactionMeta.sendFlowHistory = sendFlowHistory ?? [];\n }\n // Initial history push\n if (!this.isHistoryDisabled) {\n addedTransactionMeta = addInitialHistorySnapshot(addedTransactionMeta);\n }\n\n addedTransactionMeta = updateSwapsTransaction(\n addedTransactionMeta,\n transactionType,\n swaps,\n {\n isSwapsDisabled: this.isSwapsDisabled,\n cancelTransaction: this.cancelTransaction.bind(this),\n messenger: this.messagingSystem,\n },\n );\n\n this.addMetadata(addedTransactionMeta);\n\n if (requireApproval !== false) {\n this.#updateSimulationData(addedTransactionMeta, {\n traceContext,\n }).catch((error) => {\n log('Error while updating simulation data', error);\n throw error;\n });\n } else {\n log('Skipping simulation as approval not required');\n }\n\n this.messagingSystem.publish(\n `${controllerName}:unapprovedTransactionAdded`,\n addedTransactionMeta,\n );\n }\n\n return {\n result: this.processApproval(addedTransactionMeta, {\n isExisting: Boolean(existingTransactionMeta),\n requireApproval,\n actionId,\n traceContext,\n }),\n transactionMeta: addedTransactionMeta,\n };\n }\n\n startIncomingTransactionPolling(networkClientIds: NetworkClientId[] = []) {\n if (networkClientIds.length === 0) {\n this.incomingTransactionHelper.start();\n return;\n }\n this.#multichainTrackingHelper.startIncomingTransactionPolling(\n networkClientIds,\n );\n }\n\n stopIncomingTransactionPolling(networkClientIds: NetworkClientId[] = []) {\n if (networkClientIds.length === 0) {\n this.incomingTransactionHelper.stop();\n return;\n }\n this.#multichainTrackingHelper.stopIncomingTransactionPolling(\n networkClientIds,\n );\n }\n\n stopAllIncomingTransactionPolling() {\n this.incomingTransactionHelper.stop();\n this.#multichainTrackingHelper.stopAllIncomingTransactionPolling();\n }\n\n async updateIncomingTransactions(networkClientIds: NetworkClientId[] = []) {\n if (networkClientIds.length === 0) {\n await this.incomingTransactionHelper.update();\n return;\n }\n await this.#multichainTrackingHelper.updateIncomingTransactions(\n networkClientIds,\n );\n }\n\n /**\n * Attempts to cancel a transaction based on its ID by setting its status to \"rejected\"\n * and emitting a `<tx.id>:finished` hub event.\n *\n * @param transactionId - The ID of the transaction to cancel.\n * @param gasValues - The gas values to use for the cancellation transaction.\n * @param options - The options for the cancellation transaction.\n * @param options.actionId - Unique ID to prevent duplicate requests.\n * @param options.estimatedBaseFee - The estimated base fee of the transaction.\n */\n async stopTransaction(\n transactionId: string,\n gasValues?: GasPriceValue | FeeMarketEIP1559Values,\n {\n estimatedBaseFee,\n actionId,\n }: { estimatedBaseFee?: string; actionId?: string } = {},\n ) {\n return await this.#retryTransaction({\n actionId,\n estimatedBaseFee,\n gasValues,\n label: 'cancel',\n rate: CANCEL_RATE,\n transactionId,\n transactionType: TransactionType.cancel,\n prepareTransactionParams: (txParams) => {\n delete txParams.data;\n txParams.to = txParams.from;\n txParams.value = '0x0';\n },\n afterSubmit: (newTransactionMeta) => {\n this.messagingSystem.publish(\n `${controllerName}:transactionFinished`,\n newTransactionMeta,\n );\n\n this.#internalEvents.emit(\n `${newTransactionMeta.id}:finished`,\n newTransactionMeta,\n );\n },\n });\n }\n\n /**\n * Attempts to speed up a transaction increasing transaction gasPrice by ten percent.\n *\n * @param transactionId - The ID of the transaction to speed up.\n * @param gasValues - The gas values to use for the speed up transaction.\n * @param options - The options for the speed up transaction.\n * @param options.actionId - Unique ID to prevent duplicate requests\n * @param options.estimatedBaseFee - The estimated base fee of the transaction.\n */\n async speedUpTransaction(\n transactionId: string,\n gasValues?: GasPriceValue | FeeMarketEIP1559Values,\n {\n actionId,\n estimatedBaseFee,\n }: { actionId?: string; estimatedBaseFee?: string } = {},\n ) {\n return await this.#retryTransaction({\n actionId,\n estimatedBaseFee,\n gasValues,\n label: 'speed up',\n rate: SPEED_UP_RATE,\n transactionId,\n transactionType: TransactionType.retry,\n afterSubmit: (newTransactionMeta) => {\n this.messagingSystem.publish(\n `${controllerName}:speedupTransactionAdded`,\n newTransactionMeta,\n );\n },\n });\n }\n\n async #retryTransaction({\n actionId,\n afterSubmit,\n estimatedBaseFee,\n gasValues,\n label,\n prepareTransactionParams,\n rate,\n transactionId,\n transactionType,\n }: {\n actionId?: string;\n afterSubmit?: (transactionMeta: TransactionMeta) => void;\n estimatedBaseFee?: string;\n gasValues?: GasPriceValue | FeeMarketEIP1559Values;\n label: string;\n prepareTransactionParams?: (txParams: TransactionParams) => void;\n rate: number;\n transactionId: string;\n transactionType: TransactionType;\n }) {\n // If transaction is found for same action id, do not create a new transaction.\n if (this.getTransactionWithActionId(actionId)) {\n return;\n }\n\n if (gasValues) {\n // Not good practice to reassign a parameter but temporarily avoiding a larger refactor.\n gasValues = normalizeGasFeeValues(gasValues);\n validateGasValues(gasValues);\n }\n\n log(`Creating ${label} transaction`, transactionId, gasValues);\n\n const transactionMeta = this.getTransaction(transactionId);\n /* istanbul ignore next */\n if (!transactionMeta) {\n return;\n }\n\n /* istanbul ignore next */\n if (!this.sign) {\n throw new Error('No sign method defined.');\n }\n\n const newTxParams: TransactionParams =\n getTransactionParamsWithIncreasedGasFee(\n transactionMeta.txParams,\n rate,\n gasValues,\n );\n\n prepareTransactionParams?.(newTxParams);\n\n const unsignedEthTx = this.prepareUnsignedEthTx(\n transactionMeta.chainId,\n newTxParams,\n );\n\n const signedTx = await this.sign(\n unsignedEthTx,\n transactionMeta.txParams.from,\n );\n\n const transactionMetaWithRsv = this.updateTransactionMetaRSV(\n transactionMeta,\n signedTx,\n );\n\n const rawTx = bufferToHex(signedTx.serialize());\n const newFee = newTxParams.maxFeePerGas ?? newTxParams.gasPrice;\n\n const oldFee = newTxParams.maxFeePerGas\n ? transactionMetaWithRsv.txParams.maxFeePerGas\n : transactionMetaWithRsv.txParams.gasPrice;\n\n log(`Submitting ${label} transaction`, {\n oldFee,\n newFee,\n txParams: newTxParams,\n });\n\n const ethQuery = this.#multichainTrackingHelper.getEthQuery({\n networkClientId: transactionMeta.networkClientId,\n chainId: transactionMeta.chainId,\n });\n\n const newTransactionMeta = {\n ...transactionMetaWithRsv,\n actionId,\n estimatedBaseFee,\n id: random(),\n originalGasEstimate: transactionMeta.txParams.gas,\n originalType: transactionMeta.type,\n rawTx,\n time: Date.now(),\n txParams: newTxParams,\n type: transactionType,\n };\n\n const hash = await this.publishTransactionForRetry(ethQuery, {\n ...newTransactionMeta,\n origin: label,\n });\n\n newTransactionMeta.hash = hash;\n\n this.addMetadata(newTransactionMeta);\n\n // speedUpTransaction has no approval request, so we assume the user has already approved the transaction\n this.messagingSystem.publish(`${controllerName}:transactionApproved`, {\n transactionMeta: newTransactionMeta,\n actionId,\n });\n\n this.messagingSystem.publish(`${controllerName}:transactionSubmitted`, {\n transactionMeta: newTransactionMeta,\n actionId,\n });\n\n afterSubmit?.(newTransactionMeta);\n }\n\n /**\n * Estimates required gas for a given transaction.\n *\n * @param transaction - The transaction to estimate gas for.\n * @param networkClientId - The network client id to use for the estimate.\n * @returns The gas and gas price.\n */\n async estimateGas(\n transaction: TransactionParams,\n networkClientId?: NetworkClientId,\n ) {\n const ethQuery = this.#multichainTrackingHelper.getEthQuery({\n networkClientId,\n });\n const { estimatedGas, simulationFails } = await estimateGas(\n transaction,\n ethQuery,\n );\n\n return { gas: estimatedGas, simulationFails };\n }\n\n /**\n * Estimates required gas for a given transaction and add additional gas buffer with the given multiplier.\n *\n * @param transaction - The transaction params to estimate gas for.\n * @param multiplier - The multiplier to use for the gas buffer.\n * @param networkClientId - The network client id to use for the estimate.\n */\n async estimateGasBuffered(\n transaction: TransactionParams,\n multiplier: number,\n networkClientId?: NetworkClientId,\n ) {\n const ethQuery = this.#multichainTrackingHelper.getEthQuery({\n networkClientId,\n });\n const { blockGasLimit, estimatedGas, simulationFails } = await estimateGas(\n transaction,\n ethQuery,\n );\n\n const gas = addGasBuffer(estimatedGas, blockGasLimit, multiplier);\n\n return {\n gas,\n simulationFails,\n };\n }\n\n /**\n * Updates an existing transaction in state.\n *\n * @param transactionMeta - The new transaction to store in state.\n * @param note - A note or update reason to include in the transaction history.\n */\n updateTransaction(transactionMeta: TransactionMeta, note: string) {\n const { id: transactionId } = transactionMeta;\n\n this.#updateTransactionInternal({ transactionId, note }, () => ({\n ...transactionMeta,\n }));\n }\n\n /**\n * Update the security alert response for a transaction.\n *\n * @param transactionId - ID of the transaction.\n * @param securityAlertResponse - The new security alert response for the transaction.\n */\n updateSecurityAlertResponse(\n transactionId: string,\n securityAlertResponse: SecurityAlertResponse,\n ) {\n if (!securityAlertResponse) {\n throw new Error(\n 'updateSecurityAlertResponse: securityAlertResponse should not be null',\n );\n }\n const transactionMeta = this.getTransaction(transactionId);\n if (!transactionMeta) {\n throw new Error(\n `Cannot update security alert response as no transaction metadata found`,\n );\n }\n const updatedTransactionMeta = {\n ...transactionMeta,\n securityAlertResponse,\n };\n this.updateTransaction(\n updatedTransactionMeta,\n `${controllerName}:updatesecurityAlertResponse - securityAlertResponse updated`,\n );\n }\n\n /**\n * Removes all transactions from state, optionally based on the current network.\n *\n * @param ignoreNetwork - Determines whether to wipe all transactions, or just those on the\n * current network. If `true`, all transactions are wiped.\n * @param address - If specified, only transactions originating from this address will be\n * wiped on current network.\n */\n wipeTransactions(ignoreNetwork?: boolean, address?: string) {\n /* istanbul ignore next */\n if (ignoreNetwork && !address) {\n this.update((state) => {\n state.transactions = [];\n });\n return;\n }\n const currentChainId = this.getChainId();\n const newTransactions = this.state.transactions.filter(\n ({ chainId, txParams }) => {\n const isMatchingNetwork = ignoreNetwork || chainId === currentChainId;\n\n if (!isMatchingNetwork) {\n return true;\n }\n\n const isMatchingAddress =\n !address || txParams.from?.toLowerCase() === address.toLowerCase();\n\n return !isMatchingAddress;\n },\n );\n\n this.update((state) => {\n state.transactions = this.trimTransactionsForState(newTransactions);\n });\n }\n\n /**\n * Adds external provided transaction to state as confirmed transaction.\n *\n * @param transactionMeta - TransactionMeta to add transactions.\n * @param transactionReceipt - TransactionReceipt of the external transaction.\n * @param baseFeePerGas - Base fee per gas of the external transaction.\n */\n async confirmExternalTransaction(\n transactionMeta: TransactionMeta,\n transactionReceipt: TransactionReceipt,\n baseFeePerGas: Hex,\n ) {\n // Run validation and add external transaction to state.\n const newTransactionMeta = this.addExternalTransaction(transactionMeta);\n\n try {\n const transactionId = newTransactionMeta.id;\n\n // Make sure status is confirmed and define gasUsed as in receipt.\n const updatedTransactionMeta = {\n ...newTransactionMeta,\n status: TransactionStatus.confirmed as const,\n txReceipt: transactionReceipt,\n };\n if (baseFeePerGas) {\n updatedTransactionMeta.baseFeePerGas = baseFeePerGas;\n }\n\n // Update same nonce local transactions as dropped and define replacedBy properties.\n this.markNonceDuplicatesDropped(transactionId);\n\n // Update external provided transaction with updated gas values and confirmed status.\n this.updateTransaction(\n updatedTransactionMeta,\n `${controllerName}:confirmExternalTransaction - Add external transaction`,\n );\n this.onTransactionStatusChange(updatedTransactionMeta);\n\n // Intentional given potential duration of process.\n this.updatePostBalance(updatedTransactionMeta).catch((error) => {\n log('Error while updating post balance', error);\n throw error;\n });\n\n this.messagingSystem.publish(\n `${controllerName}:transactionConfirmed`,\n updatedTransactionMeta,\n );\n } catch (error) {\n console.error('Failed to confirm external transaction', error);\n }\n }\n\n /**\n * Append new send flow history to a transaction.\n *\n * @param transactionID - The ID of the transaction to update.\n * @param currentSendFlowHistoryLength - The length of the current sendFlowHistory array.\n * @param sendFlowHistoryToAdd - The sendFlowHistory entries to add.\n * @returns The updated transactionMeta.\n */\n updateTransactionSendFlowHistory(\n transactionID: string,\n currentSendFlowHistoryLength: number,\n sendFlowHistoryToAdd: SendFlowHistoryEntry[],\n ): TransactionMeta {\n if (this.isSendFlowHistoryDisabled) {\n throw new Error(\n 'Send flow history is disabled for the current transaction controller',\n );\n }\n\n const transactionMeta = this.getTransaction(transactionID);\n\n if (!transactionMeta) {\n throw new Error(\n `Cannot update send flow history as no transaction metadata found`,\n );\n }\n\n validateIfTransactionUnapproved(\n transactionMeta,\n 'updateTransactionSendFlowHistory',\n );\n\n const sendFlowHistory = transactionMeta.sendFlowHistory ?? [];\n if (currentSendFlowHistoryLength === sendFlowHistory.length) {\n const updatedTransactionMeta = {\n ...transactionMeta,\n sendFlowHistory: [...sendFlowHistory, ...sendFlowHistoryToAdd],\n };\n this.updateTransaction(\n updatedTransactionMeta,\n `${controllerName}:updateTransactionSendFlowHistory - sendFlowHistory updated`,\n );\n }\n\n return this.getTransaction(transactionID) as TransactionMeta;\n }\n\n /**\n * Update the gas values of a transaction.\n *\n * @param transactionId - The ID of the transaction to update.\n * @param gasValues - Gas values to update.\n * @param gasValues.gas - Same as transaction.gasLimit.\n * @param gasValues.gasLimit - Maxmimum number of units of gas to use for this transaction.\n * @param gasValues.gasPrice - Price per gas for legacy transactions.\n * @param gasValues.maxPriorityFeePerGas - Maximum amount per gas to give to validator as incentive.\n * @param gasValues.maxFeePerGas - Maximum amount per gas to pay for the transaction, including the priority fee.\n * @param gasValues.estimateUsed - Which estimate level was used.\n * @param gasValues.estimateSuggested - Which estimate level that the API suggested.\n * @param gasValues.defaultGasEstimates - The default estimate for gas.\n * @param gasValues.originalGasEstimate - Original estimate for gas.\n * @param gasValues.userEditedGasLimit - The gas limit supplied by user.\n * @param gasValues.userFeeLevel - Estimate level user selected.\n * @returns The updated transactionMeta.\n */\n updateTransactionGasFees(\n transactionId: string,\n {\n defaultGasEstimates,\n estimateUsed,\n estimateSuggested,\n gas,\n gasLimit,\n gasPrice,\n maxPriorityFeePerGas,\n maxFeePerGas,\n originalGasEstimate,\n userEditedGasLimit,\n userFeeLevel,\n }: {\n defaultGasEstimates?: string;\n estimateUsed?: string;\n estimateSuggested?: string;\n gas?: string;\n gasLimit?: string;\n gasPrice?: string;\n maxPriorityFeePerGas?: string;\n maxFeePerGas?: string;\n originalGasEstimate?: string;\n userEditedGasLimit?: boolean;\n userFeeLevel?: string;\n },\n ): TransactionMeta {\n const transactionMeta = this.getTransaction(transactionId);\n\n if (!transactionMeta) {\n throw new Error(\n `Cannot update transaction as no transaction metadata found`,\n );\n }\n\n validateIfTransactionUnapproved(\n transactionMeta,\n 'updateTransactionGasFees',\n );\n\n let transactionGasFees = {\n txParams: {\n gas,\n gasLimit,\n gasPrice,\n maxPriorityFeePerGas,\n maxFeePerGas,\n },\n defaultGasEstimates,\n estimateUsed,\n estimateSuggested,\n originalGasEstimate,\n userEditedGasLimit,\n userFeeLevel,\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any;\n\n // only update what is defined\n transactionGasFees.txParams = pickBy(transactionGasFees.txParams);\n transactionGasFees = pickBy(transactionGasFees);\n\n // merge updated gas values with existing transaction meta\n const updatedMeta = merge({}, transactionMeta, transactionGasFees);\n\n this.updateTransaction(\n updatedMeta,\n `${controllerName}:updateTransactionGasFees - gas values updated`,\n );\n\n return this.getTransaction(transactionId) as TransactionMeta;\n }\n\n /**\n * Update the previous gas values of a transaction.\n *\n * @param transactionId - The ID of the transaction to update.\n * @param previousGas - Previous gas values to update.\n * @param previousGas.gasLimit - Maxmimum number of units of gas to use for this transaction.\n * @param previousGas.maxFeePerGas - Maximum amount per gas to pay for the transaction, including the priority fee.\n * @param previousGas.maxPriorityFeePerGas - Maximum amount per gas to give to validator as incentive.\n * @returns The updated transactionMeta.\n */\n updatePreviousGasParams(\n transactionId: string,\n {\n gasLimit,\n maxFeePerGas,\n maxPriorityFeePerGas,\n }: {\n gasLimit?: string;\n maxFeePerGas?: string;\n maxPriorityFeePerGas?: string;\n },\n ): TransactionMeta {\n const transactionMeta = this.getTransaction(transactionId);\n\n if (!transactionMeta) {\n throw new Error(\n `Cannot update transaction as no transaction metadata found`,\n );\n }\n\n validateIfTransactionUnapproved(transactionMeta, 'updatePreviousGasParams');\n\n const transactionPreviousGas = {\n previousGas: {\n gasLimit,\n maxFeePerGas,\n maxPriorityFeePerGas,\n },\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any;\n\n // only update what is defined\n transactionPreviousGas.previousGas = pickBy(\n transactionPreviousGas.previousGas,\n );\n\n // merge updated previous gas values with existing transaction meta\n const updatedMeta = merge({}, transactionMeta, transactionPreviousGas);\n\n this.updateTransaction(\n updatedMeta,\n `${controllerName}:updatePreviousGasParams - Previous gas values updated`,\n );\n\n return this.getTransaction(transactionId) as TransactionMeta;\n }\n\n async getNonceLock(\n address: string,\n networkClientId?: NetworkClientId,\n ): Promise<NonceLock> {\n return this.#multichainTrackingHelper.getNonceLock(\n address,\n networkClientId,\n );\n }\n\n /**\n * Updates the editable parameters of a transaction.\n *\n * @param txId - The ID of the transaction to update.\n * @param params - The editable parameters to update.\n * @param params.data - Data to pass with the transaction.\n * @param params.gas - Maximum number of units of gas to use for the transaction.\n * @param params.gasPrice - Price per gas for legacy transactions.\n * @param params.from - Address to send the transaction from.\n * @param params.to - Address to send the transaction to.\n * @param params.value - Value associated with the transaction.\n * @returns The updated transaction metadata.\n */\n async updateEditableParams(\n txId: string,\n {\n data,\n gas,\n gasPrice,\n from,\n to,\n value,\n }: {\n data?: string;\n gas?: string;\n gasPrice?: string;\n from?: string;\n to?: string;\n value?: string;\n },\n ) {\n const transactionMeta = this.getTransaction(txId);\n if (!transactionMeta) {\n throw new Error(\n `Cannot update editable params as no transaction metadata found`,\n );\n }\n\n validateIfTransactionUnapproved(transactionMeta, 'updateEditableParams');\n\n const editableParams = {\n txParams: {\n data,\n from,\n to,\n value,\n gas,\n gasPrice,\n },\n } as Partial<TransactionMeta>;\n\n editableParams.txParams = pickBy(\n editableParams.txParams,\n ) as TransactionParams;\n\n const updatedTransaction = merge({}, transactionMeta, editableParams);\n const provider = this.#multichainTrackingHelper.getProvider({\n chainId: transactionMeta.chainId,\n networkClientId: transactionMeta.networkClientId,\n });\n const ethQuery = new EthQuery(provider);\n const { type } = await determineTransactionType(\n updatedTransaction.txParams,\n ethQuery,\n );\n updatedTransaction.type = type;\n\n await updateTransactionLayer1GasFee({\n layer1GasFeeFlows: this.layer1GasFeeFlows,\n provider,\n transactionMeta: updatedTransaction,\n });\n\n this.updateTransaction(\n updatedTransaction,\n `Update Editable Params for ${txId}`,\n );\n return this.getTransaction(txId);\n }\n\n /**\n * Signs and returns the raw transaction data for provided transaction params list.\n *\n * @param listOfTxParams - The list of transaction params to approve.\n * @param opts - Options bag.\n * @param opts.hasNonce - Whether the transactions already have a nonce.\n * @returns The raw transactions.\n */\n async approveTransactionsWithSameNonce(\n listOfTxParams: (TransactionParams & { chainId: Hex })[] = [],\n { hasNonce }: { hasNonce?: boolean } = {},\n ): Promise<string | string[]> {\n log('Approving transactions with same nonce', {\n transactions: listOfTxParams,\n });\n\n if (listOfTxParams.length === 0) {\n return '';\n }\n\n const initialTx = listOfTxParams[0];\n const common = this.getCommonConfiguration(initialTx.chainId);\n\n // We need to ensure we get the nonce using the the NonceTracker on the chain matching\n // the txParams. In this context we only have chainId available to us, but the\n // NonceTrackers are keyed by networkClientId. To workaround this, we attempt to find\n // a networkClientId that matches the chainId. As a fallback, the globally selected\n // network's NonceTracker will be used instead.\n let networkClientId: NetworkClientId | undefined;\n try {\n networkClientId = this.messagingSystem.call(\n `NetworkController:findNetworkClientIdByChainId`,\n initialTx.chainId,\n );\n } catch (err) {\n log('failed to find networkClientId from chainId', err);\n }\n\n const initialTxAsEthTx = TransactionFactory.fromTxData(initialTx, {\n common,\n });\n const initialTxAsSerializedHex = bufferToHex(initialTxAsEthTx.serialize());\n\n if (this.approvingTransactionIds.has(initialTxAsSerializedHex)) {\n return '';\n }\n this.approvingTransactionIds.add(initialTxAsSerializedHex);\n\n let rawTransactions, nonceLock;\n try {\n // TODO: we should add a check to verify that all transactions have the same from address\n const fromAddress = initialTx.from;\n const requiresNonce = hasNonce !== true;\n\n nonceLock = requiresNonce\n ? await this.getNonceLock(fromAddress, networkClientId)\n : undefined;\n\n const nonce = nonceLock\n ? add0x(nonceLock.nextNonce.toString(16))\n : initialTx.nonce;\n\n if (nonceLock) {\n log('Using nonce from nonce tracker', nonce, nonceLock.nonceDetails);\n }\n\n rawTransactions = await Promise.all(\n listOfTxParams.map((txParams) => {\n txParams.nonce = nonce;\n return this.signExternalTransaction(txParams.chainId, txParams);\n }),\n );\n } catch (err) {\n log('Error while signing transactions with same nonce', err);\n // Must set transaction to submitted/failed before releasing lock\n // continue with error chain\n throw err;\n } finally {\n nonceLock?.releaseLock();\n this.approvingTransactionIds.delete(initialTxAsSerializedHex);\n }\n return rawTransactions;\n }\n\n /**\n * Update a custodial transaction.\n *\n * @param transactionId - The ID of the transaction to update.\n * @param options - The custodial transaction options to update.\n * @param options.errorMessage - The error message to be assigned in case transaction status update to failed.\n * @param options.hash - The new hash value to be assigned.\n * @param options.status - The new status value to be assigned.\n */\n updateCustodialTransaction(\n transactionId: string,\n {\n errorMessage,\n hash,\n status,\n }: {\n errorMessage?: string;\n hash?: string;\n status?: TransactionStatus;\n },\n ) {\n const transactionMeta = this.getTransaction(transactionId);\n\n if (!transactionMeta) {\n throw new Error(\n `Cannot update custodial transaction as no transaction metadata found`,\n );\n }\n\n if (!transactionMeta.custodyId) {\n throw new Error('Transaction must be a custodian transaction');\n }\n\n if (\n status &&\n ![\n TransactionStatus.submitted,\n TransactionStatus.signed,\n TransactionStatus.failed,\n ].includes(status)\n ) {\n throw new Error(\n `Cannot update custodial transaction with status: ${status}`,\n );\n }\n\n const updatedTransactionMeta = merge(\n {},\n transactionMeta,\n pickBy({ hash, status }),\n ) as TransactionMeta;\n\n if (updatedTransactionMeta.status === TransactionStatus.submitted) {\n updatedTransactionMeta.submittedTime = new Date().getTime();\n }\n\n if (updatedTransactionMeta.status === TransactionStatus.failed) {\n updatedTransactionMeta.error = normalizeTxError(new Error(errorMessage));\n }\n\n this.updateTransaction(\n updatedTransactionMeta,\n `${controllerName}:updateCustodialTransaction - Custodial transaction updated`,\n );\n\n if (\n [TransactionStatus.submitted, TransactionStatus.failed].includes(\n status as TransactionStatus,\n )\n ) {\n this.messagingSystem.publish(\n `${controllerName}:transactionFinished`,\n updatedTransactionMeta,\n );\n this.#internalEvents.emit(\n `${updatedTransactionMeta.id}:finished`,\n updatedTransactionMeta,\n );\n }\n }\n\n /**\n * Search transaction metadata for matching entries.\n *\n * @param opts - Options bag.\n * @param opts.searchCriteria - An object containing values or functions for transaction properties to filter transactions with.\n * @param opts.initialList - The transactions to search. Defaults to the current state.\n * @param opts.filterToCurrentNetwork - Whether to filter the results to the current network. Defaults to true.\n * @param opts.limit - The maximum number of transactions to return. No limit by default.\n * @returns An array of transactions matching the provided options.\n */\n getTransactions({\n searchCriteria = {},\n initialList,\n filterToCurrentNetwork = true,\n limit,\n }: {\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n searchCriteria?: any;\n initialList?: TransactionMeta[];\n filterToCurrentNetwork?: boolean;\n limit?: number;\n } = {}): TransactionMeta[] {\n const chainId = this.getChainId();\n // searchCriteria is an object that might have values that aren't predicate\n // methods. When providing any other value type (string, number, etc), we\n // consider this shorthand for \"check the value at key for strict equality\n // with the provided value\". To conform this object to be only methods, we\n // mapValues (lodash) such that every value on the object is a method that\n // returns a boolean.\n const predicateMethods = mapValues(searchCriteria, (predicate) => {\n return typeof predicate === 'function'\n ? predicate\n : // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (v: any) => v === predicate;\n });\n\n const transactionsToFilter = initialList ?? this.state.transactions;\n\n // Combine sortBy and pickBy to transform our state object into an array of\n // matching transactions that are sorted by time.\n const filteredTransactions = sortBy(\n pickBy(transactionsToFilter, (transaction) => {\n if (filterToCurrentNetwork && transaction.chainId !== chainId) {\n return false;\n }\n // iterate over the predicateMethods keys to check if the transaction\n // matches the searchCriteria\n for (const [key, predicate] of Object.entries(predicateMethods)) {\n // We return false early as soon as we know that one of the specified\n // search criteria do not match the transaction. This prevents\n // needlessly checking all criteria when we already know the criteria\n // are not fully satisfied. We check both txParams and the base\n // object as predicate keys can be either.\n if (key in transaction.txParams) {\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (predicate((transaction.txParams as any)[key]) === false) {\n return false;\n }\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } else if (predicate((transaction as any)[key]) === false) {\n return false;\n }\n }\n\n return true;\n }),\n 'time',\n );\n if (limit !== undefined) {\n // We need to have all transactions of a given nonce in order to display\n // necessary details in the UI. We use the size of this set to determine\n // whether we have reached the limit provided, thus ensuring that all\n // transactions of nonces we include will be sent to the UI.\n const nonces = new Set();\n const txs = [];\n // By default, the transaction list we filter from is sorted by time ASC.\n // To ensure that filtered results prefers the newest transactions we\n // iterate from right to left, inserting transactions into front of a new\n // array. The original order is preserved, but we ensure that newest txs\n // are preferred.\n for (let i = filteredTransactions.length - 1; i > -1; i--) {\n const txMeta = filteredTransactions[i];\n const { nonce } = txMeta.txParams;\n if (!nonces.has(nonce)) {\n if (nonces.size < limit) {\n nonces.add(nonce);\n } else {\n continue;\n }\n }\n // Push transaction into the beginning of our array to ensure the\n // original order is preserved.\n txs.unshift(txMeta);\n }\n return txs;\n }\n return filteredTransactions;\n }\n\n async estimateGasFee({\n transactionParams,\n chainId,\n networkClientId: requestNetworkClientId,\n }: {\n transactionParams: TransactionParams;\n chainId?: Hex;\n networkClientId?: NetworkClientId;\n }): Promise<GasFeeFlowResponse> {\n const networkClientId = this.#getNetworkClientId({\n networkClientId: requestNetworkClientId,\n chainId,\n });\n\n const transactionMeta = {\n txParams: transactionParams,\n chainId,\n networkClientId,\n } as TransactionMeta;\n\n // Guaranteed as the default gas fee flow matches all transactions.\n const gasFeeFlow = getGasFeeFlow(\n transactionMeta,\n this.gasFeeFlows,\n ) as GasFeeFlow;\n\n const ethQuery = this.#multichainTrackingHelper.getEthQuery({\n networkClientId,\n chainId,\n });\n\n const gasFeeControllerData = await this.getGasFeeEstimates({\n networkClientId,\n });\n\n return gasFeeFlow.getGasFees({\n ethQuery,\n gasFeeControllerData,\n transactionMeta,\n });\n }\n\n /**\n * Determine the layer 1 gas fee for the given transaction parameters.\n *\n * @param request - The request object.\n * @param request.transactionParams - The transaction parameters to estimate the layer 1 gas fee for.\n * @param request.chainId - The ID of the chain where the transaction will be executed.\n * @param request.networkClientId - The ID of a specific network client to process the transaction.\n */\n async getLayer1GasFee({\n transactionParams,\n chainId,\n networkClientId,\n }: {\n transactionParams: TransactionParams;\n chainId?: Hex;\n networkClientId?: NetworkClientId;\n }): Promise<Hex | undefined> {\n const provider = this.#multichainTrackingHelper.getProvider({\n networkClientId,\n chainId,\n });\n\n return await getTransactionLayer1GasFee({\n layer1GasFeeFlows: this.layer1GasFeeFlows,\n provider,\n transactionMeta: {\n txParams: transactionParams,\n chainId,\n } as TransactionMeta,\n });\n }\n\n private async signExternalTransaction(\n chainId: Hex,\n transactionParams: TransactionParams,\n ): Promise<string> {\n if (!this.sign) {\n throw new Error('No sign method defined.');\n }\n\n const normalizedTransactionParams =\n normalizeTransactionParams(transactionParams);\n const type = isEIP1559Transaction(normalizedTransactionParams)\n ? TransactionEnvelopeType.feeMarket\n : TransactionEnvelopeType.legacy;\n const updatedTransactionParams = {\n ...normalizedTransactionParams,\n type,\n gasLimit: normalizedTransactionParams.gas,\n chainId,\n };\n\n const { from } = updatedTransactionParams;\n const common = this.getCommonConfiguration(chainId);\n const unsignedTransaction = TransactionFactory.fromTxData(\n updatedTransactionParams,\n { common },\n );\n const signedTransaction = await this.sign(unsignedTransaction, from);\n\n const rawTransaction = bufferToHex(signedTransaction.serialize());\n return rawTransaction;\n }\n\n /**\n * Removes unapproved transactions from state.\n */\n clearUnapprovedTransactions() {\n const transactions = this.state.transactions.filter(\n ({ status }) => status !== TransactionStatus.unapproved,\n );\n this.update((state) => {\n state.transactions = this.trimTransactionsForState(transactions);\n });\n }\n\n /**\n * Stop the signing process for a specific transaction.\n * Throws an error causing the transaction status to be set to failed.\n * @param transactionId - The ID of the transaction to stop signing.\n */\n abortTransactionSigning(transactionId: string) {\n const transactionMeta = this.getTransaction(transactionId);\n\n if (!transactionMeta) {\n throw new Error(`Cannot abort signing as no transaction metadata found`);\n }\n\n const abortCallback = this.signAbortCallbacks.get(transactionId);\n\n if (!abortCallback) {\n throw new Error(\n `Cannot abort signing as transaction is not waiting for signing`,\n );\n }\n\n abortCallback();\n\n this.signAbortCallbacks.delete(transactionId);\n }\n\n private addMetadata(transactionMeta: TransactionMeta) {\n validateTxParams(transactionMeta.txParams);\n this.update((state) => {\n state.transactions = this.trimTransactionsForState([\n ...state.transactions,\n transactionMeta,\n ]);\n });\n }\n\n private async updateGasProperties(\n transactionMeta: TransactionMeta,\n { traceContext }: { traceContext?: TraceContext } = {},\n ) {\n const isEIP1559Compatible =\n transactionMeta.txParams.type !== TransactionEnvelopeType.legacy &&\n (await this.getEIP1559Compatibility(transactionMeta.networkClientId));\n\n const { networkClientId, chainId } = transactionMeta;\n\n const isCustomNetwork = this.#isCustomNetwork(networkClientId);\n\n const ethQuery = this.#multichainTrackingHelper.getEthQuery({\n networkClientId,\n chainId,\n });\n\n const provider = this.#multichainTrackingHelper.getProvider({\n networkClientId,\n chainId,\n });\n\n await this.#trace(\n { name: 'Update Gas', parentContext: traceContext },\n async () => {\n await updateGas({\n ethQuery,\n chainId,\n isCustomNetwork,\n txMeta: transactionMeta,\n });\n },\n );\n\n await this.#trace(\n { name: 'Update Gas Fees', parentContext: traceContext },\n async () =>\n await updateGasFees({\n eip1559: isEIP1559Compatible,\n ethQuery,\n gasFeeFlows: this.gasFeeFlows,\n getGasFeeEstimates: this.getGasFeeEstimates,\n getSavedGasFees: this.getSavedGasFees.bind(this),\n txMeta: transactionMeta,\n }),\n );\n\n await this.#trace(\n { name: 'Update Layer 1 Gas Fees', parentContext: traceContext },\n async () =>\n await updateTransactionLayer1GasFee({\n layer1GasFeeFlows: this.layer1GasFeeFlows,\n provider,\n transactionMeta,\n }),\n );\n }\n\n private onBootCleanup() {\n this.clearUnapprovedTransactions();\n this.failIncompleteTransactions();\n }\n\n private failIncompleteTransactions() {\n const incompleteTransactions = this.state.transactions.filter(\n (transaction) =>\n [TransactionStatus.approved, TransactionStatus.signed].includes(\n transaction.status,\n ),\n );\n\n for (const transactionMeta of incompleteTransactions) {\n this.failTransaction(\n transactionMeta,\n new Error('Transaction incomplete at startup'),\n );\n }\n }\n\n private async processApproval(\n transactionMeta: TransactionMeta,\n {\n isExisting = false,\n requireApproval,\n shouldShowRequest = true,\n actionId,\n traceContext,\n }: {\n isExisting?: boolean;\n requireApproval?: boolean | undefined;\n shouldShowRequest?: boolean;\n actionId?: string;\n traceContext?: TraceContext;\n },\n ): Promise<string> {\n const transactionId = transactionMeta.id;\n let resultCallbacks: AcceptResultCallbacks | undefined;\n const { meta, isCompleted } = this.isTransactionCompleted(transactionId);\n const finishedPromise = isCompleted\n ? Promise.resolve(meta)\n : this.waitForTransactionFinished(transactionId);\n\n if (meta && !isExisting && !isCompleted) {\n try {\n if (requireApproval !== false) {\n const acceptResult = await this.#trace(\n { name: 'Await Approval', parentContext: traceContext },\n (context) =>\n this.requestApproval(transactionMeta, {\n shouldShowRequest,\n traceContext: context,\n }),\n );\n\n resultCallbacks = acceptResult.resultCallbacks;\n\n const approvalValue = acceptResult.value as\n | {\n txMeta?: TransactionMeta;\n }\n | undefined;\n\n const updatedTransaction = approvalValue?.txMeta;\n\n if (updatedTransaction) {\n log('Updating transaction with approval data', {\n customNonce: updatedTransaction.customNonceValue,\n params: updatedTransaction.txParams,\n });\n\n this.updateTransaction(\n updatedTransaction,\n 'TransactionController#processApproval - Updated with approval data',\n );\n }\n }\n\n const { isCompleted: isTxCompleted } =\n this.isTransactionCompleted(transactionId);\n\n if (!isTxCompleted) {\n const approvalResult = await this.approveTransaction(\n transactionId,\n traceContext,\n );\n if (\n approvalResult === ApprovalState.SkippedViaBeforePublishHook &&\n resultCallbacks\n ) {\n resultCallbacks.success();\n }\n const updatedTransactionMeta = this.getTransaction(\n transactionId,\n ) as TransactionMeta;\n this.messagingSystem.publish(\n `${controllerName}:transactionApproved`,\n {\n transactionMeta: updatedTransactionMeta,\n actionId,\n },\n );\n }\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n const { isCompleted: isTxCompleted } =\n this.isTransactionCompleted(transactionId);\n if (!isTxCompleted) {\n if (error?.code === errorCodes.provider.userRejectedRequest) {\n this.cancelTransaction(transactionId, actionId);\n\n throw providerErrors.userRejectedRequest(\n 'MetaMask Tx Signature: User denied transaction signature.',\n );\n } else {\n this.failTransaction(meta, error, actionId);\n }\n }\n }\n }\n\n const finalMeta = await finishedPromise;\n\n switch (finalMeta?.status) {\n case TransactionStatus.failed:\n resultCallbacks?.error(finalMeta.error);\n throw rpcErrors.internal(finalMeta.error.message);\n\n case TransactionStatus.submitted:\n resultCallbacks?.success();\n return finalMeta.hash as string;\n\n default:\n const internalError = rpcErrors.internal(\n `MetaMask Tx Signature: Unknown problem: ${JSON.stringify(\n finalMeta || transactionId,\n )}`,\n );\n\n resultCallbacks?.error(internalError);\n throw internalError;\n }\n }\n\n /**\n * Approves a transaction and updates it's status in state. If this is not a\n * retry transaction, a nonce will be generated. The transaction is signed\n * using the sign configuration property, then published to the blockchain.\n * A `<tx.id>:finished` hub event is fired after success or failure.\n *\n * @param transactionId - The ID of the transaction to approve.\n * @param traceContext - The parent context for any new traces.\n */\n private async approveTransaction(\n transactionId: string,\n traceContext?: unknown,\n ) {\n const cleanupTasks = new Array<() => void>();\n cleanupTasks.push(await this.mutex.acquire());\n\n let transactionMeta = this.getTransactionOrThrow(transactionId);\n\n try {\n if (!this.sign) {\n this.failTransaction(\n transactionMeta,\n new Error('No sign method defined.'),\n );\n return ApprovalState.NotApproved;\n } else if (!transactionMeta.chainId) {\n this.failTransaction(transactionMeta, new Error('No chainId defined.'));\n return ApprovalState.NotApproved;\n }\n\n if (this.approvingTransactionIds.has(transactionId)) {\n log('Skipping approval as signing in progress', transactionId);\n return ApprovalState.NotApproved;\n }\n this.approvingTransactionIds.add(transactionId);\n cleanupTasks.push(() =>\n this.approvingTransactionIds.delete(transactionId),\n );\n\n const [nonce, releaseNonce] = await getNextNonce(\n transactionMeta,\n (address: string) =>\n this.#multichainTrackingHelper.getNonceLock(\n address,\n transactionMeta.networkClientId,\n ),\n );\n\n // must set transaction to submitted/failed before releasing lock\n releaseNonce && cleanupTasks.push(releaseNonce);\n\n transactionMeta = this.#updateTransactionInternal(\n {\n transactionId,\n note: 'TransactionController#approveTransaction - Transaction approved',\n },\n (draftTxMeta) => {\n const { txParams, chainId } = draftTxMeta;\n\n draftTxMeta.status = TransactionStatus.approved;\n draftTxMeta.txParams = {\n ...txParams,\n nonce,\n chainId,\n gasLimit: txParams.gas,\n ...(isEIP1559Transaction(txParams) && {\n type: TransactionEnvelopeType.feeMarket,\n }),\n };\n },\n );\n\n this.onTransactionStatusChange(transactionMeta);\n\n const rawTx = await this.#trace(\n { name: 'Sign', parentContext: traceContext },\n () => this.signTransaction(transactionMeta, transactionMeta.txParams),\n );\n\n if (!this.beforePublish(transactionMeta)) {\n log('Skipping publishing transaction based on hook');\n this.messagingSystem.publish(\n `${controllerName}:transactionPublishingSkipped`,\n transactionMeta,\n );\n return ApprovalState.SkippedViaBeforePublishHook;\n }\n\n if (!rawTx) {\n return ApprovalState.NotApproved;\n }\n\n const ethQuery = this.#multichainTrackingHelper.getEthQuery({\n networkClientId: transactionMeta.networkClientId,\n chainId: transactionMeta.chainId,\n });\n\n let preTxBalance: string | undefined;\n const shouldUpdatePreTxBalance =\n transactionMeta.type === TransactionType.swap;\n\n if (shouldUpdatePreTxBalance) {\n log('Determining pre-transaction balance');\n\n preTxBalance = await query(ethQuery, 'getBalance', [\n transactionMeta.txParams.from,\n ]);\n }\n\n log('Publishing transaction', transactionMeta.txParams);\n\n let hash: string | undefined;\n\n await this.#trace(\n { name: 'Publish', parentContext: traceContext },\n async () => {\n ({ transactionHash: hash } = await this.publish(\n transactionMeta,\n rawTx,\n ));\n\n if (hash === undefined) {\n hash = await this.publishTransaction(ethQuery, {\n ...transactionMeta,\n rawTx,\n });\n }\n },\n );\n\n log('Publish successful', hash);\n\n transactionMeta = this.#updateTransactionInternal(\n {\n transactionId,\n note: 'TransactionController#approveTransaction - Transaction submitted',\n },\n (draftTxMeta) => {\n draftTxMeta.hash = hash;\n draftTxMeta.status = TransactionStatus.submitted;\n draftTxMeta.submittedTime = new Date().getTime();\n if (shouldUpdatePreTxBalance) {\n draftTxMeta.preTxBalance = preTxBalance;\n log('Updated pre-transaction balance', preTxBalance);\n }\n },\n );\n\n this.messagingSystem.publish(`${controllerName}:transactionSubmitted`, {\n transactionMeta,\n });\n\n this.messagingSystem.publish(\n `${controllerName}:transactionFinished`,\n transactionMeta,\n );\n this.#internalEvents.emit(`${transactionId}:finished`, transactionMeta);\n\n this.onTransactionStatusChange(transactionMeta);\n return ApprovalState.Approved;\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n this.failTransaction(transactionMeta, error);\n return ApprovalState.NotApproved;\n } finally {\n cleanupTasks.forEach((task) => task());\n }\n }\n\n private async publishTransaction(\n ethQuery: EthQuery,\n transactionMeta: TransactionMeta,\n { skipSubmitHistory }: { skipSubmitHistory?: boolean } = {},\n ): Promise<string> {\n const transactionHash = await query(ethQuery, 'sendRawTransaction', [\n transactionMeta.rawTx,\n ]);\n\n if (skipSubmitHistory !== true) {\n this.#updateSubmitHistory(transactionMeta, transactionHash);\n }\n\n return transactionHash;\n }\n\n /**\n * Cancels a transaction based on its ID by setting its status to \"rejected\"\n * and emitting a `<tx.id>:finished` hub event.\n *\n * @param transactionId - The ID of the transaction to cancel.\n * @param actionId - The actionId passed from UI\n */\n private cancelTransaction(transactionId: string, actionId?: string) {\n const transactionMeta = this.state.transactions.find(\n ({ id }) => id === transactionId,\n );\n if (!transactionMeta) {\n return;\n }\n this.update((state) => {\n const transactions = state.transactions.filter(\n ({ id }) => id !== transactionId,\n );\n state.transactions = this.trimTransactionsForState(transactions);\n });\n const updatedTransactionMeta = {\n ...transactionMeta,\n status: TransactionStatus.rejected as const,\n };\n this.messagingSystem.publish(\n `${controllerName}:transactionFinished`,\n updatedTransactionMeta,\n );\n this.#internalEvents.emit(\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `${transactionMeta.id}:finished`,\n updatedTransactionMeta,\n );\n this.messagingSystem.publish(`${controllerName}:transactionRejected`, {\n transactionMeta: updatedTransactionMeta,\n actionId,\n });\n this.onTransactionStatusChange(updatedTransactionMeta);\n }\n\n /**\n * Trim the amount of transactions that are set on the state. Checks\n * if the length of the tx history is longer then desired persistence\n * limit and then if it is removes the oldest confirmed or rejected tx.\n * Pending or unapproved transactions will not be removed by this\n * operation. For safety of presenting a fully functional transaction UI\n * representation, this function will not break apart transactions with the\n * same nonce, created on the same day, per network. Not accounting for\n * transactions of the same nonce, same day and network combo can result in\n * confusing or broken experiences in the UI.\n *\n * @param transactions - The transactions to be applied to the state.\n * @returns The trimmed list of transactions.\n */\n private trimTransactionsForState(\n transactions: TransactionMeta[],\n ): TransactionMeta[] {\n const nonceNetworkSet = new Set();\n\n const txsToKeep = [...transactions]\n .sort((a, b) => (a.time > b.time ? -1 : 1)) // Descending time order\n .filter((tx) => {\n const { chainId, status, txParams, time } = tx;\n\n if (txParams) {\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n const key = `${String(txParams.nonce)}-${convertHexToDecimal(\n chainId,\n )}-${new Date(time).toDateString()}`;\n\n if (nonceNetworkSet.has(key)) {\n return true;\n } else if (\n nonceNetworkSet.size < this.#transactionHistoryLimit ||\n !this.isFinalState(status)\n ) {\n nonceNetworkSet.add(key);\n return true;\n }\n }\n\n return false;\n });\n\n txsToKeep.reverse(); // Ascending time order\n return txsToKeep;\n }\n\n /**\n * Determines if the transaction is in a final state.\n *\n * @param status - The transaction status.\n * @returns Whether the transaction is in a final state.\n */\n private isFinalState(status: TransactionStatus): boolean {\n return (\n status === TransactionStatus.rejected ||\n status === TransactionStatus.confirmed ||\n status === TransactionStatus.failed\n );\n }\n\n /**\n * Whether the transaction has at least completed all local processing.\n *\n * @param status - The transaction status.\n * @returns Whether the transaction is in a final state.\n */\n private isLocalFinalState(status: TransactionStatus): boolean {\n return [\n TransactionStatus.confirmed,\n TransactionStatus.failed,\n TransactionStatus.rejected,\n TransactionStatus.submitted,\n ].includes(status);\n }\n\n private async requestApproval(\n txMeta: TransactionMeta,\n {\n shouldShowRequest,\n traceContext,\n }: { shouldShowRequest: boolean; traceContext?: TraceContext },\n ): Promise<AddResult> {\n const id = this.getApprovalId(txMeta);\n const { origin } = txMeta;\n const type = ApprovalType.Transaction;\n const requestData = { txId: txMeta.id };\n\n await this.#trace({\n name: 'Notification Display',\n id,\n parentContext: traceContext,\n });\n\n return (await this.messagingSystem.call(\n 'ApprovalController:addRequest',\n {\n id,\n origin: origin || ORIGIN_METAMASK,\n type,\n requestData,\n expectsResult: true,\n },\n shouldShowRequest,\n )) as Promise<AddResult>;\n }\n\n private getTransaction(\n transactionId: string,\n ): Readonly<TransactionMeta> | undefined {\n const { transactions } = this.state;\n return transactions.find(({ id }) => id === transactionId);\n }\n\n private getTransactionOrThrow(\n transactionId: string,\n errorMessagePrefix = 'TransactionController',\n ): Readonly<TransactionMeta> {\n const txMeta = this.getTransaction(transactionId);\n if (!txMeta) {\n throw new Error(\n `${errorMessagePrefix}: No transaction found with id ${transactionId}`,\n );\n }\n return txMeta;\n }\n\n private getApprovalId(txMeta: TransactionMeta) {\n return String(txMeta.id);\n }\n\n private isTransactionCompleted(transactionId: string): {\n meta?: TransactionMeta;\n isCompleted: boolean;\n } {\n const transaction = this.getTransaction(transactionId);\n\n if (!transaction) {\n return { meta: undefined, isCompleted: false };\n }\n\n const isCompleted = this.isLocalFinalState(transaction.status);\n\n return { meta: transaction, isCompleted };\n }\n\n private getChainId(networkClientId?: NetworkClientId): Hex {\n const globalChainId = this.#getGlobalChainId();\n const globalNetworkClientId = this.#getGlobalNetworkClientId();\n\n if (!networkClientId || networkClientId === globalNetworkClientId) {\n return globalChainId;\n }\n\n return this.messagingSystem.call(\n `NetworkController:getNetworkClientById`,\n networkClientId,\n ).configuration.chainId;\n }\n\n private prepareUnsignedEthTx(\n chainId: Hex,\n txParams: TransactionParams,\n ): TypedTransaction {\n return TransactionFactory.fromTxData(txParams, {\n freeze: false,\n common: this.getCommonConfiguration(chainId),\n });\n }\n\n /**\n * `@ethereumjs/tx` uses `@ethereumjs/common` as a configuration tool for\n * specifying which chain, network, hardfork and EIPs to support for\n * a transaction. By referencing this configuration, and analyzing the fields\n * specified in txParams, @ethereumjs/tx is able to determine which EIP-2718\n * transaction type to use.\n *\n * @param chainId - The chainId to use for the configuration.\n * @returns common configuration object\n */\n private getCommonConfiguration(chainId: Hex): Common {\n const customChainParams: Partial<ChainConfig> = {\n chainId: parseInt(chainId, 16),\n defaultHardfork: HARDFORK,\n };\n\n return Common.custom(customChainParams);\n }\n\n private onIncomingTransactions({\n added,\n updated,\n }: {\n added: TransactionMeta[];\n updated: TransactionMeta[];\n }) {\n this.update((state) => {\n const { transactions: currentTransactions } = state;\n const updatedTransactions = [\n ...added,\n ...currentTransactions.map((originalTransaction) => {\n const updatedTransaction = updated.find(\n ({ hash }) => hash === originalTransaction.hash,\n );\n\n return updatedTransaction ?? originalTransaction;\n }),\n ];\n\n state.transactions = this.trimTransactionsForState(updatedTransactions);\n });\n }\n\n private onUpdatedLastFetchedBlockNumbers({\n lastFetchedBlockNumbers,\n blockNumber,\n }: {\n lastFetchedBlockNumbers: {\n [key: string]: number;\n };\n blockNumber: number;\n }) {\n this.update((state) => {\n state.lastFetchedBlockNumbers = lastFetchedBlockNumbers;\n });\n this.messagingSystem.publish(\n `${controllerName}:incomingTransactionBlockReceived`,\n blockNumber,\n );\n }\n\n private generateDappSuggestedGasFees(\n txParams: TransactionParams,\n origin?: string,\n ): DappSuggestedGasFees | undefined {\n if (!origin || origin === ORIGIN_METAMASK) {\n return undefined;\n }\n\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas, gas } = txParams;\n\n if (\n gasPrice === undefined &&\n maxFeePerGas === undefined &&\n maxPriorityFeePerGas === undefined &&\n gas === undefined\n ) {\n return undefined;\n }\n\n const dappSuggestedGasFees: DappSuggestedGasFees = {};\n\n if (gasPrice !== undefined) {\n dappSuggestedGasFees.gasPrice = gasPrice;\n } else if (\n maxFeePerGas !== undefined ||\n maxPriorityFeePerGas !== undefined\n ) {\n dappSuggestedGasFees.maxFeePerGas = maxFeePerGas;\n dappSuggestedGasFees.maxPriorityFeePerGas = maxPriorityFeePerGas;\n }\n\n if (gas !== undefined) {\n dappSuggestedGasFees.gas = gas;\n }\n\n return dappSuggestedGasFees;\n }\n\n /**\n * Validates and adds external provided transaction to state.\n *\n * @param transactionMeta - Nominated external transaction to be added to state.\n * @returns The new transaction.\n */\n private addExternalTransaction(transactionMeta: TransactionMeta) {\n const { chainId } = transactionMeta;\n const { transactions } = this.state;\n const fromAddress = transactionMeta?.txParams?.from;\n const sameFromAndNetworkTransactions = transactions.filter(\n (transaction) =>\n transaction.txParams.from === fromAddress &&\n transaction.chainId === chainId,\n );\n const confirmedTxs = sameFromAndNetworkTransactions.filter(\n (transaction) => transaction.status === TransactionStatus.confirmed,\n );\n const pendingTxs = sameFromAndNetworkTransactions.filter(\n (transaction) => transaction.status === TransactionStatus.submitted,\n );\n\n validateConfirmedExternalTransaction(\n transactionMeta,\n confirmedTxs,\n pendingTxs,\n );\n\n // Make sure provided external transaction has non empty history array\n const newTransactionMeta =\n (transactionMeta.history ?? []).length === 0 && !this.isHistoryDisabled\n ? addInitialHistorySnapshot(transactionMeta)\n : transactionMeta;\n\n this.update((state) => {\n state.transactions = this.trimTransactionsForState([\n ...state.transactions,\n newTransactionMeta,\n ]);\n });\n\n return newTransactionMeta;\n }\n\n /**\n * Sets other txMeta statuses to dropped if the txMeta that has been confirmed has other transactions\n * in the transactions have the same nonce.\n *\n * @param transactionId - Used to identify original transaction.\n */\n private markNonceDuplicatesDropped(transactionId: string) {\n const transactionMeta = this.getTransaction(transactionId);\n if (!transactionMeta) {\n return;\n }\n const nonce = transactionMeta.txParams?.nonce;\n const from = transactionMeta.txParams?.from;\n const { chainId } = transactionMeta;\n\n const sameNonceTransactions = this.state.transactions.filter(\n (transaction) =>\n transaction.id !== transactionId &&\n transaction.txParams.from === from &&\n transaction.txParams.nonce === nonce &&\n transaction.chainId === chainId &&\n transaction.type !== TransactionType.incoming,\n );\n const sameNonceTransactionIds = sameNonceTransactions.map(\n (transaction) => transaction.id,\n );\n\n if (sameNonceTransactions.length === 0) {\n return;\n }\n\n this.update((state) => {\n for (const transaction of state.transactions) {\n if (sameNonceTransactionIds.includes(transaction.id)) {\n transaction.replacedBy = transactionMeta?.hash;\n transaction.replacedById = transactionMeta?.id;\n }\n }\n });\n\n for (const transaction of this.state.transactions) {\n if (\n sameNonceTransactionIds.includes(transaction.id) &&\n transaction.status !== TransactionStatus.failed\n ) {\n this.setTransactionStatusDropped(transaction);\n }\n }\n }\n\n /**\n * Method to set transaction status to dropped.\n *\n * @param transactionMeta - TransactionMeta of transaction to be marked as dropped.\n */\n private setTransactionStatusDropped(transactionMeta: TransactionMeta) {\n const updatedTransactionMeta = {\n ...transactionMeta,\n status: TransactionStatus.dropped as const,\n };\n this.messagingSystem.publish(`${controllerName}:transactionDropped`, {\n transactionMeta: updatedTransactionMeta,\n });\n this.updateTransaction(\n updatedTransactionMeta,\n 'TransactionController#setTransactionStatusDropped - Transaction dropped',\n );\n this.onTransactionStatusChange(updatedTransactionMeta);\n }\n\n /**\n * Get transaction with provided actionId.\n *\n * @param actionId - Unique ID to prevent duplicate requests\n * @returns the filtered transaction\n */\n private getTransactionWithActionId(actionId?: string) {\n return this.state.transactions.find(\n (transaction) => actionId && transaction.actionId === actionId,\n );\n }\n\n private async waitForTransactionFinished(\n transactionId: string,\n ): Promise<TransactionMeta> {\n return new Promise((resolve) => {\n this.#internalEvents.once(`${transactionId}:finished`, (txMeta) => {\n resolve(txMeta);\n });\n });\n }\n\n /**\n * Updates the r, s, and v properties of a TransactionMeta object\n * with values from a signed transaction.\n *\n * @param transactionMeta - The TransactionMeta object to update.\n * @param signedTx - The encompassing type for all transaction types containing r, s, and v values.\n * @returns The updated TransactionMeta object.\n */\n private updateTransactionMetaRSV(\n transactionMeta: TransactionMeta,\n signedTx: TypedTransaction,\n ): TransactionMeta {\n const transactionMetaWithRsv = cloneDeep(transactionMeta);\n\n for (const key of ['r', 's', 'v'] as const) {\n const value = signedTx[key];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n transactionMetaWithRsv[key] = add0x(value.toString(16));\n }\n\n return transactionMetaWithRsv;\n }\n\n private async getEIP1559Compatibility(networkClientId?: NetworkClientId) {\n const currentNetworkIsEIP1559Compatible =\n await this.getCurrentNetworkEIP1559Compatibility(networkClientId);\n\n const currentAccountIsEIP1559Compatible =\n await this.getCurrentAccountEIP1559Compatibility();\n\n return (\n currentNetworkIsEIP1559Compatible && currentAccountIsEIP1559Compatible\n );\n }\n\n private async signTransaction(\n transactionMeta: TransactionMeta,\n txParams: TransactionParams,\n ): Promise<string | undefined> {\n log('Signing transaction', txParams);\n\n const unsignedEthTx = this.prepareUnsignedEthTx(\n transactionMeta.chainId,\n txParams,\n );\n\n this.approvingTransactionIds.add(transactionMeta.id);\n\n const signedTx = await new Promise<TypedTransaction>((resolve, reject) => {\n this.sign?.(\n unsignedEthTx,\n txParams.from,\n ...this.getAdditionalSignArguments(transactionMeta),\n ).then(resolve, reject);\n\n this.signAbortCallbacks.set(transactionMeta.id, () =>\n reject(new Error('Signing aborted by user')),\n );\n });\n\n this.signAbortCallbacks.delete(transactionMeta.id);\n\n if (!signedTx) {\n log('Skipping signed status as no signed transaction');\n return undefined;\n }\n\n const transactionMetaFromHook = cloneDeep(transactionMeta);\n if (!this.afterSign(transactionMetaFromHook, signedTx)) {\n this.updateTransaction(\n transactionMetaFromHook,\n 'TransactionController#signTransaction - Update after sign',\n );\n\n log('Skipping signed status based on hook');\n\n return undefined;\n }\n\n const transactionMetaWithRsv = {\n ...this.updateTransactionMetaRSV(transactionMetaFromHook, signedTx),\n status: TransactionStatus.signed as const,\n };\n\n this.updateTransaction(\n transactionMetaWithRsv,\n 'TransactionController#approveTransaction - Transaction signed',\n );\n\n this.onTransactionStatusChange(transactionMetaWithRsv);\n\n const rawTx = bufferToHex(signedTx.serialize());\n\n const transactionMetaWithRawTx = merge({}, transactionMetaWithRsv, {\n rawTx,\n });\n\n this.updateTransaction(\n transactionMetaWithRawTx,\n 'TransactionController#approveTransaction - RawTransaction added',\n );\n\n return rawTx;\n }\n\n private onTransactionStatusChange(transactionMeta: TransactionMeta) {\n this.messagingSystem.publish(`${controllerName}:transactionStatusUpdated`, {\n transactionMeta,\n });\n }\n\n private getNonceTrackerTransactions(\n status: TransactionStatus,\n address: string,\n chainId: string = this.getChainId(),\n ) {\n return getAndFormatTransactionsForNonceTracker(\n chainId,\n address,\n status,\n this.state.transactions,\n );\n }\n\n private onConfirmedTransaction(transactionMeta: TransactionMeta) {\n log('Processing confirmed transaction', transactionMeta.id);\n\n this.markNonceDuplicatesDropped(transactionMeta.id);\n\n this.messagingSystem.publish(\n `${controllerName}:transactionConfirmed`,\n transactionMeta,\n );\n\n this.onTransactionStatusChange(transactionMeta);\n\n // Intentional given potential duration of process.\n this.updatePostBalance(transactionMeta).catch((error) => {\n log('Error while updating post balance', error);\n throw error;\n });\n }\n\n private async updatePostBalance(transactionMeta: TransactionMeta) {\n try {\n if (transactionMeta.type !== TransactionType.swap) {\n return;\n }\n\n const ethQuery = this.#multichainTrackingHelper.getEthQuery({\n networkClientId: transactionMeta.networkClientId,\n chainId: transactionMeta.chainId,\n });\n const { updatedTransactionMeta, approvalTransactionMeta } =\n await updatePostTransactionBalance(transactionMeta, {\n ethQuery,\n getTransaction: this.getTransaction.bind(this),\n updateTransaction: this.updateTransaction.bind(this),\n });\n\n this.messagingSystem.publish(\n `${controllerName}:postTransactionBalanceUpdated`,\n {\n transactionMeta: updatedTransactionMeta,\n approvalTransactionMeta,\n },\n );\n } catch (error) {\n /* istanbul ignore next */\n log('Error while updating post transaction balance', error);\n }\n }\n\n #createNonceTracker({\n provider,\n blockTracker,\n chainId,\n }: {\n provider: Provider;\n blockTracker: BlockTracker;\n chainId?: Hex;\n }): NonceTracker {\n return new NonceTracker({\n // TODO: Fix types\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n provider: provider as any,\n // TODO: Fix types\n blockTracker,\n getPendingTransactions: this.#getNonceTrackerPendingTransactions.bind(\n this,\n chainId,\n ),\n getConfirmedTransactions: this.getNonceTrackerTransactions.bind(\n this,\n TransactionStatus.confirmed,\n ),\n });\n }\n\n #createIncomingTransactionHelper({\n blockTracker,\n etherscanRemoteTransactionSource,\n chainId,\n }: {\n blockTracker: BlockTracker;\n etherscanRemoteTransactionSource: EtherscanRemoteTransactionSource;\n chainId?: Hex;\n }): IncomingTransactionHelper {\n const incomingTransactionHelper = new IncomingTransactionHelper({\n blockTracker,\n getCurrentAccount: () => this.#getSelectedAccount(),\n getLastFetchedBlockNumbers: () => this.state.lastFetchedBlockNumbers,\n getLocalTransactions: () => this.state.transactions,\n getChainId: chainId ? () => chainId : this.getChainId.bind(this),\n isEnabled: this.#incomingTransactionOptions.isEnabled,\n queryEntireHistory: this.#incomingTransactionOptions.queryEntireHistory,\n remoteTransactionSource: etherscanRemoteTransactionSource,\n transactionLimit: this.#transactionHistoryLimit,\n updateTransactions: this.#incomingTransactionOptions.updateTransactions,\n });\n\n this.#addIncomingTransactionHelperListeners(incomingTransactionHelper);\n\n return incomingTransactionHelper;\n }\n\n #createPendingTransactionTracker({\n provider,\n blockTracker,\n chainId,\n }: {\n provider: Provider;\n blockTracker: BlockTracker;\n chainId?: Hex;\n }): PendingTransactionTracker {\n const ethQuery = new EthQuery(provider);\n const getChainId = chainId ? () => chainId : this.getChainId.bind(this);\n\n const pendingTransactionTracker = new PendingTransactionTracker({\n blockTracker,\n getChainId,\n getEthQuery: () => ethQuery,\n getTransactions: () => this.state.transactions,\n isResubmitEnabled: this.#pendingTransactionOptions.isResubmitEnabled,\n getGlobalLock: () =>\n this.#multichainTrackingHelper.acquireNonceLockForChainIdKey({\n chainId: getChainId(),\n }),\n publishTransaction: (_ethQuery, transactionMeta) =>\n this.publishTransaction(_ethQuery, transactionMeta, {\n skipSubmitHistory: true,\n }),\n hooks: {\n beforeCheckPendingTransaction:\n this.beforeCheckPendingTransaction.bind(this),\n beforePublish: this.beforePublish.bind(this),\n },\n });\n\n this.#addPendingTransactionTrackerListeners(pendingTransactionTracker);\n\n return pendingTransactionTracker;\n }\n\n #checkForPendingTransactionAndStartPolling = () => {\n // PendingTransactionTracker reads state through its getTransactions hook\n this.pendingTransactionTracker.startIfPendingTransactions();\n this.#multichainTrackingHelper.checkForPendingTransactionAndStartPolling();\n };\n\n #stopAllTracking() {\n this.pendingTransactionTracker.stop();\n this.#removePendingTransactionTrackerListeners(\n this.pendingTransactionTracker,\n );\n this.incomingTransactionHelper.stop();\n this.#removeIncomingTransactionHelperListeners(\n this.incomingTransactionHelper,\n );\n\n this.#multichainTrackingHelper.stopAllTracking();\n }\n\n #removeIncomingTransactionHelperListeners(\n incomingTransactionHelper: IncomingTransactionHelper,\n ) {\n incomingTransactionHelper.hub.removeAllListeners('transactions');\n incomingTransactionHelper.hub.removeAllListeners(\n 'updatedLastFetchedBlockNumbers',\n );\n }\n\n #addIncomingTransactionHelperListeners(\n incomingTransactionHelper: IncomingTransactionHelper,\n ) {\n incomingTransactionHelper.hub.on(\n 'transactions',\n this.onIncomingTransactions.bind(this),\n );\n incomingTransactionHelper.hub.on(\n 'updatedLastFetchedBlockNumbers',\n this.onUpdatedLastFetchedBlockNumbers.bind(this),\n );\n }\n\n #removePendingTransactionTrackerListeners(\n pendingTransactionTracker: PendingTransactionTracker,\n ) {\n pendingTransactionTracker.hub.removeAllListeners('transaction-confirmed');\n pendingTransactionTracker.hub.removeAllListeners('transaction-dropped');\n pendingTransactionTracker.hub.removeAllListeners('transaction-failed');\n pendingTransactionTracker.hub.removeAllListeners('transaction-updated');\n }\n\n #addPendingTransactionTrackerListeners(\n pendingTransactionTracker: PendingTransactionTracker,\n ) {\n pendingTransactionTracker.hub.on(\n 'transaction-confirmed',\n this.onConfirmedTransaction.bind(this),\n );\n\n pendingTransactionTracker.hub.on(\n 'transaction-dropped',\n this.setTransactionStatusDropped.bind(this),\n );\n\n pendingTransactionTracker.hub.on(\n 'transaction-failed',\n this.failTransaction.bind(this),\n );\n\n pendingTransactionTracker.hub.on(\n 'transaction-updated',\n this.updateTransaction.bind(this),\n );\n }\n\n #getNonceTrackerPendingTransactions(\n chainId: string | undefined,\n address: string,\n ) {\n const standardPendingTransactions = this.getNonceTrackerTransactions(\n TransactionStatus.submitted,\n address,\n chainId,\n );\n\n const externalPendingTransactions = this.getExternalPendingTransactions(\n address,\n chainId,\n );\n return [...standardPendingTransactions, ...externalPendingTransactions];\n }\n\n private async publishTransactionForRetry(\n ethQuery: EthQuery,\n transactionMeta: TransactionMeta,\n ): Promise<string> {\n try {\n return await this.publishTransaction(ethQuery, transactionMeta);\n } catch (error: unknown) {\n if (this.isTransactionAlreadyConfirmedError(error as Error)) {\n await this.pendingTransactionTracker.forceCheckTransaction(\n transactionMeta,\n );\n throw new Error('Previous transaction is already confirmed');\n }\n throw error;\n }\n }\n\n /**\n * Ensures that error is a nonce issue\n *\n * @param error - The error to check\n * @returns Whether or not the error is a nonce issue\n */\n // TODO: Replace `any` with type\n // Some networks are returning original error in the data field\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private isTransactionAlreadyConfirmedError(error: any): boolean {\n return (\n error?.message?.includes('nonce too low') ||\n error?.data?.message?.includes('nonce too low')\n );\n }\n\n #getGasFeeFlows(): GasFeeFlow[] {\n if (this.#testGasFeeFlows) {\n return [new TestGasFeeFlow()];\n }\n\n return [new LineaGasFeeFlow(), new DefaultGasFeeFlow()];\n }\n\n #getLayer1GasFeeFlows(): Layer1GasFeeFlow[] {\n return [new OptimismLayer1GasFeeFlow(), new ScrollLayer1GasFeeFlow()];\n }\n\n #updateTransactionInternal(\n {\n transactionId,\n note,\n skipHistory,\n skipValidation,\n }: {\n transactionId: string;\n note?: string;\n skipHistory?: boolean;\n skipValidation?: boolean;\n },\n callback: (transactionMeta: TransactionMeta) => TransactionMeta | void,\n ): Readonly<TransactionMeta> {\n let updatedTransactionParams: (keyof TransactionParams)[] = [];\n\n this.update((state) => {\n const index = state.transactions.findIndex(\n ({ id }) => id === transactionId,\n );\n\n let transactionMeta = state.transactions[index];\n\n // eslint-disable-next-line n/callback-return\n transactionMeta = callback(transactionMeta) ?? transactionMeta;\n\n if (skipValidation !== true) {\n transactionMeta.txParams = normalizeTransactionParams(\n transactionMeta.txParams,\n );\n\n validateTxParams(transactionMeta.txParams);\n }\n\n updatedTransactionParams =\n this.#checkIfTransactionParamsUpdated(transactionMeta);\n\n const shouldSkipHistory = this.isHistoryDisabled || skipHistory;\n\n if (!shouldSkipHistory) {\n transactionMeta = updateTransactionHistory(\n transactionMeta,\n note ?? 'Transaction updated',\n );\n }\n state.transactions[index] = transactionMeta;\n });\n\n const transactionMeta = this.getTransaction(\n transactionId,\n ) as TransactionMeta;\n\n if (updatedTransactionParams.length > 0) {\n this.#onTransactionParamsUpdated(\n transactionMeta,\n updatedTransactionParams,\n );\n }\n\n return transactionMeta;\n }\n\n #checkIfTransactionParamsUpdated(newTransactionMeta: TransactionMeta) {\n const { id: transactionId, txParams: newParams } = newTransactionMeta;\n\n const originalParams = this.getTransaction(transactionId)?.txParams;\n\n if (!originalParams || isEqual(originalParams, newParams)) {\n return [];\n }\n\n const params = Object.keys(newParams) as (keyof TransactionParams)[];\n\n const updatedProperties = params.filter(\n (param) => newParams[param] !== originalParams[param],\n );\n\n log(\n 'Transaction parameters have been updated',\n transactionId,\n updatedProperties,\n originalParams,\n newParams,\n );\n\n return updatedProperties;\n }\n\n #onTransactionParamsUpdated(\n transactionMeta: TransactionMeta,\n updatedParams: (keyof TransactionParams)[],\n ) {\n if (\n (['to', 'value', 'data'] as const).some((param) =>\n updatedParams.includes(param),\n )\n ) {\n log('Updating simulation data due to transaction parameter update');\n this.#updateSimulationData(transactionMeta).catch((error) => {\n log('Error updating simulation data', error);\n throw error;\n });\n }\n }\n\n async #updateSimulationData(\n transactionMeta: TransactionMeta,\n { traceContext }: { traceContext?: TraceContext } = {},\n ) {\n const { id: transactionId, chainId, txParams } = transactionMeta;\n const { from, to, value, data } = txParams;\n\n let simulationData: SimulationData = {\n error: {\n code: SimulationErrorCode.Disabled,\n message: 'Simulation disabled',\n },\n tokenBalanceChanges: [],\n };\n\n if (this.#isSimulationEnabled()) {\n this.#updateTransactionInternal(\n { transactionId, skipHistory: true },\n (txMeta) => {\n txMeta.simulationData = undefined;\n },\n );\n\n simulationData = await this.#trace(\n { name: 'Simulate', parentContext: traceContext },\n () =>\n getSimulationData({\n chainId,\n from: from as Hex,\n to: to as Hex,\n value: value as Hex,\n data: data as Hex,\n }),\n );\n }\n\n const finalTransactionMeta = this.getTransaction(transactionId);\n\n /* istanbul ignore if */\n if (!finalTransactionMeta) {\n log(\n 'Cannot update simulation data as transaction not found',\n transactionId,\n simulationData,\n );\n\n return;\n }\n\n this.#updateTransactionInternal(\n {\n transactionId,\n note: 'TransactionController#updateSimulationData - Update simulation data',\n },\n (txMeta) => {\n txMeta.simulationData = simulationData;\n },\n );\n\n log('Updated simulation data', transactionId, simulationData);\n }\n\n #onGasFeePollerTransactionUpdate({\n transactionId,\n gasFeeEstimates,\n gasFeeEstimatesLoaded,\n layer1GasFee,\n }: {\n transactionId: string;\n gasFeeEstimates?: GasFeeEstimates;\n gasFeeEstimatesLoaded?: boolean;\n layer1GasFee?: Hex;\n }) {\n this.#updateTransactionInternal(\n { transactionId, skipHistory: true },\n (txMeta) => {\n if (gasFeeEstimates) {\n txMeta.gasFeeEstimates = gasFeeEstimates;\n }\n\n if (gasFeeEstimatesLoaded !== undefined) {\n txMeta.gasFeeEstimatesLoaded = gasFeeEstimatesLoaded;\n }\n\n if (layer1GasFee) {\n txMeta.layer1GasFee = layer1GasFee;\n }\n },\n );\n }\n\n #getNetworkClientId({\n networkClientId: requestNetworkClientId,\n chainId,\n }: {\n networkClientId?: NetworkClientId;\n chainId?: Hex;\n }) {\n const globalChainId = this.#getGlobalChainId();\n const globalNetworkClientId = this.#getGlobalNetworkClientId();\n\n if (requestNetworkClientId) {\n return requestNetworkClientId;\n }\n\n if (!chainId || chainId === globalChainId) {\n return globalNetworkClientId;\n }\n\n return this.messagingSystem.call(\n `NetworkController:findNetworkClientIdByChainId`,\n chainId,\n );\n }\n\n #getGlobalNetworkClientId() {\n return this.getNetworkState().selectedNetworkClientId;\n }\n\n #getGlobalChainId() {\n return this.messagingSystem.call(\n `NetworkController:getNetworkClientById`,\n this.getNetworkState().selectedNetworkClientId,\n ).configuration.chainId;\n }\n\n #isCustomNetwork(networkClientId?: NetworkClientId) {\n const globalNetworkClientId = this.#getGlobalNetworkClientId();\n\n if (!networkClientId || networkClientId === globalNetworkClientId) {\n return !isInfuraNetworkType(\n this.getNetworkState().selectedNetworkClientId,\n );\n }\n\n return (\n this.messagingSystem.call(\n `NetworkController:getNetworkClientById`,\n networkClientId,\n ).configuration.type === NetworkClientType.Custom\n );\n }\n\n #getSelectedAccount() {\n return this.messagingSystem.call('AccountsController:getSelectedAccount');\n }\n\n #updateSubmitHistory(transactionMeta: TransactionMeta, hash: string): void {\n const { chainId, networkClientId, origin, rawTx, txParams } =\n transactionMeta;\n\n const { networkConfigurationsByChainId } = this.getNetworkState();\n const networkConfiguration = networkConfigurationsByChainId[chainId as Hex];\n\n const endpoint = networkConfiguration?.rpcEndpoints.find(\n (currentEndpoint) => currentEndpoint.networkClientId === networkClientId,\n );\n\n const networkUrl = endpoint?.url;\n const networkType = endpoint?.name ?? networkClientId;\n\n const submitHistoryEntry: SubmitHistoryEntry = {\n chainId,\n hash,\n networkType,\n networkUrl,\n origin,\n rawTransaction: rawTx as string,\n time: Date.now(),\n transaction: txParams,\n };\n\n log('Updating submit history', submitHistoryEntry);\n\n this.update((state) => {\n const { submitHistory } = state;\n\n if (submitHistory.length === SUBMIT_HISTORY_LIMIT) {\n submitHistory.pop();\n }\n\n submitHistory.unshift(submitHistoryEntry);\n });\n }\n}\n"]}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { Hardfork } from
|
|
2
|
-
import type { TypedTransaction } from
|
|
3
|
-
import type { AccountsControllerGetSelectedAccountAction } from
|
|
4
|
-
import type { AddApprovalRequest } from
|
|
5
|
-
import type { ControllerGetStateAction, ControllerStateChangeEvent, RestrictedControllerMessenger } from
|
|
6
|
-
import { BaseController } from
|
|
7
|
-
import type {
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
10
|
-
import type {
|
|
11
|
-
import type {
|
|
12
|
-
import type {
|
|
13
|
-
import {
|
|
1
|
+
import { Hardfork } from "@ethereumjs/common";
|
|
2
|
+
import type { TypedTransaction } from "@ethereumjs/tx";
|
|
3
|
+
import type { AccountsControllerGetSelectedAccountAction } from "@metamask/accounts-controller";
|
|
4
|
+
import type { AddApprovalRequest } from "@metamask/approval-controller";
|
|
5
|
+
import type { ControllerGetStateAction, ControllerStateChangeEvent, RestrictedControllerMessenger } from "@metamask/base-controller";
|
|
6
|
+
import { BaseController } from "@metamask/base-controller";
|
|
7
|
+
import type { TraceCallback } from "@metamask/controller-utils";
|
|
8
|
+
import type { FetchGasFeeEstimateOptions, GasFeeState } from "@metamask/gas-fee-controller";
|
|
9
|
+
import type { BlockTracker, NetworkClientId, NetworkController, NetworkControllerStateChangeEvent, NetworkState, Provider, NetworkControllerFindNetworkClientIdByChainIdAction, NetworkControllerGetNetworkClientByIdAction } from "@metamask/network-controller";
|
|
10
|
+
import type { NonceLock, Transaction as NonceTrackerTransaction } from "@metamask/nonce-tracker";
|
|
11
|
+
import type { Hex } from "@metamask/utils";
|
|
12
|
+
import type { IncomingTransactionOptions } from "./helpers/IncomingTransactionHelper.cjs";
|
|
13
|
+
import type { SavedGasFees, SecurityProviderRequest, SendFlowHistoryEntry, TransactionParams, TransactionMeta, TransactionReceipt, WalletDevice, SecurityAlertResponse, GasFeeFlowResponse, GasPriceValue, FeeMarketEIP1559Values, SubmitHistoryEntry } from "./types.cjs";
|
|
14
|
+
import { TransactionType, TransactionStatus } from "./types.cjs";
|
|
14
15
|
export declare const HARDFORK = Hardfork.London;
|
|
15
16
|
/**
|
|
16
17
|
* Object with new transaction's meta and a promise resolving to the
|
|
@@ -54,6 +55,7 @@ export type TransactionControllerState = {
|
|
|
54
55
|
lastFetchedBlockNumbers: {
|
|
55
56
|
[key: string]: number;
|
|
56
57
|
};
|
|
58
|
+
submitHistory: SubmitHistoryEntry[];
|
|
57
59
|
};
|
|
58
60
|
/**
|
|
59
61
|
* Multiplier used to determine a transaction's increased gas fee during cancellation
|
|
@@ -125,7 +127,7 @@ export type TransactionControllerOptions = {
|
|
|
125
127
|
getGasFeeEstimates?: (options: FetchGasFeeEstimateOptions) => Promise<GasFeeState>;
|
|
126
128
|
getNetworkClientRegistry: NetworkController['getNetworkClientRegistry'];
|
|
127
129
|
getNetworkState: () => NetworkState;
|
|
128
|
-
getPermittedAccounts
|
|
130
|
+
getPermittedAccounts?: (origin?: string) => Promise<string[]>;
|
|
129
131
|
getSavedGasFees?: (chainId: Hex) => SavedGasFees | undefined;
|
|
130
132
|
incomingTransactions?: IncomingTransactionOptions;
|
|
131
133
|
isMultichainEnabled: boolean;
|
|
@@ -142,7 +144,6 @@ export type TransactionControllerOptions = {
|
|
|
142
144
|
transactionHistoryLimit: number;
|
|
143
145
|
hooks: {
|
|
144
146
|
afterSign?: (transactionMeta: TransactionMeta, signedTx: TypedTransaction) => boolean;
|
|
145
|
-
beforeApproveOnInit?: (transactionMeta: TransactionMeta) => boolean;
|
|
146
147
|
beforeCheckPendingTransaction?: (transactionMeta: TransactionMeta) => boolean;
|
|
147
148
|
beforePublish?: (transactionMeta: TransactionMeta) => boolean;
|
|
148
149
|
getAdditionalSignArguments?: (transactionMeta: TransactionMeta) => (TransactionMeta | undefined)[];
|
|
@@ -351,7 +352,7 @@ export declare class TransactionController extends BaseController<typeof control
|
|
|
351
352
|
private readonly getCurrentAccountEIP1559Compatibility;
|
|
352
353
|
private readonly getCurrentNetworkEIP1559Compatibility;
|
|
353
354
|
private readonly getGasFeeEstimates;
|
|
354
|
-
private readonly getPermittedAccounts
|
|
355
|
+
private readonly getPermittedAccounts?;
|
|
355
356
|
private readonly getExternalPendingTransactions;
|
|
356
357
|
private readonly layer1GasFeeFlows;
|
|
357
358
|
private readonly incomingTransactionHelper;
|
|
@@ -359,7 +360,6 @@ export declare class TransactionController extends BaseController<typeof control
|
|
|
359
360
|
private readonly pendingTransactionTracker;
|
|
360
361
|
private readonly signAbortCallbacks;
|
|
361
362
|
private readonly afterSign;
|
|
362
|
-
private readonly beforeApproveOnInit;
|
|
363
363
|
private readonly beforeCheckPendingTransaction;
|
|
364
364
|
private readonly beforePublish;
|
|
365
365
|
private readonly publish;
|
|
@@ -653,10 +653,6 @@ export declare class TransactionController extends BaseController<typeof control
|
|
|
653
653
|
hash?: string;
|
|
654
654
|
status?: TransactionStatus;
|
|
655
655
|
}): void;
|
|
656
|
-
/**
|
|
657
|
-
* Creates approvals for all unapproved transactions persisted.
|
|
658
|
-
*/
|
|
659
|
-
initApprovals(): void;
|
|
660
656
|
/**
|
|
661
657
|
* Search transaction metadata for matching entries.
|
|
662
658
|
*
|
|
@@ -705,10 +701,7 @@ export declare class TransactionController extends BaseController<typeof control
|
|
|
705
701
|
private addMetadata;
|
|
706
702
|
private updateGasProperties;
|
|
707
703
|
private onBootCleanup;
|
|
708
|
-
|
|
709
|
-
* Force submit approved transactions for all chains.
|
|
710
|
-
*/
|
|
711
|
-
private submitApprovedTransactions;
|
|
704
|
+
private failIncompleteTransactions;
|
|
712
705
|
private processApproval;
|
|
713
706
|
/**
|
|
714
707
|
* Approves a transaction and updates it's status in state. If this is not a
|
|
@@ -832,4 +825,4 @@ export declare class TransactionController extends BaseController<typeof control
|
|
|
832
825
|
private isTransactionAlreadyConfirmedError;
|
|
833
826
|
}
|
|
834
827
|
export {};
|
|
835
|
-
//# sourceMappingURL=TransactionController.d.
|
|
828
|
+
//# sourceMappingURL=TransactionController.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionController.d.cts","sourceRoot":"","sources":["../src/TransactionController.ts"],"names":[],"mappings":"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"}
|