@metamask-previews/assets-controller 14.0.2-preview-3866c0ff1 → 14.0.2-preview-e3275932a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (583) hide show
  1. package/CHANGELOG.md +0 -1
  2. package/dist/AssetsController-method-action-types.cjs +7 -0
  3. package/dist/AssetsController-method-action-types.cjs.map +1 -0
  4. package/dist/{AssetsController-method-action-types.d.ts → AssetsController-method-action-types.d.cts} +2 -2
  5. package/dist/AssetsController-method-action-types.d.cts.map +1 -0
  6. package/dist/AssetsController-method-action-types.d.mts +181 -0
  7. package/dist/AssetsController-method-action-types.d.mts.map +1 -0
  8. package/dist/{AssetsController-method-action-types.js → AssetsController-method-action-types.mjs} +1 -1
  9. package/dist/AssetsController-method-action-types.mjs.map +1 -0
  10. package/dist/AssetsController.cjs +2596 -0
  11. package/dist/AssetsController.cjs.map +1 -0
  12. package/dist/{AssetsController.d.ts → AssetsController.d.cts} +30 -30
  13. package/dist/AssetsController.d.cts.map +1 -0
  14. package/dist/AssetsController.d.mts +395 -0
  15. package/dist/AssetsController.d.mts.map +1 -0
  16. package/dist/AssetsController.mjs +2589 -0
  17. package/dist/AssetsController.mjs.map +1 -0
  18. package/dist/data-sources/AbstractDataSource.cjs +111 -0
  19. package/dist/data-sources/AbstractDataSource.cjs.map +1 -0
  20. package/dist/data-sources/{AbstractDataSource.d.ts → AbstractDataSource.d.cts} +2 -2
  21. package/dist/data-sources/AbstractDataSource.d.cts.map +1 -0
  22. package/dist/data-sources/AbstractDataSource.d.mts +113 -0
  23. package/dist/data-sources/AbstractDataSource.d.mts.map +1 -0
  24. package/dist/data-sources/{AbstractDataSource.js → AbstractDataSource.mjs} +3 -5
  25. package/dist/data-sources/AbstractDataSource.mjs.map +1 -0
  26. package/dist/data-sources/AccountActivityDataSource.cjs +267 -0
  27. package/dist/data-sources/AccountActivityDataSource.cjs.map +1 -0
  28. package/dist/data-sources/{AccountActivityDataSource.d.ts → AccountActivityDataSource.d.cts} +6 -6
  29. package/dist/data-sources/AccountActivityDataSource.d.cts.map +1 -0
  30. package/dist/data-sources/AccountActivityDataSource.d.mts +80 -0
  31. package/dist/data-sources/AccountActivityDataSource.d.mts.map +1 -0
  32. package/dist/data-sources/AccountActivityDataSource.mjs +259 -0
  33. package/dist/data-sources/AccountActivityDataSource.mjs.map +1 -0
  34. package/dist/data-sources/AccountsApiDataSource.cjs +586 -0
  35. package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -0
  36. package/dist/data-sources/{AccountsApiDataSource.d.ts → AccountsApiDataSource.d.cts} +7 -7
  37. package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -0
  38. package/dist/data-sources/AccountsApiDataSource.d.mts +82 -0
  39. package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -0
  40. package/dist/data-sources/AccountsApiDataSource.mjs +581 -0
  41. package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -0
  42. package/dist/data-sources/PriceDataSource.cjs +466 -0
  43. package/dist/data-sources/PriceDataSource.cjs.map +1 -0
  44. package/dist/data-sources/{PriceDataSource.d.ts → PriceDataSource.d.cts} +5 -5
  45. package/dist/data-sources/PriceDataSource.d.cts.map +1 -0
  46. package/dist/data-sources/PriceDataSource.d.mts +100 -0
  47. package/dist/data-sources/PriceDataSource.d.mts.map +1 -0
  48. package/dist/data-sources/{PriceDataSource.js → PriceDataSource.mjs} +185 -179
  49. package/dist/data-sources/PriceDataSource.mjs.map +1 -0
  50. package/dist/data-sources/RpcDataSource.cjs +1021 -0
  51. package/dist/data-sources/RpcDataSource.cjs.map +1 -0
  52. package/dist/data-sources/{RpcDataSource.d.ts → RpcDataSource.d.cts} +10 -10
  53. package/dist/data-sources/RpcDataSource.d.cts.map +1 -0
  54. package/dist/data-sources/RpcDataSource.d.mts +174 -0
  55. package/dist/data-sources/RpcDataSource.d.mts.map +1 -0
  56. package/dist/data-sources/RpcDataSource.mjs +1012 -0
  57. package/dist/data-sources/RpcDataSource.mjs.map +1 -0
  58. package/dist/data-sources/SnapDataSource.cjs +443 -0
  59. package/dist/data-sources/SnapDataSource.cjs.map +1 -0
  60. package/dist/data-sources/{SnapDataSource.d.ts → SnapDataSource.d.cts} +8 -8
  61. package/dist/data-sources/SnapDataSource.d.cts.map +1 -0
  62. package/dist/data-sources/SnapDataSource.d.mts +127 -0
  63. package/dist/data-sources/SnapDataSource.d.mts.map +1 -0
  64. package/dist/data-sources/{SnapDataSource.js → SnapDataSource.mjs} +177 -225
  65. package/dist/data-sources/SnapDataSource.mjs.map +1 -0
  66. package/dist/data-sources/StakedBalanceDataSource.cjs +616 -0
  67. package/dist/data-sources/StakedBalanceDataSource.cjs.map +1 -0
  68. package/dist/data-sources/{StakedBalanceDataSource.d.ts → StakedBalanceDataSource.d.cts} +5 -5
  69. package/dist/data-sources/StakedBalanceDataSource.d.cts.map +1 -0
  70. package/dist/data-sources/StakedBalanceDataSource.d.mts +72 -0
  71. package/dist/data-sources/StakedBalanceDataSource.d.mts.map +1 -0
  72. package/dist/data-sources/StakedBalanceDataSource.mjs +612 -0
  73. package/dist/data-sources/StakedBalanceDataSource.mjs.map +1 -0
  74. package/dist/data-sources/TokenDataSource.cjs +583 -0
  75. package/dist/data-sources/TokenDataSource.cjs.map +1 -0
  76. package/dist/data-sources/{TokenDataSource.d.ts → TokenDataSource.d.cts} +5 -5
  77. package/dist/data-sources/TokenDataSource.d.cts.map +1 -0
  78. package/dist/data-sources/TokenDataSource.d.mts +81 -0
  79. package/dist/data-sources/TokenDataSource.d.mts.map +1 -0
  80. package/dist/data-sources/{TokenDataSource.js → TokenDataSource.mjs} +164 -157
  81. package/dist/data-sources/TokenDataSource.mjs.map +1 -0
  82. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs +705 -0
  83. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs.map +1 -0
  84. package/dist/data-sources/evm-rpc-services/clients/{MulticallClient.d.ts → MulticallClient.d.cts} +3 -3
  85. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.cts.map +1 -0
  86. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.mts +65 -0
  87. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.mts.map +1 -0
  88. package/dist/data-sources/evm-rpc-services/clients/{MulticallClient.js → MulticallClient.mjs} +160 -148
  89. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.mjs.map +1 -0
  90. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.cjs +312 -0
  91. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.cjs.map +1 -0
  92. package/dist/data-sources/evm-rpc-services/clients/{TokensApiClient.d.ts → TokensApiClient.d.cts} +2 -2
  93. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.cts.map +1 -0
  94. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.mts +61 -0
  95. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.mts.map +1 -0
  96. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.mjs +308 -0
  97. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.mjs.map +1 -0
  98. package/dist/data-sources/evm-rpc-services/clients/index.cjs +10 -0
  99. package/dist/data-sources/evm-rpc-services/clients/index.cjs.map +1 -0
  100. package/dist/data-sources/evm-rpc-services/clients/index.d.cts +4 -0
  101. package/dist/data-sources/evm-rpc-services/clients/index.d.cts.map +1 -0
  102. package/dist/data-sources/evm-rpc-services/clients/index.d.mts +4 -0
  103. package/dist/data-sources/evm-rpc-services/clients/index.d.mts.map +1 -0
  104. package/dist/data-sources/evm-rpc-services/clients/index.mjs +3 -0
  105. package/dist/data-sources/evm-rpc-services/clients/index.mjs.map +1 -0
  106. package/dist/data-sources/evm-rpc-services/index.cjs +17 -0
  107. package/dist/data-sources/evm-rpc-services/index.cjs.map +1 -0
  108. package/dist/data-sources/evm-rpc-services/{index.d.ts → index.d.cts} +5 -5
  109. package/dist/data-sources/evm-rpc-services/index.d.cts.map +1 -0
  110. package/dist/data-sources/evm-rpc-services/index.d.mts +5 -0
  111. package/dist/data-sources/evm-rpc-services/index.d.mts.map +1 -0
  112. package/dist/data-sources/evm-rpc-services/index.mjs +4 -0
  113. package/dist/data-sources/evm-rpc-services/index.mjs.map +1 -0
  114. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs +247 -0
  115. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs.map +1 -0
  116. package/dist/data-sources/evm-rpc-services/services/{BalanceFetcher.d.ts → BalanceFetcher.d.cts} +11 -11
  117. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.cts.map +1 -0
  118. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts +96 -0
  119. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts.map +1 -0
  120. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.mjs +243 -0
  121. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.mjs.map +1 -0
  122. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.cjs +132 -0
  123. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.cjs.map +1 -0
  124. package/dist/data-sources/evm-rpc-services/services/{StakedBalanceFetcher.d.ts → StakedBalanceFetcher.d.cts} +14 -13
  125. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.cts.map +1 -0
  126. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.mts +81 -0
  127. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.mts.map +1 -0
  128. package/dist/data-sources/evm-rpc-services/services/{StakedBalanceFetcher.js → StakedBalanceFetcher.mjs} +27 -13
  129. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.mjs.map +1 -0
  130. package/dist/data-sources/evm-rpc-services/services/TokenDetector.cjs +230 -0
  131. package/dist/data-sources/evm-rpc-services/services/TokenDetector.cjs.map +1 -0
  132. package/dist/data-sources/evm-rpc-services/services/{TokenDetector.d.ts → TokenDetector.d.cts} +12 -12
  133. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.cts.map +1 -0
  134. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.mts +78 -0
  135. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.mts.map +1 -0
  136. package/dist/data-sources/evm-rpc-services/services/TokenDetector.mjs +226 -0
  137. package/dist/data-sources/evm-rpc-services/services/TokenDetector.mjs.map +1 -0
  138. package/dist/data-sources/evm-rpc-services/services/index.cjs +13 -0
  139. package/dist/data-sources/evm-rpc-services/services/index.cjs.map +1 -0
  140. package/dist/data-sources/evm-rpc-services/services/{index.d.ts → index.d.cts} +4 -4
  141. package/dist/data-sources/evm-rpc-services/services/index.d.cts.map +1 -0
  142. package/dist/data-sources/evm-rpc-services/services/index.d.mts +4 -0
  143. package/dist/data-sources/evm-rpc-services/services/index.d.mts.map +1 -0
  144. package/dist/data-sources/evm-rpc-services/services/index.mjs +4 -0
  145. package/dist/data-sources/evm-rpc-services/services/index.mjs.map +1 -0
  146. package/dist/data-sources/evm-rpc-services/types/assets.cjs +3 -0
  147. package/dist/data-sources/evm-rpc-services/types/assets.cjs.map +1 -0
  148. package/dist/data-sources/evm-rpc-services/types/{assets.d.ts → assets.d.cts} +3 -3
  149. package/dist/data-sources/evm-rpc-services/types/assets.d.cts.map +1 -0
  150. package/dist/data-sources/evm-rpc-services/types/assets.d.mts +53 -0
  151. package/dist/data-sources/evm-rpc-services/types/assets.d.mts.map +1 -0
  152. package/dist/data-sources/evm-rpc-services/types/assets.mjs +2 -0
  153. package/dist/data-sources/evm-rpc-services/types/assets.mjs.map +1 -0
  154. package/dist/data-sources/evm-rpc-services/types/config.cjs +3 -0
  155. package/dist/data-sources/evm-rpc-services/types/config.cjs.map +1 -0
  156. package/dist/data-sources/evm-rpc-services/types/{config.d.ts → config.d.cts} +2 -2
  157. package/dist/data-sources/evm-rpc-services/types/config.d.cts.map +1 -0
  158. package/dist/data-sources/evm-rpc-services/types/config.d.mts +18 -0
  159. package/dist/data-sources/evm-rpc-services/types/config.d.mts.map +1 -0
  160. package/dist/data-sources/evm-rpc-services/types/config.mjs +2 -0
  161. package/dist/data-sources/evm-rpc-services/types/config.mjs.map +1 -0
  162. package/dist/data-sources/evm-rpc-services/types/core.cjs +3 -0
  163. package/dist/data-sources/evm-rpc-services/types/core.cjs.map +1 -0
  164. package/dist/data-sources/evm-rpc-services/types/{core.d.ts → core.d.cts} +2 -2
  165. package/dist/data-sources/evm-rpc-services/types/core.d.cts.map +1 -0
  166. package/dist/data-sources/evm-rpc-services/types/core.d.mts +19 -0
  167. package/dist/data-sources/evm-rpc-services/types/core.d.mts.map +1 -0
  168. package/dist/data-sources/evm-rpc-services/types/core.mjs +2 -0
  169. package/dist/data-sources/evm-rpc-services/types/core.mjs.map +1 -0
  170. package/dist/data-sources/evm-rpc-services/types/index.cjs +3 -0
  171. package/dist/data-sources/evm-rpc-services/types/index.cjs.map +1 -0
  172. package/dist/data-sources/evm-rpc-services/types/index.d.cts +7 -0
  173. package/dist/data-sources/evm-rpc-services/types/index.d.cts.map +1 -0
  174. package/dist/data-sources/evm-rpc-services/types/index.d.mts +7 -0
  175. package/dist/data-sources/evm-rpc-services/types/index.d.mts.map +1 -0
  176. package/dist/data-sources/evm-rpc-services/types/index.mjs +2 -0
  177. package/dist/data-sources/evm-rpc-services/types/index.mjs.map +1 -0
  178. package/dist/data-sources/evm-rpc-services/types/multicall.cjs +3 -0
  179. package/dist/data-sources/evm-rpc-services/types/multicall.cjs.map +1 -0
  180. package/dist/data-sources/evm-rpc-services/types/{multicall.d.ts → multicall.d.cts} +2 -2
  181. package/dist/data-sources/evm-rpc-services/types/multicall.d.cts.map +1 -0
  182. package/dist/data-sources/evm-rpc-services/types/multicall.d.mts +24 -0
  183. package/dist/data-sources/evm-rpc-services/types/multicall.d.mts.map +1 -0
  184. package/dist/data-sources/evm-rpc-services/types/multicall.mjs +2 -0
  185. package/dist/data-sources/evm-rpc-services/types/multicall.mjs.map +1 -0
  186. package/dist/data-sources/evm-rpc-services/types/services.cjs +3 -0
  187. package/dist/data-sources/evm-rpc-services/types/services.cjs.map +1 -0
  188. package/dist/data-sources/evm-rpc-services/types/{services.d.ts → services.d.cts} +3 -3
  189. package/dist/data-sources/evm-rpc-services/types/services.d.cts.map +1 -0
  190. package/dist/data-sources/evm-rpc-services/types/services.d.mts +70 -0
  191. package/dist/data-sources/evm-rpc-services/types/services.d.mts.map +1 -0
  192. package/dist/data-sources/evm-rpc-services/types/services.mjs +2 -0
  193. package/dist/data-sources/evm-rpc-services/types/services.mjs.map +1 -0
  194. package/dist/data-sources/evm-rpc-services/types/state.cjs +3 -0
  195. package/dist/data-sources/evm-rpc-services/types/state.cjs.map +1 -0
  196. package/dist/data-sources/evm-rpc-services/types/{state.d.ts → state.d.cts} +2 -2
  197. package/dist/data-sources/evm-rpc-services/types/state.d.cts.map +1 -0
  198. package/dist/data-sources/evm-rpc-services/types/state.d.mts +58 -0
  199. package/dist/data-sources/evm-rpc-services/types/state.d.mts.map +1 -0
  200. package/dist/data-sources/evm-rpc-services/types/state.mjs +2 -0
  201. package/dist/data-sources/evm-rpc-services/types/state.mjs.map +1 -0
  202. package/dist/data-sources/evm-rpc-services/utils/assets.cjs +9 -0
  203. package/dist/data-sources/evm-rpc-services/utils/assets.cjs.map +1 -0
  204. package/dist/data-sources/evm-rpc-services/utils/{assets.d.ts → assets.d.cts} +2 -2
  205. package/dist/data-sources/evm-rpc-services/utils/assets.d.cts.map +1 -0
  206. package/dist/data-sources/evm-rpc-services/utils/assets.d.mts +3 -0
  207. package/dist/data-sources/evm-rpc-services/utils/assets.d.mts.map +1 -0
  208. package/dist/data-sources/evm-rpc-services/utils/{assets.js → assets.mjs} +2 -2
  209. package/dist/data-sources/evm-rpc-services/utils/assets.mjs.map +1 -0
  210. package/dist/data-sources/evm-rpc-services/utils/batch.cjs +45 -0
  211. package/dist/data-sources/evm-rpc-services/utils/batch.cjs.map +1 -0
  212. package/dist/data-sources/evm-rpc-services/utils/{batch.d.ts → batch.d.cts} +1 -1
  213. package/dist/data-sources/evm-rpc-services/utils/batch.d.cts.map +1 -0
  214. package/dist/data-sources/evm-rpc-services/utils/batch.d.mts +28 -0
  215. package/dist/data-sources/evm-rpc-services/utils/batch.d.mts.map +1 -0
  216. package/dist/data-sources/evm-rpc-services/utils/{batch.js → batch.mjs} +1 -1
  217. package/dist/data-sources/evm-rpc-services/utils/batch.mjs.map +1 -0
  218. package/dist/data-sources/evm-rpc-services/utils/index.cjs +15 -0
  219. package/dist/data-sources/evm-rpc-services/utils/index.cjs.map +1 -0
  220. package/dist/data-sources/evm-rpc-services/utils/index.d.cts +4 -0
  221. package/dist/data-sources/evm-rpc-services/utils/index.d.cts.map +1 -0
  222. package/dist/data-sources/evm-rpc-services/utils/index.d.mts +4 -0
  223. package/dist/data-sources/evm-rpc-services/utils/index.d.mts.map +1 -0
  224. package/dist/data-sources/evm-rpc-services/utils/index.mjs +4 -0
  225. package/dist/data-sources/evm-rpc-services/utils/index.mjs.map +1 -0
  226. package/dist/data-sources/evm-rpc-services/utils/parsing.cjs +47 -0
  227. package/dist/data-sources/evm-rpc-services/utils/parsing.cjs.map +1 -0
  228. package/dist/data-sources/evm-rpc-services/utils/{parsing.d.ts → parsing.d.cts} +3 -3
  229. package/dist/data-sources/evm-rpc-services/utils/parsing.d.cts.map +1 -0
  230. package/dist/data-sources/evm-rpc-services/utils/parsing.d.mts +25 -0
  231. package/dist/data-sources/evm-rpc-services/utils/parsing.d.mts.map +1 -0
  232. package/dist/data-sources/evm-rpc-services/utils/{parsing.js → parsing.mjs} +3 -3
  233. package/dist/data-sources/evm-rpc-services/utils/parsing.mjs.map +1 -0
  234. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.cjs +68 -0
  235. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.cjs.map +1 -0
  236. package/dist/data-sources/evm-rpc-services/utils/{staking-contracts.d.ts → staking-contracts.d.cts} +1 -1
  237. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.cts.map +1 -0
  238. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.mts +25 -0
  239. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.mts.map +1 -0
  240. package/dist/data-sources/evm-rpc-services/utils/{staking-contracts.js → staking-contracts.mjs} +3 -3
  241. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.mjs.map +1 -0
  242. package/dist/data-sources/index.cjs +30 -0
  243. package/dist/data-sources/index.cjs.map +1 -0
  244. package/dist/data-sources/{index.d.ts → index.d.cts} +9 -9
  245. package/dist/data-sources/index.d.cts.map +1 -0
  246. package/dist/data-sources/index.d.mts +9 -0
  247. package/dist/data-sources/index.d.mts.map +1 -0
  248. package/dist/data-sources/index.mjs +14 -0
  249. package/dist/data-sources/index.mjs.map +1 -0
  250. package/dist/defaults.cjs +125 -0
  251. package/dist/defaults.cjs.map +1 -0
  252. package/dist/{defaults.d.ts → defaults.d.cts} +2 -2
  253. package/dist/defaults.d.cts.map +1 -0
  254. package/dist/defaults.d.mts +50 -0
  255. package/dist/defaults.d.mts.map +1 -0
  256. package/dist/{defaults.js → defaults.mjs} +1 -1
  257. package/dist/defaults.mjs.map +1 -0
  258. package/dist/errors.cjs +25 -0
  259. package/dist/errors.cjs.map +1 -0
  260. package/dist/{errors.d.ts → errors.d.cts} +1 -1
  261. package/dist/errors.d.cts.map +1 -0
  262. package/dist/errors.d.mts +25 -0
  263. package/dist/errors.d.mts.map +1 -0
  264. package/dist/{errors.js → errors.mjs} +1 -7
  265. package/dist/errors.mjs.map +1 -0
  266. package/dist/index.cjs +67 -0
  267. package/dist/index.cjs.map +1 -0
  268. package/dist/{index.d.ts → index.d.cts} +26 -26
  269. package/dist/index.d.cts.map +1 -0
  270. package/dist/index.d.mts +26 -0
  271. package/dist/index.d.mts.map +1 -0
  272. package/dist/{index.js → index.mjs} +13 -13
  273. package/dist/index.mjs.map +1 -0
  274. package/dist/logger.cjs +7 -0
  275. package/dist/logger.cjs.map +1 -0
  276. package/dist/logger.d.cts +5 -0
  277. package/dist/logger.d.cts.map +1 -0
  278. package/dist/logger.d.mts +5 -0
  279. package/dist/logger.d.mts.map +1 -0
  280. package/dist/logger.mjs +4 -0
  281. package/dist/logger.mjs.map +1 -0
  282. package/dist/middlewares/CustomAssetGraduationMiddleware.cjs +132 -0
  283. package/dist/middlewares/CustomAssetGraduationMiddleware.cjs.map +1 -0
  284. package/dist/middlewares/{CustomAssetGraduationMiddleware.d.ts → CustomAssetGraduationMiddleware.d.cts} +2 -2
  285. package/dist/middlewares/CustomAssetGraduationMiddleware.d.cts.map +1 -0
  286. package/dist/middlewares/CustomAssetGraduationMiddleware.d.mts +32 -0
  287. package/dist/middlewares/CustomAssetGraduationMiddleware.d.mts.map +1 -0
  288. package/dist/middlewares/{CustomAssetGraduationMiddleware.js → CustomAssetGraduationMiddleware.mjs} +25 -12
  289. package/dist/middlewares/CustomAssetGraduationMiddleware.mjs.map +1 -0
  290. package/dist/middlewares/DetectionMiddleware.cjs +154 -0
  291. package/dist/middlewares/DetectionMiddleware.cjs.map +1 -0
  292. package/dist/middlewares/{DetectionMiddleware.d.ts → DetectionMiddleware.d.cts} +2 -2
  293. package/dist/middlewares/DetectionMiddleware.d.cts.map +1 -0
  294. package/dist/middlewares/DetectionMiddleware.d.mts +40 -0
  295. package/dist/middlewares/DetectionMiddleware.d.mts.map +1 -0
  296. package/dist/middlewares/{DetectionMiddleware.js → DetectionMiddleware.mjs} +7 -5
  297. package/dist/middlewares/DetectionMiddleware.mjs.map +1 -0
  298. package/dist/middlewares/ParallelMiddleware.cjs +263 -0
  299. package/dist/middlewares/ParallelMiddleware.cjs.map +1 -0
  300. package/dist/middlewares/{ParallelMiddleware.d.ts → ParallelMiddleware.d.cts} +2 -2
  301. package/dist/middlewares/ParallelMiddleware.d.cts.map +1 -0
  302. package/dist/middlewares/ParallelMiddleware.d.mts +41 -0
  303. package/dist/middlewares/ParallelMiddleware.d.mts.map +1 -0
  304. package/dist/middlewares/{ParallelMiddleware.js → ParallelMiddleware.mjs} +11 -4
  305. package/dist/middlewares/ParallelMiddleware.mjs.map +1 -0
  306. package/dist/middlewares/RpcFallbackMiddleware.cjs +90 -0
  307. package/dist/middlewares/RpcFallbackMiddleware.cjs.map +1 -0
  308. package/dist/middlewares/{RpcFallbackMiddleware.d.ts → RpcFallbackMiddleware.d.cts} +2 -2
  309. package/dist/middlewares/RpcFallbackMiddleware.d.cts.map +1 -0
  310. package/dist/middlewares/RpcFallbackMiddleware.d.mts +23 -0
  311. package/dist/middlewares/RpcFallbackMiddleware.d.mts.map +1 -0
  312. package/dist/middlewares/{RpcFallbackMiddleware.js → RpcFallbackMiddleware.mjs} +21 -8
  313. package/dist/middlewares/RpcFallbackMiddleware.mjs.map +1 -0
  314. package/dist/middlewares/index.cjs +14 -0
  315. package/dist/middlewares/index.cjs.map +1 -0
  316. package/dist/middlewares/index.d.cts +9 -0
  317. package/dist/middlewares/index.d.cts.map +1 -0
  318. package/dist/middlewares/index.d.mts +9 -0
  319. package/dist/middlewares/index.d.mts.map +1 -0
  320. package/dist/middlewares/index.mjs +5 -0
  321. package/dist/middlewares/index.mjs.map +1 -0
  322. package/dist/migrations/healAssetsInfoMetadata.cjs +539 -0
  323. package/dist/migrations/healAssetsInfoMetadata.cjs.map +1 -0
  324. package/dist/migrations/{healAssetsInfoMetadata.d.ts → healAssetsInfoMetadata.d.cts} +5 -5
  325. package/dist/migrations/healAssetsInfoMetadata.d.cts.map +1 -0
  326. package/dist/migrations/healAssetsInfoMetadata.d.mts +140 -0
  327. package/dist/migrations/healAssetsInfoMetadata.d.mts.map +1 -0
  328. package/dist/migrations/{healAssetsInfoMetadata.js → healAssetsInfoMetadata.mjs} +11 -9
  329. package/dist/migrations/healAssetsInfoMetadata.mjs.map +1 -0
  330. package/dist/selectors/balance.cjs +532 -0
  331. package/dist/selectors/balance.cjs.map +1 -0
  332. package/dist/selectors/{balance.d.ts → balance.d.cts} +6 -6
  333. package/dist/selectors/balance.d.cts.map +1 -0
  334. package/dist/selectors/balance.d.mts +103 -0
  335. package/dist/selectors/balance.d.mts.map +1 -0
  336. package/dist/selectors/{balance.js → balance.mjs} +5 -5
  337. package/dist/selectors/balance.mjs.map +1 -0
  338. package/dist/types.cjs +39 -0
  339. package/dist/types.cjs.map +1 -0
  340. package/dist/{types.d.ts → types.d.cts} +4 -4
  341. package/dist/types.d.cts.map +1 -0
  342. package/dist/types.d.mts +533 -0
  343. package/dist/types.d.mts.map +1 -0
  344. package/dist/{types.js → types.mjs} +1 -1
  345. package/dist/types.mjs.map +1 -0
  346. package/dist/utils/constants.cjs +5 -0
  347. package/dist/utils/constants.cjs.map +1 -0
  348. package/dist/utils/constants.d.cts +2 -0
  349. package/dist/utils/constants.d.cts.map +1 -0
  350. package/dist/utils/constants.d.mts +2 -0
  351. package/dist/utils/constants.d.mts.map +1 -0
  352. package/dist/utils/{constants.js → constants.mjs} +1 -1
  353. package/dist/utils/constants.mjs.map +1 -0
  354. package/dist/utils/customAssetsRpcSupplement.cjs +72 -0
  355. package/dist/utils/customAssetsRpcSupplement.cjs.map +1 -0
  356. package/dist/utils/{customAssetsRpcSupplement.d.ts → customAssetsRpcSupplement.d.cts} +2 -2
  357. package/dist/utils/customAssetsRpcSupplement.d.cts.map +1 -0
  358. package/dist/utils/customAssetsRpcSupplement.d.mts +60 -0
  359. package/dist/utils/customAssetsRpcSupplement.d.mts.map +1 -0
  360. package/dist/utils/{customAssetsRpcSupplement.js → customAssetsRpcSupplement.mjs} +2 -2
  361. package/dist/utils/customAssetsRpcSupplement.mjs.map +1 -0
  362. package/dist/utils/dedupingBatchFetcher.cjs +168 -0
  363. package/dist/utils/dedupingBatchFetcher.cjs.map +1 -0
  364. package/dist/utils/{dedupingBatchFetcher.d.ts → dedupingBatchFetcher.d.cts} +1 -1
  365. package/dist/utils/dedupingBatchFetcher.d.cts.map +1 -0
  366. package/dist/utils/dedupingBatchFetcher.d.mts +72 -0
  367. package/dist/utils/dedupingBatchFetcher.d.mts.map +1 -0
  368. package/dist/utils/dedupingBatchFetcher.mjs +164 -0
  369. package/dist/utils/dedupingBatchFetcher.mjs.map +1 -0
  370. package/dist/utils/fetchWithTimeout.cjs +30 -0
  371. package/dist/utils/fetchWithTimeout.cjs.map +1 -0
  372. package/dist/utils/{fetchWithTimeout.d.ts → fetchWithTimeout.d.cts} +1 -1
  373. package/dist/utils/fetchWithTimeout.d.cts.map +1 -0
  374. package/dist/utils/fetchWithTimeout.d.mts +11 -0
  375. package/dist/utils/fetchWithTimeout.d.mts.map +1 -0
  376. package/dist/utils/{fetchWithTimeout.js → fetchWithTimeout.mjs} +1 -1
  377. package/dist/utils/fetchWithTimeout.mjs.map +1 -0
  378. package/dist/utils/formatExchangeRatesForBridge.cjs +161 -0
  379. package/dist/utils/formatExchangeRatesForBridge.cjs.map +1 -0
  380. package/dist/utils/{formatExchangeRatesForBridge.d.ts → formatExchangeRatesForBridge.d.cts} +3 -3
  381. package/dist/utils/formatExchangeRatesForBridge.d.cts.map +1 -0
  382. package/dist/utils/formatExchangeRatesForBridge.d.mts +43 -0
  383. package/dist/utils/formatExchangeRatesForBridge.d.mts.map +1 -0
  384. package/dist/utils/{formatExchangeRatesForBridge.js → formatExchangeRatesForBridge.mjs} +7 -6
  385. package/dist/utils/formatExchangeRatesForBridge.mjs.map +1 -0
  386. package/dist/utils/formatStateForTransactionPay.cjs +174 -0
  387. package/dist/utils/formatStateForTransactionPay.cjs.map +1 -0
  388. package/dist/utils/{formatStateForTransactionPay.d.ts → formatStateForTransactionPay.d.cts} +3 -3
  389. package/dist/utils/formatStateForTransactionPay.d.cts.map +1 -0
  390. package/dist/utils/formatStateForTransactionPay.d.mts +72 -0
  391. package/dist/utils/formatStateForTransactionPay.d.mts.map +1 -0
  392. package/dist/utils/{formatStateForTransactionPay.js → formatStateForTransactionPay.mjs} +15 -13
  393. package/dist/utils/formatStateForTransactionPay.mjs.map +1 -0
  394. package/dist/utils/index.cjs +21 -0
  395. package/dist/utils/index.cjs.map +1 -0
  396. package/dist/utils/index.d.cts +9 -0
  397. package/dist/utils/index.d.cts.map +1 -0
  398. package/dist/utils/index.d.mts +9 -0
  399. package/dist/utils/index.d.mts.map +1 -0
  400. package/dist/utils/index.mjs +7 -0
  401. package/dist/utils/index.mjs.map +1 -0
  402. package/dist/utils/native-assets.cjs +64 -0
  403. package/dist/utils/native-assets.cjs.map +1 -0
  404. package/dist/utils/{native-assets.d.ts → native-assets.d.cts} +2 -2
  405. package/dist/utils/native-assets.d.cts.map +1 -0
  406. package/dist/utils/native-assets.d.mts +19 -0
  407. package/dist/utils/native-assets.d.mts.map +1 -0
  408. package/dist/utils/{native-assets.js → native-assets.mjs} +6 -6
  409. package/dist/utils/native-assets.mjs.map +1 -0
  410. package/dist/utils/normalizeAmountString.cjs +64 -0
  411. package/dist/utils/normalizeAmountString.cjs.map +1 -0
  412. package/dist/utils/{normalizeAmountString.d.ts → normalizeAmountString.d.cts} +1 -1
  413. package/dist/utils/normalizeAmountString.d.cts.map +1 -0
  414. package/dist/utils/normalizeAmountString.d.mts +35 -0
  415. package/dist/utils/normalizeAmountString.d.mts.map +1 -0
  416. package/dist/utils/{normalizeAmountString.js → normalizeAmountString.mjs} +2 -2
  417. package/dist/utils/normalizeAmountString.mjs.map +1 -0
  418. package/dist/utils/normalizeAssetId.cjs +60 -0
  419. package/dist/utils/normalizeAssetId.cjs.map +1 -0
  420. package/dist/utils/{normalizeAssetId.d.ts → normalizeAssetId.d.cts} +3 -3
  421. package/dist/utils/normalizeAssetId.d.cts.map +1 -0
  422. package/dist/utils/normalizeAssetId.d.mts +32 -0
  423. package/dist/utils/normalizeAssetId.d.mts.map +1 -0
  424. package/dist/utils/{normalizeAssetId.js → normalizeAssetId.mjs} +11 -4
  425. package/dist/utils/normalizeAssetId.mjs.map +1 -0
  426. package/dist/utils/snaps-assets-migration.cjs +171 -0
  427. package/dist/utils/snaps-assets-migration.cjs.map +1 -0
  428. package/dist/utils/{snaps-assets-migration.d.ts → snaps-assets-migration.d.cts} +5 -5
  429. package/dist/utils/snaps-assets-migration.d.cts.map +1 -0
  430. package/dist/utils/snaps-assets-migration.d.mts +113 -0
  431. package/dist/utils/snaps-assets-migration.d.mts.map +1 -0
  432. package/dist/utils/{snaps-assets-migration.js → snaps-assets-migration.mjs} +2 -2
  433. package/dist/utils/snaps-assets-migration.mjs.map +1 -0
  434. package/dist/utils/trace.cjs +120 -0
  435. package/dist/utils/trace.cjs.map +1 -0
  436. package/dist/utils/{trace.d.ts → trace.d.cts} +2 -2
  437. package/dist/utils/trace.d.cts.map +1 -0
  438. package/dist/utils/trace.d.mts +52 -0
  439. package/dist/utils/trace.d.mts.map +1 -0
  440. package/dist/utils/{trace.js → trace.mjs} +1 -1
  441. package/dist/utils/trace.mjs.map +1 -0
  442. package/package.json +17 -14
  443. package/dist/AssetsController-method-action-types.d.ts.map +0 -1
  444. package/dist/AssetsController-method-action-types.js.map +0 -1
  445. package/dist/AssetsController.d.ts.map +0 -1
  446. package/dist/AssetsController.js +0 -2934
  447. package/dist/AssetsController.js.map +0 -1
  448. package/dist/data-sources/AbstractDataSource.d.ts.map +0 -1
  449. package/dist/data-sources/AbstractDataSource.js.map +0 -1
  450. package/dist/data-sources/AccountActivityDataSource.d.ts.map +0 -1
  451. package/dist/data-sources/AccountActivityDataSource.js +0 -272
  452. package/dist/data-sources/AccountActivityDataSource.js.map +0 -1
  453. package/dist/data-sources/AccountsApiDataSource.d.ts.map +0 -1
  454. package/dist/data-sources/AccountsApiDataSource.js +0 -609
  455. package/dist/data-sources/AccountsApiDataSource.js.map +0 -1
  456. package/dist/data-sources/PriceDataSource.d.ts.map +0 -1
  457. package/dist/data-sources/PriceDataSource.js.map +0 -1
  458. package/dist/data-sources/RpcDataSource.d.ts.map +0 -1
  459. package/dist/data-sources/RpcDataSource.js +0 -1077
  460. package/dist/data-sources/RpcDataSource.js.map +0 -1
  461. package/dist/data-sources/SnapDataSource.d.ts.map +0 -1
  462. package/dist/data-sources/SnapDataSource.js.map +0 -1
  463. package/dist/data-sources/StakedBalanceDataSource.d.ts.map +0 -1
  464. package/dist/data-sources/StakedBalanceDataSource.js +0 -675
  465. package/dist/data-sources/StakedBalanceDataSource.js.map +0 -1
  466. package/dist/data-sources/TokenDataSource.d.ts.map +0 -1
  467. package/dist/data-sources/TokenDataSource.js.map +0 -1
  468. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.ts.map +0 -1
  469. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.js.map +0 -1
  470. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.ts.map +0 -1
  471. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.js +0 -297
  472. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.js.map +0 -1
  473. package/dist/data-sources/evm-rpc-services/clients/index.d.ts +0 -4
  474. package/dist/data-sources/evm-rpc-services/clients/index.d.ts.map +0 -1
  475. package/dist/data-sources/evm-rpc-services/clients/index.js +0 -3
  476. package/dist/data-sources/evm-rpc-services/clients/index.js.map +0 -1
  477. package/dist/data-sources/evm-rpc-services/index.d.ts.map +0 -1
  478. package/dist/data-sources/evm-rpc-services/index.js +0 -4
  479. package/dist/data-sources/evm-rpc-services/index.js.map +0 -1
  480. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.ts.map +0 -1
  481. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.js +0 -241
  482. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.js.map +0 -1
  483. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.ts.map +0 -1
  484. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.js.map +0 -1
  485. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.ts.map +0 -1
  486. package/dist/data-sources/evm-rpc-services/services/TokenDetector.js +0 -217
  487. package/dist/data-sources/evm-rpc-services/services/TokenDetector.js.map +0 -1
  488. package/dist/data-sources/evm-rpc-services/services/index.d.ts.map +0 -1
  489. package/dist/data-sources/evm-rpc-services/services/index.js +0 -4
  490. package/dist/data-sources/evm-rpc-services/services/index.js.map +0 -1
  491. package/dist/data-sources/evm-rpc-services/types/assets.d.ts.map +0 -1
  492. package/dist/data-sources/evm-rpc-services/types/assets.js +0 -2
  493. package/dist/data-sources/evm-rpc-services/types/assets.js.map +0 -1
  494. package/dist/data-sources/evm-rpc-services/types/config.d.ts.map +0 -1
  495. package/dist/data-sources/evm-rpc-services/types/config.js +0 -2
  496. package/dist/data-sources/evm-rpc-services/types/config.js.map +0 -1
  497. package/dist/data-sources/evm-rpc-services/types/core.d.ts.map +0 -1
  498. package/dist/data-sources/evm-rpc-services/types/core.js +0 -2
  499. package/dist/data-sources/evm-rpc-services/types/core.js.map +0 -1
  500. package/dist/data-sources/evm-rpc-services/types/index.d.ts +0 -7
  501. package/dist/data-sources/evm-rpc-services/types/index.d.ts.map +0 -1
  502. package/dist/data-sources/evm-rpc-services/types/index.js +0 -2
  503. package/dist/data-sources/evm-rpc-services/types/index.js.map +0 -1
  504. package/dist/data-sources/evm-rpc-services/types/multicall.d.ts.map +0 -1
  505. package/dist/data-sources/evm-rpc-services/types/multicall.js +0 -2
  506. package/dist/data-sources/evm-rpc-services/types/multicall.js.map +0 -1
  507. package/dist/data-sources/evm-rpc-services/types/services.d.ts.map +0 -1
  508. package/dist/data-sources/evm-rpc-services/types/services.js +0 -2
  509. package/dist/data-sources/evm-rpc-services/types/services.js.map +0 -1
  510. package/dist/data-sources/evm-rpc-services/types/state.d.ts.map +0 -1
  511. package/dist/data-sources/evm-rpc-services/types/state.js +0 -2
  512. package/dist/data-sources/evm-rpc-services/types/state.js.map +0 -1
  513. package/dist/data-sources/evm-rpc-services/utils/assets.d.ts.map +0 -1
  514. package/dist/data-sources/evm-rpc-services/utils/assets.js.map +0 -1
  515. package/dist/data-sources/evm-rpc-services/utils/batch.d.ts.map +0 -1
  516. package/dist/data-sources/evm-rpc-services/utils/batch.js.map +0 -1
  517. package/dist/data-sources/evm-rpc-services/utils/index.d.ts +0 -4
  518. package/dist/data-sources/evm-rpc-services/utils/index.d.ts.map +0 -1
  519. package/dist/data-sources/evm-rpc-services/utils/index.js +0 -4
  520. package/dist/data-sources/evm-rpc-services/utils/index.js.map +0 -1
  521. package/dist/data-sources/evm-rpc-services/utils/parsing.d.ts.map +0 -1
  522. package/dist/data-sources/evm-rpc-services/utils/parsing.js.map +0 -1
  523. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.ts.map +0 -1
  524. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.js.map +0 -1
  525. package/dist/data-sources/index.d.ts.map +0 -1
  526. package/dist/data-sources/index.js +0 -14
  527. package/dist/data-sources/index.js.map +0 -1
  528. package/dist/defaults.d.ts.map +0 -1
  529. package/dist/defaults.js.map +0 -1
  530. package/dist/errors.d.ts.map +0 -1
  531. package/dist/errors.js.map +0 -1
  532. package/dist/index.d.ts.map +0 -1
  533. package/dist/index.js.map +0 -1
  534. package/dist/logger.d.ts +0 -4
  535. package/dist/logger.d.ts.map +0 -1
  536. package/dist/logger.js +0 -4
  537. package/dist/logger.js.map +0 -1
  538. package/dist/middlewares/CustomAssetGraduationMiddleware.d.ts.map +0 -1
  539. package/dist/middlewares/CustomAssetGraduationMiddleware.js.map +0 -1
  540. package/dist/middlewares/DetectionMiddleware.d.ts.map +0 -1
  541. package/dist/middlewares/DetectionMiddleware.js.map +0 -1
  542. package/dist/middlewares/ParallelMiddleware.d.ts.map +0 -1
  543. package/dist/middlewares/ParallelMiddleware.js.map +0 -1
  544. package/dist/middlewares/RpcFallbackMiddleware.d.ts.map +0 -1
  545. package/dist/middlewares/RpcFallbackMiddleware.js.map +0 -1
  546. package/dist/middlewares/index.d.ts +0 -9
  547. package/dist/middlewares/index.d.ts.map +0 -1
  548. package/dist/middlewares/index.js +0 -5
  549. package/dist/middlewares/index.js.map +0 -1
  550. package/dist/migrations/healAssetsInfoMetadata.d.ts.map +0 -1
  551. package/dist/migrations/healAssetsInfoMetadata.js.map +0 -1
  552. package/dist/selectors/balance.d.ts.map +0 -1
  553. package/dist/selectors/balance.js.map +0 -1
  554. package/dist/types.d.ts.map +0 -1
  555. package/dist/types.js.map +0 -1
  556. package/dist/utils/constants.d.ts +0 -2
  557. package/dist/utils/constants.d.ts.map +0 -1
  558. package/dist/utils/constants.js.map +0 -1
  559. package/dist/utils/customAssetsRpcSupplement.d.ts.map +0 -1
  560. package/dist/utils/customAssetsRpcSupplement.js.map +0 -1
  561. package/dist/utils/dedupingBatchFetcher.d.ts.map +0 -1
  562. package/dist/utils/dedupingBatchFetcher.js +0 -177
  563. package/dist/utils/dedupingBatchFetcher.js.map +0 -1
  564. package/dist/utils/fetchWithTimeout.d.ts.map +0 -1
  565. package/dist/utils/fetchWithTimeout.js.map +0 -1
  566. package/dist/utils/formatExchangeRatesForBridge.d.ts.map +0 -1
  567. package/dist/utils/formatExchangeRatesForBridge.js.map +0 -1
  568. package/dist/utils/formatStateForTransactionPay.d.ts.map +0 -1
  569. package/dist/utils/formatStateForTransactionPay.js.map +0 -1
  570. package/dist/utils/index.d.ts +0 -9
  571. package/dist/utils/index.d.ts.map +0 -1
  572. package/dist/utils/index.js +0 -7
  573. package/dist/utils/index.js.map +0 -1
  574. package/dist/utils/native-assets.d.ts.map +0 -1
  575. package/dist/utils/native-assets.js.map +0 -1
  576. package/dist/utils/normalizeAmountString.d.ts.map +0 -1
  577. package/dist/utils/normalizeAmountString.js.map +0 -1
  578. package/dist/utils/normalizeAssetId.d.ts.map +0 -1
  579. package/dist/utils/normalizeAssetId.js.map +0 -1
  580. package/dist/utils/snaps-assets-migration.d.ts.map +0 -1
  581. package/dist/utils/snaps-assets-migration.js.map +0 -1
  582. package/dist/utils/trace.d.ts.map +0 -1
  583. package/dist/utils/trace.js.map +0 -1
@@ -1,609 +0,0 @@
1
- import { isCaipChainId, KnownCaipNamespace, toCaipChainId, } from '@metamask/utils';
2
- import { projectLogger, createModuleLogger } from '../logger.js';
3
- import { fetchWithTimeout, normalizeAssetId } from '../utils/index.js';
4
- import { getMigrationStages, shouldSupportChain, } from '../utils/snaps-assets-migration.js';
5
- import { AbstractDataSource } from './AbstractDataSource.js';
6
- import { isStakingContractAssetId } from './evm-rpc-services/index.js';
7
- // ============================================================================
8
- // CONSTANTS
9
- // ============================================================================
10
- const CONTROLLER_NAME = 'AccountsApiDataSource';
11
- const DEFAULT_POLL_INTERVAL = 30_000;
12
- const DEFAULT_FETCH_TIMEOUT_MS = 15_000;
13
- const log = createModuleLogger(projectLogger, CONTROLLER_NAME);
14
- const defaultState = {
15
- activeChains: [],
16
- };
17
- // ============================================================================
18
- // HELPER FUNCTIONS
19
- // ============================================================================
20
- function decimalToChainId(decimalChainId) {
21
- // Handle both decimal numbers and already-formatted CAIP chain IDs
22
- if (typeof decimalChainId === 'string') {
23
- if (isCaipChainId(decimalChainId)) {
24
- return decimalChainId;
25
- }
26
- return toCaipChainId(KnownCaipNamespace.Eip155, decimalChainId);
27
- }
28
- return toCaipChainId(KnownCaipNamespace.Eip155, String(decimalChainId));
29
- }
30
- /**
31
- * Convert a CAIP-2 chain ID from the API response to our ChainId type.
32
- * Handles both formats: "eip155:1" or just "1" (decimal).
33
- * Uses @metamask/utils for CAIP parsing.
34
- *
35
- * @param chainIdStr - The chain ID string to convert.
36
- * @returns The normalized ChainId.
37
- */
38
- function caipChainIdToChainId(chainIdStr) {
39
- if (isCaipChainId(chainIdStr)) {
40
- return chainIdStr;
41
- }
42
- return toCaipChainId(KnownCaipNamespace.Eip155, chainIdStr);
43
- }
44
- /**
45
- * Filter a response to only include balances for assets already in state.
46
- * Used when tokenDetectionEnabled is false to prevent adding new tokens.
47
- *
48
- * @param response - The fetch response to filter.
49
- * @param assetsState - Current assets controller state to check existing balances against.
50
- * @returns A new response with only known asset balances.
51
- */
52
- export function filterResponseToKnownAssets(response, assetsState) {
53
- if (!response.assetsBalance) {
54
- return response;
55
- }
56
- const filteredBalance = {};
57
- for (const [accountId, accountBalances] of Object.entries(response.assetsBalance)) {
58
- const existingBalances = assetsState.assetsBalance[accountId];
59
- if (!existingBalances) {
60
- // Account has no balances in state yet — skip all its tokens
61
- continue;
62
- }
63
- const filtered = {};
64
- for (const [assetId, balance] of Object.entries(accountBalances)) {
65
- // Only include assets already tracked in state
66
- if (assetId in existingBalances) {
67
- filtered[assetId] = balance;
68
- }
69
- }
70
- if (Object.keys(filtered).length > 0) {
71
- filteredBalance[accountId] = filtered;
72
- }
73
- }
74
- return {
75
- ...response,
76
- assetsBalance: Object.keys(filteredBalance).length > 0 ? filteredBalance : undefined,
77
- };
78
- }
79
- // ============================================================================
80
- // ACCOUNTS API DATA SOURCE
81
- // ============================================================================
82
- /**
83
- * Data source for fetching balances from the MetaMask Accounts API.
84
- *
85
- * Uses ApiPlatformClient (queryApiClient) for all API calls. Does not use the
86
- * messenger. Reports active chains via onActiveChainsUpdated callback.
87
- */
88
- export class AccountsApiDataSource extends AbstractDataSource {
89
- #onActiveChainsUpdated;
90
- #pollInterval;
91
- #fetchTimeoutMs;
92
- /** Getter avoids stale value when user toggles token detection at runtime. */
93
- #tokenDetectionEnabled;
94
- /** Shared AssetsController messenger, used to read remote feature flags. */
95
- #messenger;
96
- /** ApiPlatformClient for cached API calls */
97
- #apiClient;
98
- /** Chains refresh timer */
99
- #chainsRefreshTimer = null;
100
- /** State accessor from subscriptions (for filtering when tokenDetectionEnabled is false) */
101
- #getAssetsState;
102
- constructor(options) {
103
- super(CONTROLLER_NAME, {
104
- ...defaultState,
105
- ...options.state,
106
- });
107
- this.#onActiveChainsUpdated = options.onActiveChainsUpdated;
108
- this.#pollInterval = options.pollInterval ?? DEFAULT_POLL_INTERVAL;
109
- this.#fetchTimeoutMs = options.fetchTimeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS;
110
- this.#tokenDetectionEnabled =
111
- options.tokenDetectionEnabled ?? (() => true);
112
- this.#messenger = options.messenger;
113
- this.#apiClient = options.queryApiClient;
114
- // The Snaps → AssetsController migration flags gate which migration networks
115
- // (Solana, Stellar, Tron) are surfaced as active chains (see
116
- // `#shouldSupportChain`). Mirror core-backend's AccountActivityService and
117
- // react to remote feature flag changes so newly-enabled chains are picked up
118
- // (and disabled ones dropped) without waiting for the periodic refresh.
119
- this.#messenger.subscribe(
120
- // eslint-disable-next-line no-restricted-syntax
121
- 'RemoteFeatureFlagController:stateChange',
122
- // Promise result intentionally not awaited
123
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
124
- async () => await this.#handleMigrationFeatureFlagsChanged(),
125
- // Only react to changes in the set of migration stages. The messenger
126
- // compares selector results with strict equality, so the selector must
127
- // return a primitive rather than a fresh object.
128
- (state) => getMigrationStages(state.remoteFeatureFlags).join(','));
129
- this.#initializeActiveChains().catch(console.error);
130
- }
131
- /**
132
- * Handle a change to the Snaps → AssetsController migration flags: re-fetch
133
- * active chains so newly-enabled migration networks are surfaced (and disabled
134
- * ones dropped) without waiting for the periodic refresh. The refresh invokes
135
- * `onActiveChainsUpdated` when the set changes, which drives re-subscription.
136
- */
137
- async #handleMigrationFeatureFlagsChanged() {
138
- try {
139
- await this.#refreshActiveChains();
140
- }
141
- catch (error) {
142
- log('Failed to refresh active chains after feature flag change', {
143
- error,
144
- });
145
- }
146
- }
147
- /**
148
- * Whether the Accounts API v6 balances endpoint is enabled, read from the
149
- * RemoteFeatureFlagController (`assetsAccountsApiV6`). Read on demand (per
150
- * fetch) rather than cached so the value can be toggled at runtime, and behaves
151
- * the same across clients (extension, mobile). Defaults to `false` when the
152
- * flag is unset or the controller is unavailable.
153
- *
154
- * The flag is a LaunchDarkly JSON variation shaped `{ value: boolean }` (same
155
- * shape as `backendWebSocketConnection`), so the nested `value` is read rather
156
- * than treating the flag as a plain boolean.
157
- *
158
- * @returns `true` when the v6 balances endpoint should be used.
159
- */
160
- #isBalanceV6Enabled() {
161
- try {
162
- const { remoteFeatureFlags } = this.#messenger.call('RemoteFeatureFlagController:getState');
163
- const flag = remoteFeatureFlags?.assetsAccountsApiV6;
164
- return (typeof flag === 'object' &&
165
- flag !== null &&
166
- Boolean(flag.value));
167
- }
168
- catch {
169
- return false;
170
- }
171
- }
172
- // ============================================================================
173
- // INITIALIZATION
174
- // ============================================================================
175
- async #initializeActiveChains() {
176
- try {
177
- const chains = await this.#fetchActiveChains();
178
- const previous = [...this.state.activeChains];
179
- this.updateActiveChains(chains, (updatedChains) => this.#onActiveChainsUpdated(this.getName(), updatedChains, previous));
180
- // Periodically refresh active chains (every 20 minutes)
181
- this.#chainsRefreshTimer = setInterval(() => {
182
- this.#refreshActiveChains().catch(console.error);
183
- }, 20 * 60 * 1000);
184
- }
185
- catch (error) {
186
- log('Failed to fetch active chains', error);
187
- }
188
- }
189
- async #refreshActiveChains() {
190
- try {
191
- const chains = await this.#fetchActiveChains();
192
- const previousChains = new Set(this.state.activeChains);
193
- const newChains = new Set(chains);
194
- // Check if chains changed
195
- const added = chains.filter((chain) => !previousChains.has(chain));
196
- const removed = Array.from(previousChains).filter((chain) => !newChains.has(chain));
197
- if (added.length > 0 || removed.length > 0) {
198
- const previous = [...this.state.activeChains];
199
- this.updateActiveChains(chains, (updatedChains) => this.#onActiveChainsUpdated(this.getName(), updatedChains, previous));
200
- }
201
- }
202
- catch (error) {
203
- log('Failed to refresh active chains', error);
204
- }
205
- }
206
- /**
207
- * Re-fetch supported networks from the Accounts API and update `activeChains`
208
- * when the list changed. Used when the selected EVM network switches so
209
- * chain claiming is not stuck on an empty init-time list.
210
- *
211
- * @returns Resolves when supported networks have been re-fetched.
212
- */
213
- refreshActiveChains() {
214
- return this.#refreshActiveChains();
215
- }
216
- async #fetchActiveChains() {
217
- const response = await this.#apiClient.accounts.fetchV2SupportedNetworks();
218
- // Use fullSupport networks as active chains, gated by the Snaps →
219
- // AssetsController migration FF: non-migration namespaces (e.g. `eip155`)
220
- // are always surfaced, while migration networks (Solana, Stellar, Tron) are
221
- // only surfaced once their per-network stage reaches
222
- // ReadAssetsControllerWithFallback.
223
- const { remoteFeatureFlags } = this.#messenger.call('RemoteFeatureFlagController:getState');
224
- return response.fullSupport
225
- .map(decimalToChainId)
226
- .filter((chainId) => shouldSupportChain(chainId, remoteFeatureFlags));
227
- }
228
- // ============================================================================
229
- // ACCOUNT SCOPE HELPERS
230
- // ============================================================================
231
- // ============================================================================
232
- // FETCH
233
- // ============================================================================
234
- async fetch(request) {
235
- let response = {};
236
- // Filter to only chains supported by Accounts API
237
- const supportedChains = new Set(this.state.activeChains);
238
- const chainsToFetch = request.chainIds.filter((chainId) => supportedChains.has(chainId));
239
- if (chainsToFetch.length === 0) {
240
- // Mark unsupported chains as errors so they pass to next middleware
241
- for (const chainId of request.chainIds) {
242
- if (!supportedChains.has(chainId)) {
243
- response.errors = response.errors ?? {};
244
- response.errors[chainId] = 'Chain not supported by Accounts API';
245
- }
246
- }
247
- return response;
248
- }
249
- try {
250
- // Build CAIP-10 account IDs (e.g., "eip155:1:0x1234...")
251
- // Use pre-computed supportedChains per account from the request
252
- const accountIds = request.accountsWithSupportedChains.flatMap(({ account, supportedChains: accountChains }) => chainsToFetch
253
- .filter((chainId) => accountChains.includes(chainId))
254
- .map((chainId) => `${chainId}:${account.address}`));
255
- // Skip API call if no valid account-chain combinations
256
- if (accountIds.length === 0) {
257
- return response;
258
- }
259
- const fetchOptions = request.forceUpdate
260
- ? { staleTime: 0, gcTime: 0 }
261
- : undefined;
262
- // Feature-flagged: v6 endpoint with a fallback to legacy v5. The flag is
263
- // read here (not cached) so a runtime toggle can revert v6 -> v5.
264
- const { unprocessedNetworks, assetsBalance } = this.#isBalanceV6Enabled()
265
- ? await this.#fetchV6Balances(accountIds, fetchOptions, request)
266
- : await this.#fetchV5Balances(accountIds, fetchOptions, request);
267
- // Handle unprocessed networks - these will be passed to next middleware
268
- if (unprocessedNetworks.length > 0) {
269
- const unprocessedChainIds = unprocessedNetworks.map(caipChainIdToChainId);
270
- // Add unprocessed chains to errors so middleware passes them to next data source
271
- response.errors = response.errors ?? {};
272
- for (const chainId of unprocessedChainIds) {
273
- response.errors[chainId] = 'Unprocessed by Accounts API';
274
- }
275
- }
276
- response.assetsBalance = assetsBalance;
277
- response.updateMode = 'merge';
278
- }
279
- catch (error) {
280
- log('Fetch FAILED', { error, chains: chainsToFetch });
281
- // On error, mark all chains as errors so they can be handled by next middleware
282
- response.errors = response.errors ?? {};
283
- for (const chainId of chainsToFetch) {
284
- response.errors[chainId] =
285
- `Fetch failed: ${error instanceof Error ? error.message : String(error)}`;
286
- }
287
- }
288
- // Mark unsupported chains as errors so they pass to next middleware
289
- for (const chainId of request.chainIds) {
290
- if (!supportedChains.has(chainId)) {
291
- response.errors = response.errors ?? {};
292
- response.errors[chainId] = 'Chain not supported by Accounts API';
293
- }
294
- }
295
- // When token detection is disabled, filter out tokens not already in state
296
- if (!this.#tokenDetectionEnabled() && this.#getAssetsState) {
297
- response = filterResponseToKnownAssets(response, this.#getAssetsState());
298
- }
299
- return response;
300
- }
301
- /**
302
- * Fetch balances from the legacy v5 endpoint and process them.
303
- *
304
- * @param accountIds - CAIP-10 account IDs to fetch balances for.
305
- * @param fetchOptions - Cache/fetch options (e.g. force update settings).
306
- * @param request - The original data request containing accounts to map.
307
- * @returns Unprocessed networks and processed asset balances by account.
308
- */
309
- async #fetchV5Balances(accountIds, fetchOptions, request) {
310
- const apiResponse = await fetchWithTimeout(() => this.#apiClient.accounts.fetchV5MultiAccountBalances(accountIds, undefined, fetchOptions), this.#fetchTimeoutMs);
311
- const { assetsBalance } = this.#processV5Balances(apiResponse.balances, request);
312
- return {
313
- unprocessedNetworks: apiResponse.unprocessedNetworks,
314
- assetsBalance,
315
- };
316
- }
317
- /**
318
- * Fetch balances from the v6 endpoint and process them.
319
- *
320
- * @param accountIds - CAIP-10 account IDs to fetch balances for.
321
- * @param fetchOptions - Cache/fetch options (e.g. force update settings).
322
- * @param request - The original data request containing accounts to map.
323
- * @returns Unprocessed networks and processed asset balances by account.
324
- */
325
- async #fetchV6Balances(accountIds, fetchOptions, request) {
326
- const apiResponse = await fetchWithTimeout(() => this.#apiClient.accounts.fetchV6MultiAccountBalances(accountIds, undefined, fetchOptions), this.#fetchTimeoutMs);
327
- const { assetsBalance } = this.#processV6Balances(apiResponse.balances, request);
328
- return {
329
- unprocessedNetworks: apiResponse.unprocessedNetworks,
330
- assetsBalance,
331
- };
332
- }
333
- /**
334
- * Build a lookup of lowercased account address to the request's account ID.
335
- *
336
- * @param request - The original data request containing accounts to map.
337
- * @returns Map of lowercase address to account ID.
338
- */
339
- #buildAddressToAccountIdMap(request) {
340
- const addressToAccountId = new Map();
341
- for (const { account } of request.accountsWithSupportedChains) {
342
- if (account.address) {
343
- addressToAccountId.set(account.address.toLowerCase(), account.id);
344
- }
345
- }
346
- return addressToAccountId;
347
- }
348
- /**
349
- * Process V5 API balances response.
350
- * V5 returns a flat array of balance items, each with accountId and assetId.
351
- *
352
- * @param balances - Array of balance items from the V5 API response.
353
- * @param request - The original data request containing accounts to map.
354
- * @returns Object containing processed asset balances by account.
355
- */
356
- #processV5Balances(balances, request) {
357
- const assetsBalance = {};
358
- // Build a map of lowercase addresses to account IDs for efficient lookup
359
- const addressToAccountId = this.#buildAddressToAccountIdMap(request);
360
- // V5 response: array of { accountId, assetId, balance, ... }
361
- for (const item of balances) {
362
- // Extract address from CAIP-10 account ID (e.g., "eip155:1:0x1234..." -> "0x1234...")
363
- const addressParts = item.accountId.split(':');
364
- if (addressParts.length < 3) {
365
- continue;
366
- }
367
- const address = addressParts[2].toLowerCase();
368
- // Find the matching account ID from request
369
- const accountId = addressToAccountId.get(address);
370
- if (!accountId) {
371
- // This is normal - API returns balances for all chains, but request may only have one account
372
- continue;
373
- }
374
- if (!assetsBalance[accountId]) {
375
- assetsBalance[accountId] = {};
376
- }
377
- // Normalize asset ID (checksum EVM addresses for ERC20 tokens)
378
- const normalizedAssetId = normalizeAssetId(item.assetId);
379
- // Staked balances are owned by StakedBalanceDataSource. Accounts API may
380
- // return the vault share token as a normal ERC-20 (often 0 or stale),
381
- // which would overwrite or wipe the on-chain staked amount on merge.
382
- if (isStakingContractAssetId(normalizedAssetId)) {
383
- continue;
384
- }
385
- // Store balance as returned by API
386
- assetsBalance[accountId][normalizedAssetId] = {
387
- amount: item.balance,
388
- };
389
- }
390
- return { assetsBalance };
391
- }
392
- /**
393
- * Process V6 API balances response.
394
- * V6 returns a flat array of rows carrying their `accountId`.
395
- * Only `object: 'token'` rows are consumed here to preserve parity with
396
- * the v5 token-balance behavior; DeFi positions are ignored.
397
- *
398
- * @param balances - Flat balance rows from the V6 API response.
399
- * @param request - The original data request containing accounts to map.
400
- * @returns Object containing processed asset balances by account.
401
- */
402
- #processV6Balances(balances, request) {
403
- const assetsBalance = Object.create(null);
404
- // Build a map of lowercase addresses to account IDs for efficient lookup
405
- const addressToAccountId = this.#buildAddressToAccountIdMap(request);
406
- for (const item of balances) {
407
- // Extract address from CAIP-10 account ID (e.g., "eip155:1:0x1234..." -> "0x1234...")
408
- const addressParts = item.accountId.split(':');
409
- if (addressParts.length < 3) {
410
- continue;
411
- }
412
- const address = addressParts[2].toLowerCase();
413
- // Find the matching account ID from request
414
- const accountId = addressToAccountId.get(address);
415
- if (!accountId) {
416
- // This is normal - API returns balances for all chains, but request may only have one account
417
- continue;
418
- }
419
- // Only consume token balances; DeFi positions are handled elsewhere.
420
- if (item.object !== 'token') {
421
- continue;
422
- }
423
- if (!assetsBalance[accountId]) {
424
- assetsBalance[accountId] = Object.create(null);
425
- }
426
- // Normalize asset ID (checksum EVM addresses for ERC20 tokens)
427
- const normalizedAssetId = normalizeAssetId(item.assetId);
428
- // Staked balances are owned by StakedBalanceDataSource. Accounts API may
429
- // return the vault share token as a normal ERC-20 (often 0 or stale),
430
- // which would overwrite or wipe the on-chain staked amount on merge.
431
- if (isStakingContractAssetId(normalizedAssetId)) {
432
- continue;
433
- }
434
- // Store balance as returned by API
435
- assetsBalance[accountId][normalizedAssetId] = {
436
- amount: item.balance,
437
- };
438
- }
439
- return { assetsBalance };
440
- }
441
- // ============================================================================
442
- // MIDDLEWARE
443
- // ============================================================================
444
- /**
445
- * Get the middleware for fetching balances via Accounts API.
446
- * This middleware:
447
- * - Supports multiple accounts in a single request
448
- * - Uses unprocessedNetworks from API response to determine what to pass to next middleware
449
- * - Merges response into context
450
- * - Removes handled chains from request for next middleware
451
- *
452
- * @returns The middleware function for the assets pipeline.
453
- */
454
- get assetsMiddleware() {
455
- return async (context, next) => {
456
- const { request } = context;
457
- // Price/metadata-only requests must not hit the Accounts API.
458
- if (!request.dataTypes.includes('balance')) {
459
- return next(context);
460
- }
461
- // If no chains requested, skip to next middleware
462
- if (request.chainIds.length === 0) {
463
- return next(context);
464
- }
465
- let successfullyHandledChains = [];
466
- try {
467
- const response = await this.fetch(request);
468
- // Merge response into context
469
- if (response.assetsBalance) {
470
- context.response.assetsBalance ??= {};
471
- for (const [accountId, accountBalances] of Object.entries(response.assetsBalance)) {
472
- context.response.assetsBalance[accountId] = {
473
- ...context.response.assetsBalance[accountId],
474
- ...accountBalances,
475
- };
476
- }
477
- }
478
- // Determine successfully handled chains (exclude unprocessed/error chains)
479
- const unprocessedChains = new Set(Object.keys(response.errors ?? {}));
480
- successfullyHandledChains = request.chainIds.filter((chainId) => !unprocessedChains.has(chainId));
481
- // When token detection is off and we filtered out all balance data (e.g. new
482
- // account with empty state), do not claim any chain as handled so that RPC
483
- // middleware can still process them and fetch native balances (ETH, MATIC, etc.).
484
- if (!this.#tokenDetectionEnabled() &&
485
- (!response.assetsBalance ||
486
- Object.keys(response.assetsBalance).length === 0)) {
487
- successfullyHandledChains = [];
488
- }
489
- }
490
- catch (error) {
491
- log('Middleware fetch failed', { error });
492
- successfullyHandledChains = [];
493
- }
494
- // Remove successfully handled chains from request for next middleware
495
- if (successfullyHandledChains.length > 0) {
496
- const remainingChains = request.chainIds.filter((chainId) => !successfullyHandledChains.includes(chainId));
497
- return next({
498
- ...context,
499
- request: {
500
- ...request,
501
- chainIds: remainingChains,
502
- },
503
- });
504
- }
505
- // No chains handled - pass context unchanged
506
- return next(context);
507
- };
508
- }
509
- // ============================================================================
510
- // SUBSCRIBE
511
- // ============================================================================
512
- async subscribe(subscriptionRequest) {
513
- const { request, subscriptionId, isUpdate, skipInitialFetch } = subscriptionRequest;
514
- // Store state accessor for filtering when tokenDetectionEnabled is false
515
- if (subscriptionRequest.getAssetsState) {
516
- this.#getAssetsState = subscriptionRequest.getAssetsState;
517
- }
518
- // Try all requested chains - API will handle unsupported ones via unprocessedNetworks
519
- const chainsToSubscribe = request.chainIds;
520
- if (chainsToSubscribe.length === 0) {
521
- return;
522
- }
523
- // Handle subscription update - update both chains AND request (for accounts)
524
- if (isUpdate) {
525
- const existing = this.activeSubscriptions.get(subscriptionId);
526
- if (existing) {
527
- const previousChains = existing.chains;
528
- existing.chains = chainsToSubscribe;
529
- existing.request = request;
530
- // Chains handed off from another data source (e.g. the websocket
531
- // source releasing a chain that went down) would otherwise stay
532
- // stale until the next poll tick — fetch them immediately.
533
- const addedChains = chainsToSubscribe.filter((chainId) => !previousChains.includes(chainId));
534
- if (addedChains.length > 0) {
535
- try {
536
- const fetchResponse = await this.fetch({
537
- ...request,
538
- chainIds: addedChains,
539
- forceUpdate: true,
540
- });
541
- await existing.onAssetsUpdate(fetchResponse);
542
- }
543
- catch (error) {
544
- log('Initial fetch for added chains failed', {
545
- subscriptionId,
546
- addedChains,
547
- error,
548
- });
549
- }
550
- }
551
- return;
552
- }
553
- }
554
- // Clean up existing subscription if any
555
- await this.unsubscribe(subscriptionId);
556
- const pollInterval = request.updateInterval ?? this.#pollInterval;
557
- // Create poll function for this subscription
558
- const pollFn = async () => {
559
- try {
560
- const subscription = this.activeSubscriptions.get(subscriptionId);
561
- if (!subscription?.request) {
562
- return;
563
- }
564
- // Use stored request (which gets updated on account changes).
565
- // forceUpdate so we don't get a stale response from the cache
566
- // (STALE_TIMES.BALANCES is 60s, longer than our 30s poll interval).
567
- const fetchResponse = await this.fetch({
568
- ...subscription.request,
569
- chainIds: subscription.chains,
570
- forceUpdate: true,
571
- });
572
- // Report update to AssetsController via callback
573
- await subscription.onAssetsUpdate(fetchResponse);
574
- }
575
- catch (error) {
576
- log('Subscription poll failed', { subscriptionId, error });
577
- }
578
- };
579
- // Set up polling
580
- const timer = setInterval(() => {
581
- pollFn().catch(console.error);
582
- }, pollInterval);
583
- // Store subscription with request for account updates
584
- this.activeSubscriptions.set(subscriptionId, {
585
- cleanup: () => {
586
- clearInterval(timer);
587
- },
588
- chains: chainsToSubscribe,
589
- request,
590
- onAssetsUpdate: subscriptionRequest.onAssetsUpdate,
591
- });
592
- // Interval above still polls on the normal cadence. This only skips the
593
- // one-shot fetch at subscribe time when the controller already ran a
594
- // force getAssets for the same scope (startup / group refresh).
595
- if (!skipInitialFetch) {
596
- await pollFn();
597
- }
598
- }
599
- // ============================================================================
600
- // CLEANUP
601
- // ============================================================================
602
- destroy() {
603
- if (this.#chainsRefreshTimer) {
604
- clearInterval(this.#chainsRefreshTimer);
605
- }
606
- super.destroy();
607
- }
608
- }
609
- //# sourceMappingURL=AccountsApiDataSource.js.map