@metamask-previews/bridge-controller 80.1.0-preview-3866c0ff1 → 80.1.0-preview-e3275932a

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 (526) hide show
  1. package/CHANGELOG.md +0 -1
  2. package/dist/bridge-controller-method-action-types.cjs +7 -0
  3. package/dist/bridge-controller-method-action-types.cjs.map +1 -0
  4. package/dist/{bridge-controller-method-action-types.d.ts → bridge-controller-method-action-types.d.cts} +2 -2
  5. package/dist/bridge-controller-method-action-types.d.cts.map +1 -0
  6. package/dist/bridge-controller-method-action-types.d.mts +50 -0
  7. package/dist/bridge-controller-method-action-types.d.mts.map +1 -0
  8. package/dist/{bridge-controller-method-action-types.js → bridge-controller-method-action-types.mjs} +1 -1
  9. package/dist/bridge-controller-method-action-types.mjs.map +1 -0
  10. package/dist/bridge-controller.cjs +1044 -0
  11. package/dist/bridge-controller.cjs.map +1 -0
  12. package/dist/{bridge-controller.d.ts → bridge-controller.d.cts} +21 -21
  13. package/dist/bridge-controller.d.cts.map +1 -0
  14. package/dist/bridge-controller.d.mts +127 -0
  15. package/dist/bridge-controller.d.mts.map +1 -0
  16. package/dist/bridge-controller.mjs +1040 -0
  17. package/dist/bridge-controller.mjs.map +1 -0
  18. package/dist/coercers/quote-response-v1-to-v2.cjs +139 -0
  19. package/dist/coercers/quote-response-v1-to-v2.cjs.map +1 -0
  20. package/dist/coercers/{quote-response-v1-to-v2.d.ts → quote-response-v1-to-v2.d.cts} +4 -4
  21. package/dist/coercers/quote-response-v1-to-v2.d.cts.map +1 -0
  22. package/dist/coercers/quote-response-v1-to-v2.d.mts +13 -0
  23. package/dist/coercers/quote-response-v1-to-v2.d.mts.map +1 -0
  24. package/dist/coercers/{quote-response-v1-to-v2.js → quote-response-v1-to-v2.mjs} +11 -11
  25. package/dist/coercers/quote-response-v1-to-v2.mjs.map +1 -0
  26. package/dist/coercers/quote-response-v2-to-v1.cjs +162 -0
  27. package/dist/coercers/quote-response-v2-to-v1.cjs.map +1 -0
  28. package/dist/coercers/{quote-response-v2-to-v1.d.ts → quote-response-v2-to-v1.d.cts} +4 -4
  29. package/dist/coercers/quote-response-v2-to-v1.d.cts.map +1 -0
  30. package/dist/coercers/quote-response-v2-to-v1.d.mts +13 -0
  31. package/dist/coercers/quote-response-v2-to-v1.d.mts.map +1 -0
  32. package/dist/coercers/{quote-response-v2-to-v1.js → quote-response-v2-to-v1.mjs} +10 -10
  33. package/dist/coercers/quote-response-v2-to-v1.mjs.map +1 -0
  34. package/dist/constants/bridge.cjs +98 -0
  35. package/dist/constants/bridge.cjs.map +1 -0
  36. package/dist/constants/{bridge.d.ts → bridge.d.cts} +38 -38
  37. package/dist/constants/bridge.d.cts.map +1 -0
  38. package/dist/constants/bridge.d.mts +77 -0
  39. package/dist/constants/bridge.d.mts.map +1 -0
  40. package/dist/constants/{bridge.js → bridge.mjs} +4 -4
  41. package/dist/constants/bridge.mjs.map +1 -0
  42. package/dist/constants/chains.cjs +174 -0
  43. package/dist/constants/chains.cjs.map +1 -0
  44. package/dist/constants/{chains.d.ts → chains.d.cts} +84 -84
  45. package/dist/constants/chains.d.cts.map +1 -0
  46. package/dist/constants/chains.d.mts +171 -0
  47. package/dist/constants/chains.d.mts.map +1 -0
  48. package/dist/constants/{chains.js → chains.mjs} +1 -1
  49. package/dist/constants/chains.mjs.map +1 -0
  50. package/dist/constants/swaps.cjs +98 -0
  51. package/dist/constants/swaps.cjs.map +1 -0
  52. package/dist/constants/{swaps.d.ts → swaps.d.cts} +2 -2
  53. package/dist/constants/swaps.d.cts.map +1 -0
  54. package/dist/constants/swaps.d.mts +6 -0
  55. package/dist/constants/swaps.d.mts.map +1 -0
  56. package/dist/constants/{swaps.js → swaps.mjs} +2 -2
  57. package/dist/constants/swaps.mjs.map +1 -0
  58. package/dist/constants/tokens.cjs +212 -0
  59. package/dist/constants/tokens.cjs.map +1 -0
  60. package/dist/constants/{tokens.d.ts → tokens.d.cts} +34 -34
  61. package/dist/constants/tokens.d.cts.map +1 -0
  62. package/dist/constants/tokens.d.mts +195 -0
  63. package/dist/constants/tokens.d.mts.map +1 -0
  64. package/dist/constants/{tokens.js → tokens.mjs} +3 -3
  65. package/dist/constants/tokens.mjs.map +1 -0
  66. package/dist/constants/traces.cjs +11 -0
  67. package/dist/constants/traces.cjs.map +1 -0
  68. package/dist/constants/{traces.d.ts → traces.d.cts} +1 -1
  69. package/dist/constants/traces.d.cts.map +1 -0
  70. package/dist/constants/traces.d.mts +7 -0
  71. package/dist/constants/traces.d.mts.map +1 -0
  72. package/dist/constants/{traces.js → traces.mjs} +1 -1
  73. package/dist/constants/traces.mjs.map +1 -0
  74. package/dist/index.cjs +166 -0
  75. package/dist/index.cjs.map +1 -0
  76. package/dist/{index.d.ts → index.d.cts} +52 -52
  77. package/dist/index.d.cts.map +1 -0
  78. package/dist/index.d.mts +60 -0
  79. package/dist/index.d.mts.map +1 -0
  80. package/dist/index.mjs +47 -0
  81. package/dist/index.mjs.map +1 -0
  82. package/dist/selectors.cjs +449 -0
  83. package/dist/selectors.cjs.map +1 -0
  84. package/dist/{selectors.d.ts → selectors.d.cts} +5782 -5782
  85. package/dist/selectors.d.cts.map +1 -0
  86. package/dist/selectors.d.mts +13877 -0
  87. package/dist/selectors.d.mts.map +1 -0
  88. package/dist/{selectors.js → selectors.mjs} +19 -18
  89. package/dist/selectors.mjs.map +1 -0
  90. package/dist/types.cjs +66 -0
  91. package/dist/types.cjs.map +1 -0
  92. package/dist/{types.d.ts → types.d.cts} +27 -27
  93. package/dist/types.d.cts.map +1 -0
  94. package/dist/types.d.mts +283 -0
  95. package/dist/types.d.mts.map +1 -0
  96. package/dist/{types.js → types.mjs} +1 -1
  97. package/dist/types.mjs.map +1 -0
  98. package/dist/utils/assets.cjs +43 -0
  99. package/dist/utils/assets.cjs.map +1 -0
  100. package/dist/utils/{assets.d.ts → assets.d.cts} +4 -4
  101. package/dist/utils/assets.d.cts.map +1 -0
  102. package/dist/utils/assets.d.mts +10 -0
  103. package/dist/utils/assets.d.mts.map +1 -0
  104. package/dist/utils/{assets.js → assets.mjs} +4 -4
  105. package/dist/utils/assets.mjs.map +1 -0
  106. package/dist/utils/balance.cjs +34 -0
  107. package/dist/utils/balance.cjs.map +1 -0
  108. package/dist/utils/{balance.d.ts → balance.d.cts} +4 -4
  109. package/dist/utils/balance.d.cts.map +1 -0
  110. package/dist/utils/balance.d.mts +7 -0
  111. package/dist/utils/balance.d.mts.map +1 -0
  112. package/dist/utils/{balance.js → balance.mjs} +6 -6
  113. package/dist/utils/balance.mjs.map +1 -0
  114. package/dist/utils/bridge.cjs +204 -0
  115. package/dist/utils/bridge.cjs.map +1 -0
  116. package/dist/utils/{bridge.d.ts → bridge.d.cts} +23 -8
  117. package/dist/utils/bridge.d.cts.map +1 -0
  118. package/dist/utils/bridge.d.mts +97 -0
  119. package/dist/utils/bridge.d.mts.map +1 -0
  120. package/dist/utils/{bridge.js → bridge.mjs} +12 -12
  121. package/dist/utils/bridge.mjs.map +1 -0
  122. package/dist/utils/caip-formatters.cjs +157 -0
  123. package/dist/utils/caip-formatters.cjs.map +1 -0
  124. package/dist/utils/{caip-formatters.d.ts → caip-formatters.d.cts} +3 -3
  125. package/dist/utils/caip-formatters.d.cts.map +1 -0
  126. package/dist/utils/caip-formatters.d.mts +40 -0
  127. package/dist/utils/caip-formatters.d.mts.map +1 -0
  128. package/dist/utils/{caip-formatters.js → caip-formatters.mjs} +9 -9
  129. package/dist/utils/caip-formatters.mjs.map +1 -0
  130. package/dist/utils/feature-flags.cjs +77 -0
  131. package/dist/utils/feature-flags.cjs.map +1 -0
  132. package/dist/utils/{feature-flags.d.ts → feature-flags.d.cts} +9 -9
  133. package/dist/utils/feature-flags.d.cts.map +1 -0
  134. package/dist/utils/feature-flags.d.mts +52 -0
  135. package/dist/utils/feature-flags.d.mts.map +1 -0
  136. package/dist/utils/{feature-flags.js → feature-flags.mjs} +4 -4
  137. package/dist/utils/feature-flags.mjs.map +1 -0
  138. package/dist/utils/fetch-server-events.cjs +70 -0
  139. package/dist/utils/fetch-server-events.cjs.map +1 -0
  140. package/dist/utils/{fetch-server-events.d.ts → fetch-server-events.d.cts} +3 -3
  141. package/dist/utils/fetch-server-events.d.cts.map +1 -0
  142. package/dist/utils/fetch-server-events.d.mts +17 -0
  143. package/dist/utils/fetch-server-events.d.mts.map +1 -0
  144. package/dist/utils/{fetch-server-events.js → fetch-server-events.mjs} +1 -1
  145. package/dist/utils/fetch-server-events.mjs.map +1 -0
  146. package/dist/utils/fetch.cjs +426 -0
  147. package/dist/utils/fetch.cjs.map +1 -0
  148. package/dist/utils/{fetch.d.ts → fetch.d.cts} +15 -15
  149. package/dist/utils/fetch.d.cts.map +1 -0
  150. package/dist/utils/fetch.d.mts +114 -0
  151. package/dist/utils/fetch.d.mts.map +1 -0
  152. package/dist/utils/{fetch.js → fetch.mjs} +15 -15
  153. package/dist/utils/fetch.mjs.map +1 -0
  154. package/dist/utils/metrics/constants.cjs +103 -0
  155. package/dist/utils/metrics/constants.cjs.map +1 -0
  156. package/dist/utils/metrics/{constants.d.ts → constants.d.cts} +1 -1
  157. package/dist/utils/metrics/constants.d.cts.map +1 -0
  158. package/dist/utils/metrics/constants.d.mts +91 -0
  159. package/dist/utils/metrics/constants.d.mts.map +1 -0
  160. package/dist/utils/metrics/{constants.js → constants.mjs} +1 -1
  161. package/dist/utils/metrics/constants.mjs.map +1 -0
  162. package/dist/utils/metrics/properties.cjs +140 -0
  163. package/dist/utils/metrics/properties.cjs.map +1 -0
  164. package/dist/utils/metrics/{properties.d.ts → properties.d.cts} +14 -14
  165. package/dist/utils/metrics/properties.d.cts.map +1 -0
  166. package/dist/utils/metrics/properties.d.mts +66 -0
  167. package/dist/utils/metrics/properties.d.mts.map +1 -0
  168. package/dist/utils/metrics/{properties.js → properties.mjs} +7 -7
  169. package/dist/utils/metrics/properties.mjs.map +1 -0
  170. package/dist/utils/metrics/types.cjs +3 -0
  171. package/dist/utils/metrics/types.cjs.map +1 -0
  172. package/dist/utils/metrics/{types.d.ts → types.d.cts} +5 -5
  173. package/dist/utils/metrics/types.d.cts.map +1 -0
  174. package/dist/utils/metrics/types.d.mts +311 -0
  175. package/dist/utils/metrics/types.d.mts.map +1 -0
  176. package/dist/utils/metrics/types.mjs +2 -0
  177. package/dist/utils/metrics/types.mjs.map +1 -0
  178. package/dist/utils/number-formatters.cjs +107 -0
  179. package/dist/utils/number-formatters.cjs.map +1 -0
  180. package/dist/utils/{number-formatters.d.ts → number-formatters.d.cts} +4 -4
  181. package/dist/utils/number-formatters.d.cts.map +1 -0
  182. package/dist/utils/number-formatters.d.mts +34 -0
  183. package/dist/utils/number-formatters.d.mts.map +1 -0
  184. package/dist/utils/{number-formatters.js → number-formatters.mjs} +3 -3
  185. package/dist/utils/number-formatters.mjs.map +1 -0
  186. package/dist/utils/quote-fees.cjs +144 -0
  187. package/dist/utils/quote-fees.cjs.map +1 -0
  188. package/dist/utils/quote-fees.d.cts +21 -0
  189. package/dist/utils/quote-fees.d.cts.map +1 -0
  190. package/dist/utils/quote-fees.d.mts +21 -0
  191. package/dist/utils/quote-fees.d.mts.map +1 -0
  192. package/dist/utils/{quote-fees.js → quote-fees.mjs} +7 -7
  193. package/dist/utils/quote-fees.mjs.map +1 -0
  194. package/dist/utils/quote-metadata/calculators.cjs +345 -0
  195. package/dist/utils/quote-metadata/calculators.cjs.map +1 -0
  196. package/dist/utils/quote-metadata/{calculators.d.ts → calculators.d.cts} +12 -12
  197. package/dist/utils/quote-metadata/calculators.d.cts.map +1 -0
  198. package/dist/utils/quote-metadata/calculators.d.mts +121 -0
  199. package/dist/utils/quote-metadata/calculators.d.mts.map +1 -0
  200. package/dist/utils/quote-metadata/{calculators.js → calculators.mjs} +11 -11
  201. package/dist/utils/quote-metadata/calculators.mjs.map +1 -0
  202. package/dist/utils/quote-metadata/include-if-truthy.cjs +21 -0
  203. package/dist/utils/quote-metadata/include-if-truthy.cjs.map +1 -0
  204. package/dist/utils/quote-metadata/{include-if-truthy.d.ts → include-if-truthy.d.cts} +1 -1
  205. package/dist/utils/quote-metadata/include-if-truthy.d.cts.map +1 -0
  206. package/dist/utils/quote-metadata/include-if-truthy.d.mts +9 -0
  207. package/dist/utils/quote-metadata/include-if-truthy.d.mts.map +1 -0
  208. package/dist/utils/quote-metadata/{include-if-truthy.js → include-if-truthy.mjs} +1 -1
  209. package/dist/utils/quote-metadata/include-if-truthy.mjs.map +1 -0
  210. package/dist/utils/quote-metadata/merge.cjs +60 -0
  211. package/dist/utils/quote-metadata/merge.cjs.map +1 -0
  212. package/dist/utils/quote-metadata/{merge.d.ts → merge.d.cts} +5 -5
  213. package/dist/utils/quote-metadata/merge.d.cts.map +1 -0
  214. package/dist/utils/quote-metadata/merge.d.mts +15 -0
  215. package/dist/utils/quote-metadata/merge.d.mts.map +1 -0
  216. package/dist/utils/quote-metadata/{merge.js → merge.mjs} +7 -6
  217. package/dist/utils/quote-metadata/merge.mjs.map +1 -0
  218. package/dist/utils/quote-metadata/to-currency-values.cjs +62 -0
  219. package/dist/utils/quote-metadata/to-currency-values.cjs.map +1 -0
  220. package/dist/utils/quote-metadata/{to-currency-values.d.ts → to-currency-values.d.cts} +4 -4
  221. package/dist/utils/quote-metadata/to-currency-values.d.cts.map +1 -0
  222. package/dist/utils/quote-metadata/to-currency-values.d.mts +12 -0
  223. package/dist/utils/quote-metadata/to-currency-values.d.mts.map +1 -0
  224. package/dist/utils/quote-metadata/{to-currency-values.js → to-currency-values.mjs} +3 -2
  225. package/dist/utils/quote-metadata/to-currency-values.mjs.map +1 -0
  226. package/dist/utils/quote-metadata/to-normalized-amounts.cjs +38 -0
  227. package/dist/utils/quote-metadata/to-normalized-amounts.cjs.map +1 -0
  228. package/dist/utils/quote-metadata/{to-normalized-amounts.d.ts → to-normalized-amounts.d.cts} +3 -3
  229. package/dist/utils/quote-metadata/to-normalized-amounts.d.cts.map +1 -0
  230. package/dist/utils/quote-metadata/to-normalized-amounts.d.mts +10 -0
  231. package/dist/utils/quote-metadata/to-normalized-amounts.d.mts.map +1 -0
  232. package/dist/utils/quote-metadata/{to-normalized-amounts.js → to-normalized-amounts.mjs} +3 -3
  233. package/dist/utils/quote-metadata/to-normalized-amounts.mjs.map +1 -0
  234. package/dist/utils/quote-metadata/to-quote-metadata-v1.cjs +94 -0
  235. package/dist/utils/quote-metadata/to-quote-metadata-v1.cjs.map +1 -0
  236. package/dist/utils/quote-metadata/{to-quote-metadata-v1.d.ts → to-quote-metadata-v1.d.cts} +6 -6
  237. package/dist/utils/quote-metadata/to-quote-metadata-v1.d.cts.map +1 -0
  238. package/dist/utils/quote-metadata/to-quote-metadata-v1.d.mts +15 -0
  239. package/dist/utils/quote-metadata/to-quote-metadata-v1.d.mts.map +1 -0
  240. package/dist/utils/quote-metadata/{to-quote-metadata-v1.js → to-quote-metadata-v1.mjs} +7 -6
  241. package/dist/utils/quote-metadata/to-quote-metadata-v1.mjs.map +1 -0
  242. package/dist/utils/quote-metadata/to-quote-metadata-v2.cjs +84 -0
  243. package/dist/utils/quote-metadata/to-quote-metadata-v2.cjs.map +1 -0
  244. package/dist/utils/quote-metadata/{to-quote-metadata-v2.d.ts → to-quote-metadata-v2.d.cts} +4 -4
  245. package/dist/utils/quote-metadata/to-quote-metadata-v2.d.cts.map +1 -0
  246. package/dist/utils/quote-metadata/to-quote-metadata-v2.d.mts +12 -0
  247. package/dist/utils/quote-metadata/to-quote-metadata-v2.d.mts.map +1 -0
  248. package/dist/utils/quote-metadata/{to-quote-metadata-v2.js → to-quote-metadata-v2.mjs} +6 -6
  249. package/dist/utils/quote-metadata/to-quote-metadata-v2.mjs.map +1 -0
  250. package/dist/utils/quote-metadata/types.cjs +19 -0
  251. package/dist/utils/quote-metadata/types.cjs.map +1 -0
  252. package/dist/utils/quote-metadata/{types.d.ts → types.d.cts} +5 -5
  253. package/dist/utils/quote-metadata/types.d.cts.map +1 -0
  254. package/dist/utils/quote-metadata/types.d.mts +108 -0
  255. package/dist/utils/quote-metadata/types.d.mts.map +1 -0
  256. package/dist/utils/quote-metadata/{types.js → types.mjs} +1 -1
  257. package/dist/utils/quote-metadata/types.mjs.map +1 -0
  258. package/dist/utils/slippage.cjs +49 -0
  259. package/dist/utils/slippage.cjs.map +1 -0
  260. package/dist/utils/{slippage.d.ts → slippage.d.cts} +2 -2
  261. package/dist/utils/slippage.d.cts.map +1 -0
  262. package/dist/utils/slippage.d.mts +23 -0
  263. package/dist/utils/slippage.d.mts.map +1 -0
  264. package/dist/utils/{slippage.js → slippage.mjs} +2 -2
  265. package/dist/utils/slippage.mjs.map +1 -0
  266. package/dist/utils/snaps.cjs +76 -0
  267. package/dist/utils/snaps.cjs.map +1 -0
  268. package/dist/utils/{snaps.d.ts → snaps.d.cts} +5 -5
  269. package/dist/utils/snaps.d.cts.map +1 -0
  270. package/dist/utils/snaps.d.mts +59 -0
  271. package/dist/utils/snaps.d.mts.map +1 -0
  272. package/dist/utils/{snaps.js → snaps.mjs} +4 -4
  273. package/dist/utils/snaps.mjs.map +1 -0
  274. package/dist/utils/sort-quotes.cjs +16 -0
  275. package/dist/utils/sort-quotes.cjs.map +1 -0
  276. package/dist/utils/sort-quotes.d.cts +4 -0
  277. package/dist/utils/sort-quotes.d.cts.map +1 -0
  278. package/dist/utils/sort-quotes.d.mts +4 -0
  279. package/dist/utils/sort-quotes.d.mts.map +1 -0
  280. package/dist/utils/{sort-quotes.js → sort-quotes.mjs} +2 -2
  281. package/dist/utils/sort-quotes.mjs.map +1 -0
  282. package/dist/utils/struct-error.cjs +16 -0
  283. package/dist/utils/struct-error.cjs.map +1 -0
  284. package/dist/utils/{struct-error.d.ts → struct-error.d.cts} +2 -2
  285. package/dist/utils/struct-error.d.cts.map +1 -0
  286. package/dist/utils/struct-error.d.mts +11 -0
  287. package/dist/utils/struct-error.d.mts.map +1 -0
  288. package/dist/utils/{struct-error.js → struct-error.mjs} +1 -1
  289. package/dist/utils/struct-error.mjs.map +1 -0
  290. package/dist/utils/swaps.cjs +73 -0
  291. package/dist/utils/swaps.cjs.map +1 -0
  292. package/dist/utils/{swaps.d.ts → swaps.d.cts} +3 -3
  293. package/dist/utils/swaps.d.cts.map +1 -0
  294. package/dist/utils/swaps.d.mts +37 -0
  295. package/dist/utils/swaps.d.mts.map +1 -0
  296. package/dist/utils/{swaps.js → swaps.mjs} +5 -5
  297. package/dist/utils/swaps.mjs.map +1 -0
  298. package/dist/utils/trade-utils.cjs +39 -0
  299. package/dist/utils/trade-utils.cjs.map +1 -0
  300. package/dist/utils/{trade-utils.d.ts → trade-utils.d.cts} +2 -2
  301. package/dist/utils/trade-utils.d.cts.map +1 -0
  302. package/dist/utils/trade-utils.d.mts +9 -0
  303. package/dist/utils/trade-utils.d.mts.map +1 -0
  304. package/dist/utils/{trade-utils.js → trade-utils.mjs} +2 -2
  305. package/dist/utils/trade-utils.mjs.map +1 -0
  306. package/dist/validators/amount-and-asset.cjs +27 -0
  307. package/dist/validators/amount-and-asset.cjs.map +1 -0
  308. package/dist/validators/{amount-and-asset.d.ts → amount-and-asset.d.cts} +8 -8
  309. package/dist/validators/amount-and-asset.d.cts.map +1 -0
  310. package/dist/validators/amount-and-asset.d.mts +62 -0
  311. package/dist/validators/amount-and-asset.d.mts.map +1 -0
  312. package/dist/validators/{amount-and-asset.js → amount-and-asset.mjs} +4 -4
  313. package/dist/validators/amount-and-asset.mjs.map +1 -0
  314. package/dist/validators/batch-sell.cjs +39 -0
  315. package/dist/validators/batch-sell.cjs.map +1 -0
  316. package/dist/validators/{batch-sell.d.ts → batch-sell.d.cts} +39 -8
  317. package/dist/validators/batch-sell.d.cts.map +1 -0
  318. package/dist/validators/batch-sell.d.mts +79 -0
  319. package/dist/validators/batch-sell.d.mts.map +1 -0
  320. package/dist/validators/{batch-sell.js → batch-sell.mjs} +7 -7
  321. package/dist/validators/batch-sell.mjs.map +1 -0
  322. package/dist/validators/bridge-asset.cjs +106 -0
  323. package/dist/validators/bridge-asset.cjs.map +1 -0
  324. package/dist/validators/{bridge-asset.d.ts → bridge-asset.d.cts} +42 -10
  325. package/dist/validators/bridge-asset.d.cts.map +1 -0
  326. package/dist/validators/bridge-asset.d.mts +146 -0
  327. package/dist/validators/bridge-asset.d.mts.map +1 -0
  328. package/dist/validators/{bridge-asset.js → bridge-asset.mjs} +3 -3
  329. package/dist/validators/bridge-asset.mjs.map +1 -0
  330. package/dist/validators/feature-flags.cjs +110 -0
  331. package/dist/validators/feature-flags.cjs.map +1 -0
  332. package/dist/validators/{feature-flags.d.ts → feature-flags.d.cts} +60 -16
  333. package/dist/validators/feature-flags.d.cts.map +1 -0
  334. package/dist/validators/feature-flags.d.mts +264 -0
  335. package/dist/validators/feature-flags.d.mts.map +1 -0
  336. package/dist/validators/{feature-flags.js → feature-flags.mjs} +3 -3
  337. package/dist/validators/feature-flags.mjs.map +1 -0
  338. package/dist/validators/intent.cjs +122 -0
  339. package/dist/validators/intent.cjs.map +1 -0
  340. package/dist/validators/{intent.d.ts → intent.d.cts} +12 -12
  341. package/dist/validators/intent.d.cts.map +1 -0
  342. package/dist/validators/intent.d.mts +231 -0
  343. package/dist/validators/intent.d.mts.map +1 -0
  344. package/dist/validators/{intent.js → intent.mjs} +4 -4
  345. package/dist/validators/intent.mjs.map +1 -0
  346. package/dist/validators/number.cjs +8 -0
  347. package/dist/validators/number.cjs.map +1 -0
  348. package/dist/validators/{number.d.ts → number.d.cts} +1 -1
  349. package/dist/validators/number.d.cts.map +1 -0
  350. package/dist/validators/number.d.mts +4 -0
  351. package/dist/validators/number.d.mts.map +1 -0
  352. package/dist/validators/{number.js → number.mjs} +2 -2
  353. package/dist/validators/number.mjs.map +1 -0
  354. package/dist/validators/quote-request.cjs +57 -0
  355. package/dist/validators/quote-request.cjs.map +1 -0
  356. package/dist/validators/{quote-request.d.ts → quote-request.d.cts} +2 -2
  357. package/dist/validators/quote-request.d.cts.map +1 -0
  358. package/dist/validators/quote-request.d.mts +4 -0
  359. package/dist/validators/quote-request.d.mts.map +1 -0
  360. package/dist/validators/{quote-request.js → quote-request.mjs} +2 -2
  361. package/dist/validators/quote-request.mjs.map +1 -0
  362. package/dist/validators/quote-response-v1.cjs +31 -0
  363. package/dist/validators/quote-response-v1.cjs.map +1 -0
  364. package/dist/validators/{quote-response-v1.d.ts → quote-response-v1.d.cts} +335 -128
  365. package/dist/validators/quote-response-v1.d.cts.map +1 -0
  366. package/dist/validators/quote-response-v1.d.mts +661 -0
  367. package/dist/validators/quote-response-v1.d.mts.map +1 -0
  368. package/dist/validators/{quote-response-v1.js → quote-response-v1.mjs} +7 -7
  369. package/dist/validators/quote-response-v1.mjs.map +1 -0
  370. package/dist/validators/quote-response.cjs +129 -0
  371. package/dist/validators/quote-response.cjs.map +1 -0
  372. package/dist/validators/{quote-response.d.ts → quote-response.d.cts} +414 -414
  373. package/dist/validators/{quote-response.d.ts.map → quote-response.d.cts.map} +1 -1
  374. package/dist/validators/quote-response.d.mts +1973 -0
  375. package/dist/validators/quote-response.d.mts.map +1 -0
  376. package/dist/validators/{quote-response.js → quote-response.mjs} +7 -7
  377. package/dist/validators/quote-response.mjs.map +1 -0
  378. package/dist/validators/quote-stream-complete.cjs +29 -0
  379. package/dist/validators/quote-stream-complete.cjs.map +1 -0
  380. package/dist/validators/{quote-stream-complete.d.ts → quote-stream-complete.d.cts} +11 -7
  381. package/dist/validators/quote-stream-complete.d.cts.map +1 -0
  382. package/dist/validators/quote-stream-complete.d.mts +39 -0
  383. package/dist/validators/quote-stream-complete.d.mts.map +1 -0
  384. package/dist/validators/{quote-stream-complete.js → quote-stream-complete.mjs} +2 -2
  385. package/dist/validators/quote-stream-complete.mjs.map +1 -0
  386. package/dist/validators/quote.cjs +164 -0
  387. package/dist/validators/quote.cjs.map +1 -0
  388. package/dist/validators/{quote.d.ts → quote.d.cts} +132 -132
  389. package/dist/validators/quote.d.cts.map +1 -0
  390. package/dist/validators/quote.d.mts +588 -0
  391. package/dist/validators/quote.d.mts.map +1 -0
  392. package/dist/validators/{quote.js → quote.mjs} +7 -7
  393. package/dist/validators/quote.mjs.map +1 -0
  394. package/dist/validators/step.cjs +26 -0
  395. package/dist/validators/step.cjs.map +1 -0
  396. package/dist/validators/{step.d.ts → step.d.cts} +56 -56
  397. package/dist/validators/step.d.cts.map +1 -0
  398. package/dist/validators/step.d.mts +319 -0
  399. package/dist/validators/step.d.mts.map +1 -0
  400. package/dist/validators/{step.js → step.mjs} +4 -4
  401. package/dist/validators/step.mjs.map +1 -0
  402. package/dist/validators/token-feature.cjs +22 -0
  403. package/dist/validators/token-feature.cjs.map +1 -0
  404. package/dist/validators/{token-feature.d.ts → token-feature.d.cts} +9 -6
  405. package/dist/validators/token-feature.d.cts.map +1 -0
  406. package/dist/validators/token-feature.d.mts +26 -0
  407. package/dist/validators/token-feature.d.mts.map +1 -0
  408. package/dist/validators/{token-feature.js → token-feature.mjs} +2 -2
  409. package/dist/validators/token-feature.mjs.map +1 -0
  410. package/dist/validators/trade.cjs +94 -0
  411. package/dist/validators/trade.cjs.map +1 -0
  412. package/dist/validators/{trade.d.ts → trade.d.cts} +31 -7
  413. package/dist/validators/trade.d.cts.map +1 -0
  414. package/dist/validators/trade.d.mts +121 -0
  415. package/dist/validators/trade.d.mts.map +1 -0
  416. package/dist/validators/{trade.js → trade.mjs} +2 -2
  417. package/dist/validators/trade.mjs.map +1 -0
  418. package/package.json +17 -13
  419. package/dist/bridge-controller-method-action-types.d.ts.map +0 -1
  420. package/dist/bridge-controller-method-action-types.js.map +0 -1
  421. package/dist/bridge-controller.d.ts.map +0 -1
  422. package/dist/bridge-controller.js +0 -1029
  423. package/dist/bridge-controller.js.map +0 -1
  424. package/dist/coercers/quote-response-v1-to-v2.d.ts.map +0 -1
  425. package/dist/coercers/quote-response-v1-to-v2.js.map +0 -1
  426. package/dist/coercers/quote-response-v2-to-v1.d.ts.map +0 -1
  427. package/dist/coercers/quote-response-v2-to-v1.js.map +0 -1
  428. package/dist/constants/bridge.d.ts.map +0 -1
  429. package/dist/constants/bridge.js.map +0 -1
  430. package/dist/constants/chains.d.ts.map +0 -1
  431. package/dist/constants/chains.js.map +0 -1
  432. package/dist/constants/swaps.d.ts.map +0 -1
  433. package/dist/constants/swaps.js.map +0 -1
  434. package/dist/constants/tokens.d.ts.map +0 -1
  435. package/dist/constants/tokens.js.map +0 -1
  436. package/dist/constants/traces.d.ts.map +0 -1
  437. package/dist/constants/traces.js.map +0 -1
  438. package/dist/index.d.ts.map +0 -1
  439. package/dist/index.js +0 -47
  440. package/dist/index.js.map +0 -1
  441. package/dist/selectors.d.ts.map +0 -1
  442. package/dist/selectors.js.map +0 -1
  443. package/dist/types.d.ts.map +0 -1
  444. package/dist/types.js.map +0 -1
  445. package/dist/utils/assets.d.ts.map +0 -1
  446. package/dist/utils/assets.js.map +0 -1
  447. package/dist/utils/balance.d.ts.map +0 -1
  448. package/dist/utils/balance.js.map +0 -1
  449. package/dist/utils/bridge.d.ts.map +0 -1
  450. package/dist/utils/bridge.js.map +0 -1
  451. package/dist/utils/caip-formatters.d.ts.map +0 -1
  452. package/dist/utils/caip-formatters.js.map +0 -1
  453. package/dist/utils/feature-flags.d.ts.map +0 -1
  454. package/dist/utils/feature-flags.js.map +0 -1
  455. package/dist/utils/fetch-server-events.d.ts.map +0 -1
  456. package/dist/utils/fetch-server-events.js.map +0 -1
  457. package/dist/utils/fetch.d.ts.map +0 -1
  458. package/dist/utils/fetch.js.map +0 -1
  459. package/dist/utils/metrics/constants.d.ts.map +0 -1
  460. package/dist/utils/metrics/constants.js.map +0 -1
  461. package/dist/utils/metrics/properties.d.ts.map +0 -1
  462. package/dist/utils/metrics/properties.js.map +0 -1
  463. package/dist/utils/metrics/types.d.ts.map +0 -1
  464. package/dist/utils/metrics/types.js +0 -2
  465. package/dist/utils/metrics/types.js.map +0 -1
  466. package/dist/utils/number-formatters.d.ts.map +0 -1
  467. package/dist/utils/number-formatters.js.map +0 -1
  468. package/dist/utils/quote-fees.d.ts +0 -17
  469. package/dist/utils/quote-fees.d.ts.map +0 -1
  470. package/dist/utils/quote-fees.js.map +0 -1
  471. package/dist/utils/quote-metadata/calculators.d.ts.map +0 -1
  472. package/dist/utils/quote-metadata/calculators.js.map +0 -1
  473. package/dist/utils/quote-metadata/include-if-truthy.d.ts.map +0 -1
  474. package/dist/utils/quote-metadata/include-if-truthy.js.map +0 -1
  475. package/dist/utils/quote-metadata/merge.d.ts.map +0 -1
  476. package/dist/utils/quote-metadata/merge.js.map +0 -1
  477. package/dist/utils/quote-metadata/to-currency-values.d.ts.map +0 -1
  478. package/dist/utils/quote-metadata/to-currency-values.js.map +0 -1
  479. package/dist/utils/quote-metadata/to-normalized-amounts.d.ts.map +0 -1
  480. package/dist/utils/quote-metadata/to-normalized-amounts.js.map +0 -1
  481. package/dist/utils/quote-metadata/to-quote-metadata-v1.d.ts.map +0 -1
  482. package/dist/utils/quote-metadata/to-quote-metadata-v1.js.map +0 -1
  483. package/dist/utils/quote-metadata/to-quote-metadata-v2.d.ts.map +0 -1
  484. package/dist/utils/quote-metadata/to-quote-metadata-v2.js.map +0 -1
  485. package/dist/utils/quote-metadata/types.d.ts.map +0 -1
  486. package/dist/utils/quote-metadata/types.js.map +0 -1
  487. package/dist/utils/slippage.d.ts.map +0 -1
  488. package/dist/utils/slippage.js.map +0 -1
  489. package/dist/utils/snaps.d.ts.map +0 -1
  490. package/dist/utils/snaps.js.map +0 -1
  491. package/dist/utils/sort-quotes.d.ts +0 -4
  492. package/dist/utils/sort-quotes.d.ts.map +0 -1
  493. package/dist/utils/sort-quotes.js.map +0 -1
  494. package/dist/utils/struct-error.d.ts.map +0 -1
  495. package/dist/utils/struct-error.js.map +0 -1
  496. package/dist/utils/swaps.d.ts.map +0 -1
  497. package/dist/utils/swaps.js.map +0 -1
  498. package/dist/utils/trade-utils.d.ts.map +0 -1
  499. package/dist/utils/trade-utils.js.map +0 -1
  500. package/dist/validators/amount-and-asset.d.ts.map +0 -1
  501. package/dist/validators/amount-and-asset.js.map +0 -1
  502. package/dist/validators/batch-sell.d.ts.map +0 -1
  503. package/dist/validators/batch-sell.js.map +0 -1
  504. package/dist/validators/bridge-asset.d.ts.map +0 -1
  505. package/dist/validators/bridge-asset.js.map +0 -1
  506. package/dist/validators/feature-flags.d.ts.map +0 -1
  507. package/dist/validators/feature-flags.js.map +0 -1
  508. package/dist/validators/intent.d.ts.map +0 -1
  509. package/dist/validators/intent.js.map +0 -1
  510. package/dist/validators/number.d.ts.map +0 -1
  511. package/dist/validators/number.js.map +0 -1
  512. package/dist/validators/quote-request.d.ts.map +0 -1
  513. package/dist/validators/quote-request.js.map +0 -1
  514. package/dist/validators/quote-response-v1.d.ts.map +0 -1
  515. package/dist/validators/quote-response-v1.js.map +0 -1
  516. package/dist/validators/quote-response.js.map +0 -1
  517. package/dist/validators/quote-stream-complete.d.ts.map +0 -1
  518. package/dist/validators/quote-stream-complete.js.map +0 -1
  519. package/dist/validators/quote.d.ts.map +0 -1
  520. package/dist/validators/quote.js.map +0 -1
  521. package/dist/validators/step.d.ts.map +0 -1
  522. package/dist/validators/step.js.map +0 -1
  523. package/dist/validators/token-feature.d.ts.map +0 -1
  524. package/dist/validators/token-feature.js.map +0 -1
  525. package/dist/validators/trade.d.ts.map +0 -1
  526. package/dist/validators/trade.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"selectors.js","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { getAddress } from '@ethersproject/address';\nimport type {\n CurrencyRateState,\n MultichainAssetsRatesControllerState,\n TokenRatesControllerState,\n} from '@metamask/assets-controllers';\nimport type {\n GasFeeEstimates,\n GasFeeEstimatesByChainId,\n} from '@metamask/gas-fee-controller';\nimport type { CaipAssetType } from '@metamask/utils';\nimport { isStrictHexString, parseCaipAssetType } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\nimport { orderBy } from 'lodash-es';\nimport {\n createSelector as createSelector_,\n createStructuredSelector as createStructuredSelector_,\n} from 'reselect';\n\nimport { BRIDGE_PREFERRED_GAS_ESTIMATE } from './constants/bridge.js';\nimport type {\n BridgeControllerState,\n DeepPartial,\n ExchangeRate,\n} from './types.js';\nimport { RequestStatus, SortOrder } from './types.js';\nimport {\n getNativeAssetForChainId,\n isNativeAddress,\n isNonEvmChainId,\n} from './utils/bridge.js';\nimport {\n formatAddressToAssetId,\n formatAddressToCaipReference,\n formatChainIdToCaip,\n formatChainIdToHex,\n} from './utils/caip-formatters.js';\nimport { processFeatureFlags } from './utils/feature-flags.js';\nimport { sumAmounts } from './utils/number-formatters.js';\nimport {\n calcBatchFees,\n calcQuoteMetadata,\n} from './utils/quote-metadata/calculators.js';\nimport { mergeQuoteMetadata } from './utils/quote-metadata/merge.js';\nimport { toCurrencyValues } from './utils/quote-metadata/to-currency-values.js';\nimport type { QuoteMetadata } from './utils/quote-metadata/types.js';\nimport { QuoteMetadataMigrationPhase } from './utils/quote-metadata/types.js';\nimport { getDefaultSlippagePercentage } from './utils/slippage.js';\nimport type { QuoteResponse } from './validators/quote-response.js';\n\nconst EMPTY_QUOTE_METADATA: never[] = [];\n\n/**\n * The controller states that provide exchange rates\n */\ntype ExchangeRateControllerState = MultichainAssetsRatesControllerState &\n TokenRatesControllerState &\n CurrencyRateState &\n Pick<BridgeControllerState, 'assetExchangeRates'>;\n/**\n * The state of the bridge controller and all its dependency controllers\n */\ntype RemoteFeatureFlagControllerState = {\n remoteFeatureFlags: {\n bridgeConfig: unknown;\n };\n};\n\n/**\n * Minimal shape required for exchange-rate lookups (used by getExchangeRateByChainIdAndAddress).\n * Uses types from assets-controllers; marketData and conversionRates also accept the bridge format.\n */\nexport type ExchangeRateSourcesForLookup = Pick<\n BridgeControllerState,\n 'assetExchangeRates'\n> &\n Partial<Pick<CurrencyRateState, 'currencyRates'>> & {\n marketData?:\n | TokenRatesControllerState['marketData']\n | Record<string, Record<string, { price?: number; currency?: string }>>;\n conversionRates?:\n | MultichainAssetsRatesControllerState['conversionRates']\n | Record<string, { rate: string }>;\n };\n\nexport type BridgeAppState = BridgeControllerState & {\n gasFeeEstimatesByChainId: GasFeeEstimatesByChainId;\n} & ExchangeRateControllerState & {\n participateInMetaMetrics: boolean;\n } & RemoteFeatureFlagControllerState;\n/**\n * Creates a structured selector for the bridge controller\n */\nconst createStructuredBridgeSelector =\n createStructuredSelector_.withTypes<BridgeAppState>();\n/**\n * Creates a typed selector for the bridge controller\n */\nconst createBridgeSelector = createSelector_.withTypes<BridgeAppState>();\n/**\n * Required parameters that clients must provide for the bridge quotes selector\n */\ntype BridgeQuotesClientParams = {\n sortOrder: SortOrder;\n selectedQuote: (QuoteResponse & QuoteMetadata) | null;\n migrationPhase: QuoteMetadataMigrationPhase;\n};\n\ntype EvmTokenExchangeRate = { price?: number; currency?: string };\ntype EvmTokenExchangeRates = Record<string, EvmTokenExchangeRate>;\n\nconst createFeatureFlagsSelector =\n createSelector_.withTypes<RemoteFeatureFlagControllerState>();\n\n/**\n * Selects the bridge feature flags\n *\n * @param state - The state of the bridge controller\n * @returns The bridge feature flags\n *\n * @example\n * ```ts\n * const featureFlags = useSelector(state => selectBridgeFeatureFlags(state));\n *\n * Or\n *\n * export const selectBridgeFeatureFlags = createSelector(\n * selectRemoteFeatureFlags,\n * (remoteFeatureFlags) =>\n * selectBridgeFeatureFlagsBase({\n * bridgeConfig: remoteFeatureFlags.bridgeConfig,\n * }),\n * );\n * ```\n */\nexport const selectBridgeFeatureFlags = createFeatureFlagsSelector(\n [(state) => state.remoteFeatureFlags.bridgeConfig],\n (bridgeConfig: unknown) => processFeatureFlags(bridgeConfig),\n);\n\nconst getEvmTokenExchangeRateForAddress = (\n evmTokenExchangeRates: EvmTokenExchangeRates | undefined,\n address: string,\n): EvmTokenExchangeRate | null | undefined => {\n try {\n return isStrictHexString(address)\n ? (evmTokenExchangeRates?.[getAddress(address)] ??\n evmTokenExchangeRates?.[address.toLowerCase()])\n : null;\n } catch {\n return null;\n }\n};\n\n/**\n * Selects the asset exchange rate for a given chain and address\n *\n * @param exchangeRateSources - the controller states containing the exchange rates\n * @param assetId - the assetId to get the exchange rate for\n * @returns The asset exchange rate for the given assetId\n */\nexport const selectExchangeRateByAssetId = (\n exchangeRateSources: ExchangeRateSourcesForLookup,\n assetId?: CaipAssetType,\n): ExchangeRate => {\n if (!assetId) {\n return {};\n }\n\n const { assetExchangeRates, currencyRates, marketData, conversionRates } =\n exchangeRateSources;\n\n // If the asset exchange rate is available in the bridge controller, use it\n // This is defined if the token's rate is not available from the assets controllers\n const bridgeControllerRate =\n assetExchangeRates?.[assetId.toLowerCase() as CaipAssetType] ??\n assetExchangeRates?.[assetId];\n if (\n bridgeControllerRate?.exchangeRate &&\n bridgeControllerRate?.usdExchangeRate\n ) {\n return bridgeControllerRate;\n }\n\n const { chainId } = parseCaipAssetType(assetId);\n\n // If the chain is a non-EVM chain, use the conversion rate from the multichain assets controller\n if (isNonEvmChainId(chainId)) {\n const conversionRatesByKey = conversionRates as\n | Record<string, { rate?: string }>\n | undefined;\n const multichainAssetExchangeRate = conversionRatesByKey?.[assetId];\n const rate = multichainAssetExchangeRate?.rate;\n if (rate) {\n // The multichain rate is denominated in the user's selected currency.\n // To get a USD rate, find the user's-currency-to-USD conversion factor from any EVM native currency rate.\n const nativeCurrencyRate =\n currencyRates &&\n Object.values(currencyRates).find(\n (rateEntry) =>\n rateEntry?.conversionRate !== undefined &&\n rateEntry?.conversionRate !== null &&\n rateEntry?.usdConversionRate !== undefined &&\n rateEntry?.usdConversionRate !== null,\n );\n const usersCurrencyToUsdRate =\n nativeCurrencyRate?.conversionRate !== undefined &&\n nativeCurrencyRate?.conversionRate !== null &&\n nativeCurrencyRate?.usdConversionRate !== undefined &&\n nativeCurrencyRate?.usdConversionRate !== null\n ? new BigNumber(nativeCurrencyRate.usdConversionRate).div(\n nativeCurrencyRate.conversionRate,\n )\n : undefined;\n const usdExchangeRate = usersCurrencyToUsdRate\n ? new BigNumber(rate).times(usersCurrencyToUsdRate).toString()\n : undefined;\n return {\n exchangeRate: rate,\n usdExchangeRate,\n };\n }\n return {};\n }\n\n const address = formatAddressToCaipReference(assetId);\n\n // If the chain is an EVM chain, use the conversion rate from the currency rates controller\n if (isNativeAddress(address)) {\n const { symbol } = getNativeAssetForChainId(chainId);\n const evmNativeExchangeRate = currencyRates?.[symbol];\n if (evmNativeExchangeRate) {\n return {\n exchangeRate: evmNativeExchangeRate.conversionRate?.toString(),\n usdExchangeRate: evmNativeExchangeRate.usdConversionRate?.toString(),\n };\n }\n return {};\n }\n // If the chain is an EVM chain and the asset is not the native asset, use the conversion rate from the token rates controller\n if (!isNonEvmChainId(chainId)) {\n const marketDataByChain =\n (marketData as Record<string, EvmTokenExchangeRates> | undefined) ?? {};\n const evmTokenExchangeRates =\n marketDataByChain[formatChainIdToHex(chainId)];\n const evmTokenExchangeRateForAddress = getEvmTokenExchangeRateForAddress(\n evmTokenExchangeRates,\n address,\n );\n const currencyKey = evmTokenExchangeRateForAddress?.currency;\n const nativeCurrencyRate =\n currencyKey !== undefined && currencyKey !== null\n ? currencyRates?.[currencyKey]\n : undefined;\n const price = evmTokenExchangeRateForAddress?.price;\n // A missing or zero price is not a usable exchange rate. Returning a \"0\"\n // rate here is harmful in two ways: it surfaces a $0 fiat value, and it\n // makes `selectIsAssetExchangeRateInState` treat the token as already\n // priced (the non-empty \"0\" string is truthy), which prevents the\n // controller from fetching the real rate. Fall through to `{}` instead so\n // the rate gets fetched from the price API.\n if (price && nativeCurrencyRate) {\n return {\n exchangeRate: new BigNumber(price)\n .multipliedBy(nativeCurrencyRate.conversionRate ?? 0)\n .toString(),\n usdExchangeRate: new BigNumber(price)\n .multipliedBy(nativeCurrencyRate.usdConversionRate ?? 0)\n .toString(),\n };\n }\n }\n\n return {};\n};\n\n/**\n * Checks whether an exchange rate is available for a given assetId\n *\n * @param state The state of the bridge controller and its dependency controllers\n * @param assetId The assetId to check\n * @returns Whether an exchange rate is available for the given chain and address\n */\nexport const selectIsAssetExchangeRateInState = (\n state: ExchangeRateSourcesForLookup,\n assetId?: CaipAssetType,\n) =>\n Boolean(selectExchangeRateByAssetId(state, assetId)?.exchangeRate) &&\n Boolean(selectExchangeRateByAssetId(state, assetId)?.usdExchangeRate);\n\n/**\n * Selects the gas fee estimates from the gas fee controller. All potential networks\n * support EIP1559 gas fees so assume that gasFeeEstimates is of type GasFeeEstimates\n *\n * @param state - The state of the bridge controller and its dependency controllers\n * @param state.gasFeeEstimatesByChainId - gasEstimates by Hex ChainId\n * @param state.quotes - Fetched bridge/swap quotes\n * @returns The gas fee estimates in decGWEI\n */\nconst selectBridgeFeesPerGas = createBridgeSelector(\n [\n (state) => state.gasFeeEstimatesByChainId,\n (state) => state.quotes?.[0]?.chainId,\n ],\n (gasFeeEstimatesByChainId, srcChainId) => {\n if (!srcChainId) {\n return null;\n }\n if (isNonEvmChainId(srcChainId)) {\n return null;\n }\n // @ts-expect-error - all supported networks use this type of estimates\n const gasFeeEstimates: GasFeeEstimates | undefined =\n gasFeeEstimatesByChainId?.[\n formatChainIdToHex(srcChainId) as keyof typeof gasFeeEstimatesByChainId\n ]?.gasFeeEstimates;\n if (!gasFeeEstimates) {\n return null;\n }\n return {\n estimatedBaseFeeInDecGwei: gasFeeEstimates.estimatedBaseFee,\n feePerGasInDecGwei:\n gasFeeEstimates[BRIDGE_PREFERRED_GAS_ESTIMATE]?.suggestedMaxFeePerGas,\n maxFeePerGasInDecGwei: gasFeeEstimates.high?.suggestedMaxFeePerGas,\n };\n },\n);\n\nconst selectExchangeRateSources = createStructuredBridgeSelector({\n currencyRates: (state) => state.currencyRates,\n marketData: (state) => state.marketData,\n conversionRates: (state) => state.conversionRates,\n assetExchangeRates: (state) => state.assetExchangeRates,\n});\n\n// Selects metadata for cross-chain swap quotes\nconst selectMetadata = createBridgeSelector(\n [\n ({ quotes }) => quotes,\n selectBridgeFeesPerGas,\n selectExchangeRateSources,\n ({ quoteRequest }) => quoteRequest,\n (_, { migrationPhase }: BridgeQuotesClientParams) => migrationPhase,\n ],\n (\n quotes,\n bridgeFeesPerGas,\n exchangeRateSources,\n quoteRequest,\n migrationPhase,\n ) => {\n // Return early if the migration phase is V2Only because we don't need to calculate metadata\n if (migrationPhase === QuoteMetadataMigrationPhase.V2Only) {\n return EMPTY_QUOTE_METADATA;\n }\n const { destTokenAddress, srcChainId, destChainId } = quoteRequest[0] ?? {};\n\n return quotes.map((quote) =>\n calcQuoteMetadata(quote, {\n srcTokenExchangeRate: selectExchangeRateByAssetId(\n exchangeRateSources,\n quote.quote.src.asset.assetId,\n ),\n bridgeFeesPerGas,\n destTokenExchangeRate: selectExchangeRateByAssetId(\n exchangeRateSources,\n quote.quote.dest.asset.assetId ??\n formatAddressToAssetId(\n destTokenAddress ?? quote.quote.dest.asset.assetId,\n destChainId,\n ),\n ),\n nativeExchangeRate: selectExchangeRateByAssetId(\n exchangeRateSources,\n getNativeAssetForChainId(srcChainId ?? quote.chainId)?.assetId,\n ),\n }),\n );\n },\n);\n\n/**\n * Selects the USD to fiat exchange rate based on the native asset's price\n *\n * @param options - The options for the selector\n * @param options.quoteRequest - The quote request\n * @returns The USD to fiat exchange rate in string format\n */\nconst selectUsdToCurrencyExchangeRate = createBridgeSelector(\n [\n selectExchangeRateSources,\n ({ quoteRequest }) =>\n getNativeAssetForChainId(quoteRequest[0]?.srcChainId ?? 1)?.assetId,\n ],\n (exchangeRateSources, nativeAssetId) => {\n const exchangeRate = selectExchangeRateByAssetId(\n exchangeRateSources,\n nativeAssetId,\n );\n return exchangeRate?.exchangeRate && exchangeRate?.usdExchangeRate\n ? new BigNumber(exchangeRate.exchangeRate)\n .div(exchangeRate.usdExchangeRate)\n .toFixed()\n : undefined;\n },\n);\n\nconst selectCurrencyValues = createBridgeSelector(\n [\n ({ quotes }) => quotes,\n selectUsdToCurrencyExchangeRate,\n (_, { migrationPhase }: BridgeQuotesClientParams) => migrationPhase,\n ],\n (quotes, usdToFiatExchangeRateString, migrationPhase) => {\n if (migrationPhase === QuoteMetadataMigrationPhase.V1Data) {\n return EMPTY_QUOTE_METADATA;\n }\n const usdToFiatExchangeRate = usdToFiatExchangeRateString\n ? new BigNumber(usdToFiatExchangeRateString)\n : undefined;\n return quotes.map((quote) =>\n toCurrencyValues(quote, usdToFiatExchangeRate),\n );\n },\n);\n\n// Selects cross-chain swap quotes including their metadata\nconst selectBridgeQuotesWithMetadata = createBridgeSelector(\n [\n selectMetadata,\n selectCurrencyValues,\n ({ quotes }) => quotes,\n (_, { migrationPhase }: BridgeQuotesClientParams) => migrationPhase,\n ],\n (legacyQuoteMetadata, quoteMetadataV2, quotes, migrationPhase) =>\n quotes.map((quote, index) =>\n mergeQuoteMetadata(\n quote,\n legacyQuoteMetadata[index],\n migrationPhase,\n quoteMetadataV2[index],\n ),\n ),\n);\n\nconst selectSortedBridgeQuotes = createBridgeSelector(\n [\n selectBridgeQuotesWithMetadata,\n (_, { sortOrder }: BridgeQuotesClientParams) => sortOrder,\n ],\n (quotesWithMetadata, sortOrder): (QuoteResponse & QuoteMetadata)[] => {\n switch (sortOrder) {\n case SortOrder.ETA_ASC:\n return orderBy(\n quotesWithMetadata,\n (quote) => quote.estimatedProcessingTimeInSeconds,\n 'asc',\n );\n default:\n if (\n quotesWithMetadata.every(\n (quote) => quote.quote.priceData?.priceImpact?.amount,\n )\n ) {\n return orderBy(\n quotesWithMetadata,\n ({ quote: { priceData } }) =>\n Number(priceData?.priceImpact?.amount),\n 'asc',\n );\n } else if (\n quotesWithMetadata.every(\n (quote) => quote.quote.priceData?.priceImpact?.valueInCurrency,\n )\n ) {\n return orderBy(\n quotesWithMetadata,\n ({ quote: { priceData } }) =>\n Number(priceData?.priceImpact?.valueInCurrency),\n 'asc',\n );\n }\n return orderBy(\n quotesWithMetadata,\n ({ quote }) => Number(quote.dest.amount),\n 'desc',\n );\n }\n },\n);\n\nconst selectRecommendedQuote = createBridgeSelector(\n [selectSortedBridgeQuotes],\n (quotes) => (quotes.length > 0 ? quotes[0] : null),\n);\n\nconst selectActiveQuote = createBridgeSelector(\n [\n selectRecommendedQuote,\n selectSortedBridgeQuotes,\n (_, { selectedQuote }) => selectedQuote?.quote.requestId,\n ],\n (recommendedQuote, sortedQuotes, requestId) =>\n sortedQuotes.find((quote) => quote.quote.requestId === requestId) ??\n recommendedQuote,\n);\n\nconst selectIsQuoteGoingToRefresh = createBridgeSelector(\n [\n selectBridgeFeatureFlags,\n // If at least one quote request is sufficiently funded, continue polling until max refresh count is reached\n (state) =>\n state.quoteRequest.every((quoteRequest) =>\n Boolean(quoteRequest.insufficientBal),\n ),\n (state) => state.quotesRefreshCount,\n ],\n (featureFlags, insufficientBal, quotesRefreshCount) =>\n insufficientBal ? false : featureFlags.maxRefreshCount > quotesRefreshCount,\n);\n\nconst selectQuoteRefreshRate = createBridgeSelector(\n [selectBridgeFeatureFlags, (state) => state.quoteRequest[0]?.srcChainId],\n (featureFlags, srcChainId) =>\n (srcChainId\n ? featureFlags.chains[formatChainIdToCaip(srcChainId)]?.refreshRate\n : featureFlags.refreshRate) ?? featureFlags.refreshRate,\n);\n\nexport const selectIsQuoteExpired = createBridgeSelector(\n [\n selectIsQuoteGoingToRefresh,\n ({ quotesLastFetched }) => quotesLastFetched,\n selectQuoteRefreshRate,\n (_, _ignoredParam, currentTimeInMs: number) => currentTimeInMs,\n ],\n (isQuoteGoingToRefresh, quotesLastFetched, refreshRate, currentTimeInMs) =>\n Boolean(\n !isQuoteGoingToRefresh &&\n quotesLastFetched &&\n currentTimeInMs - quotesLastFetched > refreshRate,\n ),\n);\n\n/**\n * Selects sorted cross-chain swap quotes. By default, the quotes are sorted by cost in ascending order.\n *\n * @param state - The state of the bridge controller and its dependency controllers\n * @param sortOrder - The sort order of the quotes\n * @param selectedQuote - The quote that is currently selected by the user, should be cleared by clients when the req params change\n * @returns The activeQuote, recommendedQuote, sortedQuotes, and other quote fetching metadata\n *\n * @example\n * ```ts\n * const quotes = useSelector(state => selectBridgeQuotes(\n * { ...state.metamask, bridgeConfig: remoteFeatureFlags.bridgeConfig },\n * {\n * sortOrder: state.bridge.sortOrder,\n * selectedQuote: state.bridge.selectedQuote,\n * migrationPhase: '1.5',\n * }\n * ));\n * ```\n */\nexport const selectBridgeQuotes = createStructuredBridgeSelector({\n sortedQuotes: selectSortedBridgeQuotes,\n recommendedQuote: selectRecommendedQuote,\n activeQuote: selectActiveQuote,\n quotesLastFetchedMs: (state) => state.quotesLastFetched,\n isLoading: (state) => state.quotesLoadingStatus === RequestStatus.LOADING,\n quoteFetchError: (state) => state.quoteFetchError,\n quotesRefreshCount: (state) => state.quotesRefreshCount,\n quotesInitialLoadTimeMs: (state) => state.quotesInitialLoadTime,\n isQuoteGoingToRefresh: selectIsQuoteGoingToRefresh,\n});\n\nconst selectRecommendedQuotes = createBridgeSelector(\n [\n selectSortedBridgeQuotes,\n (_, { requestCount }: { requestCount: number }) => requestCount,\n ],\n (quotes, requestCount) =>\n quotes.reduce((acc, quote) => {\n const requestIndex = quote.quoteRequestIndex ?? 0;\n acc[requestIndex] ??= quote;\n return acc;\n }, Array<QuoteResponse | null>(requestCount).fill(null)),\n);\n\nconst selectDestAmountSum = createBridgeSelector(\n [selectRecommendedQuotes],\n (recommendedQuotes) => {\n return sumAmounts(recommendedQuotes.map((quote) => quote?.quote.dest));\n },\n);\n\nconst selectMinDestAmountSum = createBridgeSelector(\n [selectDestAmountSum],\n (destAmountSum): DeepPartial<QuoteResponse['quote']['dest']> | undefined => {\n if (!destAmountSum) {\n return undefined;\n }\n\n const {\n minAmount,\n minAmountNormalized,\n minAmountValueInCurrency,\n minAmountUsd,\n asset,\n } = destAmountSum;\n\n return {\n amount: minAmount,\n normalizedAmount: minAmountNormalized,\n valueInCurrency: minAmountValueInCurrency,\n usd: minAmountUsd,\n asset,\n };\n },\n);\n\n/**\n * Selects the recommended swap quotes for a batch of quote requests.\n *\n * @param state - The state of the bridge controller and its dependency controllers\n * @param sortOrder - The sort order of the quotes\n * @param requestCount - The number of quote requests fetched in the batch\n * @returns The quotes for multiple quote requests, including their recommendedQuotes,\n * totalReceived, minimumReceived, totalNetworkFee, and other quote fetching metadata.\n *\n * @example\n * ```ts\n * const quotes = useSelector(state => selectBatchSellQuotes(\n * { ...state.metamask },\n * {\n * sortOrder: state.bridge.sortOrder,\n * requestCount: 4,\n * }\n * ));\n * ```\n */\nexport const selectBatchSellQuotes = createStructuredBridgeSelector({\n recommendedQuotes: selectRecommendedQuotes,\n totalReceived: selectDestAmountSum,\n minimumReceived: selectMinDestAmountSum,\n quotesLastFetchedMs: (state) => state.quotesLastFetched,\n isLoading: (state) => state.quotesLoadingStatus === RequestStatus.LOADING,\n quoteFetchError: (state) => state.quoteFetchError,\n quotesRefreshCount: (state) => state.quotesRefreshCount,\n quotesInitialLoadTimeMs: (state) => state.quotesInitialLoadTime,\n isQuoteGoingToRefresh: selectIsQuoteGoingToRefresh,\n});\n\nconst selectBatchSellFees = createBridgeSelector(\n [\n (state) => state.batchSellTrades?.fee?.amount,\n (state) => state.batchSellTrades?.fee?.asset,\n (state) =>\n selectExchangeRateByAssetId(\n state,\n state.batchSellTrades?.fee?.asset?.assetId,\n ),\n ],\n (feeAmount, feeAsset, exchangeRate) => {\n return feeAmount && feeAsset && exchangeRate\n ? calcBatchFees(feeAmount, feeAsset, exchangeRate)\n : undefined;\n },\n);\n\n/**\n * Selects the batch transactions and fees for a batch of quotes\n *\n * @param state - The state of the bridge controller and its dependency controllers\n * @returns The total transaction fees and whether the batch sell trades are submittable.\n *\n * @example\n * ```ts\n * const { totalNetworkFee, isBatchSellTradeAvailable } = useSelector(state => selectBatchSellTrades(state.metamask));\n * ```\n */\nexport const selectBatchSellTrades = createBridgeSelector(\n [\n (state) => state.batchSellTradesLoadingStatus === RequestStatus.FETCHED,\n (state) => state.batchSellTrades,\n selectBatchSellFees,\n (state) => state.batchSellTradesLoadingStatus === RequestStatus.LOADING,\n ],\n (isBatchSellTradeAvailable, batchSellTrades, batchFees, isLoading) => {\n return {\n totalNetworkFee: batchFees,\n /**\n * Whether the batch sell trades have been fetched and transactions are ready to be submitted\n */\n isBatchSellTradeAvailable:\n isBatchSellTradeAvailable &&\n Boolean(batchSellTrades?.transactions?.length),\n isLoading,\n };\n },\n);\n\nexport const selectMinimumBalanceForRentExemptionInSOL = (\n state: BridgeAppState,\n) =>\n new BigNumber(state.minimumBalanceForRentExemptionInLamports ?? 0)\n .div(10 ** 9)\n .toString();\n\nexport const selectTokenWarnings = (state: BridgeAppState) =>\n state.tokenWarnings;\n\nexport const selectDefaultSlippagePercentage = createBridgeSelector(\n [\n (state) => selectBridgeFeatureFlags(state).chains,\n (_, slippageParams: Parameters<typeof getDefaultSlippagePercentage>[0]) =>\n slippageParams.srcTokenAddress,\n (_, slippageParams: Parameters<typeof getDefaultSlippagePercentage>[0]) =>\n slippageParams.destTokenAddress,\n (_, slippageParams: Parameters<typeof getDefaultSlippagePercentage>[0]) =>\n slippageParams.srcChainId\n ? formatChainIdToCaip(slippageParams.srcChainId)\n : undefined,\n (_, slippageParams: Parameters<typeof getDefaultSlippagePercentage>[0]) =>\n slippageParams.destChainId\n ? formatChainIdToCaip(slippageParams.destChainId)\n : undefined,\n ],\n (\n featureFlagsByChain,\n srcTokenAddress,\n destTokenAddress,\n srcChainId,\n destChainId,\n ) => {\n return getDefaultSlippagePercentage(\n {\n srcTokenAddress,\n destTokenAddress,\n srcChainId,\n destChainId,\n },\n srcChainId ? featureFlagsByChain[srcChainId]?.stablecoins : undefined,\n destChainId ? featureFlagsByChain[destChainId]?.stablecoins : undefined,\n );\n },\n);\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2CAA2C,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,KAAK,EAAE,+CAA+C,EAAE,MAAM,6BAA6B,CAAC;AACnG,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EACV,mDAAmD,EACnD,2CAA2C,EAC5C,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,4CAA4C,EAAE,MAAM,wCAAwC,CAAC;AAC3G,OAAO,KAAK,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AAC1G,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,WAAW,EACX,GAAG,EACJ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EACV,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,MAAM,MAAM,aAAa,GAAG,CAC1B,KAAK,EAAE,WAAW,GAAG,GAAG,GAAG,MAAM,EACjC,IAAI,CAAC,EAAE,WAAW,KAEf,OAAO,CAAC,GAAG,CAAC,CAAC;AAElB;;GAEG;AACH,oBAAY,SAAS;IACnB,4DAA4D;IAC5D,MAAM,WAAW;IACjB,qBAAqB;IACrB,KAAK,UAAU;IACf,kCAAkC;IAClC,GAAG,QAAQ;IACX;;;OAGG;IACH,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAExE,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,cAAc,GAAG,YAAY,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E;;GAEG;AACH,oBAAY,SAAS;IACnB,QAAQ,mBAAmB;IAC3B,OAAO,oBAAoB;CAC5B;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,WAAW,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAEhB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,cAAc,GAAG,MAAM,CAAC;AAC7B,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAEpE,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGrE;;;;GAIG;AACH,MAAM,MAAM,YAAY,CACtB,WAAW,GAAG,OAAO,GAAG,MAAM,EAC9B,gBAAgB,GAAG,MAAM,EACzB,iBAAiB,GAAG,MAAM,IACxB;IACF,aAAa,EAAE,iBAAiB,CAAC;IACjC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,EAAE,gBAAgB,CAAC;IAClC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,oBAAY,WAAW;IACrB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAC5C,GAAG,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,EAAE,WAAW;AAChD,AADqC,WAAW;AAChD,GAAG,GAAG,WAAW,GAAG,MAAM,EAAE,qBAAqB;AACjD,AAD4B,qBAAqB;AACjD,GAAG,GAAG,aAAa,GAAG,MAAM,CAC7B,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC;AAE9B,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAElD,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAChD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAE9C,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,KAAK,CACzC,OAAO,6BAA6B,CACrC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAC9E,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEhE,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAEtE,KAAK,gBAAgB,CAAC,IAAI,IACxB,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACjC,WAAW,CAAC,CAAC,CAAC,EAAE,GAChB,WAAW,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC5C,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,GACzB,WAAW,CAAC,IAAI,CAAC,SAAS,MAAM,GAC9B,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAC9B,IAAI,CAAC;AACf,MAAM,MAAM,WAAW,CAAC,IAAI,IAAI,IAAI,SAAS,MAAM,GAC/C,IAAI,GACJ;KACG,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC,GACpC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAChC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC9B,CAAC;AAEN,oBAAY,OAAO;IACjB,GAAG,IAAI;IACP,QAAQ,KAAK;IACb,GAAG,KAAK;IACR,OAAO,MAAM;IACb,MAAM,MAAM;IACZ,IAAI,OAAO;IACX,QAAQ,QAAQ;IAChB,SAAS,QAAQ;IACjB,KAAK,QAAQ;IACb,MAAM,mBAAmB;IACzB,GAAG,iBAAiB;IACpB,4FAA4F;IAC5F,OAAO,iBAAiB;IACxB,IAAI,YAAY;IAChB,GAAG,OAAO;IACV,KAAK,MAAM;IACX,QAAQ,MAAM;IACd,OAAO,OAAO;IACd,GAAG,OAAO;IACV,SAAS,OAAO;CACjB;AAED,MAAM,MAAM,0BAA0B,GAAG,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE5E,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE5D,MAAM,MAAM,uBAAuB,GAAG,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE9E,oBAAY,aAAa;IACvB,OAAO,IAAI;IACX,OAAO,IAAI;IACX,KAAK,IAAI;CACV;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;IAC7C,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB;;OAEG;IACH,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;OAEG;IACH,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;;;;;;OASG;IACH,mBAAmB,EAAE,aAAa,GAAG,IAAI,CAAC;IAC1C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IACxD;;;OAGG;IACH,wCAAwC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD;;;OAGG;IACH,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B;;;;;;OAMG;IACH,4BAA4B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C;;;;OAIG;IACH,wBAAwB,EAAE,wBAAwB,CAAC;IACnD;;;OAGG;IACH,mBAAmB,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACpD;;OAEG;IACH,eAAe,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAChD;;OAEG;IACH,4BAA4B,EAAE,aAAa,GAAG,IAAI,CAAC;CACpD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,CAChC,YAAY,SAAS,MAAM,gBAAgB,IACzC;IACF,IAAI,EAAE,GAAG,OAAO,sBAAsB,IAAI,YAAY,EAAE,CAAC;IACzD,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CACnE,OAAO,sBAAsB,EAC7B,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG,0BAA0B,CACvE,OAAO,sBAAsB,EAC7B,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B,8BAA8B,GAC9B,6BAA6B,CAAC;AAElC,MAAM,MAAM,sBAAsB,GAAG,gCAAgC,CAAC;AAEtE,MAAM,MAAM,cAAc,GACtB,2CAA2C,GAC3C,4CAA4C,GAC5C,oCAAoC,GACpC,iCAAiC,GACjC,mDAAmD,GACnD,2CAA2C,GAC3C,yCAAyC,GACzC,+CAA+C,CAAC;AACpD,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,SAAS,CAC/C,OAAO,sBAAsB,EAC7B,uBAAuB,GAAG,cAAc,EACxC,sBAAsB,GAAG,aAAa,CACvC,CAAC"}
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAmDA;;GAEG;AACH,MAAM,CAAN,IAAY,SAYX;AAZD,WAAY,SAAS;IACnB,4DAA4D;IAC5D,8BAAiB,CAAA;IACjB,qBAAqB;IACrB,4BAAe,CAAA;IACf,kCAAkC;IAClC,wBAAW,CAAA;IACX;;;OAGG;IACH,gCAAmB,CAAA;AACrB,CAAC,EAZW,SAAS,KAAT,SAAS,QAYpB;AA2BD;;GAEG;AACH,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,wCAA2B,CAAA;IAC3B,wCAA2B,CAAA;AAC7B,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAmED,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,sCAAuB,CAAA;IACvB,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,kCAAmB,CAAA;IACnB,oCAAqB,CAAA;AACvB,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAsDD,MAAM,CAAN,IAAY,OAqBX;AArBD,WAAY,OAAO;IACjB,mCAAO,CAAA;IACP,8CAAa,CAAA;IACb,oCAAQ,CAAA;IACR,6CAAa,CAAA;IACb,2CAAY,CAAA;IACZ,wCAAW,CAAA;IACX,iDAAgB,CAAA;IAChB,mDAAiB,CAAA;IACjB,2CAAa,CAAA;IACb,wDAAyB,CAAA;IACzB,gDAAoB,CAAA;IACpB,4FAA4F;IAC5F,wDAAwB,CAAA;IACxB,6CAAgB,CAAA;IAChB,sCAAU,CAAA;IACV,yCAAW,CAAA;IACX,+CAAc,CAAA;IACd,8CAAc,CAAA;IACd,sCAAU,CAAA;IACV,kDAAgB,CAAA;AAClB,CAAC,EArBW,OAAO,KAAP,OAAO,QAqBlB;AAQD,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,uDAAW,CAAA;IACX,uDAAW,CAAA;IACX,mDAAS,CAAA;AACX,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport type { AccountsControllerGetAccountByAddressAction } from '@metamask/accounts-controller';\nimport type { AssetsControllerGetExchangeRatesForBridgeAction } from '@metamask/assets-controller';\nimport type { CurrencyRateControllerGetStateAction } from '@metamask/assets-controllers';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n} from '@metamask/base-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport type {\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerGetNetworkClientByIdAction,\n} from '@metamask/network-controller';\nimport type { AuthenticationControllerGetBearerTokenAction } from '@metamask/profile-sync-controller/auth';\nimport type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote-feature-flag-controller';\nimport type { SnapControllerHandleRequestAction } from '@metamask/snaps-controllers';\nimport type { Infer } from '@metamask/superstruct';\nimport type {\n CaipAccountId,\n CaipAssetId,\n CaipAssetType,\n CaipChainId,\n Hex,\n} from '@metamask/utils';\n\nimport type { BridgeControllerMethodActions } from './bridge-controller-method-action-types.js';\nimport type { BridgeController } from './bridge-controller.js';\nimport type { BRIDGE_CONTROLLER_NAME } from './constants/bridge.js';\nimport type { SimulatedGasFeeLimitsSchema } from './validators/batch-sell.js';\nimport type { BatchSellTradesResponseSchema } from './validators/batch-sell.js';\nimport type {\n ChainConfigurationSchema,\n ChainRankingSchema,\n PlatformConfigSchema,\n} from './validators/feature-flags.js';\nimport type { IntentSchema } from './validators/intent.js';\nimport type { QuoteResponseV1 } from './validators/quote-response-v1.js';\nimport type { QuoteResponse } from './validators/quote-response.js';\nimport type { QuoteStreamCompleteSchema } from './validators/quote-stream-complete.js';\nimport type { TxFeeGasLimitsSchema } from './validators/quote.js';\nimport type { FeeDataSchema } from './validators/quote.js';\nimport type { GaslessPropertiesSchema } from './validators/quote.js';\nimport type { StepSchema } from './validators/step.js';\nimport type { TokenFeatureSchema } from './validators/token-feature.js';\n\nexport type FetchFunction = (\n input: RequestInfo | URL | string,\n init?: RequestInit,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => Promise<any>;\n\n/**\n * The types of assets that a user can send\n */\nexport enum AssetType {\n /** The native asset for the current network, such as ETH */\n native = 'NATIVE',\n /** An ERC20 token */\n token = 'TOKEN',\n /** An ERC721 or ERC1155 token. */\n NFT = 'NFT',\n /**\n * A transaction interacting with a contract that isn't a token method\n * interaction will be marked as dealing with an unknown asset type.\n */\n unknown = 'UNKNOWN',\n}\n\nexport type ChainConfiguration = Infer<typeof ChainConfigurationSchema>;\n\nexport type ChainRanking = Infer<typeof ChainRankingSchema>;\n\n/**\n * @deprecated Avoid introducing new usages and use the QuoteResponseV2 feeData.network value instead\n */\nexport type L1GasFees = {\n l1GasFeesInHexWei?: Hex; // l1 fees for approval and trade in hex wei, appended by BridgeController.#appendL1GasFees\n};\n\n/**\n * @deprecated Avoid introducing new usages and use the QuoteResponseV2 feeData.network value instead\n */\nexport type NonEvmFees = {\n nonEvmFeesInNative?: string; // Non-EVM chain fees in native units (SOL for Solana, BTC for Bitcoin)\n};\n\nexport type InputPrimaryDenomination = 'token_amount' | 'fiat_value';\n\n/**\n * Asset exchange rate values for a given chain and address\n */\nexport type ExchangeRate = { exchangeRate?: string; usdExchangeRate?: string };\n\n/**\n * Sort order set by the user\n */\nexport enum SortOrder {\n COST_ASC = 'cost_ascending',\n ETA_ASC = 'time_descending',\n}\n\n/**\n * This is the interface for the token object used in the extension client\n * In addition to the {@link BridgeAsset} fields, it includes balance information\n */\nexport type BridgeToken = {\n address: string;\n symbol: string;\n image: string;\n decimals: number;\n chainId: number | Hex | ChainId | CaipChainId;\n balance: string; // raw balance\n // TODO deprecate this field and use balance instead\n string: string | undefined; // normalized balance as a stringified number\n tokenFiatAmount?: number | null;\n occurrences?: number;\n};\n\ntype DecimalChainId = string;\nexport type GasMultiplierByChainId = Record<DecimalChainId, number>;\n\nexport type FeatureFlagResponse = Infer<typeof PlatformConfigSchema>;\n\n// TODO move definition to validators.ts\n/**\n * This is the interface for the quote request sent to the bridge-api\n * and should only be used by the fetchBridgeQuotes utility function\n * Components and redux stores should use the {@link GenericQuoteRequest} type\n */\nexport type QuoteRequest<\n ChainIdType = ChainId | number,\n TokenAddressType = string,\n WalletAddressType = string,\n> = {\n walletAddress: WalletAddressType;\n destWalletAddress?: WalletAddressType;\n srcChainId: ChainIdType;\n destChainId: ChainIdType;\n srcTokenAddress: TokenAddressType;\n destTokenAddress: TokenAddressType;\n /**\n * This is the amount sent, in atomic amount\n */\n srcTokenAmount: string;\n slippage?: number;\n aggIds?: string[];\n bridgeIds?: string[];\n insufficientBal?: boolean;\n resetApproval?: boolean;\n refuel?: boolean;\n /**\n * Whether the response should include gasless swap quotes\n * This should be true if the user has opted in to STX on the client\n * and the current network has STX support\n */\n gasIncluded: boolean;\n /**\n * Whether to request quotes that use EIP-7702 delegated gasless execution\n */\n gasIncluded7702: boolean;\n /**\n * The fee that will be charged by MetaMask\n */\n fee?: number;\n};\n\nexport enum StatusTypes {\n SUBMITTED = 'SUBMITTED',\n UNKNOWN = 'UNKNOWN',\n FAILED = 'FAILED',\n PENDING = 'PENDING',\n COMPLETE = 'COMPLETE',\n}\n\n/**\n * These are types that components pass in. Since data is a mix of types when coming from the redux store, we need to use a generic type that can cover all the types.\n * Payloads with this type are transformed into QuoteRequest by fetchBridgeQuotes right before fetching quotes\n */\nexport type GenericQuoteRequest = QuoteRequest<\n Hex | CaipChainId | string | number, // chainIds\n Hex | CaipAssetId | string, // assetIds/addresses\n Hex | CaipAccountId | string // accountIds/addresses\n>;\n\nexport type Step = Infer<typeof StepSchema>;\n\nexport type RefuelData = Step;\n\nexport type FeeData = Infer<typeof FeeDataSchema>;\n\nexport type Intent = Infer<typeof IntentSchema>;\nexport type IntentOrderLike = Intent['order'];\n\nexport type BatchSellTradesRequest = {\n quotes: QuoteResponseV1[];\n stxEnabled: boolean;\n};\n\n/**\n * This is the bridge-api response for the obtainGaslessBatch method\n */\nexport type BatchSellTradesResponse = Infer<\n typeof BatchSellTradesResponseSchema\n>;\n\nexport type SimulatedGasFeeLimits = Infer<typeof SimulatedGasFeeLimitsSchema>;\nexport type TxFeeGasLimits = Infer<typeof TxFeeGasLimitsSchema>;\n\nexport type GaslessProperties = Infer<typeof GaslessPropertiesSchema>;\n\ntype DeepPartialValue<Type> =\n NonNullable<Type> extends (infer U)[]\n ? DeepPartial<U>[]\n : NonNullable<Type> extends readonly (infer U)[]\n ? readonly DeepPartial<U>[]\n : NonNullable<Type> extends object\n ? DeepPartial<NonNullable<Type>>\n : Type;\nexport type DeepPartial<Type> = Type extends string\n ? Type\n : {\n [K in keyof Type]?: null extends Type[K]\n ? DeepPartialValue<Type[K]> | null\n : DeepPartialValue<Type[K]>;\n };\n\nexport enum ChainId {\n ETH = 1,\n OPTIMISM = 10,\n BSC = 56,\n POLYGON = 137,\n ZKSYNC = 324,\n BASE = 8453,\n ARBITRUM = 42161,\n AVALANCHE = 43114,\n LINEA = 59144,\n SOLANA = 1151111081099710,\n BTC = 20000000000001,\n /** Internal bridge / token-list id for Stellar pubnet (Token API chain: stellar:pubnet). */\n STELLAR = 20000000000002,\n TRON = 728126428,\n SEI = 1329,\n MONAD = 143,\n HYPEREVM = 999,\n MEGAETH = 4326,\n ARC = 5042,\n ROBINHOOD = 4663,\n}\n\nexport type FeatureFlagsPlatformConfig = Infer<typeof PlatformConfigSchema>;\n\nexport type TokenFeature = Infer<typeof TokenFeatureSchema>;\n\nexport type QuoteStreamCompleteData = Infer<typeof QuoteStreamCompleteSchema>;\n\nexport enum RequestStatus {\n LOADING = 0,\n FETCHED = 1,\n ERROR = 2,\n}\n\nexport type BridgeControllerState = {\n quoteRequest: Partial<GenericQuoteRequest>[];\n quotes: QuoteResponse[];\n /**\n * The time elapsed between the initial quote fetch and when the first valid quote was received\n */\n quotesInitialLoadTime: number | null;\n /**\n * The timestamp of when the latest quote fetch started\n */\n quotesLastFetched: number | null;\n /**\n * The status of the quote fetch, including fee calculations and validations\n * This is set to\n * - LOADING when the quote fetch starts\n * - FETCHED when the process completes successfully, including when quotes are empty\n * - ERROR when any errors occur\n *\n * When SSE is enabled, this is set to LOADING even when a quote is available. It is only\n * set to FETCHED when the stream is closed and all quotes have been received\n */\n quotesLoadingStatus: RequestStatus | null;\n quoteFetchError: string | null;\n /**\n * The number of times the quotes have been refreshed, starts at 0 and is\n * incremented at the end of each quote fetch\n */\n quotesRefreshCount: number;\n /**\n * Asset exchange rates for EVM and multichain assets that are not indexed by the assets controllers\n */\n assetExchangeRates: Record<CaipAssetType, ExchangeRate>;\n /**\n * When the src token is SOL, this needs to be subtracted from their balance to determine\n * the max amount that can be sent.\n */\n minimumBalanceForRentExemptionInLamports: string | null;\n /**\n * Security alerts for the destination token in the current quote request,\n * populated from `token_warning` SSE events.\n */\n tokenWarnings: TokenFeature[];\n /**\n * Client-supplied security classification for the destination token in the\n * current quote request, used as the `token_security_type_destination`\n * analytics property. Set via the `context` arg of\n * `updateBridgeQuoteRequestParams` and reset whenever the quote request is\n * reset. `null` when the client has no security data for the token.\n */\n tokenSecurityTypeDestination: string | null;\n /**\n * The denomination currently shown as the primary source amount input.\n * This is persisted as a user preference so returning to the flow restores\n * the last selected fiat/token display mode.\n */\n inputPrimaryDenomination: InputPrimaryDenomination;\n /**\n * Metadata about the completed quote stream, populated from the `complete` SSE event.\n * Set to null at the start of each fetch and updated when the complete event is received.\n */\n quoteStreamComplete: QuoteStreamCompleteData | null;\n /**\n * Contains gasless transaction data and fees for BatchSell quotes, provided by the obtainGaslessBatch API\n */\n batchSellTrades: BatchSellTradesResponse | null;\n /**\n * The status of the batch sell trades fetch, including fee calculations and validations\n */\n batchSellTradesLoadingStatus: RequestStatus | null;\n};\n\n/**\n * @deprecated Use the separate method action types (e.g.,\n * `BridgeControllerFetchQuotesAction`) instead.\n */\nexport type BridgeControllerAction<\n FunctionName extends keyof BridgeController,\n> = {\n type: `${typeof BRIDGE_CONTROLLER_NAME}:${FunctionName}`;\n handler: BridgeController[FunctionName];\n};\n\nexport type BridgeControllerGetStateAction = ControllerGetStateAction<\n typeof BRIDGE_CONTROLLER_NAME,\n BridgeControllerState\n>;\n\nexport type BridgeControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof BRIDGE_CONTROLLER_NAME,\n BridgeControllerState\n>;\n\nexport type BridgeControllerActions =\n | BridgeControllerGetStateAction\n | BridgeControllerMethodActions;\n\nexport type BridgeControllerEvents = BridgeControllerStateChangeEvent;\n\nexport type AllowedActions =\n | AccountsControllerGetAccountByAddressAction\n | AuthenticationControllerGetBearerTokenAction\n | CurrencyRateControllerGetStateAction\n | SnapControllerHandleRequestAction\n | NetworkControllerFindNetworkClientIdByChainIdAction\n | NetworkControllerGetNetworkClientByIdAction\n | RemoteFeatureFlagControllerGetStateAction\n | AssetsControllerGetExchangeRatesForBridgeAction;\nexport type AllowedEvents = never;\n\n/**\n * The messenger for the BridgeController.\n */\nexport type BridgeControllerMessenger = Messenger<\n typeof BRIDGE_CONTROLLER_NAME,\n BridgeControllerActions | AllowedActions,\n BridgeControllerEvents | AllowedEvents\n>;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/utils/assets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIrE,eAAO,MAAM,mBAAmB,iBAChB,mBAAmB,CAAC,iBAAiB,CAAC,WAC3C,mBAAmB,CAAC,YAAY,CAAC,gDAY3C,CAAC;AAEF,eAAO,MAAM,eAAe,aAChB,MAAM,mBACC;IACf,CAAC,OAAO,EAAE,aAAa,GAAG;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACtE,oEAcF,CAAC;AAEF,eAAO,MAAM,aAAa,cACb,aAAa,aACb,aAAa,KACvB,OAaF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/utils/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,YAAoD,EACpD,OAA0C,EAC1C,EAAE;IACF,MAAM,eAAe,GAAoB,EAAE,CAAC;IAE5C,MAAM,OAAO,GAAG,sBAAsB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9D,IAAI,OAAO,EAAE,CAAC;QACZ,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,wBAAwB,CAAC,OAAO,CAAC,EAAE,OAAO;YACxC,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,QAAgB,EAChB,eAEC,EACD,EAAE;IACF,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAE1D,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE;QAC3B,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,CAAC,OAAwB,CAAC,GAAG;gBAC9B,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC;gBAC9B,eAAe,EAAE,MAAM,CAAC,GAAG;aAC5B,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAAwB,EACxB,QAAwB,EACf,EAAE;IACX,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,QAAQ,KAAK,QAAQ;QACrB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS;YAC3C,kBAAkB,CAAC,MAAM;YACzB,kBAAkB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS;gBAC1C,kBAAkB,CAAC,MAAM;YAC3B,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC,CACrD,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { KnownCaipNamespace, parseCaipAssetType } from '@metamask/utils';\nimport type { CaipAssetType } from '@metamask/utils';\n\nimport type { ExchangeRate, GenericQuoteRequest } from '../types.js';\nimport { getNativeAssetForChainId } from './bridge.js';\nimport { formatAddressToAssetId } from './caip-formatters.js';\n\nexport const getAssetIdsForToken = (\n tokenAddress: GenericQuoteRequest['srcTokenAddress'],\n chainId: GenericQuoteRequest['srcChainId'],\n) => {\n const assetIdsToFetch: CaipAssetType[] = [];\n\n const assetId = formatAddressToAssetId(tokenAddress, chainId);\n if (assetId) {\n assetIdsToFetch.push(assetId);\n getNativeAssetForChainId(chainId)?.assetId &&\n assetIdsToFetch.push(getNativeAssetForChainId(chainId).assetId);\n }\n\n return assetIdsToFetch;\n};\n\nexport const toExchangeRates = (\n currency: string,\n pricesByAssetId: {\n [assetId: CaipAssetType]: { [currency: string]: string } | undefined;\n },\n) => {\n const exchangeRates = Object.entries(pricesByAssetId).reduce<\n Record<CaipAssetType, ExchangeRate>\n >((acc, [assetId, prices]) => {\n if (prices) {\n acc[assetId as CaipAssetType] = {\n exchangeRate: prices[currency],\n usdExchangeRate: prices.usd,\n };\n }\n return acc;\n }, {});\n return exchangeRates;\n};\n\nexport const assetIdsMatch = (\n assetId1?: CaipAssetType,\n assetId2?: CaipAssetType,\n): boolean => {\n if (!assetId2 || !assetId1) {\n return false;\n }\n\n return (\n assetId1 === assetId2 ||\n (parseCaipAssetType(assetId1).chain.namespace ===\n KnownCaipNamespace.Eip155 &&\n parseCaipAssetType(assetId2).chain.namespace ===\n KnownCaipNamespace.Eip155 &&\n assetId1.toLowerCase() === assetId2.toLowerCase())\n );\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../src/utils/balance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAI1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAI3C,eAAO,MAAM,iBAAiB,YACnB,MAAM,eACF,MAAM,YACT,QAAQ,KACjB,OAAO,CAAC,SAAS,GAAG,SAAS,CAQ/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,aACrB,QAAQ,mBACD,MAAM,gBACT,MAAM,WACX,GAAG,KACX,OAAO,CAAC,SAAS,GAAG,SAAS,CAS/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,aACrB,QAAQ,mBACD,MAAM,gBACT,MAAM,mBACH,MAAM,WACd,GAAG,qBAUb,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/utils/balance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,OAAe,EACf,WAAmB,EACnB,QAAkB,EACc,EAAE;IAClC,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IACtE,MAAM,mBAAmB,GACvB,OAAO,aAAa,EAAE,SAAS,KAAK,UAAU;QAC5C,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC;QACtC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,MAAM,mBAAmB,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,QAAkB,EAClB,eAAuB,EACvB,YAAoB,EACpB,OAAY,EACoB,EAAE;IAClC,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;YAClD,OAAO,MAAM,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,MAAM,iBAAiB,CAAC,YAAY,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,QAAkB,EAClB,eAAuB,EACvB,YAAoB,EACpB,eAAuB,EACvB,OAAY,EACZ,EAAE;IACF,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAChD,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,OAAO,CACR,CAAC;IAEF,OAAO,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxE,CAAC,CAAC","sourcesContent":["import { getAddress } from '@ethersproject/address';\nimport type { BigNumber } from '@ethersproject/bignumber';\nimport { Contract } from '@ethersproject/contracts';\nimport { Web3Provider } from '@ethersproject/providers';\nimport { abiERC20 } from '@metamask/metamask-eth-abis';\nimport type { Provider } from '@metamask/network-controller';\nimport type { Hex } from '@metamask/utils';\n\nimport { isNativeAddress } from './bridge.js';\n\nexport const fetchTokenBalance = async (\n address: string,\n userAddress: string,\n provider: Provider,\n): Promise<BigNumber | undefined> => {\n const ethersProvider = new Web3Provider(provider);\n const tokenContract = new Contract(address, abiERC20, ethersProvider);\n const tokenBalancePromise =\n typeof tokenContract?.balanceOf === 'function'\n ? tokenContract.balanceOf(userAddress)\n : Promise.resolve(undefined);\n return await tokenBalancePromise;\n};\n\nexport const calcLatestSrcBalance = async (\n provider: Provider,\n selectedAddress: string,\n tokenAddress: string,\n chainId: Hex,\n): Promise<BigNumber | undefined> => {\n if (tokenAddress && chainId) {\n if (isNativeAddress(tokenAddress)) {\n const ethersProvider = new Web3Provider(provider);\n return await ethersProvider.getBalance(getAddress(selectedAddress));\n }\n return await fetchTokenBalance(tokenAddress, selectedAddress, provider);\n }\n return undefined;\n};\n\nexport const hasSufficientBalance = async (\n provider: Provider,\n selectedAddress: string,\n tokenAddress: string,\n fromTokenAmount: string,\n chainId: Hex,\n) => {\n const srcTokenBalance = await calcLatestSrcBalance(\n provider,\n selectedAddress,\n tokenAddress,\n chainId,\n );\n\n return srcTokenBalance ? srcTokenBalance.gte(fromTokenAmount) : false;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAiB,WAAW,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAcvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAOrD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,eACX,mBAAmB,CAAC,YAAY,CAAC,gBAC/B,mBAAmB,CAAC,aAAa,CAAC,YAUjD,CAAC;AAEF,eAAO,MAAM,+BAA+B,QAAO,qBAElD,CAAC;AAiBF;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,YAC1B,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,WAAW,KAC3C,WAyBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,gBACjB,mBAAmB,CAAC,aAAa,CAAC,KAYhC,GAChB,CAAC;AAEF,eAAO,MAAM,SAAS,YACX,mBAAmB,CAAC,YAAY,CAAC,WACjC,MAAM,YAGyC,CAAC;AAE3D,eAAO,MAAM,QAAQ,kBAAmB,MAAM,EAAE,KAAG,GAUlD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,YAC5B,MAAM,WACN,GAAG,GAAG,WAAW,YAO3B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,WAC5B,MAAM,WACL,GAAG,GAAG,WAAW,YAO3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,aAAc,MAAM,GAAG,IAAI,YAQjD,CAAC;AAEP;;;;;GAKG;AACH,eAAO,MAAM,eAAe,YACjB,GAAG,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,YAM7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAClB,GAAG,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,YAM7C,CAAC;AAEF,eAAO,MAAM,aAAa,YAAa,GAAG,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,YAKzE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,YAClB,GAAG,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,KAC3C,OAQF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,YACjB,mBAAmB,CAAC,YAAY,CAAC,KACzC,OAOF,CAAC;AAEF,eAAO,MAAM,kBAAkB,kBACd,eAAe,KAC7B,aAAa,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAEjD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { AddressZero } from '@ethersproject/constants';\nimport { Contract } from '@ethersproject/contracts';\nimport { BtcScope, SolScope, TrxScope, XlmScope } from '@metamask/keyring-api';\nimport { abiERC20 } from '@metamask/metamask-eth-abis';\nimport { isCaipChainId, isStrictHexString } from '@metamask/utils';\nimport type { CaipAssetType, CaipChainId, Hex } from '@metamask/utils';\n\nimport {\n DEFAULT_BRIDGE_CONTROLLER_STATE,\n ETH_USDT_ADDRESS,\n METABRIDGE_ETHEREUM_ADDRESS,\n} from '../constants/bridge.js';\nimport { CHAIN_IDS } from '../constants/chains.js';\nimport { SWAPS_CONTRACT_ADDRESSES } from '../constants/swaps.js';\nimport {\n SWAPS_CHAINID_DEFAULT_TOKEN_MAP,\n SYMBOL_TO_SLIP44_MAP,\n} from '../constants/tokens.js';\nimport type { SupportedSwapsNativeCurrencySymbols } from '../constants/tokens.js';\nimport type { BridgeControllerState, GenericQuoteRequest } from '../types.js';\nimport { ChainId } from '../types.js';\nimport type { BridgeAsset } from '../validators/bridge-asset.js';\nimport type { QuoteResponseV1 } from '../validators/quote-response-v1.js';\nimport type { TxData } from '../validators/trade.js';\nimport {\n formatChainIdToCaip,\n formatChainIdToDec,\n formatChainIdToHex,\n} from './caip-formatters.js';\n\n/**\n * Checks whether the transaction is a cross-chain transaction by comparing the source and destination chainIds\n *\n * @param srcChainId - The source chainId\n * @param destChainId - The destination chainId\n * @returns Whether the transaction is a cross-chain transaction\n */\nexport const isCrossChain = (\n srcChainId: GenericQuoteRequest['srcChainId'],\n destChainId?: GenericQuoteRequest['destChainId'],\n) => {\n try {\n if (!destChainId) {\n return false;\n }\n return formatChainIdToCaip(srcChainId) !== formatChainIdToCaip(destChainId);\n } catch {\n return false;\n }\n};\n\nexport const getDefaultBridgeControllerState = (): BridgeControllerState => {\n return DEFAULT_BRIDGE_CONTROLLER_STATE;\n};\n\n/**\n * Returns the native assetType for a given chainId and native currency symbol\n * Note that the return value is used as the assetId although it is a CaipAssetType\n *\n * @param chainId - The chainId to get the native assetType for\n * @param nativeCurrencySymbol - The native currency symbol for the given chainId\n * @returns The native assetType for the given chainId\n */\nconst getNativeAssetCaipAssetType = (\n chainId: CaipChainId,\n nativeCurrencySymbol: SupportedSwapsNativeCurrencySymbols,\n): CaipAssetType => {\n return `${formatChainIdToCaip(chainId)}/${SYMBOL_TO_SLIP44_MAP[nativeCurrencySymbol]}`;\n};\n\n/**\n * Returns the native swaps or bridge asset for a given chainId\n *\n * @param chainId - The chainId to get the default token for\n * @returns The native asset for the given chainId\n * @throws If no native asset is defined for the given chainId\n */\nexport const getNativeAssetForChainId = (\n chainId: string | number | Hex | CaipChainId,\n): BridgeAsset => {\n const chainIdInCaip = formatChainIdToCaip(chainId);\n const nativeToken =\n SWAPS_CHAINID_DEFAULT_TOKEN_MAP[\n formatChainIdToCaip(\n chainId,\n ) as keyof typeof SWAPS_CHAINID_DEFAULT_TOKEN_MAP\n ] ??\n SWAPS_CHAINID_DEFAULT_TOKEN_MAP[\n formatChainIdToHex(\n chainId,\n ) as keyof typeof SWAPS_CHAINID_DEFAULT_TOKEN_MAP\n ];\n\n if (!nativeToken) {\n throw new Error(\n `No XChain Swaps native asset found for chainId: ${chainId}`,\n );\n }\n\n return {\n ...nativeToken,\n chainId: formatChainIdToDec(chainId),\n assetId: getNativeAssetCaipAssetType(chainIdInCaip, nativeToken.symbol),\n };\n};\n\n/**\n * A function to return the txParam data for setting allowance to 0 for USDT on Ethereum\n *\n * @param destChainId - The destination chain ID\n * @returns The txParam data that will reset allowance to 0, combine it with the approval tx params received from Bridge API\n */\nexport const getEthUsdtResetData = (\n destChainId: GenericQuoteRequest['destChainId'],\n) => {\n const spenderAddress = isCrossChain(CHAIN_IDS.MAINNET, destChainId)\n ? METABRIDGE_ETHEREUM_ADDRESS\n : SWAPS_CONTRACT_ADDRESSES[CHAIN_IDS.MAINNET];\n const UsdtContractInterface = new Contract(ETH_USDT_ADDRESS, abiERC20)\n .interface;\n const data = UsdtContractInterface.encodeFunctionData('approve', [\n spenderAddress,\n '0',\n ]);\n\n return data as Hex;\n};\n\nexport const isEthUsdt = (\n chainId: GenericQuoteRequest['srcChainId'],\n address: string,\n) =>\n formatChainIdToDec(chainId) === ChainId.ETH &&\n address.toLowerCase() === ETH_USDT_ADDRESS.toLowerCase();\n\nexport const sumHexes = (...hexStrings: string[]): Hex => {\n if (hexStrings.length === 0) {\n return '0x0';\n }\n\n const sum = hexStrings.reduce(\n (acc, hexString) => acc + BigInt(hexString),\n BigInt(0),\n );\n return `0x${sum.toString(16)}`;\n};\n\n/**\n * Checks whether the provided address is strictly equal to the address for\n * the default swaps token of the provided chain.\n *\n * @param address - The string to compare to the default token address\n * @param chainId - The hex encoded chain ID of the default swaps token to check\n * @returns Whether the address is the provided chain's default token address\n */\nexport const isSwapsDefaultTokenAddress = (\n address: string,\n chainId: Hex | CaipChainId,\n) => {\n if (!address || !chainId) {\n return false;\n }\n\n return address === getNativeAssetForChainId(chainId)?.address;\n};\n\n/**\n * Checks whether the provided symbol is strictly equal to the symbol for\n * the default swaps token of the provided chain.\n *\n * @param symbol - The string to compare to the default token symbol\n * @param chainId - The hex encoded chain ID of the default swaps token to check\n * @returns Whether the symbol is the provided chain's default token symbol\n */\nexport const isSwapsDefaultTokenSymbol = (\n symbol: string,\n chainId: Hex | CaipChainId,\n) => {\n if (!symbol || !chainId) {\n return false;\n }\n\n return symbol === getNativeAssetForChainId(chainId)?.symbol;\n};\n\n/**\n * Checks whether the address is a native asset in any supported xchain swaps network\n *\n * @param address - The address to check\n * @returns Whether the address is a native asset\n */\nexport const isNativeAddress = (address?: string | null) =>\n address === AddressZero || // bridge and swap apis set the native asset address to zero\n address === '' || // assets controllers set the native asset address to an empty string\n !address ||\n (!isStrictHexString(address) &&\n Object.values(SYMBOL_TO_SLIP44_MAP).some(\n // check if it matches any supported SLIP44 references\n (reference) => address.includes(reference) || reference.endsWith(address),\n ));\n\n/**\n * Checks whether the chainId matches Solana in CaipChainId or number format\n *\n * @param chainId - The chainId to check\n * @returns Whether the chainId is Solana\n */\nexport const isSolanaChainId = (\n chainId: Hex | number | CaipChainId | string,\n) => {\n if (isCaipChainId(chainId)) {\n return chainId === SolScope.Mainnet.toString();\n }\n return chainId.toString() === ChainId.SOLANA.toString();\n};\n\nexport const isBitcoinChainId = (\n chainId: Hex | number | CaipChainId | string,\n) => {\n if (isCaipChainId(chainId)) {\n return chainId === BtcScope.Mainnet.toString();\n }\n return chainId.toString() === ChainId.BTC.toString();\n};\n\nexport const isTronChainId = (chainId: Hex | number | CaipChainId | string) => {\n if (isCaipChainId(chainId)) {\n return chainId === TrxScope.Mainnet.toString();\n }\n return chainId.toString() === ChainId.TRON.toString();\n};\n\n/**\n * Checks whether the chainId matches Stellar pubnet or testnet (CAIP-2).\n *\n * @param chainId - The chainId to check\n * @returns Whether the chainId is Stellar\n */\nexport const isStellarChainId = (\n chainId: Hex | number | CaipChainId | string,\n): boolean => {\n if (isCaipChainId(chainId)) {\n return (\n chainId === XlmScope.Pubnet.toString() ||\n chainId === XlmScope.Testnet.toString()\n );\n }\n return chainId.toString() === ChainId.STELLAR.toString();\n};\n\n/**\n * Checks if a chain ID represents a non-EVM blockchain supported by swaps\n * Currently supports Solana, Bitcoin, Tron, and Stellar\n *\n * @param chainId - The chain ID to check\n * @returns True if the chain is a supported non-EVM chain, false otherwise\n */\nexport const isNonEvmChainId = (\n chainId: GenericQuoteRequest['srcChainId'],\n): boolean => {\n return (\n isSolanaChainId(chainId) ||\n isBitcoinChainId(chainId) ||\n isTronChainId(chainId) ||\n isStellarChainId(chainId)\n );\n};\n\nexport const isEvmQuoteResponse = (\n quoteResponse: QuoteResponseV1,\n): quoteResponse is QuoteResponseV1<TxData, TxData> => {\n return !isNonEvmChainId(quoteResponse.quote.srcChainId);\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"caip-formatters.d.ts","sourceRoot":"","sources":["../../src/utils/caip-formatters.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAWvD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,YACrB,GAAG,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,KAC3C,WAuBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,YACpB,MAAM,GAAG,GAAG,GAAG,WAAW,GAAG,MAAM,WAwB7C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,YACpB,GAAG,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,KAC3C,GAgBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,YAAa,MAAM,WAgB3D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,qBACf,GAAG,GAAG,aAAa,GAAG,MAAM,YACpC,mBAAmB,CAAC,YAAY,CAAC,KAC1C,aAAa,GAAG,SAkClB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"caip-formatters.js","sourceRoot":"","sources":["../../src/utils/caip-formatters.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { getAddress } from '@ethersproject/address';\nimport { AddressZero } from '@ethersproject/constants';\nimport {\n convertHexToDecimal,\n toChecksumHexAddress,\n} from '@metamask/controller-utils';\nimport { BtcScope, SolScope, TrxScope, XlmScope } from '@metamask/keyring-api';\nimport { toEvmCaipChainId } from '@metamask/multichain-network-controller';\nimport {\n isCaipChainId,\n isStrictHexString,\n parseCaipChainId,\n isCaipReference,\n isCaipAssetType,\n CaipAssetTypeStruct,\n numberToHex,\n} from '@metamask/utils';\nimport type { CaipAssetType, CaipChainId, Hex } from '@metamask/utils';\n\nimport type { GenericQuoteRequest } from '../types.js';\nimport { ChainId } from '../types.js';\nimport {\n getNativeAssetForChainId,\n isBitcoinChainId,\n isNativeAddress,\n isSolanaChainId,\n isStellarChainId,\n isTronChainId,\n} from './bridge.js';\n\n/**\n * Converts a chainId to a CaipChainId\n *\n * @param chainId - The chainId to convert\n * @returns The CaipChainId\n */\nexport const formatChainIdToCaip = (\n chainId: Hex | number | CaipChainId | string,\n): CaipChainId => {\n if (isCaipChainId(chainId)) {\n return chainId;\n }\n if (isStrictHexString(chainId)) {\n return toEvmCaipChainId(chainId);\n }\n if (isSolanaChainId(chainId)) {\n return SolScope.Mainnet;\n }\n if (isBitcoinChainId(chainId)) {\n return BtcScope.Mainnet;\n }\n if (isTronChainId(chainId)) {\n return TrxScope.Mainnet;\n }\n if (isStellarChainId(chainId)) {\n if (chainId === XlmScope.Testnet) {\n return XlmScope.Testnet;\n }\n return XlmScope.Pubnet;\n }\n return toEvmCaipChainId(numberToHex(Number(chainId)));\n};\n\n/**\n * Converts a chainId to a decimal number that can be used for bridge-api requests\n *\n * @param chainId - The chainId to convert\n * @returns The decimal number\n */\nexport const formatChainIdToDec = (\n chainId: number | Hex | CaipChainId | string,\n) => {\n if (isStrictHexString(chainId)) {\n return convertHexToDecimal(chainId);\n }\n if (chainId === SolScope.Mainnet) {\n return ChainId.SOLANA;\n }\n if (chainId === BtcScope.Mainnet) {\n return ChainId.BTC;\n }\n if (chainId === TrxScope.Mainnet) {\n return ChainId.TRON;\n }\n if (isStellarChainId(chainId)) {\n return ChainId.STELLAR;\n }\n if (isCaipChainId(chainId)) {\n return Number(chainId.split(':').at(-1));\n }\n if (typeof chainId === 'string') {\n return parseInt(chainId, 10);\n }\n return chainId;\n};\n\n/**\n * Converts a chainId to a hex string used to read controller data within the app\n * Hex chainIds are also used for fetching exchange rates\n *\n * @param chainId - The chainId to convert\n * @returns The hex string\n */\nexport const formatChainIdToHex = (\n chainId: Hex | CaipChainId | string | number,\n): Hex => {\n if (isStrictHexString(chainId)) {\n return chainId;\n }\n if (typeof chainId === 'number' || parseInt(chainId, 10)) {\n return numberToHex(Number(chainId));\n }\n if (isCaipChainId(chainId)) {\n const { reference } = parseCaipChainId(chainId);\n if (isCaipReference(reference) && !isNaN(Number(reference))) {\n return numberToHex(Number(reference));\n }\n }\n // Throw an error if a non-evm chainId is passed to this function\n // This should never happen, but it's a sanity check\n throw new Error(`Invalid cross-chain swaps chainId: ${chainId}`);\n};\n\n/**\n * Converts an asset or account address to a string that can be used for bridge-api requests\n *\n * @param address - The address to convert\n * @returns The converted address\n */\nexport const formatAddressToCaipReference = (address: string) => {\n if (isStrictHexString(address)) {\n return getAddress(address);\n }\n // If the address looks like a native token, return the zero address because it's\n // what bridge-api uses to represent a native asset\n if (isNativeAddress(address)) {\n return AddressZero;\n }\n const addressWithoutPrefix = address.split(':').at(-1);\n // If the address is not a valid hex string or CAIP address, throw an error\n // This should never happen, but it's a sanity check\n if (!addressWithoutPrefix) {\n throw new Error('Invalid address');\n }\n return addressWithoutPrefix;\n};\n\n/**\n * Converts an address or assetId to a checksummed CaipAssetType\n *\n * @param addressOrAssetId - The address or assetId to convert\n * @param chainId - The chainId of the asset\n * @returns The CaipAssetType\n */\nexport const formatAddressToAssetId = (\n addressOrAssetId: Hex | CaipAssetType | string,\n chainId?: GenericQuoteRequest['srcChainId'],\n): CaipAssetType | undefined => {\n if (isCaipAssetType(addressOrAssetId)) {\n return addressOrAssetId;\n }\n if (!chainId) {\n return undefined;\n }\n\n const chainIdCaip = formatChainIdToCaip(chainId);\n if (isNativeAddress(addressOrAssetId)) {\n return getNativeAssetForChainId(chainIdCaip).assetId;\n }\n if (chainIdCaip === SolScope.Mainnet) {\n return CaipAssetTypeStruct.create(\n `${chainIdCaip}/token:${addressOrAssetId}`,\n );\n }\n\n if (chainIdCaip === TrxScope.Mainnet) {\n return CaipAssetTypeStruct.create(\n `${chainIdCaip}/trc20:${addressOrAssetId}`,\n );\n }\n\n // EVM assets\n if (!isStrictHexString(addressOrAssetId)) {\n return undefined;\n }\n\n // EVM assets\n const checksummedAddress = toChecksumHexAddress(addressOrAssetId);\n return CaipAssetTypeStruct.create(\n `${chainIdCaip}/erc20:${checksummedAddress}`,\n );\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/utils/feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AAMjG,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,aAAa,CAAC;AAIrB,eAAO,MAAM,kBAAkB,uBACT,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAe/C,CAAC;AAEF,eAAO,MAAM,mBAAmB,uBACV,OAAO,KAC1B,0BAgBF,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,SAAS;IACR,IAAI,CACF,MAAM,EAAE,sCAAsC,GAC7C,gCAAgC,CAAC;CACrC,EACD,SAAS,EAAE,CAAC,GAAG,0BAA0B,CAmB1C;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,kBACrB,MAAM,sBACD,MAAM,YAmB3B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../src/utils/feature-flags.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,kBAA8C,EAC9C,EAAE;IACF,MAAM,YAAY,GAAG,CAAC,MAA0C,EAAE,EAAE,CAClE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAC3B,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1B,GAAG,GAAG;QACN,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;KACtC,CAAC,EACF,EAAE,CACH,CAAC;IAEJ,OAAO;QACL,GAAG,kBAAkB;QACrB,MAAM,EAAE,YAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC;KAChD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,kBAA2B,EACC,EAAE;IAC9B,IAAI,4BAA4B,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACrD,MAAM,cAAc,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;QAC9D,sEAAsE;QACtE,IACE,CAAC,cAAc,CAAC,YAAY;YAC5B,cAAc,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EACxC,CAAC;YACD,OAAO;gBACL,GAAG,cAAc;gBACjB,YAAY,EAAE,CAAC,GAAG,qBAAqB,CAAC;aACzC,CAAC;QACJ,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,OAAO,2BAA2B,CAAC;AACrC,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAMnC,SAAY;IACZ,kGAAkG;IAClG,MAAM,gCAAgC,GAAG,SAAS,CAAC,IAAI,CACrD,sCAAsC,CACvC,CAAC;IAEF,wDAAwD;IACxD,2GAA2G;IAC3G,0FAA0F;IAC1F,2HAA2H;IAC3H,uHAAuH;IACvH,MAAM,cAAc,GAClB,gCAAgC,EAAE,kBAAkB,EAAE,cAAc,CAAC;IAEvE,uGAAuG;IACvG,MAAM,eAAe,GACnB,gCAAgC,EAAE,kBAAkB,EAAE,YAAY,CAAC;IAErE,OAAO,mBAAmB,CAAC,cAAc,IAAI,eAAe,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,aAAqB,EACrB,kBAA0B,EAC1B,EAAE;IACF,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,aAAa;SAC1D,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,MAAM,CAAC,CAAC;IACf,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,GAC1D,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE5C,IAAI,WAAW,GAAG,gBAAgB,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,WAAW,KAAK,gBAAgB,IAAI,WAAW,GAAG,gBAAgB,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CACL,WAAW,KAAK,gBAAgB;QAChC,WAAW,KAAK,gBAAgB;QAChC,WAAW,IAAI,gBAAgB,CAChC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { RemoteFeatureFlagControllerState } from '@metamask/remote-feature-flag-controller';\n\nimport {\n DEFAULT_CHAIN_RANKING,\n DEFAULT_FEATURE_FLAG_CONFIG,\n} from '../constants/bridge.js';\nimport type {\n FeatureFlagsPlatformConfig,\n ChainConfiguration,\n} from '../types.js';\nimport { validateFeatureFlagsResponse } from '../validators/feature-flags.js';\nimport { formatChainIdToCaip } from './caip-formatters.js';\n\nexport const formatFeatureFlags = (\n bridgeFeatureFlags: FeatureFlagsPlatformConfig,\n) => {\n const getChainsObj = (chains: Record<string, ChainConfiguration>) =>\n Object.entries(chains).reduce(\n (acc, [chainId, value]) => ({\n ...acc,\n [formatChainIdToCaip(chainId)]: value,\n }),\n {},\n );\n\n return {\n ...bridgeFeatureFlags,\n chains: getChainsObj(bridgeFeatureFlags.chains),\n };\n};\n\nexport const processFeatureFlags = (\n bridgeFeatureFlags: unknown,\n): FeatureFlagsPlatformConfig => {\n if (validateFeatureFlagsResponse(bridgeFeatureFlags)) {\n const formattedFlags = formatFeatureFlags(bridgeFeatureFlags);\n // If chainRanking is undefined or empty, use the default chainRanking\n if (\n !formattedFlags.chainRanking ||\n formattedFlags.chainRanking.length === 0\n ) {\n return {\n ...formattedFlags,\n chainRanking: [...DEFAULT_CHAIN_RANKING],\n };\n }\n return formattedFlags;\n }\n return DEFAULT_FEATURE_FLAG_CONFIG;\n};\n\n/**\n * Gets the bridge feature flags from the remote feature flag controller\n *\n * @param messenger - Any messenger with access to RemoteFeatureFlagController:getState\n * @returns The bridge feature flags\n */\nexport function getBridgeFeatureFlags<\n T extends {\n call(\n action: 'RemoteFeatureFlagController:getState',\n ): RemoteFeatureFlagControllerState;\n },\n>(messenger: T): FeatureFlagsPlatformConfig {\n // This will return the bridgeConfig for the current platform even without specifying the platform\n const remoteFeatureFlagControllerState = messenger.call(\n 'RemoteFeatureFlagController:getState',\n );\n\n // bridgeConfigV2 is the feature flag for the mobile app\n // bridgeConfig for Mobile has been deprecated since release of bridge and Solana in 7.46.0 was pushed back\n // and there's no way to turn on bridgeConfig for 7.47.0 without affecting 7.46.0 as well.\n // You will still get bridgeConfig returned from remoteFeatureFlagControllerState but you should use bridgeConfigV2 instead\n // Mobile's bridgeConfig will be permanently serving the disabled variation, so falling back to it in Mobile will be ok\n const rawMobileFlags =\n remoteFeatureFlagControllerState?.remoteFeatureFlags?.bridgeConfigV2;\n\n // Extension LaunchDarkly will not have the bridgeConfigV2 field, so we'll continue to use bridgeConfig\n const rawBridgeConfig =\n remoteFeatureFlagControllerState?.remoteFeatureFlags?.bridgeConfig;\n\n return processFeatureFlags(rawMobileFlags || rawBridgeConfig);\n}\n\n/**\n * Checks if the client version is greater than or equal to the minimum required version\n *\n * @param clientVersion - The client version\n * @param minRequiredVersion - The minimum required version\n * @returns True if the client version is greater than or equal to the minimum required version, false otherwise\n */\nexport const hasMinimumRequiredVersion = (\n clientVersion: string,\n minRequiredVersion: string,\n) => {\n const [clientMajor, clientMinor, clientPatch] = clientVersion\n .split('.')\n .map(Number);\n const [minRequiredMajor, minRequiredMinor, minRequiredPatch] =\n minRequiredVersion.split('.').map(Number);\n\n if (clientMajor > minRequiredMajor) {\n return true;\n }\n if (clientMajor === minRequiredMajor && clientMinor > minRequiredMinor) {\n return true;\n }\n return (\n clientMajor === minRequiredMajor &&\n clientMinor === minRequiredMinor &&\n clientPatch >= minRequiredPatch\n );\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch-server-events.d.ts","sourceRoot":"","sources":["../../src/utils/fetch-server-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,QACvB,MAAM,+DAOR,WAAW,GAAG;IACf,SAAS,EAAE,CACT,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,CAAC,EAAE,MAAM,KACf,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,EAAE,OAAO,KAAK,CAAC;CACvB,kBA2DF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch-server-events.js","sourceRoot":"","sources":["../../src/utils/fetch-server-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,GAAW,EACX,EACE,SAAS,EACT,OAAO,EACP,OAAO,EACP,OAAO,EACP,GAAG,cAAc,EASlB,EACD,EAAE;IACF,IAAI,MAA2D,CAAC;IAChE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAE5C,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAElD,wCAAwC;YACxC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAE3B,6CAA6C;YAC7C,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,SAA6B,CAAC;gBAClC,MAAM,SAAS,GAAa,EAAE,CAAC;gBAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC9B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnC,CAAC;yBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBACpC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;gBAED,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/D,CAAC;gBACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBACxD,MAAM,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,OAAO,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,MAAM,EAAE,MAAM,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;AACH,CAAC,CAAC","sourcesContent":["/**\n * Streams server-sent events from the given URL\n *\n * @param url - The URL to stream events from\n * @param options - The options for the SSE stream\n * @param options.onMessage - The function to call when a message is received\n * @param options.onError - The function to call when an error occurs\n * @param options.onClose - The function to call when the stream finishes successfully\n * @param options.fetchFn - The function to use to fetch the events. Consumers need to provide a fetch function that supports server-sent events.\n */\nexport const fetchServerEvents = async (\n url: string,\n {\n onMessage,\n onError,\n onClose,\n fetchFn,\n ...requestOptions\n }: RequestInit & {\n onMessage: (\n data: Record<string, unknown>,\n eventName?: string,\n ) => Promise<void>;\n onError?: (err: unknown) => void;\n onClose?: () => void | Promise<void>;\n fetchFn: typeof fetch;\n },\n) => {\n let reader: ReadableStreamDefaultReader<Uint8Array> | undefined;\n try {\n const response = await fetchFn(url, requestOptions);\n if (!response.ok || !response.body) {\n throw new Error(`${response.status}`);\n }\n\n reader = response.body.getReader();\n const decoder = new TextDecoder('utf-8');\n let buffer = '';\n\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) {\n break;\n }\n\n buffer += decoder.decode(value, { stream: true });\n\n // Split SSE messages at double newlines\n const parts = buffer.split('\\n\\n');\n buffer = parts.pop() || '';\n\n // Split chunks into lines and parse the data\n for (const chunk of parts) {\n const lines = chunk.split('\\n');\n let eventName: string | undefined;\n const dataLines: string[] = [];\n\n for (const line of lines) {\n if (line.startsWith('event:')) {\n eventName = line.slice(6).trim();\n } else if (line.startsWith('data:')) {\n dataLines.push(line.slice(5).trim());\n }\n }\n\n if (eventName === 'error') {\n throw new Error(`Bridge-api error: ${dataLines.join('\\n')}`);\n }\n if (dataLines.length > 0) {\n const parsedJSONData = JSON.parse(dataLines.join('\\n'));\n await onMessage(parsedJSONData, eventName);\n }\n }\n }\n await onClose?.();\n } catch (error) {\n onError?.(error);\n } finally {\n try {\n await reader?.cancel();\n } catch (error) {\n console.error('Error cleaning up stream reader', error);\n }\n }\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { StructError } from '@metamask/superstruct';\nimport { KnownCaipNamespace } from '@metamask/utils';\nimport type { CaipAssetType, CaipChainId, Hex } from '@metamask/utils';\n\nimport { toQuoteResponseV2 } from '../coercers/quote-response-v1-to-v2.js';\nimport { toQuoteResponseV1 } from '../coercers/quote-response-v2-to-v1.js';\nimport type {\n FetchFunction,\n GenericQuoteRequest,\n QuoteRequest,\n TokenFeature,\n QuoteStreamCompleteData,\n BatchSellTradesRequest,\n BatchSellTradesResponse,\n} from '../types.js';\nimport { validateBatchSellTradesResponse } from '../validators/batch-sell.js';\nimport type { BridgeAsset } from '../validators/bridge-asset.js';\nimport { validateBridgeAsset } from '../validators/bridge-asset.js';\nimport type { FeatureId } from '../validators/feature-flags.js';\nimport type { QuoteResponseV1 } from '../validators/quote-response-v1.js';\nimport { validateQuoteResponseV1 } from '../validators/quote-response-v1.js';\nimport type { QuoteResponse } from '../validators/quote-response.js';\nimport { validateQuoteStreamComplete } from '../validators/quote-stream-complete.js';\nimport { validateTokenFeature } from '../validators/token-feature.js';\nimport { isEvmTxData } from '../validators/trade.js';\nimport type { TxData } from '../validators/trade.js';\nimport { getEthUsdtResetData } from './bridge.js';\nimport {\n formatAddressToAssetId,\n formatAddressToCaipReference,\n formatChainIdToDec,\n} from './caip-formatters.js';\nimport { fetchServerEvents } from './fetch-server-events.js';\nimport type { QuoteMetadata } from './quote-metadata/types.js';\nimport { formatStructErrors } from './struct-error.js';\n\nexport const getClientHeaders = ({\n clientId,\n clientVersion,\n jwt,\n}: {\n clientId: string;\n clientVersion?: string;\n jwt?: string;\n}) => ({\n 'X-Client-Id': clientId,\n ...(jwt ? { Authorization: `Bearer ${jwt}` } : {}),\n ...(clientVersion ? { 'Client-Version': clientVersion } : {}),\n});\n\n/**\n * Returns a list of enabled (unblocked) tokens\n *\n * @deprecated Use the popular and search bridge-api endpoints instead\n *\n * @param chainId - The chain ID to fetch tokens for\n * @param clientId - The client ID for metrics\n * @param jwt - The JWT token for authentication\n * @param fetchFn - The fetch function to use\n * @param bridgeApiBaseUrl - The base URL for the bridge API\n * @param clientVersion - The client version for metrics (optional)\n * @returns A list of enabled (unblocked) tokens\n */\nexport async function fetchBridgeTokens(\n chainId: Hex | CaipChainId,\n clientId: string,\n jwt: string | undefined,\n fetchFn: FetchFunction,\n bridgeApiBaseUrl: string,\n clientVersion?: string,\n): Promise<Record<string, BridgeAsset>> {\n const url = `${bridgeApiBaseUrl}/getTokens?chainId=${formatChainIdToDec(chainId)}`;\n\n // TODO we will need to cache these. In Extension fetchWithCache is used. This is due to the following:\n // If we allow selecting dest networks which the user has not imported,\n // note that the Assets controller won't be able to provide tokens. In extension we fetch+cache the token list from bridge-api to handle this\n const tokens = await fetchFn(url, {\n headers: getClientHeaders({ clientId, clientVersion, jwt }),\n });\n\n const transformedTokens: Record<string, BridgeAsset> = {};\n tokens.forEach((token: unknown) => {\n if (validateBridgeAsset(token)) {\n transformedTokens[token.address] = token;\n }\n });\n return transformedTokens;\n}\n\n/**\n * Converts the generic quote request to QuoteRequest\n *\n * @param request - The quote request\n * @returns A QuoteRequest object\n */\nconst formatQuoteRequest = (request: GenericQuoteRequest): QuoteRequest => {\n const destWalletAddress = request.destWalletAddress ?? request.walletAddress;\n // Transform the generic quote request into QuoteRequest\n const normalizedRequest: QuoteRequest = {\n walletAddress: formatAddressToCaipReference(request.walletAddress),\n destWalletAddress: formatAddressToCaipReference(destWalletAddress),\n srcChainId: formatChainIdToDec(request.srcChainId),\n destChainId: formatChainIdToDec(request.destChainId),\n srcTokenAddress: formatAddressToCaipReference(request.srcTokenAddress),\n destTokenAddress: formatAddressToCaipReference(request.destTokenAddress),\n srcTokenAmount: request.srcTokenAmount,\n insufficientBal: Boolean(request.insufficientBal),\n resetApproval: Boolean(request.resetApproval),\n gasIncluded: Boolean(request.gasIncluded),\n gasIncluded7702: Boolean(request.gasIncluded7702),\n };\n if (request.slippage !== undefined) {\n normalizedRequest.slippage = request.slippage;\n }\n if (request.fee !== undefined) {\n normalizedRequest.fee = request.fee;\n }\n if (request.aggIds && request.aggIds.length > 0) {\n normalizedRequest.aggIds = request.aggIds;\n }\n if (request.bridgeIds && request.bridgeIds.length > 0) {\n normalizedRequest.bridgeIds = request.bridgeIds;\n }\n\n return normalizedRequest;\n};\n\n/**\n * Converts the generic quote request to the type that the bridge-api expects\n *\n * @param normalizedRequest - The normalized quote request\n * @returns A URLSearchParams object with the query parameters\n */\nconst formatQueryParams = (\n normalizedRequest: QuoteRequest,\n): URLSearchParams => {\n const queryParams = new URLSearchParams();\n Object.entries(normalizedRequest).forEach(([key, value]) => {\n queryParams.append(key, value.toString());\n });\n return queryParams;\n};\n\n/**\n * Fetches quotes from the bridge-api's getQuote endpoint\n *\n * @param request - The quote request\n * @param signal - The abort signal\n * @param clientId - The client ID for metrics\n * @param jwt - The JWT token for authentication\n * @param fetchFn - The fetch function to use\n * @param bridgeApiBaseUrl - The base URL for the bridge API\n * @param featureId - The feature ID to append to each quote\n * @param clientVersion - The client version for metrics (optional)\n * @returns A list of bridge tx quotes\n */\nexport async function fetchBridgeQuotes(\n request: GenericQuoteRequest,\n signal: AbortSignal | null,\n clientId: string,\n jwt: string | undefined,\n fetchFn: FetchFunction,\n bridgeApiBaseUrl: string,\n featureId: FeatureId | null,\n clientVersion?: string,\n): Promise<{\n quotes: QuoteResponseV1[];\n validationFailures: string[];\n}> {\n const normalizedRequest = formatQuoteRequest(request);\n const queryParams = formatQueryParams(normalizedRequest);\n\n const url = `${bridgeApiBaseUrl}/getQuote?${queryParams}`;\n const quotes: unknown[] = await fetchFn(url, {\n headers: getClientHeaders({ clientId, clientVersion, jwt }),\n signal,\n });\n\n const uniqueValidationFailures: Set<string> = new Set<string>([]);\n const filteredQuotes = quotes\n .filter((quoteResponse: unknown): quoteResponse is QuoteResponseV1 => {\n try {\n return validateQuoteResponseV1(quoteResponse);\n } catch (error) {\n if (error instanceof StructError) {\n error.failures().forEach(({ branch, path }) => {\n const aggregatorId =\n branch?.[0]?.quote?.bridgeId ??\n branch?.[0]?.quote?.bridges?.[0] ??\n (quoteResponse as QuoteResponseV1)?.quote?.bridgeId ??\n (quoteResponse as QuoteResponseV1)?.quote?.bridges?.[0] ??\n 'unknown';\n const pathString = path?.join('.') || 'unknown';\n uniqueValidationFailures.add([aggregatorId, pathString].join('|'));\n });\n }\n return false;\n }\n })\n .map((quote) => ({\n ...quote,\n featureId: featureId ?? undefined,\n // Append the reset approval data to the quote response if the request\n // has resetApproval set to true and the quote has an approval\n resetApproval:\n request.resetApproval && quote.approval && isEvmTxData(quote.approval)\n ? {\n ...quote.approval,\n data: getEthUsdtResetData(request.destChainId),\n }\n : undefined,\n }));\n\n const validationFailures = Array.from(uniqueValidationFailures);\n if (uniqueValidationFailures.size > 0) {\n console.warn('Quote validation failed', validationFailures);\n }\n\n return {\n quotes: filteredQuotes,\n validationFailures,\n };\n}\n\nconst fetchAssetPricesForCurrency = async (request: {\n currency: string;\n assetIds: Set<CaipAssetType>;\n clientId: string;\n clientVersion?: string;\n fetchFn: FetchFunction;\n signal?: AbortSignal;\n}): Promise<Record<CaipAssetType, { [currency: string]: string }>> => {\n const { currency, assetIds, clientId, clientVersion, fetchFn, signal } =\n request;\n const validAssetIds = Array.from(assetIds).filter(Boolean);\n if (validAssetIds.length === 0) {\n return {};\n }\n\n const queryParams = new URLSearchParams({\n assetIds: validAssetIds.filter(Boolean).join(','),\n vsCurrency: currency,\n });\n const url = `https://price.api.cx.metamask.io/v3/spot-prices?${queryParams}`;\n const priceApiResponse = (await fetchFn(url, {\n headers: getClientHeaders({ clientId, clientVersion }),\n signal,\n })) as unknown as Record<CaipAssetType, { [currency: string]: number }>;\n if (!priceApiResponse || typeof priceApiResponse !== 'object') {\n return {};\n }\n\n return Object.entries(priceApiResponse).reduce<\n Record<CaipAssetType, { [currency: string]: string }>\n >((acc, [assetId, currencyToPrice]) => {\n if (!currencyToPrice) {\n return acc;\n }\n if (!acc[assetId as CaipAssetType]) {\n acc[assetId as CaipAssetType] = {};\n }\n if (currencyToPrice[currency]) {\n acc[assetId as CaipAssetType][currency] =\n currencyToPrice[currency].toString();\n }\n return acc;\n }, {});\n};\n\n/**\n * Fetches the asset prices from the price API for multiple currencies\n *\n * @param request - The request object\n * @returns The asset prices by assetId\n */\nexport const fetchAssetPrices = async (\n request: {\n currencies: Set<string>;\n } & Omit<Parameters<typeof fetchAssetPricesForCurrency>[0], 'currency'>,\n): Promise<\n Record<CaipAssetType, { [currency: string]: string } | undefined>\n> => {\n const { currencies, ...args } = request;\n\n const combinedPrices = await Promise.allSettled(\n Array.from(currencies).map(\n async (currency) =>\n await fetchAssetPricesForCurrency({ ...args, currency }),\n ),\n ).then((priceApiResponse) => {\n return priceApiResponse.reduce<\n Record<CaipAssetType, { [currency: string]: string }>\n >((acc, result) => {\n if (result.status === 'fulfilled') {\n Object.entries(result.value).forEach(([assetId, currencyToPrice]) => {\n const existingPrices = acc[assetId as CaipAssetType];\n if (!existingPrices) {\n acc[assetId as CaipAssetType] = {};\n }\n Object.entries(currencyToPrice).forEach(([currency, price]) => {\n acc[assetId as CaipAssetType][currency] = price;\n });\n });\n }\n return acc;\n }, {});\n });\n\n return combinedPrices;\n};\n\nconst getQuoteRequestId = ({\n srcChainId,\n destChainId,\n srcTokenAddress,\n destTokenAddress,\n}: QuoteRequest): string =>\n `${formatAddressToAssetId(srcTokenAddress, srcChainId)}-${formatAddressToAssetId(destTokenAddress, destChainId)}`.toLowerCase();\n\nconst getQuoteResponseId = ({\n src: { asset: srcAsset },\n dest: { asset: destAsset },\n}: QuoteResponse['quote']): string =>\n `${srcAsset.assetId}-${destAsset.assetId}`.toLowerCase();\n\n/**\n * Fetches quotes from the bridge-api\n *\n * @param fetchFn - The fetch function to use\n * @param quoteRequests - An array of GenericQuoteRequest objects\n * @param signal - The abort signal\n * @param featureId - The {@link FeatureId} for the experience that's requesting the quotes\n * @param clientId - The client ID for metrics\n * @param jwt - The JWT token for authentication\n * @param bridgeApiBaseUrl - The base URL for the bridge API\n * @param serverEventHandlers - The server event handlers\n * @param serverEventHandlers.onQuoteValidationFailure - The function to handle quote validation failures\n * @param serverEventHandlers.onValidQuoteReceived - The function to handle valid quotes\n * @param serverEventHandlers.onTokenWarning - The function to handle token warning events\n * @param serverEventHandlers.onComplete - The function to handle the complete event emitted when the stream finishes\n * @param serverEventHandlers.onClose - The function to run when the stream is closed and there are no thrown errors\n * @param clientVersion - The client version for metrics (optional)\n * @returns A list of bridge tx quote promises\n */\nexport async function fetchBridgeQuoteStream(\n fetchFn: FetchFunction,\n quoteRequests: GenericQuoteRequest[],\n signal: AbortSignal | undefined,\n featureId: FeatureId,\n clientId: string,\n jwt: string | undefined,\n bridgeApiBaseUrl: string,\n serverEventHandlers: {\n onClose: () => void | Promise<void>;\n onQuoteValidationFailure: (validationFailures: string[]) => void;\n onValidQuoteReceived: (\n quotes: QuoteResponse & { resetApproval?: TxData },\n ) => Promise<void>;\n onTokenWarning: (warning: TokenFeature) => void;\n onComplete: (data: QuoteStreamCompleteData) => void;\n },\n clientVersion?: string,\n): Promise<void> {\n /**\n * If the request includes multiple quote requests, it is a batch sell request.\n * A batch sell consists of multiple swaps that are executed in a single tx submission.\n */\n const isBatchSellRequest = quoteRequests.length > 1;\n const normalizedQuoteRequests = quoteRequests.map(formatQuoteRequest);\n const quoteRequestIds = isBatchSellRequest\n ? normalizedQuoteRequests.map(getQuoteRequestId)\n : undefined;\n\n const onQuoteReceived = async (quoteResponse: unknown): Promise<void> => {\n const uniqueValidationFailures: Set<string> = new Set<string>([]);\n\n try {\n // Always coerce to QuoteResponseV2\n const quoteResponseV2 = toQuoteResponseV2(quoteResponse);\n // Fallback to 0 if the quote doesn't match any requests\n const matchedQuoteRequestIdx = Math.max(\n quoteRequestIds?.findIndex((id) => {\n return id === getQuoteResponseId(quoteResponseV2.quote);\n }) ?? 0,\n 0,\n );\n const matchingQuoteRequest =\n normalizedQuoteRequests[matchedQuoteRequestIdx];\n\n return await serverEventHandlers.onValidQuoteReceived({\n ...quoteResponseV2,\n featureId,\n // Append the reset approval data to the quote response if the request has resetApproval set to true and the quote has an approval\n resetApproval:\n quoteResponseV2.namespace === KnownCaipNamespace.Eip155 &&\n matchingQuoteRequest.resetApproval &&\n quoteResponseV2.approval\n ? {\n ...quoteResponseV2.approval,\n data: getEthUsdtResetData(matchingQuoteRequest.destChainId),\n }\n : undefined,\n ...(isBatchSellRequest && {\n quoteRequestIndex: matchedQuoteRequestIdx,\n }),\n });\n } catch (error) {\n if (error instanceof StructError) {\n console.warn('Quote validation failed', formatStructErrors(error));\n error.failures().forEach(({ branch, path }) => {\n const aggregatorId =\n branch?.[0]?.quote?.aggregator ??\n branch?.[0]?.quote?.protocols?.[0] ??\n (quoteResponse as QuoteResponseV1)?.quote?.protocols?.[0] ??\n (quoteResponse as QuoteResponseV1)?.quote?.bridgeId ??\n (quoteResponse as QuoteResponseV1)?.quote?.bridges?.[0] ??\n (quoteResponse as QuoteResponse)?.quote?.aggregator ??\n 'unknown';\n const pathString = path?.join('.') || 'unknown';\n uniqueValidationFailures.add([aggregatorId, pathString].join('|'));\n });\n }\n const validationFailures = Array.from(uniqueValidationFailures);\n if (uniqueValidationFailures.size > 0) {\n return serverEventHandlers.onQuoteValidationFailure(validationFailures);\n }\n // Rethrow any unexpected errors\n throw error;\n }\n };\n\n const onTokenWarningReceived = (data: unknown): void => {\n try {\n if (validateTokenFeature(data)) {\n serverEventHandlers.onTokenWarning(data);\n }\n } catch (error) {\n console.warn('Token warning validation failed', error);\n }\n };\n\n const onCompleteReceived = (data: unknown): void => {\n try {\n if (validateQuoteStreamComplete(data)) {\n serverEventHandlers.onComplete(data);\n }\n } catch (error) {\n console.warn('Quote stream complete validation failed', error);\n }\n };\n\n const onMessage = async (\n data: Record<string, unknown>,\n eventName?: string,\n ): Promise<void> => {\n switch (eventName) {\n case 'quote':\n return await onQuoteReceived(data);\n case 'token_warning':\n return onTokenWarningReceived(data);\n case 'complete':\n return onCompleteReceived(data);\n default:\n return undefined;\n }\n };\n\n const sharedFetchOptions = {\n signal,\n onMessage,\n onError: (error: unknown) => {\n // Rethrow error to prevent silent fetch failures\n throw error;\n },\n onClose: async () => {\n await serverEventHandlers.onClose();\n },\n fetchFn,\n };\n\n if (isBatchSellRequest) {\n const urlStream = `${bridgeApiBaseUrl}/getBatchQuoteStream`;\n await fetchServerEvents(urlStream, {\n method: 'POST',\n body: JSON.stringify({ requests: normalizedQuoteRequests }),\n headers: {\n ...getClientHeaders({ clientId, clientVersion, jwt }),\n 'Content-Type': 'application/json',\n },\n ...sharedFetchOptions,\n });\n return;\n }\n\n const queryParams = formatQueryParams(normalizedQuoteRequests[0]);\n const urlStream = `${bridgeApiBaseUrl}/getQuoteStream?${queryParams}`;\n await fetchServerEvents(urlStream, {\n headers: {\n ...getClientHeaders({ clientId, clientVersion, jwt }),\n 'Content-Type': 'text/event-stream',\n },\n ...sharedFetchOptions,\n });\n}\n\nexport const formatBatchSellTradesRequest = (\n quotes: (QuoteResponse | (QuoteResponseV1 & QuoteMetadata) | null)[],\n stxEnabled: boolean,\n): BatchSellTradesRequest => ({\n quotes: quotes\n .filter(\n (quote): quote is QuoteResponse | (QuoteResponseV1 & QuoteMetadata) =>\n quote !== null && Boolean(quote),\n )\n .map(toQuoteResponseV1),\n stxEnabled,\n});\n\n/**\n * Fetches quotes from the bridge-api's getQuote endpoint\n *\n * @param quotes - The quotes to fetch the gasless transaction data and fees for. May contain null values if a quote is not available for a swap\n * @param stxEnabled - Flag to estimate gas cost more precisely for the batch sell feature.\n * @param signal - The abort signal\n * @param clientId - The client ID for metrics\n * @param jwt - The JWT token for authentication\n * @param fetchFn - The fetch function to use\n * @param bridgeApiBaseUrl - The base URL for the bridge API\n * @param clientVersion - The client version for metrics (optional)\n * @returns The batch sell trades and the total network fee\n */\nexport async function fetchBatchSellTrades(\n quotes: (QuoteResponse | null)[],\n stxEnabled: boolean,\n signal: AbortSignal | null,\n clientId: string,\n jwt: string | undefined,\n fetchFn: FetchFunction,\n bridgeApiBaseUrl: string,\n clientVersion?: string,\n): Promise<BatchSellTradesResponse> {\n const url = `${bridgeApiBaseUrl}/obtainGaslessBatch`;\n const request: BatchSellTradesRequest = formatBatchSellTradesRequest(\n quotes,\n stxEnabled,\n );\n const batchSellTradesResponse = await fetchFn(url, {\n headers: {\n ...getClientHeaders({\n clientId,\n clientVersion,\n jwt,\n }),\n 'Content-Type': 'application/json',\n },\n signal,\n method: 'POST',\n body: JSON.stringify(request),\n });\n\n if (!batchSellTradesResponse.ok) {\n throw new Error(\n `Failed to fetch batch sell trades. ${batchSellTradesResponse.statusText}`,\n );\n }\n\n try {\n const data = await batchSellTradesResponse.json();\n validateBatchSellTradesResponse(data);\n return data;\n } catch (error: unknown) {\n // TODO validation failure event\n throw new Error(`Invalid batch simulation response. ${error?.toString()}`);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/metrics/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,kCAAkC,uBAAuB,CAAC;AACvE,eAAO,MAAM,yBAAyB,eAAe,CAAC;AAEtD;;GAEG;AACH,oBAAY,0BAA0B;IACpC,aAAa,sCAAyD;IACtE,UAAU,mCAAsD;IAChE,YAAY,qCAAwD;IACpE,uBAAuB,kDAAqE;IAC5F,8BAA8B,mDAAsE;IACpG,eAAe,wCAA2D;IAC1E,cAAc,uCAA0D;IACxE,WAAW,oCAAuD;IAClE,SAAS,iCAAoD;IAC7D,SAAS,iCAAoD;IAC7D,MAAM,8BAAiD;IACvD,eAAe,yCAA4D;IAC3E,eAAe,yCAA4D;IAC3E,aAAa,sCAAyD;IACtE,yBAAyB,oDAAuE;IAChG,sBAAsB,gDAAmE;IACzF,sBAAsB,gDAAmE;IACzF,iBAAiB,2CAA8D;IAC/E,oBAAoB,8CAAiE;CACtF;AAED,oBAAY,yBAAyB;IACnC,wBAAwB,iCAAmD;IAC3E,iCAAiC,2CAA6D;IAC9F,wBAAwB,iCAAmD;IAC3E,+BAA+B,yCAA2D;IAC1F,6BAA6B,sCAAwD;CACtF;AAED,MAAM,MAAM,gCAAgC,GACxC,0BAA0B,GAC1B,yBAAyB,CAAC;AAE9B,oBAAY,aAAa;IACvB,iBAAiB,wBAAwB;IACzC,sBAAsB,6BAA6B;IACnD,iBAAiB,uBAAuB;CACzC;AAED,oBAAY,WAAW;IACrB,eAAe,sBAAsB;IACrC,mBAAmB,0BAA0B;IAC7C,UAAU,2BAA2B;IACrC,oBAAoB,0BAA0B;IAC9C,qBAAqB,sCAAsC;CAC5D;AAED;;;;GAIG;AACH,oBAAY,2BAA2B;IACrC,QAAQ,cAAc;IACtB,SAAS,eAAe;IACxB,eAAe,qBAAqB;IACpC,OAAO,YAAY;IACnB,wBAAwB,gCAAgC;IACxD,uBAAuB,+BAA+B;IACtD,qBAAqB,6BAA6B;IAClD,iBAAiB,uBAAuB;IACxC,kBAAkB,wBAAwB;IAC1C,QAAQ,cAAc;IACtB,OAAO,YAAY;IACnB,YAAY,mBAAmB;CAChC;AAED,oBAAY,wBAAwB;IAClC,SAAS,eAAe;IACxB,QAAQ,aAAa;IACrB,WAAW,iBAAiB;IAC5B,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,+BAA+B,GACvC,2BAA2B,GAC3B,wBAAwB,CAAC;AAE7B,oBAAY,iBAAiB;IAC3B,UAAU,QAAQ;IAClB,UAAU,QAAQ;IAClB,UAAU,QAAQ;IAClB,UAAU,QAAQ;IAElB,GAAG,QAAQ;CACZ;AAED,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;CAChC;AAED,oBAAY,eAAe;IACzB,MAAM,iBAAiB;IACvB,UAAU,eAAe;CAC1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/metrics/constants.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,MAAM,CAAC,MAAM,kCAAkC,GAAG,oBAAoB,CAAC;AACvE,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAEtD;;GAEG;AACH,MAAM,CAAN,IAAY,0BAoBX;AApBD,WAAY,0BAA0B;IACpC,iFAAsE,CAAA;IACtE,2EAAgE,CAAA;IAChE,+EAAoE,CAAA;IACpE,uGAA4F,CAAA;IAC5F,+GAAoG,CAAA;IACpG,qFAA0E,CAAA;IAC1E,mFAAwE,CAAA;IACxE,6EAAkE,CAAA;IAClE,wEAA6D,CAAA;IAC7D,wEAA6D,CAAA;IAC7D,kEAAuD,CAAA;IACvD,sFAA2E,CAAA;IAC3E,sFAA2E,CAAA;IAC3E,iFAAsE,CAAA;IACtE,2GAAgG,CAAA;IAChG,oGAAyF,CAAA;IACzF,oGAAyF,CAAA;IACzF,0FAA+E,CAAA;IAC/E,gGAAqF,CAAA;AACvF,CAAC,EApBW,0BAA0B,KAA1B,0BAA0B,QAoBrC;AAED,MAAM,CAAN,IAAY,yBAMX;AAND,WAAY,yBAAyB;IACnC,sFAA2E,CAAA;IAC3E,yGAA8F,CAAA;IAC9F,sFAA2E,CAAA;IAC3E,qGAA0F,CAAA;IAC1F,gGAAqF,CAAA;AACvF,CAAC,EANW,yBAAyB,KAAzB,yBAAyB,QAMpC;AAMD,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,0DAAyC,CAAA;IACzC,oEAAmD,CAAA;IACnD,yDAAwC,CAAA;AAC1C,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,oDAAqC,CAAA;IACrC,4DAA6C,CAAA;IAC7C,oDAAqC,CAAA;IACrC,6DAA8C,CAAA;IAC9C,0EAA2D,CAAA;AAC7D,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAED;;;;GAIG;AACH,MAAM,CAAN,IAAY,2BAaX;AAbD,WAAY,2BAA2B;IACrC,qDAAsB,CAAA;IACtB,uDAAwB,CAAA;IACxB,mEAAoC,CAAA;IACpC,kDAAmB,CAAA;IACnB,uFAAwD,CAAA;IACxD,qFAAsD,CAAA;IACtD,iFAAkD,CAAA;IAClD,uEAAwC,CAAA;IACxC,yEAA0C,CAAA;IAC1C,qDAAsB,CAAA;IACtB,kDAAmB,CAAA;IACnB,8DAA+B,CAAA;AACjC,CAAC,EAbW,2BAA2B,KAA3B,2BAA2B,QAatC;AAED,MAAM,CAAN,IAAY,wBAKX;AALD,WAAY,wBAAwB;IAClC,oDAAwB,CAAA;IACxB,iDAAqB,CAAA;IACrB,wDAA4B,CAAA;IAC5B,+CAAmB,CAAA;AACrB,CAAC,EALW,wBAAwB,KAAxB,wBAAwB,QAKnC;AAMD,MAAM,CAAN,IAAY,iBAOX;AAPD,WAAY,iBAAiB;IAC3B,uCAAkB,CAAA;IAClB,uCAAkB,CAAA;IAClB,uCAAkB,CAAA;IAClB,uCAAkB,CAAA;IAClB,uEAAuE;IACvE,gCAAW,CAAA;AACb,CAAC,EAPW,iBAAiB,KAAjB,iBAAiB,QAO5B;AAED,MAAM,CAAN,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B;;OAEG;IACH,oDAA+B,CAAA;IAC/B,oDAA+B,CAAA;AACjC,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;AAED,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,0CAAuB,CAAA;IACvB,4CAAyB,CAAA;AAC3B,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nexport const UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY = 'Unified SwapBridge';\nexport const BATCH_SELL_EVENT_CATEGORY = 'Batch Sell';\n\n/**\n * These event names map to events defined in the segment-schema: https://github.com/Consensys/segment-schema/tree/main/libraries/events/metamask-cross-chain-swaps\n */\nexport enum UnifiedSwapBridgeEventName {\n ButtonClicked = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Button Clicked`,\n PageViewed = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Page Viewed`,\n InputChanged = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Input Changed`,\n FiatCryptoToggleClicked = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Fiat Crypto Toggle Clicked`,\n InputSourceDestinationSwitched = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Source Destination Switched`,\n QuotesRequested = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Quotes Requested`,\n QuotesReceived = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Quotes Received`,\n QuotesError = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Quotes Error`,\n Submitted = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Submitted`,\n Completed = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Completed`,\n Failed = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Failed`,\n AllQuotesOpened = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} All Quotes Opened`,\n AllQuotesSorted = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} All Quotes Sorted`,\n QuoteSelected = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Quote Selected`,\n AssetDetailTooltipClicked = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Asset Detail Tooltip Clicked`,\n QuotesValidationFailed = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Quotes Failed Validation`,\n StatusValidationFailed = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Status Failed Validation`,\n AssetPickerOpened = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Asset Picker Opened`,\n PollingStatusUpdated = `${UNIFIED_SWAP_BRIDGE_EVENT_CATEGORY} Polling Status Updated`,\n}\n\nexport enum BatchSellMetricsEventName {\n BatchSellTokenPageViewed = `${BATCH_SELL_EVENT_CATEGORY} Token Page Viewed`,\n BatchSellTokenPageContinueClicked = `${BATCH_SELL_EVENT_CATEGORY} Token Page Continue Clicked`,\n BatchSellQuotePageViewed = `${BATCH_SELL_EVENT_CATEGORY} Quote Page Viewed`,\n BatchSellQuotePageReviewClicked = `${BATCH_SELL_EVENT_CATEGORY} Quote Page Review Clicked`,\n BatchSellReviewModalSubmitted = `${BATCH_SELL_EVENT_CATEGORY} Review Modal Submitted`,\n}\n\nexport type BridgeControllerMetricsEventName =\n | UnifiedSwapBridgeEventName\n | BatchSellMetricsEventName;\n\nexport enum PollingStatus {\n MaxPollingReached = 'max_polling_reached',\n InvalidTransactionHash = 'invalid_transaction_hash',\n ManuallyRestarted = 'manually_restarted',\n}\n\nexport enum AbortReason {\n NewQuoteRequest = 'New Quote Request',\n QuoteRequestUpdated = 'Quote Request Updated',\n ResetState = 'Reset controller state',\n TransactionSubmitted = 'Transaction submitted',\n GaslessTxBatchFetched = 'Gasless transaction batch fetched',\n}\n\n/**\n * Identifies the entry point from which the user initiated a swap or bridge flow.\n * Included as the `location` property on every Unified SwapBridge event so\n * analytics can trace the user's origin regardless of where they are in the flow.\n */\nexport enum MetaMetricsSwapsEventSource {\n MainView = 'Main View',\n TokenView = 'Token View',\n TrendingExplore = 'Trending Explore',\n Rewards = 'Rewards',\n FollowTradingTokenScreen = 'Follow Trading Token Screen',\n FollowTradingFeedScreen = 'Follow Trading Feed Screen',\n ActivityTabEmptyState = 'Activity Tab Empty State',\n TransactionShield = 'Transaction Shield',\n TransactionDetails = 'Transaction Details',\n DeepLink = 'Deep Link',\n Unknown = 'Unknown',\n BottomNavBar = 'Bottom Nav Bar',\n}\n\nexport enum BatchSellMetricsLocation {\n TradeMenu = 'trade_menu',\n Deeplink = 'deeplink',\n AssetPicker = 'asset_picker',\n Unknown = 'Unknown',\n}\n\nexport type BridgeControllerMetricsLocation =\n | MetaMetricsSwapsEventSource\n | BatchSellMetricsLocation;\n\nexport enum InputAmountPreset {\n PERCENT_25 = '25%',\n PERCENT_50 = '50%',\n PERCENT_75 = '75%',\n PERCENT_90 = '90%',\n // \"Max\" may not equal 100% of balance (e.g. gas reserves are withheld)\n MAX = 'MAX',\n}\n\nexport enum MetricsActionType {\n /**\n * @deprecated new events should use SWAPBRIDGE_V1 instead\n */\n CROSSCHAIN_V1 = 'crosschain-v1',\n SWAPBRIDGE_V1 = 'swapbridge-v1',\n}\n\nexport enum MetricsSwapType {\n SINGLE = 'single_chain',\n CROSSCHAIN = 'crosschain',\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAI7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAMxE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,yBAAyB,EAAE,OAAO,CAC7C,MAAM,CAAC,MAAM,YAAY,EAAE,SAAS,CAAC,CAOtC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAC/C,MAAM,CACJ,MAAM,OAAO,yBAAyB,EACtC,CACE,WAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC,KACtC,WAAW,CAAC,MAAM,WAAW,CAAC,GAAG,SAAS,CAChD,CAeF,CAAC;AAEF,eAAO,MAAM,WAAW,gBACT,mBAAmB,CAAC,YAAY,CAAC,gBAChC,mBAAmB,CAAC,aAAa,CAAC,oBAMjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,iBACjB,OAAO,CAAC,mBAAmB,CAAC,oBAG3C,CAAC;AAEF,eAAO,MAAM,mBAAmB,kDAK7B;IACD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,KAAG,GAAG,MAAM,IAAI,MAAM,EACwC,CAAC;AAEhE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,oEAMxB,OAAO,CAAC,mBAAmB,CAAC,gCACD,MAAM,GAAG,IAAI,KAC1C,IAAI,CAAC,aAAa,EAAE,qBAAqB,GAAG,0BAA0B,CAoBxE,CAAC;AAEF,eAAO,MAAM,sBAAsB,qBACf,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAChF,mBAcF,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBACT,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAGlF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,aAAc,mBAAmB,CAAC,UAAU,CAAC,YAEzE,CAAC;AAEF,eAAO,MAAM,2BAA2B,gBACzB,IAAI,GAAG,aAAa,aACvB,YAAY,EAAE,kBACT,OAAO,qBACH,IAAI,GAAG,aAAa,qBACpB,MAAM,6BACE,OAAO,GAAG,IAAI,YAChC;IAEP,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;;;;;;;;;;;;;;;;;;;CA2CF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { AccountsControllerState } from '@metamask/accounts-controller';\n\nimport { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../../constants/bridge.js';\nimport { ChainId } from '../../types.js';\nimport type { GenericQuoteRequest, QuoteRequest } from '../../types.js';\nimport { FeatureId } from '../../validators/feature-flags.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { getNativeAssetForChainId, isCrossChain } from '../bridge.js';\nimport {\n formatAddressToAssetId,\n formatChainIdToCaip,\n} from '../caip-formatters.js';\nimport { MetricsSwapType } from './constants.js';\nimport type {\n AccountHardwareType,\n InputKeys,\n InputValues,\n QuoteWarning,\n RequestParams,\n} from './types.js';\n\nexport const toInputChangedPropertyKey: Partial<\n Record<keyof QuoteRequest, InputKeys>\n> = {\n srcTokenAddress: 'token_source',\n destTokenAddress: 'token_destination',\n srcChainId: 'chain_source',\n destChainId: 'chain_destination',\n slippage: 'slippage',\n};\n\nexport const toInputChangedPropertyValue: Partial<\n Record<\n keyof typeof toInputChangedPropertyKey,\n (\n input_value: Partial<GenericQuoteRequest>,\n ) => InputValues[keyof InputValues] | undefined\n >\n> = {\n srcTokenAddress: ({ srcTokenAddress, srcChainId }) =>\n srcChainId\n ? formatAddressToAssetId(srcTokenAddress ?? '', srcChainId)\n : undefined,\n destTokenAddress: ({ destTokenAddress, destChainId }) =>\n destChainId\n ? formatAddressToAssetId(destTokenAddress ?? '', destChainId)\n : undefined,\n srcChainId: ({ srcChainId }) =>\n srcChainId ? formatChainIdToCaip(srcChainId) : undefined,\n destChainId: ({ destChainId }) =>\n destChainId ? formatChainIdToCaip(destChainId) : undefined,\n slippage: ({ slippage }) => (slippage ? Number(slippage) : slippage),\n};\n\nexport const getSwapType = (\n srcChainId?: GenericQuoteRequest['srcChainId'],\n destChainId?: GenericQuoteRequest['destChainId'],\n) => {\n if (srcChainId && !isCrossChain(srcChainId, destChainId ?? srcChainId)) {\n return MetricsSwapType.SINGLE;\n }\n return MetricsSwapType.CROSSCHAIN;\n};\n\nexport const getSwapTypeFromQuote = (\n quoteRequest: Partial<GenericQuoteRequest>,\n) => {\n return getSwapType(quoteRequest.srcChainId, quoteRequest.destChainId);\n};\n\nexport const formatProviderLabel = ({\n aggregator,\n protocols,\n bridges,\n bridgeId,\n}: {\n aggregator?: string;\n protocols?: string[];\n bridges?: string[];\n bridgeId?: string;\n}): `${string}_${string}` =>\n `${aggregator ?? bridgeId}_${protocols?.[0] ?? bridges?.[0]}`;\n\n/**\n * @param quoteRequest - The current quote request used to derive chain and token identity fields.\n * @param quoteRequest.srcChainId - Source chain id of the quote request.\n * @param quoteRequest.destChainId - Destination chain id of the quote request.\n * @param quoteRequest.srcTokenAddress - Source token address of the quote request.\n * @param quoteRequest.destTokenAddress - Destination token address of the quote request.\n * @param tokenSecurityTypeDestination - The security classification of the destination token,\n * supplied by the client (e.g. from token security/scanning data). Pass `null` when no\n * security data is available for the selected destination token.\n * @returns The analytics request params derived from the quote request. Token symbols are\n * omitted because the quote request only stores addresses; use\n * {@link getQuotesReceivedProperties} when building a `QuotesReceived` payload.\n */\nexport const getRequestParams = (\n {\n srcChainId,\n destChainId,\n srcTokenAddress,\n destTokenAddress,\n }: Partial<GenericQuoteRequest>,\n tokenSecurityTypeDestination: string | null,\n): Omit<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> => {\n // Fallback to ETH if srcChainId is not defined. This is ok since the clients default to Ethereum as the source chain\n // This also doesn't happen at runtime since the quote request is validated before metrics are published\n const srcChainIdCaip = formatChainIdToCaip(srcChainId ?? ChainId.ETH);\n return {\n chain_id_source: srcChainIdCaip,\n chain_id_destination: destChainId ? formatChainIdToCaip(destChainId) : null,\n token_address_source: srcTokenAddress\n ? (formatAddressToAssetId(srcTokenAddress, srcChainIdCaip) ??\n getNativeAssetForChainId(srcChainIdCaip)?.assetId ??\n null)\n : (getNativeAssetForChainId(srcChainIdCaip)?.assetId ?? null),\n token_address_destination: destTokenAddress\n ? (formatAddressToAssetId(\n destTokenAddress,\n destChainId ?? srcChainIdCaip,\n ) ?? null)\n : null,\n token_security_type_destination: tokenSecurityTypeDestination,\n };\n};\n\nexport const getAccountHardwareType = (\n selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string],\n): AccountHardwareType => {\n // Unified bridge analytics only support the schema enum values for hardware accounts.\n switch (selectedAccount?.metadata?.keyring.type) {\n case 'Ledger Hardware':\n return 'Ledger';\n case 'Trezor Hardware':\n return 'Trezor';\n case 'QR Hardware Wallet Device':\n return 'QR Hardware';\n case 'Lattice Hardware':\n return 'Lattice';\n default:\n return null;\n }\n};\n\nexport const isHardwareWallet = (\n selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string],\n) => {\n return getAccountHardwareType(selectedAccount) !== null;\n};\n\n/**\n * @param slippage - The slippage percentage\n * @returns Whether the default slippage was overridden by the user\n *\n * @deprecated This function should not be used. Use {@link selectDefaultSlippagePercentage} instead.\n */\nexport const isCustomSlippage = (slippage: GenericQuoteRequest['slippage']) => {\n return slippage !== DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest[0]?.slippage;\n};\n\nexport const getQuotesReceivedProperties = (\n activeQuote: null | QuoteResponse,\n warnings: QuoteWarning[] = [],\n isSubmittable: boolean = true,\n recommendedQuote?: null | QuoteResponse,\n usdBalanceSource?: number,\n hasSufficientGasForQuote?: boolean | null,\n options: {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n custom_slippage?: boolean;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n slippage_limit?: number;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n usd_amount_source?: number;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n token_symbol_source?: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n token_symbol_destination?: string | null;\n } = {},\n) => {\n const provider = activeQuote ? formatProviderLabel(activeQuote.quote) : '_';\n const quoteUsdAmountSource = activeQuote?.quote?.src?.usd;\n const quoteTokenSymbolSource = activeQuote?.quote.src.asset.symbol;\n const quoteTokenSymbolDestination = activeQuote?.quote.dest.asset.symbol;\n const usdAmountSource = Number(\n quoteUsdAmountSource ?? options.usd_amount_source ?? 0,\n );\n const slippageLimit =\n options.slippage_limit ?? activeQuote?.quote?.slippage ?? 0;\n return {\n can_submit: isSubmittable,\n gas_included: Boolean(activeQuote?.quote?.gasIncluded),\n gas_included_7702: Boolean(activeQuote?.quote?.gasIncluded7702),\n quoted_time_minutes: activeQuote?.estimatedProcessingTimeInSeconds\n ? activeQuote.estimatedProcessingTimeInSeconds / 60\n : 0,\n usd_quoted_gas: Number(activeQuote?.quote?.feeData?.network?.[0]?.usd ?? 0),\n usd_quoted_return: Number(activeQuote?.quote?.dest?.usd ?? 0),\n usd_balance_source: usdBalanceSource ?? 0,\n usd_amount_source: usdAmountSource,\n slippage_limit: slippageLimit,\n best_quote_provider: recommendedQuote\n ? formatProviderLabel(recommendedQuote.quote)\n : provider,\n provider,\n token_symbol_source:\n quoteTokenSymbolSource ?? options.token_symbol_source ?? '',\n token_symbol_destination:\n quoteTokenSymbolDestination ?? options.token_symbol_destination ?? null,\n warnings,\n price_impact: Number(\n activeQuote?.quote.priceData?.priceImpact?.amount ?? 0,\n ),\n ...(hasSufficientGasForQuote !== undefined && {\n has_sufficient_gas_for_quote: hasSufficientGasForQuote,\n }),\n ...(options.custom_slippage !== undefined && {\n custom_slippage: options.custom_slippage,\n }),\n feature_id: activeQuote?.featureId ?? FeatureId.UNIFIED_SWAP_BRIDGE,\n };\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/metrics/types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/metrics/types.ts"],"names":[],"mappings":"","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport type { CaipAssetType, CaipChainId } from '@metamask/utils';\n\nimport type {\n InputPrimaryDenomination,\n SortOrder,\n StatusTypes,\n} from '../../types.js';\nimport type { FeatureId } from '../../validators/feature-flags.js';\nimport type {\n UnifiedSwapBridgeEventName,\n BatchSellMetricsEventName,\n BatchSellMetricsLocation,\n BridgeControllerMetricsEventName,\n BridgeControllerMetricsLocation,\n MetricsActionType,\n MetricsSwapType,\n PollingStatus,\n} from './constants.js';\n\n/**\n * These properties map to properties required by the segment-schema. For example: https://github.com/Consensys/segment-schema/blob/main/libraries/properties/cross-chain-swaps-action.yaml\n */\nexport type RequestParams = {\n chain_id_source: CaipChainId;\n chain_id_destination: CaipChainId | null;\n token_symbol_source: string;\n token_symbol_destination: string | null;\n token_address_source: CaipAssetType;\n token_address_destination: CaipAssetType | null;\n /**\n * Client-supplied security classification for the destination token\n * (e.g. from token security/scanning data). Stored on the controller\n * and merged into every analytics event that includes\n * `token_address_destination`. Pass `null` when no security data is\n * available for the selected destination token.\n */\n token_security_type_destination: string | null;\n};\n\nexport type AccountHardwareType =\n | 'Ledger'\n | 'Trezor'\n | 'QR Hardware'\n | 'Lattice'\n | null;\n\nexport type RequestMetadata = {\n slippage_limit: number; // 0 === auto when no numeric limit is available\n custom_slippage: boolean;\n usd_amount_source: number; // Use quoteResponse when available\n stx_enabled: boolean;\n is_hardware_wallet: boolean;\n account_hardware_type: AccountHardwareType;\n swap_type: MetricsSwapType;\n security_warnings: string[];\n};\n\nexport type QuoteFetchData = {\n can_submit: boolean;\n best_quote_provider?: `${string}_${string}`;\n quotes_count: number;\n quotes_list: `${string}_${string}`[];\n initial_load_time_all_quotes: number;\n price_impact: number;\n has_gas_included_quote: boolean;\n};\n\nexport type TradeData = {\n usd_quoted_gas: number;\n gas_included: boolean;\n gas_included_7702: boolean;\n quoted_time_minutes: number;\n usd_quoted_return: number;\n provider: `${string}_${string}`;\n};\n\nexport type TxStatusData = {\n allowance_reset_transaction?: StatusTypes;\n approval_transaction?: StatusTypes;\n source_transaction?: StatusTypes;\n destination_transaction?: StatusTypes;\n};\n\nexport type InputPrimaryDenominationData = {\n input_primary_denomination?: InputPrimaryDenomination;\n};\n\nexport type InputKeys =\n | 'token_source'\n | 'token_destination'\n | 'chain_source'\n | 'chain_destination'\n | 'slippage'\n | 'token_amount_source';\n\nexport type InputValues = {\n token_source: CaipAssetType;\n token_destination: CaipAssetType;\n chain_source: CaipChainId;\n chain_destination: CaipChainId;\n slippage: number;\n token_amount_source: string;\n};\n\nexport type QuoteWarning =\n | 'low_return'\n | 'no_quotes'\n | 'insufficient_gas_balance'\n | 'insufficient_gas_for_selected_quote'\n | 'insufficient_balance'\n | 'market_closed'\n | 'price_impact'\n | 'quote_expired'\n | 'tx_alert';\n\ntype BatchSellChainProperties = {\n chain_id_source: CaipChainId;\n chain_id_destination: CaipChainId | null;\n};\n\ntype BatchSellTokenPageEventContext = BatchSellChainProperties & {\n location: BatchSellMetricsLocation;\n};\n\ntype BatchSellSourceTokenEventContext = BatchSellTokenPageEventContext & {\n source_token_symbols: string[];\n source_token_addresses: CaipAssetType[];\n};\n\ntype BatchSellQuotePageEventContext = BatchSellSourceTokenEventContext & {\n destination_token_symbol: string;\n destination_token_address: CaipAssetType;\n usd_amount_source_tokens: number[];\n usd_amount_source_total: number;\n source_token_slippages: number[];\n};\n\ntype BatchSellReviewModalSubmittedEventContext =\n BatchSellQuotePageEventContext &\n Pick<TradeData, 'usd_quoted_gas' | 'usd_quoted_return'>;\n\ntype BatchSellTokenPageEventProperties = BatchSellChainProperties &\n BatchSellTokenPageEventContext;\n\ntype BatchSellSourceTokenEventProperties = BatchSellChainProperties &\n BatchSellSourceTokenEventContext & {\n source_token_count: number;\n };\n\ntype BatchSellQuotePageEventProperties = BatchSellChainProperties &\n BatchSellQuotePageEventContext & {\n source_token_count: number;\n };\n\ntype BatchSellReviewModalSubmittedEventProperties = BatchSellChainProperties &\n BatchSellReviewModalSubmittedEventContext & {\n source_token_count: number;\n };\n\ntype SharedEventContextFromClient = {\n ab_tests?: Record<string, string>;\n active_ab_tests?: { key: string; value: string }[];\n feature_id: FeatureId;\n};\n\ntype OptionalLocationContextFromClient<T> = T extends {\n location: unknown;\n}\n ? object\n : { location?: BridgeControllerMetricsLocation };\n\n/**\n * Properties that are required to be provided when trackUnifiedSwapBridgeEvent is called.\n * Most events receive an optional location via RequiredEventContextFromClient;\n * Batch Sell events define their own required location enum.\n */\ntype RequiredEventContextFromClientBase = {\n [UnifiedSwapBridgeEventName.ButtonClicked]: Pick<\n RequestParams,\n 'token_symbol_source' | 'token_symbol_destination'\n > & { environment_type?: string };\n // When type is object, the payload can be anything\n [UnifiedSwapBridgeEventName.PageViewed]: object;\n [UnifiedSwapBridgeEventName.InputChanged]: {\n input:\n | 'token_source'\n | 'token_destination'\n | 'chain_source'\n | 'chain_destination'\n | 'slippage'\n | 'token_amount_source';\n input_value: InputValues[keyof InputValues];\n input_amount_preset?: string;\n };\n [UnifiedSwapBridgeEventName.FiatCryptoToggleClicked]: {\n token_symbol_source: string;\n token_symbol_destination: string | null;\n previous_primary_denomination: InputPrimaryDenomination;\n new_primary_denomination: InputPrimaryDenomination;\n chain_id_source?: RequestParams['chain_id_source'];\n chain_id_destination?: RequestParams['chain_id_destination'];\n token_address_source?: RequestParams['token_address_source'];\n token_address_destination?: RequestParams['token_address_destination'];\n token_security_type_destination?: RequestParams['token_security_type_destination'];\n swap_type?: RequestMetadata['swap_type'];\n };\n [UnifiedSwapBridgeEventName.InputSourceDestinationSwitched]: {\n token_symbol_source: RequestParams['token_symbol_source'];\n token_symbol_destination: RequestParams['token_symbol_destination'];\n token_address_source: RequestParams['token_address_source'];\n token_address_destination: RequestParams['token_address_destination'];\n token_security_type_destination: RequestParams['token_security_type_destination'];\n chain_id_source: RequestParams['chain_id_source'];\n chain_id_destination: RequestParams['chain_id_destination'];\n } & Pick<RequestMetadata, 'security_warnings'>;\n [UnifiedSwapBridgeEventName.QuotesRequested]: Pick<\n RequestMetadata,\n 'stx_enabled' | 'usd_amount_source'\n > & {\n token_symbol_source: RequestParams['token_symbol_source'];\n token_symbol_destination: RequestParams['token_symbol_destination'];\n token_security_type_destination: RequestParams['token_security_type_destination'];\n custom_slippage?: RequestMetadata['custom_slippage'];\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.QuotesReceived]: TradeData &\n Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> &\n InputPrimaryDenominationData & {\n warnings: QuoteWarning[];\n best_quote_provider: QuoteFetchData['best_quote_provider'];\n price_impact: QuoteFetchData['price_impact'];\n can_submit: QuoteFetchData['can_submit'];\n usd_balance_source?: number;\n has_sufficient_gas_for_quote?: boolean | null;\n usd_amount_source: number;\n custom_slippage?: RequestMetadata['custom_slippage'];\n slippage_limit?: RequestMetadata['slippage_limit'];\n };\n [UnifiedSwapBridgeEventName.QuotesError]: Pick<\n RequestMetadata,\n 'stx_enabled'\n > & {\n token_symbol_source: RequestParams['token_symbol_source'];\n token_symbol_destination: RequestParams['token_symbol_destination'];\n } & Pick<RequestMetadata, 'security_warnings'>;\n // Emitted by BridgeStatusController\n [UnifiedSwapBridgeEventName.Submitted]: TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Omit<RequestMetadata, 'security_warnings'> &\n Pick<\n RequestParams,\n | 'token_symbol_source'\n | 'token_symbol_destination'\n | 'token_address_source'\n | 'token_address_destination'\n | 'chain_id_source'\n | 'chain_id_destination'\n | 'token_security_type_destination'\n > & {\n action_type: MetricsActionType;\n batch_id?: string;\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.Completed]: TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Omit<RequestMetadata, 'security_warnings'> &\n TxStatusData &\n RequestParams & {\n actual_time_minutes: number;\n usd_actual_return: number;\n usd_actual_gas: number;\n quote_vs_execution_ratio: number;\n quoted_vs_used_gas_ratio: number;\n action_type: MetricsActionType;\n batch_id?: string;\n transaction_internal_id?: string;\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.Failed]: (\n | // Tx failed before confirmation\n (Pick<\n RequestMetadata,\n | 'stx_enabled'\n | 'usd_amount_source'\n | 'is_hardware_wallet'\n | 'account_hardware_type'\n > &\n Pick<\n RequestParams,\n | 'token_symbol_source'\n | 'token_symbol_destination'\n | 'token_address_source'\n | 'token_address_destination'\n | 'token_security_type_destination'\n >)\n // Tx failed after confirmation\n | (RequestParams &\n RequestMetadata &\n TxStatusData & {\n actual_time_minutes: number;\n })\n ) &\n TradeData &\n Pick<QuoteFetchData, 'price_impact'> & {\n error_message: string;\n batch_id?: string;\n };\n [UnifiedSwapBridgeEventName.PollingStatusUpdated]: {\n polling_status: PollingStatus;\n retry_attempts: number;\n };\n [UnifiedSwapBridgeEventName.StatusValidationFailed]: {\n failures: string[];\n refresh_count: number;\n } & Partial<RequestParams>;\n // Emitted by clients\n [UnifiedSwapBridgeEventName.AllQuotesOpened]: Pick<\n TradeData,\n 'gas_included' | 'gas_included_7702'\n > &\n Pick<QuoteFetchData, 'price_impact'> &\n Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> & {\n stx_enabled: RequestMetadata['stx_enabled'];\n can_submit: QuoteFetchData['can_submit'];\n };\n [UnifiedSwapBridgeEventName.AllQuotesSorted]: Pick<\n TradeData,\n 'gas_included' | 'gas_included_7702'\n > &\n Pick<QuoteFetchData, 'price_impact'> &\n Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> & {\n stx_enabled: RequestMetadata['stx_enabled'];\n sort_order: SortOrder;\n best_quote_provider: QuoteFetchData['best_quote_provider'];\n can_submit: QuoteFetchData['can_submit'];\n };\n [UnifiedSwapBridgeEventName.QuoteSelected]: TradeData & {\n is_best_quote: boolean;\n best_quote_provider: QuoteFetchData['best_quote_provider'];\n price_impact: QuoteFetchData['price_impact'];\n can_submit: QuoteFetchData['can_submit'];\n };\n [UnifiedSwapBridgeEventName.AssetDetailTooltipClicked]: {\n token_name: string;\n token_symbol: string;\n token_contract: string;\n chain_name: string;\n chain_id: string;\n };\n [UnifiedSwapBridgeEventName.QuotesValidationFailed]: {\n failures: string[];\n };\n [UnifiedSwapBridgeEventName.AssetPickerOpened]: {\n asset_location: 'source' | 'destination';\n };\n [BatchSellMetricsEventName.BatchSellTokenPageViewed]: BatchSellTokenPageEventContext;\n [BatchSellMetricsEventName.BatchSellTokenPageContinueClicked]: BatchSellSourceTokenEventContext;\n [BatchSellMetricsEventName.BatchSellQuotePageViewed]: BatchSellQuotePageEventContext;\n [BatchSellMetricsEventName.BatchSellQuotePageReviewClicked]: BatchSellQuotePageEventContext;\n [BatchSellMetricsEventName.BatchSellReviewModalSubmitted]: BatchSellReviewModalSubmittedEventContext;\n};\n\n/**\n * Properties that are required to be provided when trackUnifiedSwapBridgeEvent is called.\n * This combines the event-specific properties from RequiredEventContextFromClientBase\n * with an optional `location` property. When `location` is omitted, the controller\n * falls back to the value stored via `setLocation()` (defaults to Unknown).\n *\n * `ab_tests` is the legacy field and `active_ab_tests` is the newer field.\n * Both are kept for a migration window and are treated as separate payloads.\n */\nexport type RequiredEventContextFromClient = {\n [K in keyof RequiredEventContextFromClientBase]: K extends BatchSellMetricsEventName\n ? RequiredEventContextFromClientBase[K]\n : RequiredEventContextFromClientBase[K] &\n OptionalLocationContextFromClient<\n RequiredEventContextFromClientBase[K]\n > &\n SharedEventContextFromClient;\n};\n\n/**\n * Properties that can be derived from the bridge controller state\n */\nexport type EventPropertiesFromControllerState = {\n [UnifiedSwapBridgeEventName.ButtonClicked]: RequestParams;\n [UnifiedSwapBridgeEventName.PageViewed]: RequestParams &\n Omit<\n RequestMetadata,\n 'stx_enabled' | 'usd_amount_source' | 'security_warnings'\n > &\n InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.InputChanged]: {\n input: InputKeys;\n input_value: string;\n };\n [UnifiedSwapBridgeEventName.FiatCryptoToggleClicked]: RequestParams &\n Pick<RequestMetadata, 'swap_type'>;\n [UnifiedSwapBridgeEventName.InputSourceDestinationSwitched]: RequestParams;\n [UnifiedSwapBridgeEventName.QuotesRequested]: RequestParams &\n RequestMetadata & {\n has_sufficient_funds: boolean;\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.QuotesReceived]: RequestParams &\n RequestMetadata &\n QuoteFetchData &\n TradeData & {\n refresh_count: number; // starts from 0\n has_sufficient_funds: boolean;\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.QuotesError]: RequestParams &\n RequestMetadata & {\n has_sufficient_funds: boolean;\n error_message: string;\n };\n [UnifiedSwapBridgeEventName.Submitted]: null;\n [UnifiedSwapBridgeEventName.Completed]: null;\n [UnifiedSwapBridgeEventName.Failed]: RequestParams &\n RequestMetadata &\n TxStatusData &\n TradeData &\n Pick<QuoteFetchData, 'price_impact'> & {\n actual_time_minutes: number;\n };\n [UnifiedSwapBridgeEventName.AllQuotesOpened]: RequestParams &\n RequestMetadata &\n TradeData &\n QuoteFetchData;\n [UnifiedSwapBridgeEventName.AllQuotesSorted]: RequestParams &\n RequestMetadata &\n TradeData &\n QuoteFetchData;\n [UnifiedSwapBridgeEventName.QuoteSelected]: RequestParams &\n RequestMetadata &\n QuoteFetchData &\n TradeData;\n [UnifiedSwapBridgeEventName.AssetDetailTooltipClicked]: null;\n [UnifiedSwapBridgeEventName.QuotesValidationFailed]: RequestParams & {\n refresh_count: number;\n };\n [UnifiedSwapBridgeEventName.StatusValidationFailed]: RequestParams;\n [UnifiedSwapBridgeEventName.AssetPickerOpened]: null;\n [UnifiedSwapBridgeEventName.PollingStatusUpdated]: TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Omit<RequestMetadata, 'security_warnings'> &\n Pick<\n RequestParams,\n | 'token_symbol_source'\n | 'token_symbol_destination'\n | 'chain_id_source'\n | 'chain_id_destination'\n > & {\n batch_id?: string;\n };\n [BatchSellMetricsEventName.BatchSellTokenPageViewed]: BatchSellTokenPageEventProperties;\n [BatchSellMetricsEventName.BatchSellTokenPageContinueClicked]: BatchSellSourceTokenEventProperties;\n [BatchSellMetricsEventName.BatchSellQuotePageViewed]: BatchSellQuotePageEventProperties;\n [BatchSellMetricsEventName.BatchSellQuotePageReviewClicked]: BatchSellQuotePageEventProperties;\n [BatchSellMetricsEventName.BatchSellReviewModalSubmitted]: BatchSellReviewModalSubmittedEventProperties;\n};\n\ntype SharedCrossChainSwapsEventProperties<\n T extends BridgeControllerMetricsEventName,\n> =\n | {\n feature_id: FeatureId;\n action_type: MetricsActionType;\n location: BridgeControllerMetricsLocation;\n ab_tests?: Record<string, string>;\n active_ab_tests?: { key: string; value: string }[];\n }\n | Pick<EventPropertiesFromControllerState, T>[T]\n | Pick<RequiredEventContextFromClient, T>[T];\n\n/**\n * trackUnifiedSwapBridgeEvent payload properties consist of required properties from the client\n * and properties from the bridge controller\n *\n * `ab_tests` will be deprecated in favor of `active_ab_tests` in the future.\n * `ab_tests` and `active_ab_tests` intentionally coexist during migration.\n */\nexport type CrossChainSwapsEventProperties<\n T extends BridgeControllerMetricsEventName,\n> = T extends BatchSellMetricsEventName\n ? Pick<EventPropertiesFromControllerState, T>[T]\n : SharedCrossChainSwapsEventProperties<T>;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"number-formatters.d.ts","sourceRoot":"","sources":["../../src/utils/number-formatters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGrE;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,UAC7B,MAAM,GAAG,SAAS,GAAG,SAAS,YAC3B,MAAM,GAAG,SAAS,0BAO7B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,UACzB,MAAM,GAAG,SAAS,GAAG,SAAS,YAC3B,MAAM,GAAG,SAAS,uBAO7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,qCACK,MAAM,WAMzC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,iBACP,CACV,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,GAClE,SAAS,CACZ,EAAE,KACF,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAgEhD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"number-formatters.js","sourceRoot":"","sources":["../../src/utils/number-formatters.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { BigNumber } from 'bignumber.js';\n\nimport type { DeepPartial } from '../types.js';\nimport type { QuoteResponse } from '../validators/quote-response.js';\nimport { assetIdsMatch } from './assets.js';\n\n/**\n * 1500000 -> 1.5\n *\n * @param value - The value to convert to token amount\n * @param decimals - The number of decimals to convert to\n * @returns The token amount in string format\n */\nexport const calcNormalizedTokenAmount = (\n value: string | BigNumber | undefined,\n decimals: number | undefined,\n) => {\n if (value === undefined || decimals === undefined) {\n return undefined;\n }\n const divisor = new BigNumber(10).pow(decimals ?? 0);\n return new BigNumber(value).div(divisor);\n};\n\n/**\n * 1.5 -> 1500000\n *\n * @param value - The amount to convert to token value\n * @param decimals - The number of decimals to convert to\n * @returns The token value in string format\n */\nexport const calcAtomicTokenAmount = (\n value: string | BigNumber | undefined,\n decimals: number | undefined,\n) => {\n if (value === undefined || decimals === undefined) {\n return undefined;\n }\n const divisor = new BigNumber(10).pow(decimals);\n return new BigNumber(value).times(divisor).toFixed();\n};\n\n/**\n * @deprecated No longer used\n * @param estimatedProcessingTimeInSeconds - The estimated processing time in seconds\n * @returns The estimated processing time in minutes\n */\nexport const formatEtaInMinutes = (\n estimatedProcessingTimeInSeconds: number,\n) => {\n if (estimatedProcessingTimeInSeconds < 60) {\n return `< 1`;\n }\n return (estimatedProcessingTimeInSeconds / 60).toFixed();\n};\n\n/**\n * Aggregates a list of amounts into a single fee object. If fees have different assets,\n * the returned object will only aggregate the usd and valueInCurrency values.\n *\n * @param maybeFees - The list of fees to aggregate\n * @returns The aggregated fee object, or null if no fees are provided\n */\nexport const sumAmounts = (\n ...maybeFees: (\n | (DeepPartial<QuoteResponse['quote']['dest']> | undefined | null)[]\n | undefined\n )[]\n): DeepPartial<QuoteResponse['quote']['dest']> | undefined => {\n const fees = maybeFees\n .flat()\n .flat()\n .filter(\n (value): value is Partial<QuoteResponse['quote']['dest']> =>\n value !== undefined && value !== null,\n );\n\n if (!fees || fees.length === 0) {\n return undefined;\n }\n\n /**\n * Fees and prices can be denominated in different assets, so we need to check if all fees have the same units\n */\n const isSameAssetForAllFees = fees.reduce(\n (acc, fee) =>\n acc && assetIdsMatch(fee.asset?.assetId, fees[0]?.asset?.assetId),\n true,\n );\n\n /**\n * Keys that require the asset to be the same for all fees\n */\n const AMOUNT_KEYS = [\n 'amount' as const,\n 'normalizedAmount' as const,\n 'minAmount' as const,\n 'minAmountNormalized' as const,\n ];\n\n /**\n * Keys that can be aggregated across all fees\n */\n const FIAT_OR_USD_KEYS = [\n 'valueInCurrency' as const,\n 'usd' as const,\n 'minAmountValueInCurrency' as const,\n 'minAmountUsd' as const,\n ];\n\n return fees.reduce((acc, fee) => {\n const newAcc = { ...acc };\n if (isSameAssetForAllFees && fee.asset) {\n newAcc.asset = fee.asset;\n }\n\n AMOUNT_KEYS.forEach((key) => {\n const value = fee[key];\n if (value && isSameAssetForAllFees) {\n newAcc[key] = new BigNumber(acc[key] ?? 0).plus(value).toFixed();\n }\n });\n\n FIAT_OR_USD_KEYS.forEach((key) => {\n const value = fee[key];\n if (value) {\n newAcc[key] = new BigNumber(acc[key] ?? 0).plus(value).toFixed();\n }\n });\n\n return newAcc;\n }, {});\n};\n"]}