@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,239 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
-
3
- var _chunkS6VGOPUYjs = require('./chunk-S6VGOPUY.js');
4
-
5
-
6
-
7
-
8
-
9
- var _chunkZ4BLTVTBjs = require('./chunk-Z4BLTVTB.js');
10
-
11
- // src/helpers/IncomingTransactionHelper.ts
12
- var _asyncmutex = require('async-mutex');
13
- var _events = require('events'); var _events2 = _interopRequireDefault(_events);
14
- var RECENT_HISTORY_BLOCK_RANGE = 10;
15
- var UPDATE_CHECKS = [
16
- (txMeta) => txMeta.status,
17
- (txMeta) => txMeta.txParams.gasUsed
18
- ];
19
- var _blockTracker, _getCurrentAccount, _getLastFetchedBlockNumbers, _getLocalTransactions, _getChainId, _isEnabled, _isRunning, _mutex, _onLatestBlock, _queryEntireHistory, _remoteTransactionSource, _transactionLimit, _updateTransactions, _sortTransactionsByTime, sortTransactionsByTime_fn, _getNewTransactions, getNewTransactions_fn, _getUpdatedTransactions, getUpdatedTransactions_fn, _isTransactionOutdated, isTransactionOutdated_fn, _getLastFetchedBlockNumberDec, getLastFetchedBlockNumberDec_fn, _getFromBlock, getFromBlock_fn, _updateLastFetchedBlockNumber, updateLastFetchedBlockNumber_fn, _getBlockNumberKey, getBlockNumberKey_fn, _canStart, canStart_fn;
20
- var IncomingTransactionHelper = class {
21
- constructor({
22
- blockTracker,
23
- getCurrentAccount,
24
- getLastFetchedBlockNumbers,
25
- getLocalTransactions,
26
- getChainId,
27
- isEnabled,
28
- queryEntireHistory,
29
- remoteTransactionSource,
30
- transactionLimit,
31
- updateTransactions
32
- }) {
33
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _sortTransactionsByTime);
34
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getNewTransactions);
35
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getUpdatedTransactions);
36
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _isTransactionOutdated);
37
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getLastFetchedBlockNumberDec);
38
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getFromBlock);
39
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _updateLastFetchedBlockNumber);
40
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getBlockNumberKey);
41
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _canStart);
42
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _blockTracker, void 0);
43
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getCurrentAccount, void 0);
44
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getLastFetchedBlockNumbers, void 0);
45
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getLocalTransactions, void 0);
46
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getChainId, void 0);
47
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _isEnabled, void 0);
48
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _isRunning, void 0);
49
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _mutex, new (0, _asyncmutex.Mutex)());
50
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _onLatestBlock, void 0);
51
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _queryEntireHistory, void 0);
52
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _remoteTransactionSource, void 0);
53
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _transactionLimit, void 0);
54
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _updateTransactions, void 0);
55
- this.hub = new (0, _events2.default)();
56
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _blockTracker, blockTracker);
57
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _getCurrentAccount, getCurrentAccount);
58
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _getLastFetchedBlockNumbers, getLastFetchedBlockNumbers);
59
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _getLocalTransactions, getLocalTransactions || (() => []));
60
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _getChainId, getChainId);
61
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _isEnabled, isEnabled ?? (() => true));
62
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _isRunning, false);
63
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _queryEntireHistory, queryEntireHistory ?? true);
64
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _remoteTransactionSource, remoteTransactionSource);
65
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _transactionLimit, transactionLimit);
66
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _updateTransactions, updateTransactions ?? false);
67
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _onLatestBlock, async (blockNumberHex) => {
68
- try {
69
- await this.update(blockNumberHex);
70
- } catch (error) {
71
- console.error("Error while checking incoming transactions", error);
72
- }
73
- });
74
- }
75
- start() {
76
- if (_chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _isRunning)) {
77
- return;
78
- }
79
- if (!_chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _canStart, canStart_fn).call(this)) {
80
- return;
81
- }
82
- _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _blockTracker).addListener("latest", _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _onLatestBlock));
83
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _isRunning, true);
84
- }
85
- stop() {
86
- _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _blockTracker).removeListener("latest", _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _onLatestBlock));
87
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _isRunning, false);
88
- }
89
- async update(latestBlockNumberHex) {
90
- const releaseLock = await _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _mutex).acquire();
91
- _chunkS6VGOPUYjs.incomingTransactionsLogger.call(void 0, "Checking for incoming transactions");
92
- try {
93
- if (!_chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _canStart, canStart_fn).call(this)) {
94
- return;
95
- }
96
- const latestBlockNumber = parseInt(
97
- latestBlockNumberHex || await _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _blockTracker).getLatestBlock(),
98
- 16
99
- );
100
- const additionalLastFetchedKeys = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _remoteTransactionSource).getLastBlockVariations?.() ?? [];
101
- const fromBlock = _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _getFromBlock, getFromBlock_fn).call(this, latestBlockNumber);
102
- const account = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getCurrentAccount).call(this);
103
- const currentChainId = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getChainId).call(this);
104
- let remoteTransactions = [];
105
- try {
106
- remoteTransactions = await _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _remoteTransactionSource).fetchTransactions({
107
- address: account.address,
108
- currentChainId,
109
- fromBlock,
110
- limit: _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _transactionLimit)
111
- });
112
- } catch (error) {
113
- _chunkS6VGOPUYjs.incomingTransactionsLogger.call(void 0, "Error while fetching remote transactions", error);
114
- return;
115
- }
116
- if (!_chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _updateTransactions)) {
117
- const address = account.address.toLowerCase();
118
- remoteTransactions = remoteTransactions.filter(
119
- (tx) => tx.txParams.to?.toLowerCase() === address
120
- );
121
- }
122
- const localTransactions = !_chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _updateTransactions) ? [] : _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getLocalTransactions).call(this);
123
- const newTransactions = _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _getNewTransactions, getNewTransactions_fn).call(this, remoteTransactions, localTransactions);
124
- const updatedTransactions = _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _getUpdatedTransactions, getUpdatedTransactions_fn).call(this, remoteTransactions, localTransactions);
125
- if (newTransactions.length > 0 || updatedTransactions.length > 0) {
126
- _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _sortTransactionsByTime, sortTransactionsByTime_fn).call(this, newTransactions);
127
- _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _sortTransactionsByTime, sortTransactionsByTime_fn).call(this, updatedTransactions);
128
- _chunkS6VGOPUYjs.incomingTransactionsLogger.call(void 0, "Found incoming transactions", {
129
- new: newTransactions,
130
- updated: updatedTransactions
131
- });
132
- this.hub.emit("transactions", {
133
- added: newTransactions,
134
- updated: updatedTransactions
135
- });
136
- }
137
- _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _updateLastFetchedBlockNumber, updateLastFetchedBlockNumber_fn).call(this, remoteTransactions, additionalLastFetchedKeys);
138
- } finally {
139
- releaseLock();
140
- }
141
- }
142
- };
143
- _blockTracker = new WeakMap();
144
- _getCurrentAccount = new WeakMap();
145
- _getLastFetchedBlockNumbers = new WeakMap();
146
- _getLocalTransactions = new WeakMap();
147
- _getChainId = new WeakMap();
148
- _isEnabled = new WeakMap();
149
- _isRunning = new WeakMap();
150
- _mutex = new WeakMap();
151
- _onLatestBlock = new WeakMap();
152
- _queryEntireHistory = new WeakMap();
153
- _remoteTransactionSource = new WeakMap();
154
- _transactionLimit = new WeakMap();
155
- _updateTransactions = new WeakMap();
156
- _sortTransactionsByTime = new WeakSet();
157
- sortTransactionsByTime_fn = function(transactions) {
158
- transactions.sort((a, b) => a.time < b.time ? -1 : 1);
159
- };
160
- _getNewTransactions = new WeakSet();
161
- getNewTransactions_fn = function(remoteTxs, localTxs) {
162
- return remoteTxs.filter(
163
- (tx) => !localTxs.some(({ hash }) => hash === tx.hash)
164
- );
165
- };
166
- _getUpdatedTransactions = new WeakSet();
167
- getUpdatedTransactions_fn = function(remoteTxs, localTxs) {
168
- return remoteTxs.filter(
169
- (remoteTx) => localTxs.some(
170
- (localTx) => remoteTx.hash === localTx.hash && _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _isTransactionOutdated, isTransactionOutdated_fn).call(this, remoteTx, localTx)
171
- )
172
- );
173
- };
174
- _isTransactionOutdated = new WeakSet();
175
- isTransactionOutdated_fn = function(remoteTx, localTx) {
176
- return UPDATE_CHECKS.some(
177
- (getValue) => getValue(remoteTx) !== getValue(localTx)
178
- );
179
- };
180
- _getLastFetchedBlockNumberDec = new WeakSet();
181
- getLastFetchedBlockNumberDec_fn = function() {
182
- const additionalLastFetchedKeys = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _remoteTransactionSource).getLastBlockVariations?.() ?? [];
183
- const lastFetchedKey = _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _getBlockNumberKey, getBlockNumberKey_fn).call(this, additionalLastFetchedKeys);
184
- const lastFetchedBlockNumbers = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getLastFetchedBlockNumbers).call(this);
185
- return lastFetchedBlockNumbers[lastFetchedKey];
186
- };
187
- _getFromBlock = new WeakSet();
188
- getFromBlock_fn = function(latestBlockNumber) {
189
- const lastFetchedBlockNumber = _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _getLastFetchedBlockNumberDec, getLastFetchedBlockNumberDec_fn).call(this);
190
- if (lastFetchedBlockNumber) {
191
- return lastFetchedBlockNumber + 1;
192
- }
193
- return _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _queryEntireHistory) ? void 0 : latestBlockNumber - RECENT_HISTORY_BLOCK_RANGE;
194
- };
195
- _updateLastFetchedBlockNumber = new WeakSet();
196
- updateLastFetchedBlockNumber_fn = function(remoteTxs, additionalKeys) {
197
- let lastFetchedBlockNumber = -1;
198
- for (const tx of remoteTxs) {
199
- const currentBlockNumberValue = tx.blockNumber ? parseInt(tx.blockNumber, 10) : -1;
200
- lastFetchedBlockNumber = Math.max(
201
- lastFetchedBlockNumber,
202
- currentBlockNumberValue
203
- );
204
- }
205
- if (lastFetchedBlockNumber === -1) {
206
- return;
207
- }
208
- const lastFetchedKey = _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _getBlockNumberKey, getBlockNumberKey_fn).call(this, additionalKeys);
209
- const lastFetchedBlockNumbers = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getLastFetchedBlockNumbers).call(this);
210
- const previousValue = lastFetchedBlockNumbers[lastFetchedKey];
211
- if (previousValue >= lastFetchedBlockNumber) {
212
- return;
213
- }
214
- this.hub.emit("updatedLastFetchedBlockNumbers", {
215
- lastFetchedBlockNumbers: {
216
- ...lastFetchedBlockNumbers,
217
- [lastFetchedKey]: lastFetchedBlockNumber
218
- },
219
- blockNumber: lastFetchedBlockNumber
220
- });
221
- };
222
- _getBlockNumberKey = new WeakSet();
223
- getBlockNumberKey_fn = function(additionalKeys) {
224
- const currentChainId = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getChainId).call(this);
225
- const currentAccount = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getCurrentAccount).call(this)?.address.toLowerCase();
226
- return [currentChainId, currentAccount, ...additionalKeys].join("#");
227
- };
228
- _canStart = new WeakSet();
229
- canStart_fn = function() {
230
- const isEnabled = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _isEnabled).call(this);
231
- const currentChainId = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getChainId).call(this);
232
- const isSupportedNetwork = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _remoteTransactionSource).isSupportedNetwork(currentChainId);
233
- return isEnabled && isSupportedNetwork;
234
- };
235
-
236
-
237
-
238
- exports.IncomingTransactionHelper = IncomingTransactionHelper;
239
- //# sourceMappingURL=chunk-RHDPOIS4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/helpers/IncomingTransactionHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AccountsController } from '@metamask/accounts-controller';\nimport type { BlockTracker } from '@metamask/network-controller';\nimport type { Hex } from '@metamask/utils';\nimport { Mutex } from 'async-mutex';\nimport EventEmitter from 'events';\n\nimport { incomingTransactionsLogger as log } from '../logger';\nimport type { RemoteTransactionSource, TransactionMeta } from '../types';\n\nconst RECENT_HISTORY_BLOCK_RANGE = 10;\n\n// TODO: Replace `any` with type\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst UPDATE_CHECKS: ((txMeta: TransactionMeta) => any)[] = [\n (txMeta) => txMeta.status,\n (txMeta) => txMeta.txParams.gasUsed,\n];\n\n/**\n * Configuration options for the IncomingTransactionHelper\n *\n * @property includeTokenTransfers - Whether or not to include ERC20 token transfers.\n * @property isEnabled - Whether or not incoming transaction retrieval is enabled.\n * @property queryEntireHistory - Whether to initially query the entire transaction history or only recent blocks.\n * @property updateTransactions - Whether to update local transactions using remote transaction data.\n */\nexport type IncomingTransactionOptions = {\n includeTokenTransfers?: boolean;\n isEnabled?: () => boolean;\n queryEntireHistory?: boolean;\n updateTransactions?: boolean;\n};\n\nexport class IncomingTransactionHelper {\n hub: EventEmitter;\n\n #blockTracker: BlockTracker;\n\n #getCurrentAccount: () => ReturnType<\n AccountsController['getSelectedAccount']\n >;\n\n #getLastFetchedBlockNumbers: () => Record<string, number>;\n\n #getLocalTransactions: () => TransactionMeta[];\n\n #getChainId: () => Hex;\n\n #isEnabled: () => boolean;\n\n #isRunning: boolean;\n\n #mutex = new Mutex();\n\n #onLatestBlock: (blockNumberHex: Hex) => Promise<void>;\n\n #queryEntireHistory: boolean;\n\n #remoteTransactionSource: RemoteTransactionSource;\n\n #transactionLimit?: number;\n\n #updateTransactions: boolean;\n\n constructor({\n blockTracker,\n getCurrentAccount,\n getLastFetchedBlockNumbers,\n getLocalTransactions,\n getChainId,\n isEnabled,\n queryEntireHistory,\n remoteTransactionSource,\n transactionLimit,\n updateTransactions,\n }: {\n blockTracker: BlockTracker;\n getCurrentAccount: () => ReturnType<\n AccountsController['getSelectedAccount']\n >;\n getLastFetchedBlockNumbers: () => Record<string, number>;\n getLocalTransactions?: () => TransactionMeta[];\n getChainId: () => Hex;\n isEnabled?: () => boolean;\n queryEntireHistory?: boolean;\n remoteTransactionSource: RemoteTransactionSource;\n transactionLimit?: number;\n updateTransactions?: boolean;\n }) {\n this.hub = new EventEmitter();\n\n this.#blockTracker = blockTracker;\n this.#getCurrentAccount = getCurrentAccount;\n this.#getLastFetchedBlockNumbers = getLastFetchedBlockNumbers;\n this.#getLocalTransactions = getLocalTransactions || (() => []);\n this.#getChainId = getChainId;\n this.#isEnabled = isEnabled ?? (() => true);\n this.#isRunning = false;\n this.#queryEntireHistory = queryEntireHistory ?? true;\n this.#remoteTransactionSource = remoteTransactionSource;\n this.#transactionLimit = transactionLimit;\n this.#updateTransactions = updateTransactions ?? false;\n\n // Using a property instead of a method to provide a listener reference\n // with the correct scope that we can remove later if stopped.\n this.#onLatestBlock = async (blockNumberHex: Hex) => {\n try {\n await this.update(blockNumberHex);\n } catch (error) {\n console.error('Error while checking incoming transactions', error);\n }\n };\n }\n\n start() {\n if (this.#isRunning) {\n return;\n }\n\n if (!this.#canStart()) {\n return;\n }\n\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.#blockTracker.addListener('latest', this.#onLatestBlock);\n this.#isRunning = true;\n }\n\n stop() {\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.#blockTracker.removeListener('latest', this.#onLatestBlock);\n this.#isRunning = false;\n }\n\n async update(latestBlockNumberHex?: Hex): Promise<void> {\n const releaseLock = await this.#mutex.acquire();\n\n log('Checking for incoming transactions');\n\n try {\n if (!this.#canStart()) {\n return;\n }\n\n const latestBlockNumber = parseInt(\n latestBlockNumberHex || (await this.#blockTracker.getLatestBlock()),\n 16,\n );\n\n const additionalLastFetchedKeys =\n this.#remoteTransactionSource.getLastBlockVariations?.() ?? [];\n\n const fromBlock = this.#getFromBlock(latestBlockNumber);\n const account = this.#getCurrentAccount();\n const currentChainId = this.#getChainId();\n\n let remoteTransactions = [];\n\n try {\n remoteTransactions =\n await this.#remoteTransactionSource.fetchTransactions({\n address: account.address,\n currentChainId,\n fromBlock,\n limit: this.#transactionLimit,\n });\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n log('Error while fetching remote transactions', error);\n return;\n }\n if (!this.#updateTransactions) {\n const address = account.address.toLowerCase();\n remoteTransactions = remoteTransactions.filter(\n (tx) => tx.txParams.to?.toLowerCase() === address,\n );\n }\n\n const localTransactions = !this.#updateTransactions\n ? []\n : this.#getLocalTransactions();\n\n const newTransactions = this.#getNewTransactions(\n remoteTransactions,\n localTransactions,\n );\n\n const updatedTransactions = this.#getUpdatedTransactions(\n remoteTransactions,\n localTransactions,\n );\n\n if (newTransactions.length > 0 || updatedTransactions.length > 0) {\n this.#sortTransactionsByTime(newTransactions);\n this.#sortTransactionsByTime(updatedTransactions);\n\n log('Found incoming transactions', {\n new: newTransactions,\n updated: updatedTransactions,\n });\n\n this.hub.emit('transactions', {\n added: newTransactions,\n updated: updatedTransactions,\n });\n }\n this.#updateLastFetchedBlockNumber(\n remoteTransactions,\n additionalLastFetchedKeys,\n );\n } finally {\n releaseLock();\n }\n }\n\n #sortTransactionsByTime(transactions: TransactionMeta[]) {\n transactions.sort((a, b) => (a.time < b.time ? -1 : 1));\n }\n\n #getNewTransactions(\n remoteTxs: TransactionMeta[],\n localTxs: TransactionMeta[],\n ): TransactionMeta[] {\n return remoteTxs.filter(\n (tx) => !localTxs.some(({ hash }) => hash === tx.hash),\n );\n }\n\n #getUpdatedTransactions(\n remoteTxs: TransactionMeta[],\n localTxs: TransactionMeta[],\n ): TransactionMeta[] {\n return remoteTxs.filter((remoteTx) =>\n localTxs.some(\n (localTx) =>\n remoteTx.hash === localTx.hash &&\n this.#isTransactionOutdated(remoteTx, localTx),\n ),\n );\n }\n\n #isTransactionOutdated(\n remoteTx: TransactionMeta,\n localTx: TransactionMeta,\n ): boolean {\n return UPDATE_CHECKS.some(\n (getValue) => getValue(remoteTx) !== getValue(localTx),\n );\n }\n\n #getLastFetchedBlockNumberDec(): number {\n const additionalLastFetchedKeys =\n this.#remoteTransactionSource.getLastBlockVariations?.() ?? [];\n const lastFetchedKey = this.#getBlockNumberKey(additionalLastFetchedKeys);\n const lastFetchedBlockNumbers = this.#getLastFetchedBlockNumbers();\n return lastFetchedBlockNumbers[lastFetchedKey];\n }\n\n #getFromBlock(latestBlockNumber: number): number | undefined {\n const lastFetchedBlockNumber = this.#getLastFetchedBlockNumberDec();\n\n if (lastFetchedBlockNumber) {\n return lastFetchedBlockNumber + 1;\n }\n\n return this.#queryEntireHistory\n ? undefined\n : latestBlockNumber - RECENT_HISTORY_BLOCK_RANGE;\n }\n\n #updateLastFetchedBlockNumber(\n remoteTxs: TransactionMeta[],\n additionalKeys: string[],\n ) {\n let lastFetchedBlockNumber = -1;\n\n for (const tx of remoteTxs) {\n const currentBlockNumberValue = tx.blockNumber\n ? parseInt(tx.blockNumber, 10)\n : -1;\n\n lastFetchedBlockNumber = Math.max(\n lastFetchedBlockNumber,\n currentBlockNumberValue,\n );\n }\n\n if (lastFetchedBlockNumber === -1) {\n return;\n }\n\n const lastFetchedKey = this.#getBlockNumberKey(additionalKeys);\n const lastFetchedBlockNumbers = this.#getLastFetchedBlockNumbers();\n const previousValue = lastFetchedBlockNumbers[lastFetchedKey];\n\n if (previousValue >= lastFetchedBlockNumber) {\n return;\n }\n\n this.hub.emit('updatedLastFetchedBlockNumbers', {\n lastFetchedBlockNumbers: {\n ...lastFetchedBlockNumbers,\n [lastFetchedKey]: lastFetchedBlockNumber,\n },\n blockNumber: lastFetchedBlockNumber,\n });\n }\n\n #getBlockNumberKey(additionalKeys: string[]): string {\n const currentChainId = this.#getChainId();\n const currentAccount = this.#getCurrentAccount()?.address.toLowerCase();\n\n return [currentChainId, currentAccount, ...additionalKeys].join('#');\n }\n\n #canStart(): boolean {\n const isEnabled = this.#isEnabled();\n const currentChainId = this.#getChainId();\n\n const isSupportedNetwork =\n this.#remoteTransactionSource.isSupportedNetwork(currentChainId);\n\n return isEnabled && isSupportedNetwork;\n }\n}\n"]}
@@ -1,14 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/logger.ts
2
- var _utils = require('@metamask/utils');
3
- var projectLogger = _utils.createProjectLogger.call(void 0, "transaction-controller");
4
- var incomingTransactionsLogger = _utils.createModuleLogger.call(void 0,
5
- projectLogger,
6
- "incoming-transactions"
7
- );
8
-
9
-
10
-
11
-
12
-
13
- exports.createModuleLogger = _utils.createModuleLogger; exports.projectLogger = projectLogger; exports.incomingTransactionsLogger = incomingTransactionsLogger;
14
- //# sourceMappingURL=chunk-S6VGOPUY.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/logger.ts"],"names":[],"mappings":";AAEA,SAAS,qBAAqB,0BAA0B;AAEjD,IAAM,gBAAgB,oBAAoB,wBAAwB;AAElE,IAAM,6BAA6B;AAAA,EACxC;AAAA,EACA;AACF","sourcesContent":["/* istanbul ignore file */\n\nimport { createProjectLogger, createModuleLogger } from '@metamask/utils';\n\nexport const projectLogger = createProjectLogger('transaction-controller');\n\nexport const incomingTransactionsLogger = createModuleLogger(\n projectLogger,\n 'incoming-transactions',\n);\n\nexport { createModuleLogger };\n"]}
@@ -1,88 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/utils/transaction-type.ts
2
- var _abi = require('@ethersproject/abi');
3
- var _controllerutils = require('@metamask/controller-utils');
4
-
5
-
6
-
7
-
8
-
9
- var _metamaskethabis = require('@metamask/metamask-eth-abis');
10
- var ESTIMATE_GAS_ERROR = "eth_estimateGas rpc method error";
11
- var ERC20Interface = new (0, _abi.Interface)(_metamaskethabis.abiERC20);
12
- var ERC721Interface = new (0, _abi.Interface)(_metamaskethabis.abiERC721);
13
- var ERC1155Interface = new (0, _abi.Interface)(_metamaskethabis.abiERC1155);
14
- var USDCInterface = new (0, _abi.Interface)(_metamaskethabis.abiFiatTokenV2);
15
- async function determineTransactionType(txParams, ethQuery) {
16
- const { data, to } = txParams;
17
- if (data && !to) {
18
- return { type: "contractDeployment" /* deployContract */, getCodeResponse: void 0 };
19
- }
20
- const { contractCode: getCodeResponse, isContractAddress } = await readAddressAsContract(ethQuery, to);
21
- if (!isContractAddress) {
22
- return { type: "simpleSend" /* simpleSend */, getCodeResponse };
23
- }
24
- const hasValue = Number(txParams.value ?? "0") !== 0;
25
- const contractInteractionResult = {
26
- type: "contractInteraction" /* contractInteraction */,
27
- getCodeResponse
28
- };
29
- if (!data || hasValue) {
30
- return contractInteractionResult;
31
- }
32
- const name = parseStandardTokenTransactionData(data)?.name;
33
- if (!name) {
34
- return contractInteractionResult;
35
- }
36
- const tokenMethodName = [
37
- "approve" /* tokenMethodApprove */,
38
- "setapprovalforall" /* tokenMethodSetApprovalForAll */,
39
- "transfer" /* tokenMethodTransfer */,
40
- "transferfrom" /* tokenMethodTransferFrom */,
41
- "safetransferfrom" /* tokenMethodSafeTransferFrom */,
42
- "increaseAllowance" /* tokenMethodIncreaseAllowance */
43
- ].find(
44
- (methodName) => methodName.toLowerCase() === name.toLowerCase()
45
- );
46
- if (tokenMethodName) {
47
- return { type: tokenMethodName, getCodeResponse };
48
- }
49
- return contractInteractionResult;
50
- }
51
- function parseStandardTokenTransactionData(data) {
52
- if (!data) {
53
- return void 0;
54
- }
55
- try {
56
- return ERC20Interface.parseTransaction({ data });
57
- } catch {
58
- }
59
- try {
60
- return ERC721Interface.parseTransaction({ data });
61
- } catch {
62
- }
63
- try {
64
- return ERC1155Interface.parseTransaction({ data });
65
- } catch {
66
- }
67
- try {
68
- return USDCInterface.parseTransaction({ data });
69
- } catch {
70
- }
71
- return void 0;
72
- }
73
- async function readAddressAsContract(ethQuery, address) {
74
- let contractCode;
75
- try {
76
- contractCode = await _controllerutils.query.call(void 0, ethQuery, "getCode", [address]);
77
- } catch (e) {
78
- contractCode = null;
79
- }
80
- const isContractAddress = contractCode ? contractCode !== "0x" && contractCode !== "0x0" : false;
81
- return { contractCode, isContractAddress };
82
- }
83
-
84
-
85
-
86
-
87
- exports.ESTIMATE_GAS_ERROR = ESTIMATE_GAS_ERROR; exports.determineTransactionType = determineTransactionType;
88
- //# sourceMappingURL=chunk-SD6CWFDF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/transaction-type.ts"],"names":[],"mappings":";AACA,SAAS,iBAAiB;AAC1B,SAAS,aAAa;AAEtB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKA,IAAM,qBAAqB;AAElC,IAAM,iBAAiB,IAAI,UAAU,QAAQ;AAC7C,IAAM,kBAAkB,IAAI,UAAU,SAAS;AAC/C,IAAM,mBAAmB,IAAI,UAAU,UAAU;AACjD,IAAM,gBAAgB,IAAI,UAAU,cAAc;AAWlD,eAAsB,yBACpB,UACA,UACqC;AACrC,QAAM,EAAE,MAAM,GAAG,IAAI;AAErB,MAAI,QAAQ,CAAC,IAAI;AACf,WAAO,EAAE,iDAAsC,iBAAiB,OAAU;AAAA,EAC5E;AAEA,QAAM,EAAE,cAAc,iBAAiB,kBAAkB,IACvD,MAAM,sBAAsB,UAAU,EAAE;AAE1C,MAAI,CAAC,mBAAmB;AACtB,WAAO,EAAE,qCAAkC,gBAAgB;AAAA,EAC7D;AAEA,QAAM,WAAW,OAAO,SAAS,SAAS,GAAG,MAAM;AAEnD,QAAM,4BAA4B;AAAA,IAChC;AAAA,IACA;AAAA,EACF;AAEA,MAAI,CAAC,QAAQ,UAAU;AACrB,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,kCAAkC,IAAI,GAAG;AAEtD,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOxB,EAAE;AAAA,IACA,CAAC,eAAe,WAAW,YAAY,MAAO,KAAgB,YAAY;AAAA,EAC5E;AAEA,MAAI,iBAAiB;AACnB,WAAO,EAAE,MAAM,iBAAiB,gBAAgB;AAAA,EAClD;AAEA,SAAO;AACT;AAUA,SAAS,kCACP,MACoC;AACpC,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,MAAI;AACF,WAAO,eAAe,iBAAiB,EAAE,KAAK,CAAC;AAAA,EACjD,QAAQ;AAAA,EAER;AAEA,MAAI;AACF,WAAO,gBAAgB,iBAAiB,EAAE,KAAK,CAAC;AAAA,EAClD,QAAQ;AAAA,EAER;AAEA,MAAI;AACF,WAAO,iBAAiB,iBAAiB,EAAE,KAAK,CAAC;AAAA,EACnD,QAAQ;AAAA,EAER;AAEA,MAAI;AACF,WAAO,cAAc,iBAAiB,EAAE,KAAK,CAAC;AAAA,EAChD,QAAQ;AAAA,EAER;AAEA,SAAO;AACT;AASA,eAAe,sBACb,UACA,SAIC;AACD,MAAI;AACJ,MAAI;AACF,mBAAe,MAAM,MAAM,UAAU,WAAW,CAAC,OAAO,CAAC;AAAA,EAC3D,SAAS,GAAG;AACV,mBAAe;AAAA,EACjB;AAEA,QAAM,oBAAoB,eACtB,iBAAiB,QAAQ,iBAAiB,QAC1C;AACJ,SAAO,EAAE,cAAc,kBAAkB;AAC3C","sourcesContent":["import type { TransactionDescription } from '@ethersproject/abi';\nimport { Interface } from '@ethersproject/abi';\nimport { query } from '@metamask/controller-utils';\nimport type EthQuery from '@metamask/eth-query';\nimport {\n abiERC721,\n abiERC20,\n abiERC1155,\n abiFiatTokenV2,\n} from '@metamask/metamask-eth-abis';\n\nimport type { InferTransactionTypeResult, TransactionParams } from '../types';\nimport { TransactionType } from '../types';\n\nexport const ESTIMATE_GAS_ERROR = 'eth_estimateGas rpc method error';\n\nconst ERC20Interface = new Interface(abiERC20);\nconst ERC721Interface = new Interface(abiERC721);\nconst ERC1155Interface = new Interface(abiERC1155);\nconst USDCInterface = new Interface(abiFiatTokenV2);\n\n/**\n * Determines the type of the transaction by analyzing the txParams.\n * It will never return TRANSACTION_TYPE_CANCEL or TRANSACTION_TYPE_RETRY as these\n * represent specific events that we specify manually at transaction creation.\n *\n * @param txParams - Parameters for the transaction.\n * @param ethQuery - EthQuery instance.\n * @returns A object with the transaction type and the contract code response in Hex.\n */\nexport async function determineTransactionType(\n txParams: TransactionParams,\n ethQuery: EthQuery,\n): Promise<InferTransactionTypeResult> {\n const { data, to } = txParams;\n\n if (data && !to) {\n return { type: TransactionType.deployContract, getCodeResponse: undefined };\n }\n\n const { contractCode: getCodeResponse, isContractAddress } =\n await readAddressAsContract(ethQuery, to);\n\n if (!isContractAddress) {\n return { type: TransactionType.simpleSend, getCodeResponse };\n }\n\n const hasValue = Number(txParams.value ?? '0') !== 0;\n\n const contractInteractionResult = {\n type: TransactionType.contractInteraction,\n getCodeResponse,\n };\n\n if (!data || hasValue) {\n return contractInteractionResult;\n }\n\n const name = parseStandardTokenTransactionData(data)?.name;\n\n if (!name) {\n return contractInteractionResult;\n }\n\n const tokenMethodName = [\n TransactionType.tokenMethodApprove,\n TransactionType.tokenMethodSetApprovalForAll,\n TransactionType.tokenMethodTransfer,\n TransactionType.tokenMethodTransferFrom,\n TransactionType.tokenMethodSafeTransferFrom,\n TransactionType.tokenMethodIncreaseAllowance,\n ].find(\n (methodName) => methodName.toLowerCase() === (name as string).toLowerCase(),\n );\n\n if (tokenMethodName) {\n return { type: tokenMethodName, getCodeResponse };\n }\n\n return contractInteractionResult;\n}\n\n/**\n * Attempts to decode transaction data using ABIs for three different token standards: ERC20, ERC721, ERC1155.\n * The data will decode correctly if the transaction is an interaction with a contract that matches one of these\n * contract standards\n *\n * @param data - Encoded transaction data.\n * @returns A representation of an ethereum contract call.\n */\nfunction parseStandardTokenTransactionData(\n data?: string,\n): TransactionDescription | undefined {\n if (!data) {\n return undefined;\n }\n\n try {\n return ERC20Interface.parseTransaction({ data });\n } catch {\n // ignore and next try to parse with erc721 ABI\n }\n\n try {\n return ERC721Interface.parseTransaction({ data });\n } catch {\n // ignore and next try to parse with erc1155 ABI\n }\n\n try {\n return ERC1155Interface.parseTransaction({ data });\n } catch {\n // ignore and return undefined\n }\n\n try {\n return USDCInterface.parseTransaction({ data });\n } catch {\n // ignore and return undefined\n }\n\n return undefined;\n}\n\n/**\n * Reads an Ethereum address and determines if it is a contract address.\n *\n * @param ethQuery - The Ethereum query object used to interact with the Ethereum blockchain.\n * @param address - The Ethereum address.\n * @returns An object containing the contract code and a boolean indicating if it is a contract address.\n */\nasync function readAddressAsContract(\n ethQuery: EthQuery,\n address?: string,\n): Promise<{\n contractCode: string | null;\n isContractAddress: boolean;\n}> {\n let contractCode;\n try {\n contractCode = await query(ethQuery, 'getCode', [address]);\n } catch (e) {\n contractCode = null;\n }\n\n const isContractAddress = contractCode\n ? contractCode !== '0x' && contractCode !== '0x0'\n : false;\n return { contractCode, isContractAddress };\n}\n"]}
@@ -1,120 +0,0 @@
1
- // src/utils/history.ts
2
- import jsonDiffer from "fast-json-patch";
3
- import { cloneDeep, merge } from "lodash";
4
- var MAX_TRANSACTION_HISTORY_LENGTH = 100;
5
- var DISPLAYED_TRANSACTION_HISTORY_PATHS = [
6
- "/status",
7
- "/txParams/gasPrice",
8
- "/txParams/gas",
9
- "/estimatedBaseFee",
10
- "/blockTimestamp"
11
- ];
12
- function addInitialHistorySnapshot(transactionMeta) {
13
- const snapshot = snapshotFromTransactionMeta(transactionMeta);
14
- return merge({}, transactionMeta, { history: [snapshot] });
15
- }
16
- function updateTransactionHistory(transactionMeta, note) {
17
- if (!transactionMeta.history) {
18
- return transactionMeta;
19
- }
20
- const currentState = snapshotFromTransactionMeta(transactionMeta);
21
- const previousState = replayHistory(transactionMeta.history);
22
- const newHistoryEntry = generateHistoryEntry(
23
- previousState,
24
- currentState,
25
- note
26
- );
27
- if (newHistoryEntry.length === 0) {
28
- return transactionMeta;
29
- }
30
- let updatedHistory = [
31
- ...transactionMeta.history,
32
- newHistoryEntry
33
- ];
34
- if (updatedHistory.length > MAX_TRANSACTION_HISTORY_LENGTH) {
35
- updatedHistory = compressTransactionHistory(updatedHistory);
36
- }
37
- return merge({}, transactionMeta, {
38
- history: updatedHistory
39
- });
40
- }
41
- function compressTransactionHistory(transactionHistory) {
42
- const initialEntry = transactionHistory[0];
43
- const historyEntries = transactionHistory.slice(
44
- 1
45
- );
46
- const firstNonDisplayedEntryIndex = historyEntries.findIndex(
47
- (historyEntry) => {
48
- return !historyEntry.some(
49
- ({ path }) => DISPLAYED_TRANSACTION_HISTORY_PATHS.includes(path)
50
- );
51
- }
52
- );
53
- if (firstNonDisplayedEntryIndex === -1) {
54
- return transactionHistory;
55
- }
56
- const mergeTargetEntryIndex = (
57
- // Merge with previous entry if there is no next entry.
58
- // We default to merging with next because the next entry might also be non-displayed, so it
59
- // might be removed in a future trim, saving more space.
60
- firstNonDisplayedEntryIndex === historyEntries.length - 1 ? firstNonDisplayedEntryIndex - 1 : firstNonDisplayedEntryIndex + 1
61
- );
62
- const firstIndexToMerge = Math.min(
63
- firstNonDisplayedEntryIndex,
64
- mergeTargetEntryIndex
65
- );
66
- const firstEntryToMerge = historyEntries[firstIndexToMerge];
67
- const secondEntryToMerge = historyEntries[firstIndexToMerge + 1];
68
- const beforeMergeState = replayHistory([
69
- initialEntry,
70
- ...historyEntries.slice(0, firstIndexToMerge)
71
- ]);
72
- const afterMergeState = replayHistory([
73
- beforeMergeState,
74
- firstEntryToMerge,
75
- secondEntryToMerge
76
- ]);
77
- const mergedHistoryEntry = generateHistoryEntry(
78
- beforeMergeState,
79
- afterMergeState,
80
- `${String(firstEntryToMerge[0].note)}, ${String(
81
- secondEntryToMerge[0].note
82
- )}`
83
- );
84
- historyEntries.splice(firstIndexToMerge, 2, mergedHistoryEntry);
85
- return [initialEntry, ...historyEntries];
86
- }
87
- function generateHistoryEntry(previousState, currentState, note) {
88
- const historyOperationsEntry = jsonDiffer.compare(
89
- previousState,
90
- currentState
91
- );
92
- if (historyOperationsEntry[0]) {
93
- if (note) {
94
- historyOperationsEntry[0].note = note;
95
- }
96
- historyOperationsEntry[0].timestamp = Date.now();
97
- }
98
- return historyOperationsEntry;
99
- }
100
- function replayHistory(transactionHistory) {
101
- const shortHistory = cloneDeep(transactionHistory);
102
- return shortHistory.reduce(
103
- // TODO: Replace `any` with type
104
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
105
- (val, entry) => jsonDiffer.applyPatch(val, entry).newDocument
106
- );
107
- }
108
- function snapshotFromTransactionMeta(transactionMeta) {
109
- const snapshot = { ...transactionMeta };
110
- delete snapshot.history;
111
- return cloneDeep(snapshot);
112
- }
113
-
114
- export {
115
- MAX_TRANSACTION_HISTORY_LENGTH,
116
- DISPLAYED_TRANSACTION_HISTORY_PATHS,
117
- addInitialHistorySnapshot,
118
- updateTransactionHistory
119
- };
120
- //# sourceMappingURL=chunk-SMC5Q6ZH.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/history.ts"],"sourcesContent":["import jsonDiffer from 'fast-json-patch';\nimport { cloneDeep, merge } from 'lodash';\n\nimport type {\n TransactionHistory,\n TransactionHistoryEntry,\n TransactionMeta,\n} from '../types';\n\n/**\n * The maximum allowed length of the `transaction.history` property.\n */\nexport const MAX_TRANSACTION_HISTORY_LENGTH = 100;\n\n/**\n * A list of trarnsaction history paths that may be used for display. These entries will not be\n * compressed.\n */\nexport const DISPLAYED_TRANSACTION_HISTORY_PATHS = [\n '/status',\n '/txParams/gasPrice',\n '/txParams/gas',\n '/estimatedBaseFee',\n '/blockTimestamp',\n];\n\n/**\n * Build a new version of the provided transaction with an initial history\n * entry, which is just a snapshot of the transaction.\n *\n * @param transactionMeta - TransactionMeta to add initial history snapshot to.\n * @returns A copy of `transactionMeta` with a new `history` property.\n */\nexport function addInitialHistorySnapshot(\n transactionMeta: TransactionMeta,\n): TransactionMeta {\n const snapshot = snapshotFromTransactionMeta(transactionMeta);\n return merge({}, transactionMeta, { history: [snapshot] });\n}\n\n/**\n * Builds a new version of the transaction with a new history entry if\n * it has a `history` property, or just returns the transaction.\n *\n * @param transactionMeta - TransactionMeta to add history entry to.\n * @param note - Note to add to history entry.\n * @returns A copy of `transactionMeta` with a new `history` entry if it has an\n * existing non-empty `history` array.\n */\nexport function updateTransactionHistory(\n transactionMeta: TransactionMeta,\n note: string,\n): TransactionMeta {\n if (!transactionMeta.history) {\n return transactionMeta;\n }\n\n const currentState = snapshotFromTransactionMeta(transactionMeta);\n const previousState = replayHistory(transactionMeta.history);\n const newHistoryEntry = generateHistoryEntry(\n previousState,\n currentState,\n note,\n );\n\n if (newHistoryEntry.length === 0) {\n return transactionMeta;\n }\n\n // Casts required here because this list has two separate types of entries:\n // TransactionMeta and TransactionHistoryEntry. The only TransactionMeta is the first\n // entry, but TypeScript loses that type information when `slice` is called for some reason.\n let updatedHistory = [\n ...transactionMeta.history,\n newHistoryEntry,\n ] as TransactionHistory;\n\n if (updatedHistory.length > MAX_TRANSACTION_HISTORY_LENGTH) {\n updatedHistory = compressTransactionHistory(updatedHistory);\n }\n\n return merge({}, transactionMeta, {\n history: updatedHistory,\n });\n}\n\n/**\n * Compress the transaction history, if it is possible to do so without compressing entries used\n * for display. History entries are merged together to make room for a single new entry.\n *\n * @param transactionHistory - The transaction history to compress.\n * @returns A compressed transaction history.\n */\nfunction compressTransactionHistory(\n transactionHistory: TransactionHistory,\n): TransactionHistory {\n const initialEntry = transactionHistory[0];\n // Casts required here because this list has two separate types of entries:\n // TransactionMeta and TransactionHistoryEntry. The only TransactionMeta is the first\n // entry, but TypeScript loses that type information when `slice` is called for some reason.\n const historyEntries = transactionHistory.slice(\n 1,\n ) as TransactionHistoryEntry[];\n\n const firstNonDisplayedEntryIndex = historyEntries.findIndex(\n (historyEntry) => {\n return !historyEntry.some(({ path }) =>\n DISPLAYED_TRANSACTION_HISTORY_PATHS.includes(path),\n );\n },\n );\n\n // If no non-displayed entry is found, let history exceed max size.\n // TODO: Move data used for display to another property, so that we can more reliably limit\n // history size or remove it altogether.\n if (firstNonDisplayedEntryIndex === -1) {\n return transactionHistory;\n }\n\n // If a non-displayed entry is found that we can remove, merge it with another entry.\n // The entry we're merging with might be a \"displayed\" entry, but that's OK, merging more changes\n // in does not break our display logic.\n const mergeTargetEntryIndex =\n // Merge with previous entry if there is no next entry.\n // We default to merging with next because the next entry might also be non-displayed, so it\n // might be removed in a future trim, saving more space.\n firstNonDisplayedEntryIndex === historyEntries.length - 1\n ? firstNonDisplayedEntryIndex - 1\n : firstNonDisplayedEntryIndex + 1;\n const firstIndexToMerge = Math.min(\n firstNonDisplayedEntryIndex,\n mergeTargetEntryIndex,\n );\n const firstEntryToMerge = historyEntries[firstIndexToMerge];\n const secondEntryToMerge = historyEntries[firstIndexToMerge + 1];\n\n const beforeMergeState = replayHistory([\n initialEntry,\n ...historyEntries.slice(0, firstIndexToMerge),\n ]);\n const afterMergeState = replayHistory([\n beforeMergeState,\n firstEntryToMerge,\n secondEntryToMerge,\n ]);\n const mergedHistoryEntry = generateHistoryEntry(\n beforeMergeState,\n afterMergeState,\n `${String(firstEntryToMerge[0].note)}, ${String(\n secondEntryToMerge[0].note,\n )}`,\n );\n\n historyEntries.splice(firstIndexToMerge, 2, mergedHistoryEntry);\n return [initialEntry, ...historyEntries];\n}\n\n/**\n * Generates a history entry from the previous and new transaction metadata.\n *\n * @param previousState - The previous transaction metadata.\n * @param currentState - The new transaction metadata.\n * @param note - A note for the transaction metada update.\n * @returns An array of history operation.\n */\nfunction generateHistoryEntry(\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousState: any,\n currentState: TransactionMeta,\n note: string,\n): TransactionHistoryEntry {\n const historyOperationsEntry = jsonDiffer.compare(\n previousState,\n currentState,\n ) as TransactionHistoryEntry;\n // Add a note to the first operation, since it breaks if we append it to the entry\n if (historyOperationsEntry[0]) {\n if (note) {\n historyOperationsEntry[0].note = note;\n }\n historyOperationsEntry[0].timestamp = Date.now();\n }\n return historyOperationsEntry;\n}\n\n/**\n * Recovers previous transactionMeta from passed history array.\n *\n * @param transactionHistory - The transaction metadata to replay.\n * @returns The transaction metadata.\n */\nfunction replayHistory(\n transactionHistory: TransactionHistory,\n): TransactionMeta {\n const shortHistory = cloneDeep(transactionHistory);\n return shortHistory.reduce(\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (val, entry: any) => jsonDiffer.applyPatch(val, entry).newDocument,\n ) as TransactionMeta;\n}\n\n/**\n * Clone the transaction meta data without the history property.\n *\n * @param transactionMeta - The transaction metadata to snapshot.\n * @returns A deep clone of transaction metadata without history property.\n */\nfunction snapshotFromTransactionMeta(\n transactionMeta: TransactionMeta,\n): TransactionMeta {\n const snapshot = { ...transactionMeta };\n delete snapshot.history;\n return cloneDeep(snapshot);\n}\n"],"mappings":"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","names":[]}
@@ -1,120 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/utils/history.ts
2
- var _fastjsonpatch = require('fast-json-patch'); var _fastjsonpatch2 = _interopRequireDefault(_fastjsonpatch);
3
- var _lodash = require('lodash');
4
- var MAX_TRANSACTION_HISTORY_LENGTH = 100;
5
- var DISPLAYED_TRANSACTION_HISTORY_PATHS = [
6
- "/status",
7
- "/txParams/gasPrice",
8
- "/txParams/gas",
9
- "/estimatedBaseFee",
10
- "/blockTimestamp"
11
- ];
12
- function addInitialHistorySnapshot(transactionMeta) {
13
- const snapshot = snapshotFromTransactionMeta(transactionMeta);
14
- return _lodash.merge.call(void 0, {}, transactionMeta, { history: [snapshot] });
15
- }
16
- function updateTransactionHistory(transactionMeta, note) {
17
- if (!transactionMeta.history) {
18
- return transactionMeta;
19
- }
20
- const currentState = snapshotFromTransactionMeta(transactionMeta);
21
- const previousState = replayHistory(transactionMeta.history);
22
- const newHistoryEntry = generateHistoryEntry(
23
- previousState,
24
- currentState,
25
- note
26
- );
27
- if (newHistoryEntry.length === 0) {
28
- return transactionMeta;
29
- }
30
- let updatedHistory = [
31
- ...transactionMeta.history,
32
- newHistoryEntry
33
- ];
34
- if (updatedHistory.length > MAX_TRANSACTION_HISTORY_LENGTH) {
35
- updatedHistory = compressTransactionHistory(updatedHistory);
36
- }
37
- return _lodash.merge.call(void 0, {}, transactionMeta, {
38
- history: updatedHistory
39
- });
40
- }
41
- function compressTransactionHistory(transactionHistory) {
42
- const initialEntry = transactionHistory[0];
43
- const historyEntries = transactionHistory.slice(
44
- 1
45
- );
46
- const firstNonDisplayedEntryIndex = historyEntries.findIndex(
47
- (historyEntry) => {
48
- return !historyEntry.some(
49
- ({ path }) => DISPLAYED_TRANSACTION_HISTORY_PATHS.includes(path)
50
- );
51
- }
52
- );
53
- if (firstNonDisplayedEntryIndex === -1) {
54
- return transactionHistory;
55
- }
56
- const mergeTargetEntryIndex = (
57
- // Merge with previous entry if there is no next entry.
58
- // We default to merging with next because the next entry might also be non-displayed, so it
59
- // might be removed in a future trim, saving more space.
60
- firstNonDisplayedEntryIndex === historyEntries.length - 1 ? firstNonDisplayedEntryIndex - 1 : firstNonDisplayedEntryIndex + 1
61
- );
62
- const firstIndexToMerge = Math.min(
63
- firstNonDisplayedEntryIndex,
64
- mergeTargetEntryIndex
65
- );
66
- const firstEntryToMerge = historyEntries[firstIndexToMerge];
67
- const secondEntryToMerge = historyEntries[firstIndexToMerge + 1];
68
- const beforeMergeState = replayHistory([
69
- initialEntry,
70
- ...historyEntries.slice(0, firstIndexToMerge)
71
- ]);
72
- const afterMergeState = replayHistory([
73
- beforeMergeState,
74
- firstEntryToMerge,
75
- secondEntryToMerge
76
- ]);
77
- const mergedHistoryEntry = generateHistoryEntry(
78
- beforeMergeState,
79
- afterMergeState,
80
- `${String(firstEntryToMerge[0].note)}, ${String(
81
- secondEntryToMerge[0].note
82
- )}`
83
- );
84
- historyEntries.splice(firstIndexToMerge, 2, mergedHistoryEntry);
85
- return [initialEntry, ...historyEntries];
86
- }
87
- function generateHistoryEntry(previousState, currentState, note) {
88
- const historyOperationsEntry = _fastjsonpatch2.default.compare(
89
- previousState,
90
- currentState
91
- );
92
- if (historyOperationsEntry[0]) {
93
- if (note) {
94
- historyOperationsEntry[0].note = note;
95
- }
96
- historyOperationsEntry[0].timestamp = Date.now();
97
- }
98
- return historyOperationsEntry;
99
- }
100
- function replayHistory(transactionHistory) {
101
- const shortHistory = _lodash.cloneDeep.call(void 0, transactionHistory);
102
- return shortHistory.reduce(
103
- // TODO: Replace `any` with type
104
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
105
- (val, entry) => _fastjsonpatch2.default.applyPatch(val, entry).newDocument
106
- );
107
- }
108
- function snapshotFromTransactionMeta(transactionMeta) {
109
- const snapshot = { ...transactionMeta };
110
- delete snapshot.history;
111
- return _lodash.cloneDeep.call(void 0, snapshot);
112
- }
113
-
114
-
115
-
116
-
117
-
118
-
119
- exports.MAX_TRANSACTION_HISTORY_LENGTH = MAX_TRANSACTION_HISTORY_LENGTH; exports.DISPLAYED_TRANSACTION_HISTORY_PATHS = DISPLAYED_TRANSACTION_HISTORY_PATHS; exports.addInitialHistorySnapshot = addInitialHistorySnapshot; exports.updateTransactionHistory = updateTransactionHistory;
120
- //# sourceMappingURL=chunk-TIE3CPF7.js.map