@metamask/transaction-controller 24.0.0 → 25.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/CHANGELOG.md +118 -1
  2. package/dist/TransactionController.js +38 -1816
  3. package/dist/TransactionController.js.map +1 -1
  4. package/dist/TransactionController.mjs +39 -0
  5. package/dist/TransactionController.mjs.map +1 -0
  6. package/dist/chunk-2K7J3EY3.mjs +170 -0
  7. package/dist/chunk-2K7J3EY3.mjs.map +1 -0
  8. package/dist/chunk-5XBULBP2.js +399 -0
  9. package/dist/chunk-5XBULBP2.js.map +1 -0
  10. package/dist/chunk-6MYNWYJK.mjs +158 -0
  11. package/dist/chunk-6MYNWYJK.mjs.map +1 -0
  12. package/dist/chunk-7APMBUKB.js +158 -0
  13. package/dist/chunk-7APMBUKB.js.map +1 -0
  14. package/dist/chunk-7LXE4KHV.js +40 -0
  15. package/dist/chunk-7LXE4KHV.js.map +1 -0
  16. package/dist/chunk-7MZ57ILQ.mjs +62 -0
  17. package/dist/chunk-7MZ57ILQ.mjs.map +1 -0
  18. package/dist/chunk-BJEESIBE.js +2313 -0
  19. package/dist/chunk-BJEESIBE.js.map +1 -0
  20. package/dist/chunk-C67QD5PV.mjs +320 -0
  21. package/dist/chunk-C67QD5PV.mjs.map +1 -0
  22. package/dist/chunk-DE3MZYVY.mjs +2313 -0
  23. package/dist/chunk-DE3MZYVY.mjs.map +1 -0
  24. package/dist/chunk-DEKM6PVG.mjs +46 -0
  25. package/dist/chunk-DEKM6PVG.mjs.map +1 -0
  26. package/dist/chunk-DQP6X25N.mjs +208 -0
  27. package/dist/chunk-DQP6X25N.mjs.map +1 -0
  28. package/dist/chunk-DTDTOMTB.js +238 -0
  29. package/dist/chunk-DTDTOMTB.js.map +1 -0
  30. package/dist/chunk-DTEDYRTL.js +242 -0
  31. package/dist/chunk-DTEDYRTL.js.map +1 -0
  32. package/dist/chunk-EQ3RRHB7.mjs +211 -0
  33. package/dist/chunk-EQ3RRHB7.mjs.map +1 -0
  34. package/dist/chunk-FDJPXQTF.js +46 -0
  35. package/dist/chunk-FDJPXQTF.js.map +1 -0
  36. package/dist/chunk-FRKQ3Z2L.mjs +40 -0
  37. package/dist/chunk-FRKQ3Z2L.mjs.map +1 -0
  38. package/dist/chunk-FS7FRO7B.mjs +90 -0
  39. package/dist/chunk-FS7FRO7B.mjs.map +1 -0
  40. package/dist/chunk-GKTIFXPN.js +170 -0
  41. package/dist/chunk-GKTIFXPN.js.map +1 -0
  42. package/dist/chunk-H4M66BA3.js +62 -0
  43. package/dist/chunk-H4M66BA3.js.map +1 -0
  44. package/dist/chunk-HPNXIKFY.js +76 -0
  45. package/dist/chunk-HPNXIKFY.js.map +1 -0
  46. package/dist/chunk-HS277C77.js +75 -0
  47. package/dist/chunk-HS277C77.js.map +1 -0
  48. package/dist/chunk-I5YZ7QUK.js +121 -0
  49. package/dist/chunk-I5YZ7QUK.js.map +1 -0
  50. package/dist/chunk-IC233ZQS.js +211 -0
  51. package/dist/chunk-IC233ZQS.js.map +1 -0
  52. package/dist/chunk-IUBAETUH.js +137 -0
  53. package/dist/chunk-IUBAETUH.js.map +1 -0
  54. package/dist/chunk-J56A7UCK.mjs +123 -0
  55. package/dist/chunk-J56A7UCK.mjs.map +1 -0
  56. package/dist/chunk-JR6HDRNV.mjs +242 -0
  57. package/dist/chunk-JR6HDRNV.mjs.map +1 -0
  58. package/dist/chunk-JRBREX22.mjs +75 -0
  59. package/dist/chunk-JRBREX22.mjs.map +1 -0
  60. package/dist/chunk-JRQHIBG5.mjs +399 -0
  61. package/dist/chunk-JRQHIBG5.mjs.map +1 -0
  62. package/dist/chunk-LM4NUNMT.mjs +76 -0
  63. package/dist/chunk-LM4NUNMT.mjs.map +1 -0
  64. package/dist/chunk-M7455RU7.js +320 -0
  65. package/dist/chunk-M7455RU7.js.map +1 -0
  66. package/dist/chunk-MHM5LRRF.mjs +122 -0
  67. package/dist/chunk-MHM5LRRF.mjs.map +1 -0
  68. package/dist/chunk-NHRBO3LU.mjs +50 -0
  69. package/dist/chunk-NHRBO3LU.mjs.map +1 -0
  70. package/dist/chunk-NM6OYEPP.mjs +182 -0
  71. package/dist/chunk-NM6OYEPP.mjs.map +1 -0
  72. package/dist/chunk-NUOBUW7C.js +85 -0
  73. package/dist/chunk-NUOBUW7C.js.map +1 -0
  74. package/dist/chunk-QP75SWIQ.js +53 -0
  75. package/dist/chunk-QP75SWIQ.js.map +1 -0
  76. package/dist/chunk-RI6MVJJN.js +122 -0
  77. package/dist/chunk-RI6MVJJN.js.map +1 -0
  78. package/dist/chunk-S6VGOPUY.js +14 -0
  79. package/dist/chunk-S6VGOPUY.js.map +1 -0
  80. package/dist/chunk-UGFBA4GV.js +123 -0
  81. package/dist/chunk-UGFBA4GV.js.map +1 -0
  82. package/dist/chunk-UKYY2RVS.mjs +137 -0
  83. package/dist/chunk-UKYY2RVS.mjs.map +1 -0
  84. package/dist/chunk-UM4ORJ5B.mjs +121 -0
  85. package/dist/chunk-UM4ORJ5B.mjs.map +1 -0
  86. package/dist/chunk-UQQWZT6C.mjs +14 -0
  87. package/dist/chunk-UQQWZT6C.mjs.map +1 -0
  88. package/dist/chunk-VH47Q6TS.js +182 -0
  89. package/dist/chunk-VH47Q6TS.js.map +1 -0
  90. package/dist/chunk-XGRAHX6T.mjs +53 -0
  91. package/dist/chunk-XGRAHX6T.mjs.map +1 -0
  92. package/dist/chunk-XUI43LEZ.mjs +30 -0
  93. package/dist/chunk-XUI43LEZ.mjs.map +1 -0
  94. package/dist/chunk-Y734U4V6.mjs +85 -0
  95. package/dist/chunk-Y734U4V6.mjs.map +1 -0
  96. package/dist/chunk-Y7ENNK7L.mjs +238 -0
  97. package/dist/chunk-Y7ENNK7L.mjs.map +1 -0
  98. package/dist/chunk-Z4BLTVTB.js +30 -0
  99. package/dist/chunk-Z4BLTVTB.js.map +1 -0
  100. package/dist/chunk-ZCQRDZ36.js +208 -0
  101. package/dist/chunk-ZCQRDZ36.js.map +1 -0
  102. package/dist/chunk-ZJLZSFOZ.js +90 -0
  103. package/dist/chunk-ZJLZSFOZ.js.map +1 -0
  104. package/dist/chunk-ZNZEJDOE.js +50 -0
  105. package/dist/chunk-ZNZEJDOE.js.map +1 -0
  106. package/dist/constants.js +15 -110
  107. package/dist/constants.js.map +1 -1
  108. package/dist/constants.mjs +16 -0
  109. package/dist/constants.mjs.map +1 -0
  110. package/dist/gas-flows/DefaultGasFeeFlow.js +14 -77
  111. package/dist/gas-flows/DefaultGasFeeFlow.js.map +1 -1
  112. package/dist/gas-flows/DefaultGasFeeFlow.mjs +15 -0
  113. package/dist/gas-flows/DefaultGasFeeFlow.mjs.map +1 -0
  114. package/dist/gas-flows/LineaGasFeeFlow.js +15 -110
  115. package/dist/gas-flows/LineaGasFeeFlow.js.map +1 -1
  116. package/dist/gas-flows/LineaGasFeeFlow.mjs +16 -0
  117. package/dist/gas-flows/LineaGasFeeFlow.mjs.map +1 -0
  118. package/dist/helpers/EtherscanRemoteTransactionSource.js +11 -145
  119. package/dist/helpers/EtherscanRemoteTransactionSource.js.map +1 -1
  120. package/dist/helpers/EtherscanRemoteTransactionSource.mjs +12 -0
  121. package/dist/helpers/EtherscanRemoteTransactionSource.mjs.map +1 -0
  122. package/dist/helpers/GasFeePoller.js +10 -143
  123. package/dist/helpers/GasFeePoller.js.map +1 -1
  124. package/dist/helpers/GasFeePoller.mjs +11 -0
  125. package/dist/helpers/GasFeePoller.mjs.map +1 -0
  126. package/dist/helpers/IncomingTransactionHelper.js +8 -205
  127. package/dist/helpers/IncomingTransactionHelper.js.map +1 -1
  128. package/dist/helpers/IncomingTransactionHelper.mjs +9 -0
  129. package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -0
  130. package/dist/helpers/MultichainTrackingHelper.js +12 -291
  131. package/dist/helpers/MultichainTrackingHelper.js.map +1 -1
  132. package/dist/helpers/MultichainTrackingHelper.mjs +13 -0
  133. package/dist/helpers/MultichainTrackingHelper.mjs.map +1 -0
  134. package/dist/helpers/PendingTransactionTracker.js +9 -360
  135. package/dist/helpers/PendingTransactionTracker.js.map +1 -1
  136. package/dist/helpers/PendingTransactionTracker.mjs +10 -0
  137. package/dist/helpers/PendingTransactionTracker.mjs.map +1 -0
  138. package/dist/index.js +56 -26
  139. package/dist/index.js.map +1 -1
  140. package/dist/index.mjs +57 -0
  141. package/dist/index.mjs.map +1 -0
  142. package/dist/logger.js +11 -8
  143. package/dist/logger.js.map +1 -1
  144. package/dist/logger.mjs +12 -0
  145. package/dist/logger.mjs.map +1 -0
  146. package/dist/tsconfig.build.tsbuildinfo +1 -0
  147. package/dist/{TransactionController.d.ts → types/TransactionController.d.ts} +235 -46
  148. package/dist/types/TransactionController.d.ts.map +1 -0
  149. package/dist/{constants.d.ts → types/constants.d.ts} +5 -0
  150. package/dist/types/constants.d.ts.map +1 -0
  151. package/dist/types/gas-flows/DefaultGasFeeFlow.d.ts.map +1 -0
  152. package/dist/types/gas-flows/LineaGasFeeFlow.d.ts.map +1 -0
  153. package/dist/types/helpers/EtherscanRemoteTransactionSource.d.ts.map +1 -0
  154. package/dist/types/helpers/GasFeePoller.d.ts.map +1 -0
  155. package/dist/types/helpers/IncomingTransactionHelper.d.ts.map +1 -0
  156. package/dist/types/helpers/MultichainTrackingHelper.d.ts.map +1 -0
  157. package/dist/types/helpers/PendingTransactionTracker.d.ts.map +1 -0
  158. package/dist/types/index.d.ts +9 -0
  159. package/dist/types/index.d.ts.map +1 -0
  160. package/dist/types/logger.d.ts.map +1 -0
  161. package/dist/{types.d.ts → types/types.d.ts} +63 -65
  162. package/dist/types/types.d.ts.map +1 -0
  163. package/dist/types/utils/etherscan.d.ts.map +1 -0
  164. package/dist/types/utils/external-transactions.d.ts.map +1 -0
  165. package/dist/types/utils/gas-fees.d.ts.map +1 -0
  166. package/dist/types/utils/gas-flow.d.ts.map +1 -0
  167. package/dist/types/utils/gas.d.ts.map +1 -0
  168. package/dist/types/utils/history.d.ts +20 -0
  169. package/dist/types/utils/history.d.ts.map +1 -0
  170. package/dist/types/utils/nonce.d.ts.map +1 -0
  171. package/dist/types/utils/simulation-api.d.ts +99 -0
  172. package/dist/types/utils/simulation-api.d.ts.map +1 -0
  173. package/dist/types/utils/simulation.d.ts +21 -0
  174. package/dist/types/utils/simulation.d.ts.map +1 -0
  175. package/dist/{utils → types/utils}/swaps.d.ts +8 -5
  176. package/dist/types/utils/swaps.d.ts.map +1 -0
  177. package/dist/types/utils/transaction-type.d.ts.map +1 -0
  178. package/dist/types/utils/utils.d.ts.map +1 -0
  179. package/dist/types/utils/validation.d.ts.map +1 -0
  180. package/dist/types.js +19 -170
  181. package/dist/types.js.map +1 -1
  182. package/dist/types.mjs +20 -0
  183. package/dist/types.mjs.map +1 -0
  184. package/dist/utils/etherscan.js +13 -118
  185. package/dist/utils/etherscan.js.map +1 -1
  186. package/dist/utils/etherscan.mjs +14 -0
  187. package/dist/utils/etherscan.mjs.map +1 -0
  188. package/dist/utils/external-transactions.js +8 -35
  189. package/dist/utils/external-transactions.js.map +1 -1
  190. package/dist/utils/external-transactions.mjs +9 -0
  191. package/dist/utils/external-transactions.mjs.map +1 -0
  192. package/dist/utils/gas-fees.js +15 -200
  193. package/dist/utils/gas-fees.js.map +1 -1
  194. package/dist/utils/gas-fees.mjs +16 -0
  195. package/dist/utils/gas-fees.mjs.map +1 -0
  196. package/dist/utils/gas-flow.js +10 -52
  197. package/dist/utils/gas-flow.js.map +1 -1
  198. package/dist/utils/gas-flow.mjs +11 -0
  199. package/dist/utils/gas-flow.mjs.map +1 -0
  200. package/dist/utils/gas.js +19 -133
  201. package/dist/utils/gas.js.map +1 -1
  202. package/dist/utils/gas.mjs +20 -0
  203. package/dist/utils/gas.mjs.map +1 -0
  204. package/dist/utils/history.js +9 -83
  205. package/dist/utils/history.js.map +1 -1
  206. package/dist/utils/history.mjs +10 -0
  207. package/dist/utils/history.mjs.map +1 -0
  208. package/dist/utils/nonce.js +10 -76
  209. package/dist/utils/nonce.js.map +1 -1
  210. package/dist/utils/nonce.mjs +11 -0
  211. package/dist/utils/nonce.mjs.map +1 -0
  212. package/dist/utils/simulation-api.js +10 -0
  213. package/dist/utils/simulation-api.js.map +1 -0
  214. package/dist/utils/simulation-api.mjs +10 -0
  215. package/dist/utils/simulation-api.mjs.map +1 -0
  216. package/dist/utils/simulation.js +12 -0
  217. package/dist/utils/simulation.js.map +1 -0
  218. package/dist/utils/simulation.mjs +12 -0
  219. package/dist/utils/simulation.mjs.map +1 -0
  220. package/dist/utils/swaps.js +23 -256
  221. package/dist/utils/swaps.js.map +1 -1
  222. package/dist/utils/swaps.mjs +24 -0
  223. package/dist/utils/swaps.mjs.map +1 -0
  224. package/dist/utils/transaction-type.js +10 -120
  225. package/dist/utils/transaction-type.js.map +1 -1
  226. package/dist/utils/transaction-type.mjs +11 -0
  227. package/dist/utils/transaction-type.mjs.map +1 -0
  228. package/dist/utils/utils.js +32 -160
  229. package/dist/utils/utils.js.map +1 -1
  230. package/dist/utils/utils.mjs +33 -0
  231. package/dist/utils/utils.mjs.map +1 -0
  232. package/dist/utils/validation.js +11 -258
  233. package/dist/utils/validation.js.map +1 -1
  234. package/dist/utils/validation.mjs +12 -0
  235. package/dist/utils/validation.mjs.map +1 -0
  236. package/package.json +21 -9
  237. package/dist/TransactionController.d.ts.map +0 -1
  238. package/dist/constants.d.ts.map +0 -1
  239. package/dist/gas-flows/DefaultGasFeeFlow.d.ts.map +0 -1
  240. package/dist/gas-flows/LineaGasFeeFlow.d.ts.map +0 -1
  241. package/dist/helpers/EtherscanRemoteTransactionSource.d.ts.map +0 -1
  242. package/dist/helpers/GasFeePoller.d.ts.map +0 -1
  243. package/dist/helpers/IncomingTransactionHelper.d.ts.map +0 -1
  244. package/dist/helpers/MultichainTrackingHelper.d.ts.map +0 -1
  245. package/dist/helpers/PendingTransactionTracker.d.ts.map +0 -1
  246. package/dist/index.d.ts +0 -7
  247. package/dist/index.d.ts.map +0 -1
  248. package/dist/logger.d.ts.map +0 -1
  249. package/dist/types.d.ts.map +0 -1
  250. package/dist/utils/etherscan.d.ts.map +0 -1
  251. package/dist/utils/external-transactions.d.ts.map +0 -1
  252. package/dist/utils/gas-fees.d.ts.map +0 -1
  253. package/dist/utils/gas-flow.d.ts.map +0 -1
  254. package/dist/utils/gas.d.ts.map +0 -1
  255. package/dist/utils/history.d.ts +0 -15
  256. package/dist/utils/history.d.ts.map +0 -1
  257. package/dist/utils/nonce.d.ts.map +0 -1
  258. package/dist/utils/swaps.d.ts.map +0 -1
  259. package/dist/utils/transaction-type.d.ts.map +0 -1
  260. package/dist/utils/utils.d.ts.map +0 -1
  261. package/dist/utils/validation.d.ts.map +0 -1
  262. /package/dist/{gas-flows → types/gas-flows}/DefaultGasFeeFlow.d.ts +0 -0
  263. /package/dist/{gas-flows → types/gas-flows}/LineaGasFeeFlow.d.ts +0 -0
  264. /package/dist/{helpers → types/helpers}/EtherscanRemoteTransactionSource.d.ts +0 -0
  265. /package/dist/{helpers → types/helpers}/GasFeePoller.d.ts +0 -0
  266. /package/dist/{helpers → types/helpers}/IncomingTransactionHelper.d.ts +0 -0
  267. /package/dist/{helpers → types/helpers}/MultichainTrackingHelper.d.ts +0 -0
  268. /package/dist/{helpers → types/helpers}/PendingTransactionTracker.d.ts +0 -0
  269. /package/dist/{logger.d.ts → types/logger.d.ts} +0 -0
  270. /package/dist/{utils → types/utils}/etherscan.d.ts +0 -0
  271. /package/dist/{utils → types/utils}/external-transactions.d.ts +0 -0
  272. /package/dist/{utils → types/utils}/gas-fees.d.ts +0 -0
  273. /package/dist/{utils → types/utils}/gas-flow.d.ts +0 -0
  274. /package/dist/{utils → types/utils}/gas.d.ts +0 -0
  275. /package/dist/{utils → types/utils}/nonce.d.ts +0 -0
  276. /package/dist/{utils → types/utils}/transaction-type.d.ts +0 -0
  277. /package/dist/{utils → types/utils}/utils.d.ts +0 -0
  278. /package/dist/{utils → types/utils}/validation.d.ts +0 -0
@@ -0,0 +1,158 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
+
3
+ var _chunkH4M66BA3js = require('./chunk-H4M66BA3.js');
4
+
5
+
6
+ var _chunkS6VGOPUYjs = require('./chunk-S6VGOPUY.js');
7
+
8
+
9
+
10
+
11
+
12
+ var _chunkZ4BLTVTBjs = require('./chunk-Z4BLTVTB.js');
13
+
14
+ // src/helpers/GasFeePoller.ts
15
+ var _utils = require('@metamask/utils');
16
+ var _events = require('events'); var _events2 = _interopRequireDefault(_events);
17
+ var log = _utils.createModuleLogger.call(void 0, _chunkS6VGOPUYjs.projectLogger, "gas-fee-poller");
18
+ var INTERVAL_MILLISECONDS = 1e4;
19
+ var _gasFeeFlows, _getEthQuery, _getGasFeeControllerEstimates, _getTransactions, _timeout, _running, _start, start_fn, _stop, stop_fn, _onTimeout, onTimeout_fn, _updateUnapprovedTransactions, updateUnapprovedTransactions_fn, _updateTransactionSuggestedFees, updateTransactionSuggestedFees_fn, _getUnapprovedTransactions, getUnapprovedTransactions_fn;
20
+ var GasFeePoller = class {
21
+ /**
22
+ * Constructs a new instance of the GasFeePoller.
23
+ * @param options - The options for this instance.
24
+ * @param options.gasFeeFlows - The gas fee flows to use to obtain suitable gas fees.
25
+ * @param options.getEthQuery - Callback to obtain an EthQuery instance.
26
+ * @param options.getGasFeeControllerEstimates - Callback to obtain the default fee estimates.
27
+ * @param options.getTransactions - Callback to obtain the transaction data.
28
+ * @param options.onStateChange - Callback to register a listener for controller state changes.
29
+ */
30
+ constructor({
31
+ gasFeeFlows,
32
+ getEthQuery,
33
+ getGasFeeControllerEstimates,
34
+ getTransactions,
35
+ onStateChange
36
+ }) {
37
+ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _start);
38
+ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _stop);
39
+ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _onTimeout);
40
+ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _updateUnapprovedTransactions);
41
+ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _updateTransactionSuggestedFees);
42
+ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getUnapprovedTransactions);
43
+ this.hub = new (0, _events2.default)();
44
+ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _gasFeeFlows, void 0);
45
+ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getEthQuery, void 0);
46
+ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getGasFeeControllerEstimates, void 0);
47
+ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getTransactions, void 0);
48
+ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _timeout, void 0);
49
+ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _running, false);
50
+ _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _gasFeeFlows, gasFeeFlows);
51
+ _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _getEthQuery, getEthQuery);
52
+ _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _getGasFeeControllerEstimates, getGasFeeControllerEstimates);
53
+ _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _getTransactions, getTransactions);
54
+ onStateChange(() => {
55
+ const unapprovedTransactions = _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _getUnapprovedTransactions, getUnapprovedTransactions_fn).call(this);
56
+ if (unapprovedTransactions.length) {
57
+ _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _start, start_fn).call(this);
58
+ } else {
59
+ _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _stop, stop_fn).call(this);
60
+ }
61
+ });
62
+ }
63
+ };
64
+ _gasFeeFlows = new WeakMap();
65
+ _getEthQuery = new WeakMap();
66
+ _getGasFeeControllerEstimates = new WeakMap();
67
+ _getTransactions = new WeakMap();
68
+ _timeout = new WeakMap();
69
+ _running = new WeakMap();
70
+ _start = new WeakSet();
71
+ start_fn = function() {
72
+ if (_chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _running)) {
73
+ return;
74
+ }
75
+ _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _onTimeout, onTimeout_fn).call(this);
76
+ _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _running, true);
77
+ log("Started polling");
78
+ };
79
+ _stop = new WeakSet();
80
+ stop_fn = function() {
81
+ if (!_chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _running)) {
82
+ return;
83
+ }
84
+ clearTimeout(_chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _timeout));
85
+ _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _timeout, void 0);
86
+ _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _running, false);
87
+ log("Stopped polling");
88
+ };
89
+ _onTimeout = new WeakSet();
90
+ onTimeout_fn = async function() {
91
+ await _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _updateUnapprovedTransactions, updateUnapprovedTransactions_fn).call(this);
92
+ _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _timeout, setTimeout(() => _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _onTimeout, onTimeout_fn).call(this), INTERVAL_MILLISECONDS));
93
+ };
94
+ _updateUnapprovedTransactions = new WeakSet();
95
+ updateUnapprovedTransactions_fn = async function() {
96
+ const unapprovedTransactions = _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _getUnapprovedTransactions, getUnapprovedTransactions_fn).call(this);
97
+ log("Found unapproved transactions", {
98
+ count: unapprovedTransactions.length
99
+ });
100
+ await Promise.all(
101
+ unapprovedTransactions.map(
102
+ (tx) => _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _updateTransactionSuggestedFees, updateTransactionSuggestedFees_fn).call(this, tx)
103
+ )
104
+ );
105
+ };
106
+ _updateTransactionSuggestedFees = new WeakSet();
107
+ updateTransactionSuggestedFees_fn = async function(transactionMeta) {
108
+ const { chainId, networkClientId } = transactionMeta;
109
+ const ethQuery = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getEthQuery).call(this, chainId, networkClientId);
110
+ const gasFeeFlow = _chunkH4M66BA3js.getGasFeeFlow.call(void 0, transactionMeta, _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _gasFeeFlows));
111
+ if (!gasFeeFlow) {
112
+ log("No gas fee flow found", transactionMeta.id);
113
+ } else {
114
+ log(
115
+ "Found gas fee flow",
116
+ gasFeeFlow.constructor.name,
117
+ transactionMeta.id
118
+ );
119
+ }
120
+ const request = {
121
+ ethQuery,
122
+ getGasFeeControllerEstimates: _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getGasFeeControllerEstimates),
123
+ transactionMeta
124
+ };
125
+ let gasFeeEstimates;
126
+ if (gasFeeFlow) {
127
+ try {
128
+ const response = await gasFeeFlow.getGasFees(request);
129
+ gasFeeEstimates = response.estimates;
130
+ } catch (error) {
131
+ log("Failed to get suggested gas fees", transactionMeta.id, error);
132
+ }
133
+ }
134
+ if (!gasFeeEstimates && transactionMeta.gasFeeEstimatesLoaded) {
135
+ return;
136
+ }
137
+ const updatedTransactionMeta = {
138
+ ...transactionMeta,
139
+ gasFeeEstimates,
140
+ gasFeeEstimatesLoaded: true
141
+ };
142
+ this.hub.emit("transaction-updated", updatedTransactionMeta);
143
+ log("Updated suggested gas fees", {
144
+ gasFeeEstimates: updatedTransactionMeta.gasFeeEstimates,
145
+ transaction: updatedTransactionMeta.id
146
+ });
147
+ };
148
+ _getUnapprovedTransactions = new WeakSet();
149
+ getUnapprovedTransactions_fn = function() {
150
+ return _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getTransactions).call(this).filter(
151
+ (tx) => tx.status === "unapproved" /* unapproved */
152
+ );
153
+ };
154
+
155
+
156
+
157
+ exports.GasFeePoller = GasFeePoller;
158
+ //# sourceMappingURL=chunk-7APMBUKB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/helpers/GasFeePoller.ts"],"names":[],"mappings":"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","sourcesContent":["import type EthQuery from '@metamask/eth-query';\nimport type { GasFeeState } from '@metamask/gas-fee-controller';\nimport type { Hex } from '@metamask/utils';\nimport { createModuleLogger } from '@metamask/utils';\nimport EventEmitter from 'events';\n\nimport type { NetworkClientId } from '../../../network-controller/src';\nimport { projectLogger } from '../logger';\nimport type { GasFeeEstimates, GasFeeFlow, GasFeeFlowRequest } from '../types';\nimport { TransactionStatus, type TransactionMeta } from '../types';\nimport { getGasFeeFlow } from '../utils/gas-flow';\n\nconst log = createModuleLogger(projectLogger, 'gas-fee-poller');\n\nconst INTERVAL_MILLISECONDS = 10000;\n\n/**\n * Automatically polls and updates suggested gas fees on unapproved transactions.\n */\nexport class GasFeePoller {\n hub: EventEmitter = new EventEmitter();\n\n #gasFeeFlows: GasFeeFlow[];\n\n #getEthQuery: (chainId: Hex, networkClientId?: NetworkClientId) => EthQuery;\n\n #getGasFeeControllerEstimates: () => Promise<GasFeeState>;\n\n #getTransactions: () => TransactionMeta[];\n\n #timeout: ReturnType<typeof setTimeout> | undefined;\n\n #running = false;\n\n /**\n * Constructs a new instance of the GasFeePoller.\n * @param options - The options for this instance.\n * @param options.gasFeeFlows - The gas fee flows to use to obtain suitable gas fees.\n * @param options.getEthQuery - Callback to obtain an EthQuery instance.\n * @param options.getGasFeeControllerEstimates - Callback to obtain the default fee estimates.\n * @param options.getTransactions - Callback to obtain the transaction data.\n * @param options.onStateChange - Callback to register a listener for controller state changes.\n */\n constructor({\n gasFeeFlows,\n getEthQuery,\n getGasFeeControllerEstimates,\n getTransactions,\n onStateChange,\n }: {\n gasFeeFlows: GasFeeFlow[];\n getEthQuery: (chainId: Hex, networkClientId?: NetworkClientId) => EthQuery;\n getGasFeeControllerEstimates: () => Promise<GasFeeState>;\n getTransactions: () => TransactionMeta[];\n onStateChange: (listener: () => void) => void;\n }) {\n this.#gasFeeFlows = gasFeeFlows;\n this.#getEthQuery = getEthQuery;\n this.#getGasFeeControllerEstimates = getGasFeeControllerEstimates;\n this.#getTransactions = getTransactions;\n\n onStateChange(() => {\n const unapprovedTransactions = this.#getUnapprovedTransactions();\n\n if (unapprovedTransactions.length) {\n this.#start();\n } else {\n this.#stop();\n }\n });\n }\n\n #start() {\n if (this.#running) {\n return;\n }\n\n // Intentionally not awaiting since this starts the timeout chain.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.#onTimeout();\n\n this.#running = true;\n\n log('Started polling');\n }\n\n #stop() {\n if (!this.#running) {\n return;\n }\n\n clearTimeout(this.#timeout);\n\n this.#timeout = undefined;\n this.#running = false;\n\n log('Stopped polling');\n }\n\n async #onTimeout() {\n await this.#updateUnapprovedTransactions();\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.#timeout = setTimeout(() => this.#onTimeout(), INTERVAL_MILLISECONDS);\n }\n\n async #updateUnapprovedTransactions() {\n const unapprovedTransactions = this.#getUnapprovedTransactions();\n\n log('Found unapproved transactions', {\n count: unapprovedTransactions.length,\n });\n\n await Promise.all(\n unapprovedTransactions.map((tx) =>\n this.#updateTransactionSuggestedFees(tx),\n ),\n );\n }\n\n async #updateTransactionSuggestedFees(transactionMeta: TransactionMeta) {\n const { chainId, networkClientId } = transactionMeta;\n\n const ethQuery = this.#getEthQuery(chainId, networkClientId);\n const gasFeeFlow = getGasFeeFlow(transactionMeta, this.#gasFeeFlows);\n\n if (!gasFeeFlow) {\n log('No gas fee flow found', transactionMeta.id);\n } else {\n log(\n 'Found gas fee flow',\n gasFeeFlow.constructor.name,\n transactionMeta.id,\n );\n }\n\n const request: GasFeeFlowRequest = {\n ethQuery,\n getGasFeeControllerEstimates: this.#getGasFeeControllerEstimates,\n transactionMeta,\n };\n\n let gasFeeEstimates: GasFeeEstimates | undefined;\n\n if (gasFeeFlow) {\n try {\n const response = await gasFeeFlow.getGasFees(request);\n gasFeeEstimates = response.estimates;\n } catch (error) {\n log('Failed to get suggested gas fees', transactionMeta.id, error);\n }\n }\n\n if (!gasFeeEstimates && transactionMeta.gasFeeEstimatesLoaded) {\n return;\n }\n\n const updatedTransactionMeta: TransactionMeta = {\n ...transactionMeta,\n gasFeeEstimates,\n gasFeeEstimatesLoaded: true,\n };\n\n this.hub.emit('transaction-updated', updatedTransactionMeta);\n\n log('Updated suggested gas fees', {\n gasFeeEstimates: updatedTransactionMeta.gasFeeEstimates,\n transaction: updatedTransactionMeta.id,\n });\n }\n\n #getUnapprovedTransactions() {\n return this.#getTransactions().filter(\n (tx) => tx.status === TransactionStatus.unapproved,\n );\n }\n}\n"]}
@@ -0,0 +1,40 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/utils/external-transactions.ts
2
+ var _rpcerrors = require('@metamask/rpc-errors');
3
+ function validateConfirmedExternalTransaction(transactionMeta, confirmedTxs, pendingTxs) {
4
+ if (!transactionMeta || !transactionMeta.txParams) {
5
+ throw _rpcerrors.rpcErrors.invalidParams(
6
+ '"transactionMeta" or "transactionMeta.txParams" is missing'
7
+ );
8
+ }
9
+ if (transactionMeta.status !== "confirmed" /* confirmed */) {
10
+ throw _rpcerrors.rpcErrors.invalidParams(
11
+ 'External transaction status should be "confirmed"'
12
+ );
13
+ }
14
+ const externalTxNonce = transactionMeta.txParams.nonce;
15
+ if (pendingTxs && pendingTxs.length > 0) {
16
+ const foundPendingTxByNonce = pendingTxs.find(
17
+ (tx) => tx.txParams?.nonce === externalTxNonce
18
+ );
19
+ if (foundPendingTxByNonce) {
20
+ throw _rpcerrors.rpcErrors.invalidParams(
21
+ "External transaction nonce should not be in pending txs"
22
+ );
23
+ }
24
+ }
25
+ if (confirmedTxs && confirmedTxs.length > 0) {
26
+ const foundConfirmedTxByNonce = confirmedTxs.find(
27
+ (tx) => tx.txParams?.nonce === externalTxNonce
28
+ );
29
+ if (foundConfirmedTxByNonce) {
30
+ throw _rpcerrors.rpcErrors.invalidParams(
31
+ "External transaction nonce should not be in confirmed txs"
32
+ );
33
+ }
34
+ }
35
+ }
36
+
37
+
38
+
39
+ exports.validateConfirmedExternalTransaction = validateConfirmedExternalTransaction;
40
+ //# sourceMappingURL=chunk-7LXE4KHV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/external-transactions.ts"],"names":[],"mappings":";AACA,SAAS,iBAAiB;AAYnB,SAAS,qCACd,iBACA,cACA,YACA;AACA,MAAI,CAAC,mBAAmB,CAAC,gBAAgB,UAAU;AACjD,UAAM,UAAU;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAEA,MAAI,gBAAgB,wCAAwC;AAC1D,UAAM,UAAU;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAEA,QAAM,kBAAkB,gBAAgB,SAAS;AACjD,MAAI,cAAc,WAAW,SAAS,GAAG;AACvC,UAAM,wBAAwB,WAAW;AAAA,MACvC,CAAC,OAAO,GAAG,UAAU,UAAU;AAAA,IACjC;AACA,QAAI,uBAAuB;AACzB,YAAM,UAAU;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,gBAAgB,aAAa,SAAS,GAAG;AAC3C,UAAM,0BAA0B,aAAa;AAAA,MAC3C,CAAC,OAAO,GAAG,UAAU,UAAU;AAAA,IACjC;AACA,QAAI,yBAAyB;AAC3B,YAAM,UAAU;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF","sourcesContent":["// These utility functions are exclusively used by `confirmExternalTransaction` method in controller\nimport { rpcErrors } from '@metamask/rpc-errors';\n\nimport { TransactionStatus } from '../types';\nimport type { TransactionMeta } from '../types';\n\n/**\n * Validates the external provided transaction meta.\n *\n * @param transactionMeta - The transaction meta to validate.\n * @param confirmedTxs - The confirmed transactions in controller state.\n * @param pendingTxs - The submitted transactions in controller state.\n */\nexport function validateConfirmedExternalTransaction(\n transactionMeta?: TransactionMeta,\n confirmedTxs?: TransactionMeta[],\n pendingTxs?: TransactionMeta[],\n) {\n if (!transactionMeta || !transactionMeta.txParams) {\n throw rpcErrors.invalidParams(\n '\"transactionMeta\" or \"transactionMeta.txParams\" is missing',\n );\n }\n\n if (transactionMeta.status !== TransactionStatus.confirmed) {\n throw rpcErrors.invalidParams(\n 'External transaction status should be \"confirmed\"',\n );\n }\n\n const externalTxNonce = transactionMeta.txParams.nonce;\n if (pendingTxs && pendingTxs.length > 0) {\n const foundPendingTxByNonce = pendingTxs.find(\n (tx) => tx.txParams?.nonce === externalTxNonce,\n );\n if (foundPendingTxByNonce) {\n throw rpcErrors.invalidParams(\n 'External transaction nonce should not be in pending txs',\n );\n }\n }\n\n if (confirmedTxs && confirmedTxs.length > 0) {\n const foundConfirmedTxByNonce = confirmedTxs.find(\n (tx) => tx.txParams?.nonce === externalTxNonce,\n );\n if (foundConfirmedTxByNonce) {\n throw rpcErrors.invalidParams(\n 'External transaction nonce should not be in confirmed txs',\n );\n }\n }\n}\n"]}
@@ -0,0 +1,62 @@
1
+ import {
2
+ GasFeeEstimateLevel
3
+ } from "./chunk-LM4NUNMT.mjs";
4
+
5
+ // src/utils/gas-flow.ts
6
+ import { weiHexToGweiDec } from "@metamask/controller-utils";
7
+ import {
8
+ GAS_ESTIMATE_TYPES
9
+ } from "@metamask/gas-fee-controller";
10
+ function getGasFeeFlow(transactionMeta, gasFeeFlows) {
11
+ return gasFeeFlows.find(
12
+ (gasFeeFlow) => gasFeeFlow.matchesTransaction(transactionMeta)
13
+ );
14
+ }
15
+ function mergeGasFeeEstimates({
16
+ gasFeeControllerEstimateType,
17
+ gasFeeControllerEstimates,
18
+ transactionGasFeeEstimates
19
+ }) {
20
+ if (gasFeeControllerEstimateType === GAS_ESTIMATE_TYPES.FEE_MARKET) {
21
+ return Object.values(GasFeeEstimateLevel).reduce(
22
+ (result, level) => ({
23
+ ...result,
24
+ [level]: mergeFeeMarketEstimate(
25
+ gasFeeControllerEstimates[level],
26
+ transactionGasFeeEstimates[level]
27
+ )
28
+ }),
29
+ { ...gasFeeControllerEstimates }
30
+ );
31
+ }
32
+ if (gasFeeControllerEstimateType === GAS_ESTIMATE_TYPES.LEGACY) {
33
+ return Object.values(GasFeeEstimateLevel).reduce(
34
+ (result, level) => ({
35
+ ...result,
36
+ [level]: getLegacyEstimate(transactionGasFeeEstimates[level])
37
+ }),
38
+ {}
39
+ );
40
+ }
41
+ return gasFeeControllerEstimates;
42
+ }
43
+ function mergeFeeMarketEstimate(gasFeeControllerEstimate, transactionGasFeeEstimate) {
44
+ return {
45
+ ...gasFeeControllerEstimate,
46
+ suggestedMaxFeePerGas: weiHexToGweiDec(
47
+ transactionGasFeeEstimate.maxFeePerGas
48
+ ),
49
+ suggestedMaxPriorityFeePerGas: weiHexToGweiDec(
50
+ transactionGasFeeEstimate.maxPriorityFeePerGas
51
+ )
52
+ };
53
+ }
54
+ function getLegacyEstimate(transactionGasFeeEstimate) {
55
+ return weiHexToGweiDec(transactionGasFeeEstimate.maxFeePerGas);
56
+ }
57
+
58
+ export {
59
+ getGasFeeFlow,
60
+ mergeGasFeeEstimates
61
+ };
62
+ //# sourceMappingURL=chunk-7MZ57ILQ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/gas-flow.ts"],"sourcesContent":["import { weiHexToGweiDec } from '@metamask/controller-utils';\nimport type {\n Eip1559GasFee,\n GasFeeEstimates,\n LegacyGasPriceEstimate,\n} from '@metamask/gas-fee-controller';\nimport {\n GAS_ESTIMATE_TYPES,\n type GasFeeState,\n} from '@metamask/gas-fee-controller';\n\nimport {\n type GasFeeEstimates as TransactionGasFeeEstimates,\n type GasFeeFlow,\n type TransactionMeta,\n type GasFeeEstimatesForLevel,\n GasFeeEstimateLevel,\n} from '../types';\n\n/**\n * Returns the first gas fee flow that matches the transaction.\n *\n * @param transactionMeta - The transaction metadata to find a gas fee flow for.\n * @param gasFeeFlows - The gas fee flows to search.\n * @returns The first gas fee flow that matches the transaction, or undefined if none match.\n */\nexport function getGasFeeFlow(\n transactionMeta: TransactionMeta,\n gasFeeFlows: GasFeeFlow[],\n): GasFeeFlow | undefined {\n return gasFeeFlows.find((gasFeeFlow) =>\n gasFeeFlow.matchesTransaction(transactionMeta),\n );\n}\n\ntype FeeMarketMergeGasFeeEstimatesRequest = {\n gasFeeControllerEstimateType: 'fee-market';\n gasFeeControllerEstimates: GasFeeEstimates;\n transactionGasFeeEstimates: TransactionGasFeeEstimates;\n};\n\ntype LegacyMergeGasFeeEstimatesRequest = {\n gasFeeControllerEstimateType: 'legacy';\n gasFeeControllerEstimates: LegacyGasPriceEstimate;\n transactionGasFeeEstimates: TransactionGasFeeEstimates;\n};\n\n/**\n * Merge the gas fee estimates from the gas fee controller with the gas fee estimates from a transaction.\n * @param request - Data required to merge gas fee estimates.\n * @param request.gasFeeControllerEstimateType - Gas fee estimate type from the gas fee controller.\n * @param request.gasFeeControllerEstimates - Gas fee estimates from the GasFeeController.\n * @param request.transactionGasFeeEstimates - Gas fee estimates from the transaction.\n * @returns The merged gas fee estimates.\n */\nexport function mergeGasFeeEstimates({\n gasFeeControllerEstimateType,\n gasFeeControllerEstimates,\n transactionGasFeeEstimates,\n}:\n | FeeMarketMergeGasFeeEstimatesRequest\n | LegacyMergeGasFeeEstimatesRequest): GasFeeState['gasFeeEstimates'] {\n if (gasFeeControllerEstimateType === GAS_ESTIMATE_TYPES.FEE_MARKET) {\n return Object.values(GasFeeEstimateLevel).reduce(\n (result, level) => ({\n ...result,\n [level]: mergeFeeMarketEstimate(\n gasFeeControllerEstimates[level],\n transactionGasFeeEstimates[level],\n ),\n }),\n { ...gasFeeControllerEstimates } as GasFeeEstimates,\n );\n }\n\n if (gasFeeControllerEstimateType === GAS_ESTIMATE_TYPES.LEGACY) {\n return Object.values(GasFeeEstimateLevel).reduce(\n (result, level) => ({\n ...result,\n [level]: getLegacyEstimate(transactionGasFeeEstimates[level]),\n }),\n {} as LegacyGasPriceEstimate,\n );\n }\n\n return gasFeeControllerEstimates;\n}\n\n/**\n * Merge a specific priority level of EIP-1559 gas fee estimates.\n * @param gasFeeControllerEstimate - The gas fee estimate from the gas fee controller.\n * @param transactionGasFeeEstimate - The gas fee estimate from the transaction.\n * @returns The merged gas fee estimate.\n */\nfunction mergeFeeMarketEstimate(\n gasFeeControllerEstimate: Eip1559GasFee,\n transactionGasFeeEstimate: GasFeeEstimatesForLevel,\n): Eip1559GasFee {\n return {\n ...gasFeeControllerEstimate,\n suggestedMaxFeePerGas: weiHexToGweiDec(\n transactionGasFeeEstimate.maxFeePerGas,\n ),\n suggestedMaxPriorityFeePerGas: weiHexToGweiDec(\n transactionGasFeeEstimate.maxPriorityFeePerGas,\n ),\n };\n}\n\n/**\n * Generate a specific priority level for a legacy gas fee estimate.\n * @param transactionGasFeeEstimate - The gas fee estimate from the transaction.\n * @returns The legacy gas fee estimate.\n */\nfunction getLegacyEstimate(\n transactionGasFeeEstimate: GasFeeEstimatesForLevel,\n): string {\n return weiHexToGweiDec(transactionGasFeeEstimate.maxFeePerGas);\n}\n"],"mappings":";;;;;AAAA,SAAS,uBAAuB;AAMhC;AAAA,EACE;AAAA,OAEK;AAiBA,SAAS,cACd,iBACA,aACwB;AACxB,SAAO,YAAY;AAAA,IAAK,CAAC,eACvB,WAAW,mBAAmB,eAAe;AAAA,EAC/C;AACF;AAsBO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AACF,GAEuE;AACrE,MAAI,iCAAiC,mBAAmB,YAAY;AAClE,WAAO,OAAO,OAAO,mBAAmB,EAAE;AAAA,MACxC,CAAC,QAAQ,WAAW;AAAA,QAClB,GAAG;AAAA,QACH,CAAC,KAAK,GAAG;AAAA,UACP,0BAA0B,KAAK;AAAA,UAC/B,2BAA2B,KAAK;AAAA,QAClC;AAAA,MACF;AAAA,MACA,EAAE,GAAG,0BAA0B;AAAA,IACjC;AAAA,EACF;AAEA,MAAI,iCAAiC,mBAAmB,QAAQ;AAC9D,WAAO,OAAO,OAAO,mBAAmB,EAAE;AAAA,MACxC,CAAC,QAAQ,WAAW;AAAA,QAClB,GAAG;AAAA,QACH,CAAC,KAAK,GAAG,kBAAkB,2BAA2B,KAAK,CAAC;AAAA,MAC9D;AAAA,MACA,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT;AAQA,SAAS,uBACP,0BACA,2BACe;AACf,SAAO;AAAA,IACL,GAAG;AAAA,IACH,uBAAuB;AAAA,MACrB,0BAA0B;AAAA,IAC5B;AAAA,IACA,+BAA+B;AAAA,MAC7B,0BAA0B;AAAA,IAC5B;AAAA,EACF;AACF;AAOA,SAAS,kBACP,2BACQ;AACR,SAAO,gBAAgB,0BAA0B,YAAY;AAC/D;","names":[]}