@metamask-previews/assets-controller 14.0.2-preview-4f4c98e → 14.0.2-preview-eb263b0ee

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 (573) hide show
  1. package/CHANGELOG.md +0 -5
  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 +2559 -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.js → AssetsController.mjs} +29 -28
  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} +1 -1
  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.js → AccountActivityDataSource.mjs} +11 -11
  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.js → AccountsApiDataSource.mjs} +8 -7
  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} +8 -7
  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.js → RpcDataSource.mjs} +11 -11
  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} +6 -6
  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.js → StakedBalanceDataSource.mjs} +7 -7
  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} +8 -7
  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} +5 -5
  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.js → TokensApiClient.mjs} +2 -2
  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.js → BalanceFetcher.mjs} +5 -5
  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} +6 -5
  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.js → TokenDetector.mjs} +4 -4
  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 -1
  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} +5 -5
  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} +4 -4
  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} +9 -2
  305. package/dist/middlewares/{ParallelMiddleware.js.map → ParallelMiddleware.mjs.map} +1 -1
  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} +4 -4
  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 +385 -0
  323. package/dist/migrations/healAssetsInfoMetadata.cjs.map +1 -0
  324. package/dist/migrations/{healAssetsInfoMetadata.d.ts → healAssetsInfoMetadata.d.cts} +4 -4
  325. package/dist/migrations/healAssetsInfoMetadata.d.cts.map +1 -0
  326. package/dist/migrations/healAssetsInfoMetadata.d.mts +106 -0
  327. package/dist/migrations/healAssetsInfoMetadata.d.mts.map +1 -0
  328. package/dist/migrations/{healAssetsInfoMetadata.js → healAssetsInfoMetadata.mjs} +5 -4
  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.js → dedupingBatchFetcher.mjs} +1 -1
  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} +8 -7
  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} +5 -5
  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 +18 -15
  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.map +0 -1
  447. package/dist/data-sources/AbstractDataSource.d.ts.map +0 -1
  448. package/dist/data-sources/AbstractDataSource.js.map +0 -1
  449. package/dist/data-sources/AccountActivityDataSource.d.ts.map +0 -1
  450. package/dist/data-sources/AccountActivityDataSource.js.map +0 -1
  451. package/dist/data-sources/AccountsApiDataSource.d.ts.map +0 -1
  452. package/dist/data-sources/AccountsApiDataSource.js.map +0 -1
  453. package/dist/data-sources/PriceDataSource.d.ts.map +0 -1
  454. package/dist/data-sources/PriceDataSource.js.map +0 -1
  455. package/dist/data-sources/RpcDataSource.d.ts.map +0 -1
  456. package/dist/data-sources/RpcDataSource.js.map +0 -1
  457. package/dist/data-sources/SnapDataSource.d.ts.map +0 -1
  458. package/dist/data-sources/SnapDataSource.js.map +0 -1
  459. package/dist/data-sources/StakedBalanceDataSource.d.ts.map +0 -1
  460. package/dist/data-sources/StakedBalanceDataSource.js.map +0 -1
  461. package/dist/data-sources/TokenDataSource.d.ts.map +0 -1
  462. package/dist/data-sources/TokenDataSource.js.map +0 -1
  463. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.ts.map +0 -1
  464. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.js.map +0 -1
  465. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.ts.map +0 -1
  466. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.js.map +0 -1
  467. package/dist/data-sources/evm-rpc-services/clients/index.d.ts +0 -4
  468. package/dist/data-sources/evm-rpc-services/clients/index.d.ts.map +0 -1
  469. package/dist/data-sources/evm-rpc-services/clients/index.js +0 -3
  470. package/dist/data-sources/evm-rpc-services/clients/index.js.map +0 -1
  471. package/dist/data-sources/evm-rpc-services/index.d.ts.map +0 -1
  472. package/dist/data-sources/evm-rpc-services/index.js +0 -4
  473. package/dist/data-sources/evm-rpc-services/index.js.map +0 -1
  474. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.ts.map +0 -1
  475. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.js.map +0 -1
  476. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.ts.map +0 -1
  477. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.js.map +0 -1
  478. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.ts.map +0 -1
  479. package/dist/data-sources/evm-rpc-services/services/TokenDetector.js.map +0 -1
  480. package/dist/data-sources/evm-rpc-services/services/index.d.ts.map +0 -1
  481. package/dist/data-sources/evm-rpc-services/services/index.js +0 -4
  482. package/dist/data-sources/evm-rpc-services/services/index.js.map +0 -1
  483. package/dist/data-sources/evm-rpc-services/types/assets.d.ts.map +0 -1
  484. package/dist/data-sources/evm-rpc-services/types/assets.js +0 -2
  485. package/dist/data-sources/evm-rpc-services/types/assets.js.map +0 -1
  486. package/dist/data-sources/evm-rpc-services/types/config.d.ts.map +0 -1
  487. package/dist/data-sources/evm-rpc-services/types/config.js +0 -2
  488. package/dist/data-sources/evm-rpc-services/types/config.js.map +0 -1
  489. package/dist/data-sources/evm-rpc-services/types/core.d.ts.map +0 -1
  490. package/dist/data-sources/evm-rpc-services/types/core.js +0 -2
  491. package/dist/data-sources/evm-rpc-services/types/core.js.map +0 -1
  492. package/dist/data-sources/evm-rpc-services/types/index.d.ts +0 -7
  493. package/dist/data-sources/evm-rpc-services/types/index.d.ts.map +0 -1
  494. package/dist/data-sources/evm-rpc-services/types/index.js +0 -2
  495. package/dist/data-sources/evm-rpc-services/types/index.js.map +0 -1
  496. package/dist/data-sources/evm-rpc-services/types/multicall.d.ts.map +0 -1
  497. package/dist/data-sources/evm-rpc-services/types/multicall.js +0 -2
  498. package/dist/data-sources/evm-rpc-services/types/multicall.js.map +0 -1
  499. package/dist/data-sources/evm-rpc-services/types/services.d.ts.map +0 -1
  500. package/dist/data-sources/evm-rpc-services/types/services.js +0 -2
  501. package/dist/data-sources/evm-rpc-services/types/services.js.map +0 -1
  502. package/dist/data-sources/evm-rpc-services/types/state.d.ts.map +0 -1
  503. package/dist/data-sources/evm-rpc-services/types/state.js +0 -2
  504. package/dist/data-sources/evm-rpc-services/types/state.js.map +0 -1
  505. package/dist/data-sources/evm-rpc-services/utils/assets.d.ts.map +0 -1
  506. package/dist/data-sources/evm-rpc-services/utils/assets.js.map +0 -1
  507. package/dist/data-sources/evm-rpc-services/utils/batch.d.ts.map +0 -1
  508. package/dist/data-sources/evm-rpc-services/utils/batch.js.map +0 -1
  509. package/dist/data-sources/evm-rpc-services/utils/index.d.ts +0 -4
  510. package/dist/data-sources/evm-rpc-services/utils/index.d.ts.map +0 -1
  511. package/dist/data-sources/evm-rpc-services/utils/index.js +0 -4
  512. package/dist/data-sources/evm-rpc-services/utils/index.js.map +0 -1
  513. package/dist/data-sources/evm-rpc-services/utils/parsing.d.ts.map +0 -1
  514. package/dist/data-sources/evm-rpc-services/utils/parsing.js.map +0 -1
  515. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.ts.map +0 -1
  516. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.js.map +0 -1
  517. package/dist/data-sources/index.d.ts.map +0 -1
  518. package/dist/data-sources/index.js +0 -14
  519. package/dist/data-sources/index.js.map +0 -1
  520. package/dist/defaults.d.ts.map +0 -1
  521. package/dist/defaults.js.map +0 -1
  522. package/dist/errors.d.ts.map +0 -1
  523. package/dist/errors.js.map +0 -1
  524. package/dist/index.d.ts.map +0 -1
  525. package/dist/index.js.map +0 -1
  526. package/dist/logger.d.ts +0 -4
  527. package/dist/logger.d.ts.map +0 -1
  528. package/dist/logger.js +0 -4
  529. package/dist/logger.js.map +0 -1
  530. package/dist/middlewares/CustomAssetGraduationMiddleware.d.ts.map +0 -1
  531. package/dist/middlewares/CustomAssetGraduationMiddleware.js.map +0 -1
  532. package/dist/middlewares/DetectionMiddleware.d.ts.map +0 -1
  533. package/dist/middlewares/DetectionMiddleware.js.map +0 -1
  534. package/dist/middlewares/ParallelMiddleware.d.ts.map +0 -1
  535. package/dist/middlewares/RpcFallbackMiddleware.d.ts.map +0 -1
  536. package/dist/middlewares/RpcFallbackMiddleware.js.map +0 -1
  537. package/dist/middlewares/index.d.ts +0 -9
  538. package/dist/middlewares/index.d.ts.map +0 -1
  539. package/dist/middlewares/index.js +0 -5
  540. package/dist/middlewares/index.js.map +0 -1
  541. package/dist/migrations/healAssetsInfoMetadata.d.ts.map +0 -1
  542. package/dist/migrations/healAssetsInfoMetadata.js.map +0 -1
  543. package/dist/selectors/balance.d.ts.map +0 -1
  544. package/dist/selectors/balance.js.map +0 -1
  545. package/dist/types.d.ts.map +0 -1
  546. package/dist/types.js.map +0 -1
  547. package/dist/utils/constants.d.ts +0 -2
  548. package/dist/utils/constants.d.ts.map +0 -1
  549. package/dist/utils/constants.js.map +0 -1
  550. package/dist/utils/customAssetsRpcSupplement.d.ts.map +0 -1
  551. package/dist/utils/customAssetsRpcSupplement.js.map +0 -1
  552. package/dist/utils/dedupingBatchFetcher.d.ts.map +0 -1
  553. package/dist/utils/dedupingBatchFetcher.js.map +0 -1
  554. package/dist/utils/fetchWithTimeout.d.ts.map +0 -1
  555. package/dist/utils/fetchWithTimeout.js.map +0 -1
  556. package/dist/utils/formatExchangeRatesForBridge.d.ts.map +0 -1
  557. package/dist/utils/formatExchangeRatesForBridge.js.map +0 -1
  558. package/dist/utils/formatStateForTransactionPay.d.ts.map +0 -1
  559. package/dist/utils/formatStateForTransactionPay.js.map +0 -1
  560. package/dist/utils/index.d.ts +0 -9
  561. package/dist/utils/index.d.ts.map +0 -1
  562. package/dist/utils/index.js +0 -7
  563. package/dist/utils/index.js.map +0 -1
  564. package/dist/utils/native-assets.d.ts.map +0 -1
  565. package/dist/utils/native-assets.js.map +0 -1
  566. package/dist/utils/normalizeAmountString.d.ts.map +0 -1
  567. package/dist/utils/normalizeAmountString.js.map +0 -1
  568. package/dist/utils/normalizeAssetId.d.ts.map +0 -1
  569. package/dist/utils/normalizeAssetId.js.map +0 -1
  570. package/dist/utils/snaps-assets-migration.d.ts.map +0 -1
  571. package/dist/utils/snaps-assets-migration.js.map +0 -1
  572. package/dist/utils/trace.d.ts.map +0 -1
  573. package/dist/utils/trace.js.map +0 -1
@@ -0,0 +1,1021 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ 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");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ 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");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ var _RpcDataSource_instances, _RpcDataSource_messenger, _RpcDataSource_onActiveChainsUpdated, _RpcDataSource_getNativeAssetForChain, _RpcDataSource_timeout, _RpcDataSource_tokenDetectionEnabled, _RpcDataSource_useExternalService, _RpcDataSource_isOnboarded, _RpcDataSource_activeChains, _RpcDataSource_chainStatuses, _RpcDataSource_providerCache, _RpcDataSource_activeSubscriptions, _RpcDataSource_unsubscribeTransactionConfirmed, _RpcDataSource_multicallClient, _RpcDataSource_balanceFetcher, _RpcDataSource_tokenDetector, _RpcDataSource_getAssetType, _RpcDataSource_convertToHumanReadable, _RpcDataSource_collectMetadataForBalances, _RpcDataSource_hasValidDecimals, _RpcDataSource_pickValidDecimals, _RpcDataSource_handleBalanceUpdate, _RpcDataSource_handleDetectionUpdate, _RpcDataSource_subscribeToNetworkController, _RpcDataSource_subscribeToTransactionEvents, _RpcDataSource_onTransactionConfirmed, _RpcDataSource_refreshBalanceForChains, _RpcDataSource_initializeFromNetworkController, _RpcDataSource_updateFromNetworkState, _RpcDataSource_getProvider, _RpcDataSource_getMulticallProvider, _RpcDataSource_clearProviderCache, _RpcDataSource_fetchDecimalsViaRpc, _RpcDataSource_getExistingAssetsMetadata;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.createRpcDataSource = exports.RpcDataSource = exports.caipChainIdToHex = void 0;
19
+ const providers_1 = require("@ethersproject/providers");
20
+ const controller_utils_1 = require("@metamask/controller-utils");
21
+ const utils_1 = require("@metamask/utils");
22
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
23
+ const logger_js_1 = require("../logger.cjs");
24
+ const constants_js_1 = require("../utils/constants.cjs");
25
+ const index_js_1 = require("../utils/index.cjs");
26
+ const AbstractDataSource_js_1 = require("./AbstractDataSource.cjs");
27
+ const index_js_2 = require("./evm-rpc-services/index.cjs");
28
+ const assets_js_1 = require("./evm-rpc-services/utils/assets.cjs");
29
+ const CONTROLLER_NAME = 'RpcDataSource';
30
+ const DEFAULT_BALANCE_INTERVAL = 30000; // 30 seconds
31
+ const DEFAULT_DETECTION_INTERVAL = 180000; // 3 minutes
32
+ const log = (0, logger_js_1.createModuleLogger)(logger_js_1.projectLogger, CONTROLLER_NAME);
33
+ /**
34
+ * Convert CAIP chain ID or hex chain ID to hex chain ID.
35
+ *
36
+ * @param chainId - CAIP chain ID or hex chain ID.
37
+ * @returns Hex chain ID.
38
+ */
39
+ const caipChainIdToHex = (chainId) => {
40
+ if ((0, utils_1.isStrictHexString)(chainId)) {
41
+ return chainId;
42
+ }
43
+ if ((0, utils_1.isCaipChainId)(chainId)) {
44
+ return (0, controller_utils_1.toHex)((0, utils_1.parseCaipChainId)(chainId).reference);
45
+ }
46
+ throw new Error('caipChainIdToHex - Failed to provide CAIP-2 or Hex chainId');
47
+ };
48
+ exports.caipChainIdToHex = caipChainIdToHex;
49
+ /**
50
+ * Data source for fetching balances via RPC calls.
51
+ *
52
+ * Orchestrates polling through BalanceFetcher and TokenDetector,
53
+ * each of which handle their own polling intervals.
54
+ *
55
+ * Communicates with AssetsController via Messenger:
56
+ *
57
+ * Actions:
58
+ * - RpcDataSource:getActiveChains
59
+ * - RpcDataSource:fetch
60
+ * - RpcDataSource:subscribe
61
+ * - RpcDataSource:unsubscribe
62
+ *
63
+ * Events:
64
+ * - RpcDataSource:activeChainsUpdated
65
+ * - RpcDataSource:assetsUpdated
66
+ */
67
+ class RpcDataSource extends AbstractDataSource_js_1.AbstractDataSource {
68
+ constructor(options) {
69
+ super(CONTROLLER_NAME, { activeChains: [] });
70
+ _RpcDataSource_instances.add(this);
71
+ _RpcDataSource_messenger.set(this, void 0);
72
+ _RpcDataSource_onActiveChainsUpdated.set(this, void 0);
73
+ _RpcDataSource_getNativeAssetForChain.set(this, void 0);
74
+ _RpcDataSource_timeout.set(this, void 0);
75
+ _RpcDataSource_tokenDetectionEnabled.set(this, void 0);
76
+ _RpcDataSource_useExternalService.set(this, void 0);
77
+ _RpcDataSource_isOnboarded.set(this, void 0);
78
+ /** Currently active chains */
79
+ _RpcDataSource_activeChains.set(this, []);
80
+ /** Network status for each active chain */
81
+ _RpcDataSource_chainStatuses.set(this, {});
82
+ /** Cache of Web3Provider instances by chainId */
83
+ _RpcDataSource_providerCache.set(this, new Map());
84
+ /** Active subscriptions by ID */
85
+ _RpcDataSource_activeSubscriptions.set(this, new Map());
86
+ _RpcDataSource_unsubscribeTransactionConfirmed.set(this, undefined);
87
+ // Rpc-datasource components
88
+ _RpcDataSource_multicallClient.set(this, void 0);
89
+ _RpcDataSource_balanceFetcher.set(this, void 0);
90
+ _RpcDataSource_tokenDetector.set(this, void 0);
91
+ _RpcDataSource_getAssetType.set(this, void 0);
92
+ __classPrivateFieldSet(this, _RpcDataSource_messenger, options.messenger, "f");
93
+ __classPrivateFieldSet(this, _RpcDataSource_onActiveChainsUpdated, options.onActiveChainsUpdated, "f");
94
+ __classPrivateFieldSet(this, _RpcDataSource_getNativeAssetForChain, options.getNativeAssetForChain, "f");
95
+ __classPrivateFieldSet(this, _RpcDataSource_getAssetType, options.getAssetType, "f");
96
+ __classPrivateFieldSet(this, _RpcDataSource_timeout, options.timeout ?? 10000, "f");
97
+ __classPrivateFieldSet(this, _RpcDataSource_tokenDetectionEnabled, options.tokenDetectionEnabled ?? (() => true), "f");
98
+ __classPrivateFieldSet(this, _RpcDataSource_useExternalService, options.useExternalService ?? (() => true), "f");
99
+ __classPrivateFieldSet(this, _RpcDataSource_isOnboarded, options.isOnboarded ?? (() => true), "f");
100
+ const balanceInterval = options.balanceInterval ?? DEFAULT_BALANCE_INTERVAL;
101
+ const detectionInterval = options.detectionInterval ?? DEFAULT_DETECTION_INTERVAL;
102
+ log('Initializing RpcDataSource', {
103
+ timeout: __classPrivateFieldGet(this, _RpcDataSource_timeout, "f"),
104
+ balanceInterval,
105
+ detectionInterval,
106
+ tokenDetectionEnabled: __classPrivateFieldGet(this, _RpcDataSource_tokenDetectionEnabled, "f").call(this),
107
+ useExternalService: __classPrivateFieldGet(this, _RpcDataSource_useExternalService, "f").call(this),
108
+ });
109
+ // Initialize MulticallClient with a provider getter
110
+ __classPrivateFieldSet(this, _RpcDataSource_multicallClient, new index_js_2.MulticallClient({
111
+ getProvider: (hexChainId) => {
112
+ return __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_getMulticallProvider).call(this, hexChainId);
113
+ },
114
+ getMulticall3AddressForChain: (hexChainId) =>
115
+ // The messenger is not being called from a constructor, so this is safe.
116
+ // eslint-disable-next-line no-restricted-syntax
117
+ __classPrivateFieldGet(this, _RpcDataSource_messenger, "f").call('ConfigRegistryController:getNetworkConfigByCaip2ChainId', (0, utils_1.toCaipChainId)(utils_1.KnownCaipNamespace.Eip155, (0, utils_1.hexToNumber)(hexChainId).toString()))?.contracts?.multicall3,
118
+ }), "f");
119
+ // Create messenger adapters for BalanceFetcher and TokenDetector
120
+ const balanceFetcherMessenger = {
121
+ call: (_action) => {
122
+ // The messenger is not being called from a constructor, so this is safe.
123
+ // eslint-disable-next-line no-restricted-syntax
124
+ const state = __classPrivateFieldGet(this, _RpcDataSource_messenger, "f").call('AssetsController:getState');
125
+ return {
126
+ assetsBalance: (state.assetsBalance ?? {}),
127
+ customAssets: (state.customAssets ?? {}),
128
+ };
129
+ },
130
+ };
131
+ // Initialize BalanceFetcher with polling interval
132
+ __classPrivateFieldSet(this, _RpcDataSource_balanceFetcher, new index_js_2.BalanceFetcher(__classPrivateFieldGet(this, _RpcDataSource_multicallClient, "f"), balanceFetcherMessenger, {
133
+ pollingInterval: balanceInterval,
134
+ isNativeAsset: (assetId) => {
135
+ const { chainId } = (0, utils_1.parseCaipAssetType)(assetId);
136
+ const nativeId = __classPrivateFieldGet(this, _RpcDataSource_getNativeAssetForChain, "f").call(this, chainId);
137
+ return nativeId?.toLowerCase() === assetId.toLowerCase();
138
+ },
139
+ }), "f");
140
+ // Polling controller awaits this callback; rejections must not become unhandled.
141
+ __classPrivateFieldGet(this, _RpcDataSource_balanceFetcher, "f").setOnBalanceUpdate(async (result) => {
142
+ try {
143
+ await __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_handleBalanceUpdate).call(this, result);
144
+ }
145
+ catch (error) {
146
+ log('Balance update handler failed', { error });
147
+ }
148
+ });
149
+ // Initialize TokenDetector with polling interval. The TokensApiClient is
150
+ // configured with the shared TanStack Query client (when the controller
151
+ // provides one) so concurrent detector polls/accounts/instances share a
152
+ // single in-flight request and cached result per chain.
153
+ const tokensApiClient = new index_js_2.TokensApiClient({
154
+ queryClient: options.queryClient,
155
+ });
156
+ __classPrivateFieldSet(this, _RpcDataSource_tokenDetector, new index_js_2.TokenDetector(__classPrivateFieldGet(this, _RpcDataSource_multicallClient, "f"), tokensApiClient, {
157
+ pollingInterval: detectionInterval,
158
+ tokenDetectionEnabled: __classPrivateFieldGet(this, _RpcDataSource_tokenDetectionEnabled, "f"),
159
+ useExternalService: __classPrivateFieldGet(this, _RpcDataSource_useExternalService, "f"),
160
+ }), "f");
161
+ // Sync throw in the detector would reject the poll tick if uncaught.
162
+ __classPrivateFieldGet(this, _RpcDataSource_tokenDetector, "f").setOnDetectionUpdate((result) => {
163
+ try {
164
+ __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_handleDetectionUpdate).call(this, result);
165
+ }
166
+ catch (error) {
167
+ log('Detection update handler failed', { error });
168
+ }
169
+ });
170
+ __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_subscribeToNetworkController).call(this);
171
+ __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_subscribeToTransactionEvents).call(this);
172
+ __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_initializeFromNetworkController).call(this);
173
+ }
174
+ /**
175
+ * Re-read NetworkController state and refresh Rpc `activeChains` (e.g. when
176
+ * network availability metadata changes after an EVM network switch).
177
+ */
178
+ refreshActiveChainsFromNetworkState() {
179
+ __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_initializeFromNetworkController).call(this);
180
+ }
181
+ /**
182
+ * Get the data source name.
183
+ *
184
+ * @returns The name of this data source.
185
+ */
186
+ /**
187
+ * Get the status of all configured chains.
188
+ *
189
+ * @returns Record of chain statuses keyed by chain ID.
190
+ */
191
+ getChainStatuses() {
192
+ return { ...__classPrivateFieldGet(this, _RpcDataSource_chainStatuses, "f") };
193
+ }
194
+ /**
195
+ * Get the status of a specific chain.
196
+ *
197
+ * @param chainId - The chain ID to get status for.
198
+ * @returns The chain status or undefined if not found.
199
+ */
200
+ getChainStatus(chainId) {
201
+ return __classPrivateFieldGet(this, _RpcDataSource_chainStatuses, "f")[chainId];
202
+ }
203
+ /**
204
+ * Set the balance polling interval.
205
+ *
206
+ * @param interval - The polling interval in milliseconds.
207
+ */
208
+ setBalancePollingInterval(interval) {
209
+ log('Setting balance polling interval', { interval });
210
+ __classPrivateFieldGet(this, _RpcDataSource_balanceFetcher, "f").setIntervalLength(interval);
211
+ }
212
+ /**
213
+ * Get the current balance polling interval.
214
+ *
215
+ * @returns The polling interval in milliseconds, or undefined if not set.
216
+ */
217
+ getBalancePollingInterval() {
218
+ return __classPrivateFieldGet(this, _RpcDataSource_balanceFetcher, "f").getIntervalLength();
219
+ }
220
+ /**
221
+ * Set the token detection polling interval.
222
+ *
223
+ * @param interval - The polling interval in milliseconds.
224
+ */
225
+ setDetectionPollingInterval(interval) {
226
+ log('Setting detection polling interval', { interval });
227
+ __classPrivateFieldGet(this, _RpcDataSource_tokenDetector, "f").setIntervalLength(interval);
228
+ }
229
+ /**
230
+ * Get the current token detection polling interval.
231
+ *
232
+ * @returns The polling interval in milliseconds, or undefined if not set.
233
+ */
234
+ getDetectionPollingInterval() {
235
+ return __classPrivateFieldGet(this, _RpcDataSource_tokenDetector, "f").getIntervalLength();
236
+ }
237
+ async fetch(request) {
238
+ if (!__classPrivateFieldGet(this, _RpcDataSource_isOnboarded, "f").call(this)) {
239
+ log('Skipping fetch - onboarding not complete');
240
+ return {};
241
+ }
242
+ const response = {};
243
+ const chainsToFetch = request.chainIds.filter((chainId) => __classPrivateFieldGet(this, _RpcDataSource_activeChains, "f").includes(chainId));
244
+ log('Fetch requested', {
245
+ accounts: request.accountsWithSupportedChains.map((a) => a.account.id),
246
+ requestedChains: request.chainIds,
247
+ chainsToFetch,
248
+ });
249
+ if (chainsToFetch.length === 0) {
250
+ log('No active chains to fetch');
251
+ return response;
252
+ }
253
+ const assetsBalance = {};
254
+ const assetsInfo = {};
255
+ const failedChains = [];
256
+ // Fetch balances for each account and its supported chains (pre-computed in request)
257
+ for (const { account, supportedChains, } of request.accountsWithSupportedChains) {
258
+ const chainsForAccount = chainsToFetch.filter((chain) => supportedChains.includes(chain));
259
+ if (chainsForAccount.length === 0) {
260
+ continue;
261
+ }
262
+ const { address, id: accountId } = account;
263
+ for (const chainId of chainsForAccount) {
264
+ const hexChainId = (0, exports.caipChainIdToHex)(chainId);
265
+ const nativeAssetId = __classPrivateFieldGet(this, _RpcDataSource_getNativeAssetForChain, "f").call(this, chainId);
266
+ const shouldSkipNative = (0, assets_js_1.shouldSkipNativeForCaipChainId)(chainId);
267
+ const assetsToFetch = [];
268
+ if (!shouldSkipNative) {
269
+ // Build a single AssetFetchEntry[] for native + custom ERC-20s
270
+ assetsToFetch.push({ assetId: nativeAssetId, address: constants_js_1.ZERO_ADDRESS });
271
+ }
272
+ if (request.customAssets) {
273
+ const existingMetadata = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_getExistingAssetsMetadata).call(this);
274
+ for (const assetId of request.customAssets) {
275
+ try {
276
+ const parsed = (0, utils_1.parseCaipAssetType)(assetId);
277
+ const assetChainId = `${parsed.chain.namespace}:${parsed.chain.reference}`;
278
+ if (assetChainId === chainId &&
279
+ __classPrivateFieldGet(this, _RpcDataSource_getAssetType, "f").call(this, assetId) === 'erc20') {
280
+ const tokenAddress = parsed.assetReference.toLowerCase();
281
+ const normalizedId = (0, index_js_1.normalizeAssetId)(assetId);
282
+ const decimals = existingMetadata[normalizedId]?.decimals;
283
+ assetsToFetch.push({
284
+ assetId,
285
+ address: tokenAddress,
286
+ decimals,
287
+ });
288
+ }
289
+ }
290
+ catch {
291
+ // Skip unparseable asset IDs
292
+ }
293
+ }
294
+ }
295
+ try {
296
+ const result = await __classPrivateFieldGet(this, _RpcDataSource_balanceFetcher, "f").fetchBalancesForAssets(hexChainId, accountId, address, assetsToFetch);
297
+ if (!assetsBalance[accountId]) {
298
+ assetsBalance[accountId] = {};
299
+ }
300
+ // Normalize asset IDs from BalanceFetcher (which uses lowercase
301
+ // addresses) to checksummed form so they match assetsInfo state keys.
302
+ const normalizedBalances = result.balances.map((b) => ({
303
+ ...b,
304
+ assetId: (0, index_js_1.normalizeAssetId)(b.assetId),
305
+ }));
306
+ // Collect metadata for all balances
307
+ const balanceMetadata = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_collectMetadataForBalances).call(this, normalizedBalances, chainId);
308
+ Object.assign(assetsInfo, balanceMetadata);
309
+ // Convert balances to human-readable format using decimals from
310
+ // assetsInfo state (which includes pendingMetadata from addCustomAsset).
311
+ // Resolution: state → pipeline metadata → RPC `decimals()`; omit balance if still unknown.
312
+ const existingMetadata = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_getExistingAssetsMetadata).call(this);
313
+ for (const balance of normalizedBalances) {
314
+ const stateMetadata = existingMetadata[balance.assetId];
315
+ const pipelineMetadata = assetsInfo[balance.assetId];
316
+ let decimals = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_pickValidDecimals).call(this, stateMetadata, pipelineMetadata);
317
+ if (decimals === undefined) {
318
+ const parsed = (0, utils_1.parseCaipAssetType)(balance.assetId);
319
+ if (__classPrivateFieldGet(this, _RpcDataSource_getAssetType, "f").call(this, balance.assetId) === 'erc20') {
320
+ decimals = await __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_fetchDecimalsViaRpc).call(this, chainId, parsed.assetReference);
321
+ }
322
+ }
323
+ if (decimals === undefined) {
324
+ continue;
325
+ }
326
+ const humanReadableAmount = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_convertToHumanReadable).call(this, balance.balance, decimals);
327
+ assetsBalance[accountId][balance.assetId] = {
328
+ amount: humanReadableAmount,
329
+ };
330
+ }
331
+ }
332
+ catch (error) {
333
+ log('Failed to fetch balance', { address, chainId, error });
334
+ if (!assetsBalance[accountId]) {
335
+ assetsBalance[accountId] = {};
336
+ }
337
+ if (!shouldSkipNative) {
338
+ assetsBalance[accountId][nativeAssetId] = { amount: '0' };
339
+ }
340
+ // On error, emit a stub only when no valid metadata exists in state
341
+ // yet. Re-emitting existing metadata would overwrite richer entries
342
+ // (e.g. image/description added by AccountsAPI) with a simpler stub.
343
+ const existingNativeMeta = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_getExistingAssetsMetadata).call(this)[nativeAssetId];
344
+ if (!__classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_hasValidDecimals).call(this, existingNativeMeta)) {
345
+ const chainStatus = __classPrivateFieldGet(this, _RpcDataSource_chainStatuses, "f")[chainId];
346
+ if (chainStatus) {
347
+ assetsInfo[nativeAssetId] = {
348
+ type: 'native',
349
+ symbol: chainStatus.nativeCurrency,
350
+ name: chainStatus.nativeCurrency,
351
+ decimals: 18,
352
+ };
353
+ }
354
+ }
355
+ if (!failedChains.includes(chainId)) {
356
+ failedChains.push(chainId);
357
+ }
358
+ }
359
+ }
360
+ }
361
+ if (failedChains.length > 0) {
362
+ log('Fetch PARTIAL - some chains failed', {
363
+ successChains: chainsToFetch.filter((chain) => !failedChains.includes(chain)),
364
+ failedChains,
365
+ });
366
+ response.errors = {};
367
+ for (const chainId of failedChains) {
368
+ response.errors[chainId] = 'RPC fetch failed';
369
+ }
370
+ }
371
+ else {
372
+ log('Fetch SUCCESS', {
373
+ chains: chainsToFetch,
374
+ accountCount: Object.keys(assetsBalance).length,
375
+ });
376
+ }
377
+ response.assetsBalance = assetsBalance;
378
+ // Include metadata for native tokens if we have any
379
+ if (Object.keys(assetsInfo).length > 0) {
380
+ response.assetsInfo = assetsInfo;
381
+ }
382
+ response.updateMode = 'merge';
383
+ return response;
384
+ }
385
+ /**
386
+ * Run token detection for an account on a chain.
387
+ *
388
+ * @param chainId - The chain ID to detect tokens on.
389
+ * @param account - The account to detect tokens for.
390
+ * @returns Promise resolving to a DataResponse with detected assets.
391
+ */
392
+ async detectTokens(chainId, account) {
393
+ if (!__classPrivateFieldGet(this, _RpcDataSource_tokenDetectionEnabled, "f").call(this) || !__classPrivateFieldGet(this, _RpcDataSource_useExternalService, "f").call(this)) {
394
+ return {};
395
+ }
396
+ const hexChainId = (0, exports.caipChainIdToHex)(chainId);
397
+ const { address, id: accountId } = account;
398
+ log('Running token detection', { chainId, accountId });
399
+ try {
400
+ const result = await __classPrivateFieldGet(this, _RpcDataSource_tokenDetector, "f").detectTokens(hexChainId, accountId, address, {
401
+ tokenDetectionEnabled: __classPrivateFieldGet(this, _RpcDataSource_tokenDetectionEnabled, "f").call(this),
402
+ useExternalService: __classPrivateFieldGet(this, _RpcDataSource_useExternalService, "f").call(this),
403
+ });
404
+ if (result.detectedAssets.length === 0) {
405
+ log('No new tokens detected');
406
+ return {};
407
+ }
408
+ log('Detected new tokens', {
409
+ count: result.detectedAssets.length,
410
+ chainId,
411
+ accountId,
412
+ });
413
+ // Convert detected assets to DataResponse format
414
+ const balances = {};
415
+ const assetsInfo = {};
416
+ // Build metadata from detected assets
417
+ for (const asset of result.detectedAssets) {
418
+ if (asset.symbol && asset.decimals !== undefined) {
419
+ assetsInfo[asset.assetId] = {
420
+ type: __classPrivateFieldGet(this, _RpcDataSource_getAssetType, "f").call(this, asset.assetId),
421
+ symbol: asset.symbol,
422
+ name: asset.name ?? asset.symbol,
423
+ decimals: asset.decimals,
424
+ image: asset.image,
425
+ };
426
+ }
427
+ }
428
+ // Add balances for detected tokens (converted to human-readable format)
429
+ for (const balance of result.detectedBalances) {
430
+ const detectedAsset = result.detectedAssets.find((asset) => asset.assetId === balance.assetId);
431
+ if (detectedAsset?.decimals === undefined) {
432
+ continue;
433
+ }
434
+ const humanReadableAmount = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_convertToHumanReadable).call(this, balance.balance, detectedAsset.decimals);
435
+ balances[balance.assetId] = {
436
+ amount: humanReadableAmount,
437
+ };
438
+ }
439
+ const response = {
440
+ detectedAssets: {
441
+ [accountId]: result.detectedAssets.map((asset) => asset.assetId),
442
+ },
443
+ assetsBalance: {
444
+ [accountId]: balances,
445
+ },
446
+ };
447
+ // Include metadata if we have any
448
+ if (Object.keys(assetsInfo).length > 0) {
449
+ response.assetsInfo = assetsInfo;
450
+ }
451
+ return response;
452
+ }
453
+ catch (error) {
454
+ log('Token detection failed', { chainId, accountId, error });
455
+ return {};
456
+ }
457
+ }
458
+ get assetsMiddleware() {
459
+ return async (context, next) => {
460
+ var _a, _b, _c;
461
+ const { request } = context;
462
+ const supportedChains = request.chainIds.filter((chainId) => __classPrivateFieldGet(this, _RpcDataSource_activeChains, "f").includes(chainId));
463
+ if (supportedChains.length === 0) {
464
+ return next(context);
465
+ }
466
+ let successfullyHandledChains = [];
467
+ log('Middleware fetching', {
468
+ chains: supportedChains,
469
+ accounts: request.accountsWithSupportedChains.map((a) => a.account.id),
470
+ });
471
+ const response = await this.fetch({
472
+ ...request,
473
+ chainIds: supportedChains,
474
+ });
475
+ if (response.assetsBalance) {
476
+ (_a = context.response).assetsBalance ?? (_a.assetsBalance = {});
477
+ for (const [accountId, accountBalances] of Object.entries(response.assetsBalance)) {
478
+ (_b = context.response.assetsBalance)[accountId] ?? (_b[accountId] = {});
479
+ context.response.assetsBalance[accountId] = {
480
+ ...context.response.assetsBalance[accountId],
481
+ ...accountBalances,
482
+ };
483
+ }
484
+ }
485
+ if (response.assetsInfo) {
486
+ (_c = context.response).assetsInfo ?? (_c.assetsInfo = {});
487
+ context.response.assetsInfo = {
488
+ ...context.response.assetsInfo,
489
+ ...response.assetsInfo,
490
+ };
491
+ }
492
+ const failedChains = new Set(Object.keys(response.errors ?? {}));
493
+ successfullyHandledChains = supportedChains.filter((chainId) => !failedChains.has(chainId));
494
+ if (successfullyHandledChains.length > 0) {
495
+ const remainingChains = request.chainIds.filter((chainId) => !successfullyHandledChains.includes(chainId));
496
+ return next({
497
+ ...context,
498
+ request: {
499
+ ...request,
500
+ chainIds: remainingChains,
501
+ },
502
+ });
503
+ }
504
+ return next(context);
505
+ };
506
+ }
507
+ /**
508
+ * Subscribe to updates for the given request.
509
+ * Starts polling through BalanceFetcher and TokenDetector.
510
+ *
511
+ * @param subscriptionRequest - The subscription request details.
512
+ */
513
+ async subscribe(subscriptionRequest) {
514
+ if (!__classPrivateFieldGet(this, _RpcDataSource_isOnboarded, "f").call(this)) {
515
+ log('Skipping subscribe - onboarding not complete');
516
+ return;
517
+ }
518
+ const { request, subscriptionId, isUpdate } = subscriptionRequest;
519
+ // Use request.chainIds when activeChains is not yet populated (e.g. before
520
+ // NetworkController state has been applied) so polling can start.
521
+ const chainsToSubscribe = __classPrivateFieldGet(this, _RpcDataSource_activeChains, "f").length > 0
522
+ ? request.chainIds.filter((chainId) => __classPrivateFieldGet(this, _RpcDataSource_activeChains, "f").includes(chainId))
523
+ : request.chainIds;
524
+ log('Subscribe requested', {
525
+ subscriptionId,
526
+ isUpdate,
527
+ accounts: request.accountsWithSupportedChains.map((a) => a.account.id),
528
+ chainsToSubscribe,
529
+ activeChainsFallback: __classPrivateFieldGet(this, _RpcDataSource_activeChains, "f").length === 0,
530
+ });
531
+ if (chainsToSubscribe.length === 0) {
532
+ log('No active chains to subscribe');
533
+ return;
534
+ }
535
+ // Handle subscription update - restart polling for new chains
536
+ if (isUpdate) {
537
+ const existing = __classPrivateFieldGet(this, _RpcDataSource_activeSubscriptions, "f").get(subscriptionId);
538
+ if (existing) {
539
+ log('Updating existing subscription - restarting polling', {
540
+ subscriptionId,
541
+ existingChains: existing.chains,
542
+ newChains: chainsToSubscribe,
543
+ });
544
+ // Don't return early - continue to unsubscribe and restart polling
545
+ }
546
+ }
547
+ // Clean up existing subscription (stops old polling)
548
+ await this.unsubscribe(subscriptionId);
549
+ // Start polling through BalanceFetcher and TokenDetector
550
+ const balancePollingTokens = [];
551
+ const detectionPollingTokens = [];
552
+ for (const { account, supportedChains, } of request.accountsWithSupportedChains) {
553
+ const chainsForAccount = chainsToSubscribe.filter((chain) => supportedChains.includes(chain));
554
+ if (chainsForAccount.length === 0) {
555
+ continue;
556
+ }
557
+ const { address, id: accountId } = account;
558
+ for (const chainId of chainsForAccount) {
559
+ const hexChainId = (0, exports.caipChainIdToHex)(chainId);
560
+ // Start balance polling
561
+ const balanceInput = {
562
+ chainId: hexChainId,
563
+ accountId,
564
+ accountAddress: address,
565
+ ...(request.customAssetsOnly === true
566
+ ? { customAssetsOnly: true }
567
+ : {}),
568
+ };
569
+ const balanceToken = __classPrivateFieldGet(this, _RpcDataSource_balanceFetcher, "f").startPolling(balanceInput);
570
+ balancePollingTokens.push(balanceToken);
571
+ // Token detection is only relevant for "regular" subscriptions —
572
+ // a customAssetsOnly subscription should never run detection.
573
+ if (request.customAssetsOnly !== true &&
574
+ __classPrivateFieldGet(this, _RpcDataSource_tokenDetectionEnabled, "f").call(this) &&
575
+ __classPrivateFieldGet(this, _RpcDataSource_useExternalService, "f").call(this)) {
576
+ const detectionInput = {
577
+ chainId: hexChainId,
578
+ accountId,
579
+ accountAddress: address,
580
+ };
581
+ const detectionToken = __classPrivateFieldGet(this, _RpcDataSource_tokenDetector, "f").startPolling(detectionInput);
582
+ detectionPollingTokens.push(detectionToken);
583
+ }
584
+ }
585
+ }
586
+ // Store subscription data
587
+ const accounts = request.accountsWithSupportedChains.map((entry) => entry.account);
588
+ __classPrivateFieldGet(this, _RpcDataSource_activeSubscriptions, "f").set(subscriptionId, {
589
+ balancePollingTokens,
590
+ detectionPollingTokens,
591
+ chains: chainsToSubscribe,
592
+ accounts,
593
+ onAssetsUpdate: subscriptionRequest.onAssetsUpdate,
594
+ });
595
+ log('Subscription SUCCESS', {
596
+ subscriptionId,
597
+ chains: chainsToSubscribe,
598
+ balancePollingCount: balancePollingTokens.length,
599
+ detectionPollingCount: detectionPollingTokens.length,
600
+ });
601
+ }
602
+ /**
603
+ * Unsubscribe from updates and stop polling.
604
+ *
605
+ * @param subscriptionId - The subscription ID to unsubscribe.
606
+ */
607
+ async unsubscribe(subscriptionId) {
608
+ const subscription = __classPrivateFieldGet(this, _RpcDataSource_activeSubscriptions, "f").get(subscriptionId);
609
+ if (subscription) {
610
+ // Stop balance polling
611
+ for (const token of subscription.balancePollingTokens) {
612
+ __classPrivateFieldGet(this, _RpcDataSource_balanceFetcher, "f").stopPollingByPollingToken(token);
613
+ }
614
+ // Stop detection polling
615
+ for (const token of subscription.detectionPollingTokens) {
616
+ __classPrivateFieldGet(this, _RpcDataSource_tokenDetector, "f").stopPollingByPollingToken(token);
617
+ }
618
+ __classPrivateFieldGet(this, _RpcDataSource_activeSubscriptions, "f").delete(subscriptionId);
619
+ log('Unsubscribed and stopped polling', { subscriptionId });
620
+ }
621
+ }
622
+ /**
623
+ * Destroy the data source and clean up resources.
624
+ */
625
+ destroy() {
626
+ log('Destroying RpcDataSource');
627
+ __classPrivateFieldGet(this, _RpcDataSource_unsubscribeTransactionConfirmed, "f")?.call(this);
628
+ // Stop all polling
629
+ __classPrivateFieldGet(this, _RpcDataSource_balanceFetcher, "f").stopAllPolling();
630
+ __classPrivateFieldGet(this, _RpcDataSource_tokenDetector, "f").stopAllPolling();
631
+ // Clear subscriptions
632
+ __classPrivateFieldGet(this, _RpcDataSource_activeSubscriptions, "f").clear();
633
+ // Clear caches
634
+ __classPrivateFieldGet(this, _RpcDataSource_providerCache, "f").clear();
635
+ }
636
+ }
637
+ exports.RpcDataSource = RpcDataSource;
638
+ _RpcDataSource_messenger = new WeakMap(), _RpcDataSource_onActiveChainsUpdated = new WeakMap(), _RpcDataSource_getNativeAssetForChain = new WeakMap(), _RpcDataSource_timeout = new WeakMap(), _RpcDataSource_tokenDetectionEnabled = new WeakMap(), _RpcDataSource_useExternalService = new WeakMap(), _RpcDataSource_isOnboarded = new WeakMap(), _RpcDataSource_activeChains = new WeakMap(), _RpcDataSource_chainStatuses = new WeakMap(), _RpcDataSource_providerCache = new WeakMap(), _RpcDataSource_activeSubscriptions = new WeakMap(), _RpcDataSource_unsubscribeTransactionConfirmed = new WeakMap(), _RpcDataSource_multicallClient = new WeakMap(), _RpcDataSource_balanceFetcher = new WeakMap(), _RpcDataSource_tokenDetector = new WeakMap(), _RpcDataSource_getAssetType = new WeakMap(), _RpcDataSource_instances = new WeakSet(), _RpcDataSource_convertToHumanReadable = function _RpcDataSource_convertToHumanReadable(rawBalance, decimals) {
639
+ if (!Number.isFinite(decimals) || decimals < 0) {
640
+ log('Invalid decimals — defaulting balance to "0"', {
641
+ rawBalance,
642
+ decimals,
643
+ });
644
+ return '0';
645
+ }
646
+ const rawAmount = new bignumber_js_1.default(rawBalance);
647
+ if (!rawAmount.isFinite()) {
648
+ log('Invalid raw balance — defaulting to "0"', { rawBalance, decimals });
649
+ return '0';
650
+ }
651
+ const divisor = new bignumber_js_1.default(10).pow(decimals);
652
+ return rawAmount.dividedBy(divisor).toFixed();
653
+ }, _RpcDataSource_collectMetadataForBalances = function _RpcDataSource_collectMetadataForBalances(balances, chainId) {
654
+ const assetsInfo = {};
655
+ const existingMetadata = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_getExistingAssetsMetadata).call(this);
656
+ const nativeAssetId = __classPrivateFieldGet(this, _RpcDataSource_getNativeAssetForChain, "f").call(this, chainId);
657
+ for (const balance of balances) {
658
+ const existingMeta = existingMetadata[balance.assetId];
659
+ const isNative = existingMeta?.type === 'native' ||
660
+ balance.assetId.toLowerCase() === nativeAssetId?.toLowerCase() ||
661
+ __classPrivateFieldGet(this, _RpcDataSource_getAssetType, "f").call(this, balance.assetId) === 'native';
662
+ if (isNative && !__classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_hasValidDecimals).call(this, existingMeta)) {
663
+ // Only emit a stub when no valid metadata exists in state yet.
664
+ // Re-emitting existing metadata into the response would overwrite
665
+ // richer entries (e.g. image/description added by AccountsAPI) with
666
+ // a simpler stub on every balance poll cycle.
667
+ const chainStatus = __classPrivateFieldGet(this, _RpcDataSource_chainStatuses, "f")[chainId];
668
+ if (chainStatus) {
669
+ assetsInfo[balance.assetId] = {
670
+ type: 'native',
671
+ symbol: chainStatus.nativeCurrency,
672
+ name: chainStatus.nativeCurrency,
673
+ decimals: 18,
674
+ };
675
+ }
676
+ }
677
+ // For ERC-20 tokens and native tokens with existing valid metadata:
678
+ // do not re-emit — the existing state entry is already correct.
679
+ // Decimals for balance conversion are resolved via stateMetadata in
680
+ // the callers (pickValidDecimals(stateMetadata, pipelineMetadata)).
681
+ }
682
+ return assetsInfo;
683
+ }, _RpcDataSource_hasValidDecimals = function _RpcDataSource_hasValidDecimals(metadata) {
684
+ return Boolean(metadata && Number.isFinite(metadata.decimals) && metadata.decimals >= 0);
685
+ }, _RpcDataSource_pickValidDecimals = function _RpcDataSource_pickValidDecimals(...metadatas) {
686
+ for (const metadata of metadatas) {
687
+ if (__classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_hasValidDecimals).call(this, metadata)) {
688
+ return metadata.decimals;
689
+ }
690
+ }
691
+ return undefined;
692
+ }, _RpcDataSource_handleBalanceUpdate =
693
+ /**
694
+ * Handle balance update from BalanceFetcher.
695
+ *
696
+ * @param result - The balance fetch result.
697
+ */
698
+ async function _RpcDataSource_handleBalanceUpdate(result) {
699
+ const newBalances = {};
700
+ // Convert hex chain ID to CAIP-2 format
701
+ const chainIdDecimal = parseInt(result.chainId, 16);
702
+ const caipChainId = `eip155:${chainIdDecimal}`;
703
+ // Normalize asset IDs from BalanceFetcher (lowercase) to checksummed form
704
+ const normalizedBalances = result.balances.map((b) => ({
705
+ ...b,
706
+ assetId: (0, index_js_1.normalizeAssetId)(b.assetId),
707
+ }));
708
+ // Collect metadata for all balances
709
+ const assetsInfo = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_collectMetadataForBalances).call(this, normalizedBalances, caipChainId);
710
+ // Convert balances to human-readable format.
711
+ // Resolution: state metadata → pipeline metadata; skip if decimals unknown.
712
+ const existingMetadata = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_getExistingAssetsMetadata).call(this);
713
+ for (const balance of normalizedBalances) {
714
+ const stateMetadata = existingMetadata[balance.assetId];
715
+ const pipelineMetadata = assetsInfo[balance.assetId];
716
+ const decimals = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_pickValidDecimals).call(this, stateMetadata, pipelineMetadata);
717
+ if (decimals === undefined) {
718
+ continue;
719
+ }
720
+ const humanReadableAmount = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_convertToHumanReadable).call(this, balance.balance, decimals);
721
+ newBalances[balance.assetId] = {
722
+ amount: humanReadableAmount,
723
+ };
724
+ }
725
+ // Only send new data to AssetsController - it handles merging atomically
726
+ // to avoid race conditions when concurrent updates occur for the same account
727
+ const response = {
728
+ assetsBalance: {
729
+ [result.accountId]: newBalances,
730
+ },
731
+ assetsInfo,
732
+ updateMode: 'merge',
733
+ };
734
+ const request = {
735
+ accountsWithSupportedChains: [],
736
+ chainIds: [caipChainId],
737
+ dataTypes: ['balance'],
738
+ };
739
+ log('Balance update response', {
740
+ accountId: result.accountId,
741
+ newBalanceCount: Object.keys(newBalances).length,
742
+ });
743
+ for (const subscription of __classPrivateFieldGet(this, _RpcDataSource_activeSubscriptions, "f").values()) {
744
+ subscription.onAssetsUpdate(response, request)?.catch((error) => {
745
+ log('Failed to update assets', { error });
746
+ });
747
+ }
748
+ }, _RpcDataSource_handleDetectionUpdate = function _RpcDataSource_handleDetectionUpdate(result) {
749
+ log('Detected new tokens', {
750
+ count: result.detectedAssets.length,
751
+ });
752
+ // Build new metadata from detected assets
753
+ const newMetadata = {};
754
+ if (result.detectedAssets.length > 0) {
755
+ for (const asset of result.detectedAssets) {
756
+ // Only include if we have metadata (symbol and decimals at minimum)
757
+ if (asset.symbol && asset.decimals !== undefined) {
758
+ newMetadata[asset.assetId] = {
759
+ type: __classPrivateFieldGet(this, _RpcDataSource_getAssetType, "f").call(this, asset.assetId),
760
+ symbol: asset.symbol,
761
+ name: asset.name ?? asset.symbol,
762
+ decimals: asset.decimals,
763
+ image: asset.image,
764
+ };
765
+ }
766
+ }
767
+ }
768
+ // Build new balances from detected tokens
769
+ const newBalances = {};
770
+ if (result.detectedBalances.length > 0) {
771
+ for (const balance of result.detectedBalances) {
772
+ // Get decimals from the detected asset metadata
773
+ const detectedAsset = result.detectedAssets.find((asset) => asset.assetId === balance.assetId);
774
+ if (detectedAsset?.decimals === undefined) {
775
+ continue;
776
+ }
777
+ const humanReadableAmount = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_convertToHumanReadable).call(this, balance.balance, detectedAsset.decimals);
778
+ newBalances[balance.assetId] = {
779
+ amount: humanReadableAmount,
780
+ };
781
+ }
782
+ }
783
+ // Only send new data to AssetsController - it handles merging atomically
784
+ // to avoid race conditions when concurrent updates occur for the same account
785
+ const response = {
786
+ detectedAssets: {
787
+ [result.accountId]: result.detectedAssets.map((asset) => asset.assetId),
788
+ },
789
+ assetsInfo: newMetadata,
790
+ assetsBalance: {
791
+ [result.accountId]: newBalances,
792
+ },
793
+ updateMode: 'merge',
794
+ };
795
+ const chainIdDecimal = parseInt(result.chainId, 16);
796
+ const caipChainId = `eip155:${chainIdDecimal}`;
797
+ const request = {
798
+ accountsWithSupportedChains: [],
799
+ chainIds: [caipChainId],
800
+ dataTypes: ['balance', 'metadata', 'price'],
801
+ };
802
+ for (const subscription of __classPrivateFieldGet(this, _RpcDataSource_activeSubscriptions, "f").values()) {
803
+ subscription.onAssetsUpdate(response, request)?.catch((error) => {
804
+ log('Failed to update detected assets', { error });
805
+ });
806
+ }
807
+ }, _RpcDataSource_subscribeToNetworkController = function _RpcDataSource_subscribeToNetworkController() {
808
+ __classPrivateFieldGet(this, _RpcDataSource_messenger, "f").subscribe('NetworkController:stateChange', (networkState) => {
809
+ log('NetworkController state changed');
810
+ __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_clearProviderCache).call(this);
811
+ __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_updateFromNetworkState).call(this, networkState);
812
+ });
813
+ }, _RpcDataSource_subscribeToTransactionEvents = function _RpcDataSource_subscribeToTransactionEvents() {
814
+ const unsubConfirmed = __classPrivateFieldGet(this, _RpcDataSource_messenger, "f").subscribe('TransactionController:transactionConfirmed', __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_onTransactionConfirmed).bind(this));
815
+ __classPrivateFieldSet(this, _RpcDataSource_unsubscribeTransactionConfirmed, typeof unsubConfirmed === 'function' ? unsubConfirmed : undefined, "f");
816
+ }, _RpcDataSource_onTransactionConfirmed = function _RpcDataSource_onTransactionConfirmed(payload) {
817
+ const hexChainId = payload?.chainId;
818
+ if (!hexChainId) {
819
+ return;
820
+ }
821
+ const caipChainId = `eip155:${parseInt(hexChainId, 16)}`;
822
+ __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_refreshBalanceForChains).call(this, [caipChainId], 'transactionConfirmed').catch((error) => {
823
+ log('Failed to refresh balance after transaction confirmed', { error });
824
+ });
825
+ }, _RpcDataSource_refreshBalanceForChains =
826
+ /**
827
+ * Fetch balances for the given chains across all active subscriptions and
828
+ * push updates to the controller.
829
+ *
830
+ * @param chainIds - CAIP-2 chain IDs to refresh.
831
+ * @param context - Why the refresh was triggered (for logging).
832
+ */
833
+ async function _RpcDataSource_refreshBalanceForChains(chainIds, context = 'polling') {
834
+ const chainIdsSet = new Set(chainIds);
835
+ const chainsToFetch = chainIds.filter((chainId) => __classPrivateFieldGet(this, _RpcDataSource_activeChains, "f").includes(chainId));
836
+ if (chainsToFetch.length === 0) {
837
+ return;
838
+ }
839
+ let appliedCount = 0;
840
+ for (const subscription of __classPrivateFieldGet(this, _RpcDataSource_activeSubscriptions, "f").values()) {
841
+ const subscriptionChains = subscription.chains.filter((chainId) => chainIdsSet.has(chainId));
842
+ if (subscriptionChains.length === 0) {
843
+ continue;
844
+ }
845
+ const request = {
846
+ accountsWithSupportedChains: subscription.accounts.map((account) => ({
847
+ account,
848
+ supportedChains: subscriptionChains,
849
+ })),
850
+ chainIds: subscriptionChains,
851
+ dataTypes: ['balance'],
852
+ };
853
+ try {
854
+ const response = await this.fetch(request);
855
+ const balanceCount = response.assetsBalance
856
+ ? Object.values(response.assetsBalance).reduce((sum, accountBalances) => sum + Object.keys(accountBalances).length, 0)
857
+ : 0;
858
+ if (balanceCount === 0) {
859
+ continue;
860
+ }
861
+ const responseWithMode = {
862
+ ...response,
863
+ updateMode: response.updateMode ?? 'merge',
864
+ };
865
+ await subscription.onAssetsUpdate(responseWithMode, request);
866
+ appliedCount += 1;
867
+ }
868
+ catch (error) {
869
+ log('Failed to fetch balance after transaction', {
870
+ context,
871
+ chains: subscriptionChains,
872
+ error,
873
+ });
874
+ }
875
+ }
876
+ if (appliedCount === 0 && context === 'transactionConfirmed') {
877
+ log('No RpcDataSource subscription covers chain after transaction', {
878
+ chainsToFetch,
879
+ });
880
+ }
881
+ }, _RpcDataSource_initializeFromNetworkController = function _RpcDataSource_initializeFromNetworkController() {
882
+ log('Initializing from NetworkController');
883
+ try {
884
+ const networkState = __classPrivateFieldGet(this, _RpcDataSource_messenger, "f").call('NetworkController:getState');
885
+ __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_updateFromNetworkState).call(this, networkState);
886
+ }
887
+ catch (error) {
888
+ log('Failed to initialize from NetworkController', error);
889
+ }
890
+ }, _RpcDataSource_updateFromNetworkState = function _RpcDataSource_updateFromNetworkState(networkState) {
891
+ const { networkConfigurationsByChainId, networksMetadata } = networkState;
892
+ const chainStatuses = {};
893
+ const activeChains = [];
894
+ for (const [hexChainId, config] of Object.entries(networkConfigurationsByChainId)) {
895
+ const decimalChainId = parseInt(hexChainId, 16);
896
+ const caip2ChainId = `eip155:${decimalChainId}`;
897
+ const defaultRpcEndpoint = config.rpcEndpoints[config.defaultRpcEndpointIndex];
898
+ if (!defaultRpcEndpoint) {
899
+ continue;
900
+ }
901
+ const { networkClientId } = defaultRpcEndpoint;
902
+ const metadata = networksMetadata[networkClientId];
903
+ const status = metadata?.status ?? 'unknown';
904
+ chainStatuses[caip2ChainId] = {
905
+ chainId: caip2ChainId,
906
+ status,
907
+ name: config.name,
908
+ nativeCurrency: config.nativeCurrency,
909
+ networkClientId,
910
+ };
911
+ if (status === 'available' || status === 'unknown') {
912
+ activeChains.push(caip2ChainId);
913
+ }
914
+ }
915
+ log('Network state updated', {
916
+ configuredChains: Object.keys(chainStatuses),
917
+ activeChains,
918
+ });
919
+ // Check if chains changed
920
+ const previousChains = [...__classPrivateFieldGet(this, _RpcDataSource_activeChains, "f")];
921
+ const previousSet = new Set(previousChains);
922
+ const hasChanges = previousChains.length !== activeChains.length ||
923
+ activeChains.some((chain) => !previousSet.has(chain));
924
+ // Update internal state and data source state before notifying, so that
925
+ // when the controller handles the callback and calls getActiveChainsSync(),
926
+ // it receives the updated chains (same order as AbstractDataSource.updateActiveChains).
927
+ __classPrivateFieldSet(this, _RpcDataSource_chainStatuses, chainStatuses, "f");
928
+ __classPrivateFieldSet(this, _RpcDataSource_activeChains, activeChains, "f");
929
+ this.state.activeChains = activeChains;
930
+ if (hasChanges) {
931
+ __classPrivateFieldGet(this, _RpcDataSource_onActiveChainsUpdated, "f").call(this, this.getName(), activeChains, previousChains);
932
+ }
933
+ }, _RpcDataSource_getProvider = function _RpcDataSource_getProvider(chainId) {
934
+ const cached = __classPrivateFieldGet(this, _RpcDataSource_providerCache, "f").get(chainId);
935
+ if (cached) {
936
+ return cached;
937
+ }
938
+ const chainStatus = __classPrivateFieldGet(this, _RpcDataSource_chainStatuses, "f")[chainId];
939
+ if (!chainStatus) {
940
+ return undefined;
941
+ }
942
+ try {
943
+ const networkClient = __classPrivateFieldGet(this, _RpcDataSource_messenger, "f").call('NetworkController:getNetworkClientById', chainStatus.networkClientId);
944
+ if (!networkClient?.provider) {
945
+ return undefined;
946
+ }
947
+ const web3Provider = new providers_1.Web3Provider(networkClient.provider);
948
+ __classPrivateFieldGet(this, _RpcDataSource_providerCache, "f").set(chainId, web3Provider);
949
+ return web3Provider;
950
+ }
951
+ catch (error) {
952
+ log('Failed to get provider for chain', { chainId, error });
953
+ return undefined;
954
+ }
955
+ }, _RpcDataSource_getMulticallProvider = function _RpcDataSource_getMulticallProvider(hexChainId) {
956
+ const decimalChainId = parseInt(hexChainId, 16);
957
+ const caip2ChainId = `eip155:${decimalChainId}`;
958
+ const web3Provider = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_getProvider).call(this, caip2ChainId);
959
+ if (!web3Provider) {
960
+ throw new Error(`No provider available for chain ${hexChainId}`);
961
+ }
962
+ return {
963
+ call: async (params) => {
964
+ return web3Provider.call({
965
+ to: params.to,
966
+ data: params.data,
967
+ });
968
+ },
969
+ getBalance: async (address) => {
970
+ const balance = await web3Provider.getBalance(address);
971
+ return balance;
972
+ },
973
+ };
974
+ }, _RpcDataSource_clearProviderCache = function _RpcDataSource_clearProviderCache() {
975
+ __classPrivateFieldGet(this, _RpcDataSource_providerCache, "f").clear();
976
+ }, _RpcDataSource_fetchDecimalsViaRpc =
977
+ /**
978
+ * Fetch the `decimals()` value from an ERC20 contract via RPC.
979
+ *
980
+ * @param chainId - CAIP-2 chain ID.
981
+ * @param tokenAddress - The token contract address.
982
+ * @returns The decimals value, or undefined if the call fails.
983
+ */
984
+ async function _RpcDataSource_fetchDecimalsViaRpc(chainId, tokenAddress) {
985
+ try {
986
+ const provider = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_getProvider).call(this, chainId);
987
+ if (!provider) {
988
+ return undefined;
989
+ }
990
+ // ERC20 decimals() selector: keccak256("decimals()") = 0x313ce567
991
+ const result = await provider.call({
992
+ to: tokenAddress,
993
+ data: '0x313ce567',
994
+ });
995
+ if (!result || result === '0x') {
996
+ return undefined;
997
+ }
998
+ const parsed = parseInt(result, 16);
999
+ if (Number.isNaN(parsed) || parsed < 0 || parsed > 255) {
1000
+ return undefined;
1001
+ }
1002
+ return parsed;
1003
+ }
1004
+ catch {
1005
+ return undefined;
1006
+ }
1007
+ }, _RpcDataSource_getExistingAssetsMetadata = function _RpcDataSource_getExistingAssetsMetadata() {
1008
+ try {
1009
+ const state = __classPrivateFieldGet(this, _RpcDataSource_messenger, "f").call('AssetsController:getState');
1010
+ return state.assetsInfo ?? {};
1011
+ }
1012
+ catch (error) {
1013
+ log('Failed to get existing assets metadata', { error });
1014
+ return {};
1015
+ }
1016
+ };
1017
+ function createRpcDataSource(options) {
1018
+ return new RpcDataSource(options);
1019
+ }
1020
+ exports.createRpcDataSource = createRpcDataSource;
1021
+ //# sourceMappingURL=RpcDataSource.cjs.map