@metamask-previews/transaction-controller 69.6.1-preview-4f4c98e → 69.6.1-preview-eb263b0ee

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 (492) hide show
  1. package/CHANGELOG.md +0 -5
  2. package/dist/TransactionController-method-action-types.cjs +7 -0
  3. package/dist/TransactionController-method-action-types.cjs.map +1 -0
  4. package/dist/{TransactionController-method-action-types.d.ts → TransactionController-method-action-types.d.cts} +2 -2
  5. package/dist/TransactionController-method-action-types.d.cts.map +1 -0
  6. package/dist/TransactionController-method-action-types.d.mts +413 -0
  7. package/dist/TransactionController-method-action-types.d.mts.map +1 -0
  8. package/dist/{TransactionController-method-action-types.js → TransactionController-method-action-types.mjs} +1 -1
  9. package/dist/TransactionController-method-action-types.mjs.map +1 -0
  10. package/dist/TransactionController.cjs +2444 -0
  11. package/dist/TransactionController.cjs.map +1 -0
  12. package/dist/{TransactionController.d.ts → TransactionController.d.cts} +18 -18
  13. package/dist/TransactionController.d.cts.map +1 -0
  14. package/dist/TransactionController.d.mts +751 -0
  15. package/dist/TransactionController.d.mts.map +1 -0
  16. package/dist/{TransactionController.js → TransactionController.mjs} +50 -49
  17. package/dist/TransactionController.mjs.map +1 -0
  18. package/dist/api/accounts-api.cjs +57 -0
  19. package/dist/api/accounts-api.cjs.map +1 -0
  20. package/dist/api/{accounts-api.d.ts → accounts-api.d.cts} +1 -1
  21. package/dist/api/accounts-api.d.cts.map +1 -0
  22. package/dist/api/accounts-api.d.mts +44 -0
  23. package/dist/api/accounts-api.d.mts.map +1 -0
  24. package/dist/api/{accounts-api.js → accounts-api.mjs} +5 -5
  25. package/dist/api/accounts-api.mjs.map +1 -0
  26. package/dist/api/simulation-api.cjs +116 -0
  27. package/dist/api/simulation-api.cjs.map +1 -0
  28. package/dist/api/{simulation-api.d.ts → simulation-api.d.cts} +3 -3
  29. package/dist/api/simulation-api.d.cts.map +1 -0
  30. package/dist/api/simulation-api.d.mts +196 -0
  31. package/dist/api/simulation-api.d.mts.map +1 -0
  32. package/dist/api/{simulation-api.js → simulation-api.mjs} +8 -7
  33. package/dist/api/simulation-api.mjs.map +1 -0
  34. package/dist/constants.cjs +111 -0
  35. package/dist/constants.cjs.map +1 -0
  36. package/dist/{constants.d.ts → constants.d.cts} +37 -37
  37. package/dist/constants.d.cts.map +1 -0
  38. package/dist/constants.d.mts +78 -0
  39. package/dist/constants.d.mts.map +1 -0
  40. package/dist/{constants.js → constants.mjs} +1 -1
  41. package/dist/constants.mjs.map +1 -0
  42. package/dist/errors.cjs +37 -0
  43. package/dist/errors.cjs.map +1 -0
  44. package/dist/{errors.d.ts → errors.d.cts} +2 -2
  45. package/dist/errors.d.cts.map +1 -0
  46. package/dist/errors.d.mts +19 -0
  47. package/dist/errors.d.mts.map +1 -0
  48. package/dist/{errors.js → errors.mjs} +2 -2
  49. package/dist/errors.mjs.map +1 -0
  50. package/dist/gas-flows/DefaultGasFeeFlow.cjs +85 -0
  51. package/dist/gas-flows/{DefaultGasFeeFlow.js.map → DefaultGasFeeFlow.cjs.map} +1 -1
  52. package/dist/gas-flows/{DefaultGasFeeFlow.d.ts → DefaultGasFeeFlow.d.cts} +2 -2
  53. package/dist/gas-flows/DefaultGasFeeFlow.d.cts.map +1 -0
  54. package/dist/gas-flows/DefaultGasFeeFlow.d.mts +10 -0
  55. package/dist/gas-flows/DefaultGasFeeFlow.d.mts.map +1 -0
  56. package/dist/gas-flows/{DefaultGasFeeFlow.js → DefaultGasFeeFlow.mjs} +6 -6
  57. package/dist/gas-flows/DefaultGasFeeFlow.mjs.map +1 -0
  58. package/dist/gas-flows/LineaGasFeeFlow.cjs +111 -0
  59. package/dist/gas-flows/LineaGasFeeFlow.cjs.map +1 -0
  60. package/dist/gas-flows/{LineaGasFeeFlow.d.ts → LineaGasFeeFlow.d.cts} +3 -3
  61. package/dist/gas-flows/LineaGasFeeFlow.d.cts.map +1 -0
  62. package/dist/gas-flows/LineaGasFeeFlow.d.mts +16 -0
  63. package/dist/gas-flows/LineaGasFeeFlow.d.mts.map +1 -0
  64. package/dist/gas-flows/{LineaGasFeeFlow.js → LineaGasFeeFlow.mjs} +7 -7
  65. package/dist/gas-flows/LineaGasFeeFlow.mjs.map +1 -0
  66. package/dist/gas-flows/MantleLayer1GasFeeFlow.cjs +66 -0
  67. package/dist/gas-flows/MantleLayer1GasFeeFlow.cjs.map +1 -0
  68. package/dist/gas-flows/{MantleLayer1GasFeeFlow.d.ts → MantleLayer1GasFeeFlow.d.cts} +5 -5
  69. package/dist/gas-flows/MantleLayer1GasFeeFlow.d.cts.map +1 -0
  70. package/dist/gas-flows/MantleLayer1GasFeeFlow.d.mts +21 -0
  71. package/dist/gas-flows/MantleLayer1GasFeeFlow.d.mts.map +1 -0
  72. package/dist/gas-flows/{MantleLayer1GasFeeFlow.js → MantleLayer1GasFeeFlow.mjs} +6 -6
  73. package/dist/gas-flows/MantleLayer1GasFeeFlow.mjs.map +1 -0
  74. package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs +59 -0
  75. package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs.map +1 -0
  76. package/dist/gas-flows/{OptimismLayer1GasFeeFlow.d.ts → OptimismLayer1GasFeeFlow.d.cts} +4 -4
  77. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.cts.map +1 -0
  78. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts +14 -0
  79. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts.map +1 -0
  80. package/dist/gas-flows/{OptimismLayer1GasFeeFlow.js → OptimismLayer1GasFeeFlow.mjs} +5 -5
  81. package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs.map +1 -0
  82. package/dist/gas-flows/OracleLayer1GasFeeFlow.cjs +201 -0
  83. package/dist/gas-flows/OracleLayer1GasFeeFlow.cjs.map +1 -0
  84. package/dist/gas-flows/{OracleLayer1GasFeeFlow.d.ts → OracleLayer1GasFeeFlow.d.cts} +5 -5
  85. package/dist/gas-flows/OracleLayer1GasFeeFlow.d.cts.map +1 -0
  86. package/dist/gas-flows/OracleLayer1GasFeeFlow.d.mts +57 -0
  87. package/dist/gas-flows/OracleLayer1GasFeeFlow.d.mts.map +1 -0
  88. package/dist/gas-flows/{OracleLayer1GasFeeFlow.js → OracleLayer1GasFeeFlow.mjs} +15 -8
  89. package/dist/gas-flows/OracleLayer1GasFeeFlow.mjs.map +1 -0
  90. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.cjs +123 -0
  91. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.cjs.map +1 -0
  92. package/dist/gas-flows/{RandomisedEstimationsGasFeeFlow.d.ts → RandomisedEstimationsGasFeeFlow.d.cts} +4 -4
  93. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.d.cts.map +1 -0
  94. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.d.mts +28 -0
  95. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.d.mts.map +1 -0
  96. package/dist/gas-flows/{RandomisedEstimationsGasFeeFlow.js → RandomisedEstimationsGasFeeFlow.mjs} +8 -8
  97. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.mjs.map +1 -0
  98. package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs +24 -0
  99. package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs.map +1 -0
  100. package/dist/gas-flows/{ScrollLayer1GasFeeFlow.d.ts → ScrollLayer1GasFeeFlow.d.cts} +5 -5
  101. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.cts.map +1 -0
  102. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts +16 -0
  103. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts.map +1 -0
  104. package/dist/gas-flows/{ScrollLayer1GasFeeFlow.js → ScrollLayer1GasFeeFlow.mjs} +3 -3
  105. package/dist/gas-flows/ScrollLayer1GasFeeFlow.mjs.map +1 -0
  106. package/dist/gas-flows/TestGasFeeFlow.cjs +73 -0
  107. package/dist/gas-flows/TestGasFeeFlow.cjs.map +1 -0
  108. package/dist/gas-flows/{TestGasFeeFlow.d.ts → TestGasFeeFlow.d.cts} +2 -2
  109. package/dist/gas-flows/TestGasFeeFlow.d.cts.map +1 -0
  110. package/dist/gas-flows/TestGasFeeFlow.d.mts +12 -0
  111. package/dist/gas-flows/TestGasFeeFlow.d.mts.map +1 -0
  112. package/dist/gas-flows/{TestGasFeeFlow.js → TestGasFeeFlow.mjs} +3 -3
  113. package/dist/gas-flows/TestGasFeeFlow.mjs.map +1 -0
  114. package/dist/helpers/GasFeePoller.cjs +334 -0
  115. package/dist/helpers/GasFeePoller.cjs.map +1 -0
  116. package/dist/helpers/{GasFeePoller.d.ts → GasFeePoller.d.cts} +10 -7
  117. package/dist/helpers/GasFeePoller.d.cts.map +1 -0
  118. package/dist/helpers/GasFeePoller.d.mts +66 -0
  119. package/dist/helpers/GasFeePoller.d.mts.map +1 -0
  120. package/dist/helpers/{GasFeePoller.js → GasFeePoller.mjs} +9 -9
  121. package/dist/helpers/GasFeePoller.mjs.map +1 -0
  122. package/dist/helpers/MethodDataHelper.cjs +84 -0
  123. package/dist/helpers/MethodDataHelper.cjs.map +1 -0
  124. package/dist/helpers/{MethodDataHelper.d.ts → MethodDataHelper.d.cts} +7 -4
  125. package/dist/helpers/MethodDataHelper.d.cts.map +1 -0
  126. package/dist/helpers/MethodDataHelper.d.mts +16 -0
  127. package/dist/helpers/MethodDataHelper.d.mts.map +1 -0
  128. package/dist/helpers/{MethodDataHelper.js → MethodDataHelper.mjs} +7 -7
  129. package/dist/helpers/MethodDataHelper.mjs.map +1 -0
  130. package/dist/helpers/MultichainTrackingHelper.cjs +231 -0
  131. package/dist/helpers/MultichainTrackingHelper.cjs.map +1 -0
  132. package/dist/helpers/{MultichainTrackingHelper.d.ts → MultichainTrackingHelper.d.cts} +5 -5
  133. package/dist/helpers/MultichainTrackingHelper.d.cts.map +1 -0
  134. package/dist/helpers/MultichainTrackingHelper.d.mts +56 -0
  135. package/dist/helpers/MultichainTrackingHelper.d.mts.map +1 -0
  136. package/dist/helpers/{MultichainTrackingHelper.js → MultichainTrackingHelper.mjs} +8 -8
  137. package/dist/helpers/MultichainTrackingHelper.mjs.map +1 -0
  138. package/dist/helpers/PendingTransactionTracker.cjs +407 -0
  139. package/dist/helpers/PendingTransactionTracker.cjs.map +1 -0
  140. package/dist/helpers/{PendingTransactionTracker.d.ts → PendingTransactionTracker.d.cts} +8 -5
  141. package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -0
  142. package/dist/helpers/PendingTransactionTracker.d.mts +54 -0
  143. package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -0
  144. package/dist/helpers/{PendingTransactionTracker.js → PendingTransactionTracker.mjs} +15 -14
  145. package/dist/helpers/PendingTransactionTracker.mjs.map +1 -0
  146. package/dist/helpers/ResimulateHelper.cjs +274 -0
  147. package/dist/helpers/ResimulateHelper.cjs.map +1 -0
  148. package/dist/helpers/{ResimulateHelper.d.ts → ResimulateHelper.d.cts} +3 -3
  149. package/dist/helpers/ResimulateHelper.d.cts.map +1 -0
  150. package/dist/helpers/ResimulateHelper.d.mts +36 -0
  151. package/dist/helpers/ResimulateHelper.d.mts.map +1 -0
  152. package/dist/helpers/{ResimulateHelper.js → ResimulateHelper.mjs} +8 -7
  153. package/dist/helpers/ResimulateHelper.mjs.map +1 -0
  154. package/dist/helpers/TransactionPoller.cjs +175 -0
  155. package/dist/helpers/TransactionPoller.cjs.map +1 -0
  156. package/dist/helpers/{TransactionPoller.d.ts → TransactionPoller.d.cts} +5 -5
  157. package/dist/helpers/TransactionPoller.d.cts.map +1 -0
  158. package/dist/helpers/TransactionPoller.d.mts +37 -0
  159. package/dist/helpers/TransactionPoller.d.mts.map +1 -0
  160. package/dist/helpers/{TransactionPoller.js → TransactionPoller.mjs} +11 -10
  161. package/dist/helpers/TransactionPoller.mjs.map +1 -0
  162. package/dist/hooks/CollectPublishHook.cjs +94 -0
  163. package/dist/hooks/CollectPublishHook.cjs.map +1 -0
  164. package/dist/hooks/{CollectPublishHook.d.ts → CollectPublishHook.d.cts} +3 -3
  165. package/dist/hooks/CollectPublishHook.d.cts.map +1 -0
  166. package/dist/hooks/CollectPublishHook.d.mts +29 -0
  167. package/dist/hooks/CollectPublishHook.d.mts.map +1 -0
  168. package/dist/hooks/{CollectPublishHook.js → CollectPublishHook.mjs} +5 -4
  169. package/dist/hooks/CollectPublishHook.mjs.map +1 -0
  170. package/dist/hooks/ExtraTransactionsPublishHook.cjs +126 -0
  171. package/dist/hooks/ExtraTransactionsPublishHook.cjs.map +1 -0
  172. package/dist/hooks/{ExtraTransactionsPublishHook.d.ts → ExtraTransactionsPublishHook.d.cts} +3 -3
  173. package/dist/hooks/ExtraTransactionsPublishHook.d.cts.map +1 -0
  174. package/dist/hooks/ExtraTransactionsPublishHook.d.mts +19 -0
  175. package/dist/hooks/ExtraTransactionsPublishHook.d.mts.map +1 -0
  176. package/dist/hooks/{ExtraTransactionsPublishHook.js → ExtraTransactionsPublishHook.mjs} +3 -3
  177. package/dist/hooks/ExtraTransactionsPublishHook.mjs.map +1 -0
  178. package/dist/hooks/SequentialPublishBatchHook.cjs +112 -0
  179. package/dist/hooks/SequentialPublishBatchHook.cjs.map +1 -0
  180. package/dist/hooks/{SequentialPublishBatchHook.d.ts → SequentialPublishBatchHook.d.cts} +4 -4
  181. package/dist/hooks/SequentialPublishBatchHook.d.cts.map +1 -0
  182. package/dist/hooks/SequentialPublishBatchHook.d.mts +22 -0
  183. package/dist/hooks/SequentialPublishBatchHook.d.mts.map +1 -0
  184. package/dist/hooks/{SequentialPublishBatchHook.js → SequentialPublishBatchHook.mjs} +4 -4
  185. package/dist/hooks/SequentialPublishBatchHook.mjs.map +1 -0
  186. package/dist/index.cjs +40 -0
  187. package/dist/index.cjs.map +1 -0
  188. package/dist/{index.d.ts → index.d.cts} +16 -16
  189. package/dist/index.d.cts.map +1 -0
  190. package/dist/index.d.mts +16 -0
  191. package/dist/index.d.mts.map +1 -0
  192. package/dist/index.mjs +12 -0
  193. package/dist/index.mjs.map +1 -0
  194. package/dist/logger.cjs +9 -0
  195. package/dist/logger.cjs.map +1 -0
  196. package/dist/{logger.d.ts → logger.d.cts} +3 -2
  197. package/dist/logger.d.cts.map +1 -0
  198. package/dist/logger.d.mts +6 -0
  199. package/dist/logger.d.mts.map +1 -0
  200. package/dist/{logger.js → logger.mjs} +2 -2
  201. package/dist/logger.mjs.map +1 -0
  202. package/dist/types.cjs +382 -0
  203. package/dist/types.cjs.map +1 -0
  204. package/dist/{types.d.ts → types.d.cts} +8 -8
  205. package/dist/types.d.cts.map +1 -0
  206. package/dist/types.d.mts +1887 -0
  207. package/dist/types.d.mts.map +1 -0
  208. package/dist/{types.js → types.mjs} +1 -1
  209. package/dist/types.mjs.map +1 -0
  210. package/dist/utils/balance-changes.cjs +592 -0
  211. package/dist/utils/balance-changes.cjs.map +1 -0
  212. package/dist/utils/{balance-changes.d.ts → balance-changes.d.cts} +5 -5
  213. package/dist/utils/balance-changes.d.cts.map +1 -0
  214. package/dist/utils/balance-changes.d.mts +38 -0
  215. package/dist/utils/balance-changes.d.mts.map +1 -0
  216. package/dist/utils/{balance-changes.js → balance-changes.mjs} +20 -13
  217. package/dist/utils/balance-changes.mjs.map +1 -0
  218. package/dist/utils/balance.cjs +44 -0
  219. package/dist/utils/balance.cjs.map +1 -0
  220. package/dist/utils/{balance.d.ts → balance.d.cts} +5 -5
  221. package/dist/utils/balance.d.cts.map +1 -0
  222. package/dist/utils/balance.d.mts +26 -0
  223. package/dist/utils/balance.d.mts.map +1 -0
  224. package/dist/utils/{balance.js → balance.mjs} +3 -3
  225. package/dist/utils/balance.mjs.map +1 -0
  226. package/dist/utils/batch.cjs +712 -0
  227. package/dist/utils/batch.cjs.map +1 -0
  228. package/dist/utils/{batch.d.ts → batch.d.cts} +8 -8
  229. package/dist/utils/batch.d.cts.map +1 -0
  230. package/dist/utils/batch.d.mts +58 -0
  231. package/dist/utils/batch.d.mts.map +1 -0
  232. package/dist/utils/{batch.js → batch.mjs} +18 -18
  233. package/dist/utils/batch.mjs.map +1 -0
  234. package/dist/utils/eip7702.cjs +354 -0
  235. package/dist/utils/eip7702.cjs.map +1 -0
  236. package/dist/utils/{eip7702.d.ts → eip7702.d.cts} +5 -5
  237. package/dist/utils/eip7702.d.cts.map +1 -0
  238. package/dist/utils/eip7702.d.mts +137 -0
  239. package/dist/utils/eip7702.d.mts.map +1 -0
  240. package/dist/utils/{eip7702.js → eip7702.mjs} +12 -12
  241. package/dist/utils/eip7702.mjs.map +1 -0
  242. package/dist/utils/external-transactions.cjs +36 -0
  243. package/dist/utils/external-transactions.cjs.map +1 -0
  244. package/dist/utils/{external-transactions.d.ts → external-transactions.d.cts} +2 -2
  245. package/dist/utils/external-transactions.d.cts.map +1 -0
  246. package/dist/utils/external-transactions.d.mts +10 -0
  247. package/dist/utils/external-transactions.d.mts.map +1 -0
  248. package/dist/utils/{external-transactions.js → external-transactions.mjs} +3 -3
  249. package/dist/utils/external-transactions.mjs.map +1 -0
  250. package/dist/utils/feature-flags.cjs +255 -0
  251. package/dist/utils/feature-flags.cjs.map +1 -0
  252. package/dist/utils/{feature-flags.d.ts → feature-flags.d.cts} +3 -3
  253. package/dist/utils/feature-flags.d.cts.map +1 -0
  254. package/dist/utils/feature-flags.d.mts +313 -0
  255. package/dist/utils/feature-flags.d.mts.map +1 -0
  256. package/dist/utils/{feature-flags.js → feature-flags.mjs} +5 -5
  257. package/dist/utils/feature-flags.mjs.map +1 -0
  258. package/dist/utils/first-time-interaction.cjs +69 -0
  259. package/dist/utils/first-time-interaction.cjs.map +1 -0
  260. package/dist/utils/{first-time-interaction.d.ts → first-time-interaction.d.cts} +3 -3
  261. package/dist/utils/first-time-interaction.d.cts.map +1 -0
  262. package/dist/utils/first-time-interaction.d.mts +30 -0
  263. package/dist/utils/first-time-interaction.d.mts.map +1 -0
  264. package/dist/utils/{first-time-interaction.js → first-time-interaction.mjs} +6 -6
  265. package/dist/utils/first-time-interaction.mjs.map +1 -0
  266. package/dist/utils/gas-fee-tokens.cjs +174 -0
  267. package/dist/utils/gas-fee-tokens.cjs.map +1 -0
  268. package/dist/utils/{gas-fee-tokens.d.ts → gas-fee-tokens.d.cts} +5 -5
  269. package/dist/utils/gas-fee-tokens.d.cts.map +1 -0
  270. package/dist/utils/gas-fee-tokens.d.mts +46 -0
  271. package/dist/utils/gas-fee-tokens.d.mts.map +1 -0
  272. package/dist/utils/{gas-fee-tokens.js → gas-fee-tokens.mjs} +9 -9
  273. package/dist/utils/gas-fee-tokens.mjs.map +1 -0
  274. package/dist/utils/gas-fees.cjs +424 -0
  275. package/dist/utils/gas-fees.cjs.map +1 -0
  276. package/dist/utils/{gas-fees.d.ts → gas-fees.d.cts} +5 -5
  277. package/dist/utils/gas-fees.d.cts.map +1 -0
  278. package/dist/utils/gas-fees.d.mts +57 -0
  279. package/dist/utils/gas-fees.d.mts.map +1 -0
  280. package/dist/utils/{gas-fees.js → gas-fees.mjs} +9 -9
  281. package/dist/utils/gas-fees.mjs.map +1 -0
  282. package/dist/utils/gas-flow.cjs +81 -0
  283. package/dist/utils/gas-flow.cjs.map +1 -0
  284. package/dist/utils/{gas-flow.d.ts → gas-flow.d.cts} +6 -6
  285. package/dist/utils/gas-flow.d.cts.map +1 -0
  286. package/dist/utils/gas-flow.d.mts +29 -0
  287. package/dist/utils/gas-flow.d.mts.map +1 -0
  288. package/dist/utils/{gas-flow.js → gas-flow.mjs} +3 -3
  289. package/dist/utils/gas-flow.mjs.map +1 -0
  290. package/dist/utils/gas.cjs +545 -0
  291. package/dist/utils/gas.cjs.map +1 -0
  292. package/dist/utils/{gas.d.ts → gas.d.cts} +6 -5
  293. package/dist/utils/gas.d.cts.map +1 -0
  294. package/dist/utils/gas.d.mts +116 -0
  295. package/dist/utils/gas.d.mts.map +1 -0
  296. package/dist/utils/{gas.js → gas.mjs} +11 -11
  297. package/dist/utils/gas.mjs.map +1 -0
  298. package/dist/utils/layer1-gas-fee-flow.cjs +73 -0
  299. package/dist/utils/layer1-gas-fee-flow.cjs.map +1 -0
  300. package/dist/utils/{layer1-gas-fee-flow.d.ts → layer1-gas-fee-flow.d.cts} +4 -4
  301. package/dist/utils/layer1-gas-fee-flow.d.cts.map +1 -0
  302. package/dist/utils/layer1-gas-fee-flow.d.mts +28 -0
  303. package/dist/utils/layer1-gas-fee-flow.d.mts.map +1 -0
  304. package/dist/utils/{layer1-gas-fee-flow.js → layer1-gas-fee-flow.mjs} +3 -3
  305. package/dist/utils/layer1-gas-fee-flow.mjs.map +1 -0
  306. package/dist/utils/nonce.cjs +93 -0
  307. package/dist/utils/nonce.cjs.map +1 -0
  308. package/dist/utils/{nonce.d.ts → nonce.d.cts} +3 -3
  309. package/dist/utils/nonce.d.cts.map +1 -0
  310. package/dist/utils/nonce.d.mts +26 -0
  311. package/dist/utils/nonce.d.mts.map +1 -0
  312. package/dist/utils/{nonce.js → nonce.mjs} +4 -4
  313. package/dist/utils/nonce.mjs.map +1 -0
  314. package/dist/utils/prepare.cjs +97 -0
  315. package/dist/utils/prepare.cjs.map +1 -0
  316. package/dist/utils/{prepare.d.ts → prepare.d.cts} +5 -5
  317. package/dist/utils/prepare.d.cts.map +1 -0
  318. package/dist/utils/prepare.d.mts +22 -0
  319. package/dist/utils/prepare.d.mts.map +1 -0
  320. package/dist/utils/{prepare.js → prepare.mjs} +6 -5
  321. package/dist/utils/prepare.mjs.map +1 -0
  322. package/dist/utils/provider.cjs +106 -0
  323. package/dist/utils/provider.cjs.map +1 -0
  324. package/dist/utils/{provider.d.ts → provider.d.cts} +4 -4
  325. package/dist/utils/provider.d.cts.map +1 -0
  326. package/dist/utils/provider.d.mts +65 -0
  327. package/dist/utils/provider.d.mts.map +1 -0
  328. package/dist/utils/{provider.js → provider.mjs} +3 -3
  329. package/dist/utils/provider.mjs.map +1 -0
  330. package/dist/utils/recipient.cjs +31 -0
  331. package/dist/utils/recipient.cjs.map +1 -0
  332. package/dist/utils/{recipient.d.ts → recipient.d.cts} +2 -2
  333. package/dist/utils/recipient.d.cts.map +1 -0
  334. package/dist/utils/recipient.d.mts +13 -0
  335. package/dist/utils/recipient.d.mts.map +1 -0
  336. package/dist/utils/{recipient.js → recipient.mjs} +3 -3
  337. package/dist/utils/recipient.mjs.map +1 -0
  338. package/dist/utils/retry.cjs +93 -0
  339. package/dist/utils/retry.cjs.map +1 -0
  340. package/dist/utils/{retry.d.ts → retry.d.cts} +2 -2
  341. package/dist/utils/retry.d.cts.map +1 -0
  342. package/dist/utils/retry.d.mts +11 -0
  343. package/dist/utils/retry.d.mts.map +1 -0
  344. package/dist/utils/{retry.js → retry.mjs} +3 -3
  345. package/dist/utils/retry.mjs.map +1 -0
  346. package/dist/utils/revert-reason.cjs +192 -0
  347. package/dist/utils/revert-reason.cjs.map +1 -0
  348. package/dist/utils/{revert-reason.d.ts → revert-reason.d.cts} +5 -5
  349. package/dist/utils/revert-reason.d.cts.map +1 -0
  350. package/dist/utils/revert-reason.d.mts +57 -0
  351. package/dist/utils/revert-reason.d.mts.map +1 -0
  352. package/dist/utils/{revert-reason.js → revert-reason.mjs} +4 -4
  353. package/dist/utils/revert-reason.mjs.map +1 -0
  354. package/dist/utils/signature.cjs +26 -0
  355. package/dist/utils/signature.cjs.map +1 -0
  356. package/dist/utils/{signature.d.ts → signature.d.cts} +2 -2
  357. package/dist/utils/signature.d.cts.map +1 -0
  358. package/dist/utils/signature.d.mts +11 -0
  359. package/dist/utils/signature.d.mts.map +1 -0
  360. package/dist/utils/{signature.js → signature.mjs} +3 -3
  361. package/dist/utils/signature.mjs.map +1 -0
  362. package/dist/utils/swaps.cjs +332 -0
  363. package/dist/utils/swaps.cjs.map +1 -0
  364. package/dist/utils/{swaps.d.ts → swaps.d.cts} +5 -5
  365. package/dist/utils/swaps.d.cts.map +1 -0
  366. package/dist/utils/swaps.d.mts +90 -0
  367. package/dist/utils/swaps.d.mts.map +1 -0
  368. package/dist/utils/{swaps.js → swaps.mjs} +8 -7
  369. package/dist/utils/swaps.mjs.map +1 -0
  370. package/dist/utils/transaction-type.cjs +159 -0
  371. package/dist/utils/transaction-type.cjs.map +1 -0
  372. package/dist/utils/{transaction-type.d.ts → transaction-type.d.cts} +6 -6
  373. package/dist/utils/transaction-type.d.cts.map +1 -0
  374. package/dist/utils/transaction-type.d.mts +44 -0
  375. package/dist/utils/transaction-type.d.mts.map +1 -0
  376. package/dist/utils/{transaction-type.js → transaction-type.mjs} +6 -6
  377. package/dist/utils/transaction-type.mjs.map +1 -0
  378. package/dist/utils/utils.cjs +287 -0
  379. package/dist/utils/utils.cjs.map +1 -0
  380. package/dist/utils/{utils.d.ts → utils.d.cts} +4 -4
  381. package/dist/utils/utils.d.cts.map +1 -0
  382. package/dist/utils/utils.d.mts +101 -0
  383. package/dist/utils/utils.d.mts.map +1 -0
  384. package/dist/utils/{utils.js → utils.mjs} +12 -5
  385. package/dist/utils/utils.mjs.map +1 -0
  386. package/dist/utils/validation.cjs +389 -0
  387. package/dist/utils/validation.cjs.map +1 -0
  388. package/dist/utils/{validation.d.ts → validation.d.cts} +4 -4
  389. package/dist/utils/validation.d.cts.map +1 -0
  390. package/dist/utils/validation.d.mts +66 -0
  391. package/dist/utils/validation.d.mts.map +1 -0
  392. package/dist/utils/{validation.js → validation.mjs} +8 -8
  393. package/dist/utils/validation.mjs.map +1 -0
  394. package/package.json +19 -15
  395. package/dist/TransactionController-method-action-types.d.ts.map +0 -1
  396. package/dist/TransactionController-method-action-types.js.map +0 -1
  397. package/dist/TransactionController.d.ts.map +0 -1
  398. package/dist/TransactionController.js.map +0 -1
  399. package/dist/api/accounts-api.d.ts.map +0 -1
  400. package/dist/api/accounts-api.js.map +0 -1
  401. package/dist/api/simulation-api.d.ts.map +0 -1
  402. package/dist/api/simulation-api.js.map +0 -1
  403. package/dist/constants.d.ts.map +0 -1
  404. package/dist/constants.js.map +0 -1
  405. package/dist/errors.d.ts.map +0 -1
  406. package/dist/errors.js.map +0 -1
  407. package/dist/gas-flows/DefaultGasFeeFlow.d.ts.map +0 -1
  408. package/dist/gas-flows/LineaGasFeeFlow.d.ts.map +0 -1
  409. package/dist/gas-flows/LineaGasFeeFlow.js.map +0 -1
  410. package/dist/gas-flows/MantleLayer1GasFeeFlow.d.ts.map +0 -1
  411. package/dist/gas-flows/MantleLayer1GasFeeFlow.js.map +0 -1
  412. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.ts.map +0 -1
  413. package/dist/gas-flows/OptimismLayer1GasFeeFlow.js.map +0 -1
  414. package/dist/gas-flows/OracleLayer1GasFeeFlow.d.ts.map +0 -1
  415. package/dist/gas-flows/OracleLayer1GasFeeFlow.js.map +0 -1
  416. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.d.ts.map +0 -1
  417. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.js.map +0 -1
  418. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.ts.map +0 -1
  419. package/dist/gas-flows/ScrollLayer1GasFeeFlow.js.map +0 -1
  420. package/dist/gas-flows/TestGasFeeFlow.d.ts.map +0 -1
  421. package/dist/gas-flows/TestGasFeeFlow.js.map +0 -1
  422. package/dist/helpers/GasFeePoller.d.ts.map +0 -1
  423. package/dist/helpers/GasFeePoller.js.map +0 -1
  424. package/dist/helpers/MethodDataHelper.d.ts.map +0 -1
  425. package/dist/helpers/MethodDataHelper.js.map +0 -1
  426. package/dist/helpers/MultichainTrackingHelper.d.ts.map +0 -1
  427. package/dist/helpers/MultichainTrackingHelper.js.map +0 -1
  428. package/dist/helpers/PendingTransactionTracker.d.ts.map +0 -1
  429. package/dist/helpers/PendingTransactionTracker.js.map +0 -1
  430. package/dist/helpers/ResimulateHelper.d.ts.map +0 -1
  431. package/dist/helpers/ResimulateHelper.js.map +0 -1
  432. package/dist/helpers/TransactionPoller.d.ts.map +0 -1
  433. package/dist/helpers/TransactionPoller.js.map +0 -1
  434. package/dist/hooks/CollectPublishHook.d.ts.map +0 -1
  435. package/dist/hooks/CollectPublishHook.js.map +0 -1
  436. package/dist/hooks/ExtraTransactionsPublishHook.d.ts.map +0 -1
  437. package/dist/hooks/ExtraTransactionsPublishHook.js.map +0 -1
  438. package/dist/hooks/SequentialPublishBatchHook.d.ts.map +0 -1
  439. package/dist/hooks/SequentialPublishBatchHook.js.map +0 -1
  440. package/dist/index.d.ts.map +0 -1
  441. package/dist/index.js +0 -12
  442. package/dist/index.js.map +0 -1
  443. package/dist/logger.d.ts.map +0 -1
  444. package/dist/logger.js.map +0 -1
  445. package/dist/types.d.ts.map +0 -1
  446. package/dist/types.js.map +0 -1
  447. package/dist/utils/balance-changes.d.ts.map +0 -1
  448. package/dist/utils/balance-changes.js.map +0 -1
  449. package/dist/utils/balance.d.ts.map +0 -1
  450. package/dist/utils/balance.js.map +0 -1
  451. package/dist/utils/batch.d.ts.map +0 -1
  452. package/dist/utils/batch.js.map +0 -1
  453. package/dist/utils/eip7702.d.ts.map +0 -1
  454. package/dist/utils/eip7702.js.map +0 -1
  455. package/dist/utils/external-transactions.d.ts.map +0 -1
  456. package/dist/utils/external-transactions.js.map +0 -1
  457. package/dist/utils/feature-flags.d.ts.map +0 -1
  458. package/dist/utils/feature-flags.js.map +0 -1
  459. package/dist/utils/first-time-interaction.d.ts.map +0 -1
  460. package/dist/utils/first-time-interaction.js.map +0 -1
  461. package/dist/utils/gas-fee-tokens.d.ts.map +0 -1
  462. package/dist/utils/gas-fee-tokens.js.map +0 -1
  463. package/dist/utils/gas-fees.d.ts.map +0 -1
  464. package/dist/utils/gas-fees.js.map +0 -1
  465. package/dist/utils/gas-flow.d.ts.map +0 -1
  466. package/dist/utils/gas-flow.js.map +0 -1
  467. package/dist/utils/gas.d.ts.map +0 -1
  468. package/dist/utils/gas.js.map +0 -1
  469. package/dist/utils/layer1-gas-fee-flow.d.ts.map +0 -1
  470. package/dist/utils/layer1-gas-fee-flow.js.map +0 -1
  471. package/dist/utils/nonce.d.ts.map +0 -1
  472. package/dist/utils/nonce.js.map +0 -1
  473. package/dist/utils/prepare.d.ts.map +0 -1
  474. package/dist/utils/prepare.js.map +0 -1
  475. package/dist/utils/provider.d.ts.map +0 -1
  476. package/dist/utils/provider.js.map +0 -1
  477. package/dist/utils/recipient.d.ts.map +0 -1
  478. package/dist/utils/recipient.js.map +0 -1
  479. package/dist/utils/retry.d.ts.map +0 -1
  480. package/dist/utils/retry.js.map +0 -1
  481. package/dist/utils/revert-reason.d.ts.map +0 -1
  482. package/dist/utils/revert-reason.js.map +0 -1
  483. package/dist/utils/signature.d.ts.map +0 -1
  484. package/dist/utils/signature.js.map +0 -1
  485. package/dist/utils/swaps.d.ts.map +0 -1
  486. package/dist/utils/swaps.js.map +0 -1
  487. package/dist/utils/transaction-type.d.ts.map +0 -1
  488. package/dist/utils/transaction-type.js.map +0 -1
  489. package/dist/utils/utils.d.ts.map +0 -1
  490. package/dist/utils/utils.js.map +0 -1
  491. package/dist/utils/validation.d.ts.map +0 -1
  492. package/dist/utils/validation.js.map +0 -1
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _TransactionPoller_instances, _TransactionPoller_acceleratedCount, _TransactionPoller_blockTracker, _TransactionPoller_chainId, _TransactionPoller_messenger, _TransactionPoller_blockTrackerListener, _TransactionPoller_listener, _TransactionPoller_pendingTransactions, _TransactionPoller_running, _TransactionPoller_timeout, _TransactionPoller_queue, _TransactionPoller_interval, _TransactionPoller_stopTimeout, _TransactionPoller_stopBlockTracker, _TransactionPoller_transactionUpdatedHandler, _TransactionPoller_subscribeToTransactionUpdates, _TransactionPoller_unsubscribeFromTransactionUpdates;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.TransactionPoller = void 0;
16
+ const utils_1 = require("@metamask/utils");
17
+ const lodash_1 = require("lodash");
18
+ const logger_js_1 = require("../logger.cjs");
19
+ const feature_flags_js_1 = require("../utils/feature-flags.cjs");
20
+ const log = (0, utils_1.createModuleLogger)(logger_js_1.projectLogger, 'transaction-poller');
21
+ var IntervalTrigger;
22
+ (function (IntervalTrigger) {
23
+ IntervalTrigger["Accelerated"] = "Accelerated";
24
+ IntervalTrigger["BlockTracker"] = "BlockTracker";
25
+ IntervalTrigger["Websocket"] = "Websocket";
26
+ })(IntervalTrigger || (IntervalTrigger = {}));
27
+ /**
28
+ * Helper class to orchestrate when to poll pending transactions.
29
+ * Initially starts polling via a timeout chain every 2 seconds up to 5 times.
30
+ * Following that, it will poll on every new block via the block tracker.
31
+ */
32
+ class TransactionPoller {
33
+ constructor({ blockTracker, chainId, messenger, }) {
34
+ _TransactionPoller_instances.add(this);
35
+ _TransactionPoller_acceleratedCount.set(this, 0);
36
+ _TransactionPoller_blockTracker.set(this, void 0);
37
+ _TransactionPoller_chainId.set(this, void 0);
38
+ _TransactionPoller_messenger.set(this, void 0);
39
+ _TransactionPoller_blockTrackerListener.set(this, void 0);
40
+ _TransactionPoller_listener.set(this, void 0);
41
+ _TransactionPoller_pendingTransactions.set(this, void 0);
42
+ _TransactionPoller_running.set(this, false);
43
+ _TransactionPoller_timeout.set(this, void 0);
44
+ _TransactionPoller_transactionUpdatedHandler.set(this, (transaction) => {
45
+ if (!__classPrivateFieldGet(this, _TransactionPoller_running, "f")) {
46
+ return;
47
+ }
48
+ if (transaction.status !== 'confirmed' &&
49
+ transaction.status !== 'dropped' &&
50
+ transaction.status !== 'failed') {
51
+ return;
52
+ }
53
+ const isPendingTransaction = __classPrivateFieldGet(this, _TransactionPoller_pendingTransactions, "f")?.some((tx) => tx.hash?.toLowerCase() === transaction.id.toLowerCase());
54
+ if (!isPendingTransaction) {
55
+ return;
56
+ }
57
+ __classPrivateFieldGet(this, _TransactionPoller_instances, "m", _TransactionPoller_interval).call(this, IntervalTrigger.Websocket).catch(() => {
58
+ // Silently catch errors to prevent unhandled rejections
59
+ });
60
+ });
61
+ __classPrivateFieldSet(this, _TransactionPoller_blockTracker, blockTracker, "f");
62
+ __classPrivateFieldSet(this, _TransactionPoller_chainId, chainId, "f");
63
+ __classPrivateFieldSet(this, _TransactionPoller_messenger, messenger, "f");
64
+ }
65
+ /**
66
+ * Start the poller with a listener that will be called on every interval.
67
+ *
68
+ * @param listener - The listener to call on every interval.
69
+ */
70
+ start(listener) {
71
+ if (__classPrivateFieldGet(this, _TransactionPoller_running, "f")) {
72
+ return;
73
+ }
74
+ __classPrivateFieldSet(this, _TransactionPoller_listener, listener, "f");
75
+ __classPrivateFieldSet(this, _TransactionPoller_running, true, "f");
76
+ __classPrivateFieldGet(this, _TransactionPoller_instances, "m", _TransactionPoller_subscribeToTransactionUpdates).call(this);
77
+ __classPrivateFieldGet(this, _TransactionPoller_instances, "m", _TransactionPoller_queue).call(this);
78
+ log('Started');
79
+ }
80
+ /**
81
+ * Stop the poller.
82
+ * Remove all timeouts and block tracker listeners.
83
+ */
84
+ stop() {
85
+ if (!__classPrivateFieldGet(this, _TransactionPoller_running, "f")) {
86
+ return;
87
+ }
88
+ __classPrivateFieldSet(this, _TransactionPoller_running, false, "f");
89
+ __classPrivateFieldSet(this, _TransactionPoller_listener, undefined, "f");
90
+ __classPrivateFieldSet(this, _TransactionPoller_acceleratedCount, 0, "f");
91
+ __classPrivateFieldSet(this, _TransactionPoller_pendingTransactions, undefined, "f");
92
+ __classPrivateFieldGet(this, _TransactionPoller_instances, "m", _TransactionPoller_stopTimeout).call(this);
93
+ __classPrivateFieldGet(this, _TransactionPoller_instances, "m", _TransactionPoller_stopBlockTracker).call(this);
94
+ __classPrivateFieldGet(this, _TransactionPoller_instances, "m", _TransactionPoller_unsubscribeFromTransactionUpdates).call(this);
95
+ log('Stopped');
96
+ }
97
+ /**
98
+ * Notify the poller of the pending transactions being monitored.
99
+ * This will reset to the accelerated polling and reset the count
100
+ * when new transactions are added or removed.
101
+ *
102
+ * @param pendingTransactions - The pending transactions to poll.
103
+ */
104
+ setPendingTransactions(pendingTransactions) {
105
+ const currentPendingTransactionIds = (__classPrivateFieldGet(this, _TransactionPoller_pendingTransactions, "f") ?? []).map((tx) => tx.id);
106
+ __classPrivateFieldSet(this, _TransactionPoller_pendingTransactions, pendingTransactions, "f");
107
+ const newPendingTransactionIds = pendingTransactions.map((tx) => tx.id);
108
+ const hasUpdatedIds = !(0, lodash_1.isEqual)(currentPendingTransactionIds, newPendingTransactionIds);
109
+ if (!__classPrivateFieldGet(this, _TransactionPoller_running, "f") || !hasUpdatedIds) {
110
+ return;
111
+ }
112
+ log('Detected new pending transactions', newPendingTransactionIds);
113
+ __classPrivateFieldSet(this, _TransactionPoller_acceleratedCount, 0, "f");
114
+ if (__classPrivateFieldGet(this, _TransactionPoller_blockTrackerListener, "f")) {
115
+ __classPrivateFieldGet(this, _TransactionPoller_instances, "m", _TransactionPoller_stopBlockTracker).call(this);
116
+ __classPrivateFieldGet(this, _TransactionPoller_instances, "m", _TransactionPoller_queue).call(this);
117
+ }
118
+ }
119
+ }
120
+ exports.TransactionPoller = TransactionPoller;
121
+ _TransactionPoller_acceleratedCount = new WeakMap(), _TransactionPoller_blockTracker = new WeakMap(), _TransactionPoller_chainId = new WeakMap(), _TransactionPoller_messenger = new WeakMap(), _TransactionPoller_blockTrackerListener = new WeakMap(), _TransactionPoller_listener = new WeakMap(), _TransactionPoller_pendingTransactions = new WeakMap(), _TransactionPoller_running = new WeakMap(), _TransactionPoller_timeout = new WeakMap(), _TransactionPoller_transactionUpdatedHandler = new WeakMap(), _TransactionPoller_instances = new WeakSet(), _TransactionPoller_queue = function _TransactionPoller_queue() {
122
+ if (!__classPrivateFieldGet(this, _TransactionPoller_running, "f")) {
123
+ return;
124
+ }
125
+ const { countMax, intervalMs } = (0, feature_flags_js_1.getAcceleratedPollingParams)(__classPrivateFieldGet(this, _TransactionPoller_chainId, "f"), __classPrivateFieldGet(this, _TransactionPoller_messenger, "f"));
126
+ if (__classPrivateFieldGet(this, _TransactionPoller_acceleratedCount, "f") >= countMax) {
127
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
128
+ __classPrivateFieldSet(this, _TransactionPoller_blockTrackerListener, (latestBlockNumber) => __classPrivateFieldGet(this, _TransactionPoller_instances, "m", _TransactionPoller_interval).call(this, IntervalTrigger.BlockTracker, latestBlockNumber), "f");
129
+ __classPrivateFieldGet(this, _TransactionPoller_blockTracker, "f").on('latest', __classPrivateFieldGet(this, _TransactionPoller_blockTrackerListener, "f"));
130
+ log('Added block tracker listener');
131
+ return;
132
+ }
133
+ __classPrivateFieldGet(this, _TransactionPoller_instances, "m", _TransactionPoller_stopTimeout).call(this);
134
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
135
+ __classPrivateFieldSet(this, _TransactionPoller_timeout, setTimeout(async () => {
136
+ await __classPrivateFieldGet(this, _TransactionPoller_instances, "m", _TransactionPoller_interval).call(this, IntervalTrigger.Accelerated);
137
+ __classPrivateFieldGet(this, _TransactionPoller_instances, "m", _TransactionPoller_queue).call(this);
138
+ }, intervalMs), "f");
139
+ }, _TransactionPoller_interval = async function _TransactionPoller_interval(trigger, latestBlockNumber) {
140
+ switch (trigger) {
141
+ case IntervalTrigger.Websocket:
142
+ log('AccountActivityService:transactionUpdated received');
143
+ break;
144
+ case IntervalTrigger.Accelerated:
145
+ log('Accelerated interval', __classPrivateFieldGet(this, _TransactionPoller_acceleratedCount, "f") + 1);
146
+ break;
147
+ case IntervalTrigger.BlockTracker:
148
+ log('Block tracker interval', latestBlockNumber);
149
+ break;
150
+ default:
151
+ break;
152
+ }
153
+ const latestBlockNumberFinal = latestBlockNumber ?? (await __classPrivateFieldGet(this, _TransactionPoller_blockTracker, "f").getLatestBlock());
154
+ await __classPrivateFieldGet(this, _TransactionPoller_listener, "f")?.call(this, latestBlockNumberFinal);
155
+ if (trigger === IntervalTrigger.Accelerated && __classPrivateFieldGet(this, _TransactionPoller_running, "f")) {
156
+ __classPrivateFieldSet(this, _TransactionPoller_acceleratedCount, __classPrivateFieldGet(this, _TransactionPoller_acceleratedCount, "f") + 1, "f");
157
+ }
158
+ }, _TransactionPoller_stopTimeout = function _TransactionPoller_stopTimeout() {
159
+ if (!__classPrivateFieldGet(this, _TransactionPoller_timeout, "f")) {
160
+ return;
161
+ }
162
+ clearTimeout(__classPrivateFieldGet(this, _TransactionPoller_timeout, "f"));
163
+ __classPrivateFieldSet(this, _TransactionPoller_timeout, undefined, "f");
164
+ }, _TransactionPoller_stopBlockTracker = function _TransactionPoller_stopBlockTracker() {
165
+ if (!__classPrivateFieldGet(this, _TransactionPoller_blockTrackerListener, "f")) {
166
+ return;
167
+ }
168
+ __classPrivateFieldGet(this, _TransactionPoller_blockTracker, "f").removeListener('latest', __classPrivateFieldGet(this, _TransactionPoller_blockTrackerListener, "f"));
169
+ __classPrivateFieldSet(this, _TransactionPoller_blockTrackerListener, undefined, "f");
170
+ }, _TransactionPoller_subscribeToTransactionUpdates = function _TransactionPoller_subscribeToTransactionUpdates() {
171
+ __classPrivateFieldGet(this, _TransactionPoller_messenger, "f").subscribe('AccountActivityService:transactionUpdated', __classPrivateFieldGet(this, _TransactionPoller_transactionUpdatedHandler, "f"));
172
+ }, _TransactionPoller_unsubscribeFromTransactionUpdates = function _TransactionPoller_unsubscribeFromTransactionUpdates() {
173
+ __classPrivateFieldGet(this, _TransactionPoller_messenger, "f").unsubscribe('AccountActivityService:transactionUpdated', __classPrivateFieldGet(this, _TransactionPoller_transactionUpdatedHandler, "f"));
174
+ };
175
+ //# sourceMappingURL=TransactionPoller.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionPoller.cjs","sourceRoot":"","sources":["../../src/helpers/TransactionPoller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,2CAAqD;AAErD,mCAAiC;AAEjC,6CAA6C;AAG7C,iEAAwE;AAExE,MAAM,GAAG,GAAG,IAAA,0BAAkB,EAAC,yBAAa,EAAE,oBAAoB,CAAC,CAAC;AAEpE,IAAK,eAIJ;AAJD,WAAK,eAAe;IAClB,8CAA2B,CAAA;IAC3B,gDAA6B,CAAA;IAC7B,0CAAuB,CAAA;AACzB,CAAC,EAJI,eAAe,KAAf,eAAe,QAInB;AAED;;;;GAIG;AACH,MAAa,iBAAiB;IAmB5B,YAAY,EACV,YAAY,EACZ,OAAO,EACP,SAAS,GAKV;;QA1BD,8CAAoB,CAAC,EAAC;QAEb,kDAA4B;QAE5B,6CAAc;QAEd,+CAA2C;QAEpD,0DAA4D;QAE5D,8CAAyD;QAEzD,yDAAyC;QAEzC,qCAAW,KAAK,EAAC;QAEjB,6CAA0B;QAyKjB,uDAA6B,CAAC,WAAwB,EAAQ,EAAE;YACvE,IAAI,CAAC,uBAAA,IAAI,kCAAS,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IACE,WAAW,CAAC,MAAM,KAAK,WAAW;gBAClC,WAAW,CAAC,MAAM,KAAK,SAAS;gBAChC,WAAW,CAAC,MAAM,KAAK,QAAQ,EAC/B,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,oBAAoB,GAAG,uBAAA,IAAI,8CAAqB,EAAE,IAAI,CAC1D,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,CAChE,CAAC;YACF,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,uBAAA,IAAI,iEAAU,MAAd,IAAI,EAAW,eAAe,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnD,wDAAwD;YAC1D,CAAC,CAAC,CAAC;QACL,CAAC,EAAC;QArLA,uBAAA,IAAI,mCAAiB,YAAY,MAAA,CAAC;QAClC,uBAAA,IAAI,8BAAY,OAAO,MAAA,CAAC;QACxB,uBAAA,IAAI,gCAAc,SAAS,MAAA,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAsD;QAC1D,IAAI,uBAAA,IAAI,kCAAS,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,uBAAA,IAAI,+BAAa,QAAQ,MAAA,CAAC;QAC1B,uBAAA,IAAI,8BAAY,IAAI,MAAA,CAAC;QAErB,uBAAA,IAAI,sFAA+B,MAAnC,IAAI,CAAiC,CAAC;QAEtC,uBAAA,IAAI,8DAAO,MAAX,IAAI,CAAS,CAAC;QAEd,GAAG,CAAC,SAAS,CAAC,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,CAAC,uBAAA,IAAI,kCAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,uBAAA,IAAI,8BAAY,KAAK,MAAA,CAAC;QACtB,uBAAA,IAAI,+BAAa,SAAS,MAAA,CAAC;QAC3B,uBAAA,IAAI,uCAAqB,CAAC,MAAA,CAAC;QAC3B,uBAAA,IAAI,0CAAwB,SAAS,MAAA,CAAC;QAEtC,uBAAA,IAAI,oEAAa,MAAjB,IAAI,CAAe,CAAC;QACpB,uBAAA,IAAI,yEAAkB,MAAtB,IAAI,CAAoB,CAAC;QACzB,uBAAA,IAAI,0FAAmC,MAAvC,IAAI,CAAqC,CAAC;QAE1C,GAAG,CAAC,SAAS,CAAC,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACH,sBAAsB,CAAC,mBAAsC;QAC3D,MAAM,4BAA4B,GAAG,CAAC,uBAAA,IAAI,8CAAqB,IAAI,EAAE,CAAC,CAAC,GAAG,CACxE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CACd,CAAC;QAEF,uBAAA,IAAI,0CAAwB,mBAAmB,MAAA,CAAC;QAEhD,MAAM,wBAAwB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAExE,MAAM,aAAa,GAAG,CAAC,IAAA,gBAAO,EAC5B,4BAA4B,EAC5B,wBAAwB,CACzB,CAAC;QAEF,IAAI,CAAC,uBAAA,IAAI,kCAAS,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QAED,GAAG,CAAC,mCAAmC,EAAE,wBAAwB,CAAC,CAAC;QAEnE,uBAAA,IAAI,uCAAqB,CAAC,MAAA,CAAC;QAE3B,IAAI,uBAAA,IAAI,+CAAsB,EAAE,CAAC;YAC/B,uBAAA,IAAI,yEAAkB,MAAtB,IAAI,CAAoB,CAAC;YACzB,uBAAA,IAAI,8DAAO,MAAX,IAAI,CAAS,CAAC;QAChB,CAAC;IACH,CAAC;CAqHF;AAhOD,8CAgOC;;IAlHG,IAAI,CAAC,uBAAA,IAAI,kCAAS,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAA,8CAA2B,EAC1D,uBAAA,IAAI,kCAAS,EACb,uBAAA,IAAI,oCAAW,CAChB,CAAC;IAEF,IAAI,uBAAA,IAAI,2CAAkB,IAAI,QAAQ,EAAE,CAAC;QACvC,kEAAkE;QAClE,uBAAA,IAAI,2CAAyB,CAAC,iBAAiB,EAAiB,EAAE,CAChE,uBAAA,IAAI,iEAAU,MAAd,IAAI,EAAW,eAAe,CAAC,YAAY,EAAE,iBAAiB,CAAC,MAAA,CAAC;QAElE,uBAAA,IAAI,uCAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,uBAAA,IAAI,+CAAsB,CAAC,CAAC;QAE5D,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAEpC,OAAO;IACT,CAAC;IAED,uBAAA,IAAI,oEAAa,MAAjB,IAAI,CAAe,CAAC;IAEpB,kEAAkE;IAClE,uBAAA,IAAI,8BAAY,UAAU,CAAC,KAAK,IAAI,EAAE;QACpC,MAAM,uBAAA,IAAI,iEAAU,MAAd,IAAI,EAAW,eAAe,CAAC,WAAW,CAAC,CAAC;QAClD,uBAAA,IAAI,8DAAO,MAAX,IAAI,CAAS,CAAC;IAChB,CAAC,EAAE,UAAU,CAAC,MAAA,CAAC;AACjB,CAAC,gCAED,KAAK,sCACH,OAAwB,EACxB,iBAA0B;IAE1B,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,eAAe,CAAC,SAAS;YAC5B,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAC1D,MAAM;QACR,KAAK,eAAe,CAAC,WAAW;YAC9B,GAAG,CAAC,sBAAsB,EAAE,uBAAA,IAAI,2CAAkB,GAAG,CAAC,CAAC,CAAC;YACxD,MAAM;QACR,KAAK,eAAe,CAAC,YAAY;YAC/B,GAAG,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,CAAC;YACjD,MAAM;QACR;YACE,MAAM;IACV,CAAC;IAED,MAAM,sBAAsB,GAC1B,iBAAiB,IAAI,CAAC,MAAM,uBAAA,IAAI,uCAAc,CAAC,cAAc,EAAE,CAAC,CAAC;IAEnE,MAAM,uBAAA,IAAI,mCAAU,EAAE,KAAhB,IAAI,EAAa,sBAAsB,CAAC,CAAC;IAE/C,IAAI,OAAO,KAAK,eAAe,CAAC,WAAW,IAAI,uBAAA,IAAI,kCAAS,EAAE,CAAC;QAC7D,2IAA0B,CAAC,MAAA,CAAC;IAC9B,CAAC;AACH,CAAC;IAGC,IAAI,CAAC,uBAAA,IAAI,kCAAS,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IAED,YAAY,CAAC,uBAAA,IAAI,kCAAS,CAAC,CAAC;IAC5B,uBAAA,IAAI,8BAAY,SAAS,MAAA,CAAC;AAC5B,CAAC;IAGC,IAAI,CAAC,uBAAA,IAAI,+CAAsB,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,uBAAA,IAAI,uCAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,uBAAA,IAAI,+CAAsB,CAAC,CAAC;IACxE,uBAAA,IAAI,2CAAyB,SAAS,MAAA,CAAC;AACzC,CAAC;IA4BC,uBAAA,IAAI,oCAAW,CAAC,SAAS,CACvB,2CAA2C,EAC3C,uBAAA,IAAI,oDAA2B,CAChC,CAAC;AACJ,CAAC;IAGC,uBAAA,IAAI,oCAAW,CAAC,WAAW,CACzB,2CAA2C,EAC3C,uBAAA,IAAI,oDAA2B,CAChC,CAAC;AACJ,CAAC","sourcesContent":["import type { Transaction } from '@metamask/core-backend';\nimport type { BlockTracker } from '@metamask/network-controller';\nimport { createModuleLogger } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\nimport { isEqual } from 'lodash';\n\nimport { projectLogger } from '../logger.js';\nimport type { TransactionControllerMessenger } from '../TransactionController.js';\nimport type { TransactionMeta } from '../types.js';\nimport { getAcceleratedPollingParams } from '../utils/feature-flags.js';\n\nconst log = createModuleLogger(projectLogger, 'transaction-poller');\n\nenum IntervalTrigger {\n Accelerated = 'Accelerated',\n BlockTracker = 'BlockTracker',\n Websocket = 'Websocket',\n}\n\n/**\n * Helper class to orchestrate when to poll pending transactions.\n * Initially starts polling via a timeout chain every 2 seconds up to 5 times.\n * Following that, it will poll on every new block via the block tracker.\n */\nexport class TransactionPoller {\n #acceleratedCount = 0;\n\n readonly #blockTracker: BlockTracker;\n\n readonly #chainId: Hex;\n\n readonly #messenger: TransactionControllerMessenger;\n\n #blockTrackerListener?: (latestBlockNumber: string) => void;\n\n #listener?: (latestBlockNumber: string) => Promise<void>;\n\n #pendingTransactions?: TransactionMeta[];\n\n #running = false;\n\n #timeout?: NodeJS.Timeout;\n\n constructor({\n blockTracker,\n chainId,\n messenger,\n }: {\n blockTracker: BlockTracker;\n chainId: Hex;\n messenger: TransactionControllerMessenger;\n }) {\n this.#blockTracker = blockTracker;\n this.#chainId = chainId;\n this.#messenger = messenger;\n }\n\n /**\n * Start the poller with a listener that will be called on every interval.\n *\n * @param listener - The listener to call on every interval.\n */\n start(listener: (latestBlockNumber: string) => Promise<void>): void {\n if (this.#running) {\n return;\n }\n\n this.#listener = listener;\n this.#running = true;\n\n this.#subscribeToTransactionUpdates();\n\n this.#queue();\n\n log('Started');\n }\n\n /**\n * Stop the poller.\n * Remove all timeouts and block tracker listeners.\n */\n stop(): void {\n if (!this.#running) {\n return;\n }\n\n this.#running = false;\n this.#listener = undefined;\n this.#acceleratedCount = 0;\n this.#pendingTransactions = undefined;\n\n this.#stopTimeout();\n this.#stopBlockTracker();\n this.#unsubscribeFromTransactionUpdates();\n\n log('Stopped');\n }\n\n /**\n * Notify the poller of the pending transactions being monitored.\n * This will reset to the accelerated polling and reset the count\n * when new transactions are added or removed.\n *\n * @param pendingTransactions - The pending transactions to poll.\n */\n setPendingTransactions(pendingTransactions: TransactionMeta[]): void {\n const currentPendingTransactionIds = (this.#pendingTransactions ?? []).map(\n (tx) => tx.id,\n );\n\n this.#pendingTransactions = pendingTransactions;\n\n const newPendingTransactionIds = pendingTransactions.map((tx) => tx.id);\n\n const hasUpdatedIds = !isEqual(\n currentPendingTransactionIds,\n newPendingTransactionIds,\n );\n\n if (!this.#running || !hasUpdatedIds) {\n return;\n }\n\n log('Detected new pending transactions', newPendingTransactionIds);\n\n this.#acceleratedCount = 0;\n\n if (this.#blockTrackerListener) {\n this.#stopBlockTracker();\n this.#queue();\n }\n }\n\n #queue(): void {\n if (!this.#running) {\n return;\n }\n\n const { countMax, intervalMs } = getAcceleratedPollingParams(\n this.#chainId,\n this.#messenger,\n );\n\n if (this.#acceleratedCount >= countMax) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.#blockTrackerListener = (latestBlockNumber): Promise<void> =>\n this.#interval(IntervalTrigger.BlockTracker, latestBlockNumber);\n\n this.#blockTracker.on('latest', this.#blockTrackerListener);\n\n log('Added block tracker listener');\n\n return;\n }\n\n this.#stopTimeout();\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.#timeout = setTimeout(async () => {\n await this.#interval(IntervalTrigger.Accelerated);\n this.#queue();\n }, intervalMs);\n }\n\n async #interval(\n trigger: IntervalTrigger,\n latestBlockNumber?: string,\n ): Promise<void> {\n switch (trigger) {\n case IntervalTrigger.Websocket:\n log('AccountActivityService:transactionUpdated received');\n break;\n case IntervalTrigger.Accelerated:\n log('Accelerated interval', this.#acceleratedCount + 1);\n break;\n case IntervalTrigger.BlockTracker:\n log('Block tracker interval', latestBlockNumber);\n break;\n default:\n break;\n }\n\n const latestBlockNumberFinal =\n latestBlockNumber ?? (await this.#blockTracker.getLatestBlock());\n\n await this.#listener?.(latestBlockNumberFinal);\n\n if (trigger === IntervalTrigger.Accelerated && this.#running) {\n this.#acceleratedCount += 1;\n }\n }\n\n #stopTimeout(): void {\n if (!this.#timeout) {\n return;\n }\n\n clearTimeout(this.#timeout);\n this.#timeout = undefined;\n }\n\n #stopBlockTracker(): void {\n if (!this.#blockTrackerListener) {\n return;\n }\n\n this.#blockTracker.removeListener('latest', this.#blockTrackerListener);\n this.#blockTrackerListener = undefined;\n }\n\n readonly #transactionUpdatedHandler = (transaction: Transaction): void => {\n if (!this.#running) {\n return;\n }\n\n if (\n transaction.status !== 'confirmed' &&\n transaction.status !== 'dropped' &&\n transaction.status !== 'failed'\n ) {\n return;\n }\n\n const isPendingTransaction = this.#pendingTransactions?.some(\n (tx) => tx.hash?.toLowerCase() === transaction.id.toLowerCase(),\n );\n if (!isPendingTransaction) {\n return;\n }\n\n this.#interval(IntervalTrigger.Websocket).catch(() => {\n // Silently catch errors to prevent unhandled rejections\n });\n };\n\n #subscribeToTransactionUpdates(): void {\n this.#messenger.subscribe(\n 'AccountActivityService:transactionUpdated',\n this.#transactionUpdatedHandler,\n );\n }\n\n #unsubscribeFromTransactionUpdates(): void {\n this.#messenger.unsubscribe(\n 'AccountActivityService:transactionUpdated',\n this.#transactionUpdatedHandler,\n );\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
- import type { BlockTracker } from '@metamask/network-controller';
2
- import type { Hex } from '@metamask/utils';
3
- import type { TransactionControllerMessenger } from '../TransactionController.js';
4
- import type { TransactionMeta } from '../types.js';
1
+ import type { BlockTracker } from "@metamask/network-controller";
2
+ import type { Hex } from "@metamask/utils";
3
+ import type { TransactionControllerMessenger } from "../TransactionController.cjs";
4
+ import type { TransactionMeta } from "../types.cjs";
5
5
  /**
6
6
  * Helper class to orchestrate when to poll pending transactions.
7
7
  * Initially starts polling via a timeout chain every 2 seconds up to 5 times.
@@ -34,4 +34,4 @@ export declare class TransactionPoller {
34
34
  */
35
35
  setPendingTransactions(pendingTransactions: TransactionMeta[]): void;
36
36
  }
37
- //# sourceMappingURL=TransactionPoller.d.ts.map
37
+ //# sourceMappingURL=TransactionPoller.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionPoller.d.cts","sourceRoot":"","sources":["../../src/helpers/TransactionPoller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,qCAAqC;AAEjE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAI3C,OAAO,KAAK,EAAE,8BAA8B,EAAE,qCAAoC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAoB;AAWnD;;;;GAIG;AACH,qBAAa,iBAAiB;;gBAmBhB,EACV,YAAY,EACZ,OAAO,EACP,SAAS,GACV,EAAE;QACD,YAAY,EAAE,YAAY,CAAC;QAC3B,OAAO,EAAE,GAAG,CAAC;QACb,SAAS,EAAE,8BAA8B,CAAC;KAC3C;IAMD;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAenE;;;OAGG;IACH,IAAI,IAAI,IAAI;IAiBZ;;;;;;OAMG;IACH,sBAAsB,CAAC,mBAAmB,EAAE,eAAe,EAAE,GAAG,IAAI;CA+IrE"}
@@ -0,0 +1,37 @@
1
+ import type { BlockTracker } from "@metamask/network-controller";
2
+ import type { Hex } from "@metamask/utils";
3
+ import type { TransactionControllerMessenger } from "../TransactionController.mjs";
4
+ import type { TransactionMeta } from "../types.mjs";
5
+ /**
6
+ * Helper class to orchestrate when to poll pending transactions.
7
+ * Initially starts polling via a timeout chain every 2 seconds up to 5 times.
8
+ * Following that, it will poll on every new block via the block tracker.
9
+ */
10
+ export declare class TransactionPoller {
11
+ #private;
12
+ constructor({ blockTracker, chainId, messenger, }: {
13
+ blockTracker: BlockTracker;
14
+ chainId: Hex;
15
+ messenger: TransactionControllerMessenger;
16
+ });
17
+ /**
18
+ * Start the poller with a listener that will be called on every interval.
19
+ *
20
+ * @param listener - The listener to call on every interval.
21
+ */
22
+ start(listener: (latestBlockNumber: string) => Promise<void>): void;
23
+ /**
24
+ * Stop the poller.
25
+ * Remove all timeouts and block tracker listeners.
26
+ */
27
+ stop(): void;
28
+ /**
29
+ * Notify the poller of the pending transactions being monitored.
30
+ * This will reset to the accelerated polling and reset the count
31
+ * when new transactions are added or removed.
32
+ *
33
+ * @param pendingTransactions - The pending transactions to poll.
34
+ */
35
+ setPendingTransactions(pendingTransactions: TransactionMeta[]): void;
36
+ }
37
+ //# sourceMappingURL=TransactionPoller.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionPoller.d.mts","sourceRoot":"","sources":["../../src/helpers/TransactionPoller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,qCAAqC;AAEjE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAI3C,OAAO,KAAK,EAAE,8BAA8B,EAAE,qCAAoC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAoB;AAWnD;;;;GAIG;AACH,qBAAa,iBAAiB;;gBAmBhB,EACV,YAAY,EACZ,OAAO,EACP,SAAS,GACV,EAAE;QACD,YAAY,EAAE,YAAY,CAAC;QAC3B,OAAO,EAAE,GAAG,CAAC;QACb,SAAS,EAAE,8BAA8B,CAAC;KAC3C;IAMD;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAenE;;;OAGG;IACH,IAAI,IAAI,IAAI;IAiBZ;;;;;;OAMG;IACH,sBAAsB,CAAC,mBAAmB,EAAE,eAAe,EAAE,GAAG,IAAI;CA+IrE"}
@@ -1,19 +1,20 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
1
  var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
7
2
  if (kind === "m") throw new TypeError("Private method is not writable");
8
3
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
9
4
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
10
5
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
6
  };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
12
  var _TransactionPoller_instances, _TransactionPoller_acceleratedCount, _TransactionPoller_blockTracker, _TransactionPoller_chainId, _TransactionPoller_messenger, _TransactionPoller_blockTrackerListener, _TransactionPoller_listener, _TransactionPoller_pendingTransactions, _TransactionPoller_running, _TransactionPoller_timeout, _TransactionPoller_queue, _TransactionPoller_interval, _TransactionPoller_stopTimeout, _TransactionPoller_stopBlockTracker, _TransactionPoller_transactionUpdatedHandler, _TransactionPoller_subscribeToTransactionUpdates, _TransactionPoller_unsubscribeFromTransactionUpdates;
13
- import { createModuleLogger } from '@metamask/utils';
14
- import { isEqual } from 'lodash-es';
15
- import { projectLogger } from '../logger.js';
16
- import { getAcceleratedPollingParams } from '../utils/feature-flags.js';
13
+ import { createModuleLogger } from "@metamask/utils";
14
+ import $lodash from "lodash";
15
+ const { isEqual } = $lodash;
16
+ import { projectLogger } from "../logger.mjs";
17
+ import { getAcceleratedPollingParams } from "../utils/feature-flags.mjs";
17
18
  const log = createModuleLogger(projectLogger, 'transaction-poller');
18
19
  var IntervalTrigger;
19
20
  (function (IntervalTrigger) {
@@ -168,4 +169,4 @@ _TransactionPoller_acceleratedCount = new WeakMap(), _TransactionPoller_blockTra
168
169
  }, _TransactionPoller_unsubscribeFromTransactionUpdates = function _TransactionPoller_unsubscribeFromTransactionUpdates() {
169
170
  __classPrivateFieldGet(this, _TransactionPoller_messenger, "f").unsubscribe('AccountActivityService:transactionUpdated', __classPrivateFieldGet(this, _TransactionPoller_transactionUpdatedHandler, "f"));
170
171
  };
171
- //# sourceMappingURL=TransactionPoller.js.map
172
+ //# sourceMappingURL=TransactionPoller.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionPoller.mjs","sourceRoot":"","sources":["../../src/helpers/TransactionPoller.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Transaction } from '@metamask/core-backend';\nimport type { BlockTracker } from '@metamask/network-controller';\nimport { createModuleLogger } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\nimport { isEqual } from 'lodash';\n\nimport { projectLogger } from '../logger.js';\nimport type { TransactionControllerMessenger } from '../TransactionController.js';\nimport type { TransactionMeta } from '../types.js';\nimport { getAcceleratedPollingParams } from '../utils/feature-flags.js';\n\nconst log = createModuleLogger(projectLogger, 'transaction-poller');\n\nenum IntervalTrigger {\n Accelerated = 'Accelerated',\n BlockTracker = 'BlockTracker',\n Websocket = 'Websocket',\n}\n\n/**\n * Helper class to orchestrate when to poll pending transactions.\n * Initially starts polling via a timeout chain every 2 seconds up to 5 times.\n * Following that, it will poll on every new block via the block tracker.\n */\nexport class TransactionPoller {\n #acceleratedCount = 0;\n\n readonly #blockTracker: BlockTracker;\n\n readonly #chainId: Hex;\n\n readonly #messenger: TransactionControllerMessenger;\n\n #blockTrackerListener?: (latestBlockNumber: string) => void;\n\n #listener?: (latestBlockNumber: string) => Promise<void>;\n\n #pendingTransactions?: TransactionMeta[];\n\n #running = false;\n\n #timeout?: NodeJS.Timeout;\n\n constructor({\n blockTracker,\n chainId,\n messenger,\n }: {\n blockTracker: BlockTracker;\n chainId: Hex;\n messenger: TransactionControllerMessenger;\n }) {\n this.#blockTracker = blockTracker;\n this.#chainId = chainId;\n this.#messenger = messenger;\n }\n\n /**\n * Start the poller with a listener that will be called on every interval.\n *\n * @param listener - The listener to call on every interval.\n */\n start(listener: (latestBlockNumber: string) => Promise<void>): void {\n if (this.#running) {\n return;\n }\n\n this.#listener = listener;\n this.#running = true;\n\n this.#subscribeToTransactionUpdates();\n\n this.#queue();\n\n log('Started');\n }\n\n /**\n * Stop the poller.\n * Remove all timeouts and block tracker listeners.\n */\n stop(): void {\n if (!this.#running) {\n return;\n }\n\n this.#running = false;\n this.#listener = undefined;\n this.#acceleratedCount = 0;\n this.#pendingTransactions = undefined;\n\n this.#stopTimeout();\n this.#stopBlockTracker();\n this.#unsubscribeFromTransactionUpdates();\n\n log('Stopped');\n }\n\n /**\n * Notify the poller of the pending transactions being monitored.\n * This will reset to the accelerated polling and reset the count\n * when new transactions are added or removed.\n *\n * @param pendingTransactions - The pending transactions to poll.\n */\n setPendingTransactions(pendingTransactions: TransactionMeta[]): void {\n const currentPendingTransactionIds = (this.#pendingTransactions ?? []).map(\n (tx) => tx.id,\n );\n\n this.#pendingTransactions = pendingTransactions;\n\n const newPendingTransactionIds = pendingTransactions.map((tx) => tx.id);\n\n const hasUpdatedIds = !isEqual(\n currentPendingTransactionIds,\n newPendingTransactionIds,\n );\n\n if (!this.#running || !hasUpdatedIds) {\n return;\n }\n\n log('Detected new pending transactions', newPendingTransactionIds);\n\n this.#acceleratedCount = 0;\n\n if (this.#blockTrackerListener) {\n this.#stopBlockTracker();\n this.#queue();\n }\n }\n\n #queue(): void {\n if (!this.#running) {\n return;\n }\n\n const { countMax, intervalMs } = getAcceleratedPollingParams(\n this.#chainId,\n this.#messenger,\n );\n\n if (this.#acceleratedCount >= countMax) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.#blockTrackerListener = (latestBlockNumber): Promise<void> =>\n this.#interval(IntervalTrigger.BlockTracker, latestBlockNumber);\n\n this.#blockTracker.on('latest', this.#blockTrackerListener);\n\n log('Added block tracker listener');\n\n return;\n }\n\n this.#stopTimeout();\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.#timeout = setTimeout(async () => {\n await this.#interval(IntervalTrigger.Accelerated);\n this.#queue();\n }, intervalMs);\n }\n\n async #interval(\n trigger: IntervalTrigger,\n latestBlockNumber?: string,\n ): Promise<void> {\n switch (trigger) {\n case IntervalTrigger.Websocket:\n log('AccountActivityService:transactionUpdated received');\n break;\n case IntervalTrigger.Accelerated:\n log('Accelerated interval', this.#acceleratedCount + 1);\n break;\n case IntervalTrigger.BlockTracker:\n log('Block tracker interval', latestBlockNumber);\n break;\n default:\n break;\n }\n\n const latestBlockNumberFinal =\n latestBlockNumber ?? (await this.#blockTracker.getLatestBlock());\n\n await this.#listener?.(latestBlockNumberFinal);\n\n if (trigger === IntervalTrigger.Accelerated && this.#running) {\n this.#acceleratedCount += 1;\n }\n }\n\n #stopTimeout(): void {\n if (!this.#timeout) {\n return;\n }\n\n clearTimeout(this.#timeout);\n this.#timeout = undefined;\n }\n\n #stopBlockTracker(): void {\n if (!this.#blockTrackerListener) {\n return;\n }\n\n this.#blockTracker.removeListener('latest', this.#blockTrackerListener);\n this.#blockTrackerListener = undefined;\n }\n\n readonly #transactionUpdatedHandler = (transaction: Transaction): void => {\n if (!this.#running) {\n return;\n }\n\n if (\n transaction.status !== 'confirmed' &&\n transaction.status !== 'dropped' &&\n transaction.status !== 'failed'\n ) {\n return;\n }\n\n const isPendingTransaction = this.#pendingTransactions?.some(\n (tx) => tx.hash?.toLowerCase() === transaction.id.toLowerCase(),\n );\n if (!isPendingTransaction) {\n return;\n }\n\n this.#interval(IntervalTrigger.Websocket).catch(() => {\n // Silently catch errors to prevent unhandled rejections\n });\n };\n\n #subscribeToTransactionUpdates(): void {\n this.#messenger.subscribe(\n 'AccountActivityService:transactionUpdated',\n this.#transactionUpdatedHandler,\n );\n }\n\n #unsubscribeFromTransactionUpdates(): void {\n this.#messenger.unsubscribe(\n 'AccountActivityService:transactionUpdated',\n this.#transactionUpdatedHandler,\n );\n }\n}\n"]}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _CollectPublishHook_instances, _CollectPublishHook_results, _CollectPublishHook_transactionCount, _CollectPublishHook_readyPromise, _CollectPublishHook_hook;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.CollectPublishHook = void 0;
16
+ const utils_1 = require("@metamask/utils");
17
+ const lodash_1 = require("lodash");
18
+ const logger_js_1 = require("../logger.cjs");
19
+ const log = (0, utils_1.createModuleLogger)(logger_js_1.projectLogger, 'collect-publish-hook');
20
+ /**
21
+ * Custom publish logic that collects multiple signed transactions until a specific number is reached.
22
+ * Used by batch transactions to publish multiple transactions at once.
23
+ */
24
+ class CollectPublishHook {
25
+ constructor(transactionCount) {
26
+ _CollectPublishHook_instances.add(this);
27
+ _CollectPublishHook_results.set(this, void 0);
28
+ _CollectPublishHook_transactionCount.set(this, void 0);
29
+ _CollectPublishHook_readyPromise.set(this, void 0);
30
+ __classPrivateFieldSet(this, _CollectPublishHook_readyPromise, (0, utils_1.createDeferredPromise)(), "f");
31
+ __classPrivateFieldSet(this, _CollectPublishHook_results, [], "f");
32
+ __classPrivateFieldSet(this, _CollectPublishHook_transactionCount, transactionCount, "f");
33
+ }
34
+ /**
35
+ * @returns The publish hook function to be passed to `addTransaction`.
36
+ */
37
+ getHook() {
38
+ return __classPrivateFieldGet(this, _CollectPublishHook_instances, "m", _CollectPublishHook_hook).bind(this);
39
+ }
40
+ /**
41
+ * @returns A promise that resolves when all transactions are signed.
42
+ */
43
+ ready() {
44
+ return __classPrivateFieldGet(this, _CollectPublishHook_readyPromise, "f").promise;
45
+ }
46
+ /**
47
+ * Resolve all publish promises with the provided transaction hashes.
48
+ *
49
+ * @param transactionHashes - The transaction hashes to pass to the original publish promises.
50
+ */
51
+ success(transactionHashes) {
52
+ log('Success', { transactionHashes });
53
+ if (transactionHashes.length !== __classPrivateFieldGet(this, _CollectPublishHook_transactionCount, "f")) {
54
+ throw new Error('Transaction hash count mismatch');
55
+ }
56
+ for (let i = 0; i < __classPrivateFieldGet(this, _CollectPublishHook_results, "f").length; i++) {
57
+ const result = __classPrivateFieldGet(this, _CollectPublishHook_results, "f")[i];
58
+ const transactionHash = transactionHashes[i];
59
+ result.promise.resolve({ transactionHash });
60
+ }
61
+ }
62
+ error(error) {
63
+ log('Error', { error });
64
+ for (const result of __classPrivateFieldGet(this, _CollectPublishHook_results, "f")) {
65
+ result.promise.reject(error);
66
+ }
67
+ }
68
+ }
69
+ exports.CollectPublishHook = CollectPublishHook;
70
+ _CollectPublishHook_results = new WeakMap(), _CollectPublishHook_transactionCount = new WeakMap(), _CollectPublishHook_readyPromise = new WeakMap(), _CollectPublishHook_instances = new WeakSet(), _CollectPublishHook_hook = function _CollectPublishHook_hook(transactionMeta, signedTx) {
71
+ const nonceHex = transactionMeta.txParams.nonce ?? '0x0';
72
+ const nonceDecimal = parseInt(nonceHex, 16);
73
+ log('Processing transaction', {
74
+ nonce: nonceDecimal,
75
+ signedTx,
76
+ transactionMeta,
77
+ });
78
+ const publishPromise = (0, utils_1.createDeferredPromise)();
79
+ __classPrivateFieldGet(this, _CollectPublishHook_results, "f").push({
80
+ nonce: nonceDecimal,
81
+ promise: publishPromise,
82
+ signedTransaction: signedTx,
83
+ });
84
+ __classPrivateFieldSet(this, _CollectPublishHook_results, (0, lodash_1.sortBy)(__classPrivateFieldGet(this, _CollectPublishHook_results, "f"), (result) => result.nonce), "f");
85
+ if (__classPrivateFieldGet(this, _CollectPublishHook_results, "f").length === __classPrivateFieldGet(this, _CollectPublishHook_transactionCount, "f")) {
86
+ log('All transactions signed');
87
+ const signedTransactions = __classPrivateFieldGet(this, _CollectPublishHook_results, "f").map((result) => result.signedTransaction);
88
+ __classPrivateFieldGet(this, _CollectPublishHook_readyPromise, "f").resolve({
89
+ signedTransactions,
90
+ });
91
+ }
92
+ return publishPromise.promise;
93
+ };
94
+ //# sourceMappingURL=CollectPublishHook.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectPublishHook.cjs","sourceRoot":"","sources":["../../src/hooks/CollectPublishHook.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeferredPromise, Hex } from '@metamask/utils';\nimport { createDeferredPromise, createModuleLogger } from '@metamask/utils';\nimport { sortBy } from 'lodash';\n\nimport { projectLogger } from '../logger.js';\nimport type {\n PublishHook,\n PublishHookResult,\n TransactionMeta,\n} from '../types.js';\n\nconst log = createModuleLogger(projectLogger, 'collect-publish-hook');\n\nexport type CollectPublishHookResult = {\n signedTransactions: Hex[];\n};\n\n/**\n * Custom publish logic that collects multiple signed transactions until a specific number is reached.\n * Used by batch transactions to publish multiple transactions at once.\n */\nexport class CollectPublishHook {\n #results: {\n nonce: number;\n promise: DeferredPromise<PublishHookResult>;\n signedTransaction: Hex;\n }[];\n\n readonly #transactionCount: number;\n\n readonly #readyPromise: DeferredPromise<CollectPublishHookResult>;\n\n constructor(transactionCount: number) {\n this.#readyPromise = createDeferredPromise();\n this.#results = [];\n this.#transactionCount = transactionCount;\n }\n\n /**\n * @returns The publish hook function to be passed to `addTransaction`.\n */\n getHook(): PublishHook {\n return this.#hook.bind(this);\n }\n\n /**\n * @returns A promise that resolves when all transactions are signed.\n */\n ready(): Promise<CollectPublishHookResult> {\n return this.#readyPromise.promise;\n }\n\n /**\n * Resolve all publish promises with the provided transaction hashes.\n *\n * @param transactionHashes - The transaction hashes to pass to the original publish promises.\n */\n success(transactionHashes: Hex[]): void {\n log('Success', { transactionHashes });\n\n if (transactionHashes.length !== this.#transactionCount) {\n throw new Error('Transaction hash count mismatch');\n }\n\n for (let i = 0; i < this.#results.length; i++) {\n const result = this.#results[i];\n const transactionHash = transactionHashes[i];\n\n result.promise.resolve({ transactionHash });\n }\n }\n\n error(error: unknown): void {\n log('Error', { error });\n\n for (const result of this.#results) {\n result.promise.reject(error);\n }\n }\n\n #hook(\n transactionMeta: TransactionMeta,\n signedTx: string,\n ): Promise<PublishHookResult> {\n const nonceHex = transactionMeta.txParams.nonce ?? '0x0';\n const nonceDecimal = parseInt(nonceHex, 16);\n\n log('Processing transaction', {\n nonce: nonceDecimal,\n signedTx,\n transactionMeta,\n });\n\n const publishPromise = createDeferredPromise<PublishHookResult>();\n\n this.#results.push({\n nonce: nonceDecimal,\n promise: publishPromise,\n signedTransaction: signedTx as Hex,\n });\n\n this.#results = sortBy(this.#results, (result) => result.nonce);\n\n if (this.#results.length === this.#transactionCount) {\n log('All transactions signed');\n\n const signedTransactions = this.#results.map(\n (result) => result.signedTransaction,\n );\n\n this.#readyPromise.resolve({\n signedTransactions,\n });\n }\n\n return publishPromise.promise;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { Hex } from '@metamask/utils';
2
- import type { PublishHook } from '../types.js';
1
+ import type { Hex } from "@metamask/utils";
2
+ import type { PublishHook } from "../types.cjs";
3
3
  export type CollectPublishHookResult = {
4
4
  signedTransactions: Hex[];
5
5
  };
@@ -26,4 +26,4 @@ export declare class CollectPublishHook {
26
26
  success(transactionHashes: Hex[]): void;
27
27
  error(error: unknown): void;
28
28
  }
29
- //# sourceMappingURL=CollectPublishHook.d.ts.map
29
+ //# sourceMappingURL=CollectPublishHook.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectPublishHook.d.cts","sourceRoot":"","sources":["../../src/hooks/CollectPublishHook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,GAAG,EAAE,wBAAwB;AAK5D,OAAO,KAAK,EACV,WAAW,EAGZ,qBAAoB;AAIrB,MAAM,MAAM,wBAAwB,GAAG;IACrC,kBAAkB,EAAE,GAAG,EAAE,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,qBAAa,kBAAkB;;gBAWjB,gBAAgB,EAAE,MAAM;IAMpC;;OAEG;IACH,OAAO,IAAI,WAAW;IAItB;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAI1C;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,IAAI;IAevC,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;CA6C5B"}
@@ -0,0 +1,29 @@
1
+ import type { Hex } from "@metamask/utils";
2
+ import type { PublishHook } from "../types.mjs";
3
+ export type CollectPublishHookResult = {
4
+ signedTransactions: Hex[];
5
+ };
6
+ /**
7
+ * Custom publish logic that collects multiple signed transactions until a specific number is reached.
8
+ * Used by batch transactions to publish multiple transactions at once.
9
+ */
10
+ export declare class CollectPublishHook {
11
+ #private;
12
+ constructor(transactionCount: number);
13
+ /**
14
+ * @returns The publish hook function to be passed to `addTransaction`.
15
+ */
16
+ getHook(): PublishHook;
17
+ /**
18
+ * @returns A promise that resolves when all transactions are signed.
19
+ */
20
+ ready(): Promise<CollectPublishHookResult>;
21
+ /**
22
+ * Resolve all publish promises with the provided transaction hashes.
23
+ *
24
+ * @param transactionHashes - The transaction hashes to pass to the original publish promises.
25
+ */
26
+ success(transactionHashes: Hex[]): void;
27
+ error(error: unknown): void;
28
+ }
29
+ //# sourceMappingURL=CollectPublishHook.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectPublishHook.d.mts","sourceRoot":"","sources":["../../src/hooks/CollectPublishHook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,GAAG,EAAE,wBAAwB;AAK5D,OAAO,KAAK,EACV,WAAW,EAGZ,qBAAoB;AAIrB,MAAM,MAAM,wBAAwB,GAAG;IACrC,kBAAkB,EAAE,GAAG,EAAE,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,qBAAa,kBAAkB;;gBAWjB,gBAAgB,EAAE,MAAM;IAMpC;;OAEG;IACH,OAAO,IAAI,WAAW;IAItB;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAI1C;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,IAAI;IAevC,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;CA6C5B"}
@@ -10,9 +10,10 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _CollectPublishHook_instances, _CollectPublishHook_results, _CollectPublishHook_transactionCount, _CollectPublishHook_readyPromise, _CollectPublishHook_hook;
13
- import { createDeferredPromise, createModuleLogger } from '@metamask/utils';
14
- import { sortBy } from 'lodash-es';
15
- import { projectLogger } from '../logger.js';
13
+ import { createDeferredPromise, createModuleLogger } from "@metamask/utils";
14
+ import $lodash from "lodash";
15
+ const { sortBy } = $lodash;
16
+ import { projectLogger } from "../logger.mjs";
16
17
  const log = createModuleLogger(projectLogger, 'collect-publish-hook');
17
18
  /**
18
19
  * Custom publish logic that collects multiple signed transactions until a specific number is reached.
@@ -87,4 +88,4 @@ _CollectPublishHook_results = new WeakMap(), _CollectPublishHook_transactionCoun
87
88
  }
88
89
  return publishPromise.promise;
89
90
  };
90
- //# sourceMappingURL=CollectPublishHook.js.map
91
+ //# sourceMappingURL=CollectPublishHook.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectPublishHook.mjs","sourceRoot":"","sources":["../../src/hooks/CollectPublishHook.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,wBAAwB;;;AAG5E,OAAO,EAAE,aAAa,EAAE,sBAAqB;AAO7C,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;AAMtE;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAW7B,YAAY,gBAAwB;;QAVpC,8CAII;QAEK,uDAA0B;QAE1B,mDAAyD;QAGhE,uBAAA,IAAI,oCAAiB,qBAAqB,EAAE,MAAA,CAAC;QAC7C,uBAAA,IAAI,+BAAY,EAAE,MAAA,CAAC;QACnB,uBAAA,IAAI,wCAAqB,gBAAgB,MAAA,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,uBAAA,IAAI,+DAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,uBAAA,IAAI,wCAAc,CAAC,OAAO,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,iBAAwB;QAC9B,GAAG,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAEtC,IAAI,iBAAiB,CAAC,MAAM,KAAK,uBAAA,IAAI,4CAAkB,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,uBAAA,IAAI,mCAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,uBAAA,IAAI,mCAAS,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,eAAe,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAE7C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAc;QAClB,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAExB,KAAK,MAAM,MAAM,IAAI,uBAAA,IAAI,mCAAS,EAAE,CAAC;YACnC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;CAuCF;iQApCG,eAAgC,EAChC,QAAgB;IAEhB,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC;IACzD,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAE5C,GAAG,CAAC,wBAAwB,EAAE;QAC5B,KAAK,EAAE,YAAY;QACnB,QAAQ;QACR,eAAe;KAChB,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,qBAAqB,EAAqB,CAAC;IAElE,uBAAA,IAAI,mCAAS,CAAC,IAAI,CAAC;QACjB,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,cAAc;QACvB,iBAAiB,EAAE,QAAe;KACnC,CAAC,CAAC;IAEH,uBAAA,IAAI,+BAAY,MAAM,CAAC,uBAAA,IAAI,mCAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAA,CAAC;IAEhE,IAAI,uBAAA,IAAI,mCAAS,CAAC,MAAM,KAAK,uBAAA,IAAI,4CAAkB,EAAE,CAAC;QACpD,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAE/B,MAAM,kBAAkB,GAAG,uBAAA,IAAI,mCAAS,CAAC,GAAG,CAC1C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CACrC,CAAC;QAEF,uBAAA,IAAI,wCAAc,CAAC,OAAO,CAAC;YACzB,kBAAkB;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,cAAc,CAAC,OAAO,CAAC;AAChC,CAAC","sourcesContent":["import type { DeferredPromise, Hex } from '@metamask/utils';\nimport { createDeferredPromise, createModuleLogger } from '@metamask/utils';\nimport { sortBy } from 'lodash';\n\nimport { projectLogger } from '../logger.js';\nimport type {\n PublishHook,\n PublishHookResult,\n TransactionMeta,\n} from '../types.js';\n\nconst log = createModuleLogger(projectLogger, 'collect-publish-hook');\n\nexport type CollectPublishHookResult = {\n signedTransactions: Hex[];\n};\n\n/**\n * Custom publish logic that collects multiple signed transactions until a specific number is reached.\n * Used by batch transactions to publish multiple transactions at once.\n */\nexport class CollectPublishHook {\n #results: {\n nonce: number;\n promise: DeferredPromise<PublishHookResult>;\n signedTransaction: Hex;\n }[];\n\n readonly #transactionCount: number;\n\n readonly #readyPromise: DeferredPromise<CollectPublishHookResult>;\n\n constructor(transactionCount: number) {\n this.#readyPromise = createDeferredPromise();\n this.#results = [];\n this.#transactionCount = transactionCount;\n }\n\n /**\n * @returns The publish hook function to be passed to `addTransaction`.\n */\n getHook(): PublishHook {\n return this.#hook.bind(this);\n }\n\n /**\n * @returns A promise that resolves when all transactions are signed.\n */\n ready(): Promise<CollectPublishHookResult> {\n return this.#readyPromise.promise;\n }\n\n /**\n * Resolve all publish promises with the provided transaction hashes.\n *\n * @param transactionHashes - The transaction hashes to pass to the original publish promises.\n */\n success(transactionHashes: Hex[]): void {\n log('Success', { transactionHashes });\n\n if (transactionHashes.length !== this.#transactionCount) {\n throw new Error('Transaction hash count mismatch');\n }\n\n for (let i = 0; i < this.#results.length; i++) {\n const result = this.#results[i];\n const transactionHash = transactionHashes[i];\n\n result.promise.resolve({ transactionHash });\n }\n }\n\n error(error: unknown): void {\n log('Error', { error });\n\n for (const result of this.#results) {\n result.promise.reject(error);\n }\n }\n\n #hook(\n transactionMeta: TransactionMeta,\n signedTx: string,\n ): Promise<PublishHookResult> {\n const nonceHex = transactionMeta.txParams.nonce ?? '0x0';\n const nonceDecimal = parseInt(nonceHex, 16);\n\n log('Processing transaction', {\n nonce: nonceDecimal,\n signedTx,\n transactionMeta,\n });\n\n const publishPromise = createDeferredPromise<PublishHookResult>();\n\n this.#results.push({\n nonce: nonceDecimal,\n promise: publishPromise,\n signedTransaction: signedTx as Hex,\n });\n\n this.#results = sortBy(this.#results, (result) => result.nonce);\n\n if (this.#results.length === this.#transactionCount) {\n log('All transactions signed');\n\n const signedTransactions = this.#results.map(\n (result) => result.signedTransaction,\n );\n\n this.#readyPromise.resolve({\n signedTransactions,\n });\n }\n\n return publishPromise.promise;\n }\n}\n"]}