@metamask-previews/assets-controllers 38.0.0-preview-367cb1da → 38.0.0-preview-cf09c0a

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 (371) hide show
  1. package/dist/AccountTrackerController.cjs +245 -0
  2. package/dist/AccountTrackerController.cjs.map +1 -0
  3. package/dist/{types/AccountTrackerController.d.ts → AccountTrackerController.d.cts} +6 -6
  4. package/dist/AccountTrackerController.d.cts.map +1 -0
  5. package/dist/AccountTrackerController.d.mts +112 -0
  6. package/dist/AccountTrackerController.d.mts.map +1 -0
  7. package/dist/AccountTrackerController.mjs +244 -8
  8. package/dist/AccountTrackerController.mjs.map +1 -1
  9. package/dist/AssetsContractController.cjs +389 -0
  10. package/dist/AssetsContractController.cjs.map +1 -0
  11. package/dist/{types/AssetsContractController.d.ts → AssetsContractController.d.cts} +9 -9
  12. package/dist/AssetsContractController.d.cts.map +1 -0
  13. package/dist/AssetsContractController.d.mts +277 -0
  14. package/dist/AssetsContractController.d.mts.map +1 -0
  15. package/dist/AssetsContractController.mjs +387 -16
  16. package/dist/AssetsContractController.mjs.map +1 -1
  17. package/dist/CurrencyRateController.cjs +156 -0
  18. package/dist/CurrencyRateController.cjs.map +1 -0
  19. package/dist/{types/CurrencyRateController.d.ts → CurrencyRateController.d.cts} +5 -5
  20. package/dist/CurrencyRateController.d.cts.map +1 -0
  21. package/dist/CurrencyRateController.d.mts +80 -0
  22. package/dist/CurrencyRateController.d.mts.map +1 -0
  23. package/dist/CurrencyRateController.mjs +150 -10
  24. package/dist/CurrencyRateController.mjs.map +1 -1
  25. package/dist/NftController.cjs +1159 -0
  26. package/dist/NftController.cjs.map +1 -0
  27. package/dist/{types/NftController.d.ts → NftController.d.cts} +11 -11
  28. package/dist/NftController.d.cts.map +1 -0
  29. package/dist/NftController.d.mts +424 -0
  30. package/dist/NftController.d.mts.map +1 -0
  31. package/dist/NftController.mjs +1156 -12
  32. package/dist/NftController.mjs.map +1 -1
  33. package/dist/NftDetectionController.cjs +237 -0
  34. package/dist/NftDetectionController.cjs.map +1 -0
  35. package/dist/{types/NftDetectionController.d.ts → NftDetectionController.d.cts} +9 -9
  36. package/dist/NftDetectionController.d.cts.map +1 -0
  37. package/dist/NftDetectionController.d.mts +368 -0
  38. package/dist/NftDetectionController.d.mts.map +1 -0
  39. package/dist/NftDetectionController.mjs +231 -14
  40. package/dist/NftDetectionController.mjs.map +1 -1
  41. package/dist/RatesController/RatesController.cjs +189 -0
  42. package/dist/RatesController/RatesController.cjs.map +1 -0
  43. package/dist/{types/RatesController/RatesController.d.ts → RatesController/RatesController.d.cts} +3 -3
  44. package/dist/RatesController/RatesController.d.cts.map +1 -0
  45. package/dist/RatesController/RatesController.d.mts +44 -0
  46. package/dist/RatesController/RatesController.d.mts.map +1 -0
  47. package/dist/RatesController/RatesController.mjs +183 -12
  48. package/dist/RatesController/RatesController.mjs.map +1 -1
  49. package/dist/RatesController/index.cjs +7 -0
  50. package/dist/RatesController/index.cjs.map +1 -0
  51. package/dist/{types/RatesController/index.d.ts → RatesController/index.d.cts} +3 -3
  52. package/dist/RatesController/index.d.cts.map +1 -0
  53. package/dist/RatesController/index.d.mts +3 -0
  54. package/dist/RatesController/index.d.mts.map +1 -0
  55. package/dist/RatesController/index.mjs +1 -12
  56. package/dist/RatesController/index.mjs.map +1 -1
  57. package/dist/RatesController/types.cjs +3 -0
  58. package/dist/RatesController/types.cjs.map +1 -0
  59. package/dist/{types/RatesController/types.d.ts → RatesController/types.d.cts} +4 -4
  60. package/dist/RatesController/types.d.cts.map +1 -0
  61. package/dist/RatesController/types.d.mts +100 -0
  62. package/dist/RatesController/types.d.mts.map +1 -0
  63. package/dist/RatesController/types.mjs +1 -0
  64. package/dist/RatesController/types.mjs.map +1 -1
  65. package/dist/Standards/ERC20Standard.cjs +124 -0
  66. package/dist/Standards/ERC20Standard.cjs.map +1 -0
  67. package/dist/{types/Standards/ERC20Standard.d.ts → Standards/ERC20Standard.d.cts} +3 -3
  68. package/dist/Standards/ERC20Standard.d.cts.map +1 -0
  69. package/dist/Standards/ERC20Standard.d.mts +49 -0
  70. package/dist/Standards/ERC20Standard.d.mts.map +1 -0
  71. package/dist/Standards/ERC20Standard.mjs +121 -8
  72. package/dist/Standards/ERC20Standard.mjs.map +1 -1
  73. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.cjs +189 -0
  74. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.cjs.map +1 -0
  75. package/dist/{types/Standards/NftStandards/ERC1155/ERC1155Standard.d.ts → Standards/NftStandards/ERC1155/ERC1155Standard.d.cts} +3 -3
  76. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.d.cts.map +1 -0
  77. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.d.mts +95 -0
  78. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.d.mts.map +1 -0
  79. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.mjs +184 -8
  80. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.mjs.map +1 -1
  81. package/dist/Standards/NftStandards/ERC721/ERC721Standard.cjs +167 -0
  82. package/dist/Standards/NftStandards/ERC721/ERC721Standard.cjs.map +1 -0
  83. package/dist/{types/Standards/NftStandards/ERC721/ERC721Standard.d.ts → Standards/NftStandards/ERC721/ERC721Standard.d.cts} +2 -2
  84. package/dist/Standards/NftStandards/ERC721/ERC721Standard.d.cts.map +1 -0
  85. package/dist/Standards/NftStandards/ERC721/ERC721Standard.d.mts +89 -0
  86. package/dist/Standards/NftStandards/ERC721/ERC721Standard.d.mts.map +1 -0
  87. package/dist/Standards/NftStandards/ERC721/ERC721Standard.mjs +162 -8
  88. package/dist/Standards/NftStandards/ERC721/ERC721Standard.mjs.map +1 -1
  89. package/dist/TokenBalancesController.cjs +136 -0
  90. package/dist/TokenBalancesController.cjs.map +1 -0
  91. package/dist/{types/TokenBalancesController.d.ts → TokenBalancesController.d.cts} +7 -7
  92. package/dist/TokenBalancesController.d.cts.map +1 -0
  93. package/dist/TokenBalancesController.d.mts +82 -0
  94. package/dist/TokenBalancesController.d.mts.map +1 -0
  95. package/dist/TokenBalancesController.mjs +129 -10
  96. package/dist/TokenBalancesController.mjs.map +1 -1
  97. package/dist/TokenDetectionController.cjs +369 -0
  98. package/dist/TokenDetectionController.cjs.map +1 -0
  99. package/dist/{types/TokenDetectionController.d.ts → TokenDetectionController.d.cts} +10 -10
  100. package/dist/TokenDetectionController.d.cts.map +1 -0
  101. package/dist/TokenDetectionController.d.mts +109 -0
  102. package/dist/TokenDetectionController.d.mts.map +1 -0
  103. package/dist/TokenDetectionController.mjs +366 -15
  104. package/dist/TokenDetectionController.mjs.map +1 -1
  105. package/dist/TokenListController.cjs +274 -0
  106. package/dist/TokenListController.cjs.map +1 -0
  107. package/dist/{types/TokenListController.d.ts → TokenListController.d.cts} +5 -5
  108. package/dist/TokenListController.d.cts.map +1 -0
  109. package/dist/TokenListController.d.mts +117 -0
  110. package/dist/TokenListController.d.mts.map +1 -0
  111. package/dist/TokenListController.mjs +267 -12
  112. package/dist/TokenListController.mjs.map +1 -1
  113. package/dist/TokenRatesController.cjs +452 -0
  114. package/dist/TokenRatesController.cjs.map +1 -0
  115. package/dist/{types/TokenRatesController.d.ts → TokenRatesController.d.cts} +8 -8
  116. package/dist/TokenRatesController.d.cts.map +1 -0
  117. package/dist/TokenRatesController.d.mts +170 -0
  118. package/dist/TokenRatesController.d.mts.map +1 -0
  119. package/dist/TokenRatesController.mjs +446 -16
  120. package/dist/TokenRatesController.mjs.map +1 -1
  121. package/dist/TokensController.cjs +678 -0
  122. package/dist/TokensController.cjs.map +1 -0
  123. package/dist/{types/TokensController.d.ts → TokensController.d.cts} +9 -9
  124. package/dist/TokensController.d.cts.map +1 -0
  125. package/dist/TokensController.d.mts +165 -0
  126. package/dist/TokensController.d.mts.map +1 -0
  127. package/dist/TokensController.mjs +675 -14
  128. package/dist/TokensController.mjs.map +1 -1
  129. package/dist/assetsUtil.cjs +358 -0
  130. package/dist/assetsUtil.cjs.map +1 -0
  131. package/dist/{types/assetsUtil.d.ts → assetsUtil.d.cts} +7 -7
  132. package/dist/assetsUtil.d.cts.map +1 -0
  133. package/dist/assetsUtil.d.mts +177 -0
  134. package/dist/assetsUtil.d.mts.map +1 -0
  135. package/dist/assetsUtil.mjs +343 -36
  136. package/dist/assetsUtil.mjs.map +1 -1
  137. package/dist/constants.cjs +10 -0
  138. package/dist/constants.cjs.map +1 -0
  139. package/dist/{types/constants.d.ts → constants.d.cts} +1 -1
  140. package/dist/constants.d.cts.map +1 -0
  141. package/dist/constants.d.mts +6 -0
  142. package/dist/constants.d.mts.map +1 -0
  143. package/dist/constants.mjs +6 -7
  144. package/dist/constants.mjs.map +1 -1
  145. package/dist/crypto-compare-service/crypto-compare.cjs +119 -0
  146. package/dist/crypto-compare-service/crypto-compare.cjs.map +1 -0
  147. package/dist/{types/crypto-compare-service/crypto-compare.d.ts → crypto-compare-service/crypto-compare.d.cts} +1 -1
  148. package/dist/crypto-compare-service/crypto-compare.d.cts.map +1 -0
  149. package/dist/crypto-compare-service/crypto-compare.d.mts +22 -0
  150. package/dist/crypto-compare-service/crypto-compare.d.mts.map +1 -0
  151. package/dist/crypto-compare-service/crypto-compare.mjs +113 -9
  152. package/dist/crypto-compare-service/crypto-compare.mjs.map +1 -1
  153. package/dist/crypto-compare-service/index.cjs +7 -0
  154. package/dist/crypto-compare-service/index.cjs.map +1 -0
  155. package/dist/crypto-compare-service/index.d.cts +2 -0
  156. package/dist/crypto-compare-service/index.d.cts.map +1 -0
  157. package/dist/crypto-compare-service/index.d.mts +2 -0
  158. package/dist/crypto-compare-service/index.d.mts.map +1 -0
  159. package/dist/crypto-compare-service/index.mjs +1 -10
  160. package/dist/crypto-compare-service/index.mjs.map +1 -1
  161. package/dist/index.cjs +51 -0
  162. package/dist/index.cjs.map +1 -0
  163. package/dist/{types/index.d.ts → index.d.cts} +24 -24
  164. package/dist/index.d.cts.map +1 -0
  165. package/dist/index.d.mts +24 -0
  166. package/dist/index.d.mts.map +1 -0
  167. package/dist/index.mjs +13 -80
  168. package/dist/index.mjs.map +1 -1
  169. package/dist/token-prices-service/abstract-token-prices-service.cjs +3 -0
  170. package/dist/token-prices-service/abstract-token-prices-service.cjs.map +1 -0
  171. package/dist/{types/token-prices-service/abstract-token-prices-service.d.ts → token-prices-service/abstract-token-prices-service.d.cts} +2 -2
  172. package/dist/token-prices-service/abstract-token-prices-service.d.cts.map +1 -0
  173. package/dist/token-prices-service/abstract-token-prices-service.d.mts +79 -0
  174. package/dist/token-prices-service/abstract-token-prices-service.d.mts.map +1 -0
  175. package/dist/token-prices-service/abstract-token-prices-service.mjs +1 -0
  176. package/dist/token-prices-service/abstract-token-prices-service.mjs.map +1 -1
  177. package/dist/token-prices-service/codefi-v2.cjs +352 -0
  178. package/dist/token-prices-service/codefi-v2.cjs.map +1 -0
  179. package/dist/{types/token-prices-service/codefi-v2.d.ts → token-prices-service/codefi-v2.d.cts} +3 -3
  180. package/dist/token-prices-service/codefi-v2.d.cts.map +1 -0
  181. package/dist/token-prices-service/codefi-v2.d.mts +97 -0
  182. package/dist/token-prices-service/codefi-v2.d.mts.map +1 -0
  183. package/dist/token-prices-service/codefi-v2.mjs +347 -12
  184. package/dist/token-prices-service/codefi-v2.mjs.map +1 -1
  185. package/dist/token-prices-service/index.cjs +7 -0
  186. package/dist/token-prices-service/index.cjs.map +1 -0
  187. package/dist/token-prices-service/index.d.cts +3 -0
  188. package/dist/token-prices-service/index.d.cts.map +1 -0
  189. package/dist/token-prices-service/index.d.mts +3 -0
  190. package/dist/token-prices-service/index.d.mts.map +1 -0
  191. package/dist/token-prices-service/index.mjs +1 -10
  192. package/dist/token-prices-service/index.mjs.map +1 -1
  193. package/dist/token-service.cjs +130 -0
  194. package/dist/token-service.cjs.map +1 -0
  195. package/dist/{types/token-service.d.ts → token-service.d.cts} +2 -2
  196. package/dist/token-service.d.cts.map +1 -0
  197. package/dist/token-service.d.mts +31 -0
  198. package/dist/token-service.d.mts.map +1 -0
  199. package/dist/token-service.mjs +124 -14
  200. package/dist/token-service.mjs.map +1 -1
  201. package/package.json +12 -7
  202. package/dist/AccountTrackerController.js +0 -10
  203. package/dist/AccountTrackerController.js.map +0 -1
  204. package/dist/AssetsContractController.js +0 -18
  205. package/dist/AssetsContractController.js.map +0 -1
  206. package/dist/CurrencyRateController.js +0 -12
  207. package/dist/CurrencyRateController.js.map +0 -1
  208. package/dist/NftController.js +0 -14
  209. package/dist/NftController.js.map +0 -1
  210. package/dist/NftDetectionController.js +0 -16
  211. package/dist/NftDetectionController.js.map +0 -1
  212. package/dist/RatesController/RatesController.js +0 -14
  213. package/dist/RatesController/RatesController.js.map +0 -1
  214. package/dist/RatesController/index.js +0 -13
  215. package/dist/RatesController/index.js.map +0 -1
  216. package/dist/RatesController/types.js +0 -1
  217. package/dist/RatesController/types.js.map +0 -1
  218. package/dist/Standards/ERC20Standard.js +0 -9
  219. package/dist/Standards/ERC20Standard.js.map +0 -1
  220. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.js +0 -9
  221. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.js.map +0 -1
  222. package/dist/Standards/NftStandards/ERC721/ERC721Standard.js +0 -9
  223. package/dist/Standards/NftStandards/ERC721/ERC721Standard.js.map +0 -1
  224. package/dist/TokenBalancesController.js +0 -12
  225. package/dist/TokenBalancesController.js.map +0 -1
  226. package/dist/TokenDetectionController.js +0 -17
  227. package/dist/TokenDetectionController.js.map +0 -1
  228. package/dist/TokenListController.js +0 -14
  229. package/dist/TokenListController.js.map +0 -1
  230. package/dist/TokenRatesController.js +0 -18
  231. package/dist/TokenRatesController.js.map +0 -1
  232. package/dist/TokensController.js +0 -16
  233. package/dist/TokensController.js.map +0 -1
  234. package/dist/assetsUtil.js +0 -38
  235. package/dist/assetsUtil.js.map +0 -1
  236. package/dist/chunk-27KOXCQK.mjs +0 -1
  237. package/dist/chunk-27KOXCQK.mjs.map +0 -1
  238. package/dist/chunk-2TZK6YZA.js +0 -1405
  239. package/dist/chunk-2TZK6YZA.js.map +0 -1
  240. package/dist/chunk-3LPQTUGG.js +0 -434
  241. package/dist/chunk-3LPQTUGG.js.map +0 -1
  242. package/dist/chunk-3QDXAE2D.mjs +0 -178
  243. package/dist/chunk-3QDXAE2D.mjs.map +0 -1
  244. package/dist/chunk-46KUC5FH.mjs +0 -434
  245. package/dist/chunk-46KUC5FH.mjs.map +0 -1
  246. package/dist/chunk-5QLC2MHV.js +0 -215
  247. package/dist/chunk-5QLC2MHV.js.map +0 -1
  248. package/dist/chunk-7K6PSEAA.js +0 -1
  249. package/dist/chunk-7K6PSEAA.js.map +0 -1
  250. package/dist/chunk-AX522TDL.mjs +0 -85
  251. package/dist/chunk-AX522TDL.mjs.map +0 -1
  252. package/dist/chunk-AZSIKIMK.mjs +0 -429
  253. package/dist/chunk-AZSIKIMK.mjs.map +0 -1
  254. package/dist/chunk-BBCZM5P4.js +0 -300
  255. package/dist/chunk-BBCZM5P4.js.map +0 -1
  256. package/dist/chunk-BZEAPSD5.mjs +0 -215
  257. package/dist/chunk-BZEAPSD5.mjs.map +0 -1
  258. package/dist/chunk-C7LNCQXM.mjs +0 -300
  259. package/dist/chunk-C7LNCQXM.mjs.map +0 -1
  260. package/dist/chunk-CP3HC7AQ.mjs +0 -12
  261. package/dist/chunk-CP3HC7AQ.mjs.map +0 -1
  262. package/dist/chunk-FJ6O67JX.js +0 -161
  263. package/dist/chunk-FJ6O67JX.js.map +0 -1
  264. package/dist/chunk-FWKV5FGP.mjs +0 -71
  265. package/dist/chunk-FWKV5FGP.mjs.map +0 -1
  266. package/dist/chunk-GDFLKKDY.js +0 -71
  267. package/dist/chunk-GDFLKKDY.js.map +0 -1
  268. package/dist/chunk-GW6RE66P.mjs +0 -210
  269. package/dist/chunk-GW6RE66P.mjs.map +0 -1
  270. package/dist/chunk-HVOIBGYN.js +0 -282
  271. package/dist/chunk-HVOIBGYN.js.map +0 -1
  272. package/dist/chunk-ISK2VSBB.js +0 -178
  273. package/dist/chunk-ISK2VSBB.js.map +0 -1
  274. package/dist/chunk-JCR4H6YL.js +0 -115
  275. package/dist/chunk-JCR4H6YL.js.map +0 -1
  276. package/dist/chunk-JJX7TMH5.mjs +0 -135
  277. package/dist/chunk-JJX7TMH5.mjs.map +0 -1
  278. package/dist/chunk-JYHAAA6W.mjs +0 -1
  279. package/dist/chunk-JYHAAA6W.mjs.map +0 -1
  280. package/dist/chunk-K7A3EOIM.js +0 -85
  281. package/dist/chunk-K7A3EOIM.js.map +0 -1
  282. package/dist/chunk-K7WZALCY.js +0 -539
  283. package/dist/chunk-K7WZALCY.js.map +0 -1
  284. package/dist/chunk-KPBNX6GP.mjs +0 -215
  285. package/dist/chunk-KPBNX6GP.mjs.map +0 -1
  286. package/dist/chunk-LKVWPNXY.js +0 -429
  287. package/dist/chunk-LKVWPNXY.js.map +0 -1
  288. package/dist/chunk-MZI3SDQN.js +0 -215
  289. package/dist/chunk-MZI3SDQN.js.map +0 -1
  290. package/dist/chunk-NDUMUEE6.js +0 -812
  291. package/dist/chunk-NDUMUEE6.js.map +0 -1
  292. package/dist/chunk-OBUR4TXH.js +0 -1
  293. package/dist/chunk-OBUR4TXH.js.map +0 -1
  294. package/dist/chunk-RGHTNZQ6.js +0 -12
  295. package/dist/chunk-RGHTNZQ6.js.map +0 -1
  296. package/dist/chunk-S5CFNNOM.mjs +0 -115
  297. package/dist/chunk-S5CFNNOM.mjs.map +0 -1
  298. package/dist/chunk-SK2B36Q4.mjs +0 -1405
  299. package/dist/chunk-SK2B36Q4.mjs.map +0 -1
  300. package/dist/chunk-TFLYM4PY.mjs +0 -291
  301. package/dist/chunk-TFLYM4PY.mjs.map +0 -1
  302. package/dist/chunk-TIFLP53R.js +0 -210
  303. package/dist/chunk-TIFLP53R.js.map +0 -1
  304. package/dist/chunk-TTH3ES66.mjs +0 -1
  305. package/dist/chunk-TTH3ES66.mjs.map +0 -1
  306. package/dist/chunk-UFK4HA3L.mjs +0 -539
  307. package/dist/chunk-UFK4HA3L.mjs.map +0 -1
  308. package/dist/chunk-V6DNVROD.js +0 -348
  309. package/dist/chunk-V6DNVROD.js.map +0 -1
  310. package/dist/chunk-XC3SOOGC.js +0 -1
  311. package/dist/chunk-XC3SOOGC.js.map +0 -1
  312. package/dist/chunk-XMQA5NLX.mjs +0 -812
  313. package/dist/chunk-XMQA5NLX.mjs.map +0 -1
  314. package/dist/chunk-XQO3EG4J.mjs +0 -348
  315. package/dist/chunk-XQO3EG4J.mjs.map +0 -1
  316. package/dist/chunk-XUI43LEZ.mjs +0 -30
  317. package/dist/chunk-XUI43LEZ.mjs.map +0 -1
  318. package/dist/chunk-YGGUAMHV.js +0 -135
  319. package/dist/chunk-YGGUAMHV.js.map +0 -1
  320. package/dist/chunk-YXL5QC2Q.mjs +0 -161
  321. package/dist/chunk-YXL5QC2Q.mjs.map +0 -1
  322. package/dist/chunk-Z4BLTVTB.js +0 -30
  323. package/dist/chunk-Z4BLTVTB.js.map +0 -1
  324. package/dist/chunk-Z7RMCHD4.mjs +0 -282
  325. package/dist/chunk-Z7RMCHD4.mjs.map +0 -1
  326. package/dist/chunk-ZAR4BIOC.js +0 -291
  327. package/dist/chunk-ZAR4BIOC.js.map +0 -1
  328. package/dist/constants.js +0 -8
  329. package/dist/constants.js.map +0 -1
  330. package/dist/crypto-compare-service/crypto-compare.js +0 -10
  331. package/dist/crypto-compare-service/crypto-compare.js.map +0 -1
  332. package/dist/crypto-compare-service/index.js +0 -11
  333. package/dist/crypto-compare-service/index.js.map +0 -1
  334. package/dist/index.js +0 -81
  335. package/dist/index.js.map +0 -1
  336. package/dist/token-prices-service/abstract-token-prices-service.js +0 -1
  337. package/dist/token-prices-service/abstract-token-prices-service.js.map +0 -1
  338. package/dist/token-prices-service/codefi-v2.js +0 -14
  339. package/dist/token-prices-service/codefi-v2.js.map +0 -1
  340. package/dist/token-prices-service/index.js +0 -11
  341. package/dist/token-prices-service/index.js.map +0 -1
  342. package/dist/token-service.js +0 -15
  343. package/dist/token-service.js.map +0 -1
  344. package/dist/tsconfig.build.tsbuildinfo +0 -1
  345. package/dist/types/AccountTrackerController.d.ts.map +0 -1
  346. package/dist/types/AssetsContractController.d.ts.map +0 -1
  347. package/dist/types/CurrencyRateController.d.ts.map +0 -1
  348. package/dist/types/NftController.d.ts.map +0 -1
  349. package/dist/types/NftDetectionController.d.ts.map +0 -1
  350. package/dist/types/RatesController/RatesController.d.ts.map +0 -1
  351. package/dist/types/RatesController/index.d.ts.map +0 -1
  352. package/dist/types/RatesController/types.d.ts.map +0 -1
  353. package/dist/types/Standards/ERC20Standard.d.ts.map +0 -1
  354. package/dist/types/Standards/NftStandards/ERC1155/ERC1155Standard.d.ts.map +0 -1
  355. package/dist/types/Standards/NftStandards/ERC721/ERC721Standard.d.ts.map +0 -1
  356. package/dist/types/TokenBalancesController.d.ts.map +0 -1
  357. package/dist/types/TokenDetectionController.d.ts.map +0 -1
  358. package/dist/types/TokenListController.d.ts.map +0 -1
  359. package/dist/types/TokenRatesController.d.ts.map +0 -1
  360. package/dist/types/TokensController.d.ts.map +0 -1
  361. package/dist/types/assetsUtil.d.ts.map +0 -1
  362. package/dist/types/constants.d.ts.map +0 -1
  363. package/dist/types/crypto-compare-service/crypto-compare.d.ts.map +0 -1
  364. package/dist/types/crypto-compare-service/index.d.ts +0 -2
  365. package/dist/types/crypto-compare-service/index.d.ts.map +0 -1
  366. package/dist/types/index.d.ts.map +0 -1
  367. package/dist/types/token-prices-service/abstract-token-prices-service.d.ts.map +0 -1
  368. package/dist/types/token-prices-service/codefi-v2.d.ts.map +0 -1
  369. package/dist/types/token-prices-service/index.d.ts +0 -3
  370. package/dist/types/token-prices-service/index.d.ts.map +0 -1
  371. package/dist/types/token-service.d.ts.map +0 -1
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
+ };
7
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
+ if (kind === "m") throw new TypeError("Private method is not writable");
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ var _AccountTrackerController_instances, _AccountTrackerController_refreshMutex, _AccountTrackerController_handle, _AccountTrackerController_getCurrentChainId, _AccountTrackerController_getCorrectNetworkClient, _AccountTrackerController_getBalanceFromChain;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.AccountTrackerController = void 0;
19
+ const controller_utils_1 = require("@metamask/controller-utils");
20
+ const eth_query_1 = __importDefault(require("@metamask/eth-query"));
21
+ const polling_controller_1 = require("@metamask/polling-controller");
22
+ const utils_1 = require("@metamask/utils");
23
+ const async_mutex_1 = require("async-mutex");
24
+ const lodash_1 = require("lodash");
25
+ /**
26
+ * The name of the {@link AccountTrackerController}.
27
+ */
28
+ const controllerName = 'AccountTrackerController';
29
+ const accountTrackerMetadata = {
30
+ accounts: {
31
+ persist: true,
32
+ anonymous: false,
33
+ },
34
+ accountsByChainId: {
35
+ persist: true,
36
+ anonymous: false,
37
+ },
38
+ };
39
+ /**
40
+ * Controller that tracks the network balances for all user accounts.
41
+ */
42
+ class AccountTrackerController extends polling_controller_1.StaticIntervalPollingController {
43
+ /**
44
+ * Creates an AccountTracker instance.
45
+ *
46
+ * @param options - The controller options.
47
+ * @param options.interval - Polling interval used to fetch new account balances.
48
+ * @param options.state - Initial state to set on this controller.
49
+ * @param options.messenger - The controller messaging system.
50
+ */
51
+ constructor({ interval = 10000, state, messenger, }) {
52
+ const { selectedNetworkClientId } = messenger.call('NetworkController:getState');
53
+ const { configuration: { chainId }, } = messenger.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
54
+ super({
55
+ name: controllerName,
56
+ messenger,
57
+ state: {
58
+ accounts: {},
59
+ accountsByChainId: {
60
+ [chainId]: {},
61
+ },
62
+ ...state,
63
+ },
64
+ metadata: accountTrackerMetadata,
65
+ });
66
+ _AccountTrackerController_instances.add(this);
67
+ _AccountTrackerController_refreshMutex.set(this, new async_mutex_1.Mutex());
68
+ _AccountTrackerController_handle.set(this, void 0);
69
+ this.setIntervalLength(interval);
70
+ // TODO: Either fix this lint violation or explain why it's necessary to ignore.
71
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
72
+ this.poll();
73
+ this.messagingSystem.subscribe('AccountsController:selectedEvmAccountChange',
74
+ // TODO: Either fix this lint violation or explain why it's necessary to ignore.
75
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
76
+ () => this.refresh());
77
+ }
78
+ syncAccounts(newChainId) {
79
+ const accounts = { ...this.state.accounts };
80
+ const accountsByChainId = (0, lodash_1.cloneDeep)(this.state.accountsByChainId);
81
+ const existing = Object.keys(accounts);
82
+ if (!accountsByChainId[newChainId]) {
83
+ accountsByChainId[newChainId] = {};
84
+ existing.forEach((address) => {
85
+ accountsByChainId[newChainId][address] = { balance: '0x0' };
86
+ });
87
+ }
88
+ // Note: The address from the preferences controller are checksummed
89
+ // The addresses from the accounts controller are lowercased
90
+ const addresses = Object.values(this.messagingSystem
91
+ .call('AccountsController:listAccounts')
92
+ .map((internalAccount) => (0, controller_utils_1.toChecksumHexAddress)(internalAccount.address)));
93
+ const newAddresses = addresses.filter((address) => !existing.includes(address));
94
+ const oldAddresses = existing.filter((address) => !addresses.includes(address));
95
+ newAddresses.forEach((address) => {
96
+ accounts[address] = { balance: '0x0' };
97
+ });
98
+ Object.keys(accountsByChainId).forEach((chainId) => {
99
+ newAddresses.forEach((address) => {
100
+ accountsByChainId[chainId][address] = {
101
+ balance: '0x0',
102
+ };
103
+ });
104
+ });
105
+ oldAddresses.forEach((address) => {
106
+ delete accounts[address];
107
+ });
108
+ Object.keys(accountsByChainId).forEach((chainId) => {
109
+ oldAddresses.forEach((address) => {
110
+ delete accountsByChainId[chainId][address];
111
+ });
112
+ });
113
+ this.update((state) => {
114
+ state.accounts = accounts;
115
+ state.accountsByChainId = accountsByChainId;
116
+ });
117
+ }
118
+ /**
119
+ * Starts a new polling interval.
120
+ *
121
+ * @param interval - Polling interval trigger a 'refresh'.
122
+ */
123
+ async poll(interval) {
124
+ if (interval) {
125
+ this.setIntervalLength(interval);
126
+ }
127
+ if (__classPrivateFieldGet(this, _AccountTrackerController_handle, "f")) {
128
+ clearTimeout(__classPrivateFieldGet(this, _AccountTrackerController_handle, "f"));
129
+ }
130
+ await this.refresh();
131
+ __classPrivateFieldSet(this, _AccountTrackerController_handle, setTimeout(() => {
132
+ // TODO: Either fix this lint violation or explain why it's necessary to ignore.
133
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
134
+ this.poll(this.getIntervalLength());
135
+ }, this.getIntervalLength()), "f");
136
+ }
137
+ /**
138
+ * Refreshes the balances of the accounts using the networkClientId
139
+ *
140
+ * @param networkClientId - The network client ID used to get balances.
141
+ */
142
+ async _executePoll(networkClientId) {
143
+ // TODO: Either fix this lint violation or explain why it's necessary to ignore.
144
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
145
+ this.refresh(networkClientId);
146
+ }
147
+ /**
148
+ * Refreshes the balances of the accounts depending on the multi-account setting.
149
+ * If multi-account is disabled, only updates the selected account balance.
150
+ * If multi-account is enabled, updates balances for all accounts.
151
+ *
152
+ * @param networkClientId - Optional networkClientId to fetch a network client with
153
+ */
154
+ async refresh(networkClientId) {
155
+ const selectedAccount = this.messagingSystem.call('AccountsController:getSelectedAccount');
156
+ const releaseLock = await __classPrivateFieldGet(this, _AccountTrackerController_refreshMutex, "f").acquire();
157
+ try {
158
+ const { chainId, ethQuery } = __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getCorrectNetworkClient).call(this, networkClientId);
159
+ this.syncAccounts(chainId);
160
+ const { accounts, accountsByChainId } = this.state;
161
+ const { isMultiAccountBalancesEnabled } = this.messagingSystem.call('PreferencesController:getState');
162
+ const accountsToUpdate = isMultiAccountBalancesEnabled
163
+ ? Object.keys(accounts)
164
+ : [(0, controller_utils_1.toChecksumHexAddress)(selectedAccount.address)];
165
+ const accountsForChain = { ...accountsByChainId[chainId] };
166
+ for (const address of accountsToUpdate) {
167
+ const balance = await __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getBalanceFromChain).call(this, address, ethQuery);
168
+ if (balance) {
169
+ accountsForChain[address] = {
170
+ balance,
171
+ };
172
+ }
173
+ }
174
+ this.update((state) => {
175
+ if (chainId === __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getCurrentChainId).call(this)) {
176
+ state.accounts = accountsForChain;
177
+ }
178
+ state.accountsByChainId[chainId] = accountsForChain;
179
+ });
180
+ }
181
+ finally {
182
+ releaseLock();
183
+ }
184
+ }
185
+ /**
186
+ * Sync accounts balances with some additional addresses.
187
+ *
188
+ * @param addresses - the additional addresses, may be hardware wallet addresses.
189
+ * @param networkClientId - Optional networkClientId to fetch a network client with.
190
+ * @returns accounts - addresses with synced balance
191
+ */
192
+ async syncBalanceWithAddresses(addresses, networkClientId) {
193
+ const { ethQuery } = __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getCorrectNetworkClient).call(this, networkClientId);
194
+ return await Promise.all(addresses.map((address) => {
195
+ return (0, controller_utils_1.safelyExecuteWithTimeout)(async () => {
196
+ (0, utils_1.assert)(ethQuery, 'Provider not set.');
197
+ const balance = await (0, controller_utils_1.query)(ethQuery, 'getBalance', [address]);
198
+ return [address, balance];
199
+ });
200
+ })).then((value) => {
201
+ return value.reduce((obj, item) => {
202
+ if (!item) {
203
+ return obj;
204
+ }
205
+ const [address, balance] = item;
206
+ return {
207
+ ...obj,
208
+ [address]: {
209
+ balance,
210
+ },
211
+ };
212
+ }, {});
213
+ });
214
+ }
215
+ }
216
+ exports.AccountTrackerController = AccountTrackerController;
217
+ _AccountTrackerController_refreshMutex = new WeakMap(), _AccountTrackerController_handle = new WeakMap(), _AccountTrackerController_instances = new WeakSet(), _AccountTrackerController_getCurrentChainId = function _AccountTrackerController_getCurrentChainId() {
218
+ const { selectedNetworkClientId } = this.messagingSystem.call('NetworkController:getState');
219
+ const { configuration: { chainId }, } = this.messagingSystem.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
220
+ return chainId;
221
+ }, _AccountTrackerController_getCorrectNetworkClient = function _AccountTrackerController_getCorrectNetworkClient(networkClientId) {
222
+ const selectedNetworkClientId = networkClientId ??
223
+ this.messagingSystem.call('NetworkController:getState')
224
+ .selectedNetworkClientId;
225
+ const { configuration: { chainId }, provider, } = this.messagingSystem.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
226
+ return {
227
+ chainId,
228
+ ethQuery: new eth_query_1.default(provider),
229
+ };
230
+ }, _AccountTrackerController_getBalanceFromChain =
231
+ /**
232
+ * Fetches the balance of a given address from the blockchain.
233
+ *
234
+ * @param address - The account address to fetch the balance for.
235
+ * @param ethQuery - The EthQuery instance to query getBalnce with.
236
+ * @returns A promise that resolves to the balance in a hex string format.
237
+ */
238
+ async function _AccountTrackerController_getBalanceFromChain(address, ethQuery) {
239
+ return await (0, controller_utils_1.safelyExecuteWithTimeout)(async () => {
240
+ (0, utils_1.assert)(ethQuery, 'Provider not set.');
241
+ return await (0, controller_utils_1.query)(ethQuery, 'getBalance', [address]);
242
+ });
243
+ };
244
+ exports.default = AccountTrackerController;
245
+ //# sourceMappingURL=AccountTrackerController.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountTrackerController.cjs","sourceRoot":"","sources":["../src/AccountTrackerController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AccountsControllerSelectedEvmAccountChangeEvent,\n AccountsControllerGetSelectedAccountAction,\n AccountsControllerListAccountsAction,\n AccountsControllerSelectedAccountChangeEvent,\n} from '@metamask/accounts-controller';\nimport type {\n ControllerStateChangeEvent,\n ControllerGetStateAction,\n RestrictedControllerMessenger,\n} from '@metamask/base-controller';\nimport {\n query,\n safelyExecuteWithTimeout,\n toChecksumHexAddress,\n} from '@metamask/controller-utils';\nimport EthQuery from '@metamask/eth-query';\nimport type {\n NetworkClientId,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetStateAction,\n} from '@metamask/network-controller';\nimport { StaticIntervalPollingController } from '@metamask/polling-controller';\nimport type { PreferencesControllerGetStateAction } from '@metamask/preferences-controller';\nimport { type Hex, assert } from '@metamask/utils';\nimport { Mutex } from 'async-mutex';\nimport { cloneDeep } from 'lodash';\n\n/**\n * The name of the {@link AccountTrackerController}.\n */\nconst controllerName = 'AccountTrackerController';\n\n/**\n * @type AccountInformation\n *\n * Account information object\n * @property balance - Hex string of an account balancec in wei\n */\nexport type AccountInformation = {\n balance: string;\n};\n\n/**\n * @type AccountTrackerControllerState\n *\n * Account tracker controller state\n * @property accounts - Map of addresses to account information\n */\nexport type AccountTrackerControllerState = {\n accounts: { [address: string]: AccountInformation };\n accountsByChainId: Record<string, { [address: string]: AccountInformation }>;\n};\n\nconst accountTrackerMetadata = {\n accounts: {\n persist: true,\n anonymous: false,\n },\n accountsByChainId: {\n persist: true,\n anonymous: false,\n },\n};\n\n/**\n * The action that can be performed to get the state of the {@link AccountTrackerController}.\n */\nexport type AccountTrackerControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n AccountTrackerControllerState\n>;\n\n/**\n * The actions that can be performed using the {@link AccountTrackerController}.\n */\nexport type AccountTrackerControllerActions =\n AccountTrackerControllerGetStateAction;\n\n/**\n * The messenger of the {@link AccountTrackerController} for communication.\n */\nexport type AllowedActions =\n | AccountsControllerListAccountsAction\n | PreferencesControllerGetStateAction\n | AccountsControllerGetSelectedAccountAction\n | NetworkControllerGetStateAction\n | NetworkControllerGetNetworkClientByIdAction;\n\n/**\n * The event that {@link AccountTrackerController} can emit.\n */\nexport type AccountTrackerControllerStateChangeEvent =\n ControllerStateChangeEvent<\n typeof controllerName,\n AccountTrackerControllerState\n >;\n\n/**\n * The events that {@link AccountTrackerController} can emit.\n */\nexport type AccountTrackerControllerEvents =\n AccountTrackerControllerStateChangeEvent;\n\n/**\n * The external events available to the {@link AccountTrackerController}.\n */\nexport type AllowedEvents =\n | AccountsControllerSelectedEvmAccountChangeEvent\n | AccountsControllerSelectedAccountChangeEvent;\n\n/**\n * The messenger of the {@link AccountTrackerController}.\n */\nexport type AccountTrackerControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n AccountTrackerControllerActions | AllowedActions,\n AccountTrackerControllerEvents | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n>;\n\n/**\n * Controller that tracks the network balances for all user accounts.\n */\nexport class AccountTrackerController extends StaticIntervalPollingController<\n typeof controllerName,\n AccountTrackerControllerState,\n AccountTrackerControllerMessenger\n> {\n readonly #refreshMutex = new Mutex();\n\n #handle?: ReturnType<typeof setTimeout>;\n\n /**\n * Creates an AccountTracker instance.\n *\n * @param options - The controller options.\n * @param options.interval - Polling interval used to fetch new account balances.\n * @param options.state - Initial state to set on this controller.\n * @param options.messenger - The controller messaging system.\n */\n constructor({\n interval = 10000,\n state,\n messenger,\n }: {\n interval?: number;\n state?: Partial<AccountTrackerControllerState>;\n messenger: AccountTrackerControllerMessenger;\n }) {\n const { selectedNetworkClientId } = messenger.call(\n 'NetworkController:getState',\n );\n const {\n configuration: { chainId },\n } = messenger.call(\n 'NetworkController:getNetworkClientById',\n selectedNetworkClientId,\n );\n super({\n name: controllerName,\n messenger,\n state: {\n accounts: {},\n accountsByChainId: {\n [chainId]: {},\n },\n ...state,\n },\n metadata: accountTrackerMetadata,\n });\n this.setIntervalLength(interval);\n\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.poll();\n\n this.messagingSystem.subscribe(\n 'AccountsController:selectedEvmAccountChange',\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.refresh(),\n );\n }\n\n /**\n * Gets the current chain ID.\n * @returns The current chain ID.\n */\n #getCurrentChainId(): Hex {\n const { selectedNetworkClientId } = this.messagingSystem.call(\n 'NetworkController:getState',\n );\n const {\n configuration: { chainId },\n } = this.messagingSystem.call(\n 'NetworkController:getNetworkClientById',\n selectedNetworkClientId,\n );\n return chainId;\n }\n\n private syncAccounts(newChainId: string) {\n const accounts = { ...this.state.accounts };\n const accountsByChainId = cloneDeep(this.state.accountsByChainId);\n\n const existing = Object.keys(accounts);\n if (!accountsByChainId[newChainId]) {\n accountsByChainId[newChainId] = {};\n existing.forEach((address) => {\n accountsByChainId[newChainId][address] = { balance: '0x0' };\n });\n }\n\n // Note: The address from the preferences controller are checksummed\n // The addresses from the accounts controller are lowercased\n const addresses = Object.values(\n this.messagingSystem\n .call('AccountsController:listAccounts')\n .map((internalAccount) =>\n toChecksumHexAddress(internalAccount.address),\n ),\n );\n const newAddresses = addresses.filter(\n (address) => !existing.includes(address),\n );\n const oldAddresses = existing.filter(\n (address) => !addresses.includes(address),\n );\n newAddresses.forEach((address) => {\n accounts[address] = { balance: '0x0' };\n });\n Object.keys(accountsByChainId).forEach((chainId) => {\n newAddresses.forEach((address) => {\n accountsByChainId[chainId][address] = {\n balance: '0x0',\n };\n });\n });\n\n oldAddresses.forEach((address) => {\n delete accounts[address];\n });\n Object.keys(accountsByChainId).forEach((chainId) => {\n oldAddresses.forEach((address) => {\n delete accountsByChainId[chainId][address];\n });\n });\n\n this.update((state) => {\n state.accounts = accounts;\n state.accountsByChainId = accountsByChainId;\n });\n }\n\n /**\n * Resolves a networkClientId to a network client config\n * or globally selected network config if not provided\n *\n * @param networkClientId - Optional networkClientId to fetch a network client with\n * @returns network client config\n */\n #getCorrectNetworkClient(networkClientId?: NetworkClientId): {\n chainId: string;\n ethQuery?: EthQuery;\n } {\n const selectedNetworkClientId =\n networkClientId ??\n this.messagingSystem.call('NetworkController:getState')\n .selectedNetworkClientId;\n const {\n configuration: { chainId },\n provider,\n } = this.messagingSystem.call(\n 'NetworkController:getNetworkClientById',\n selectedNetworkClientId,\n );\n\n return {\n chainId,\n ethQuery: new EthQuery(provider),\n };\n }\n\n /**\n * Starts a new polling interval.\n *\n * @param interval - Polling interval trigger a 'refresh'.\n */\n async poll(interval?: number): Promise<void> {\n if (interval) {\n this.setIntervalLength(interval);\n }\n\n if (this.#handle) {\n clearTimeout(this.#handle);\n }\n\n await this.refresh();\n\n this.#handle = setTimeout(() => {\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.poll(this.getIntervalLength());\n }, this.getIntervalLength());\n }\n\n /**\n * Refreshes the balances of the accounts using the networkClientId\n *\n * @param networkClientId - The network client ID used to get balances.\n */\n async _executePoll(networkClientId: string): Promise<void> {\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.refresh(networkClientId);\n }\n\n /**\n * Refreshes the balances of the accounts depending on the multi-account setting.\n * If multi-account is disabled, only updates the selected account balance.\n * If multi-account is enabled, updates balances for all accounts.\n *\n * @param networkClientId - Optional networkClientId to fetch a network client with\n */\n async refresh(networkClientId?: NetworkClientId) {\n const selectedAccount = this.messagingSystem.call(\n 'AccountsController:getSelectedAccount',\n );\n const releaseLock = await this.#refreshMutex.acquire();\n try {\n const { chainId, ethQuery } =\n this.#getCorrectNetworkClient(networkClientId);\n this.syncAccounts(chainId);\n const { accounts, accountsByChainId } = this.state;\n const { isMultiAccountBalancesEnabled } = this.messagingSystem.call(\n 'PreferencesController:getState',\n );\n\n const accountsToUpdate = isMultiAccountBalancesEnabled\n ? Object.keys(accounts)\n : [toChecksumHexAddress(selectedAccount.address)];\n\n const accountsForChain = { ...accountsByChainId[chainId] };\n for (const address of accountsToUpdate) {\n const balance = await this.#getBalanceFromChain(address, ethQuery);\n if (balance) {\n accountsForChain[address] = {\n balance,\n };\n }\n }\n\n this.update((state) => {\n if (chainId === this.#getCurrentChainId()) {\n state.accounts = accountsForChain;\n }\n state.accountsByChainId[chainId] = accountsForChain;\n });\n } finally {\n releaseLock();\n }\n }\n\n /**\n * Fetches the balance of a given address from the blockchain.\n *\n * @param address - The account address to fetch the balance for.\n * @param ethQuery - The EthQuery instance to query getBalnce with.\n * @returns A promise that resolves to the balance in a hex string format.\n */\n async #getBalanceFromChain(\n address: string,\n ethQuery?: EthQuery,\n ): Promise<string | undefined> {\n return await safelyExecuteWithTimeout(async () => {\n assert(ethQuery, 'Provider not set.');\n return await query(ethQuery, 'getBalance', [address]);\n });\n }\n\n /**\n * Sync accounts balances with some additional addresses.\n *\n * @param addresses - the additional addresses, may be hardware wallet addresses.\n * @param networkClientId - Optional networkClientId to fetch a network client with.\n * @returns accounts - addresses with synced balance\n */\n async syncBalanceWithAddresses(\n addresses: string[],\n networkClientId?: NetworkClientId,\n ): Promise<Record<string, { balance: string }>> {\n const { ethQuery } = this.#getCorrectNetworkClient(networkClientId);\n\n return await Promise.all(\n addresses.map((address): Promise<[string, string] | undefined> => {\n return safelyExecuteWithTimeout(async () => {\n assert(ethQuery, 'Provider not set.');\n const balance = await query(ethQuery, 'getBalance', [address]);\n return [address, balance];\n });\n }),\n ).then((value) => {\n return value.reduce((obj, item) => {\n if (!item) {\n return obj;\n }\n\n const [address, balance] = item;\n return {\n ...obj,\n [address]: {\n balance,\n },\n };\n }, {});\n });\n }\n}\n\nexport default AccountTrackerController;\n"]}
@@ -1,8 +1,8 @@
1
- import type { AccountsControllerSelectedEvmAccountChangeEvent, AccountsControllerGetSelectedAccountAction, AccountsControllerListAccountsAction, AccountsControllerSelectedAccountChangeEvent } from '@metamask/accounts-controller';
2
- import type { ControllerStateChangeEvent, ControllerGetStateAction, RestrictedControllerMessenger } from '@metamask/base-controller';
3
- import type { NetworkClientId, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction } from '@metamask/network-controller';
4
- import { StaticIntervalPollingController } from '@metamask/polling-controller';
5
- import type { PreferencesControllerGetStateAction } from '@metamask/preferences-controller';
1
+ import type { AccountsControllerSelectedEvmAccountChangeEvent, AccountsControllerGetSelectedAccountAction, AccountsControllerListAccountsAction, AccountsControllerSelectedAccountChangeEvent } from "@metamask/accounts-controller";
2
+ import type { ControllerStateChangeEvent, ControllerGetStateAction, RestrictedControllerMessenger } from "@metamask/base-controller";
3
+ import type { NetworkClientId, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction } from "@metamask/network-controller";
4
+ import { StaticIntervalPollingController } from "@metamask/polling-controller";
5
+ import type { PreferencesControllerGetStateAction } from "@metamask/preferences-controller";
6
6
  /**
7
7
  * The name of the {@link AccountTrackerController}.
8
8
  */
@@ -109,4 +109,4 @@ export declare class AccountTrackerController extends StaticIntervalPollingContr
109
109
  }>>;
110
110
  }
111
111
  export default AccountTrackerController;
112
- //# sourceMappingURL=AccountTrackerController.d.ts.map
112
+ //# sourceMappingURL=AccountTrackerController.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountTrackerController.d.cts","sourceRoot":"","sources":["../src/AccountTrackerController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,+CAA+C,EAC/C,0CAA0C,EAC1C,oCAAoC,EACpC,4CAA4C,EAC7C,sCAAsC;AACvC,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC9B,kCAAkC;AAOnC,OAAO,KAAK,EACV,eAAe,EACf,2CAA2C,EAC3C,+BAA+B,EAChC,qCAAqC;AACtC,OAAO,EAAE,+BAA+B,EAAE,qCAAqC;AAC/E,OAAO,KAAK,EAAE,mCAAmC,EAAE,yCAAyC;AAK5F;;GAEG;AACH,QAAA,MAAM,cAAc,6BAA6B,CAAC;AAElD;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAC;IACpD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAC,CAAC;CAC9E,CAAC;AAaF;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG,wBAAwB,CAC3E,OAAO,cAAc,EACrB,6BAA6B,CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,+BAA+B,GACzC,sCAAsC,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,oCAAoC,GACpC,mCAAmC,GACnC,0CAA0C,GAC1C,+BAA+B,GAC/B,2CAA2C,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,wCAAwC,GAClD,0BAA0B,CACxB,OAAO,cAAc,EACrB,6BAA6B,CAC9B,CAAC;AAEJ;;GAEG;AACH,MAAM,MAAM,8BAA8B,GACxC,wCAAwC,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,+CAA+C,GAC/C,4CAA4C,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG,6BAA6B,CAC3E,OAAO,cAAc,EACrB,+BAA+B,GAAG,cAAc,EAChD,8BAA8B,GAAG,aAAa,EAC9C,cAAc,CAAC,MAAM,CAAC,EACtB,aAAa,CAAC,MAAM,CAAC,CACtB,CAAC;AAEF;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,+BAA+B,CAC3E,OAAO,cAAc,EACrB,6BAA6B,EAC7B,iCAAiC,CAClC;;IAKC;;;;;;;OAOG;gBACS,EACV,QAAgB,EAChB,KAAK,EACL,SAAS,GACV,EAAE;QACD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;QAC/C,SAAS,EAAE,iCAAiC,CAAC;KAC9C;IAqDD,OAAO,CAAC,YAAY;IAkFpB;;;;OAIG;IACG,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB5C;;;;OAIG;IACG,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D;;;;;;OAMG;IACG,OAAO,CAAC,eAAe,CAAC,EAAE,eAAe;IAwD/C;;;;;;OAMG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EAAE,EACnB,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CA2BhD;AAED,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,112 @@
1
+ import type { AccountsControllerSelectedEvmAccountChangeEvent, AccountsControllerGetSelectedAccountAction, AccountsControllerListAccountsAction, AccountsControllerSelectedAccountChangeEvent } from "@metamask/accounts-controller";
2
+ import type { ControllerStateChangeEvent, ControllerGetStateAction, RestrictedControllerMessenger } from "@metamask/base-controller";
3
+ import type { NetworkClientId, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction } from "@metamask/network-controller";
4
+ import { StaticIntervalPollingController } from "@metamask/polling-controller";
5
+ import type { PreferencesControllerGetStateAction } from "@metamask/preferences-controller";
6
+ /**
7
+ * The name of the {@link AccountTrackerController}.
8
+ */
9
+ declare const controllerName = "AccountTrackerController";
10
+ /**
11
+ * @type AccountInformation
12
+ *
13
+ * Account information object
14
+ * @property balance - Hex string of an account balancec in wei
15
+ */
16
+ export type AccountInformation = {
17
+ balance: string;
18
+ };
19
+ /**
20
+ * @type AccountTrackerControllerState
21
+ *
22
+ * Account tracker controller state
23
+ * @property accounts - Map of addresses to account information
24
+ */
25
+ export type AccountTrackerControllerState = {
26
+ accounts: {
27
+ [address: string]: AccountInformation;
28
+ };
29
+ accountsByChainId: Record<string, {
30
+ [address: string]: AccountInformation;
31
+ }>;
32
+ };
33
+ /**
34
+ * The action that can be performed to get the state of the {@link AccountTrackerController}.
35
+ */
36
+ export type AccountTrackerControllerGetStateAction = ControllerGetStateAction<typeof controllerName, AccountTrackerControllerState>;
37
+ /**
38
+ * The actions that can be performed using the {@link AccountTrackerController}.
39
+ */
40
+ export type AccountTrackerControllerActions = AccountTrackerControllerGetStateAction;
41
+ /**
42
+ * The messenger of the {@link AccountTrackerController} for communication.
43
+ */
44
+ export type AllowedActions = AccountsControllerListAccountsAction | PreferencesControllerGetStateAction | AccountsControllerGetSelectedAccountAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction;
45
+ /**
46
+ * The event that {@link AccountTrackerController} can emit.
47
+ */
48
+ export type AccountTrackerControllerStateChangeEvent = ControllerStateChangeEvent<typeof controllerName, AccountTrackerControllerState>;
49
+ /**
50
+ * The events that {@link AccountTrackerController} can emit.
51
+ */
52
+ export type AccountTrackerControllerEvents = AccountTrackerControllerStateChangeEvent;
53
+ /**
54
+ * The external events available to the {@link AccountTrackerController}.
55
+ */
56
+ export type AllowedEvents = AccountsControllerSelectedEvmAccountChangeEvent | AccountsControllerSelectedAccountChangeEvent;
57
+ /**
58
+ * The messenger of the {@link AccountTrackerController}.
59
+ */
60
+ export type AccountTrackerControllerMessenger = RestrictedControllerMessenger<typeof controllerName, AccountTrackerControllerActions | AllowedActions, AccountTrackerControllerEvents | AllowedEvents, AllowedActions['type'], AllowedEvents['type']>;
61
+ /**
62
+ * Controller that tracks the network balances for all user accounts.
63
+ */
64
+ export declare class AccountTrackerController extends StaticIntervalPollingController<typeof controllerName, AccountTrackerControllerState, AccountTrackerControllerMessenger> {
65
+ #private;
66
+ /**
67
+ * Creates an AccountTracker instance.
68
+ *
69
+ * @param options - The controller options.
70
+ * @param options.interval - Polling interval used to fetch new account balances.
71
+ * @param options.state - Initial state to set on this controller.
72
+ * @param options.messenger - The controller messaging system.
73
+ */
74
+ constructor({ interval, state, messenger, }: {
75
+ interval?: number;
76
+ state?: Partial<AccountTrackerControllerState>;
77
+ messenger: AccountTrackerControllerMessenger;
78
+ });
79
+ private syncAccounts;
80
+ /**
81
+ * Starts a new polling interval.
82
+ *
83
+ * @param interval - Polling interval trigger a 'refresh'.
84
+ */
85
+ poll(interval?: number): Promise<void>;
86
+ /**
87
+ * Refreshes the balances of the accounts using the networkClientId
88
+ *
89
+ * @param networkClientId - The network client ID used to get balances.
90
+ */
91
+ _executePoll(networkClientId: string): Promise<void>;
92
+ /**
93
+ * Refreshes the balances of the accounts depending on the multi-account setting.
94
+ * If multi-account is disabled, only updates the selected account balance.
95
+ * If multi-account is enabled, updates balances for all accounts.
96
+ *
97
+ * @param networkClientId - Optional networkClientId to fetch a network client with
98
+ */
99
+ refresh(networkClientId?: NetworkClientId): Promise<void>;
100
+ /**
101
+ * Sync accounts balances with some additional addresses.
102
+ *
103
+ * @param addresses - the additional addresses, may be hardware wallet addresses.
104
+ * @param networkClientId - Optional networkClientId to fetch a network client with.
105
+ * @returns accounts - addresses with synced balance
106
+ */
107
+ syncBalanceWithAddresses(addresses: string[], networkClientId?: NetworkClientId): Promise<Record<string, {
108
+ balance: string;
109
+ }>>;
110
+ }
111
+ export default AccountTrackerController;
112
+ //# sourceMappingURL=AccountTrackerController.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountTrackerController.d.mts","sourceRoot":"","sources":["../src/AccountTrackerController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,+CAA+C,EAC/C,0CAA0C,EAC1C,oCAAoC,EACpC,4CAA4C,EAC7C,sCAAsC;AACvC,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC9B,kCAAkC;AAOnC,OAAO,KAAK,EACV,eAAe,EACf,2CAA2C,EAC3C,+BAA+B,EAChC,qCAAqC;AACtC,OAAO,EAAE,+BAA+B,EAAE,qCAAqC;AAC/E,OAAO,KAAK,EAAE,mCAAmC,EAAE,yCAAyC;AAK5F;;GAEG;AACH,QAAA,MAAM,cAAc,6BAA6B,CAAC;AAElD;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAC;IACpD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAC,CAAC;CAC9E,CAAC;AAaF;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG,wBAAwB,CAC3E,OAAO,cAAc,EACrB,6BAA6B,CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,+BAA+B,GACzC,sCAAsC,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,oCAAoC,GACpC,mCAAmC,GACnC,0CAA0C,GAC1C,+BAA+B,GAC/B,2CAA2C,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,wCAAwC,GAClD,0BAA0B,CACxB,OAAO,cAAc,EACrB,6BAA6B,CAC9B,CAAC;AAEJ;;GAEG;AACH,MAAM,MAAM,8BAA8B,GACxC,wCAAwC,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,+CAA+C,GAC/C,4CAA4C,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG,6BAA6B,CAC3E,OAAO,cAAc,EACrB,+BAA+B,GAAG,cAAc,EAChD,8BAA8B,GAAG,aAAa,EAC9C,cAAc,CAAC,MAAM,CAAC,EACtB,aAAa,CAAC,MAAM,CAAC,CACtB,CAAC;AAEF;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,+BAA+B,CAC3E,OAAO,cAAc,EACrB,6BAA6B,EAC7B,iCAAiC,CAClC;;IAKC;;;;;;;OAOG;gBACS,EACV,QAAgB,EAChB,KAAK,EACL,SAAS,GACV,EAAE;QACD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;QAC/C,SAAS,EAAE,iCAAiC,CAAC;KAC9C;IAqDD,OAAO,CAAC,YAAY;IAkFpB;;;;OAIG;IACG,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB5C;;;;OAIG;IACG,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D;;;;;;OAMG;IACG,OAAO,CAAC,eAAe,CAAC,EAAE,eAAe;IAwD/C;;;;;;OAMG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EAAE,EACnB,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CA2BhD;AAED,eAAe,wBAAwB,CAAC"}