@metamask/assets-controllers 38.0.0 → 38.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/CHANGELOG.md +37 -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} +9 -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} +3 -3
  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 +368 -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 +365 -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} +8 -8
  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} +9 -9
  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 +21 -16
  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-4QZESU46.mjs +0 -530
  248. package/dist/chunk-4QZESU46.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-AX522TDL.mjs +0 -85
  254. package/dist/chunk-AX522TDL.mjs.map +0 -1
  255. package/dist/chunk-AZSIKIMK.mjs +0 -429
  256. package/dist/chunk-AZSIKIMK.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-CP3HC7AQ.mjs +0 -12
  264. package/dist/chunk-CP3HC7AQ.mjs.map +0 -1
  265. package/dist/chunk-FWKV5FGP.mjs +0 -71
  266. package/dist/chunk-FWKV5FGP.mjs.map +0 -1
  267. package/dist/chunk-GDFLKKDY.js +0 -71
  268. package/dist/chunk-GDFLKKDY.js.map +0 -1
  269. package/dist/chunk-GW6RE66P.mjs +0 -210
  270. package/dist/chunk-GW6RE66P.mjs.map +0 -1
  271. package/dist/chunk-HVOIBGYN.js +0 -282
  272. package/dist/chunk-HVOIBGYN.js.map +0 -1
  273. package/dist/chunk-ISK2VSBB.js +0 -178
  274. package/dist/chunk-ISK2VSBB.js.map +0 -1
  275. package/dist/chunk-JCR4H6YL.js +0 -115
  276. package/dist/chunk-JCR4H6YL.js.map +0 -1
  277. package/dist/chunk-JJX7TMH5.mjs +0 -135
  278. package/dist/chunk-JJX7TMH5.mjs.map +0 -1
  279. package/dist/chunk-JMZ7KWJS.js +0 -157
  280. package/dist/chunk-JMZ7KWJS.js.map +0 -1
  281. package/dist/chunk-JYHAAA6W.mjs +0 -1
  282. package/dist/chunk-JYHAAA6W.mjs.map +0 -1
  283. package/dist/chunk-K7A3EOIM.js +0 -85
  284. package/dist/chunk-K7A3EOIM.js.map +0 -1
  285. package/dist/chunk-KPBNX6GP.mjs +0 -215
  286. package/dist/chunk-KPBNX6GP.mjs.map +0 -1
  287. package/dist/chunk-LKVWPNXY.js +0 -429
  288. package/dist/chunk-LKVWPNXY.js.map +0 -1
  289. package/dist/chunk-MZI3SDQN.js +0 -215
  290. package/dist/chunk-MZI3SDQN.js.map +0 -1
  291. package/dist/chunk-NDUMUEE6.js +0 -812
  292. package/dist/chunk-NDUMUEE6.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-SK2B36Q4.mjs +0 -1405
  300. package/dist/chunk-SK2B36Q4.mjs.map +0 -1
  301. package/dist/chunk-TFLYM4PY.mjs +0 -291
  302. package/dist/chunk-TFLYM4PY.mjs.map +0 -1
  303. package/dist/chunk-TIFLP53R.js +0 -210
  304. package/dist/chunk-TIFLP53R.js.map +0 -1
  305. package/dist/chunk-TTH3ES66.mjs +0 -1
  306. package/dist/chunk-TTH3ES66.mjs.map +0 -1
  307. package/dist/chunk-UKXD6WUT.mjs +0 -157
  308. package/dist/chunk-UKXD6WUT.mjs.map +0 -1
  309. package/dist/chunk-UUF4E7OG.js +0 -530
  310. package/dist/chunk-UUF4E7OG.js.map +0 -1
  311. package/dist/chunk-V6DNVROD.js +0 -348
  312. package/dist/chunk-V6DNVROD.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-XMQA5NLX.mjs +0 -812
  316. package/dist/chunk-XMQA5NLX.mjs.map +0 -1
  317. package/dist/chunk-XQO3EG4J.mjs +0 -348
  318. package/dist/chunk-XQO3EG4J.mjs.map +0 -1
  319. package/dist/chunk-XUI43LEZ.mjs +0 -30
  320. package/dist/chunk-XUI43LEZ.mjs.map +0 -1
  321. package/dist/chunk-YGGUAMHV.js +0 -135
  322. package/dist/chunk-YGGUAMHV.js.map +0 -1
  323. package/dist/chunk-Z4BLTVTB.js +0 -30
  324. package/dist/chunk-Z4BLTVTB.js.map +0 -1
  325. package/dist/chunk-Z7RMCHD4.mjs +0 -282
  326. package/dist/chunk-Z7RMCHD4.mjs.map +0 -1
  327. package/dist/chunk-ZAR4BIOC.js +0 -291
  328. package/dist/chunk-ZAR4BIOC.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,812 +0,0 @@
1
- import {
2
- ERC20Standard
3
- } from "./chunk-S5CFNNOM.mjs";
4
- import {
5
- ERC1155Standard
6
- } from "./chunk-KPBNX6GP.mjs";
7
- import {
8
- TOKEN_METADATA_NO_SUPPORT_ERROR,
9
- fetchTokenMetadata
10
- } from "./chunk-AX522TDL.mjs";
11
- import {
12
- formatAggregatorNames,
13
- formatIconUrlWithProxy
14
- } from "./chunk-BZEAPSD5.mjs";
15
- import {
16
- __privateAdd,
17
- __privateGet,
18
- __privateMethod,
19
- __privateSet
20
- } from "./chunk-XUI43LEZ.mjs";
21
-
22
- // src/TokensController.ts
23
- import { Contract } from "@ethersproject/contracts";
24
- import { Web3Provider } from "@ethersproject/providers";
25
- import { BaseController } from "@metamask/base-controller";
26
- import contractsMap from "@metamask/contract-metadata";
27
- import {
28
- toChecksumHexAddress,
29
- ERC721_INTERFACE_ID,
30
- ORIGIN_METAMASK,
31
- ApprovalType,
32
- ERC20,
33
- ERC721,
34
- ERC1155,
35
- isValidHexAddress,
36
- safelyExecute
37
- } from "@metamask/controller-utils";
38
- import { abiERC721 } from "@metamask/metamask-eth-abis";
39
- import { rpcErrors } from "@metamask/rpc-errors";
40
- import { Mutex } from "async-mutex";
41
- import { v1 as random } from "uuid";
42
- var metadata = {
43
- tokens: {
44
- persist: true,
45
- anonymous: false
46
- },
47
- ignoredTokens: {
48
- persist: true,
49
- anonymous: false
50
- },
51
- detectedTokens: {
52
- persist: true,
53
- anonymous: false
54
- },
55
- allTokens: {
56
- persist: true,
57
- anonymous: false
58
- },
59
- allIgnoredTokens: {
60
- persist: true,
61
- anonymous: false
62
- },
63
- allDetectedTokens: {
64
- persist: true,
65
- anonymous: false
66
- }
67
- };
68
- var controllerName = "TokensController";
69
- var getDefaultTokensState = () => {
70
- return {
71
- tokens: [],
72
- ignoredTokens: [],
73
- detectedTokens: [],
74
- allTokens: {},
75
- allIgnoredTokens: {},
76
- allDetectedTokens: {}
77
- };
78
- };
79
- var _mutex, _chainId, _selectedAccountId, _provider, _abortController, _onNetworkDidChange, onNetworkDidChange_fn, _onSelectedAccountChange, onSelectedAccountChange_fn, _fetchTokenMetadata, fetchTokenMetadata_fn, _updateTokensAttribute, updateTokensAttribute_fn, _detectIsERC721, detectIsERC721_fn, _getProvider, getProvider_fn, _createEthersContract, createEthersContract_fn, _generateRandomId, generateRandomId_fn, _getNewAllTokensState, getNewAllTokensState_fn, _getAddressOrSelectedAddress, getAddressOrSelectedAddress_fn, _isInteractingWithWallet, isInteractingWithWallet_fn, _requestApproval, requestApproval_fn, _getSelectedAccount, getSelectedAccount_fn, _getSelectedAddress, getSelectedAddress_fn;
80
- var TokensController = class extends BaseController {
81
- /**
82
- * Tokens controller options
83
- * @param options - Constructor options.
84
- * @param options.chainId - The chain ID of the current network.
85
- * @param options.provider - Network provider.
86
- * @param options.state - Initial state to set on this controller.
87
- * @param options.messenger - The controller messenger.
88
- */
89
- constructor({
90
- chainId: initialChainId,
91
- provider,
92
- state,
93
- messenger
94
- }) {
95
- super({
96
- name: controllerName,
97
- metadata,
98
- messenger,
99
- state: {
100
- ...getDefaultTokensState(),
101
- ...state
102
- }
103
- });
104
- /**
105
- * Handles the event when the network changes.
106
- *
107
- * @param networkState - The changed network state.
108
- * @param networkState.selectedNetworkClientId - The ID of the currently
109
- * selected network client.
110
- */
111
- __privateAdd(this, _onNetworkDidChange);
112
- /**
113
- * Handles the selected account change in the accounts controller.
114
- * @param selectedAccount - The new selected account
115
- */
116
- __privateAdd(this, _onSelectedAccountChange);
117
- /**
118
- * Fetch metadata for a token.
119
- *
120
- * @param tokenAddress - The address of the token.
121
- * @returns The token metadata.
122
- */
123
- __privateAdd(this, _fetchTokenMetadata);
124
- /**
125
- * This is a function that updates the tokens name for the tokens name if it is not defined.
126
- *
127
- * @param tokenList - Represents the fetched token list from service API
128
- * @param tokenAttribute - Represents the token attribute that we want to update on the token list
129
- */
130
- __privateAdd(this, _updateTokensAttribute);
131
- /**
132
- * Detects whether or not a token is ERC-721 compatible.
133
- *
134
- * @param tokenAddress - The token contract address.
135
- * @param networkClientId - Optional network client ID to fetch contract info with.
136
- * @returns A boolean indicating whether the token address passed in supports the EIP-721
137
- * interface.
138
- */
139
- __privateAdd(this, _detectIsERC721);
140
- __privateAdd(this, _getProvider);
141
- __privateAdd(this, _createEthersContract);
142
- __privateAdd(this, _generateRandomId);
143
- /**
144
- * Takes a new tokens and ignoredTokens array for the current network/account combination
145
- * and returns new allTokens and allIgnoredTokens state to update to.
146
- *
147
- * @param params - Object that holds token params.
148
- * @param params.newTokens - The new tokens to set for the current network and selected account.
149
- * @param params.newIgnoredTokens - The new ignored tokens to set for the current network and selected account.
150
- * @param params.newDetectedTokens - The new detected tokens to set for the current network and selected account.
151
- * @param params.interactingAddress - The account address to use to store the tokens.
152
- * @param params.interactingChainId - The chainId to use to store the tokens.
153
- * @returns The updated `allTokens` and `allIgnoredTokens` state.
154
- */
155
- __privateAdd(this, _getNewAllTokensState);
156
- __privateAdd(this, _getAddressOrSelectedAddress);
157
- __privateAdd(this, _isInteractingWithWallet);
158
- __privateAdd(this, _requestApproval);
159
- __privateAdd(this, _getSelectedAccount);
160
- __privateAdd(this, _getSelectedAddress);
161
- __privateAdd(this, _mutex, new Mutex());
162
- __privateAdd(this, _chainId, void 0);
163
- __privateAdd(this, _selectedAccountId, void 0);
164
- __privateAdd(this, _provider, void 0);
165
- __privateAdd(this, _abortController, void 0);
166
- __privateSet(this, _chainId, initialChainId);
167
- __privateSet(this, _provider, provider);
168
- __privateSet(this, _selectedAccountId, __privateMethod(this, _getSelectedAccount, getSelectedAccount_fn).call(this).id);
169
- __privateSet(this, _abortController, new AbortController());
170
- this.messagingSystem.registerActionHandler(
171
- `${controllerName}:addDetectedTokens`,
172
- this.addDetectedTokens.bind(this)
173
- );
174
- this.messagingSystem.subscribe(
175
- "AccountsController:selectedEvmAccountChange",
176
- __privateMethod(this, _onSelectedAccountChange, onSelectedAccountChange_fn).bind(this)
177
- );
178
- this.messagingSystem.subscribe(
179
- "NetworkController:networkDidChange",
180
- __privateMethod(this, _onNetworkDidChange, onNetworkDidChange_fn).bind(this)
181
- );
182
- this.messagingSystem.subscribe(
183
- "TokenListController:stateChange",
184
- ({ tokenList }) => {
185
- const { tokens } = this.state;
186
- if (tokens.length && !tokens[0].name) {
187
- __privateMethod(this, _updateTokensAttribute, updateTokensAttribute_fn).call(this, tokenList, "name");
188
- }
189
- }
190
- );
191
- }
192
- /**
193
- * Adds a token to the stored token list.
194
- *
195
- * @param options - The method argument object.
196
- * @param options.address - Hex address of the token contract.
197
- * @param options.symbol - Symbol of the token.
198
- * @param options.decimals - Number of decimals the token uses.
199
- * @param options.name - Name of the token.
200
- * @param options.image - Image of the token.
201
- * @param options.interactingAddress - The address of the account to add a token to.
202
- * @param options.networkClientId - Network Client ID.
203
- * @returns Current token list.
204
- */
205
- async addToken({
206
- address,
207
- symbol,
208
- decimals,
209
- name,
210
- image,
211
- interactingAddress,
212
- networkClientId
213
- }) {
214
- const chainId = __privateGet(this, _chainId);
215
- const releaseLock = await __privateGet(this, _mutex).acquire();
216
- const { allTokens, allIgnoredTokens, allDetectedTokens } = this.state;
217
- let currentChainId = chainId;
218
- if (networkClientId) {
219
- currentChainId = this.messagingSystem.call(
220
- "NetworkController:getNetworkClientById",
221
- networkClientId
222
- ).configuration.chainId;
223
- }
224
- const accountAddress = __privateMethod(this, _getAddressOrSelectedAddress, getAddressOrSelectedAddress_fn).call(this, interactingAddress);
225
- const isInteractingWithWalletAccount = __privateMethod(this, _isInteractingWithWallet, isInteractingWithWallet_fn).call(this, accountAddress);
226
- try {
227
- address = toChecksumHexAddress(address);
228
- const tokens = allTokens[currentChainId]?.[accountAddress] || [];
229
- const ignoredTokens = allIgnoredTokens[currentChainId]?.[accountAddress] || [];
230
- const detectedTokens = allDetectedTokens[currentChainId]?.[accountAddress] || [];
231
- const newTokens = [...tokens];
232
- const [isERC721, tokenMetadata] = await Promise.all([
233
- __privateMethod(this, _detectIsERC721, detectIsERC721_fn).call(this, address, networkClientId),
234
- // TODO parameterize the token metadata fetch by networkClientId
235
- __privateMethod(this, _fetchTokenMetadata, fetchTokenMetadata_fn).call(this, address)
236
- ]);
237
- if (!networkClientId && currentChainId !== __privateGet(this, _chainId)) {
238
- throw new Error(
239
- "TokensController Error: Switched networks while adding token"
240
- );
241
- }
242
- const newEntry = {
243
- address,
244
- symbol,
245
- decimals,
246
- image: image || formatIconUrlWithProxy({
247
- chainId: currentChainId,
248
- tokenAddress: address
249
- }),
250
- isERC721,
251
- aggregators: formatAggregatorNames(tokenMetadata?.aggregators || []),
252
- name
253
- };
254
- const previousIndex = newTokens.findIndex(
255
- (token) => token.address.toLowerCase() === address.toLowerCase()
256
- );
257
- if (previousIndex !== -1) {
258
- newTokens[previousIndex] = newEntry;
259
- } else {
260
- newTokens.push(newEntry);
261
- }
262
- const newIgnoredTokens = ignoredTokens.filter(
263
- (tokenAddress) => tokenAddress.toLowerCase() !== address.toLowerCase()
264
- );
265
- const newDetectedTokens = detectedTokens.filter(
266
- (token) => token.address.toLowerCase() !== address.toLowerCase()
267
- );
268
- const { newAllTokens, newAllIgnoredTokens, newAllDetectedTokens } = __privateMethod(this, _getNewAllTokensState, getNewAllTokensState_fn).call(this, {
269
- newTokens,
270
- newIgnoredTokens,
271
- newDetectedTokens,
272
- interactingAddress: accountAddress,
273
- interactingChainId: currentChainId
274
- });
275
- let newState = {
276
- allTokens: newAllTokens,
277
- allIgnoredTokens: newAllIgnoredTokens,
278
- allDetectedTokens: newAllDetectedTokens
279
- };
280
- if (isInteractingWithWalletAccount) {
281
- newState = {
282
- ...newState,
283
- tokens: newTokens,
284
- ignoredTokens: newIgnoredTokens,
285
- detectedTokens: newDetectedTokens
286
- };
287
- }
288
- this.update((state) => {
289
- Object.assign(state, newState);
290
- });
291
- return newTokens;
292
- } finally {
293
- releaseLock();
294
- }
295
- }
296
- /**
297
- * Add a batch of tokens.
298
- *
299
- * @param tokensToImport - Array of tokens to import.
300
- * @param networkClientId - Optional network client ID used to determine interacting chain ID.
301
- */
302
- async addTokens(tokensToImport, networkClientId) {
303
- const releaseLock = await __privateGet(this, _mutex).acquire();
304
- const { tokens, detectedTokens, ignoredTokens } = this.state;
305
- const importedTokensMap = {};
306
- const newTokensMap = tokens.reduce((output, current) => {
307
- output[current.address] = current;
308
- return output;
309
- }, {});
310
- try {
311
- tokensToImport.forEach((tokenToAdd) => {
312
- const { address, symbol, decimals, image, aggregators, name } = tokenToAdd;
313
- const checksumAddress = toChecksumHexAddress(address);
314
- const formattedToken = {
315
- address: checksumAddress,
316
- symbol,
317
- decimals,
318
- image,
319
- aggregators,
320
- name
321
- };
322
- newTokensMap[address] = formattedToken;
323
- importedTokensMap[address.toLowerCase()] = true;
324
- return formattedToken;
325
- });
326
- const newTokens = Object.values(newTokensMap);
327
- const newDetectedTokens = detectedTokens.filter(
328
- (token) => !importedTokensMap[token.address.toLowerCase()]
329
- );
330
- const newIgnoredTokens = ignoredTokens.filter(
331
- (tokenAddress) => !newTokensMap[tokenAddress.toLowerCase()]
332
- );
333
- let interactingChainId;
334
- if (networkClientId) {
335
- interactingChainId = this.messagingSystem.call(
336
- "NetworkController:getNetworkClientById",
337
- networkClientId
338
- ).configuration.chainId;
339
- }
340
- const { newAllTokens, newAllDetectedTokens, newAllIgnoredTokens } = __privateMethod(this, _getNewAllTokensState, getNewAllTokensState_fn).call(this, {
341
- newTokens,
342
- newDetectedTokens,
343
- newIgnoredTokens,
344
- interactingChainId
345
- });
346
- this.update((state) => {
347
- state.tokens = newTokens;
348
- state.allTokens = newAllTokens;
349
- state.detectedTokens = newDetectedTokens;
350
- state.allDetectedTokens = newAllDetectedTokens;
351
- state.ignoredTokens = newIgnoredTokens;
352
- state.allIgnoredTokens = newAllIgnoredTokens;
353
- });
354
- } finally {
355
- releaseLock();
356
- }
357
- }
358
- /**
359
- * Ignore a batch of tokens.
360
- *
361
- * @param tokenAddressesToIgnore - Array of token addresses to ignore.
362
- */
363
- ignoreTokens(tokenAddressesToIgnore) {
364
- const { ignoredTokens, detectedTokens, tokens } = this.state;
365
- const ignoredTokensMap = {};
366
- let newIgnoredTokens = [...ignoredTokens];
367
- const checksummedTokenAddresses = tokenAddressesToIgnore.map((address) => {
368
- const checksumAddress = toChecksumHexAddress(address);
369
- ignoredTokensMap[address.toLowerCase()] = true;
370
- return checksumAddress;
371
- });
372
- newIgnoredTokens = [...ignoredTokens, ...checksummedTokenAddresses];
373
- const newDetectedTokens = detectedTokens.filter(
374
- (token) => !ignoredTokensMap[token.address.toLowerCase()]
375
- );
376
- const newTokens = tokens.filter(
377
- (token) => !ignoredTokensMap[token.address.toLowerCase()]
378
- );
379
- const { newAllIgnoredTokens, newAllDetectedTokens, newAllTokens } = __privateMethod(this, _getNewAllTokensState, getNewAllTokensState_fn).call(this, {
380
- newIgnoredTokens,
381
- newDetectedTokens,
382
- newTokens
383
- });
384
- this.update((state) => {
385
- state.ignoredTokens = newIgnoredTokens;
386
- state.tokens = newTokens;
387
- state.detectedTokens = newDetectedTokens;
388
- state.allIgnoredTokens = newAllIgnoredTokens;
389
- state.allDetectedTokens = newAllDetectedTokens;
390
- state.allTokens = newAllTokens;
391
- });
392
- }
393
- /**
394
- * Adds a batch of detected tokens to the stored token list.
395
- *
396
- * @param incomingDetectedTokens - Array of detected tokens to be added or updated.
397
- * @param detectionDetails - An object containing the chain ID and address of the currently selected network on which the incomingDetectedTokens were detected.
398
- * @param detectionDetails.selectedAddress - the account address on which the incomingDetectedTokens were detected.
399
- * @param detectionDetails.chainId - the chainId on which the incomingDetectedTokens were detected.
400
- */
401
- async addDetectedTokens(incomingDetectedTokens, detectionDetails) {
402
- const releaseLock = await __privateGet(this, _mutex).acquire();
403
- const chainId = detectionDetails?.chainId ?? __privateGet(this, _chainId);
404
- const accountAddress = detectionDetails?.selectedAddress ?? __privateMethod(this, _getSelectedAddress, getSelectedAddress_fn).call(this);
405
- const { allTokens, allDetectedTokens, allIgnoredTokens } = this.state;
406
- let newTokens = [...allTokens?.[chainId]?.[accountAddress] ?? []];
407
- let newDetectedTokens = [
408
- ...allDetectedTokens?.[chainId]?.[accountAddress] ?? []
409
- ];
410
- try {
411
- incomingDetectedTokens.forEach((tokenToAdd) => {
412
- const {
413
- address,
414
- symbol,
415
- decimals,
416
- image,
417
- aggregators,
418
- isERC721,
419
- name
420
- } = tokenToAdd;
421
- const checksumAddress = toChecksumHexAddress(address);
422
- const newEntry = {
423
- address: checksumAddress,
424
- symbol,
425
- decimals,
426
- image,
427
- isERC721,
428
- aggregators,
429
- name
430
- };
431
- const previousImportedIndex = newTokens.findIndex(
432
- (token) => token.address.toLowerCase() === checksumAddress.toLowerCase()
433
- );
434
- if (previousImportedIndex !== -1) {
435
- newTokens[previousImportedIndex] = newEntry;
436
- } else {
437
- const ignoredTokenIndex = allIgnoredTokens?.[chainId]?.[accountAddress]?.indexOf(address) ?? -1;
438
- if (ignoredTokenIndex === -1) {
439
- const previousDetectedIndex = newDetectedTokens.findIndex(
440
- (token) => token.address.toLowerCase() === checksumAddress.toLowerCase()
441
- );
442
- if (previousDetectedIndex !== -1) {
443
- newDetectedTokens[previousDetectedIndex] = newEntry;
444
- } else {
445
- newDetectedTokens.push(newEntry);
446
- }
447
- }
448
- }
449
- });
450
- const { newAllTokens, newAllDetectedTokens } = __privateMethod(this, _getNewAllTokensState, getNewAllTokensState_fn).call(this, {
451
- newTokens,
452
- newDetectedTokens,
453
- interactingAddress: accountAddress,
454
- interactingChainId: chainId
455
- });
456
- const selectedAddress = __privateMethod(this, _getSelectedAddress, getSelectedAddress_fn).call(this);
457
- newTokens = newAllTokens?.[__privateGet(this, _chainId)]?.[selectedAddress] || [];
458
- newDetectedTokens = newAllDetectedTokens?.[__privateGet(this, _chainId)]?.[selectedAddress] || [];
459
- this.update((state) => {
460
- state.tokens = newTokens;
461
- state.allTokens = newAllTokens;
462
- state.detectedTokens = newDetectedTokens;
463
- state.allDetectedTokens = newAllDetectedTokens;
464
- });
465
- } finally {
466
- releaseLock();
467
- }
468
- }
469
- /**
470
- * Adds isERC721 field to token object. This is called when a user attempts to add tokens that
471
- * were previously added which do not yet had isERC721 field.
472
- *
473
- * @param tokenAddress - The contract address of the token requiring the isERC721 field added.
474
- * @returns The new token object with the added isERC721 field.
475
- */
476
- async updateTokenType(tokenAddress) {
477
- const isERC721 = await __privateMethod(this, _detectIsERC721, detectIsERC721_fn).call(this, tokenAddress);
478
- const tokens = [...this.state.tokens];
479
- const tokenIndex = tokens.findIndex((token) => {
480
- return token.address.toLowerCase() === tokenAddress.toLowerCase();
481
- });
482
- const updatedToken = { ...tokens[tokenIndex], isERC721 };
483
- tokens[tokenIndex] = updatedToken;
484
- this.update((state) => {
485
- state.tokens = tokens;
486
- });
487
- return updatedToken;
488
- }
489
- /**
490
- * Adds a new suggestedAsset to the list of watched assets.
491
- * Parameters will be validated according to the asset type being watched.
492
- *
493
- * @param options - The method options.
494
- * @param options.asset - The asset to be watched. For now only ERC20 tokens are accepted.
495
- * @param options.type - The asset type.
496
- * @param options.interactingAddress - The address of the account that is requesting to watch the asset.
497
- * @param options.networkClientId - Network Client ID.
498
- * @returns A promise that resolves if the asset was watched successfully, and rejects otherwise.
499
- */
500
- async watchAsset({
501
- asset,
502
- type,
503
- interactingAddress,
504
- networkClientId
505
- }) {
506
- if (type !== ERC20) {
507
- throw new Error(`Asset of type ${type} not supported`);
508
- }
509
- if (!asset.address) {
510
- throw rpcErrors.invalidParams("Address must be specified");
511
- }
512
- if (!isValidHexAddress(asset.address)) {
513
- throw rpcErrors.invalidParams(`Invalid address "${asset.address}"`);
514
- }
515
- const selectedAddress = __privateMethod(this, _getAddressOrSelectedAddress, getAddressOrSelectedAddress_fn).call(this, interactingAddress);
516
- if (await __privateMethod(this, _detectIsERC721, detectIsERC721_fn).call(this, asset.address, networkClientId)) {
517
- throw rpcErrors.invalidParams(
518
- // TODO: Either fix this lint violation or explain why it's necessary to ignore.
519
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
520
- `Contract ${asset.address} must match type ${type}, but was detected as ${ERC721}`
521
- );
522
- }
523
- const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this, networkClientId);
524
- const isErc1155 = await safelyExecute(
525
- () => new ERC1155Standard(provider).contractSupportsBase1155Interface(
526
- asset.address
527
- )
528
- );
529
- if (isErc1155) {
530
- throw rpcErrors.invalidParams(
531
- // TODO: Either fix this lint violation or explain why it's necessary to ignore.
532
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
533
- `Contract ${asset.address} must match type ${type}, but was detected as ${ERC1155}`
534
- );
535
- }
536
- const erc20 = new ERC20Standard(provider);
537
- const [contractName, contractSymbol, contractDecimals] = await Promise.all([
538
- safelyExecute(() => erc20.getTokenName(asset.address)),
539
- safelyExecute(() => erc20.getTokenSymbol(asset.address)),
540
- safelyExecute(async () => erc20.getTokenDecimals(asset.address))
541
- ]);
542
- asset.name = contractName;
543
- if (!asset.symbol && !contractSymbol) {
544
- throw rpcErrors.invalidParams(
545
- "A symbol is required, but was not found in either the request or contract"
546
- );
547
- }
548
- if (contractSymbol !== void 0 && asset.symbol !== void 0 && asset.symbol.toUpperCase() !== contractSymbol.toUpperCase()) {
549
- throw rpcErrors.invalidParams(
550
- // TODO: Either fix this lint violation or explain why it's necessary to ignore.
551
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
552
- `The symbol in the request (${asset.symbol}) does not match the symbol in the contract (${contractSymbol})`
553
- );
554
- }
555
- asset.symbol = contractSymbol ?? asset.symbol;
556
- if (typeof asset.symbol !== "string") {
557
- throw rpcErrors.invalidParams(`Invalid symbol: not a string`);
558
- }
559
- if (asset.symbol.length > 11) {
560
- throw rpcErrors.invalidParams(
561
- `Invalid symbol "${asset.symbol}": longer than 11 characters`
562
- );
563
- }
564
- if (asset.decimals === void 0 && contractDecimals === void 0) {
565
- throw rpcErrors.invalidParams(
566
- "Decimals are required, but were not found in either the request or contract"
567
- );
568
- }
569
- if (contractDecimals !== void 0 && asset.decimals !== void 0 && String(asset.decimals) !== contractDecimals) {
570
- throw rpcErrors.invalidParams(
571
- // TODO: Either fix this lint violation or explain why it's necessary to ignore.
572
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
573
- `The decimals in the request (${asset.decimals}) do not match the decimals in the contract (${contractDecimals})`
574
- );
575
- }
576
- const decimalsStr = contractDecimals ?? asset.decimals;
577
- const decimalsNum = parseInt(decimalsStr, 10);
578
- if (!Number.isInteger(decimalsNum) || decimalsNum > 36 || decimalsNum < 0) {
579
- throw rpcErrors.invalidParams(
580
- // TODO: Either fix this lint violation or explain why it's necessary to ignore.
581
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
582
- `Invalid decimals "${decimalsStr}": must be an integer 0 <= 36`
583
- );
584
- }
585
- asset.decimals = decimalsNum;
586
- const suggestedAssetMeta = {
587
- asset,
588
- id: __privateMethod(this, _generateRandomId, generateRandomId_fn).call(this),
589
- time: Date.now(),
590
- type,
591
- interactingAddress: selectedAddress
592
- };
593
- await __privateMethod(this, _requestApproval, requestApproval_fn).call(this, suggestedAssetMeta);
594
- const { address, symbol, decimals, name, image } = asset;
595
- await this.addToken({
596
- address,
597
- symbol,
598
- decimals,
599
- name,
600
- image,
601
- interactingAddress: suggestedAssetMeta.interactingAddress,
602
- networkClientId
603
- });
604
- }
605
- /**
606
- * Removes all tokens from the ignored list.
607
- */
608
- clearIgnoredTokens() {
609
- this.update((state) => {
610
- state.ignoredTokens = [];
611
- state.allIgnoredTokens = {};
612
- });
613
- }
614
- };
615
- _mutex = new WeakMap();
616
- _chainId = new WeakMap();
617
- _selectedAccountId = new WeakMap();
618
- _provider = new WeakMap();
619
- _abortController = new WeakMap();
620
- _onNetworkDidChange = new WeakSet();
621
- onNetworkDidChange_fn = function({ selectedNetworkClientId }) {
622
- const selectedNetworkClient = this.messagingSystem.call(
623
- "NetworkController:getNetworkClientById",
624
- selectedNetworkClientId
625
- );
626
- const { allTokens, allIgnoredTokens, allDetectedTokens } = this.state;
627
- const { chainId } = selectedNetworkClient.configuration;
628
- __privateGet(this, _abortController).abort();
629
- __privateSet(this, _abortController, new AbortController());
630
- __privateSet(this, _chainId, chainId);
631
- const selectedAddress = __privateMethod(this, _getSelectedAddress, getSelectedAddress_fn).call(this);
632
- this.update((state) => {
633
- state.tokens = allTokens[chainId]?.[selectedAddress] || [];
634
- state.ignoredTokens = allIgnoredTokens[chainId]?.[selectedAddress] || [];
635
- state.detectedTokens = allDetectedTokens[chainId]?.[selectedAddress] || [];
636
- });
637
- };
638
- _onSelectedAccountChange = new WeakSet();
639
- onSelectedAccountChange_fn = function(selectedAccount) {
640
- const { allTokens, allIgnoredTokens, allDetectedTokens } = this.state;
641
- __privateSet(this, _selectedAccountId, selectedAccount.id);
642
- this.update((state) => {
643
- state.tokens = allTokens[__privateGet(this, _chainId)]?.[selectedAccount.address] ?? [];
644
- state.ignoredTokens = allIgnoredTokens[__privateGet(this, _chainId)]?.[selectedAccount.address] ?? [];
645
- state.detectedTokens = allDetectedTokens[__privateGet(this, _chainId)]?.[selectedAccount.address] ?? [];
646
- });
647
- };
648
- _fetchTokenMetadata = new WeakSet();
649
- fetchTokenMetadata_fn = async function(tokenAddress) {
650
- try {
651
- const token = await fetchTokenMetadata(
652
- __privateGet(this, _chainId),
653
- tokenAddress,
654
- __privateGet(this, _abortController).signal
655
- );
656
- return token;
657
- } catch (error) {
658
- if (error instanceof Error && error.message.includes(TOKEN_METADATA_NO_SUPPORT_ERROR)) {
659
- return void 0;
660
- }
661
- throw error;
662
- }
663
- };
664
- _updateTokensAttribute = new WeakSet();
665
- updateTokensAttribute_fn = function(tokenList, tokenAttribute) {
666
- const { tokens } = this.state;
667
- const newTokens = tokens.map((token) => {
668
- const newToken = tokenList[token.address.toLowerCase()];
669
- return !token[tokenAttribute] && newToken?.[tokenAttribute] ? { ...token, [tokenAttribute]: newToken[tokenAttribute] } : { ...token };
670
- });
671
- this.update((state) => {
672
- state.tokens = newTokens;
673
- });
674
- };
675
- _detectIsERC721 = new WeakSet();
676
- detectIsERC721_fn = async function(tokenAddress, networkClientId) {
677
- const checksumAddress = toChecksumHexAddress(tokenAddress);
678
- if (contractsMap[checksumAddress]?.erc721 === true) {
679
- return Promise.resolve(true);
680
- } else if (contractsMap[checksumAddress]?.erc20 === true) {
681
- return Promise.resolve(false);
682
- }
683
- const tokenContract = __privateMethod(this, _createEthersContract, createEthersContract_fn).call(this, tokenAddress, abiERC721, networkClientId);
684
- try {
685
- return await tokenContract.supportsInterface(ERC721_INTERFACE_ID);
686
- } catch (error) {
687
- return false;
688
- }
689
- };
690
- _getProvider = new WeakSet();
691
- getProvider_fn = function(networkClientId) {
692
- return new Web3Provider(
693
- networkClientId ? this.messagingSystem.call(
694
- "NetworkController:getNetworkClientById",
695
- networkClientId
696
- ).provider : __privateGet(this, _provider)
697
- );
698
- };
699
- _createEthersContract = new WeakSet();
700
- createEthersContract_fn = function(tokenAddress, abi, networkClientId) {
701
- const web3provider = __privateMethod(this, _getProvider, getProvider_fn).call(this, networkClientId);
702
- const tokenContract = new Contract(tokenAddress, abi, web3provider);
703
- return tokenContract;
704
- };
705
- _generateRandomId = new WeakSet();
706
- generateRandomId_fn = function() {
707
- return random();
708
- };
709
- _getNewAllTokensState = new WeakSet();
710
- getNewAllTokensState_fn = function(params) {
711
- const {
712
- newTokens,
713
- newIgnoredTokens,
714
- newDetectedTokens,
715
- interactingAddress,
716
- interactingChainId
717
- } = params;
718
- const { allTokens, allIgnoredTokens, allDetectedTokens } = this.state;
719
- const userAddressToAddTokens = __privateMethod(this, _getAddressOrSelectedAddress, getAddressOrSelectedAddress_fn).call(this, interactingAddress);
720
- const chainIdToAddTokens = interactingChainId ?? __privateGet(this, _chainId);
721
- let newAllTokens = allTokens;
722
- if (newTokens?.length || newTokens && allTokens && allTokens[chainIdToAddTokens] && allTokens[chainIdToAddTokens][userAddressToAddTokens]) {
723
- const networkTokens = allTokens[chainIdToAddTokens];
724
- const newNetworkTokens = {
725
- ...networkTokens,
726
- ...{ [userAddressToAddTokens]: newTokens }
727
- };
728
- newAllTokens = {
729
- ...allTokens,
730
- ...{ [chainIdToAddTokens]: newNetworkTokens }
731
- };
732
- }
733
- let newAllIgnoredTokens = allIgnoredTokens;
734
- if (newIgnoredTokens?.length || newIgnoredTokens && allIgnoredTokens && allIgnoredTokens[chainIdToAddTokens] && allIgnoredTokens[chainIdToAddTokens][userAddressToAddTokens]) {
735
- const networkIgnoredTokens = allIgnoredTokens[chainIdToAddTokens];
736
- const newIgnoredNetworkTokens = {
737
- ...networkIgnoredTokens,
738
- ...{ [userAddressToAddTokens]: newIgnoredTokens }
739
- };
740
- newAllIgnoredTokens = {
741
- ...allIgnoredTokens,
742
- ...{ [chainIdToAddTokens]: newIgnoredNetworkTokens }
743
- };
744
- }
745
- let newAllDetectedTokens = allDetectedTokens;
746
- if (newDetectedTokens?.length || newDetectedTokens && allDetectedTokens && allDetectedTokens[chainIdToAddTokens] && allDetectedTokens[chainIdToAddTokens][userAddressToAddTokens]) {
747
- const networkDetectedTokens = allDetectedTokens[chainIdToAddTokens];
748
- const newDetectedNetworkTokens = {
749
- ...networkDetectedTokens,
750
- ...{ [userAddressToAddTokens]: newDetectedTokens }
751
- };
752
- newAllDetectedTokens = {
753
- ...allDetectedTokens,
754
- ...{ [chainIdToAddTokens]: newDetectedNetworkTokens }
755
- };
756
- }
757
- return { newAllTokens, newAllIgnoredTokens, newAllDetectedTokens };
758
- };
759
- _getAddressOrSelectedAddress = new WeakSet();
760
- getAddressOrSelectedAddress_fn = function(address) {
761
- if (address) {
762
- return address;
763
- }
764
- return __privateMethod(this, _getSelectedAddress, getSelectedAddress_fn).call(this);
765
- };
766
- _isInteractingWithWallet = new WeakSet();
767
- isInteractingWithWallet_fn = function(address) {
768
- const selectedAddress = __privateMethod(this, _getSelectedAddress, getSelectedAddress_fn).call(this);
769
- return selectedAddress === address;
770
- };
771
- _requestApproval = new WeakSet();
772
- requestApproval_fn = async function(suggestedAssetMeta) {
773
- return this.messagingSystem.call(
774
- "ApprovalController:addRequest",
775
- {
776
- id: suggestedAssetMeta.id,
777
- origin: ORIGIN_METAMASK,
778
- type: ApprovalType.WatchAsset,
779
- requestData: {
780
- id: suggestedAssetMeta.id,
781
- interactingAddress: suggestedAssetMeta.interactingAddress,
782
- asset: {
783
- address: suggestedAssetMeta.asset.address,
784
- decimals: suggestedAssetMeta.asset.decimals,
785
- symbol: suggestedAssetMeta.asset.symbol,
786
- image: suggestedAssetMeta.asset.image || null
787
- }
788
- }
789
- },
790
- true
791
- );
792
- };
793
- _getSelectedAccount = new WeakSet();
794
- getSelectedAccount_fn = function() {
795
- return this.messagingSystem.call("AccountsController:getSelectedAccount");
796
- };
797
- _getSelectedAddress = new WeakSet();
798
- getSelectedAddress_fn = function() {
799
- const account = this.messagingSystem.call(
800
- "AccountsController:getAccount",
801
- __privateGet(this, _selectedAccountId)
802
- );
803
- return account?.address || "";
804
- };
805
- var TokensController_default = TokensController;
806
-
807
- export {
808
- getDefaultTokensState,
809
- TokensController,
810
- TokensController_default
811
- };
812
- //# sourceMappingURL=chunk-XMQA5NLX.mjs.map