@metamask/assets-controllers 37.0.0 → 38.0.1

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 (372) hide show
  1. package/CHANGELOG.md +50 -1
  2. package/dist/AccountTrackerController.cjs +245 -0
  3. package/dist/AccountTrackerController.cjs.map +1 -0
  4. package/dist/{types/AccountTrackerController.d.ts → AccountTrackerController.d.cts} +6 -6
  5. package/dist/AccountTrackerController.d.cts.map +1 -0
  6. package/dist/AccountTrackerController.d.mts +112 -0
  7. package/dist/AccountTrackerController.d.mts.map +1 -0
  8. package/dist/AccountTrackerController.mjs +244 -8
  9. package/dist/AccountTrackerController.mjs.map +1 -1
  10. package/dist/AssetsContractController.cjs +389 -0
  11. package/dist/AssetsContractController.cjs.map +1 -0
  12. package/dist/{types/AssetsContractController.d.ts → AssetsContractController.d.cts} +10 -9
  13. package/dist/AssetsContractController.d.cts.map +1 -0
  14. package/dist/AssetsContractController.d.mts +277 -0
  15. package/dist/AssetsContractController.d.mts.map +1 -0
  16. package/dist/AssetsContractController.mjs +387 -16
  17. package/dist/AssetsContractController.mjs.map +1 -1
  18. package/dist/CurrencyRateController.cjs +156 -0
  19. package/dist/CurrencyRateController.cjs.map +1 -0
  20. package/dist/{types/CurrencyRateController.d.ts → CurrencyRateController.d.cts} +5 -5
  21. package/dist/CurrencyRateController.d.cts.map +1 -0
  22. package/dist/CurrencyRateController.d.mts +80 -0
  23. package/dist/CurrencyRateController.d.mts.map +1 -0
  24. package/dist/CurrencyRateController.mjs +150 -10
  25. package/dist/CurrencyRateController.mjs.map +1 -1
  26. package/dist/NftController.cjs +1159 -0
  27. package/dist/NftController.cjs.map +1 -0
  28. package/dist/{types/NftController.d.ts → NftController.d.cts} +11 -11
  29. package/dist/NftController.d.cts.map +1 -0
  30. package/dist/NftController.d.mts +424 -0
  31. package/dist/NftController.d.mts.map +1 -0
  32. package/dist/NftController.mjs +1156 -12
  33. package/dist/NftController.mjs.map +1 -1
  34. package/dist/NftDetectionController.cjs +237 -0
  35. package/dist/NftDetectionController.cjs.map +1 -0
  36. package/dist/{types/NftDetectionController.d.ts → NftDetectionController.d.cts} +9 -9
  37. package/dist/NftDetectionController.d.cts.map +1 -0
  38. package/dist/NftDetectionController.d.mts +368 -0
  39. package/dist/NftDetectionController.d.mts.map +1 -0
  40. package/dist/NftDetectionController.mjs +231 -14
  41. package/dist/NftDetectionController.mjs.map +1 -1
  42. package/dist/RatesController/RatesController.cjs +189 -0
  43. package/dist/RatesController/RatesController.cjs.map +1 -0
  44. package/dist/{types/RatesController/RatesController.d.ts → RatesController/RatesController.d.cts} +5 -5
  45. package/dist/RatesController/RatesController.d.cts.map +1 -0
  46. package/dist/RatesController/RatesController.d.mts +44 -0
  47. package/dist/RatesController/RatesController.d.mts.map +1 -0
  48. package/dist/RatesController/RatesController.mjs +183 -12
  49. package/dist/RatesController/RatesController.mjs.map +1 -1
  50. package/dist/RatesController/index.cjs +7 -0
  51. package/dist/RatesController/index.cjs.map +1 -0
  52. package/dist/{types/RatesController/index.d.ts → RatesController/index.d.cts} +3 -3
  53. package/dist/RatesController/index.d.cts.map +1 -0
  54. package/dist/RatesController/index.d.mts +3 -0
  55. package/dist/RatesController/index.d.mts.map +1 -0
  56. package/dist/RatesController/index.mjs +1 -12
  57. package/dist/RatesController/index.mjs.map +1 -1
  58. package/dist/RatesController/types.cjs +3 -0
  59. package/dist/RatesController/types.cjs.map +1 -0
  60. package/dist/{types/RatesController/types.d.ts → RatesController/types.d.cts} +4 -4
  61. package/dist/RatesController/types.d.cts.map +1 -0
  62. package/dist/RatesController/types.d.mts +100 -0
  63. package/dist/RatesController/types.d.mts.map +1 -0
  64. package/dist/RatesController/types.mjs +1 -0
  65. package/dist/RatesController/types.mjs.map +1 -1
  66. package/dist/Standards/ERC20Standard.cjs +124 -0
  67. package/dist/Standards/ERC20Standard.cjs.map +1 -0
  68. package/dist/{types/Standards/ERC20Standard.d.ts → Standards/ERC20Standard.d.cts} +3 -3
  69. package/dist/Standards/ERC20Standard.d.cts.map +1 -0
  70. package/dist/Standards/ERC20Standard.d.mts +49 -0
  71. package/dist/Standards/ERC20Standard.d.mts.map +1 -0
  72. package/dist/Standards/ERC20Standard.mjs +121 -8
  73. package/dist/Standards/ERC20Standard.mjs.map +1 -1
  74. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.cjs +189 -0
  75. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.cjs.map +1 -0
  76. package/dist/{types/Standards/NftStandards/ERC1155/ERC1155Standard.d.ts → Standards/NftStandards/ERC1155/ERC1155Standard.d.cts} +3 -3
  77. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.d.cts.map +1 -0
  78. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.d.mts +95 -0
  79. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.d.mts.map +1 -0
  80. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.mjs +184 -8
  81. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.mjs.map +1 -1
  82. package/dist/Standards/NftStandards/ERC721/ERC721Standard.cjs +167 -0
  83. package/dist/Standards/NftStandards/ERC721/ERC721Standard.cjs.map +1 -0
  84. package/dist/{types/Standards/NftStandards/ERC721/ERC721Standard.d.ts → Standards/NftStandards/ERC721/ERC721Standard.d.cts} +2 -2
  85. package/dist/Standards/NftStandards/ERC721/ERC721Standard.d.cts.map +1 -0
  86. package/dist/Standards/NftStandards/ERC721/ERC721Standard.d.mts +89 -0
  87. package/dist/Standards/NftStandards/ERC721/ERC721Standard.d.mts.map +1 -0
  88. package/dist/Standards/NftStandards/ERC721/ERC721Standard.mjs +162 -8
  89. package/dist/Standards/NftStandards/ERC721/ERC721Standard.mjs.map +1 -1
  90. package/dist/TokenBalancesController.cjs +136 -0
  91. package/dist/TokenBalancesController.cjs.map +1 -0
  92. package/dist/{types/TokenBalancesController.d.ts → TokenBalancesController.d.cts} +7 -7
  93. package/dist/TokenBalancesController.d.cts.map +1 -0
  94. package/dist/TokenBalancesController.d.mts +82 -0
  95. package/dist/TokenBalancesController.d.mts.map +1 -0
  96. package/dist/TokenBalancesController.mjs +129 -10
  97. package/dist/TokenBalancesController.mjs.map +1 -1
  98. package/dist/TokenDetectionController.cjs +369 -0
  99. package/dist/TokenDetectionController.cjs.map +1 -0
  100. package/dist/{types/TokenDetectionController.d.ts → TokenDetectionController.d.cts} +10 -10
  101. package/dist/TokenDetectionController.d.cts.map +1 -0
  102. package/dist/TokenDetectionController.d.mts +109 -0
  103. package/dist/TokenDetectionController.d.mts.map +1 -0
  104. package/dist/TokenDetectionController.mjs +366 -15
  105. package/dist/TokenDetectionController.mjs.map +1 -1
  106. package/dist/TokenListController.cjs +274 -0
  107. package/dist/TokenListController.cjs.map +1 -0
  108. package/dist/{types/TokenListController.d.ts → TokenListController.d.cts} +5 -5
  109. package/dist/TokenListController.d.cts.map +1 -0
  110. package/dist/TokenListController.d.mts +117 -0
  111. package/dist/TokenListController.d.mts.map +1 -0
  112. package/dist/TokenListController.mjs +267 -12
  113. package/dist/TokenListController.mjs.map +1 -1
  114. package/dist/TokenRatesController.cjs +452 -0
  115. package/dist/TokenRatesController.cjs.map +1 -0
  116. package/dist/{types/TokenRatesController.d.ts → TokenRatesController.d.cts} +9 -9
  117. package/dist/TokenRatesController.d.cts.map +1 -0
  118. package/dist/TokenRatesController.d.mts +170 -0
  119. package/dist/TokenRatesController.d.mts.map +1 -0
  120. package/dist/TokenRatesController.mjs +446 -16
  121. package/dist/TokenRatesController.mjs.map +1 -1
  122. package/dist/TokensController.cjs +678 -0
  123. package/dist/TokensController.cjs.map +1 -0
  124. package/dist/{types/TokensController.d.ts → TokensController.d.cts} +10 -10
  125. package/dist/TokensController.d.cts.map +1 -0
  126. package/dist/TokensController.d.mts +165 -0
  127. package/dist/TokensController.d.mts.map +1 -0
  128. package/dist/TokensController.mjs +675 -14
  129. package/dist/TokensController.mjs.map +1 -1
  130. package/dist/assetsUtil.cjs +358 -0
  131. package/dist/assetsUtil.cjs.map +1 -0
  132. package/dist/{types/assetsUtil.d.ts → assetsUtil.d.cts} +7 -7
  133. package/dist/assetsUtil.d.cts.map +1 -0
  134. package/dist/assetsUtil.d.mts +177 -0
  135. package/dist/assetsUtil.d.mts.map +1 -0
  136. package/dist/assetsUtil.mjs +343 -36
  137. package/dist/assetsUtil.mjs.map +1 -1
  138. package/dist/constants.cjs +10 -0
  139. package/dist/constants.cjs.map +1 -0
  140. package/dist/{types/constants.d.ts → constants.d.cts} +1 -1
  141. package/dist/constants.d.cts.map +1 -0
  142. package/dist/constants.d.mts +6 -0
  143. package/dist/constants.d.mts.map +1 -0
  144. package/dist/constants.mjs +6 -7
  145. package/dist/constants.mjs.map +1 -1
  146. package/dist/crypto-compare-service/crypto-compare.cjs +119 -0
  147. package/dist/crypto-compare-service/crypto-compare.cjs.map +1 -0
  148. package/dist/{types/crypto-compare-service/crypto-compare.d.ts → crypto-compare-service/crypto-compare.d.cts} +1 -1
  149. package/dist/crypto-compare-service/crypto-compare.d.cts.map +1 -0
  150. package/dist/crypto-compare-service/crypto-compare.d.mts +22 -0
  151. package/dist/crypto-compare-service/crypto-compare.d.mts.map +1 -0
  152. package/dist/crypto-compare-service/crypto-compare.mjs +113 -9
  153. package/dist/crypto-compare-service/crypto-compare.mjs.map +1 -1
  154. package/dist/crypto-compare-service/index.cjs +7 -0
  155. package/dist/crypto-compare-service/index.cjs.map +1 -0
  156. package/dist/crypto-compare-service/index.d.cts +2 -0
  157. package/dist/crypto-compare-service/index.d.cts.map +1 -0
  158. package/dist/crypto-compare-service/index.d.mts +2 -0
  159. package/dist/crypto-compare-service/index.d.mts.map +1 -0
  160. package/dist/crypto-compare-service/index.mjs +1 -10
  161. package/dist/crypto-compare-service/index.mjs.map +1 -1
  162. package/dist/index.cjs +51 -0
  163. package/dist/index.cjs.map +1 -0
  164. package/dist/{types/index.d.ts → index.d.cts} +24 -24
  165. package/dist/index.d.cts.map +1 -0
  166. package/dist/index.d.mts +24 -0
  167. package/dist/index.d.mts.map +1 -0
  168. package/dist/index.mjs +13 -80
  169. package/dist/index.mjs.map +1 -1
  170. package/dist/token-prices-service/abstract-token-prices-service.cjs +3 -0
  171. package/dist/token-prices-service/abstract-token-prices-service.cjs.map +1 -0
  172. package/dist/{types/token-prices-service/abstract-token-prices-service.d.ts → token-prices-service/abstract-token-prices-service.d.cts} +2 -2
  173. package/dist/token-prices-service/abstract-token-prices-service.d.cts.map +1 -0
  174. package/dist/token-prices-service/abstract-token-prices-service.d.mts +79 -0
  175. package/dist/token-prices-service/abstract-token-prices-service.d.mts.map +1 -0
  176. package/dist/token-prices-service/abstract-token-prices-service.mjs +1 -0
  177. package/dist/token-prices-service/abstract-token-prices-service.mjs.map +1 -1
  178. package/dist/token-prices-service/codefi-v2.cjs +352 -0
  179. package/dist/token-prices-service/codefi-v2.cjs.map +1 -0
  180. package/dist/{types/token-prices-service/codefi-v2.d.ts → token-prices-service/codefi-v2.d.cts} +3 -3
  181. package/dist/token-prices-service/codefi-v2.d.cts.map +1 -0
  182. package/dist/token-prices-service/codefi-v2.d.mts +97 -0
  183. package/dist/token-prices-service/codefi-v2.d.mts.map +1 -0
  184. package/dist/token-prices-service/codefi-v2.mjs +347 -12
  185. package/dist/token-prices-service/codefi-v2.mjs.map +1 -1
  186. package/dist/token-prices-service/index.cjs +7 -0
  187. package/dist/token-prices-service/index.cjs.map +1 -0
  188. package/dist/token-prices-service/index.d.cts +3 -0
  189. package/dist/token-prices-service/index.d.cts.map +1 -0
  190. package/dist/token-prices-service/index.d.mts +3 -0
  191. package/dist/token-prices-service/index.d.mts.map +1 -0
  192. package/dist/token-prices-service/index.mjs +1 -10
  193. package/dist/token-prices-service/index.mjs.map +1 -1
  194. package/dist/token-service.cjs +130 -0
  195. package/dist/token-service.cjs.map +1 -0
  196. package/dist/{types/token-service.d.ts → token-service.d.cts} +2 -2
  197. package/dist/token-service.d.cts.map +1 -0
  198. package/dist/token-service.d.mts +31 -0
  199. package/dist/token-service.d.mts.map +1 -0
  200. package/dist/token-service.mjs +124 -14
  201. package/dist/token-service.mjs.map +1 -1
  202. package/package.json +24 -18
  203. package/dist/AccountTrackerController.js +0 -10
  204. package/dist/AccountTrackerController.js.map +0 -1
  205. package/dist/AssetsContractController.js +0 -18
  206. package/dist/AssetsContractController.js.map +0 -1
  207. package/dist/CurrencyRateController.js +0 -12
  208. package/dist/CurrencyRateController.js.map +0 -1
  209. package/dist/NftController.js +0 -14
  210. package/dist/NftController.js.map +0 -1
  211. package/dist/NftDetectionController.js +0 -16
  212. package/dist/NftDetectionController.js.map +0 -1
  213. package/dist/RatesController/RatesController.js +0 -14
  214. package/dist/RatesController/RatesController.js.map +0 -1
  215. package/dist/RatesController/index.js +0 -13
  216. package/dist/RatesController/index.js.map +0 -1
  217. package/dist/RatesController/types.js +0 -1
  218. package/dist/RatesController/types.js.map +0 -1
  219. package/dist/Standards/ERC20Standard.js +0 -9
  220. package/dist/Standards/ERC20Standard.js.map +0 -1
  221. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.js +0 -9
  222. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.js.map +0 -1
  223. package/dist/Standards/NftStandards/ERC721/ERC721Standard.js +0 -9
  224. package/dist/Standards/NftStandards/ERC721/ERC721Standard.js.map +0 -1
  225. package/dist/TokenBalancesController.js +0 -12
  226. package/dist/TokenBalancesController.js.map +0 -1
  227. package/dist/TokenDetectionController.js +0 -17
  228. package/dist/TokenDetectionController.js.map +0 -1
  229. package/dist/TokenListController.js +0 -14
  230. package/dist/TokenListController.js.map +0 -1
  231. package/dist/TokenRatesController.js +0 -18
  232. package/dist/TokenRatesController.js.map +0 -1
  233. package/dist/TokensController.js +0 -16
  234. package/dist/TokensController.js.map +0 -1
  235. package/dist/assetsUtil.js +0 -38
  236. package/dist/assetsUtil.js.map +0 -1
  237. package/dist/chunk-27KOXCQK.mjs +0 -1
  238. package/dist/chunk-27KOXCQK.mjs.map +0 -1
  239. package/dist/chunk-2TZK6YZA.js +0 -1405
  240. package/dist/chunk-2TZK6YZA.js.map +0 -1
  241. package/dist/chunk-3LPQTUGG.js +0 -434
  242. package/dist/chunk-3LPQTUGG.js.map +0 -1
  243. package/dist/chunk-3QDXAE2D.mjs +0 -178
  244. package/dist/chunk-3QDXAE2D.mjs.map +0 -1
  245. package/dist/chunk-46KUC5FH.mjs +0 -434
  246. package/dist/chunk-46KUC5FH.mjs.map +0 -1
  247. package/dist/chunk-54JUUBXY.mjs +0 -813
  248. package/dist/chunk-54JUUBXY.mjs.map +0 -1
  249. package/dist/chunk-5QLC2MHV.js +0 -215
  250. package/dist/chunk-5QLC2MHV.js.map +0 -1
  251. package/dist/chunk-7K6PSEAA.js +0 -1
  252. package/dist/chunk-7K6PSEAA.js.map +0 -1
  253. package/dist/chunk-ADJ3IFJH.js +0 -813
  254. package/dist/chunk-ADJ3IFJH.js.map +0 -1
  255. package/dist/chunk-AX522TDL.mjs +0 -85
  256. package/dist/chunk-AX522TDL.mjs.map +0 -1
  257. package/dist/chunk-BBCZM5P4.js +0 -300
  258. package/dist/chunk-BBCZM5P4.js.map +0 -1
  259. package/dist/chunk-BZEAPSD5.mjs +0 -215
  260. package/dist/chunk-BZEAPSD5.mjs.map +0 -1
  261. package/dist/chunk-C7LNCQXM.mjs +0 -300
  262. package/dist/chunk-C7LNCQXM.mjs.map +0 -1
  263. package/dist/chunk-CN53OZAM.mjs +0 -428
  264. package/dist/chunk-CN53OZAM.mjs.map +0 -1
  265. package/dist/chunk-CP3HC7AQ.mjs +0 -12
  266. package/dist/chunk-CP3HC7AQ.mjs.map +0 -1
  267. package/dist/chunk-CUFSPB7T.mjs +0 -530
  268. package/dist/chunk-CUFSPB7T.mjs.map +0 -1
  269. package/dist/chunk-F6L3DFOZ.js +0 -204
  270. package/dist/chunk-F6L3DFOZ.js.map +0 -1
  271. package/dist/chunk-GHG3DOUK.js +0 -428
  272. package/dist/chunk-GHG3DOUK.js.map +0 -1
  273. package/dist/chunk-HJ5GXVDT.mjs +0 -157
  274. package/dist/chunk-HJ5GXVDT.mjs.map +0 -1
  275. package/dist/chunk-HVOIBGYN.js +0 -282
  276. package/dist/chunk-HVOIBGYN.js.map +0 -1
  277. package/dist/chunk-ISK2VSBB.js +0 -178
  278. package/dist/chunk-ISK2VSBB.js.map +0 -1
  279. package/dist/chunk-JCR4H6YL.js +0 -115
  280. package/dist/chunk-JCR4H6YL.js.map +0 -1
  281. package/dist/chunk-JJX7TMH5.mjs +0 -135
  282. package/dist/chunk-JJX7TMH5.mjs.map +0 -1
  283. package/dist/chunk-JTXPJ6TK.mjs +0 -68
  284. package/dist/chunk-JTXPJ6TK.mjs.map +0 -1
  285. package/dist/chunk-JYHAAA6W.mjs +0 -1
  286. package/dist/chunk-JYHAAA6W.mjs.map +0 -1
  287. package/dist/chunk-K7A3EOIM.js +0 -85
  288. package/dist/chunk-K7A3EOIM.js.map +0 -1
  289. package/dist/chunk-KPBNX6GP.mjs +0 -215
  290. package/dist/chunk-KPBNX6GP.mjs.map +0 -1
  291. package/dist/chunk-MZI3SDQN.js +0 -215
  292. package/dist/chunk-MZI3SDQN.js.map +0 -1
  293. package/dist/chunk-OBUR4TXH.js +0 -1
  294. package/dist/chunk-OBUR4TXH.js.map +0 -1
  295. package/dist/chunk-RGHTNZQ6.js +0 -12
  296. package/dist/chunk-RGHTNZQ6.js.map +0 -1
  297. package/dist/chunk-S5CFNNOM.mjs +0 -115
  298. package/dist/chunk-S5CFNNOM.mjs.map +0 -1
  299. package/dist/chunk-SBWPU4VT.mjs +0 -204
  300. package/dist/chunk-SBWPU4VT.mjs.map +0 -1
  301. package/dist/chunk-SK2B36Q4.mjs +0 -1405
  302. package/dist/chunk-SK2B36Q4.mjs.map +0 -1
  303. package/dist/chunk-T5ZX5BV7.js +0 -157
  304. package/dist/chunk-T5ZX5BV7.js.map +0 -1
  305. package/dist/chunk-TFLYM4PY.mjs +0 -291
  306. package/dist/chunk-TFLYM4PY.mjs.map +0 -1
  307. package/dist/chunk-TTH3ES66.mjs +0 -1
  308. package/dist/chunk-TTH3ES66.mjs.map +0 -1
  309. package/dist/chunk-V6DNVROD.js +0 -348
  310. package/dist/chunk-V6DNVROD.js.map +0 -1
  311. package/dist/chunk-X2HRAVDO.js +0 -530
  312. package/dist/chunk-X2HRAVDO.js.map +0 -1
  313. package/dist/chunk-XC3SOOGC.js +0 -1
  314. package/dist/chunk-XC3SOOGC.js.map +0 -1
  315. package/dist/chunk-XQO3EG4J.mjs +0 -348
  316. package/dist/chunk-XQO3EG4J.mjs.map +0 -1
  317. package/dist/chunk-XUI43LEZ.mjs +0 -30
  318. package/dist/chunk-XUI43LEZ.mjs.map +0 -1
  319. package/dist/chunk-YGGUAMHV.js +0 -135
  320. package/dist/chunk-YGGUAMHV.js.map +0 -1
  321. package/dist/chunk-Z4BLTVTB.js +0 -30
  322. package/dist/chunk-Z4BLTVTB.js.map +0 -1
  323. package/dist/chunk-Z7RMCHD4.mjs +0 -282
  324. package/dist/chunk-Z7RMCHD4.mjs.map +0 -1
  325. package/dist/chunk-ZAR4BIOC.js +0 -291
  326. package/dist/chunk-ZAR4BIOC.js.map +0 -1
  327. package/dist/chunk-ZG5MS2TO.js +0 -68
  328. package/dist/chunk-ZG5MS2TO.js.map +0 -1
  329. package/dist/constants.js +0 -8
  330. package/dist/constants.js.map +0 -1
  331. package/dist/crypto-compare-service/crypto-compare.js +0 -10
  332. package/dist/crypto-compare-service/crypto-compare.js.map +0 -1
  333. package/dist/crypto-compare-service/index.js +0 -11
  334. package/dist/crypto-compare-service/index.js.map +0 -1
  335. package/dist/index.js +0 -81
  336. package/dist/index.js.map +0 -1
  337. package/dist/token-prices-service/abstract-token-prices-service.js +0 -1
  338. package/dist/token-prices-service/abstract-token-prices-service.js.map +0 -1
  339. package/dist/token-prices-service/codefi-v2.js +0 -14
  340. package/dist/token-prices-service/codefi-v2.js.map +0 -1
  341. package/dist/token-prices-service/index.js +0 -11
  342. package/dist/token-prices-service/index.js.map +0 -1
  343. package/dist/token-service.js +0 -15
  344. package/dist/token-service.js.map +0 -1
  345. package/dist/tsconfig.build.tsbuildinfo +0 -1
  346. package/dist/types/AccountTrackerController.d.ts.map +0 -1
  347. package/dist/types/AssetsContractController.d.ts.map +0 -1
  348. package/dist/types/CurrencyRateController.d.ts.map +0 -1
  349. package/dist/types/NftController.d.ts.map +0 -1
  350. package/dist/types/NftDetectionController.d.ts.map +0 -1
  351. package/dist/types/RatesController/RatesController.d.ts.map +0 -1
  352. package/dist/types/RatesController/index.d.ts.map +0 -1
  353. package/dist/types/RatesController/types.d.ts.map +0 -1
  354. package/dist/types/Standards/ERC20Standard.d.ts.map +0 -1
  355. package/dist/types/Standards/NftStandards/ERC1155/ERC1155Standard.d.ts.map +0 -1
  356. package/dist/types/Standards/NftStandards/ERC721/ERC721Standard.d.ts.map +0 -1
  357. package/dist/types/TokenBalancesController.d.ts.map +0 -1
  358. package/dist/types/TokenDetectionController.d.ts.map +0 -1
  359. package/dist/types/TokenListController.d.ts.map +0 -1
  360. package/dist/types/TokenRatesController.d.ts.map +0 -1
  361. package/dist/types/TokensController.d.ts.map +0 -1
  362. package/dist/types/assetsUtil.d.ts.map +0 -1
  363. package/dist/types/constants.d.ts.map +0 -1
  364. package/dist/types/crypto-compare-service/crypto-compare.d.ts.map +0 -1
  365. package/dist/types/crypto-compare-service/index.d.ts +0 -2
  366. package/dist/types/crypto-compare-service/index.d.ts.map +0 -1
  367. package/dist/types/index.d.ts.map +0 -1
  368. package/dist/types/token-prices-service/abstract-token-prices-service.d.ts.map +0 -1
  369. package/dist/types/token-prices-service/codefi-v2.d.ts.map +0 -1
  370. package/dist/types/token-prices-service/index.d.ts +0 -3
  371. package/dist/types/token-prices-service/index.d.ts.map +0 -1
  372. package/dist/types/token-service.d.ts.map +0 -1
@@ -1,291 +0,0 @@
1
- import {
2
- fetchTokenListByChainId
3
- } from "./chunk-AX522TDL.mjs";
4
- import {
5
- formatAggregatorNames,
6
- formatIconUrlWithProxy,
7
- isTokenListSupportedForNetwork
8
- } from "./chunk-BZEAPSD5.mjs";
9
- import {
10
- __privateAdd,
11
- __privateMethod
12
- } from "./chunk-XUI43LEZ.mjs";
13
-
14
- // src/TokenListController.ts
15
- import { safelyExecute } from "@metamask/controller-utils";
16
- import { StaticIntervalPollingController } from "@metamask/polling-controller";
17
- import { Mutex } from "async-mutex";
18
- var DEFAULT_INTERVAL = 24 * 60 * 60 * 1e3;
19
- var DEFAULT_THRESHOLD = 24 * 60 * 60 * 1e3;
20
- var name = "TokenListController";
21
- var metadata = {
22
- tokenList: { persist: true, anonymous: true },
23
- tokensChainsCache: { persist: true, anonymous: true },
24
- preventPollingOnNetworkRestart: { persist: true, anonymous: true }
25
- };
26
- var getDefaultTokenListState = () => {
27
- return {
28
- tokenList: {},
29
- tokensChainsCache: {},
30
- preventPollingOnNetworkRestart: false
31
- };
32
- };
33
- var _onNetworkControllerStateChange, onNetworkControllerStateChange_fn, _fetchFromCache, fetchFromCache_fn;
34
- var TokenListController = class extends StaticIntervalPollingController {
35
- /**
36
- * Creates a TokenListController instance.
37
- *
38
- * @param options - The controller options.
39
- * @param options.chainId - The chain ID of the current network.
40
- * @param options.onNetworkStateChange - A function for registering an event handler for network state changes.
41
- * @param options.interval - The polling interval, in milliseconds.
42
- * @param options.cacheRefreshThreshold - The token cache expiry time, in milliseconds.
43
- * @param options.messenger - A restricted controller messenger.
44
- * @param options.state - Initial state to set on this controller.
45
- * @param options.preventPollingOnNetworkRestart - Determines whether to prevent poilling on network restart in extension.
46
- */
47
- constructor({
48
- chainId,
49
- preventPollingOnNetworkRestart = false,
50
- onNetworkStateChange,
51
- interval = DEFAULT_INTERVAL,
52
- cacheRefreshThreshold = DEFAULT_THRESHOLD,
53
- messenger,
54
- state
55
- }) {
56
- super({
57
- name,
58
- metadata,
59
- messenger,
60
- state: { ...getDefaultTokenListState(), ...state }
61
- });
62
- /**
63
- * Updates state and restarts polling on changes to the network controller
64
- * state.
65
- *
66
- * @param networkControllerState - The updated network controller state.
67
- */
68
- __privateAdd(this, _onNetworkControllerStateChange);
69
- /**
70
- * Checks if the Cache timestamp is valid,
71
- * if yes data in cache will be returned
72
- * otherwise null will be returned.
73
- * @param chainId - The chain ID of the network for which to fetch the cache.
74
- * @returns The cached data, or `null` if the cache was expired.
75
- */
76
- __privateAdd(this, _fetchFromCache);
77
- this.mutex = new Mutex();
78
- this.intervalDelay = interval;
79
- this.cacheRefreshThreshold = cacheRefreshThreshold;
80
- this.chainId = chainId;
81
- this.updatePreventPollingOnNetworkRestart(preventPollingOnNetworkRestart);
82
- this.abortController = new AbortController();
83
- if (onNetworkStateChange) {
84
- onNetworkStateChange(async (networkControllerState) => {
85
- await __privateMethod(this, _onNetworkControllerStateChange, onNetworkControllerStateChange_fn).call(this, networkControllerState);
86
- });
87
- } else {
88
- this.messagingSystem.subscribe(
89
- "NetworkController:stateChange",
90
- // TODO: Either fix this lint violation or explain why it's necessary to ignore.
91
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
92
- async (networkControllerState) => {
93
- await __privateMethod(this, _onNetworkControllerStateChange, onNetworkControllerStateChange_fn).call(this, networkControllerState);
94
- }
95
- );
96
- }
97
- }
98
- /**
99
- * Start polling for the token list.
100
- */
101
- async start() {
102
- if (!isTokenListSupportedForNetwork(this.chainId)) {
103
- return;
104
- }
105
- await this.startPolling();
106
- }
107
- /**
108
- * Restart polling for the token list.
109
- */
110
- async restart() {
111
- this.stopPolling();
112
- await this.startPolling();
113
- }
114
- /**
115
- * Stop polling for the token list.
116
- */
117
- stop() {
118
- this.stopPolling();
119
- }
120
- /**
121
- * Prepare to discard this controller.
122
- *
123
- * This stops any active polling.
124
- */
125
- destroy() {
126
- super.destroy();
127
- this.stopPolling();
128
- }
129
- stopPolling() {
130
- if (this.intervalId) {
131
- clearInterval(this.intervalId);
132
- }
133
- }
134
- /**
135
- * Starts a new polling interval.
136
- */
137
- async startPolling() {
138
- await safelyExecute(() => this.fetchTokenList());
139
- this.intervalId = setInterval(async () => {
140
- await safelyExecute(() => this.fetchTokenList());
141
- }, this.intervalDelay);
142
- }
143
- /**
144
- * Fetching token list from the Token Service API.
145
- *
146
- * @private
147
- * @param networkClientId - The ID of the network client triggering the fetch.
148
- * @returns A promise that resolves when this operation completes.
149
- */
150
- async _executePoll(networkClientId) {
151
- return this.fetchTokenList(networkClientId);
152
- }
153
- /**
154
- * Fetching token list from the Token Service API.
155
- *
156
- * @param networkClientId - The ID of the network client triggering the fetch.
157
- */
158
- async fetchTokenList(networkClientId) {
159
- const releaseLock = await this.mutex.acquire();
160
- let networkClient;
161
- if (networkClientId) {
162
- networkClient = this.messagingSystem.call(
163
- "NetworkController:getNetworkClientById",
164
- networkClientId
165
- );
166
- }
167
- const chainId = networkClient?.configuration.chainId ?? this.chainId;
168
- try {
169
- const { tokensChainsCache } = this.state;
170
- let tokenList = {};
171
- const cachedTokens = await safelyExecute(
172
- () => __privateMethod(this, _fetchFromCache, fetchFromCache_fn).call(this, chainId)
173
- );
174
- if (cachedTokens) {
175
- tokenList = { ...cachedTokens };
176
- } else {
177
- const tokensFromAPI = await safelyExecute(
178
- () => fetchTokenListByChainId(
179
- chainId,
180
- this.abortController.signal
181
- )
182
- );
183
- if (!tokensFromAPI) {
184
- tokenList = { ...tokensChainsCache[chainId]?.data || {} };
185
- this.update(() => {
186
- return {
187
- ...this.state,
188
- tokenList,
189
- tokensChainsCache
190
- };
191
- });
192
- return;
193
- }
194
- for (const token of tokensFromAPI) {
195
- const formattedToken = {
196
- ...token,
197
- aggregators: formatAggregatorNames(token.aggregators),
198
- iconUrl: formatIconUrlWithProxy({
199
- chainId,
200
- tokenAddress: token.address
201
- })
202
- };
203
- tokenList[token.address] = formattedToken;
204
- }
205
- }
206
- const updatedTokensChainsCache = {
207
- ...tokensChainsCache,
208
- [chainId]: {
209
- timestamp: Date.now(),
210
- data: tokenList
211
- }
212
- };
213
- this.update(() => {
214
- return {
215
- ...this.state,
216
- tokenList,
217
- tokensChainsCache: updatedTokensChainsCache
218
- };
219
- });
220
- } finally {
221
- releaseLock();
222
- }
223
- }
224
- /**
225
- * Clearing tokenList and tokensChainsCache explicitly.
226
- */
227
- clearingTokenListData() {
228
- this.update(() => {
229
- return {
230
- ...this.state,
231
- tokenList: {},
232
- tokensChainsCache: {}
233
- };
234
- });
235
- }
236
- /**
237
- * Updates preventPollingOnNetworkRestart from extension.
238
- *
239
- * @param shouldPreventPolling - Determine whether to prevent polling on network change
240
- */
241
- updatePreventPollingOnNetworkRestart(shouldPreventPolling) {
242
- this.update(() => {
243
- return {
244
- ...this.state,
245
- preventPollingOnNetworkRestart: shouldPreventPolling
246
- };
247
- });
248
- }
249
- };
250
- _onNetworkControllerStateChange = new WeakSet();
251
- onNetworkControllerStateChange_fn = async function(networkControllerState) {
252
- const selectedNetworkClient = this.messagingSystem.call(
253
- "NetworkController:getNetworkClientById",
254
- networkControllerState.selectedNetworkClientId
255
- );
256
- const { chainId } = selectedNetworkClient.configuration;
257
- if (this.chainId !== chainId) {
258
- this.abortController.abort();
259
- this.abortController = new AbortController();
260
- this.chainId = chainId;
261
- if (this.state.preventPollingOnNetworkRestart) {
262
- this.clearingTokenListData();
263
- } else {
264
- this.update(() => {
265
- return {
266
- ...this.state,
267
- tokenList: this.state.tokensChainsCache[this.chainId]?.data || {}
268
- };
269
- });
270
- await this.restart();
271
- }
272
- }
273
- };
274
- _fetchFromCache = new WeakSet();
275
- fetchFromCache_fn = async function(chainId) {
276
- const { tokensChainsCache } = this.state;
277
- const dataCache = tokensChainsCache[chainId];
278
- const now = Date.now();
279
- if (dataCache?.data && now - dataCache?.timestamp < this.cacheRefreshThreshold) {
280
- return dataCache.data;
281
- }
282
- return null;
283
- };
284
- var TokenListController_default = TokenListController;
285
-
286
- export {
287
- getDefaultTokenListState,
288
- TokenListController,
289
- TokenListController_default
290
- };
291
- //# sourceMappingURL=chunk-TFLYM4PY.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/TokenListController.ts"],"sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedControllerMessenger,\n} from '@metamask/base-controller';\nimport { safelyExecute } from '@metamask/controller-utils';\nimport type {\n NetworkClientId,\n NetworkControllerStateChangeEvent,\n NetworkState,\n NetworkControllerGetNetworkClientByIdAction,\n} from '@metamask/network-controller';\nimport { StaticIntervalPollingController } from '@metamask/polling-controller';\nimport type { Hex } from '@metamask/utils';\nimport { Mutex } from 'async-mutex';\n\nimport {\n isTokenListSupportedForNetwork,\n formatAggregatorNames,\n formatIconUrlWithProxy,\n} from './assetsUtil';\nimport { fetchTokenListByChainId } from './token-service';\n\nconst DEFAULT_INTERVAL = 24 * 60 * 60 * 1000;\nconst DEFAULT_THRESHOLD = 24 * 60 * 60 * 1000;\n\nconst name = 'TokenListController';\n\nexport type TokenListToken = {\n name: string;\n symbol: string;\n decimals: number;\n address: string;\n occurrences: number;\n aggregators: string[];\n iconUrl: string;\n};\n\nexport type TokenListMap = Record<string, TokenListToken>;\n\ntype DataCache = {\n timestamp: number;\n data: TokenListMap;\n};\ntype TokensChainsCache = {\n [chainId: Hex]: DataCache;\n};\n\nexport type TokenListState = {\n tokenList: TokenListMap;\n tokensChainsCache: TokensChainsCache;\n preventPollingOnNetworkRestart: boolean;\n};\n\nexport type TokenListStateChange = ControllerStateChangeEvent<\n typeof name,\n TokenListState\n>;\n\nexport type TokenListControllerEvents = TokenListStateChange;\n\nexport type GetTokenListState = ControllerGetStateAction<\n typeof name,\n TokenListState\n>;\n\nexport type TokenListControllerActions = GetTokenListState;\n\ntype AllowedActions = NetworkControllerGetNetworkClientByIdAction;\n\ntype AllowedEvents = NetworkControllerStateChangeEvent;\n\nexport type TokenListControllerMessenger = RestrictedControllerMessenger<\n typeof name,\n TokenListControllerActions | AllowedActions,\n TokenListControllerEvents | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n>;\n\nconst metadata = {\n tokenList: { persist: true, anonymous: true },\n tokensChainsCache: { persist: true, anonymous: true },\n preventPollingOnNetworkRestart: { persist: true, anonymous: true },\n};\n\nexport const getDefaultTokenListState = (): TokenListState => {\n return {\n tokenList: {},\n tokensChainsCache: {},\n preventPollingOnNetworkRestart: false,\n };\n};\n\n/**\n * Controller that passively polls on a set interval for the list of tokens from metaswaps api\n */\nexport class TokenListController extends StaticIntervalPollingController<\n typeof name,\n TokenListState,\n TokenListControllerMessenger\n> {\n private readonly mutex = new Mutex();\n\n private intervalId?: ReturnType<typeof setTimeout>;\n\n private readonly intervalDelay: number;\n\n private readonly cacheRefreshThreshold: number;\n\n private chainId: Hex;\n\n private abortController: AbortController;\n\n /**\n * Creates a TokenListController instance.\n *\n * @param options - The controller options.\n * @param options.chainId - The chain ID of the current network.\n * @param options.onNetworkStateChange - A function for registering an event handler for network state changes.\n * @param options.interval - The polling interval, in milliseconds.\n * @param options.cacheRefreshThreshold - The token cache expiry time, in milliseconds.\n * @param options.messenger - A restricted controller messenger.\n * @param options.state - Initial state to set on this controller.\n * @param options.preventPollingOnNetworkRestart - Determines whether to prevent poilling on network restart in extension.\n */\n constructor({\n chainId,\n preventPollingOnNetworkRestart = false,\n onNetworkStateChange,\n interval = DEFAULT_INTERVAL,\n cacheRefreshThreshold = DEFAULT_THRESHOLD,\n messenger,\n state,\n }: {\n chainId: Hex;\n preventPollingOnNetworkRestart?: boolean;\n onNetworkStateChange?: (\n listener: (networkState: NetworkState) => void,\n ) => void;\n interval?: number;\n cacheRefreshThreshold?: number;\n messenger: TokenListControllerMessenger;\n state?: Partial<TokenListState>;\n }) {\n super({\n name,\n metadata,\n messenger,\n state: { ...getDefaultTokenListState(), ...state },\n });\n this.intervalDelay = interval;\n this.cacheRefreshThreshold = cacheRefreshThreshold;\n this.chainId = chainId;\n this.updatePreventPollingOnNetworkRestart(preventPollingOnNetworkRestart);\n this.abortController = new AbortController();\n if (onNetworkStateChange) {\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onNetworkStateChange(async (networkControllerState) => {\n await this.#onNetworkControllerStateChange(networkControllerState);\n });\n } else {\n this.messagingSystem.subscribe(\n 'NetworkController:stateChange',\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n async (networkControllerState) => {\n await this.#onNetworkControllerStateChange(networkControllerState);\n },\n );\n }\n }\n\n /**\n * Updates state and restarts polling on changes to the network controller\n * state.\n *\n * @param networkControllerState - The updated network controller state.\n */\n async #onNetworkControllerStateChange(networkControllerState: NetworkState) {\n const selectedNetworkClient = this.messagingSystem.call(\n 'NetworkController:getNetworkClientById',\n networkControllerState.selectedNetworkClientId,\n );\n const { chainId } = selectedNetworkClient.configuration;\n\n if (this.chainId !== chainId) {\n this.abortController.abort();\n this.abortController = new AbortController();\n this.chainId = chainId;\n if (this.state.preventPollingOnNetworkRestart) {\n this.clearingTokenListData();\n } else {\n // Ensure tokenList is referencing data from correct network\n this.update(() => {\n return {\n ...this.state,\n tokenList: this.state.tokensChainsCache[this.chainId]?.data || {},\n };\n });\n await this.restart();\n }\n }\n }\n\n /**\n * Start polling for the token list.\n */\n async start() {\n if (!isTokenListSupportedForNetwork(this.chainId)) {\n return;\n }\n await this.startPolling();\n }\n\n /**\n * Restart polling for the token list.\n */\n async restart() {\n this.stopPolling();\n await this.startPolling();\n }\n\n /**\n * Stop polling for the token list.\n */\n stop() {\n this.stopPolling();\n }\n\n /**\n * Prepare to discard this controller.\n *\n * This stops any active polling.\n */\n override destroy() {\n super.destroy();\n this.stopPolling();\n }\n\n private stopPolling() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n }\n\n /**\n * Starts a new polling interval.\n */\n private async startPolling(): Promise<void> {\n await safelyExecute(() => this.fetchTokenList());\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.intervalId = setInterval(async () => {\n await safelyExecute(() => this.fetchTokenList());\n }, this.intervalDelay);\n }\n\n /**\n * Fetching token list from the Token Service API.\n *\n * @private\n * @param networkClientId - The ID of the network client triggering the fetch.\n * @returns A promise that resolves when this operation completes.\n */\n async _executePoll(networkClientId: string): Promise<void> {\n return this.fetchTokenList(networkClientId);\n }\n\n /**\n * Fetching token list from the Token Service API.\n *\n * @param networkClientId - The ID of the network client triggering the fetch.\n */\n async fetchTokenList(networkClientId?: NetworkClientId): Promise<void> {\n const releaseLock = await this.mutex.acquire();\n let networkClient;\n if (networkClientId) {\n networkClient = this.messagingSystem.call(\n 'NetworkController:getNetworkClientById',\n networkClientId,\n );\n }\n const chainId = networkClient?.configuration.chainId ?? this.chainId;\n try {\n const { tokensChainsCache } = this.state;\n let tokenList: TokenListMap = {};\n const cachedTokens = await safelyExecute(() =>\n this.#fetchFromCache(chainId),\n );\n if (cachedTokens) {\n // Use non-expired cached tokens\n tokenList = { ...cachedTokens };\n } else {\n // Fetch fresh token list\n const tokensFromAPI = await safelyExecute(\n () =>\n fetchTokenListByChainId(\n chainId,\n this.abortController.signal,\n ) as Promise<TokenListToken[]>,\n );\n\n if (!tokensFromAPI) {\n // Fallback to expired cached tokens\n tokenList = { ...(tokensChainsCache[chainId]?.data || {}) };\n this.update(() => {\n return {\n ...this.state,\n tokenList,\n tokensChainsCache,\n };\n });\n return;\n }\n for (const token of tokensFromAPI) {\n const formattedToken: TokenListToken = {\n ...token,\n aggregators: formatAggregatorNames(token.aggregators),\n iconUrl: formatIconUrlWithProxy({\n chainId,\n tokenAddress: token.address,\n }),\n };\n tokenList[token.address] = formattedToken;\n }\n }\n const updatedTokensChainsCache: TokensChainsCache = {\n ...tokensChainsCache,\n [chainId]: {\n timestamp: Date.now(),\n data: tokenList,\n },\n };\n this.update(() => {\n return {\n ...this.state,\n tokenList,\n tokensChainsCache: updatedTokensChainsCache,\n };\n });\n } finally {\n releaseLock();\n }\n }\n\n /**\n * Checks if the Cache timestamp is valid,\n * if yes data in cache will be returned\n * otherwise null will be returned.\n * @param chainId - The chain ID of the network for which to fetch the cache.\n * @returns The cached data, or `null` if the cache was expired.\n */\n async #fetchFromCache(chainId: Hex): Promise<TokenListMap | null> {\n const { tokensChainsCache }: TokenListState = this.state;\n const dataCache = tokensChainsCache[chainId];\n const now = Date.now();\n if (\n dataCache?.data &&\n now - dataCache?.timestamp < this.cacheRefreshThreshold\n ) {\n return dataCache.data;\n }\n return null;\n }\n\n /**\n * Clearing tokenList and tokensChainsCache explicitly.\n */\n clearingTokenListData(): void {\n this.update(() => {\n return {\n ...this.state,\n tokenList: {},\n tokensChainsCache: {},\n };\n });\n }\n\n /**\n * Updates preventPollingOnNetworkRestart from extension.\n *\n * @param shouldPreventPolling - Determine whether to prevent polling on network change\n */\n updatePreventPollingOnNetworkRestart(shouldPreventPolling: boolean): void {\n this.update(() => {\n return {\n ...this.state,\n preventPollingOnNetworkRestart: shouldPreventPolling,\n };\n });\n }\n}\n\nexport default TokenListController;\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-TTH3ES66.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,348 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
-
5
- var _chunkZ4BLTVTBjs = require('./chunk-Z4BLTVTB.js');
6
-
7
- // src/token-prices-service/codefi-v2.ts
8
- var _controllerutils = require('@metamask/controller-utils');
9
- var _utils = require('@metamask/utils');
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
- var _cockatiel = require('cockatiel');
19
- var SUPPORTED_CURRENCIES = [
20
- // Bitcoin
21
- "btc",
22
- // Ether
23
- "eth",
24
- // Litecoin
25
- "ltc",
26
- // Bitcoin Cash
27
- "bch",
28
- // Binance Coin
29
- "bnb",
30
- // EOS
31
- "eos",
32
- // XRP
33
- "xrp",
34
- // Lumens
35
- "xlm",
36
- // Chainlink
37
- "link",
38
- // Polkadot
39
- "dot",
40
- // Yearn.finance
41
- "yfi",
42
- // US Dollar
43
- "usd",
44
- // United Arab Emirates Dirham
45
- "aed",
46
- // Argentine Peso
47
- "ars",
48
- // Australian Dollar
49
- "aud",
50
- // Bangladeshi Taka
51
- "bdt",
52
- // Bahraini Dinar
53
- "bhd",
54
- // Bermudian Dollar
55
- "bmd",
56
- // Brazil Real
57
- "brl",
58
- // Canadian Dollar
59
- "cad",
60
- // Swiss Franc
61
- "chf",
62
- // Chilean Peso
63
- "clp",
64
- // Chinese Yuan
65
- "cny",
66
- // Czech Koruna
67
- "czk",
68
- // Danish Krone
69
- "dkk",
70
- // Euro
71
- "eur",
72
- // British Pound Sterling
73
- "gbp",
74
- // Hong Kong Dollar
75
- "hkd",
76
- // Hungarian Forint
77
- "huf",
78
- // Indonesian Rupiah
79
- "idr",
80
- // Israeli New Shekel
81
- "ils",
82
- // Indian Rupee
83
- "inr",
84
- // Japanese Yen
85
- "jpy",
86
- // South Korean Won
87
- "krw",
88
- // Kuwaiti Dinar
89
- "kwd",
90
- // Sri Lankan Rupee
91
- "lkr",
92
- // Burmese Kyat
93
- "mmk",
94
- // Mexican Peso
95
- "mxn",
96
- // Malaysian Ringgit
97
- "myr",
98
- // Nigerian Naira
99
- "ngn",
100
- // Norwegian Krone
101
- "nok",
102
- // New Zealand Dollar
103
- "nzd",
104
- // Philippine Peso
105
- "php",
106
- // Pakistani Rupee
107
- "pkr",
108
- // Polish Zloty
109
- "pln",
110
- // Russian Ruble
111
- "rub",
112
- // Saudi Riyal
113
- "sar",
114
- // Swedish Krona
115
- "sek",
116
- // Singapore Dollar
117
- "sgd",
118
- // Thai Baht
119
- "thb",
120
- // Turkish Lira
121
- "try",
122
- // New Taiwan Dollar
123
- "twd",
124
- // Ukrainian hryvnia
125
- "uah",
126
- // Venezuelan bolívar fuerte
127
- "vef",
128
- // Vietnamese đồng
129
- "vnd",
130
- // South African Rand
131
- "zar",
132
- // IMF Special Drawing Rights
133
- "xdr",
134
- // Silver - Troy Ounce
135
- "xag",
136
- // Gold - Troy Ounce
137
- "xau",
138
- // Bits
139
- "bits",
140
- // Satoshi
141
- "sats"
142
- ];
143
- var ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
144
- var SUPPORTED_CHAIN_IDS = [
145
- // Ethereum Mainnet
146
- "0x1",
147
- // OP Mainnet
148
- "0xa",
149
- // Cronos Mainnet
150
- "0x19",
151
- // BNB Smart Chain Mainnet
152
- "0x38",
153
- // Syscoin Mainnet
154
- "0x39",
155
- // OKXChain Mainnet
156
- "0x42",
157
- // Hoo Smart Chain
158
- "0x46",
159
- // Meter Mainnet
160
- "0x52",
161
- // TomoChain
162
- "0x58",
163
- // Gnosis
164
- "0x64",
165
- // Velas EVM Mainnet
166
- "0x6a",
167
- // Fuse Mainnet
168
- "0x7a",
169
- // Huobi ECO Chain Mainnet
170
- "0x80",
171
- // Polygon Mainnet
172
- "0x89",
173
- // Fantom Opera
174
- "0xfa",
175
- // Boba Network
176
- "0x120",
177
- // KCC Mainnet
178
- "0x141",
179
- // zkSync Era Mainnet
180
- "0x144",
181
- // Theta Mainnet
182
- "0x169",
183
- // Metis Andromeda Mainnet
184
- "0x440",
185
- // Moonbeam
186
- "0x504",
187
- // Moonriver
188
- "0x505",
189
- // Mantle
190
- "0x1388",
191
- // Base
192
- "0x2105",
193
- // Shiden
194
- "0x150",
195
- // Smart Bitcoin Cash
196
- "0x2710",
197
- // Arbitrum One
198
- "0xa4b1",
199
- // Celo Mainnet
200
- "0xa4ec",
201
- // Oasis Emerald
202
- "0xa516",
203
- // Avalanche C-Chain
204
- "0xa86a",
205
- // Polis Mainnet
206
- "0x518af",
207
- // Aurora Mainnet
208
- "0x4e454152",
209
- // Harmony Mainnet Shard 0
210
- "0x63564c40",
211
- // Linea Mainnet
212
- "0xe708"
213
- ];
214
- var BASE_URL = "https://price.api.cx.metamask.io/v2";
215
- var DEFAULT_TOKEN_PRICE_RETRIES = 3;
216
- var DEFAULT_TOKEN_PRICE_MAX_CONSECUTIVE_FAILURES = (1 + DEFAULT_TOKEN_PRICE_RETRIES) * 3;
217
- var DEFAULT_DEGRADED_THRESHOLD = 5e3;
218
- var _tokenPricePolicy;
219
- var CodefiTokenPricesServiceV2 = class {
220
- /**
221
- * Construct a Codefi Token Price Service.
222
- *
223
- * @param options - Constructor options
224
- * @param options.degradedThreshold - The threshold between "normal" and "degrated" service,
225
- * in milliseconds.
226
- * @param options.retries - Number of retry attempts for each token price update.
227
- * @param options.maximumConsecutiveFailures - The maximum number of consecutive failures
228
- * allowed before breaking the circuit and pausing further updates.
229
- * @param options.onBreak - An event handler for when the circuit breaks, useful for capturing
230
- * metrics about network failures.
231
- * @param options.onDegraded - An event handler for when the circuit remains closed, but requests
232
- * are failing or resolving too slowly (i.e. resolving more slowly than the `degradedThreshold).
233
- * @param options.circuitBreakDuration - The amount of time to wait when the circuit breaks
234
- * from too many consecutive failures.
235
- */
236
- constructor({
237
- degradedThreshold = DEFAULT_DEGRADED_THRESHOLD,
238
- retries = DEFAULT_TOKEN_PRICE_RETRIES,
239
- maximumConsecutiveFailures = DEFAULT_TOKEN_PRICE_MAX_CONSECUTIVE_FAILURES,
240
- onBreak,
241
- onDegraded,
242
- circuitBreakDuration = 30 * 60 * 1e3
243
- } = {}) {
244
- _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _tokenPricePolicy, void 0);
245
- const retryPolicy = _cockatiel.retry.call(void 0, _cockatiel.handleAll, {
246
- maxAttempts: retries,
247
- backoff: new (0, _cockatiel.ExponentialBackoff)()
248
- });
249
- const circuitBreakerPolicy = _cockatiel.circuitBreaker.call(void 0, _cockatiel.handleAll, {
250
- halfOpenAfter: circuitBreakDuration,
251
- breaker: new (0, _cockatiel.ConsecutiveBreaker)(maximumConsecutiveFailures)
252
- });
253
- if (onBreak) {
254
- circuitBreakerPolicy.onBreak(onBreak);
255
- }
256
- if (onDegraded) {
257
- retryPolicy.onGiveUp(() => {
258
- if (circuitBreakerPolicy.state === _cockatiel.CircuitState.Closed) {
259
- onDegraded();
260
- }
261
- });
262
- retryPolicy.onSuccess(({ duration }) => {
263
- if (circuitBreakerPolicy.state === _cockatiel.CircuitState.Closed && duration > degradedThreshold) {
264
- onDegraded();
265
- }
266
- });
267
- }
268
- _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _tokenPricePolicy, _cockatiel.wrap.call(void 0, retryPolicy, circuitBreakerPolicy));
269
- }
270
- /**
271
- * Retrieves prices in the given currency for the tokens identified by the
272
- * given addresses which are expected to live on the given chain.
273
- *
274
- * @param args - The arguments to function.
275
- * @param args.chainId - An EIP-155 chain ID.
276
- * @param args.tokenAddresses - Addresses for tokens that live on the chain.
277
- * @param args.currency - The desired currency of the token prices.
278
- * @returns The prices for the requested tokens.
279
- */
280
- async fetchTokenPrices({
281
- chainId,
282
- tokenAddresses,
283
- currency
284
- }) {
285
- const chainIdAsNumber = _utils.hexToNumber.call(void 0, chainId);
286
- const url = new URL(`${BASE_URL}/chains/${chainIdAsNumber}/spot-prices`);
287
- url.searchParams.append(
288
- "tokenAddresses",
289
- [ZERO_ADDRESS, ...tokenAddresses].join(",")
290
- );
291
- url.searchParams.append("vsCurrency", currency);
292
- url.searchParams.append("includeMarketData", "true");
293
- const addressCryptoDataMap = await _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _tokenPricePolicy).execute(
294
- () => _controllerutils.handleFetch.call(void 0, url, { headers: { "Cache-Control": "no-cache" } })
295
- );
296
- return [ZERO_ADDRESS, ...tokenAddresses].reduce(
297
- (obj, tokenAddress) => {
298
- const lowercasedTokenAddress = tokenAddress.toLowerCase();
299
- const marketData = addressCryptoDataMap[lowercasedTokenAddress];
300
- if (!marketData) {
301
- return obj;
302
- }
303
- const token = {
304
- tokenAddress,
305
- currency,
306
- ...marketData
307
- };
308
- return {
309
- ...obj,
310
- [tokenAddress]: token
311
- };
312
- },
313
- {}
314
- );
315
- }
316
- /**
317
- * Type guard for whether the API can return token prices for the given chain
318
- * ID.
319
- *
320
- * @param chainId - The chain ID to check.
321
- * @returns True if the API supports the chain ID, false otherwise.
322
- */
323
- validateChainIdSupported(chainId) {
324
- const supportedChainIds = SUPPORTED_CHAIN_IDS;
325
- return typeof chainId === "string" && supportedChainIds.includes(chainId);
326
- }
327
- /**
328
- * Type guard for whether the API can return token prices in the given
329
- * currency.
330
- *
331
- * @param currency - The currency to check. If a string, can be either
332
- * lowercase or uppercase.
333
- * @returns True if the API supports the currency, false otherwise.
334
- */
335
- validateCurrencySupported(currency) {
336
- const supportedCurrencies = SUPPORTED_CURRENCIES;
337
- return typeof currency === "string" && supportedCurrencies.includes(currency.toLowerCase());
338
- }
339
- };
340
- _tokenPricePolicy = new WeakMap();
341
-
342
-
343
-
344
-
345
-
346
-
347
- exports.SUPPORTED_CURRENCIES = SUPPORTED_CURRENCIES; exports.ZERO_ADDRESS = ZERO_ADDRESS; exports.SUPPORTED_CHAIN_IDS = SUPPORTED_CHAIN_IDS; exports.CodefiTokenPricesServiceV2 = CodefiTokenPricesServiceV2;
348
- //# sourceMappingURL=chunk-V6DNVROD.js.map