@metamask/transaction-controller 25.3.0 → 26.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/dist/TransactionController.js +20 -18
  3. package/dist/TransactionController.mjs +19 -17
  4. package/dist/{chunk-UVKK5JBJ.mjs → chunk-35MG26Y3.mjs} +13 -12
  5. package/dist/chunk-35MG26Y3.mjs.map +1 -0
  6. package/dist/{chunk-R7NJVDWN.js → chunk-5WFLNKCL.js} +7 -6
  7. package/dist/chunk-5WFLNKCL.js.map +1 -0
  8. package/dist/{chunk-US7NQPYE.js → chunk-6V2LR6JL.js} +7 -7
  9. package/dist/{chunk-CSQPJCBP.mjs → chunk-7HNSDVVO.mjs} +3 -3
  10. package/dist/{chunk-BYBPZUHS.mjs → chunk-A4P4B3OF.mjs} +14 -6
  11. package/dist/chunk-A4P4B3OF.mjs.map +1 -0
  12. package/dist/{chunk-M6Q3DVMJ.mjs → chunk-APJWB5VY.mjs} +61 -26
  13. package/dist/chunk-APJWB5VY.mjs.map +1 -0
  14. package/dist/{chunk-F3CMU2DM.js → chunk-C3UHJPYJ.js} +6 -6
  15. package/dist/{chunk-Z3HHSD5I.mjs → chunk-DTMKGTYC.mjs} +3 -2
  16. package/dist/chunk-DTMKGTYC.mjs.map +1 -0
  17. package/dist/{chunk-MXQLW52B.js → chunk-FK7AP6SH.js} +10 -2
  18. package/dist/chunk-FK7AP6SH.js.map +1 -0
  19. package/dist/{chunk-ZQFMTLZJ.mjs → chunk-FTB6MCSH.mjs} +39 -24
  20. package/dist/chunk-FTB6MCSH.mjs.map +1 -0
  21. package/dist/{chunk-7QOACSQU.js → chunk-GASIS3QH.js} +74 -39
  22. package/dist/chunk-GASIS3QH.js.map +1 -0
  23. package/dist/{chunk-RQKICZYP.js → chunk-GRQB2ARK.js} +3 -3
  24. package/dist/{chunk-XKNFL657.mjs → chunk-HLG525BC.mjs} +2 -2
  25. package/dist/chunk-HMOSP33F.js +36 -0
  26. package/dist/chunk-HMOSP33F.js.map +1 -0
  27. package/dist/chunk-HQSNKCXI.mjs +36 -0
  28. package/dist/chunk-HQSNKCXI.mjs.map +1 -0
  29. package/dist/{chunk-7YLATOE4.js → chunk-HUVOOFOM.js} +15 -14
  30. package/dist/chunk-HUVOOFOM.js.map +1 -0
  31. package/dist/{chunk-NRWEI43Q.js → chunk-I7VD6IET.js} +40 -25
  32. package/dist/chunk-I7VD6IET.js.map +1 -0
  33. package/dist/chunk-JW6P2G5A.mjs +132 -0
  34. package/dist/chunk-JW6P2G5A.mjs.map +1 -0
  35. package/dist/{chunk-6XMG522E.mjs → chunk-K4KOSAGM.mjs} +8 -3
  36. package/dist/chunk-K4KOSAGM.mjs.map +1 -0
  37. package/dist/{chunk-PVO55HHW.mjs → chunk-KKCD5UMP.mjs} +3 -3
  38. package/dist/{chunk-GE57YNGX.js → chunk-KT6UAKBB.js} +8 -3
  39. package/dist/chunk-KT6UAKBB.js.map +1 -0
  40. package/dist/chunk-QG2WVQE3.js +132 -0
  41. package/dist/chunk-QG2WVQE3.js.map +1 -0
  42. package/dist/{chunk-5OQ373JS.js → chunk-QTQSCTQA.js} +10 -10
  43. package/dist/{chunk-VEREDMI2.mjs → chunk-RIYIJTEU.mjs} +2 -2
  44. package/dist/{chunk-IZI7FQIN.mjs → chunk-RU6NJIUD.mjs} +3 -3
  45. package/dist/{chunk-3D3SA6PY.mjs → chunk-TJXPMOA6.mjs} +2 -2
  46. package/dist/{chunk-HXPG3DIX.mjs → chunk-TWND5SFD.mjs} +2 -2
  47. package/dist/{chunk-Z4FIWEAJ.mjs → chunk-TZEAWUXE.mjs} +3 -3
  48. package/dist/{chunk-GQYELPS3.js → chunk-UH7FNVKS.js} +4 -4
  49. package/dist/{chunk-SSYRMQ63.js → chunk-UUSYJGGQ.js} +5 -5
  50. package/dist/{chunk-GC77BSQZ.js → chunk-V5X6MZHN.js} +16 -8
  51. package/dist/chunk-V5X6MZHN.js.map +1 -0
  52. package/dist/{chunk-CXXGL43K.js → chunk-VP2DBWOT.js} +3 -3
  53. package/dist/{chunk-KFL2GGZC.mjs → chunk-W3CS5GRD.mjs} +7 -6
  54. package/dist/chunk-W3CS5GRD.mjs.map +1 -0
  55. package/dist/{chunk-ITDY6AIZ.js → chunk-WIZVJM2B.js} +3 -2
  56. package/dist/chunk-WIZVJM2B.js.map +1 -0
  57. package/dist/{chunk-CWJBSWH3.js → chunk-XZILQVNW.js} +6 -6
  58. package/dist/{chunk-LADOJTK4.mjs → chunk-YEJJKWT2.mjs} +10 -2
  59. package/dist/chunk-YEJJKWT2.mjs.map +1 -0
  60. package/dist/constants.js +2 -2
  61. package/dist/constants.mjs +1 -1
  62. package/dist/errors.js +15 -0
  63. package/dist/errors.js.map +1 -0
  64. package/dist/errors.mjs +15 -0
  65. package/dist/errors.mjs.map +1 -0
  66. package/dist/gas-flows/DefaultGasFeeFlow.js +7 -7
  67. package/dist/gas-flows/DefaultGasFeeFlow.mjs +6 -6
  68. package/dist/gas-flows/LineaGasFeeFlow.js +8 -8
  69. package/dist/gas-flows/LineaGasFeeFlow.mjs +7 -7
  70. package/dist/gas-flows/OptimismLayer1GasFeeFlow.js +10 -0
  71. package/dist/gas-flows/OptimismLayer1GasFeeFlow.js.map +1 -0
  72. package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs +10 -0
  73. package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs.map +1 -0
  74. package/dist/helpers/EtherscanRemoteTransactionSource.js +5 -5
  75. package/dist/helpers/EtherscanRemoteTransactionSource.mjs +4 -4
  76. package/dist/helpers/GasFeePoller.js +5 -5
  77. package/dist/helpers/GasFeePoller.mjs +4 -4
  78. package/dist/helpers/MultichainTrackingHelper.js +6 -6
  79. package/dist/helpers/MultichainTrackingHelper.mjs +5 -5
  80. package/dist/helpers/PendingTransactionTracker.js +1 -1
  81. package/dist/helpers/PendingTransactionTracker.mjs +1 -1
  82. package/dist/index.js +24 -20
  83. package/dist/index.mjs +23 -19
  84. package/dist/tsconfig.build.tsbuildinfo +1 -1
  85. package/dist/types/TransactionController.d.ts +8 -0
  86. package/dist/types/TransactionController.d.ts.map +1 -1
  87. package/dist/types/constants.d.ts +1 -0
  88. package/dist/types/constants.d.ts.map +1 -1
  89. package/dist/types/errors.d.ts +15 -0
  90. package/dist/types/errors.d.ts.map +1 -0
  91. package/dist/types/gas-flows/OptimismLayer1GasFeeFlow.d.ts +10 -0
  92. package/dist/types/gas-flows/OptimismLayer1GasFeeFlow.d.ts.map +1 -0
  93. package/dist/types/helpers/GasFeePoller.d.ts +4 -5
  94. package/dist/types/helpers/GasFeePoller.d.ts.map +1 -1
  95. package/dist/types/helpers/MultichainTrackingHelper.d.ts +4 -0
  96. package/dist/types/helpers/MultichainTrackingHelper.d.ts.map +1 -1
  97. package/dist/types/index.d.ts +1 -1
  98. package/dist/types/index.d.ts.map +1 -1
  99. package/dist/types/types.d.ts +10 -6
  100. package/dist/types/types.d.ts.map +1 -1
  101. package/dist/types/utils/layer1-gas-fee-flow.d.ts +11 -2
  102. package/dist/types/utils/layer1-gas-fee-flow.d.ts.map +1 -1
  103. package/dist/types/utils/simulation-api.d.ts.map +1 -1
  104. package/dist/types/utils/simulation.d.ts.map +1 -1
  105. package/dist/types.js +4 -2
  106. package/dist/types.mjs +3 -1
  107. package/dist/utils/etherscan.js +3 -3
  108. package/dist/utils/etherscan.mjs +2 -2
  109. package/dist/utils/external-transactions.js +1 -1
  110. package/dist/utils/external-transactions.mjs +1 -1
  111. package/dist/utils/gas-fees.js +6 -6
  112. package/dist/utils/gas-fees.mjs +5 -5
  113. package/dist/utils/gas-flow.js +3 -3
  114. package/dist/utils/gas-flow.mjs +2 -2
  115. package/dist/utils/gas.js +3 -3
  116. package/dist/utils/gas.mjs +2 -2
  117. package/dist/utils/layer1-gas-fee-flow.js +4 -2
  118. package/dist/utils/layer1-gas-fee-flow.mjs +3 -1
  119. package/dist/utils/simulation-api.js +4 -2
  120. package/dist/utils/simulation-api.mjs +3 -1
  121. package/dist/utils/simulation.js +5 -4
  122. package/dist/utils/simulation.mjs +4 -3
  123. package/dist/utils/swaps.js +4 -4
  124. package/dist/utils/swaps.mjs +3 -3
  125. package/dist/utils/transaction-type.js +1 -1
  126. package/dist/utils/transaction-type.mjs +1 -1
  127. package/dist/utils/utils.js +1 -1
  128. package/dist/utils/utils.mjs +1 -1
  129. package/dist/utils/validation.js +1 -1
  130. package/dist/utils/validation.mjs +1 -1
  131. package/package.json +6 -4
  132. package/dist/chunk-6XMG522E.mjs.map +0 -1
  133. package/dist/chunk-7QOACSQU.js.map +0 -1
  134. package/dist/chunk-7YLATOE4.js.map +0 -1
  135. package/dist/chunk-BYBPZUHS.mjs.map +0 -1
  136. package/dist/chunk-GC77BSQZ.js.map +0 -1
  137. package/dist/chunk-GE57YNGX.js.map +0 -1
  138. package/dist/chunk-ITDY6AIZ.js.map +0 -1
  139. package/dist/chunk-KFL2GGZC.mjs.map +0 -1
  140. package/dist/chunk-LADOJTK4.mjs.map +0 -1
  141. package/dist/chunk-M6Q3DVMJ.mjs.map +0 -1
  142. package/dist/chunk-MXQLW52B.js.map +0 -1
  143. package/dist/chunk-NRWEI43Q.js.map +0 -1
  144. package/dist/chunk-R7NJVDWN.js.map +0 -1
  145. package/dist/chunk-UVKK5JBJ.mjs.map +0 -1
  146. package/dist/chunk-Z3HHSD5I.mjs.map +0 -1
  147. package/dist/chunk-ZQFMTLZJ.mjs.map +0 -1
  148. /package/dist/{chunk-US7NQPYE.js.map → chunk-6V2LR6JL.js.map} +0 -0
  149. /package/dist/{chunk-CSQPJCBP.mjs.map → chunk-7HNSDVVO.mjs.map} +0 -0
  150. /package/dist/{chunk-F3CMU2DM.js.map → chunk-C3UHJPYJ.js.map} +0 -0
  151. /package/dist/{chunk-RQKICZYP.js.map → chunk-GRQB2ARK.js.map} +0 -0
  152. /package/dist/{chunk-XKNFL657.mjs.map → chunk-HLG525BC.mjs.map} +0 -0
  153. /package/dist/{chunk-PVO55HHW.mjs.map → chunk-KKCD5UMP.mjs.map} +0 -0
  154. /package/dist/{chunk-5OQ373JS.js.map → chunk-QTQSCTQA.js.map} +0 -0
  155. /package/dist/{chunk-VEREDMI2.mjs.map → chunk-RIYIJTEU.mjs.map} +0 -0
  156. /package/dist/{chunk-IZI7FQIN.mjs.map → chunk-RU6NJIUD.mjs.map} +0 -0
  157. /package/dist/{chunk-3D3SA6PY.mjs.map → chunk-TJXPMOA6.mjs.map} +0 -0
  158. /package/dist/{chunk-HXPG3DIX.mjs.map → chunk-TWND5SFD.mjs.map} +0 -0
  159. /package/dist/{chunk-Z4FIWEAJ.mjs.map → chunk-TZEAWUXE.mjs.map} +0 -0
  160. /package/dist/{chunk-GQYELPS3.js.map → chunk-UH7FNVKS.js.map} +0 -0
  161. /package/dist/{chunk-SSYRMQ63.js.map → chunk-UUSYJGGQ.js.map} +0 -0
  162. /package/dist/{chunk-CXXGL43K.js.map → chunk-VP2DBWOT.js.map} +0 -0
  163. /package/dist/{chunk-CWJBSWH3.js.map → chunk-XZILQVNW.js.map} +0 -0
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
3
 
4
- var _chunkCXXGL43Kjs = require('./chunk-CXXGL43K.js');
4
+ var _chunkVP2DBWOTjs = require('./chunk-VP2DBWOT.js');
5
5
 
6
6
 
7
- var _chunkITDY6AIZjs = require('./chunk-ITDY6AIZ.js');
7
+ var _chunkWIZVJM2Bjs = require('./chunk-WIZVJM2B.js');
8
8
 
9
9
 
10
10
  var _chunkS6VGOPUYjs = require('./chunk-S6VGOPUY.js');
@@ -36,7 +36,7 @@ var EtherscanRemoteTransactionSource = class {
36
36
  _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _mutex, new (0, _asyncmutex.Mutex)());
37
37
  _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _fetchNormalTransactions, async (request, etherscanRequest) => {
38
38
  const { currentChainId } = request;
39
- const etherscanTransactions = await _chunkCXXGL43Kjs.fetchEtherscanTransactions.call(void 0,
39
+ const etherscanTransactions = await _chunkVP2DBWOTjs.fetchEtherscanTransactions.call(void 0,
40
40
  etherscanRequest
41
41
  );
42
42
  return _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _getResponseTransactions, getResponseTransactions_fn).call(this, etherscanTransactions).map(
@@ -45,7 +45,7 @@ var EtherscanRemoteTransactionSource = class {
45
45
  });
46
46
  _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _fetchTokenTransactions, async (request, etherscanRequest) => {
47
47
  const { currentChainId } = request;
48
- const etherscanTransactions = await _chunkCXXGL43Kjs.fetchEtherscanTokenTransactions.call(void 0,
48
+ const etherscanTransactions = await _chunkVP2DBWOTjs.fetchEtherscanTokenTransactions.call(void 0,
49
49
  etherscanRequest
50
50
  );
51
51
  return _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _getResponseTransactions, getResponseTransactions_fn).call(this, etherscanTransactions).map(
@@ -56,7 +56,7 @@ var EtherscanRemoteTransactionSource = class {
56
56
  _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _isTokenRequestPending, false);
57
57
  }
58
58
  isSupportedNetwork(chainId) {
59
- return Object.keys(_chunkITDY6AIZjs.ETHERSCAN_SUPPORTED_NETWORKS).includes(chainId);
59
+ return Object.keys(_chunkWIZVJM2Bjs.ETHERSCAN_SUPPORTED_NETWORKS).includes(chainId);
60
60
  }
61
61
  getLastBlockVariations() {
62
62
  return [_chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _isTokenRequestPending) ? "token" : "normal"];
@@ -167,4 +167,4 @@ normalizeTransactionBase_fn = function(txMeta, currentChainId) {
167
167
 
168
168
 
169
169
  exports.EtherscanRemoteTransactionSource = EtherscanRemoteTransactionSource;
170
- //# sourceMappingURL=chunk-F3CMU2DM.js.map
170
+ //# sourceMappingURL=chunk-C3UHJPYJ.js.map
@@ -26,7 +26,8 @@ var CHAIN_IDS = {
26
26
  MOONRIVER: "0x505",
27
27
  GNOSIS: "0x64",
28
28
  ARBITRUM: "0xa4b1",
29
- ZKSYNC_ERA: "0x144"
29
+ ZKSYNC_ERA: "0x144",
30
+ ZORA: "0x76adf1"
30
31
  };
31
32
  var DEFAULT_ETHERSCAN_DOMAIN = "etherscan.io";
32
33
  var DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX = "api";
@@ -124,4 +125,4 @@ export {
124
125
  ETHERSCAN_SUPPORTED_NETWORKS,
125
126
  GAS_BUFFER_CHAIN_OVERRIDES
126
127
  };
127
- //# sourceMappingURL=chunk-Z3HHSD5I.mjs.map
128
+ //# sourceMappingURL=chunk-DTMKGTYC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants.ts"],"sourcesContent":["export const CHAIN_IDS = {\n MAINNET: '0x1',\n GOERLI: '0x5',\n BASE: '0x2105',\n BASE_TESTNET: '0x14a33',\n BSC: '0x38',\n BSC_TESTNET: '0x61',\n OPTIMISM: '0xa',\n OPTIMISM_TESTNET: '0x1a4',\n OPBNB: '0xcc',\n OPBNB_TESTNET: '0x15eb',\n OPTIMISM_SEPOLIA: '0xaa37dc',\n POLYGON: '0x89',\n POLYGON_TESTNET: '0x13881',\n AVALANCHE: '0xa86a',\n AVALANCHE_TESTNET: '0xa869',\n FANTOM: '0xfa',\n FANTOM_TESTNET: '0xfa2',\n SEPOLIA: '0xaa36a7',\n LINEA_GOERLI: '0xe704',\n LINEA_SEPOLIA: '0xe705',\n LINEA_MAINNET: '0xe708',\n MOONBEAM: '0x504',\n MOONBEAM_TESTNET: '0x507',\n MOONRIVER: '0x505',\n GNOSIS: '0x64',\n ARBITRUM: '0xa4b1',\n ZKSYNC_ERA: '0x144',\n ZORA: '0x76adf1',\n} as const;\n\nexport const DEFAULT_ETHERSCAN_DOMAIN = 'etherscan.io';\nexport const DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX = 'api';\n\nexport const ETHERSCAN_SUPPORTED_NETWORKS = {\n [CHAIN_IDS.GOERLI]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-goerli`,\n },\n [CHAIN_IDS.MAINNET]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.SEPOLIA]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-sepolia`,\n },\n [CHAIN_IDS.LINEA_GOERLI]: {\n domain: 'lineascan.build',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-goerli`,\n },\n [CHAIN_IDS.LINEA_SEPOLIA]: {\n domain: 'lineascan.build',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-sepolia`,\n },\n [CHAIN_IDS.LINEA_MAINNET]: {\n domain: 'lineascan.build',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.BSC]: {\n domain: 'bscscan.com',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.BSC_TESTNET]: {\n domain: 'bscscan.com',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,\n },\n [CHAIN_IDS.OPTIMISM]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-optimistic`,\n },\n [CHAIN_IDS.OPTIMISM_SEPOLIA]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-sepolia-optimistic`,\n },\n [CHAIN_IDS.POLYGON]: {\n domain: 'polygonscan.com',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.POLYGON_TESTNET]: {\n domain: 'polygonscan.com',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-mumbai`,\n },\n [CHAIN_IDS.AVALANCHE]: {\n domain: 'snowtrace.io',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.AVALANCHE_TESTNET]: {\n domain: 'snowtrace.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,\n },\n [CHAIN_IDS.FANTOM]: {\n domain: 'ftmscan.com',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.FANTOM_TESTNET]: {\n domain: 'ftmscan.com',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,\n },\n [CHAIN_IDS.MOONBEAM]: {\n domain: 'moonscan.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonbeam`,\n },\n [CHAIN_IDS.MOONBEAM_TESTNET]: {\n domain: 'moonscan.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonbase`,\n },\n [CHAIN_IDS.MOONRIVER]: {\n domain: 'moonscan.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonriver`,\n },\n [CHAIN_IDS.GNOSIS]: {\n domain: 'gnosisscan.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-gnosis`,\n },\n};\n\nexport const GAS_BUFFER_CHAIN_OVERRIDES = {\n [CHAIN_IDS.OPTIMISM]: 1,\n [CHAIN_IDS.OPTIMISM_SEPOLIA]: 1,\n};\n"],"mappings":"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","names":[]}
@@ -64,6 +64,13 @@ var SimulationTokenStandard = /* @__PURE__ */ ((SimulationTokenStandard2) => {
64
64
  SimulationTokenStandard2["erc1155"] = "erc1155";
65
65
  return SimulationTokenStandard2;
66
66
  })(SimulationTokenStandard || {});
67
+ var SimulationErrorCode = /* @__PURE__ */ ((SimulationErrorCode2) => {
68
+ SimulationErrorCode2["ChainNotSupported"] = "chain-not-supported";
69
+ SimulationErrorCode2["Disabled"] = "disabled";
70
+ SimulationErrorCode2["InvalidResponse"] = "invalid-response";
71
+ SimulationErrorCode2["Reverted"] = "reverted";
72
+ return SimulationErrorCode2;
73
+ })(SimulationErrorCode || {});
67
74
 
68
75
 
69
76
 
@@ -73,5 +80,6 @@ var SimulationTokenStandard = /* @__PURE__ */ ((SimulationTokenStandard2) => {
73
80
 
74
81
 
75
82
 
76
- exports.TransactionStatus = TransactionStatus; exports.WalletDevice = WalletDevice; exports.TransactionType = TransactionType; exports.TransactionEnvelopeType = TransactionEnvelopeType; exports.UserFeeLevel = UserFeeLevel; exports.GasFeeEstimateLevel = GasFeeEstimateLevel; exports.SimulationTokenStandard = SimulationTokenStandard;
77
- //# sourceMappingURL=chunk-MXQLW52B.js.map
83
+
84
+ exports.TransactionStatus = TransactionStatus; exports.WalletDevice = WalletDevice; exports.TransactionType = TransactionType; exports.TransactionEnvelopeType = TransactionEnvelopeType; exports.UserFeeLevel = UserFeeLevel; exports.GasFeeEstimateLevel = GasFeeEstimateLevel; exports.SimulationTokenStandard = SimulationTokenStandard; exports.SimulationErrorCode = SimulationErrorCode;
85
+ //# sourceMappingURL=chunk-FK7AP6SH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types.ts"],"names":["TransactionStatus","WalletDevice","TransactionType","TransactionEnvelopeType","UserFeeLevel","GasFeeEstimateLevel","SimulationTokenStandard","SimulationErrorCode"],"mappings":";AAgbO,IAAK,oBAAL,kBAAKA,uBAAL;AACL,EAAAA,mBAAA,cAAW;AAEX,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,aAAU;AACV,EAAAA,mBAAA,YAAS;AACT,EAAAA,mBAAA,cAAW;AACX,EAAAA,mBAAA,YAAS;AACT,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,gBAAa;AAVH,SAAAA;AAAA,GAAA;AAgBL,IAAK,eAAL,kBAAKC,kBAAL;AACL,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,kBAAe;AACf,EAAAA,cAAA,WAAQ;AAHE,SAAAA;AAAA,GAAA;AASL,IAAK,kBAAL,kBAAKC,qBAAL;AAIL,EAAAA,iBAAA,YAAS;AAOT,EAAAA,iBAAA,yBAAsB;AAKtB,EAAAA,iBAAA,oBAAiB;AAKjB,EAAAA,iBAAA,gBAAa;AAKb,EAAAA,iBAAA,+BAA4B;AAK5B,EAAAA,iBAAA,cAAW;AAKX,EAAAA,iBAAA,kBAAe;AAQf,EAAAA,iBAAA,WAAQ;AAKR,EAAAA,iBAAA,gBAAa;AAKb,EAAAA,iBAAA,UAAO;AAKP,EAAAA,iBAAA,mBAAgB;AAKhB,EAAAA,iBAAA,WAAQ;AAKR,EAAAA,iBAAA,UAAO;AAQP,EAAAA,iBAAA,kBAAe;AAMf,EAAAA,iBAAA,wBAAqB;AAQrB,EAAAA,iBAAA,iCAA8B;AAM9B,EAAAA,iBAAA,yBAAsB;AAOtB,EAAAA,iBAAA,6BAA0B;AAM1B,EAAAA,iBAAA,kCAA+B;AAK/B,EAAAA,iBAAA,kCAA+B;AAnHrB,SAAAA;AAAA,GAAA;AAqZL,IAAK,0BAAL,kBAAKC,6BAAL;AAIL,EAAAA,yBAAA,YAAS;AAOT,EAAAA,yBAAA,gBAAa;AAUb,EAAAA,yBAAA,eAAY;AArBF,SAAAA;AAAA,GAAA;AA2BL,IAAK,eAAL,kBAAKC,kBAAL;AACL,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,oBAAiB;AACjB,EAAAA,cAAA,YAAS;AAHC,SAAAA;AAAA,GAAA;AA2FL,IAAK,sBAAL,kBAAKC,yBAAL;AACL,EAAAA,qBAAA,SAAM;AACN,EAAAA,qBAAA,YAAS;AACT,EAAAA,qBAAA,UAAO;AAHG,SAAAA;AAAA,GAAA;AAyGL,IAAK,0BAAL,kBAAKC,6BAAL;AACL,EAAAA,yBAAA,WAAQ;AACR,EAAAA,yBAAA,YAAS;AACT,EAAAA,yBAAA,aAAU;AAHA,SAAAA;AAAA,GAAA;AAsBL,IAAK,sBAAL,kBAAKC,yBAAL;AACL,EAAAA,qBAAA,uBAAoB;AACpB,EAAAA,qBAAA,cAAW;AACX,EAAAA,qBAAA,qBAAkB;AAClB,EAAAA,qBAAA,cAAW;AAJD,SAAAA;AAAA,GAAA","sourcesContent":["import type { AccessList } from '@ethereumjs/tx';\nimport type EthQuery from '@metamask/eth-query';\nimport type {\n FetchGasFeeEstimateOptions,\n GasFeeState,\n} from '@metamask/gas-fee-controller';\nimport type { NetworkClientId, Provider } from '@metamask/network-controller';\nimport type { Hex, Json } from '@metamask/utils';\nimport type { Operation } from 'fast-json-patch';\n\n/**\n * Given a record, ensures that each property matches the `Json` type.\n */\ntype MakeJsonCompatible<T> = T extends Json\n ? T\n : {\n [K in keyof T]: T[K] extends Json ? T[K] : never;\n };\n\n/**\n * `Json` from `@metamask/utils` is defined as a recursive type alias, but\n * `Operation` is defined as an interface, and the two are not compatible with\n * each other. Therefore, this is a variant of Operation from `fast-json-patch`\n * which is guaranteed to be type-compatible with `Json`.\n */\ntype JsonCompatibleOperation = MakeJsonCompatible<Operation>;\n\n/**\n * Representation of transaction metadata.\n */\nexport type TransactionMeta = TransactionMetaBase &\n (\n | {\n status: Exclude<TransactionStatus, TransactionStatus.failed>;\n }\n | {\n status: TransactionStatus.failed;\n error: TransactionError;\n }\n );\n\n/**\n * Information about a single transaction such as status and block number.\n */\ntype TransactionMetaBase = {\n /**\n * ID of the transaction that approved the swap token transfer.\n */\n approvalTxId?: string;\n\n /**\n * Unique ID to prevent duplicate requests.\n */\n actionId?: string;\n\n /**\n * Base fee of the block as a hex value, introduced in EIP-1559.\n */\n baseFeePerGas?: Hex;\n\n /**\n * Number of the block where the transaction has been included.\n */\n blockNumber?: string;\n\n /**\n * The timestamp for when the block was collated.\n */\n blockTimestamp?: string;\n\n /**\n * Network code as per EIP-155 for this transaction.\n */\n chainId: Hex;\n\n /**\n * A string representing a name of transaction contract method.\n */\n contractMethodName?: string;\n\n /**\n * The balance of the token that is being sent.\n */\n currentTokenBalance?: string;\n\n /**\n * Unique ID for custodian transaction.\n */\n custodyId?: string;\n\n /**\n * Custodian transaction status.\n */\n custodyStatus?: string;\n\n /** The optional custom nonce override as a decimal string. */\n customNonceValue?: string;\n\n /**\n * The custom token amount is the amount set by the user.\n */\n customTokenAmount?: string;\n\n /**\n * The dapp proposed token amount.\n */\n dappProposedTokenAmount?: string;\n\n /**\n * Gas values provided by the dApp.\n */\n dappSuggestedGasFees?: DappSuggestedGasFees;\n\n /**\n * The initial gas values set when the transaction was first created.\n */\n defaultGasEstimates?: DefaultGasEstimates;\n\n /**\n * String to indicate what device the transaction was confirmed on.\n */\n deviceConfirmedOn?: WalletDevice;\n\n /**\n * The address of the token being received of swap transaction.\n */\n destinationTokenAddress?: string;\n\n /**\n * The decimals of the token being received of swap transaction.\n */\n destinationTokenDecimals?: number;\n\n /**\n * The symbol of the token being received with swap.\n */\n destinationTokenSymbol?: string;\n\n /**\n * The estimated base fee of the transaction.\n */\n estimatedBaseFee?: string;\n\n /**\n * Which estimate level that the API suggested.\n */\n estimateSuggested?: string;\n\n /**\n * Which estimate level was used\n */\n estimateUsed?: string;\n\n /**\n * The chosen amount which will be the same as the originally proposed token\n * amount if the user does not edit the amount or will be a custom token\n * amount set by the user.\n */\n finalApprovalAmount?: string;\n\n /**\n * The number of the latest block when the transaction submit was first retried.\n */\n firstRetryBlockNumber?: string;\n\n /** Alternate EIP-1559 gas fee estimates for multiple priority levels. */\n gasFeeEstimates?: GasFeeEstimates;\n\n /** Whether the gas fee estimates have been checked at least once. */\n gasFeeEstimatesLoaded?: boolean;\n\n /**\n * A hex string of the transaction hash, used to identify the transaction on the network.\n */\n hash?: string;\n\n /**\n * A history of mutations to TransactionMeta.\n */\n history?: TransactionHistory;\n\n /**\n * Generated UUID associated with this transaction.\n */\n id: string;\n\n /**\n * Whether the transaction is a transfer.\n */\n isTransfer?: boolean;\n\n /**\n * Whether the transaction entry is generated from a user operation.\n */\n isUserOperation?: boolean;\n\n /**\n * Additional gas fees to cover the cost of persisting data on layer 1 for layer 2 networks.\n */\n layer1GasFee?: Hex;\n\n /**\n * The ID of the network client used by the transaction.\n */\n networkClientId?: NetworkClientId;\n\n /**\n * Network code as per EIP-155 for this transaction\n *\n * @deprecated Use `chainId` instead.\n */\n readonly networkID?: string;\n\n /**\n * Origin this transaction was sent from.\n */\n origin?: string;\n\n /**\n * The original dapp proposed token approval amount before edit by user.\n */\n originalApprovalAmount?: string;\n\n /**\n * The original gas estimation of the transaction.\n */\n originalGasEstimate?: string;\n\n /**\n * When we speed up a transaction, we set the type as Retry and we lose\n * information about type of transaction that is being set up, so we use\n * original type to track that information.\n */\n originalType?: TransactionType;\n\n /**\n * Account transaction balance after swap.\n */\n postTxBalance?: string;\n\n /**\n * Account transaction balance before swap.\n */\n preTxBalance?: string;\n\n /**\n * The previous gas properties before they were updated.\n */\n previousGas?: {\n /**\n * Maxmimum number of units of gas to use for this transaction.\n */\n gasLimit?: string;\n\n /**\n * Maximum amount per gas to pay for the transaction, including the priority fee.\n */\n maxFeePerGas?: string;\n\n /**\n * Maximum amount per gas to give to validator as incentive.\n */\n maxPriorityFeePerGas?: string;\n };\n\n /**\n * The transaction's 'r' value as a hex string.\n */\n r?: string;\n\n /**\n * Hex representation of the underlying transaction.\n */\n rawTx?: string;\n\n /**\n * When the transaction is dropped, this is the replacement transaction hash.\n */\n replacedBy?: string;\n\n /**\n * When the transaction is dropped, this is the replacement transaction ID.\n */\n replacedById?: string;\n\n /**\n * The number of times that the transaction submit has been retried.\n */\n retryCount?: number;\n\n /**\n * The transaction's 's' value as a hex string.\n */\n s?: string;\n\n /**\n * Response from security validator.\n */\n securityAlertResponse?: SecurityAlertResponse;\n\n /**\n * Response from security provider.\n */\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n securityProviderResponse?: Record<string, any>;\n\n /**\n * An array of entries that describe the user's journey through the send flow.\n * This is purely attached to state logs for troubleshooting and support.\n */\n sendFlowHistory?: SendFlowHistoryEntry[];\n\n /**\n * Simulation data for the transaction used to predict its outcome.\n */\n simulationData?: SimulationData;\n\n /**\n * If the gas estimation fails, an object containing error and block information.\n */\n simulationFails?: {\n reason?: string;\n errorKey?: string;\n debug: {\n blockNumber?: string;\n blockGasLimit?: string;\n };\n };\n\n /**\n * The time the transaction was submitted to the network, in Unix epoch time (ms).\n */\n submittedTime?: number;\n\n /**\n * The symbol of the token being swapped.\n */\n sourceTokenSymbol?: string;\n\n /**\n * The metadata of the swap transaction.\n */\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n swapMetaData?: Record<string, any>;\n\n /**\n * The value of the token being swapped.\n */\n swapTokenValue?: string;\n\n /**\n * Timestamp associated with this transaction.\n */\n time: number;\n\n /**\n * Whether transaction recipient is a smart contract.\n */\n toSmartContract?: boolean;\n\n /**\n * Additional transfer information.\n */\n transferInformation?: {\n contractAddress: string;\n decimals: number;\n symbol: string;\n };\n\n /**\n * Underlying Transaction object.\n */\n txParams: TransactionParams;\n\n /**\n * Transaction receipt.\n */\n txReceipt?: TransactionReceipt;\n\n /**\n * The type of transaction such as `cancel` or `swap`.\n */\n type?: TransactionType;\n\n /**\n * The gas limit supplied by user.\n */\n userEditedGasLimit?: boolean;\n\n /**\n * Estimate level user selected.\n */\n userFeeLevel?: string;\n\n /**\n * The transaction's 'v' value as a hex string.\n */\n v?: string;\n\n /**\n * Whether the transaction is verified on the blockchain.\n */\n verifiedOnBlockchain?: boolean;\n\n /**\n * Warning information for the transaction.\n */\n warning?: {\n error: string;\n message: string;\n };\n};\n\nexport type SendFlowHistoryEntry = {\n /**\n * String to indicate user interaction information.\n */\n entry: string;\n\n /**\n * Timestamp associated with this entry.\n */\n timestamp: number;\n};\n\n/**\n * The status of the transaction. Each status represents the state of the transaction internally\n * in the wallet. Some of these correspond with the state of the transaction on the network, but\n * some are wallet-specific.\n */\nexport enum TransactionStatus {\n approved = 'approved',\n /** @deprecated Determined by the clients using the transaction type. No longer used. */\n cancelled = 'cancelled',\n confirmed = 'confirmed',\n dropped = 'dropped',\n failed = 'failed',\n rejected = 'rejected',\n signed = 'signed',\n submitted = 'submitted',\n unapproved = 'unapproved',\n}\n\n/**\n * Options for wallet device.\n */\nexport enum WalletDevice {\n MM_MOBILE = 'metamask_mobile',\n MM_EXTENSION = 'metamask_extension',\n OTHER = 'other_device',\n}\n\n/**\n * The type of the transaction.\n */\nexport enum TransactionType {\n /**\n * A transaction sending a network's native asset to a recipient.\n */\n cancel = 'cancel',\n\n /**\n * A transaction that is interacting with a smart contract's methods that we\n * have not treated as a special case, such as approve, transfer, and\n * transferfrom.\n */\n contractInteraction = 'contractInteraction',\n\n /**\n * A transaction that deployed a smart contract.\n */\n deployContract = 'contractDeployment',\n\n /**\n * A transaction for Ethereum decryption.\n */\n ethDecrypt = 'eth_decrypt',\n\n /**\n * A transaction for getting an encryption public key.\n */\n ethGetEncryptionPublicKey = 'eth_getEncryptionPublicKey',\n\n /**\n * An incoming (deposit) transaction.\n */\n incoming = 'incoming',\n\n /**\n * A transaction for personal sign.\n */\n personalSign = 'personal_sign',\n\n /**\n * When a transaction is failed it can be retried by\n * resubmitting the same transaction with a higher gas fee. This type is also used\n * to speed up pending transactions. This is accomplished by creating a new tx with\n * the same nonce and higher gas fees.\n */\n retry = 'retry',\n\n /**\n * A transaction sending a network's native asset to a recipient.\n */\n simpleSend = 'simpleSend',\n\n /**\n * A transaction that is signing a message.\n */\n sign = 'eth_sign',\n\n /**\n * A transaction that is signing typed data.\n */\n signTypedData = 'eth_signTypedData',\n\n /**\n * A transaction sending a network's native asset to a recipient.\n */\n smart = 'smart',\n\n /**\n * A transaction swapping one token for another through MetaMask Swaps.\n */\n swap = 'swap',\n\n /**\n * Similar to the approve type, a swap approval is a special case of ERC20\n * approve method that requests an allowance of the token to spend on behalf\n * of the user for the MetaMask Swaps contract. The first swap for any token\n * will have an accompanying swapApproval transaction.\n */\n swapApproval = 'swapApproval',\n\n /**\n * A token transaction requesting an allowance of the token to spend on\n * behalf of the user.\n */\n tokenMethodApprove = 'approve',\n\n /**\n * A token transaction transferring tokens from an account that the sender\n * has an allowance of. The method is prefixed with safe because when calling\n * this method the contract checks to ensure that the receiver is an address\n * capable of handling the token being sent.\n */\n tokenMethodSafeTransferFrom = 'safetransferfrom',\n\n /**\n * A token transaction where the user is sending tokens that they own to\n * another address.\n */\n tokenMethodTransfer = 'transfer',\n\n /**\n * A token transaction transferring tokens from an account that the sender\n * has an allowance of. For more information on allowances, see the approve\n * type.\n */\n tokenMethodTransferFrom = 'transferfrom',\n\n /**\n * A token transaction requesting an allowance of all of a user's tokens to\n * spend on behalf of the user.\n */\n tokenMethodSetApprovalForAll = 'setapprovalforall',\n\n /**\n * Increase the allowance by a given increment\n */\n tokenMethodIncreaseAllowance = 'increaseAllowance',\n}\n\n/**\n * Standard data concerning a transaction to be processed by the blockchain.\n */\nexport type TransactionParams = {\n /**\n * A list of addresses and storage keys that the transaction plans to access.\n */\n accessList?: AccessList;\n\n /**\n * Network ID as per EIP-155.\n */\n chainId?: Hex;\n\n /**\n * Data to pass with this transaction.\n */\n data?: string;\n\n /**\n * Error message for gas estimation failure.\n */\n estimateGasError?: string;\n\n /**\n * Estimated base fee for this transaction.\n */\n estimatedBaseFee?: string;\n\n /**\n * Which estimate level that the API suggested.\n */\n estimateSuggested?: string;\n\n /**\n * Which estimate level was used\n */\n estimateUsed?: string;\n\n /**\n * Address to send this transaction from.\n */\n from: string;\n\n /**\n * same as gasLimit?\n */\n gas?: string;\n\n /**\n * Maxmimum number of units of gas to use for this transaction.\n */\n gasLimit?: string;\n\n /**\n * Price per gas for legacy txs\n */\n gasPrice?: string;\n\n /**\n * Gas used in the transaction.\n */\n gasUsed?: string;\n\n /**\n * Maximum amount per gas to pay for the transaction, including the priority\n * fee.\n */\n maxFeePerGas?: string;\n\n /**\n * Maximum amount per gas to give to validator as incentive.\n */\n maxPriorityFeePerGas?: string;\n\n /**\n * Unique number to prevent replay attacks.\n */\n nonce?: string;\n\n /**\n * Address to send this transaction to.\n */\n to?: string;\n\n /**\n * Value associated with this transaction.\n */\n value?: string;\n\n /**\n * Type of transaction.\n * 0x0 indicates a legacy transaction.\n */\n type?: string;\n};\n\n/**\n * Standard data concerning a transaction processed by the blockchain.\n */\nexport type TransactionReceipt = {\n /**\n * The block hash of the block that this transaction was included in.\n */\n blockHash?: string;\n\n /**\n * The block number of the block that this transaction was included in.\n */\n blockNumber?: string;\n\n /**\n * Effective gas price the transaction was charged at.\n */\n effectiveGasPrice?: string;\n\n /**\n * Gas used in the transaction.\n */\n gasUsed?: string;\n\n /**\n * Total used gas in hex.\n */\n l1Fee?: string;\n\n /**\n * All the logs emitted by this transaction.\n */\n logs?: Log[];\n\n /**\n * The status of the transaction.\n */\n status?: string;\n\n /**\n * The hexadecimal index of this transaction in the list of transactions included in the block this transaction was mined in.\n */\n transactionIndex?: string;\n};\n\n/**\n * Represents an event that has been included in a transaction using the EVM `LOG` opcode.\n */\nexport type Log = {\n /**\n * Address of the contract that generated log.\n */\n address?: string;\n /**\n * List of topics for log.\n */\n topics?: string;\n};\n\n/**\n * The configuration required to fetch transaction data from a RemoteTransactionSource.\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 RemoteTransactionSourceRequest {\n /**\n * The address of the account to fetch transactions for.\n */\n address: string;\n\n /**\n * The chainId of the current network.\n */\n currentChainId: Hex;\n\n /**\n * Block number to start fetching transactions from.\n */\n fromBlock?: number;\n\n /**\n * Maximum number of transactions to retrieve.\n */\n limit?: number;\n}\n\n/**\n * An object capable of fetching transaction data from a remote source.\n * Used by the IncomingTransactionHelper to retrieve remote transaction data.\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 RemoteTransactionSource {\n /**\n * @param chainId - The chainId of the current network.\n * @returns Whether the remote transaction source supports the specified network.\n */\n isSupportedNetwork: (chainId: Hex) => boolean;\n\n /**\n * @returns An array of additional keys to use when caching the last fetched block number.\n */\n getLastBlockVariations?: () => string[];\n\n /**\n * @param request - A request object containing data such as the address and chain ID.\n * @returns An array of transaction metadata for the retrieved transactions.\n */\n fetchTransactions: (\n request: RemoteTransactionSourceRequest,\n ) => Promise<TransactionMeta[]>;\n}\n\n/**\n * Gas values initially suggested by the dApp.\n */\nexport type DappSuggestedGasFees = {\n gas?: string;\n gasPrice?: string;\n maxFeePerGas?: string;\n maxPriorityFeePerGas?: string;\n};\n\n/**\n * Gas values saved by the user for a specific chain.\n */\n// Convert to a `type` in a future major version.\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport interface SavedGasFees {\n maxBaseFee: string;\n priorityFee: string;\n}\n\n/**\n * A transaction history operation that includes a note and timestamp.\n */\ntype ExtendedHistoryOperation = JsonCompatibleOperation & {\n note?: string;\n timestamp?: number;\n};\n\n/**\n * A transaction history entry that includes the ExtendedHistoryOperation as the first element.\n */\nexport type TransactionHistoryEntry = [\n ExtendedHistoryOperation,\n ...JsonCompatibleOperation[],\n];\n\n/**\n * A transaction history that includes the transaction meta as the first element.\n * And the rest of the elements are the operation arrays that were applied to the transaction meta.\n */\nexport type TransactionHistory = [\n TransactionMeta,\n ...TransactionHistoryEntry[],\n];\n\n/**\n * Result of inferring the transaction type.\n */\nexport type InferTransactionTypeResult = {\n /**\n * The contract code, in hex format if it exists. '0x0' or\n * '0x' are also indicators of non-existent contract code.\n */\n getCodeResponse?: string | null;\n\n /**\n * The type of transaction\n */\n type: TransactionType;\n};\n\n/**\n * A function for verifying a transaction, whether it is malicious or not.\n */\nexport type SecurityProviderRequest = (\n requestData: TransactionMeta,\n messageType: string,\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => Promise<any>;\n\n/**\n * Specifies the shape of the base transaction parameters.\n * Added in EIP-2718.\n */\nexport enum TransactionEnvelopeType {\n /**\n * A legacy transaction, the very first type.\n */\n legacy = '0x0',\n\n /**\n * EIP-2930 defined the access list transaction type that allowed for\n * specifying the state that a transaction would act upon in advance and\n * theoretically save on gas fees.\n */\n accessList = '0x1',\n\n /**\n * The type introduced comes from EIP-1559, Fee Market describes the addition\n * of a baseFee to blocks that will be burned instead of distributed to\n * miners. Transactions of this type have both a maxFeePerGas (maximum total\n * amount in gwei per gas to spend on the transaction) which is inclusive of\n * the maxPriorityFeePerGas (maximum amount of gwei per gas from the\n * transaction fee to distribute to miner).\n */\n feeMarket = '0x2',\n}\n\n/**\n * The source of the gas fee parameters on a transaction.\n */\nexport enum UserFeeLevel {\n CUSTOM = 'custom',\n DAPP_SUGGESTED = 'dappSuggested',\n MEDIUM = 'medium',\n}\n\n/**\n * Initial gas values set when the transaction was first created.\n */\nexport type DefaultGasEstimates = {\n /**\n * Source of the gas fee values, such as `dappSuggested` or `medium`.\n */\n estimateType?: string;\n\n /**\n * Maxmimum number of units of gas to use for this transaction.\n */\n gas?: string;\n\n /**\n * Price per gas for legacy transactions.\n */\n gasPrice?: string;\n\n /**\n * Maximum amount per gas to pay for the transaction, including the priority fee.\n */\n maxFeePerGas?: string;\n\n /**\n * Maximum amount per gas to give to validator as incentive.\n */\n maxPriorityFeePerGas?: string;\n};\n\n/**\n * Data concerning an error while processing a transaction.\n */\nexport type TransactionError = {\n /**\n * A descriptive error name.\n */\n name: string;\n\n /**\n * A descriptive error message providing details about the encountered error.\n */\n message: string;\n\n /**\n * The stack trace associated with the error, if available.\n */\n stack?: string;\n\n /**\n * An optional error code associated with the error.\n */\n code?: string;\n\n /**\n * The rpc property holds additional information related to the error.\n */\n // We are intentionally using `any` here instead of `Json` because it causes\n // `WritableDraft<TransactionMeta>` from Immer to cause TypeScript to error\n // with \"Type instantiation is excessively deep and possibly infinite\". See:\n // <https://github.com/immerjs/immer/issues/839>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rpc?: any;\n};\n\n/**\n * Type for security alert response from transaction validator.\n */\nexport type SecurityAlertResponse = {\n reason: string;\n features?: string[];\n result_type: string;\n providerRequestsCount?: Record<string, number>;\n};\n\n/** Gas fee estimates for a specific priority level. */\nexport type GasFeeEstimatesForLevel = {\n /** Maximum amount to pay per gas. */\n maxFeePerGas: Hex;\n\n /** Maximum amount per gas to give to the validator as an incentive. */\n maxPriorityFeePerGas: Hex;\n};\n\n/** Alternate priority levels for which values are provided in gas fee estimates. */\nexport enum GasFeeEstimateLevel {\n low = 'low',\n medium = 'medium',\n high = 'high',\n}\n\n/** Gas fee estimates for a transaction. */\nexport type GasFeeEstimates = {\n /** The gas fee estimate for a low priority transaction. */\n [GasFeeEstimateLevel.low]: GasFeeEstimatesForLevel;\n\n /** The gas fee estimate for a medium priority transaction. */\n [GasFeeEstimateLevel.medium]: GasFeeEstimatesForLevel;\n\n /** The gas fee estimate for a high priority transaction. */\n [GasFeeEstimateLevel.high]: GasFeeEstimatesForLevel;\n};\n\n/** Request to a gas fee flow to obtain gas fee estimates. */\nexport type GasFeeFlowRequest = {\n /** An EthQuery instance to enable queries to the associated RPC provider. */\n ethQuery: EthQuery;\n\n /** Callback to get the GasFeeController estimates. */\n getGasFeeControllerEstimates: (\n options: FetchGasFeeEstimateOptions,\n ) => Promise<GasFeeState>;\n\n /** The metadata of the transaction to obtain estimates for. */\n transactionMeta: TransactionMeta;\n};\n\n/** Response from a gas fee flow containing gas fee estimates. */\nexport type GasFeeFlowResponse = {\n /** The gas fee estimates for the transaction. */\n estimates: GasFeeEstimates;\n};\n\n/** A method of obtaining gas fee estimates for a specific transaction. */\nexport type GasFeeFlow = {\n /**\n * Determine if the gas fee flow supports the specified transaction.\n * @param transactionMeta - The transaction metadata.\n * @returns Whether the gas fee flow supports the transaction.\n */\n matchesTransaction(transactionMeta: TransactionMeta): boolean;\n\n /**\n * Get gas fee estimates for a specific transaction.\n * @param request - The gas fee flow request.\n * @returns The gas fee flow response containing the gas fee estimates.\n */\n getGasFees: (request: GasFeeFlowRequest) => Promise<GasFeeFlowResponse>;\n};\n\n/** Request to a layer 1 gas fee flow to obtain layer 1 fee estimate. */\nexport type Layer1GasFeeFlowRequest = {\n /** RPC Provider instance. */\n provider: Provider;\n\n /** The metadata of the transaction to obtain estimates for. */\n transactionMeta: TransactionMeta;\n};\n\n/** Response from a layer 1 gas fee flow containing layer 1 fee estimate. */\nexport type Layer1GasFeeFlowResponse = {\n /** The gas fee estimates for the transaction. */\n layer1Fee: Hex;\n};\n\n/** A method of obtaining layer 1 gas fee estimates for a specific transaction. */\nexport type Layer1GasFeeFlow = {\n /**\n * Determine if the gas fee flow supports the specified transaction.\n * @param transactionMeta - The transaction metadata.\n * @returns Whether the layer1 gas fee flow supports the transaction.\n */\n matchesTransaction(transactionMeta: TransactionMeta): boolean;\n\n /**\n * Get layer 1 gas fee estimates for a specific transaction.\n * @param request - The gas fee flow request.\n * @returns The gas fee flow response containing the layer 1 gas fee estimate.\n */\n getLayer1Fee: (\n request: Layer1GasFeeFlowRequest,\n ) => Promise<Layer1GasFeeFlowResponse>;\n};\n\n/** Simulation data concerning an update to a native or token balance. */\nexport type SimulationBalanceChange = {\n /** The balance before the transaction. */\n previousBalance: Hex;\n\n /** The balance after the transaction. */\n newBalance: Hex;\n\n /** The difference in balance. */\n difference: Hex;\n\n /** Whether the balance is increasing or decreasing. */\n isDecrease: boolean;\n};\n\n/** Token standards supported by simulation. */\nexport enum SimulationTokenStandard {\n erc20 = 'erc20',\n erc721 = 'erc721',\n erc1155 = 'erc1155',\n}\n\n/** Simulation data concerning an updated token. */\nexport type SimulationToken = {\n /** The token's contract address. */\n address: Hex;\n\n /** The standard of the token. */\n standard: SimulationTokenStandard;\n\n /** The ID of the token if supported by the standard. */\n id?: Hex;\n};\n\n/** Simulation data concerning a change to the a token balance. */\nexport type SimulationTokenBalanceChange = SimulationToken &\n SimulationBalanceChange;\n\nexport enum SimulationErrorCode {\n ChainNotSupported = 'chain-not-supported',\n Disabled = 'disabled',\n InvalidResponse = 'invalid-response',\n Reverted = 'reverted',\n}\n\n/** Error data for a failed simulation. */\nexport type SimulationError = {\n /** Error code to identify the error type. */\n code?: string | number;\n\n /** Error message to describe the error. */\n message?: string;\n};\n\n/** Simulation data for a transaction. */\nexport type SimulationData = {\n /** Error data if the simulation failed or the transaction reverted. */\n error?: SimulationError;\n\n /** Data concerning a change to the user's native balance. */\n nativeBalanceChange?: SimulationBalanceChange;\n\n /** Data concerning a change to the user's token balances. */\n tokenBalanceChanges: SimulationTokenBalanceChange[];\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EtherscanRemoteTransactionSource
3
- } from "./chunk-IZI7FQIN.mjs";
3
+ } from "./chunk-RU6NJIUD.mjs";
4
4
  import {
5
5
  incomingTransactionsLogger
6
6
  } from "./chunk-UQQWZT6C.mjs";
@@ -14,7 +14,7 @@ import {
14
14
  // src/helpers/MultichainTrackingHelper.ts
15
15
  import EthQuery from "@metamask/eth-query";
16
16
  import { Mutex } from "async-mutex";
17
- var _isMultichainEnabled, _provider, _nonceTracker, _incomingTransactionOptions, _findNetworkClientIdByChainId, _getNetworkClientById, _getNetworkClientRegistry, _removeIncomingTransactionHelperListeners, _removePendingTransactionTrackerListeners, _createNonceTracker, _createIncomingTransactionHelper, _createPendingTransactionTracker, _nonceMutexesByChainId, _trackingMap, _etherscanRemoteTransactionSourcesMap, _refreshTrackingMap, _stopTrackingByNetworkClientId, stopTrackingByNetworkClientId_fn, _startTrackingByNetworkClientId, startTrackingByNetworkClientId_fn, _refreshEtherscanRemoteTransactionSources;
17
+ var _isMultichainEnabled, _provider, _nonceTracker, _incomingTransactionOptions, _findNetworkClientIdByChainId, _getNetworkClientById, _getNetworkClientRegistry, _removeIncomingTransactionHelperListeners, _removePendingTransactionTrackerListeners, _createNonceTracker, _createIncomingTransactionHelper, _createPendingTransactionTracker, _nonceMutexesByChainId, _trackingMap, _etherscanRemoteTransactionSourcesMap, _refreshTrackingMap, _stopTrackingByNetworkClientId, stopTrackingByNetworkClientId_fn, _startTrackingByNetworkClientId, startTrackingByNetworkClientId_fn, _refreshEtherscanRemoteTransactionSources, _getNetworkClient, getNetworkClient_fn;
18
18
  var MultichainTrackingHelper = class {
19
19
  constructor({
20
20
  isMultichainEnabled,
@@ -33,6 +33,7 @@ var MultichainTrackingHelper = class {
33
33
  }) {
34
34
  __privateAdd(this, _stopTrackingByNetworkClientId);
35
35
  __privateAdd(this, _startTrackingByNetworkClientId);
36
+ __privateAdd(this, _getNetworkClient);
36
37
  __privateAdd(this, _isMultichainEnabled, void 0);
37
38
  __privateAdd(this, _provider, void 0);
38
39
  __privateAdd(this, _nonceTracker, void 0);
@@ -123,30 +124,21 @@ var MultichainTrackingHelper = class {
123
124
  getEthQuery({
124
125
  networkClientId,
125
126
  chainId
127
+ } = {}) {
128
+ return new EthQuery(this.getProvider({ networkClientId, chainId }));
129
+ }
130
+ getProvider({
131
+ networkClientId,
132
+ chainId
126
133
  } = {}) {
127
134
  if (!__privateGet(this, _isMultichainEnabled)) {
128
- return new EthQuery(__privateGet(this, _provider));
129
- }
130
- let networkClient;
131
- if (networkClientId) {
132
- try {
133
- networkClient = __privateGet(this, _getNetworkClientById).call(this, networkClientId);
134
- } catch (err) {
135
- incomingTransactionsLogger("failed to get network client by networkClientId");
136
- }
137
- }
138
- if (!networkClient && chainId) {
139
- try {
140
- networkClientId = __privateGet(this, _findNetworkClientIdByChainId).call(this, chainId);
141
- networkClient = __privateGet(this, _getNetworkClientById).call(this, networkClientId);
142
- } catch (err) {
143
- incomingTransactionsLogger("failed to get network client by chainId");
144
- }
135
+ return __privateGet(this, _provider);
145
136
  }
146
- if (networkClient) {
147
- return new EthQuery(networkClient.provider);
148
- }
149
- return new EthQuery(__privateGet(this, _provider));
137
+ const networkClient = __privateMethod(this, _getNetworkClient, getNetworkClient_fn).call(this, {
138
+ networkClientId,
139
+ chainId
140
+ });
141
+ return networkClient?.provider || __privateGet(this, _provider);
150
142
  }
151
143
  /**
152
144
  * Gets the mutex intended to guard the nonceTracker for a particular chainId and key .
@@ -313,8 +305,31 @@ startTrackingByNetworkClientId_fn = function(networkClientId) {
313
305
  });
314
306
  };
315
307
  _refreshEtherscanRemoteTransactionSources = new WeakMap();
308
+ _getNetworkClient = new WeakSet();
309
+ getNetworkClient_fn = function({
310
+ networkClientId,
311
+ chainId
312
+ } = {}) {
313
+ let networkClient;
314
+ if (networkClientId) {
315
+ try {
316
+ networkClient = __privateGet(this, _getNetworkClientById).call(this, networkClientId);
317
+ } catch (err) {
318
+ incomingTransactionsLogger("failed to get network client by networkClientId");
319
+ }
320
+ }
321
+ if (!networkClient && chainId) {
322
+ try {
323
+ const networkClientIdForChainId = __privateGet(this, _findNetworkClientIdByChainId).call(this, chainId);
324
+ networkClient = __privateGet(this, _getNetworkClientById).call(this, networkClientIdForChainId);
325
+ } catch (err) {
326
+ incomingTransactionsLogger("failed to get network client by chainId");
327
+ }
328
+ }
329
+ return networkClient;
330
+ };
316
331
 
317
332
  export {
318
333
  MultichainTrackingHelper
319
334
  };
320
- //# sourceMappingURL=chunk-ZQFMTLZJ.mjs.map
335
+ //# sourceMappingURL=chunk-FTB6MCSH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/helpers/MultichainTrackingHelper.ts"],"sourcesContent":["import EthQuery from '@metamask/eth-query';\nimport type {\n NetworkClientId,\n NetworkController,\n NetworkClient,\n BlockTracker,\n Provider,\n NetworkControllerStateChangeEvent,\n} from '@metamask/network-controller';\nimport type { Hex } from '@metamask/utils';\nimport { Mutex } from 'async-mutex';\nimport type { NonceLock, NonceTracker } from 'nonce-tracker';\n\nimport { incomingTransactionsLogger as log } from '../logger';\nimport { EtherscanRemoteTransactionSource } from './EtherscanRemoteTransactionSource';\nimport type {\n IncomingTransactionHelper,\n IncomingTransactionOptions,\n} from './IncomingTransactionHelper';\nimport type { PendingTransactionTracker } from './PendingTransactionTracker';\n\n/**\n * Registry of network clients provided by the NetworkController\n */\ntype NetworkClientRegistry = ReturnType<\n NetworkController['getNetworkClientRegistry']\n>;\n\nexport type MultichainTrackingHelperOptions = {\n isMultichainEnabled: boolean;\n provider: Provider;\n nonceTracker: NonceTracker;\n incomingTransactionOptions: IncomingTransactionOptions;\n\n findNetworkClientIdByChainId: NetworkController['findNetworkClientIdByChainId'];\n getNetworkClientById: NetworkController['getNetworkClientById'];\n getNetworkClientRegistry: NetworkController['getNetworkClientRegistry'];\n\n removeIncomingTransactionHelperListeners: (\n IncomingTransactionHelper: IncomingTransactionHelper,\n ) => void;\n removePendingTransactionTrackerListeners: (\n pendingTransactionTracker: PendingTransactionTracker,\n ) => void;\n createNonceTracker: (opts: {\n provider: Provider;\n blockTracker: BlockTracker;\n chainId?: Hex;\n }) => NonceTracker;\n createIncomingTransactionHelper: (opts: {\n blockTracker: BlockTracker;\n etherscanRemoteTransactionSource: EtherscanRemoteTransactionSource;\n chainId?: Hex;\n }) => IncomingTransactionHelper;\n createPendingTransactionTracker: (opts: {\n provider: Provider;\n blockTracker: BlockTracker;\n chainId?: Hex;\n }) => PendingTransactionTracker;\n onNetworkStateChange: (\n listener: (\n ...payload: NetworkControllerStateChangeEvent['payload']\n ) => void,\n ) => void;\n};\n\nexport class MultichainTrackingHelper {\n #isMultichainEnabled: boolean;\n\n readonly #provider: Provider;\n\n readonly #nonceTracker: NonceTracker;\n\n readonly #incomingTransactionOptions: IncomingTransactionOptions;\n\n readonly #findNetworkClientIdByChainId: NetworkController['findNetworkClientIdByChainId'];\n\n readonly #getNetworkClientById: NetworkController['getNetworkClientById'];\n\n readonly #getNetworkClientRegistry: NetworkController['getNetworkClientRegistry'];\n\n readonly #removeIncomingTransactionHelperListeners: (\n IncomingTransactionHelper: IncomingTransactionHelper,\n ) => void;\n\n readonly #removePendingTransactionTrackerListeners: (\n pendingTransactionTracker: PendingTransactionTracker,\n ) => void;\n\n readonly #createNonceTracker: (opts: {\n provider: Provider;\n blockTracker: BlockTracker;\n chainId?: Hex;\n }) => NonceTracker;\n\n readonly #createIncomingTransactionHelper: (opts: {\n blockTracker: BlockTracker;\n chainId?: Hex;\n etherscanRemoteTransactionSource: EtherscanRemoteTransactionSource;\n }) => IncomingTransactionHelper;\n\n readonly #createPendingTransactionTracker: (opts: {\n provider: Provider;\n blockTracker: BlockTracker;\n chainId?: Hex;\n }) => PendingTransactionTracker;\n\n readonly #nonceMutexesByChainId = new Map<Hex, Map<string, Mutex>>();\n\n readonly #trackingMap: Map<\n NetworkClientId,\n {\n nonceTracker: NonceTracker;\n pendingTransactionTracker: PendingTransactionTracker;\n incomingTransactionHelper: IncomingTransactionHelper;\n }\n > = new Map();\n\n readonly #etherscanRemoteTransactionSourcesMap: Map<\n Hex,\n EtherscanRemoteTransactionSource\n > = new Map();\n\n constructor({\n isMultichainEnabled,\n provider,\n nonceTracker,\n incomingTransactionOptions,\n findNetworkClientIdByChainId,\n getNetworkClientById,\n getNetworkClientRegistry,\n removeIncomingTransactionHelperListeners,\n removePendingTransactionTrackerListeners,\n createNonceTracker,\n createIncomingTransactionHelper,\n createPendingTransactionTracker,\n onNetworkStateChange,\n }: MultichainTrackingHelperOptions) {\n this.#isMultichainEnabled = isMultichainEnabled;\n this.#provider = provider;\n this.#nonceTracker = nonceTracker;\n this.#incomingTransactionOptions = incomingTransactionOptions;\n\n this.#findNetworkClientIdByChainId = findNetworkClientIdByChainId;\n this.#getNetworkClientById = getNetworkClientById;\n this.#getNetworkClientRegistry = getNetworkClientRegistry;\n\n this.#removeIncomingTransactionHelperListeners =\n removeIncomingTransactionHelperListeners;\n this.#removePendingTransactionTrackerListeners =\n removePendingTransactionTrackerListeners;\n this.#createNonceTracker = createNonceTracker;\n this.#createIncomingTransactionHelper = createIncomingTransactionHelper;\n this.#createPendingTransactionTracker = createPendingTransactionTracker;\n\n onNetworkStateChange((_, patches) => {\n if (this.#isMultichainEnabled) {\n const networkClients = this.#getNetworkClientRegistry();\n patches.forEach(({ op, path }) => {\n if (op === 'remove' && path[0] === 'networkConfigurations') {\n const networkClientId = path[1] as NetworkClientId;\n delete networkClients[networkClientId];\n }\n });\n\n this.#refreshTrackingMap(networkClients);\n }\n });\n }\n\n initialize() {\n if (!this.#isMultichainEnabled) {\n return;\n }\n const networkClients = this.#getNetworkClientRegistry();\n this.#refreshTrackingMap(networkClients);\n }\n\n has(networkClientId: NetworkClientId) {\n return this.#trackingMap.has(networkClientId);\n }\n\n getEthQuery({\n networkClientId,\n chainId,\n }: {\n networkClientId?: NetworkClientId;\n chainId?: Hex;\n } = {}): EthQuery {\n return new EthQuery(this.getProvider({ networkClientId, chainId }));\n }\n\n getProvider({\n networkClientId,\n chainId,\n }: {\n networkClientId?: NetworkClientId;\n chainId?: Hex;\n } = {}): Provider {\n if (!this.#isMultichainEnabled) {\n return this.#provider;\n }\n\n const networkClient = this.#getNetworkClient({\n networkClientId,\n chainId,\n });\n\n return networkClient?.provider || this.#provider;\n }\n\n /**\n * Gets the mutex intended to guard the nonceTracker for a particular chainId and key .\n *\n * @param opts - The options object.\n * @param opts.chainId - The hex chainId.\n * @param opts.key - The hex address (or constant) pertaining to the chainId\n * @returns Mutex instance for the given chainId and key pair\n */\n async acquireNonceLockForChainIdKey({\n chainId,\n key = 'global',\n }: {\n chainId: Hex;\n key?: string;\n }): Promise<() => void> {\n let nonceMutexesForChainId = this.#nonceMutexesByChainId.get(chainId);\n if (!nonceMutexesForChainId) {\n nonceMutexesForChainId = new Map<string, Mutex>();\n this.#nonceMutexesByChainId.set(chainId, nonceMutexesForChainId);\n }\n let nonceMutexForKey = nonceMutexesForChainId.get(key);\n if (!nonceMutexForKey) {\n nonceMutexForKey = new Mutex();\n nonceMutexesForChainId.set(key, nonceMutexForKey);\n }\n\n return await nonceMutexForKey.acquire();\n }\n\n /**\n * Gets the next nonce according to the nonce-tracker.\n * Ensure `releaseLock` is called once processing of the `nonce` value is complete.\n *\n * @param address - The hex string address for the transaction.\n * @param networkClientId - The network client ID for the transaction, used to fetch the correct nonce tracker.\n * @returns object with the `nextNonce` `nonceDetails`, and the releaseLock.\n */\n async getNonceLock(\n address: string,\n networkClientId?: NetworkClientId,\n ): Promise<NonceLock> {\n let releaseLockForChainIdKey: (() => void) | undefined;\n let nonceTracker = this.#nonceTracker;\n if (networkClientId && this.#isMultichainEnabled) {\n const networkClient = this.#getNetworkClientById(networkClientId);\n releaseLockForChainIdKey = await this.acquireNonceLockForChainIdKey({\n chainId: networkClient.configuration.chainId,\n key: address,\n });\n const trackers = this.#trackingMap.get(networkClientId);\n if (!trackers) {\n throw new Error('missing nonceTracker for networkClientId');\n }\n nonceTracker = trackers.nonceTracker;\n }\n\n // Acquires the lock for the chainId + address and the nonceLock from the nonceTracker, then\n // couples them together by replacing the nonceLock's releaseLock method with\n // an anonymous function that calls releases both the original nonceLock and the\n // lock for the chainId.\n try {\n const nonceLock = await nonceTracker.getNonceLock(address);\n return {\n ...nonceLock,\n releaseLock: () => {\n nonceLock.releaseLock();\n releaseLockForChainIdKey?.();\n },\n };\n } catch (err) {\n releaseLockForChainIdKey?.();\n throw err;\n }\n }\n\n startIncomingTransactionPolling(networkClientIds: NetworkClientId[] = []) {\n networkClientIds.forEach((networkClientId) => {\n this.#trackingMap.get(networkClientId)?.incomingTransactionHelper.start();\n });\n }\n\n stopIncomingTransactionPolling(networkClientIds: NetworkClientId[] = []) {\n networkClientIds.forEach((networkClientId) => {\n this.#trackingMap.get(networkClientId)?.incomingTransactionHelper.stop();\n });\n }\n\n stopAllIncomingTransactionPolling() {\n for (const [, trackers] of this.#trackingMap) {\n trackers.incomingTransactionHelper.stop();\n }\n }\n\n async updateIncomingTransactions(networkClientIds: NetworkClientId[] = []) {\n const promises = await Promise.allSettled(\n networkClientIds.map(async (networkClientId) => {\n return await this.#trackingMap\n .get(networkClientId)\n ?.incomingTransactionHelper.update();\n }),\n );\n\n promises\n .filter((result) => result.status === 'rejected')\n .forEach((result) => {\n log(\n 'failed to update incoming transactions',\n (result as PromiseRejectedResult).reason,\n );\n });\n }\n\n checkForPendingTransactionAndStartPolling = () => {\n for (const [, trackers] of this.#trackingMap) {\n trackers.pendingTransactionTracker.startIfPendingTransactions();\n }\n };\n\n stopAllTracking() {\n for (const [networkClientId] of this.#trackingMap) {\n this.#stopTrackingByNetworkClientId(networkClientId);\n }\n }\n\n #refreshTrackingMap = (networkClients: NetworkClientRegistry) => {\n this.#refreshEtherscanRemoteTransactionSources(networkClients);\n\n const networkClientIds = Object.keys(networkClients);\n const existingNetworkClientIds = Array.from(this.#trackingMap.keys());\n\n // Remove tracking for NetworkClientIds that no longer exist\n const networkClientIdsToRemove = existingNetworkClientIds.filter(\n (id) => !networkClientIds.includes(id),\n );\n networkClientIdsToRemove.forEach((id) => {\n this.#stopTrackingByNetworkClientId(id);\n });\n\n // Start tracking new NetworkClientIds from the registry\n const networkClientIdsToAdd = networkClientIds.filter(\n (id) => !existingNetworkClientIds.includes(id),\n );\n networkClientIdsToAdd.forEach((id) => {\n this.#startTrackingByNetworkClientId(id);\n });\n };\n\n #stopTrackingByNetworkClientId(networkClientId: NetworkClientId) {\n const trackers = this.#trackingMap.get(networkClientId);\n if (trackers) {\n trackers.pendingTransactionTracker.stop();\n this.#removePendingTransactionTrackerListeners(\n trackers.pendingTransactionTracker,\n );\n trackers.incomingTransactionHelper.stop();\n this.#removeIncomingTransactionHelperListeners(\n trackers.incomingTransactionHelper,\n );\n this.#trackingMap.delete(networkClientId);\n }\n }\n\n #startTrackingByNetworkClientId(networkClientId: NetworkClientId) {\n const trackers = this.#trackingMap.get(networkClientId);\n if (trackers) {\n return;\n }\n\n const {\n provider,\n blockTracker,\n configuration: { chainId },\n } = this.#getNetworkClientById(networkClientId);\n\n let etherscanRemoteTransactionSource =\n this.#etherscanRemoteTransactionSourcesMap.get(chainId);\n if (!etherscanRemoteTransactionSource) {\n etherscanRemoteTransactionSource = new EtherscanRemoteTransactionSource({\n includeTokenTransfers:\n this.#incomingTransactionOptions.includeTokenTransfers,\n });\n this.#etherscanRemoteTransactionSourcesMap.set(\n chainId,\n etherscanRemoteTransactionSource,\n );\n }\n\n const nonceTracker = this.#createNonceTracker({\n provider,\n blockTracker,\n chainId,\n });\n\n const incomingTransactionHelper = this.#createIncomingTransactionHelper({\n blockTracker,\n etherscanRemoteTransactionSource,\n chainId,\n });\n\n const pendingTransactionTracker = this.#createPendingTransactionTracker({\n provider,\n blockTracker,\n chainId,\n });\n\n this.#trackingMap.set(networkClientId, {\n nonceTracker,\n incomingTransactionHelper,\n pendingTransactionTracker,\n });\n }\n\n #refreshEtherscanRemoteTransactionSources = (\n networkClients: NetworkClientRegistry,\n ) => {\n // this will be prettier when we have consolidated network clients with a single chainId:\n // check if there are still other network clients using the same chainId\n // if not remove the etherscanRemoteTransaction source from the map\n const chainIdsInRegistry = new Set();\n Object.values(networkClients).forEach((networkClient) =>\n chainIdsInRegistry.add(networkClient.configuration.chainId),\n );\n const existingChainIds = Array.from(\n this.#etherscanRemoteTransactionSourcesMap.keys(),\n );\n const chainIdsToRemove = existingChainIds.filter(\n (chainId) => !chainIdsInRegistry.has(chainId),\n );\n\n chainIdsToRemove.forEach((chainId) => {\n this.#etherscanRemoteTransactionSourcesMap.delete(chainId);\n });\n };\n\n #getNetworkClient({\n networkClientId,\n chainId,\n }: {\n networkClientId?: NetworkClientId;\n chainId?: Hex;\n } = {}): NetworkClient | undefined {\n let networkClient: NetworkClient | undefined;\n\n if (networkClientId) {\n try {\n networkClient = this.#getNetworkClientById(networkClientId);\n } catch (err) {\n log('failed to get network client by networkClientId');\n }\n }\n if (!networkClient && chainId) {\n try {\n const networkClientIdForChainId =\n this.#findNetworkClientIdByChainId(chainId);\n networkClient = this.#getNetworkClientById(networkClientIdForChainId);\n } catch (err) {\n log('failed to get network client by chainId');\n }\n }\n return networkClient;\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,12 +1,15 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
+ var _chunkSD6CWFDFjs = require('./chunk-SD6CWFDF.js');
4
+
5
+
3
6
 
4
7
  var _chunkVH47Q6TSjs = require('./chunk-VH47Q6TS.js');
5
8
 
6
9
 
7
10
 
8
11
 
9
- var _chunkRQKICZYPjs = require('./chunk-RQKICZYP.js');
12
+ var _chunkGRQB2ARKjs = require('./chunk-GRQB2ARK.js');
10
13
 
11
14
 
12
15
 
@@ -17,22 +20,26 @@ var _chunkQP75SWIQjs = require('./chunk-QP75SWIQ.js');
17
20
  var _chunkZNZEJDOEjs = require('./chunk-ZNZEJDOE.js');
18
21
 
19
22
 
20
- var _chunkGC77BSQZjs = require('./chunk-GC77BSQZ.js');
23
+ var _chunkV5X6MZHNjs = require('./chunk-V5X6MZHN.js');
21
24
 
22
25
 
23
- var _chunkSD6CWFDFjs = require('./chunk-SD6CWFDF.js');
26
+ var _chunkQG2WVQE3js = require('./chunk-QG2WVQE3.js');
27
+
24
28
 
29
+ var _chunkHUVOOFOMjs = require('./chunk-HUVOOFOM.js');
25
30
 
26
- var _chunk7YLATOE4js = require('./chunk-7YLATOE4.js');
27
31
 
28
32
 
29
- var _chunkR7NJVDWNjs = require('./chunk-R7NJVDWN.js');
33
+ var _chunk5WFLNKCLjs = require('./chunk-5WFLNKCL.js');
30
34
 
31
35
 
32
36
  var _chunkDTDTOMTBjs = require('./chunk-DTDTOMTB.js');
33
37
 
34
38
 
35
- var _chunkNRWEI43Qjs = require('./chunk-NRWEI43Q.js');
39
+ var _chunkI7VD6IETjs = require('./chunk-I7VD6IET.js');
40
+
41
+
42
+ var _chunkC3UHJPYJjs = require('./chunk-C3UHJPYJ.js');
36
43
 
37
44
 
38
45
  var _chunk5XBULBP2js = require('./chunk-5XBULBP2.js');
@@ -41,17 +48,17 @@ var _chunk5XBULBP2js = require('./chunk-5XBULBP2.js');
41
48
  var _chunk7LXE4KHVjs = require('./chunk-7LXE4KHV.js');
42
49
 
43
50
 
44
- var _chunkCWJBSWH3js = require('./chunk-CWJBSWH3.js');
51
+ var _chunkXZILQVNWjs = require('./chunk-XZILQVNW.js');
45
52
 
46
53
 
47
- var _chunkUS7NQPYEjs = require('./chunk-US7NQPYE.js');
54
+ var _chunk6V2LR6JLjs = require('./chunk-6V2LR6JL.js');
48
55
 
49
56
 
50
- var _chunkSSYRMQ63js = require('./chunk-SSYRMQ63.js');
57
+ var _chunkUUSYJGGQjs = require('./chunk-UUSYJGGQ.js');
51
58
 
52
59
 
53
60
 
54
- var _chunk5OQ373JSjs = require('./chunk-5OQ373JS.js');
61
+ var _chunkQTQSCTQAjs = require('./chunk-QTQSCTQA.js');
55
62
 
56
63
 
57
64
 
@@ -66,9 +73,6 @@ var _chunk5OQ373JSjs = require('./chunk-5OQ373JS.js');
66
73
  var _chunkUGFBA4GVjs = require('./chunk-UGFBA4GV.js');
67
74
 
68
75
 
69
- var _chunkF3CMU2DMjs = require('./chunk-F3CMU2DM.js');
70
-
71
-
72
76
  var _chunkS6VGOPUYjs = require('./chunk-S6VGOPUY.js');
73
77
 
74
78
 
@@ -256,7 +260,7 @@ var TransactionController = class extends _basecontroller.BaseController {
256
260
  provider,
257
261
  blockTracker
258
262
  });
259
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _multichainTrackingHelper, new (0, _chunkNRWEI43Qjs.MultichainTrackingHelper)({
263
+ _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _multichainTrackingHelper, new (0, _chunkI7VD6IETjs.MultichainTrackingHelper)({
260
264
  isMultichainEnabled,
261
265
  provider,
262
266
  nonceTracker: this.nonceTracker,
@@ -287,7 +291,7 @@ var TransactionController = class extends _basecontroller.BaseController {
287
291
  }
288
292
  }));
289
293
  _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _multichainTrackingHelper).initialize();
290
- const etherscanRemoteTransactionSource = new (0, _chunkF3CMU2DMjs.EtherscanRemoteTransactionSource)({
294
+ const etherscanRemoteTransactionSource = new (0, _chunkC3UHJPYJjs.EtherscanRemoteTransactionSource)({
291
295
  includeTokenTransfers: incomingTransactions.includeTokenTransfers
292
296
  });
293
297
  this.incomingTransactionHelper = _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _createIncomingTransactionHelper, createIncomingTransactionHelper_fn).call(this, {
@@ -300,14 +304,14 @@ var TransactionController = class extends _basecontroller.BaseController {
300
304
  });
301
305
  this.gasFeeFlows = _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _getGasFeeFlows, getGasFeeFlows_fn).call(this);
302
306
  this.layer1GasFeeFlows = _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _getLayer1GasFeeFlows, getLayer1GasFeeFlows_fn).call(this);
303
- const gasFeePoller = new (0, _chunk7YLATOE4js.GasFeePoller)({
307
+ const gasFeePoller = new (0, _chunkHUVOOFOMjs.GasFeePoller)({
304
308
  // Default gas fee polling is not yet supported by the clients
305
309
  gasFeeFlows: this.gasFeeFlows.slice(0, -1),
306
- getEthQuery: (chainId, networkClientId) => _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _multichainTrackingHelper).getEthQuery({
310
+ getGasFeeControllerEstimates: this.getGasFeeEstimates,
311
+ getProvider: (chainId, networkClientId) => _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _multichainTrackingHelper).getProvider({
307
312
  networkClientId,
308
313
  chainId
309
314
  }),
310
- getGasFeeControllerEstimates: this.getGasFeeEstimates,
311
315
  getTransactions: () => this.state.transactions,
312
316
  layer1GasFeeFlows: this.layer1GasFeeFlows,
313
317
  onStateChange: (listener) => {
@@ -493,7 +497,7 @@ var TransactionController = class extends _basecontroller.BaseController {
493
497
  if (!this.isHistoryDisabled) {
494
498
  addedTransactionMeta = _chunkQP75SWIQjs.addInitialHistorySnapshot.call(void 0, addedTransactionMeta);
495
499
  }
496
- addedTransactionMeta = _chunk5OQ373JSjs.updateSwapsTransaction.call(void 0,
500
+ addedTransactionMeta = _chunkQTQSCTQAjs.updateSwapsTransaction.call(void 0,
497
501
  addedTransactionMeta,
498
502
  transactionType,
499
503
  swaps,
@@ -504,7 +508,11 @@ var TransactionController = class extends _basecontroller.BaseController {
504
508
  }
505
509
  );
506
510
  this.addMetadata(addedTransactionMeta);
507
- _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _updateSimulationData, updateSimulationData_fn).call(this, addedTransactionMeta);
511
+ if (requireApproval !== false) {
512
+ _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _updateSimulationData, updateSimulationData_fn).call(this, addedTransactionMeta);
513
+ } else {
514
+ _chunkS6VGOPUYjs.projectLogger.call(void 0, "Skipping simulation as approval not required");
515
+ }
508
516
  this.messagingSystem.publish(
509
517
  `${controllerName}:unapprovedTransactionAdded`,
510
518
  addedTransactionMeta
@@ -814,7 +822,7 @@ var TransactionController = class extends _basecontroller.BaseController {
814
822
  const ethQuery = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _multichainTrackingHelper).getEthQuery({
815
823
  networkClientId
816
824
  });
817
- const { estimatedGas, simulationFails } = await _chunkRQKICZYPjs.estimateGas.call(void 0,
825
+ const { estimatedGas, simulationFails } = await _chunkGRQB2ARKjs.estimateGas.call(void 0,
818
826
  transaction,
819
827
  ethQuery
820
828
  );
@@ -831,11 +839,11 @@ var TransactionController = class extends _basecontroller.BaseController {
831
839
  const ethQuery = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _multichainTrackingHelper).getEthQuery({
832
840
  networkClientId
833
841
  });
834
- const { blockGasLimit, estimatedGas, simulationFails } = await _chunkRQKICZYPjs.estimateGas.call(void 0,
842
+ const { blockGasLimit, estimatedGas, simulationFails } = await _chunkGRQB2ARKjs.estimateGas.call(void 0,
835
843
  transaction,
836
844
  ethQuery
837
845
  );
838
- const gas = _chunkRQKICZYPjs.addGasBuffer.call(void 0, estimatedGas, blockGasLimit, multiplier);
846
+ const gas = _chunkGRQB2ARKjs.addGasBuffer.call(void 0, estimatedGas, blockGasLimit, multiplier);
839
847
  return {
840
848
  gas,
841
849
  simulationFails
@@ -1137,18 +1145,19 @@ var TransactionController = class extends _basecontroller.BaseController {
1137
1145
  editableParams.txParams
1138
1146
  );
1139
1147
  const updatedTransaction = _lodash.merge.call(void 0, {}, transactionMeta, editableParams);
1140
- const ethQuery = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _multichainTrackingHelper).getEthQuery({
1141
- networkClientId: transactionMeta.networkClientId,
1142
- chainId: transactionMeta.chainId
1148
+ const provider = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _multichainTrackingHelper).getProvider({
1149
+ chainId: transactionMeta.chainId,
1150
+ networkClientId: transactionMeta.networkClientId
1143
1151
  });
1152
+ const ethQuery = new (0, _ethquery2.default)(provider);
1144
1153
  const { type } = await _chunkSD6CWFDFjs.determineTransactionType.call(void 0,
1145
1154
  updatedTransaction.txParams,
1146
1155
  ethQuery
1147
1156
  );
1148
1157
  updatedTransaction.type = type;
1149
- await _chunkR7NJVDWNjs.updateTransactionLayer1GasFee.call(void 0, {
1150
- ethQuery,
1158
+ await _chunk5WFLNKCLjs.updateTransactionLayer1GasFee.call(void 0, {
1151
1159
  layer1GasFeeFlows: this.layer1GasFeeFlows,
1160
+ provider,
1152
1161
  transactionMeta: updatedTransaction
1153
1162
  });
1154
1163
  this.updateTransaction(
@@ -1356,6 +1365,28 @@ var TransactionController = class extends _basecontroller.BaseController {
1356
1365
  }
1357
1366
  return filteredTransactions;
1358
1367
  }
1368
+ /**
1369
+ * Utility method to get the layer 1 gas fee for given transaction params.
1370
+ *
1371
+ * @param chainId - Estimated transaction chainId.
1372
+ * @param networkClientId - Estimated transaction networkClientId.
1373
+ * @param transactionParams - The transaction params to estimate layer 1 gas fee for.
1374
+ */
1375
+ async getLayer1GasFee(chainId, networkClientId, transactionParams) {
1376
+ const provider = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _multichainTrackingHelper).getProvider({
1377
+ networkClientId,
1378
+ chainId
1379
+ });
1380
+ const layer1GasFee = await _chunk5WFLNKCLjs.getTransactionLayer1GasFee.call(void 0, {
1381
+ layer1GasFeeFlows: this.layer1GasFeeFlows,
1382
+ provider,
1383
+ transactionMeta: {
1384
+ txParams: transactionParams,
1385
+ chainId
1386
+ }
1387
+ });
1388
+ return layer1GasFee;
1389
+ }
1359
1390
  async signExternalTransaction(chainId, transactionParams) {
1360
1391
  if (!this.sign) {
1361
1392
  throw new Error("No sign method defined.");
@@ -1427,13 +1458,17 @@ var TransactionController = class extends _basecontroller.BaseController {
1427
1458
  networkClientId,
1428
1459
  chainId
1429
1460
  });
1430
- await _chunkRQKICZYPjs.updateGas.call(void 0, {
1461
+ const provider = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _multichainTrackingHelper).getProvider({
1462
+ networkClientId,
1463
+ chainId
1464
+ });
1465
+ await _chunkGRQB2ARKjs.updateGas.call(void 0, {
1431
1466
  ethQuery,
1432
1467
  chainId,
1433
1468
  isCustomNetwork,
1434
1469
  txMeta: transactionMeta
1435
1470
  });
1436
- await _chunkSSYRMQ63js.updateGasFees.call(void 0, {
1471
+ await _chunkUUSYJGGQjs.updateGasFees.call(void 0, {
1437
1472
  eip1559: isEIP1559Compatible,
1438
1473
  ethQuery,
1439
1474
  gasFeeFlows: this.gasFeeFlows,
@@ -1441,9 +1476,9 @@ var TransactionController = class extends _basecontroller.BaseController {
1441
1476
  getSavedGasFees: this.getSavedGasFees.bind(this),
1442
1477
  txMeta: transactionMeta
1443
1478
  });
1444
- await _chunkR7NJVDWNjs.updateTransactionLayer1GasFee.call(void 0, {
1445
- ethQuery,
1479
+ await _chunk5WFLNKCLjs.updateTransactionLayer1GasFee.call(void 0, {
1446
1480
  layer1GasFeeFlows: this.layer1GasFeeFlows,
1481
+ provider,
1447
1482
  transactionMeta
1448
1483
  });
1449
1484
  }
@@ -2097,7 +2132,7 @@ var TransactionController = class extends _basecontroller.BaseController {
2097
2132
  networkClientId: transactionMeta.networkClientId,
2098
2133
  chainId: transactionMeta.chainId
2099
2134
  });
2100
- const { updatedTransactionMeta, approvalTransactionMeta } = await _chunk5OQ373JSjs.updatePostTransactionBalance.call(void 0, transactionMeta, {
2135
+ const { updatedTransactionMeta, approvalTransactionMeta } = await _chunkQTQSCTQAjs.updatePostTransactionBalance.call(void 0, transactionMeta, {
2101
2136
  ethQuery,
2102
2137
  getTransaction: this.getTransaction.bind(this),
2103
2138
  updateTransaction: this.updateTransaction.bind(this)
@@ -2284,11 +2319,11 @@ getNonceTrackerPendingTransactions_fn = function(chainId, address) {
2284
2319
  };
2285
2320
  _getGasFeeFlows = new WeakSet();
2286
2321
  getGasFeeFlows_fn = function() {
2287
- return [new (0, _chunkCWJBSWH3js.LineaGasFeeFlow)(), new (0, _chunkUS7NQPYEjs.DefaultGasFeeFlow)()];
2322
+ return [new (0, _chunkXZILQVNWjs.LineaGasFeeFlow)(), new (0, _chunk6V2LR6JLjs.DefaultGasFeeFlow)()];
2288
2323
  };
2289
2324
  _getLayer1GasFeeFlows = new WeakSet();
2290
2325
  getLayer1GasFeeFlows_fn = function() {
2291
- return [];
2326
+ return [new (0, _chunkQG2WVQE3js.OptimismLayer1GasFeeFlow)()];
2292
2327
  };
2293
2328
  _updateTransactionInternal = new WeakSet();
2294
2329
  updateTransactionInternal_fn = function(transactionMeta, { note, skipHistory }) {
@@ -2347,14 +2382,14 @@ updateSimulationData_fn = async function(transactionMeta) {
2347
2382
  const { from, to, value, data } = txParams;
2348
2383
  let simulationData = {
2349
2384
  error: {
2350
- message: "Simulation disabled",
2351
- isReverted: false
2385
+ code: "disabled" /* Disabled */,
2386
+ message: "Simulation disabled"
2352
2387
  },
2353
2388
  tokenBalanceChanges: []
2354
2389
  };
2355
2390
  if (_chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _isSimulationEnabled).call(this)) {
2356
2391
  _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _updateTransactionInternal, updateTransactionInternal_fn).call(this, { ...transactionMeta, simulationData: void 0 }, { skipHistory: true });
2357
- simulationData = await _chunkGC77BSQZjs.getSimulationData.call(void 0, {
2392
+ simulationData = await _chunkV5X6MZHNjs.getSimulationData.call(void 0, {
2358
2393
  chainId,
2359
2394
  from,
2360
2395
  to,
@@ -2385,4 +2420,4 @@ updateSimulationData_fn = async function(transactionMeta) {
2385
2420
 
2386
2421
 
2387
2422
  exports.HARDFORK = HARDFORK; exports.CANCEL_RATE = CANCEL_RATE; exports.SPEED_UP_RATE = SPEED_UP_RATE; exports.ApprovalState = ApprovalState; exports.TransactionController = TransactionController;
2388
- //# sourceMappingURL=chunk-7QOACSQU.js.map
2423
+ //# sourceMappingURL=chunk-GASIS3QH.js.map