@metamask-previews/transaction-controller 36.1.0-preview-367cb1da → 36.1.0-preview-cf09c0a

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 (479) hide show
  1. package/dist/TransactionController.cjs +2026 -0
  2. package/dist/TransactionController.cjs.map +1 -0
  3. package/dist/{types/TransactionController.d.ts → TransactionController.d.cts} +15 -15
  4. package/dist/TransactionController.d.cts.map +1 -0
  5. package/dist/TransactionController.d.mts +827 -0
  6. package/dist/TransactionController.d.mts.map +1 -0
  7. package/dist/TransactionController.mjs +2027 -44
  8. package/dist/TransactionController.mjs.map +1 -1
  9. package/dist/constants.cjs +170 -0
  10. package/dist/constants.cjs.map +1 -0
  11. package/dist/{types/constants.d.ts → constants.d.cts} +1 -1
  12. package/dist/constants.d.cts.map +1 -0
  13. package/dist/constants.d.mts +143 -0
  14. package/dist/constants.d.mts.map +1 -0
  15. package/dist/constants.mjs +165 -18
  16. package/dist/constants.mjs.map +1 -1
  17. package/dist/errors.cjs +30 -0
  18. package/dist/{chunk-HMOSP33F.js.map → errors.cjs.map} +1 -1
  19. package/dist/{types/errors.d.ts → errors.d.cts} +2 -2
  20. package/dist/errors.d.cts.map +1 -0
  21. package/dist/errors.d.mts +15 -0
  22. package/dist/errors.d.mts.map +1 -0
  23. package/dist/errors.mjs +22 -14
  24. package/dist/errors.mjs.map +1 -1
  25. package/dist/gas-flows/DefaultGasFeeFlow.cjs +87 -0
  26. package/dist/gas-flows/DefaultGasFeeFlow.cjs.map +1 -0
  27. package/dist/{types/gas-flows/DefaultGasFeeFlow.d.ts → gas-flows/DefaultGasFeeFlow.d.cts} +2 -2
  28. package/dist/gas-flows/DefaultGasFeeFlow.d.cts.map +1 -0
  29. package/dist/gas-flows/DefaultGasFeeFlow.d.mts +10 -0
  30. package/dist/gas-flows/DefaultGasFeeFlow.d.mts.map +1 -0
  31. package/dist/gas-flows/DefaultGasFeeFlow.mjs +81 -13
  32. package/dist/gas-flows/DefaultGasFeeFlow.mjs.map +1 -1
  33. package/dist/gas-flows/LineaGasFeeFlow.cjs +102 -0
  34. package/dist/gas-flows/LineaGasFeeFlow.cjs.map +1 -0
  35. package/dist/{types/gas-flows/LineaGasFeeFlow.d.ts → gas-flows/LineaGasFeeFlow.d.cts} +2 -2
  36. package/dist/gas-flows/LineaGasFeeFlow.d.cts.map +1 -0
  37. package/dist/gas-flows/LineaGasFeeFlow.d.mts +12 -0
  38. package/dist/gas-flows/LineaGasFeeFlow.d.mts.map +1 -0
  39. package/dist/gas-flows/LineaGasFeeFlow.mjs +96 -14
  40. package/dist/gas-flows/LineaGasFeeFlow.mjs.map +1 -1
  41. package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs +29 -0
  42. package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs.map +1 -0
  43. package/dist/{types/gas-flows/OptimismLayer1GasFeeFlow.d.ts → gas-flows/OptimismLayer1GasFeeFlow.d.cts} +3 -3
  44. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.cts.map +1 -0
  45. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts +10 -0
  46. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts.map +1 -0
  47. package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs +24 -10
  48. package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs.map +1 -1
  49. package/dist/gas-flows/OracleLayer1GasFeeFlow.cjs +92 -0
  50. package/dist/gas-flows/OracleLayer1GasFeeFlow.cjs.map +1 -0
  51. package/dist/{types/gas-flows/OracleLayer1GasFeeFlow.d.ts → gas-flows/OracleLayer1GasFeeFlow.d.cts} +3 -3
  52. package/dist/gas-flows/OracleLayer1GasFeeFlow.d.cts.map +1 -0
  53. package/dist/gas-flows/OracleLayer1GasFeeFlow.d.mts +12 -0
  54. package/dist/gas-flows/OracleLayer1GasFeeFlow.d.mts.map +1 -0
  55. package/dist/gas-flows/OracleLayer1GasFeeFlow.mjs +88 -7
  56. package/dist/gas-flows/OracleLayer1GasFeeFlow.mjs.map +1 -1
  57. package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs +21 -0
  58. package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs.map +1 -0
  59. package/dist/{types/gas-flows/ScrollLayer1GasFeeFlow.d.ts → gas-flows/ScrollLayer1GasFeeFlow.d.cts} +3 -3
  60. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.cts.map +1 -0
  61. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts +10 -0
  62. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts.map +1 -0
  63. package/dist/gas-flows/ScrollLayer1GasFeeFlow.mjs +16 -10
  64. package/dist/gas-flows/ScrollLayer1GasFeeFlow.mjs.map +1 -1
  65. package/dist/gas-flows/TestGasFeeFlow.cjs +73 -0
  66. package/dist/{chunk-FMRLPVFZ.mjs.map → gas-flows/TestGasFeeFlow.cjs.map} +1 -1
  67. package/dist/{types/gas-flows/TestGasFeeFlow.d.ts → gas-flows/TestGasFeeFlow.d.cts} +2 -2
  68. package/dist/gas-flows/TestGasFeeFlow.d.cts.map +1 -0
  69. package/dist/gas-flows/TestGasFeeFlow.d.mts +12 -0
  70. package/dist/gas-flows/TestGasFeeFlow.d.mts.map +1 -0
  71. package/dist/gas-flows/TestGasFeeFlow.mjs +67 -7
  72. package/dist/gas-flows/TestGasFeeFlow.mjs.map +1 -1
  73. package/dist/helpers/EtherscanRemoteTransactionSource.cjs +149 -0
  74. package/dist/helpers/EtherscanRemoteTransactionSource.cjs.map +1 -0
  75. package/dist/{types/helpers/EtherscanRemoteTransactionSource.d.ts → helpers/EtherscanRemoteTransactionSource.d.cts} +3 -3
  76. package/dist/helpers/EtherscanRemoteTransactionSource.d.cts.map +1 -0
  77. package/dist/helpers/EtherscanRemoteTransactionSource.d.mts +15 -0
  78. package/dist/helpers/EtherscanRemoteTransactionSource.d.mts.map +1 -0
  79. package/dist/helpers/EtherscanRemoteTransactionSource.mjs +147 -10
  80. package/dist/helpers/EtherscanRemoteTransactionSource.mjs.map +1 -1
  81. package/dist/helpers/GasFeePoller.cjs +185 -0
  82. package/dist/helpers/GasFeePoller.cjs.map +1 -0
  83. package/dist/{types/helpers/GasFeePoller.d.ts → helpers/GasFeePoller.d.cts} +7 -7
  84. package/dist/helpers/GasFeePoller.d.cts.map +1 -0
  85. package/dist/helpers/GasFeePoller.d.mts +35 -0
  86. package/dist/helpers/GasFeePoller.d.mts.map +1 -0
  87. package/dist/helpers/GasFeePoller.mjs +183 -10
  88. package/dist/helpers/GasFeePoller.mjs.map +1 -1
  89. package/dist/helpers/IncomingTransactionHelper.cjs +199 -0
  90. package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -0
  91. package/dist/{types/helpers/IncomingTransactionHelper.d.ts → helpers/IncomingTransactionHelper.d.cts} +6 -6
  92. package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -0
  93. package/dist/helpers/IncomingTransactionHelper.d.mts +40 -0
  94. package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -0
  95. package/dist/helpers/IncomingTransactionHelper.mjs +190 -7
  96. package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
  97. package/dist/helpers/MultichainTrackingHelper.cjs +284 -0
  98. package/dist/helpers/MultichainTrackingHelper.cjs.map +1 -0
  99. package/dist/{types/helpers/MultichainTrackingHelper.d.ts → helpers/MultichainTrackingHelper.d.cts} +8 -8
  100. package/dist/helpers/MultichainTrackingHelper.d.cts.map +1 -0
  101. package/dist/helpers/MultichainTrackingHelper.d.mts +76 -0
  102. package/dist/helpers/MultichainTrackingHelper.d.mts.map +1 -0
  103. package/dist/helpers/MultichainTrackingHelper.mjs +282 -11
  104. package/dist/helpers/MultichainTrackingHelper.mjs.map +1 -1
  105. package/dist/helpers/PendingTransactionTracker.cjs +328 -0
  106. package/dist/helpers/PendingTransactionTracker.cjs.map +1 -0
  107. package/dist/{types/helpers/PendingTransactionTracker.d.ts → helpers/PendingTransactionTracker.d.cts} +5 -5
  108. package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -0
  109. package/dist/helpers/PendingTransactionTracker.d.mts +42 -0
  110. package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -0
  111. package/dist/helpers/PendingTransactionTracker.mjs +320 -8
  112. package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
  113. package/dist/index.cjs +28 -0
  114. package/dist/index.cjs.map +1 -0
  115. package/dist/{types/index.d.ts → index.d.cts} +10 -10
  116. package/dist/index.d.cts.map +1 -0
  117. package/dist/index.d.mts +10 -0
  118. package/dist/index.d.mts.map +1 -0
  119. package/dist/index.mjs +6 -76
  120. package/dist/index.mjs.map +1 -1
  121. package/dist/logger.cjs +9 -0
  122. package/dist/logger.cjs.map +1 -0
  123. package/dist/{types/logger.d.ts → logger.d.cts} +2 -2
  124. package/dist/logger.d.cts.map +1 -0
  125. package/dist/logger.d.mts +6 -0
  126. package/dist/logger.d.mts.map +1 -0
  127. package/dist/logger.mjs +5 -11
  128. package/dist/logger.mjs.map +1 -1
  129. package/dist/types.cjs +308 -0
  130. package/dist/types.cjs.map +1 -0
  131. package/dist/{types/types.d.ts → types.d.cts} +7 -7
  132. package/dist/types.d.cts.map +1 -0
  133. package/dist/types.d.mts +999 -0
  134. package/dist/types.d.mts.map +1 -0
  135. package/dist/types.mjs +304 -23
  136. package/dist/types.mjs.map +1 -1
  137. package/dist/utils/etherscan.cjs +111 -0
  138. package/dist/utils/etherscan.cjs.map +1 -0
  139. package/dist/{types/utils/etherscan.d.ts → utils/etherscan.d.cts} +2 -2
  140. package/dist/utils/etherscan.d.cts.map +1 -0
  141. package/dist/utils/etherscan.d.mts +71 -0
  142. package/dist/utils/etherscan.d.mts.map +1 -0
  143. package/dist/utils/etherscan.mjs +104 -13
  144. package/dist/utils/etherscan.mjs.map +1 -1
  145. package/dist/utils/external-transactions.cjs +36 -0
  146. package/dist/utils/external-transactions.cjs.map +1 -0
  147. package/dist/{types/utils/external-transactions.d.ts → utils/external-transactions.d.cts} +2 -2
  148. package/dist/utils/external-transactions.d.cts.map +1 -0
  149. package/dist/utils/external-transactions.d.mts +10 -0
  150. package/dist/utils/external-transactions.d.mts.map +1 -0
  151. package/dist/utils/external-transactions.mjs +31 -8
  152. package/dist/utils/external-transactions.mjs.map +1 -1
  153. package/dist/utils/gas-fees.cjs +208 -0
  154. package/dist/utils/gas-fees.cjs.map +1 -0
  155. package/dist/{types/utils/gas-fees.d.ts → utils/gas-fees.d.cts} +5 -5
  156. package/dist/utils/gas-fees.d.cts.map +1 -0
  157. package/dist/utils/gas-fees.d.mts +26 -0
  158. package/dist/utils/gas-fees.d.mts.map +1 -0
  159. package/dist/utils/gas-fees.mjs +202 -15
  160. package/dist/utils/gas-fees.mjs.map +1 -1
  161. package/dist/utils/gas-flow.cjs +76 -0
  162. package/dist/utils/gas-flow.cjs.map +1 -0
  163. package/dist/{types/utils/gas-flow.d.ts → utils/gas-flow.d.cts} +5 -5
  164. package/dist/utils/gas-flow.d.cts.map +1 -0
  165. package/dist/utils/gas-flow.d.mts +26 -0
  166. package/dist/utils/gas-flow.d.mts.map +1 -0
  167. package/dist/utils/gas-flow.mjs +70 -10
  168. package/dist/utils/gas-flow.mjs.map +1 -1
  169. package/dist/utils/gas.cjs +112 -0
  170. package/dist/utils/gas.cjs.map +1 -0
  171. package/dist/{types/utils/gas.d.ts → utils/gas.d.cts} +4 -4
  172. package/dist/utils/gas.d.cts.map +1 -0
  173. package/dist/utils/gas.d.mts +28 -0
  174. package/dist/utils/gas.d.mts.map +1 -0
  175. package/dist/utils/gas.mjs +105 -19
  176. package/dist/utils/gas.mjs.map +1 -1
  177. package/dist/utils/history.cjs +164 -0
  178. package/dist/utils/history.cjs.map +1 -0
  179. package/dist/{types/utils/history.d.ts → utils/history.d.cts} +2 -2
  180. package/dist/utils/history.d.cts.map +1 -0
  181. package/dist/utils/history.d.mts +29 -0
  182. package/dist/utils/history.d.mts.map +1 -0
  183. package/dist/utils/history.mjs +163 -13
  184. package/dist/utils/history.mjs.map +1 -1
  185. package/dist/utils/layer1-gas-fee-flow.cjs +59 -0
  186. package/dist/utils/layer1-gas-fee-flow.cjs.map +1 -0
  187. package/dist/{types/utils/layer1-gas-fee-flow.d.ts → utils/layer1-gas-fee-flow.d.cts} +4 -4
  188. package/dist/utils/layer1-gas-fee-flow.d.cts.map +1 -0
  189. package/dist/utils/layer1-gas-fee-flow.d.mts +25 -0
  190. package/dist/utils/layer1-gas-fee-flow.d.mts.map +1 -0
  191. package/dist/utils/layer1-gas-fee-flow.mjs +53 -10
  192. package/dist/utils/layer1-gas-fee-flow.mjs.map +1 -1
  193. package/dist/utils/nonce.cjs +66 -0
  194. package/dist/utils/nonce.cjs.map +1 -0
  195. package/dist/{types/utils/nonce.d.ts → utils/nonce.d.cts} +3 -3
  196. package/dist/utils/nonce.d.cts.map +1 -0
  197. package/dist/utils/nonce.d.mts +21 -0
  198. package/dist/utils/nonce.d.mts.map +1 -0
  199. package/dist/utils/nonce.mjs +60 -10
  200. package/dist/utils/nonce.mjs.map +1 -1
  201. package/dist/utils/retry.cjs +89 -0
  202. package/dist/utils/retry.cjs.map +1 -0
  203. package/dist/{types/utils/retry.d.ts → utils/retry.d.cts} +3 -3
  204. package/dist/utils/retry.d.cts.map +1 -0
  205. package/dist/utils/retry.d.mts +11 -0
  206. package/dist/utils/retry.d.mts.map +1 -0
  207. package/dist/utils/retry.mjs +84 -7
  208. package/dist/utils/retry.mjs.map +1 -1
  209. package/dist/utils/simulation-api.cjs +72 -0
  210. package/dist/utils/simulation-api.cjs.map +1 -0
  211. package/dist/{types/utils/simulation-api.d.ts → utils/simulation-api.d.cts} +2 -2
  212. package/dist/utils/simulation-api.d.cts.map +1 -0
  213. package/dist/utils/simulation-api.d.mts +107 -0
  214. package/dist/utils/simulation-api.d.mts.map +1 -0
  215. package/dist/utils/simulation-api.mjs +67 -10
  216. package/dist/utils/simulation-api.mjs.map +1 -1
  217. package/dist/utils/simulation.cjs +443 -0
  218. package/dist/utils/simulation.cjs.map +1 -0
  219. package/dist/{types/utils/simulation.d.ts → utils/simulation.d.cts} +6 -6
  220. package/dist/utils/simulation.d.cts.map +1 -0
  221. package/dist/utils/simulation.d.mts +46 -0
  222. package/dist/utils/simulation.d.mts.map +1 -0
  223. package/dist/utils/simulation.mjs +436 -15
  224. package/dist/utils/simulation.mjs.map +1 -1
  225. package/dist/utils/swaps.cjs +309 -0
  226. package/dist/utils/swaps.cjs.map +1 -0
  227. package/dist/{types/utils/swaps.d.ts → utils/swaps.d.cts} +5 -5
  228. package/dist/utils/swaps.d.cts.map +1 -0
  229. package/dist/utils/swaps.d.mts +84 -0
  230. package/dist/utils/swaps.d.mts.map +1 -0
  231. package/dist/utils/swaps.mjs +303 -22
  232. package/dist/utils/swaps.mjs.map +1 -1
  233. package/dist/utils/transaction-type.cjs +115 -0
  234. package/dist/utils/transaction-type.cjs.map +1 -0
  235. package/dist/{types/utils/transaction-type.d.ts → utils/transaction-type.d.cts} +3 -3
  236. package/dist/utils/transaction-type.d.cts.map +1 -0
  237. package/dist/utils/transaction-type.d.mts +14 -0
  238. package/dist/utils/transaction-type.d.mts.map +1 -0
  239. package/dist/utils/transaction-type.mjs +110 -10
  240. package/dist/utils/transaction-type.mjs.map +1 -1
  241. package/dist/utils/utils.cjs +151 -0
  242. package/dist/utils/utils.cjs.map +1 -0
  243. package/dist/{types/utils/utils.d.ts → utils/utils.d.cts} +2 -2
  244. package/dist/utils/utils.d.cts.map +1 -0
  245. package/dist/utils/utils.d.mts +52 -0
  246. package/dist/utils/utils.d.mts.map +1 -0
  247. package/dist/utils/utils.mjs +139 -21
  248. package/dist/utils/utils.mjs.map +1 -1
  249. package/dist/utils/validation.cjs +267 -0
  250. package/dist/{chunk-DIPBZJ5G.js.map → utils/validation.cjs.map} +1 -1
  251. package/dist/{types/utils/validation.d.ts → utils/validation.d.cts} +2 -2
  252. package/dist/utils/validation.d.cts.map +1 -0
  253. package/dist/utils/validation.d.mts +20 -0
  254. package/dist/utils/validation.d.mts.map +1 -0
  255. package/dist/utils/validation.mjs +261 -11
  256. package/dist/utils/validation.mjs.map +1 -1
  257. package/package.json +12 -7
  258. package/dist/TransactionController.js +0 -46
  259. package/dist/TransactionController.js.map +0 -1
  260. package/dist/chunk-2XKEAKQG.js +0 -55
  261. package/dist/chunk-2XKEAKQG.js.map +0 -1
  262. package/dist/chunk-3AVRGHUO.mjs +0 -360
  263. package/dist/chunk-3AVRGHUO.mjs.map +0 -1
  264. package/dist/chunk-3ZV5YEUV.mjs +0 -239
  265. package/dist/chunk-3ZV5YEUV.mjs.map +0 -1
  266. package/dist/chunk-4SYKJQLR.js +0 -228
  267. package/dist/chunk-4SYKJQLR.js.map +0 -1
  268. package/dist/chunk-4V4XIPCI.mjs +0 -338
  269. package/dist/chunk-4V4XIPCI.mjs.map +0 -1
  270. package/dist/chunk-4ZOE2ACZ.js +0 -67
  271. package/dist/chunk-4ZOE2ACZ.js.map +0 -1
  272. package/dist/chunk-5G6OHAXI.mjs +0 -137
  273. package/dist/chunk-5G6OHAXI.mjs.map +0 -1
  274. package/dist/chunk-5QVDIVJH.js +0 -68
  275. package/dist/chunk-5QVDIVJH.js.map +0 -1
  276. package/dist/chunk-6DDVVUJC.mjs +0 -50
  277. package/dist/chunk-6DDVVUJC.mjs.map +0 -1
  278. package/dist/chunk-6DODV6OV.js +0 -390
  279. package/dist/chunk-6DODV6OV.js.map +0 -1
  280. package/dist/chunk-6JO6EU6Z.mjs +0 -67
  281. package/dist/chunk-6JO6EU6Z.mjs.map +0 -1
  282. package/dist/chunk-6OLJWLKK.js +0 -338
  283. package/dist/chunk-6OLJWLKK.js.map +0 -1
  284. package/dist/chunk-7LXE4KHV.js +0 -40
  285. package/dist/chunk-7LXE4KHV.js.map +0 -1
  286. package/dist/chunk-7M2R5AHC.mjs +0 -390
  287. package/dist/chunk-7M2R5AHC.mjs.map +0 -1
  288. package/dist/chunk-7NMV2NPM.js +0 -172
  289. package/dist/chunk-7NMV2NPM.js.map +0 -1
  290. package/dist/chunk-ASTXVFGJ.mjs +0 -92
  291. package/dist/chunk-ASTXVFGJ.mjs.map +0 -1
  292. package/dist/chunk-CKRPGICI.js +0 -2499
  293. package/dist/chunk-CKRPGICI.js.map +0 -1
  294. package/dist/chunk-DIPBZJ5G.js +0 -201
  295. package/dist/chunk-EGQCE3FK.mjs +0 -85
  296. package/dist/chunk-EGQCE3FK.mjs.map +0 -1
  297. package/dist/chunk-EHIRNR33.mjs +0 -228
  298. package/dist/chunk-EHIRNR33.mjs.map +0 -1
  299. package/dist/chunk-EKJXGERC.mjs +0 -172
  300. package/dist/chunk-EKJXGERC.mjs.map +0 -1
  301. package/dist/chunk-FG74Z3F5.mjs +0 -102
  302. package/dist/chunk-FG74Z3F5.mjs.map +0 -1
  303. package/dist/chunk-FMRLPVFZ.mjs +0 -66
  304. package/dist/chunk-FRKQ3Z2L.mjs +0 -40
  305. package/dist/chunk-FRKQ3Z2L.mjs.map +0 -1
  306. package/dist/chunk-H5MYUJHR.js +0 -92
  307. package/dist/chunk-H5MYUJHR.js.map +0 -1
  308. package/dist/chunk-HAW3IWCX.mjs +0 -201
  309. package/dist/chunk-HAW3IWCX.mjs.map +0 -1
  310. package/dist/chunk-HMOSP33F.js +0 -36
  311. package/dist/chunk-HQSNKCXI.mjs +0 -36
  312. package/dist/chunk-HQSNKCXI.mjs.map +0 -1
  313. package/dist/chunk-JIFPK37W.mjs +0 -257
  314. package/dist/chunk-JIFPK37W.mjs.map +0 -1
  315. package/dist/chunk-JOQK7A5G.mjs +0 -68
  316. package/dist/chunk-JOQK7A5G.mjs.map +0 -1
  317. package/dist/chunk-K4KOSAGM.mjs +0 -61
  318. package/dist/chunk-K4KOSAGM.mjs.map +0 -1
  319. package/dist/chunk-KG4UW4K4.mjs +0 -88
  320. package/dist/chunk-KG4UW4K4.mjs.map +0 -1
  321. package/dist/chunk-KT6UAKBB.js +0 -61
  322. package/dist/chunk-KT6UAKBB.js.map +0 -1
  323. package/dist/chunk-KTGMNUTQ.js +0 -106
  324. package/dist/chunk-KTGMNUTQ.js.map +0 -1
  325. package/dist/chunk-NNCUD3QF.js +0 -360
  326. package/dist/chunk-NNCUD3QF.js.map +0 -1
  327. package/dist/chunk-NOHEXQ7Y.mjs +0 -55
  328. package/dist/chunk-NOHEXQ7Y.mjs.map +0 -1
  329. package/dist/chunk-NYKRCWBG.js +0 -31
  330. package/dist/chunk-NYKRCWBG.js.map +0 -1
  331. package/dist/chunk-O6ZZVIFH.mjs +0 -176
  332. package/dist/chunk-O6ZZVIFH.mjs.map +0 -1
  333. package/dist/chunk-ORWR5LSG.js +0 -112
  334. package/dist/chunk-ORWR5LSG.js.map +0 -1
  335. package/dist/chunk-PRUNMTRD.js +0 -50
  336. package/dist/chunk-PRUNMTRD.js.map +0 -1
  337. package/dist/chunk-Q44JQKVP.mjs +0 -112
  338. package/dist/chunk-Q44JQKVP.mjs.map +0 -1
  339. package/dist/chunk-QKV7E5BO.js +0 -257
  340. package/dist/chunk-QKV7E5BO.js.map +0 -1
  341. package/dist/chunk-REFVF44I.mjs +0 -2499
  342. package/dist/chunk-REFVF44I.mjs.map +0 -1
  343. package/dist/chunk-RGWMNCTE.mjs +0 -121
  344. package/dist/chunk-RGWMNCTE.mjs.map +0 -1
  345. package/dist/chunk-RHDPOIS4.js +0 -239
  346. package/dist/chunk-RHDPOIS4.js.map +0 -1
  347. package/dist/chunk-S6VGOPUY.js +0 -14
  348. package/dist/chunk-S6VGOPUY.js.map +0 -1
  349. package/dist/chunk-SD6CWFDF.js +0 -88
  350. package/dist/chunk-SD6CWFDF.js.map +0 -1
  351. package/dist/chunk-SMC5Q6ZH.mjs +0 -120
  352. package/dist/chunk-SMC5Q6ZH.mjs.map +0 -1
  353. package/dist/chunk-TIE3CPF7.js +0 -120
  354. package/dist/chunk-TIE3CPF7.js.map +0 -1
  355. package/dist/chunk-TJMQEH57.js +0 -66
  356. package/dist/chunk-TJMQEH57.js.map +0 -1
  357. package/dist/chunk-UGN7PBON.js +0 -176
  358. package/dist/chunk-UGN7PBON.js.map +0 -1
  359. package/dist/chunk-UHSRHP55.mjs +0 -106
  360. package/dist/chunk-UHSRHP55.mjs.map +0 -1
  361. package/dist/chunk-UQQWZT6C.mjs +0 -14
  362. package/dist/chunk-UQQWZT6C.mjs.map +0 -1
  363. package/dist/chunk-V2OWJ7RY.mjs +0 -226
  364. package/dist/chunk-V2OWJ7RY.mjs.map +0 -1
  365. package/dist/chunk-V72C4MCR.js +0 -137
  366. package/dist/chunk-V72C4MCR.js.map +0 -1
  367. package/dist/chunk-VEVVBHP3.mjs +0 -31
  368. package/dist/chunk-VEVVBHP3.mjs.map +0 -1
  369. package/dist/chunk-WFRHYZIO.js +0 -226
  370. package/dist/chunk-WFRHYZIO.js.map +0 -1
  371. package/dist/chunk-WR5F34OW.js +0 -23
  372. package/dist/chunk-WR5F34OW.js.map +0 -1
  373. package/dist/chunk-XUI43LEZ.mjs +0 -30
  374. package/dist/chunk-XUI43LEZ.mjs.map +0 -1
  375. package/dist/chunk-XVYXRCRL.js +0 -85
  376. package/dist/chunk-XVYXRCRL.js.map +0 -1
  377. package/dist/chunk-YAFENU6Y.js +0 -121
  378. package/dist/chunk-YAFENU6Y.js.map +0 -1
  379. package/dist/chunk-YVCX6Z75.js +0 -102
  380. package/dist/chunk-YVCX6Z75.js.map +0 -1
  381. package/dist/chunk-Z4BLTVTB.js +0 -30
  382. package/dist/chunk-Z4BLTVTB.js.map +0 -1
  383. package/dist/chunk-Z4GV3YQQ.mjs +0 -23
  384. package/dist/chunk-Z4GV3YQQ.mjs.map +0 -1
  385. package/dist/constants.js +0 -20
  386. package/dist/constants.js.map +0 -1
  387. package/dist/errors.js +0 -15
  388. package/dist/errors.js.map +0 -1
  389. package/dist/gas-flows/DefaultGasFeeFlow.js +0 -15
  390. package/dist/gas-flows/DefaultGasFeeFlow.js.map +0 -1
  391. package/dist/gas-flows/LineaGasFeeFlow.js +0 -16
  392. package/dist/gas-flows/LineaGasFeeFlow.js.map +0 -1
  393. package/dist/gas-flows/OptimismLayer1GasFeeFlow.js +0 -11
  394. package/dist/gas-flows/OptimismLayer1GasFeeFlow.js.map +0 -1
  395. package/dist/gas-flows/OracleLayer1GasFeeFlow.js +0 -9
  396. package/dist/gas-flows/OracleLayer1GasFeeFlow.js.map +0 -1
  397. package/dist/gas-flows/ScrollLayer1GasFeeFlow.js +0 -11
  398. package/dist/gas-flows/ScrollLayer1GasFeeFlow.js.map +0 -1
  399. package/dist/gas-flows/TestGasFeeFlow.js +0 -9
  400. package/dist/gas-flows/TestGasFeeFlow.js.map +0 -1
  401. package/dist/helpers/EtherscanRemoteTransactionSource.js +0 -12
  402. package/dist/helpers/EtherscanRemoteTransactionSource.js.map +0 -1
  403. package/dist/helpers/GasFeePoller.js +0 -12
  404. package/dist/helpers/GasFeePoller.js.map +0 -1
  405. package/dist/helpers/IncomingTransactionHelper.js +0 -9
  406. package/dist/helpers/IncomingTransactionHelper.js.map +0 -1
  407. package/dist/helpers/MultichainTrackingHelper.js +0 -13
  408. package/dist/helpers/MultichainTrackingHelper.js.map +0 -1
  409. package/dist/helpers/PendingTransactionTracker.js +0 -10
  410. package/dist/helpers/PendingTransactionTracker.js.map +0 -1
  411. package/dist/index.js +0 -77
  412. package/dist/index.js.map +0 -1
  413. package/dist/logger.js +0 -12
  414. package/dist/logger.js.map +0 -1
  415. package/dist/tsconfig.build.tsbuildinfo +0 -1
  416. package/dist/types/TransactionController.d.ts.map +0 -1
  417. package/dist/types/constants.d.ts.map +0 -1
  418. package/dist/types/errors.d.ts.map +0 -1
  419. package/dist/types/gas-flows/DefaultGasFeeFlow.d.ts.map +0 -1
  420. package/dist/types/gas-flows/LineaGasFeeFlow.d.ts.map +0 -1
  421. package/dist/types/gas-flows/OptimismLayer1GasFeeFlow.d.ts.map +0 -1
  422. package/dist/types/gas-flows/OracleLayer1GasFeeFlow.d.ts.map +0 -1
  423. package/dist/types/gas-flows/ScrollLayer1GasFeeFlow.d.ts.map +0 -1
  424. package/dist/types/gas-flows/TestGasFeeFlow.d.ts.map +0 -1
  425. package/dist/types/helpers/EtherscanRemoteTransactionSource.d.ts.map +0 -1
  426. package/dist/types/helpers/GasFeePoller.d.ts.map +0 -1
  427. package/dist/types/helpers/IncomingTransactionHelper.d.ts.map +0 -1
  428. package/dist/types/helpers/MultichainTrackingHelper.d.ts.map +0 -1
  429. package/dist/types/helpers/PendingTransactionTracker.d.ts.map +0 -1
  430. package/dist/types/index.d.ts.map +0 -1
  431. package/dist/types/logger.d.ts.map +0 -1
  432. package/dist/types/types.d.ts.map +0 -1
  433. package/dist/types/utils/etherscan.d.ts.map +0 -1
  434. package/dist/types/utils/external-transactions.d.ts.map +0 -1
  435. package/dist/types/utils/gas-fees.d.ts.map +0 -1
  436. package/dist/types/utils/gas-flow.d.ts.map +0 -1
  437. package/dist/types/utils/gas.d.ts.map +0 -1
  438. package/dist/types/utils/history.d.ts.map +0 -1
  439. package/dist/types/utils/layer1-gas-fee-flow.d.ts.map +0 -1
  440. package/dist/types/utils/nonce.d.ts.map +0 -1
  441. package/dist/types/utils/retry.d.ts.map +0 -1
  442. package/dist/types/utils/simulation-api.d.ts.map +0 -1
  443. package/dist/types/utils/simulation.d.ts.map +0 -1
  444. package/dist/types/utils/swaps.d.ts.map +0 -1
  445. package/dist/types/utils/transaction-type.d.ts.map +0 -1
  446. package/dist/types/utils/utils.d.ts.map +0 -1
  447. package/dist/types/utils/validation.d.ts.map +0 -1
  448. package/dist/types.js +0 -24
  449. package/dist/types.js.map +0 -1
  450. package/dist/utils/etherscan.js +0 -14
  451. package/dist/utils/etherscan.js.map +0 -1
  452. package/dist/utils/external-transactions.js +0 -9
  453. package/dist/utils/external-transactions.js.map +0 -1
  454. package/dist/utils/gas-fees.js +0 -16
  455. package/dist/utils/gas-fees.js.map +0 -1
  456. package/dist/utils/gas-flow.js +0 -11
  457. package/dist/utils/gas-flow.js.map +0 -1
  458. package/dist/utils/gas.js +0 -20
  459. package/dist/utils/gas.js.map +0 -1
  460. package/dist/utils/history.js +0 -14
  461. package/dist/utils/history.js.map +0 -1
  462. package/dist/utils/layer1-gas-fee-flow.js +0 -11
  463. package/dist/utils/layer1-gas-fee-flow.js.map +0 -1
  464. package/dist/utils/nonce.js +0 -11
  465. package/dist/utils/nonce.js.map +0 -1
  466. package/dist/utils/retry.js +0 -8
  467. package/dist/utils/retry.js.map +0 -1
  468. package/dist/utils/simulation-api.js +0 -11
  469. package/dist/utils/simulation-api.js.map +0 -1
  470. package/dist/utils/simulation.js +0 -17
  471. package/dist/utils/simulation.js.map +0 -1
  472. package/dist/utils/swaps.js +0 -24
  473. package/dist/utils/swaps.js.map +0 -1
  474. package/dist/utils/transaction-type.js +0 -11
  475. package/dist/utils/transaction-type.js.map +0 -1
  476. package/dist/utils/utils.js +0 -23
  477. package/dist/utils/utils.js.map +0 -1
  478. package/dist/utils/validation.js +0 -12
  479. package/dist/utils/validation.js.map +0 -1
@@ -1,338 +0,0 @@
1
- import {
2
- EtherscanRemoteTransactionSource
3
- } from "./chunk-EKJXGERC.mjs";
4
- import {
5
- incomingTransactionsLogger
6
- } from "./chunk-UQQWZT6C.mjs";
7
- import {
8
- __privateAdd,
9
- __privateGet,
10
- __privateMethod,
11
- __privateSet
12
- } from "./chunk-XUI43LEZ.mjs";
13
-
14
- // src/helpers/MultichainTrackingHelper.ts
15
- import EthQuery from "@metamask/eth-query";
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, _getNetworkClient, getNetworkClient_fn;
18
- var MultichainTrackingHelper = class {
19
- constructor({
20
- isMultichainEnabled,
21
- provider,
22
- nonceTracker,
23
- incomingTransactionOptions,
24
- findNetworkClientIdByChainId,
25
- getNetworkClientById,
26
- getNetworkClientRegistry,
27
- removeIncomingTransactionHelperListeners,
28
- removePendingTransactionTrackerListeners,
29
- createNonceTracker,
30
- createIncomingTransactionHelper,
31
- createPendingTransactionTracker,
32
- onNetworkStateChange
33
- }) {
34
- __privateAdd(this, _stopTrackingByNetworkClientId);
35
- __privateAdd(this, _startTrackingByNetworkClientId);
36
- __privateAdd(this, _getNetworkClient);
37
- __privateAdd(this, _isMultichainEnabled, void 0);
38
- __privateAdd(this, _provider, void 0);
39
- __privateAdd(this, _nonceTracker, void 0);
40
- __privateAdd(this, _incomingTransactionOptions, void 0);
41
- __privateAdd(this, _findNetworkClientIdByChainId, void 0);
42
- __privateAdd(this, _getNetworkClientById, void 0);
43
- __privateAdd(this, _getNetworkClientRegistry, void 0);
44
- __privateAdd(this, _removeIncomingTransactionHelperListeners, void 0);
45
- __privateAdd(this, _removePendingTransactionTrackerListeners, void 0);
46
- __privateAdd(this, _createNonceTracker, void 0);
47
- __privateAdd(this, _createIncomingTransactionHelper, void 0);
48
- __privateAdd(this, _createPendingTransactionTracker, void 0);
49
- __privateAdd(this, _nonceMutexesByChainId, /* @__PURE__ */ new Map());
50
- __privateAdd(this, _trackingMap, /* @__PURE__ */ new Map());
51
- __privateAdd(this, _etherscanRemoteTransactionSourcesMap, /* @__PURE__ */ new Map());
52
- this.checkForPendingTransactionAndStartPolling = () => {
53
- for (const [, trackers] of __privateGet(this, _trackingMap)) {
54
- trackers.pendingTransactionTracker.startIfPendingTransactions();
55
- }
56
- };
57
- __privateAdd(this, _refreshTrackingMap, (networkClients) => {
58
- __privateGet(this, _refreshEtherscanRemoteTransactionSources).call(this, networkClients);
59
- const networkClientIds = Object.keys(networkClients);
60
- const existingNetworkClientIds = Array.from(__privateGet(this, _trackingMap).keys());
61
- const networkClientIdsToRemove = existingNetworkClientIds.filter(
62
- (id) => !networkClientIds.includes(id)
63
- );
64
- networkClientIdsToRemove.forEach((id) => {
65
- __privateMethod(this, _stopTrackingByNetworkClientId, stopTrackingByNetworkClientId_fn).call(this, id);
66
- });
67
- const networkClientIdsToAdd = networkClientIds.filter(
68
- (id) => !existingNetworkClientIds.includes(id)
69
- );
70
- networkClientIdsToAdd.forEach((id) => {
71
- __privateMethod(this, _startTrackingByNetworkClientId, startTrackingByNetworkClientId_fn).call(this, id);
72
- });
73
- });
74
- __privateAdd(this, _refreshEtherscanRemoteTransactionSources, (networkClients) => {
75
- const chainIdsInRegistry = /* @__PURE__ */ new Set();
76
- Object.values(networkClients).forEach(
77
- (networkClient) => chainIdsInRegistry.add(networkClient.configuration.chainId)
78
- );
79
- const existingChainIds = Array.from(
80
- __privateGet(this, _etherscanRemoteTransactionSourcesMap).keys()
81
- );
82
- const chainIdsToRemove = existingChainIds.filter(
83
- (chainId) => !chainIdsInRegistry.has(chainId)
84
- );
85
- chainIdsToRemove.forEach((chainId) => {
86
- __privateGet(this, _etherscanRemoteTransactionSourcesMap).delete(chainId);
87
- });
88
- });
89
- __privateSet(this, _isMultichainEnabled, isMultichainEnabled);
90
- __privateSet(this, _provider, provider);
91
- __privateSet(this, _nonceTracker, nonceTracker);
92
- __privateSet(this, _incomingTransactionOptions, incomingTransactionOptions);
93
- __privateSet(this, _findNetworkClientIdByChainId, findNetworkClientIdByChainId);
94
- __privateSet(this, _getNetworkClientById, getNetworkClientById);
95
- __privateSet(this, _getNetworkClientRegistry, getNetworkClientRegistry);
96
- __privateSet(this, _removeIncomingTransactionHelperListeners, removeIncomingTransactionHelperListeners);
97
- __privateSet(this, _removePendingTransactionTrackerListeners, removePendingTransactionTrackerListeners);
98
- __privateSet(this, _createNonceTracker, createNonceTracker);
99
- __privateSet(this, _createIncomingTransactionHelper, createIncomingTransactionHelper);
100
- __privateSet(this, _createPendingTransactionTracker, createPendingTransactionTracker);
101
- onNetworkStateChange((_, patches) => {
102
- if (__privateGet(this, _isMultichainEnabled)) {
103
- const networkClients = __privateGet(this, _getNetworkClientRegistry).call(this);
104
- patches.forEach(({ op, path }) => {
105
- if (op === "remove" && path[0] === "networkConfigurations") {
106
- const networkClientId = path[1];
107
- delete networkClients[networkClientId];
108
- }
109
- });
110
- __privateGet(this, _refreshTrackingMap).call(this, networkClients);
111
- }
112
- });
113
- }
114
- initialize() {
115
- if (!__privateGet(this, _isMultichainEnabled)) {
116
- return;
117
- }
118
- const networkClients = __privateGet(this, _getNetworkClientRegistry).call(this);
119
- __privateGet(this, _refreshTrackingMap).call(this, networkClients);
120
- }
121
- has(networkClientId) {
122
- return __privateGet(this, _trackingMap).has(networkClientId);
123
- }
124
- getEthQuery({
125
- networkClientId,
126
- chainId
127
- } = {}) {
128
- if (!__privateGet(this, _isMultichainEnabled)) {
129
- return new EthQuery(this.getProvider());
130
- }
131
- return new EthQuery(this.getProvider({ networkClientId, chainId }));
132
- }
133
- getProvider({
134
- networkClientId,
135
- chainId
136
- } = {}) {
137
- if (!__privateGet(this, _isMultichainEnabled)) {
138
- return __privateGet(this, _provider);
139
- }
140
- const networkClient = __privateMethod(this, _getNetworkClient, getNetworkClient_fn).call(this, {
141
- networkClientId,
142
- chainId
143
- });
144
- return networkClient?.provider || __privateGet(this, _provider);
145
- }
146
- /**
147
- * Gets the mutex intended to guard the nonceTracker for a particular chainId and key .
148
- *
149
- * @param opts - The options object.
150
- * @param opts.chainId - The hex chainId.
151
- * @param opts.key - The hex address (or constant) pertaining to the chainId
152
- * @returns Mutex instance for the given chainId and key pair
153
- */
154
- async acquireNonceLockForChainIdKey({
155
- chainId,
156
- key = "global"
157
- }) {
158
- let nonceMutexesForChainId = __privateGet(this, _nonceMutexesByChainId).get(chainId);
159
- if (!nonceMutexesForChainId) {
160
- nonceMutexesForChainId = /* @__PURE__ */ new Map();
161
- __privateGet(this, _nonceMutexesByChainId).set(chainId, nonceMutexesForChainId);
162
- }
163
- let nonceMutexForKey = nonceMutexesForChainId.get(key);
164
- if (!nonceMutexForKey) {
165
- nonceMutexForKey = new Mutex();
166
- nonceMutexesForChainId.set(key, nonceMutexForKey);
167
- }
168
- return await nonceMutexForKey.acquire();
169
- }
170
- /**
171
- * Gets the next nonce according to the nonce-tracker.
172
- * Ensure `releaseLock` is called once processing of the `nonce` value is complete.
173
- *
174
- * @param address - The hex string address for the transaction.
175
- * @param networkClientId - The network client ID for the transaction, used to fetch the correct nonce tracker.
176
- * @returns object with the `nextNonce` `nonceDetails`, and the releaseLock.
177
- */
178
- async getNonceLock(address, networkClientId) {
179
- let releaseLockForChainIdKey;
180
- let nonceTracker = __privateGet(this, _nonceTracker);
181
- if (networkClientId && __privateGet(this, _isMultichainEnabled)) {
182
- const networkClient = __privateGet(this, _getNetworkClientById).call(this, networkClientId);
183
- releaseLockForChainIdKey = await this.acquireNonceLockForChainIdKey({
184
- chainId: networkClient.configuration.chainId,
185
- key: address
186
- });
187
- const trackers = __privateGet(this, _trackingMap).get(networkClientId);
188
- if (!trackers) {
189
- throw new Error("missing nonceTracker for networkClientId");
190
- }
191
- nonceTracker = trackers.nonceTracker;
192
- }
193
- try {
194
- const nonceLock = await nonceTracker.getNonceLock(address);
195
- return {
196
- ...nonceLock,
197
- releaseLock: () => {
198
- nonceLock.releaseLock();
199
- releaseLockForChainIdKey?.();
200
- }
201
- };
202
- } catch (err) {
203
- releaseLockForChainIdKey?.();
204
- throw err;
205
- }
206
- }
207
- startIncomingTransactionPolling(networkClientIds = []) {
208
- networkClientIds.forEach((networkClientId) => {
209
- __privateGet(this, _trackingMap).get(networkClientId)?.incomingTransactionHelper.start();
210
- });
211
- }
212
- stopIncomingTransactionPolling(networkClientIds = []) {
213
- networkClientIds.forEach((networkClientId) => {
214
- __privateGet(this, _trackingMap).get(networkClientId)?.incomingTransactionHelper.stop();
215
- });
216
- }
217
- stopAllIncomingTransactionPolling() {
218
- for (const [, trackers] of __privateGet(this, _trackingMap)) {
219
- trackers.incomingTransactionHelper.stop();
220
- }
221
- }
222
- async updateIncomingTransactions(networkClientIds = []) {
223
- const promises = await Promise.allSettled(
224
- networkClientIds.map(async (networkClientId) => {
225
- return await __privateGet(this, _trackingMap).get(networkClientId)?.incomingTransactionHelper.update();
226
- })
227
- );
228
- promises.filter((result) => result.status === "rejected").forEach((result) => {
229
- incomingTransactionsLogger(
230
- "failed to update incoming transactions",
231
- result.reason
232
- );
233
- });
234
- }
235
- stopAllTracking() {
236
- for (const [networkClientId] of __privateGet(this, _trackingMap)) {
237
- __privateMethod(this, _stopTrackingByNetworkClientId, stopTrackingByNetworkClientId_fn).call(this, networkClientId);
238
- }
239
- }
240
- };
241
- _isMultichainEnabled = new WeakMap();
242
- _provider = new WeakMap();
243
- _nonceTracker = new WeakMap();
244
- _incomingTransactionOptions = new WeakMap();
245
- _findNetworkClientIdByChainId = new WeakMap();
246
- _getNetworkClientById = new WeakMap();
247
- _getNetworkClientRegistry = new WeakMap();
248
- _removeIncomingTransactionHelperListeners = new WeakMap();
249
- _removePendingTransactionTrackerListeners = new WeakMap();
250
- _createNonceTracker = new WeakMap();
251
- _createIncomingTransactionHelper = new WeakMap();
252
- _createPendingTransactionTracker = new WeakMap();
253
- _nonceMutexesByChainId = new WeakMap();
254
- _trackingMap = new WeakMap();
255
- _etherscanRemoteTransactionSourcesMap = new WeakMap();
256
- _refreshTrackingMap = new WeakMap();
257
- _stopTrackingByNetworkClientId = new WeakSet();
258
- stopTrackingByNetworkClientId_fn = function(networkClientId) {
259
- const trackers = __privateGet(this, _trackingMap).get(networkClientId);
260
- if (trackers) {
261
- trackers.pendingTransactionTracker.stop();
262
- __privateGet(this, _removePendingTransactionTrackerListeners).call(this, trackers.pendingTransactionTracker);
263
- trackers.incomingTransactionHelper.stop();
264
- __privateGet(this, _removeIncomingTransactionHelperListeners).call(this, trackers.incomingTransactionHelper);
265
- __privateGet(this, _trackingMap).delete(networkClientId);
266
- }
267
- };
268
- _startTrackingByNetworkClientId = new WeakSet();
269
- startTrackingByNetworkClientId_fn = function(networkClientId) {
270
- const trackers = __privateGet(this, _trackingMap).get(networkClientId);
271
- if (trackers) {
272
- return;
273
- }
274
- const {
275
- provider,
276
- blockTracker,
277
- configuration: { chainId }
278
- } = __privateGet(this, _getNetworkClientById).call(this, networkClientId);
279
- let etherscanRemoteTransactionSource = __privateGet(this, _etherscanRemoteTransactionSourcesMap).get(chainId);
280
- if (!etherscanRemoteTransactionSource) {
281
- etherscanRemoteTransactionSource = new EtherscanRemoteTransactionSource({
282
- includeTokenTransfers: __privateGet(this, _incomingTransactionOptions).includeTokenTransfers
283
- });
284
- __privateGet(this, _etherscanRemoteTransactionSourcesMap).set(
285
- chainId,
286
- etherscanRemoteTransactionSource
287
- );
288
- }
289
- const nonceTracker = __privateGet(this, _createNonceTracker).call(this, {
290
- provider,
291
- blockTracker,
292
- chainId
293
- });
294
- const incomingTransactionHelper = __privateGet(this, _createIncomingTransactionHelper).call(this, {
295
- blockTracker,
296
- etherscanRemoteTransactionSource,
297
- chainId
298
- });
299
- const pendingTransactionTracker = __privateGet(this, _createPendingTransactionTracker).call(this, {
300
- provider,
301
- blockTracker,
302
- chainId
303
- });
304
- __privateGet(this, _trackingMap).set(networkClientId, {
305
- nonceTracker,
306
- incomingTransactionHelper,
307
- pendingTransactionTracker
308
- });
309
- };
310
- _refreshEtherscanRemoteTransactionSources = new WeakMap();
311
- _getNetworkClient = new WeakSet();
312
- getNetworkClient_fn = function({
313
- networkClientId,
314
- chainId
315
- } = {}) {
316
- let networkClient;
317
- if (networkClientId) {
318
- try {
319
- networkClient = __privateGet(this, _getNetworkClientById).call(this, networkClientId);
320
- } catch (err) {
321
- incomingTransactionsLogger("failed to get network client by networkClientId");
322
- }
323
- }
324
- if (!networkClient && chainId) {
325
- try {
326
- const networkClientIdForChainId = __privateGet(this, _findNetworkClientIdByChainId).call(this, chainId);
327
- networkClient = __privateGet(this, _getNetworkClientById).call(this, networkClientIdForChainId);
328
- } catch (err) {
329
- incomingTransactionsLogger("failed to get network client by chainId");
330
- }
331
- }
332
- return networkClient;
333
- };
334
-
335
- export {
336
- MultichainTrackingHelper
337
- };
338
- //# sourceMappingURL=chunk-4V4XIPCI.mjs.map
@@ -1 +0,0 @@
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 { NonceLock, NonceTracker } from '@metamask/nonce-tracker';\nimport type { Hex } from '@metamask/utils';\nimport { Mutex } from 'async-mutex';\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 if (!this.#isMultichainEnabled) {\n return new EthQuery(this.getProvider());\n }\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,67 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
- var _chunkH5MYUJHRjs = require('./chunk-H5MYUJHR.js');
4
-
5
- // src/utils/gas-flow.ts
6
- var _controllerutils = require('@metamask/controller-utils');
7
- function getGasFeeFlow(transactionMeta, gasFeeFlows) {
8
- return gasFeeFlows.find(
9
- (gasFeeFlow) => gasFeeFlow.matchesTransaction(transactionMeta)
10
- );
11
- }
12
- function mergeGasFeeEstimates({
13
- gasFeeControllerEstimates,
14
- transactionGasFeeEstimates
15
- }) {
16
- const transactionEstimateType = transactionGasFeeEstimates.type;
17
- if (transactionEstimateType === "fee-market" /* FeeMarket */) {
18
- return Object.values(_chunkH5MYUJHRjs.GasFeeEstimateLevel).reduce(
19
- (result, level) => ({
20
- ...result,
21
- [level]: mergeFeeMarketEstimate(
22
- gasFeeControllerEstimates?.[level],
23
- transactionGasFeeEstimates[level]
24
- )
25
- }),
26
- { ...gasFeeControllerEstimates }
27
- );
28
- }
29
- if (transactionEstimateType === "legacy" /* Legacy */) {
30
- return Object.values(_chunkH5MYUJHRjs.GasFeeEstimateLevel).reduce(
31
- (result, level) => ({
32
- ...result,
33
- [level]: getLegacyEstimate(transactionGasFeeEstimates, level)
34
- }),
35
- {}
36
- );
37
- }
38
- if (transactionEstimateType === "eth_gasPrice" /* GasPrice */) {
39
- return {
40
- gasPrice: getGasPriceEstimate(transactionGasFeeEstimates)
41
- };
42
- }
43
- return gasFeeControllerEstimates;
44
- }
45
- function mergeFeeMarketEstimate(gasFeeControllerEstimate, transactionGasFeeEstimate) {
46
- return {
47
- ...gasFeeControllerEstimate,
48
- suggestedMaxFeePerGas: _controllerutils.weiHexToGweiDec.call(void 0,
49
- transactionGasFeeEstimate.maxFeePerGas
50
- ),
51
- suggestedMaxPriorityFeePerGas: _controllerutils.weiHexToGweiDec.call(void 0,
52
- transactionGasFeeEstimate.maxPriorityFeePerGas
53
- )
54
- };
55
- }
56
- function getLegacyEstimate(transactionGasFeeEstimate, level) {
57
- return _controllerutils.weiHexToGweiDec.call(void 0, transactionGasFeeEstimate[level]);
58
- }
59
- function getGasPriceEstimate(transactionGasFeeEstimate) {
60
- return _controllerutils.weiHexToGweiDec.call(void 0, transactionGasFeeEstimate.gasPrice);
61
- }
62
-
63
-
64
-
65
-
66
- exports.getGasFeeFlow = getGasFeeFlow; exports.mergeGasFeeEstimates = mergeGasFeeEstimates;
67
- //# sourceMappingURL=chunk-4ZOE2ACZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/gas-flow.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,uBAAuB;AAwCzB,SAAS,cACd,iBACA,aACwB;AACxB,SAAO,YAAY;AAAA,IAAK,CAAC,eACvB,WAAW,mBAAmB,eAAe;AAAA,EAC/C;AACF;AASO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AACF,GAAgE;AAC9D,QAAM,0BAA0B,2BAA2B;AAE3D,MAAI,0DAA0D;AAC5D,WAAO,OAAO,OAAO,mBAAmB,EAAE;AAAA,MACxC,CAAC,QAAQ,WAAW;AAAA,QAClB,GAAG;AAAA,QACH,CAAC,KAAK,GAAG;AAAA,UACN,4BAAgD,KAAK;AAAA,UACtD,2BAA2B,KAAK;AAAA,QAClC;AAAA,MACF;AAAA,MACA,EAAE,GAAG,0BAA0B;AAAA,IACjC;AAAA,EACF;AAEA,MAAI,mDAAuD;AACzD,WAAO,OAAO,OAAO,mBAAmB,EAAE;AAAA,MACxC,CAAC,QAAQ,WAAW;AAAA,QAClB,GAAG;AAAA,QACH,CAAC,KAAK,GAAG,kBAAkB,4BAA4B,KAAK;AAAA,MAC9D;AAAA,MACA,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,2DAAyD;AAC3D,WAAO;AAAA,MACL,UAAU,oBAAoB,0BAA0B;AAAA,IAC1D;AAAA,EACF;AAEA,SAAO;AACT;AAQA,SAAS,uBACP,0BACA,2BACe;AACf,SAAO;AAAA,IACL,GAAG;AAAA,IACH,uBAAuB;AAAA,MACrB,0BAA0B;AAAA,IAC5B;AAAA,IACA,+BAA+B;AAAA,MAC7B,0BAA0B;AAAA,IAC5B;AAAA,EACF;AACF;AAQA,SAAS,kBACP,2BACA,OACQ;AACR,SAAO,gBAAgB,0BAA0B,KAAK,CAAC;AACzD;AAOA,SAAS,oBACP,2BACQ;AACR,SAAO,gBAAgB,0BAA0B,QAAQ;AAC3D","sourcesContent":["import { weiHexToGweiDec } from '@metamask/controller-utils';\nimport type {\n Eip1559GasFee,\n EthGasPriceEstimate,\n GasFeeEstimates,\n LegacyGasPriceEstimate,\n} from '@metamask/gas-fee-controller';\nimport { type GasFeeState } from '@metamask/gas-fee-controller';\n\nimport type {\n FeeMarketGasFeeEstimates,\n GasPriceGasFeeEstimates,\n LegacyGasFeeEstimates,\n} from '../types';\nimport {\n type GasFeeFlow,\n type TransactionMeta,\n type FeeMarketGasFeeEstimateForLevel,\n GasFeeEstimateLevel,\n GasFeeEstimateType,\n} from '../types';\n\ntype MergeGasFeeEstimatesRequest = {\n gasFeeControllerEstimates:\n | GasFeeEstimates\n | LegacyGasPriceEstimate\n | EthGasPriceEstimate;\n transactionGasFeeEstimates:\n | FeeMarketGasFeeEstimates\n | LegacyGasFeeEstimates\n | GasPriceGasFeeEstimates;\n};\n\n/**\n * Returns the first gas fee flow that matches the transaction.\n *\n * @param transactionMeta - The transaction metadata to find a gas fee flow for.\n * @param gasFeeFlows - The gas fee flows to search.\n * @returns The first gas fee flow that matches the transaction, or undefined if none match.\n */\nexport function getGasFeeFlow(\n transactionMeta: TransactionMeta,\n gasFeeFlows: GasFeeFlow[],\n): GasFeeFlow | undefined {\n return gasFeeFlows.find((gasFeeFlow) =>\n gasFeeFlow.matchesTransaction(transactionMeta),\n );\n}\n\n/**\n * Merge the gas fee estimates from the gas fee controller with the gas fee estimates from a transaction.\n * @param request - Data required to merge gas fee estimates.\n * @param request.gasFeeControllerEstimates - Gas fee estimates from the GasFeeController.\n * @param request.transactionGasFeeEstimates - Gas fee estimates from the transaction.\n * @returns The merged gas fee estimates.\n */\nexport function mergeGasFeeEstimates({\n gasFeeControllerEstimates,\n transactionGasFeeEstimates,\n}: MergeGasFeeEstimatesRequest): GasFeeState['gasFeeEstimates'] {\n const transactionEstimateType = transactionGasFeeEstimates.type;\n\n if (transactionEstimateType === GasFeeEstimateType.FeeMarket) {\n return Object.values(GasFeeEstimateLevel).reduce(\n (result, level) => ({\n ...result,\n [level]: mergeFeeMarketEstimate(\n (gasFeeControllerEstimates as GasFeeEstimates)?.[level],\n transactionGasFeeEstimates[level],\n ),\n }),\n { ...gasFeeControllerEstimates } as GasFeeEstimates,\n );\n }\n\n if (transactionEstimateType === GasFeeEstimateType.Legacy) {\n return Object.values(GasFeeEstimateLevel).reduce(\n (result, level) => ({\n ...result,\n [level]: getLegacyEstimate(transactionGasFeeEstimates, level),\n }),\n {} as LegacyGasPriceEstimate,\n );\n }\n\n if (transactionEstimateType === GasFeeEstimateType.GasPrice) {\n return {\n gasPrice: getGasPriceEstimate(transactionGasFeeEstimates),\n };\n }\n\n return gasFeeControllerEstimates;\n}\n\n/**\n * Merge a specific priority level of EIP-1559 gas fee estimates.\n * @param gasFeeControllerEstimate - The gas fee estimate from the gas fee controller.\n * @param transactionGasFeeEstimate - The gas fee estimate from the transaction.\n * @returns The merged gas fee estimate.\n */\nfunction mergeFeeMarketEstimate(\n gasFeeControllerEstimate: Eip1559GasFee | undefined,\n transactionGasFeeEstimate: FeeMarketGasFeeEstimateForLevel,\n): Eip1559GasFee {\n return {\n ...gasFeeControllerEstimate,\n suggestedMaxFeePerGas: weiHexToGweiDec(\n transactionGasFeeEstimate.maxFeePerGas,\n ),\n suggestedMaxPriorityFeePerGas: weiHexToGweiDec(\n transactionGasFeeEstimate.maxPriorityFeePerGas,\n ),\n } as Eip1559GasFee;\n}\n\n/**\n * Generate a specific priority level for a legacy gas fee estimate.\n * @param transactionGasFeeEstimate - The gas fee estimate from the transaction.\n * @param level - The gas fee estimate level.\n * @returns The legacy gas fee estimate.\n */\nfunction getLegacyEstimate(\n transactionGasFeeEstimate: LegacyGasFeeEstimates,\n level: GasFeeEstimateLevel,\n): string {\n return weiHexToGweiDec(transactionGasFeeEstimate[level]);\n}\n\n/**\n * Generate the value for a gas price gas fee estimate.\n * @param transactionGasFeeEstimate - The gas fee estimate from the transaction.\n * @returns The legacy gas fee estimate.\n */\nfunction getGasPriceEstimate(\n transactionGasFeeEstimate: GasPriceGasFeeEstimates,\n): string {\n return weiHexToGweiDec(transactionGasFeeEstimate.gasPrice);\n}\n"]}
@@ -1,137 +0,0 @@
1
- import {
2
- GAS_BUFFER_CHAIN_OVERRIDES
3
- } from "./chunk-O6ZZVIFH.mjs";
4
- import {
5
- projectLogger
6
- } from "./chunk-UQQWZT6C.mjs";
7
-
8
- // src/utils/gas.ts
9
- import {
10
- BNToHex,
11
- fractionBN,
12
- hexToBN,
13
- query
14
- } from "@metamask/controller-utils";
15
- import { add0x, createModuleLogger } from "@metamask/utils";
16
- var log = createModuleLogger(projectLogger, "gas");
17
- var FIXED_GAS = "0x5208";
18
- var DEFAULT_GAS_MULTIPLIER = 1.5;
19
- async function updateGas(request) {
20
- const { txMeta } = request;
21
- const initialParams = { ...txMeta.txParams };
22
- const [gas, simulationFails] = await getGas(request);
23
- txMeta.txParams.gas = gas;
24
- txMeta.simulationFails = simulationFails;
25
- if (!initialParams.gas) {
26
- txMeta.originalGasEstimate = txMeta.txParams.gas;
27
- }
28
- if (!txMeta.defaultGasEstimates) {
29
- txMeta.defaultGasEstimates = {};
30
- }
31
- txMeta.defaultGasEstimates.gas = txMeta.txParams.gas;
32
- }
33
- async function estimateGas(txParams, ethQuery) {
34
- const request = { ...txParams };
35
- const { data, value } = request;
36
- const { gasLimit: gasLimitHex, number: blockNumber } = await getLatestBlock(
37
- ethQuery
38
- );
39
- const gasLimitBN = hexToBN(gasLimitHex);
40
- request.data = data ? add0x(data) : data;
41
- request.gas = BNToHex(fractionBN(gasLimitBN, 19, 20));
42
- request.value = value || "0x0";
43
- let estimatedGas = request.gas;
44
- let simulationFails;
45
- try {
46
- estimatedGas = await query(ethQuery, "estimateGas", [request]);
47
- } catch (error) {
48
- simulationFails = {
49
- reason: error.message,
50
- errorKey: error.errorKey,
51
- debug: {
52
- blockNumber,
53
- blockGasLimit: gasLimitHex
54
- }
55
- };
56
- log("Estimation failed", { ...simulationFails, fallback: estimateGas });
57
- }
58
- return {
59
- blockGasLimit: gasLimitHex,
60
- estimatedGas,
61
- simulationFails
62
- };
63
- }
64
- function addGasBuffer(estimatedGas, blockGasLimit, multiplier) {
65
- const estimatedGasBN = hexToBN(estimatedGas);
66
- const maxGasBN = hexToBN(blockGasLimit).muln(0.9);
67
- const paddedGasBN = estimatedGasBN.muln(multiplier);
68
- if (estimatedGasBN.gt(maxGasBN)) {
69
- const estimatedGasHex = add0x(estimatedGas);
70
- log("Using estimated value", estimatedGasHex);
71
- return estimatedGasHex;
72
- }
73
- if (paddedGasBN.lt(maxGasBN)) {
74
- const paddedHex = add0x(BNToHex(paddedGasBN));
75
- log("Using padded estimate", paddedHex, multiplier);
76
- return paddedHex;
77
- }
78
- const maxHex = add0x(BNToHex(maxGasBN));
79
- log("Using 90% of block gas limit", maxHex);
80
- return maxHex;
81
- }
82
- async function getGas(request) {
83
- const { isCustomNetwork, chainId, txMeta } = request;
84
- if (txMeta.txParams.gas) {
85
- log("Using value from request", txMeta.txParams.gas);
86
- return [txMeta.txParams.gas];
87
- }
88
- if (await requiresFixedGas(request)) {
89
- log("Using fixed value", FIXED_GAS);
90
- return [FIXED_GAS];
91
- }
92
- const { blockGasLimit, estimatedGas, simulationFails } = await estimateGas(
93
- txMeta.txParams,
94
- request.ethQuery
95
- );
96
- if (isCustomNetwork) {
97
- log("Using original estimate as custom network");
98
- return [estimatedGas, simulationFails];
99
- }
100
- const bufferMultiplier = GAS_BUFFER_CHAIN_OVERRIDES[chainId] ?? DEFAULT_GAS_MULTIPLIER;
101
- const bufferedGas = addGasBuffer(
102
- estimatedGas,
103
- blockGasLimit,
104
- bufferMultiplier
105
- );
106
- return [bufferedGas, simulationFails];
107
- }
108
- async function requiresFixedGas({
109
- ethQuery,
110
- txMeta,
111
- isCustomNetwork
112
- }) {
113
- const {
114
- txParams: { to, data }
115
- } = txMeta;
116
- if (isCustomNetwork || !to || data) {
117
- return false;
118
- }
119
- const code = await getCode(ethQuery, to);
120
- return !code || code === "0x";
121
- }
122
- async function getCode(ethQuery, address) {
123
- return await query(ethQuery, "getCode", [address]);
124
- }
125
- async function getLatestBlock(ethQuery) {
126
- return await query(ethQuery, "getBlockByNumber", ["latest", false]);
127
- }
128
-
129
- export {
130
- log,
131
- FIXED_GAS,
132
- DEFAULT_GAS_MULTIPLIER,
133
- updateGas,
134
- estimateGas,
135
- addGasBuffer
136
- };
137
- //# sourceMappingURL=chunk-5G6OHAXI.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/gas.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n\nimport {\n BNToHex,\n fractionBN,\n hexToBN,\n query,\n} from '@metamask/controller-utils';\nimport type EthQuery from '@metamask/eth-query';\nimport type { Hex } from '@metamask/utils';\nimport { add0x, createModuleLogger } from '@metamask/utils';\n\nimport { GAS_BUFFER_CHAIN_OVERRIDES } from '../constants';\nimport { projectLogger } from '../logger';\nimport type { TransactionMeta, TransactionParams } from '../types';\n\nexport type UpdateGasRequest = {\n ethQuery: EthQuery;\n isCustomNetwork: boolean;\n chainId: Hex;\n txMeta: TransactionMeta;\n};\n\nexport const log = createModuleLogger(projectLogger, 'gas');\n\nexport const FIXED_GAS = '0x5208';\nexport const DEFAULT_GAS_MULTIPLIER = 1.5;\n\nexport async function updateGas(request: UpdateGasRequest) {\n const { txMeta } = request;\n const initialParams = { ...txMeta.txParams };\n\n const [gas, simulationFails] = await getGas(request);\n\n txMeta.txParams.gas = gas;\n txMeta.simulationFails = simulationFails;\n\n if (!initialParams.gas) {\n txMeta.originalGasEstimate = txMeta.txParams.gas;\n }\n\n if (!txMeta.defaultGasEstimates) {\n txMeta.defaultGasEstimates = {};\n }\n\n txMeta.defaultGasEstimates.gas = txMeta.txParams.gas;\n}\n\nexport async function estimateGas(\n txParams: TransactionParams,\n ethQuery: EthQuery,\n) {\n const request = { ...txParams };\n const { data, value } = request;\n\n const { gasLimit: gasLimitHex, number: blockNumber } = await getLatestBlock(\n ethQuery,\n );\n\n const gasLimitBN = hexToBN(gasLimitHex);\n\n request.data = data ? add0x(data) : data;\n request.gas = BNToHex(fractionBN(gasLimitBN, 19, 20));\n request.value = value || '0x0';\n\n let estimatedGas = request.gas;\n let simulationFails;\n\n try {\n estimatedGas = await query(ethQuery, 'estimateGas', [request]);\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n simulationFails = {\n reason: error.message,\n errorKey: error.errorKey,\n debug: {\n blockNumber,\n blockGasLimit: gasLimitHex,\n },\n };\n\n log('Estimation failed', { ...simulationFails, fallback: estimateGas });\n }\n\n return {\n blockGasLimit: gasLimitHex,\n estimatedGas,\n simulationFails,\n };\n}\n\nexport function addGasBuffer(\n estimatedGas: string,\n blockGasLimit: string,\n multiplier: number,\n) {\n const estimatedGasBN = hexToBN(estimatedGas);\n const maxGasBN = hexToBN(blockGasLimit).muln(0.9);\n const paddedGasBN = estimatedGasBN.muln(multiplier);\n\n if (estimatedGasBN.gt(maxGasBN)) {\n const estimatedGasHex = add0x(estimatedGas);\n log('Using estimated value', estimatedGasHex);\n return estimatedGasHex;\n }\n\n if (paddedGasBN.lt(maxGasBN)) {\n const paddedHex = add0x(BNToHex(paddedGasBN));\n log('Using padded estimate', paddedHex, multiplier);\n return paddedHex;\n }\n\n const maxHex = add0x(BNToHex(maxGasBN));\n log('Using 90% of block gas limit', maxHex);\n return maxHex;\n}\n\nasync function getGas(\n request: UpdateGasRequest,\n): Promise<[string, TransactionMeta['simulationFails']?]> {\n const { isCustomNetwork, chainId, txMeta } = request;\n\n if (txMeta.txParams.gas) {\n log('Using value from request', txMeta.txParams.gas);\n return [txMeta.txParams.gas];\n }\n\n if (await requiresFixedGas(request)) {\n log('Using fixed value', FIXED_GAS);\n return [FIXED_GAS];\n }\n\n const { blockGasLimit, estimatedGas, simulationFails } = await estimateGas(\n txMeta.txParams,\n request.ethQuery,\n );\n\n if (isCustomNetwork) {\n log('Using original estimate as custom network');\n return [estimatedGas, simulationFails];\n }\n\n const bufferMultiplier =\n GAS_BUFFER_CHAIN_OVERRIDES[\n chainId as keyof typeof GAS_BUFFER_CHAIN_OVERRIDES\n ] ?? DEFAULT_GAS_MULTIPLIER;\n\n const bufferedGas = addGasBuffer(\n estimatedGas,\n blockGasLimit,\n bufferMultiplier,\n );\n\n return [bufferedGas, simulationFails];\n}\n\nasync function requiresFixedGas({\n ethQuery,\n txMeta,\n isCustomNetwork,\n}: UpdateGasRequest): Promise<boolean> {\n const {\n txParams: { to, data },\n } = txMeta;\n\n if (isCustomNetwork || !to || data) {\n return false;\n }\n\n const code = await getCode(ethQuery, to);\n\n return !code || code === '0x';\n}\n\nasync function getCode(\n ethQuery: EthQuery,\n address: string,\n): Promise<string | undefined> {\n return await query(ethQuery, 'getCode', [address]);\n}\n\nasync function getLatestBlock(\n ethQuery: EthQuery,\n): Promise<{ gasLimit: string; number: string }> {\n return await query(ethQuery, 'getBlockByNumber', ['latest', false]);\n}\n"],"mappings":"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","names":[]}