@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
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.clearNormalizeAssetIdCacheForTesting = exports.safeNormalizeAssetId = exports.normalizeAssetId = void 0;
7
+ const util_1 = require("@ethereumjs/util");
8
+ const utils_1 = require("@metamask/utils");
9
+ const memoize_1 = __importDefault(require("lodash/memoize.js"));
10
+ /**
11
+ * Normalizes a CAIP-19 asset ID by checksumming EVM addresses.
12
+ * This ensures consistent asset IDs regardless of the data source format.
13
+ *
14
+ * For EVM ERC20 tokens (e.g., "eip155:1/erc20:0x..."), the address is checksummed.
15
+ * All other asset types are returned unchanged.
16
+ *
17
+ * Results are memoized with lodash: repeated calls with the same ID (common after
18
+ * the first pipeline pass, when IDs are already checksummed) skip re-parsing and
19
+ * keccak256 checksum work.
20
+ *
21
+ * @param assetId - The CAIP-19 asset ID to normalize
22
+ * @returns The normalized asset ID with checksummed address (for EVM tokens)
23
+ */
24
+ exports.normalizeAssetId = (0, memoize_1.default)((assetId) => {
25
+ const parsed = (0, utils_1.parseCaipAssetType)(assetId);
26
+ const chainIdParsed = (0, utils_1.parseCaipChainId)(parsed.chainId);
27
+ // Only checksum EVM ERC20 addresses
28
+ if (chainIdParsed.namespace === 'eip155' &&
29
+ parsed.assetNamespace === 'erc20') {
30
+ const checksummedAddress = (0, util_1.toChecksumAddress)(parsed.assetReference);
31
+ return `${parsed.chainId}/${parsed.assetNamespace}:${checksummedAddress}`;
32
+ }
33
+ return assetId;
34
+ });
35
+ /**
36
+ * Normalize a CAIP-19 asset ID, returning the original on failure. Some
37
+ * malformed IDs (e.g. an asset reference that fails address checksumming)
38
+ * make {@link normalizeAssetId} throw; callers processing untrusted input
39
+ * use this so one bad ID cannot abort a whole batch.
40
+ *
41
+ * @param assetId - The CAIP-19 asset ID to normalize.
42
+ * @returns The normalized ID, or the original on failure.
43
+ */
44
+ function safeNormalizeAssetId(assetId) {
45
+ try {
46
+ return (0, exports.normalizeAssetId)(assetId);
47
+ }
48
+ catch {
49
+ return assetId;
50
+ }
51
+ }
52
+ exports.safeNormalizeAssetId = safeNormalizeAssetId;
53
+ /**
54
+ * Clears the {@link normalizeAssetId} memoize cache. Exported for unit tests.
55
+ */
56
+ function clearNormalizeAssetIdCacheForTesting() {
57
+ exports.normalizeAssetId.cache.clear?.();
58
+ }
59
+ exports.clearNormalizeAssetIdCacheForTesting = clearNormalizeAssetIdCacheForTesting;
60
+ //# sourceMappingURL=normalizeAssetId.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeAssetId.cjs","sourceRoot":"","sources":["../../src/utils/normalizeAssetId.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAqD;AACrD,2CAAuE;AAEvE,gEAAqC;AAIrC;;;;;;;;;;;;;GAaG;AACU,QAAA,gBAAgB,GACR,IAAA,iBAAO,EAAC,CAAC,OAAsB,EAAiB,EAAE;IACrE,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,IAAA,wBAAgB,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEvD,oCAAoC;IACpC,IACE,aAAa,CAAC,SAAS,KAAK,QAAQ;QACpC,MAAM,CAAC,cAAc,KAAK,OAAO,EACjC,CAAC;QACD,MAAM,kBAAkB,GAAG,IAAA,wBAAiB,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACpE,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,IAAI,kBAAkB,EAAmB,CAAC;IAC7F,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,SAAgB,oBAAoB,CAAC,OAAsB;IACzD,IAAI,CAAC;QACH,OAAO,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAND,oDAMC;AAED;;GAEG;AACH,SAAgB,oCAAoC;IAClD,wBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;AACnC,CAAC;AAFD,oFAEC","sourcesContent":["import { toChecksumAddress } from '@ethereumjs/util';\nimport { parseCaipAssetType, parseCaipChainId } from '@metamask/utils';\nimport type { MemoizedFunction } from 'lodash';\nimport memoize from 'lodash/memoize';\n\nimport type { Caip19AssetId } from '../types.js';\n\n/**\n * Normalizes a CAIP-19 asset ID by checksumming EVM addresses.\n * This ensures consistent asset IDs regardless of the data source format.\n *\n * For EVM ERC20 tokens (e.g., \"eip155:1/erc20:0x...\"), the address is checksummed.\n * All other asset types are returned unchanged.\n *\n * Results are memoized with lodash: repeated calls with the same ID (common after\n * the first pipeline pass, when IDs are already checksummed) skip re-parsing and\n * keccak256 checksum work.\n *\n * @param assetId - The CAIP-19 asset ID to normalize\n * @returns The normalized asset ID with checksummed address (for EVM tokens)\n */\nexport const normalizeAssetId: ((assetId: Caip19AssetId) => Caip19AssetId) &\n MemoizedFunction = memoize((assetId: Caip19AssetId): Caip19AssetId => {\n const parsed = parseCaipAssetType(assetId);\n const chainIdParsed = parseCaipChainId(parsed.chainId);\n\n // Only checksum EVM ERC20 addresses\n if (\n chainIdParsed.namespace === 'eip155' &&\n parsed.assetNamespace === 'erc20'\n ) {\n const checksummedAddress = toChecksumAddress(parsed.assetReference);\n return `${parsed.chainId}/${parsed.assetNamespace}:${checksummedAddress}` as Caip19AssetId;\n }\n\n return assetId;\n});\n\n/**\n * Normalize a CAIP-19 asset ID, returning the original on failure. Some\n * malformed IDs (e.g. an asset reference that fails address checksumming)\n * make {@link normalizeAssetId} throw; callers processing untrusted input\n * use this so one bad ID cannot abort a whole batch.\n *\n * @param assetId - The CAIP-19 asset ID to normalize.\n * @returns The normalized ID, or the original on failure.\n */\nexport function safeNormalizeAssetId(assetId: Caip19AssetId): Caip19AssetId {\n try {\n return normalizeAssetId(assetId);\n } catch {\n return assetId;\n }\n}\n\n/**\n * Clears the {@link normalizeAssetId} memoize cache. Exported for unit tests.\n */\nexport function clearNormalizeAssetIdCacheForTesting(): void {\n normalizeAssetId.cache.clear?.();\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { MemoizedFunction } from 'lodash';
2
- import type { Caip19AssetId } from '../types.js';
1
+ import type { MemoizedFunction } from "lodash";
2
+ import type { Caip19AssetId } from "../types.cjs";
3
3
  /**
4
4
  * Normalizes a CAIP-19 asset ID by checksumming EVM addresses.
5
5
  * This ensures consistent asset IDs regardless of the data source format.
@@ -29,4 +29,4 @@ export declare function safeNormalizeAssetId(assetId: Caip19AssetId): Caip19Asse
29
29
  * Clears the {@link normalizeAssetId} memoize cache. Exported for unit tests.
30
30
  */
31
31
  export declare function clearNormalizeAssetIdCacheForTesting(): void;
32
- //# sourceMappingURL=normalizeAssetId.d.ts.map
32
+ //# sourceMappingURL=normalizeAssetId.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeAssetId.d.cts","sourceRoot":"","sources":["../../src/utils/normalizeAssetId.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe;AAG/C,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAoB;AAEjD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,aAAa,KAAK,aAAa,CAAC,GACxE,gBAcA,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAM1E;AAED;;GAEG;AACH,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D"}
@@ -0,0 +1,32 @@
1
+ import type { MemoizedFunction } from "lodash";
2
+ import type { Caip19AssetId } from "../types.mjs";
3
+ /**
4
+ * Normalizes a CAIP-19 asset ID by checksumming EVM addresses.
5
+ * This ensures consistent asset IDs regardless of the data source format.
6
+ *
7
+ * For EVM ERC20 tokens (e.g., "eip155:1/erc20:0x..."), the address is checksummed.
8
+ * All other asset types are returned unchanged.
9
+ *
10
+ * Results are memoized with lodash: repeated calls with the same ID (common after
11
+ * the first pipeline pass, when IDs are already checksummed) skip re-parsing and
12
+ * keccak256 checksum work.
13
+ *
14
+ * @param assetId - The CAIP-19 asset ID to normalize
15
+ * @returns The normalized asset ID with checksummed address (for EVM tokens)
16
+ */
17
+ export declare const normalizeAssetId: ((assetId: Caip19AssetId) => Caip19AssetId) & MemoizedFunction;
18
+ /**
19
+ * Normalize a CAIP-19 asset ID, returning the original on failure. Some
20
+ * malformed IDs (e.g. an asset reference that fails address checksumming)
21
+ * make {@link normalizeAssetId} throw; callers processing untrusted input
22
+ * use this so one bad ID cannot abort a whole batch.
23
+ *
24
+ * @param assetId - The CAIP-19 asset ID to normalize.
25
+ * @returns The normalized ID, or the original on failure.
26
+ */
27
+ export declare function safeNormalizeAssetId(assetId: Caip19AssetId): Caip19AssetId;
28
+ /**
29
+ * Clears the {@link normalizeAssetId} memoize cache. Exported for unit tests.
30
+ */
31
+ export declare function clearNormalizeAssetIdCacheForTesting(): void;
32
+ //# sourceMappingURL=normalizeAssetId.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeAssetId.d.mts","sourceRoot":"","sources":["../../src/utils/normalizeAssetId.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe;AAG/C,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAoB;AAEjD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,aAAa,KAAK,aAAa,CAAC,GACxE,gBAcA,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAM1E;AAED;;GAEG;AACH,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D"}
@@ -1,6 +1,13 @@
1
- import { toChecksumAddress } from '@ethereumjs/util';
2
- import { parseCaipAssetType, parseCaipChainId } from '@metamask/utils';
3
- import { memoize } from 'lodash-es';
1
+ function $importDefault(module) {
2
+ if (module?.__esModule) {
3
+ return module.default;
4
+ }
5
+ return module;
6
+ }
7
+ import { toChecksumAddress } from "@ethereumjs/util";
8
+ import { parseCaipAssetType, parseCaipChainId } from "@metamask/utils";
9
+ import $memoize from "lodash/memoize.js";
10
+ const memoize = $importDefault($memoize);
4
11
  /**
5
12
  * Normalizes a CAIP-19 asset ID by checksumming EVM addresses.
6
13
  * This ensures consistent asset IDs regardless of the data source format.
@@ -49,4 +56,4 @@ export function safeNormalizeAssetId(assetId) {
49
56
  export function clearNormalizeAssetIdCacheForTesting() {
50
57
  normalizeAssetId.cache.clear?.();
51
58
  }
52
- //# sourceMappingURL=normalizeAssetId.js.map
59
+ //# sourceMappingURL=normalizeAssetId.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeAssetId.mjs","sourceRoot":"","sources":["../../src/utils/normalizeAssetId.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,yBAAyB;AACrD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,wBAAwB;AAEvE,OAAO,QAAO,0BAAuB;;AAIrC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,gBAAgB,GACR,OAAO,CAAC,CAAC,OAAsB,EAAiB,EAAE;IACrE,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEvD,oCAAoC;IACpC,IACE,aAAa,CAAC,SAAS,KAAK,QAAQ;QACpC,MAAM,CAAC,cAAc,KAAK,OAAO,EACjC,CAAC;QACD,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACpE,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,IAAI,kBAAkB,EAAmB,CAAC;IAC7F,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAsB;IACzD,IAAI,CAAC;QACH,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oCAAoC;IAClD,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;AACnC,CAAC","sourcesContent":["import { toChecksumAddress } from '@ethereumjs/util';\nimport { parseCaipAssetType, parseCaipChainId } from '@metamask/utils';\nimport type { MemoizedFunction } from 'lodash';\nimport memoize from 'lodash/memoize';\n\nimport type { Caip19AssetId } from '../types.js';\n\n/**\n * Normalizes a CAIP-19 asset ID by checksumming EVM addresses.\n * This ensures consistent asset IDs regardless of the data source format.\n *\n * For EVM ERC20 tokens (e.g., \"eip155:1/erc20:0x...\"), the address is checksummed.\n * All other asset types are returned unchanged.\n *\n * Results are memoized with lodash: repeated calls with the same ID (common after\n * the first pipeline pass, when IDs are already checksummed) skip re-parsing and\n * keccak256 checksum work.\n *\n * @param assetId - The CAIP-19 asset ID to normalize\n * @returns The normalized asset ID with checksummed address (for EVM tokens)\n */\nexport const normalizeAssetId: ((assetId: Caip19AssetId) => Caip19AssetId) &\n MemoizedFunction = memoize((assetId: Caip19AssetId): Caip19AssetId => {\n const parsed = parseCaipAssetType(assetId);\n const chainIdParsed = parseCaipChainId(parsed.chainId);\n\n // Only checksum EVM ERC20 addresses\n if (\n chainIdParsed.namespace === 'eip155' &&\n parsed.assetNamespace === 'erc20'\n ) {\n const checksummedAddress = toChecksumAddress(parsed.assetReference);\n return `${parsed.chainId}/${parsed.assetNamespace}:${checksummedAddress}` as Caip19AssetId;\n }\n\n return assetId;\n});\n\n/**\n * Normalize a CAIP-19 asset ID, returning the original on failure. Some\n * malformed IDs (e.g. an asset reference that fails address checksumming)\n * make {@link normalizeAssetId} throw; callers processing untrusted input\n * use this so one bad ID cannot abort a whole batch.\n *\n * @param assetId - The CAIP-19 asset ID to normalize.\n * @returns The normalized ID, or the original on failure.\n */\nexport function safeNormalizeAssetId(assetId: Caip19AssetId): Caip19AssetId {\n try {\n return normalizeAssetId(assetId);\n } catch {\n return assetId;\n }\n}\n\n/**\n * Clears the {@link normalizeAssetId} memoize cache. Exported for unit tests.\n */\nexport function clearNormalizeAssetIdCacheForTesting(): void {\n normalizeAssetId.cache.clear?.();\n}\n"]}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shouldSupportChain = exports.getMigrationStages = exports.isMigrationStageActive = exports.parseSnapsAssetsMigrationStage = exports.isSnapsAssetsMigrationNamespace = exports.getSnapsAssetsMigrationNamespace = exports.SNAPS_ASSETS_MIGRATION_FLAG_KEYS = exports.SNAPS_ASSETS_MIGRATION_NAMESPACES = exports.SnapsAssetsMigrationStage = void 0;
4
+ const utils_1 = require("@metamask/utils");
5
+ /**
6
+ * Per-network rollout stage for the Snaps → AssetsController assets migration.
7
+ *
8
+ * The stage is resolved per CAIP-2 chain id, so each migration network (Solana,
9
+ * Stellar, Tron) advances and rolls back independently. A network with no flag
10
+ * (or an unknown/malformed value) resolves to {@link Off}.
11
+ */
12
+ var SnapsAssetsMigrationStage;
13
+ (function (SnapsAssetsMigrationStage) {
14
+ /**
15
+ * Status quo — the Snap uses its own AssetsService and the AssetsController
16
+ * does NOT ingest for the network.
17
+ */
18
+ SnapsAssetsMigrationStage[SnapsAssetsMigrationStage["Off"] = 0] = "Off";
19
+ /**
20
+ * The AssetsController ingests for the network (Account Activity WebSocket +
21
+ * AccountsAPI) and reads route through it, falling back to the Snap's
22
+ * AssetsService when the controller has no value.
23
+ */
24
+ SnapsAssetsMigrationStage[SnapsAssetsMigrationStage["ReadAssetsControllerWithFallback"] = 1] = "ReadAssetsControllerWithFallback";
25
+ /**
26
+ * Reads come from the AssetsController only (no fallback), but the Snap still
27
+ * tracks/persists in the background so rollback stays safe.
28
+ */
29
+ SnapsAssetsMigrationStage[SnapsAssetsMigrationStage["ReadAssetsControllerWithoutFallback"] = 2] = "ReadAssetsControllerWithoutFallback";
30
+ /**
31
+ * The Snap stops tracking/persisting; the AssetsController is the only source.
32
+ */
33
+ SnapsAssetsMigrationStage[SnapsAssetsMigrationStage["ReadAssetsControllerOnly"] = 3] = "ReadAssetsControllerOnly";
34
+ })(SnapsAssetsMigrationStage || (exports.SnapsAssetsMigrationStage = SnapsAssetsMigrationStage = {}));
35
+ /**
36
+ * CAIP-2 namespaces covered by the Snaps → AssetsController assets migration.
37
+ * Only chains in these namespaces are stage-gated; every other namespace
38
+ * (e.g. `eip155`) keeps its existing, ungated ingestion behavior.
39
+ */
40
+ exports.SNAPS_ASSETS_MIGRATION_NAMESPACES = [
41
+ 'solana',
42
+ 'stellar',
43
+ 'tron',
44
+ ];
45
+ /**
46
+ * Per-network remote feature flag keys (LaunchDarkly) that drive the migration.
47
+ * Each flag's resolved value carries the {@link SnapsAssetsMigrationStage} for
48
+ * that network — see {@link parseSnapsAssetsMigrationStage}.
49
+ */
50
+ exports.SNAPS_ASSETS_MIGRATION_FLAG_KEYS = {
51
+ solana: 'networkAssetsSnapsMigrationSolana',
52
+ stellar: 'networkAssetsSnapsMigrationStellar',
53
+ tron: 'networkAssetsSnapsMigrationTron',
54
+ };
55
+ /**
56
+ * Resolve the CAIP-2 namespace of a chain when it belongs to a migration
57
+ * network (Solana, Stellar, Tron).
58
+ *
59
+ * @param chainId - The CAIP-2 chain id.
60
+ * @returns The migration namespace, or `undefined` for any other chain.
61
+ */
62
+ function getSnapsAssetsMigrationNamespace(chainId) {
63
+ try {
64
+ const { namespace } = (0, utils_1.parseCaipChainId)(chainId);
65
+ return exports.SNAPS_ASSETS_MIGRATION_NAMESPACES.includes(namespace)
66
+ ? namespace
67
+ : undefined;
68
+ }
69
+ catch {
70
+ return undefined;
71
+ }
72
+ }
73
+ exports.getSnapsAssetsMigrationNamespace = getSnapsAssetsMigrationNamespace;
74
+ /**
75
+ * Whether a CAIP-2 chain id belongs to a network covered by the assets
76
+ * migration (Solana, Stellar, Tron).
77
+ *
78
+ * @param chainId - The CAIP-2 chain id to check.
79
+ * @returns True when the chain's namespace is a migration namespace.
80
+ */
81
+ function isSnapsAssetsMigrationNamespace(chainId) {
82
+ return getSnapsAssetsMigrationNamespace(chainId) !== undefined;
83
+ }
84
+ exports.isSnapsAssetsMigrationNamespace = isSnapsAssetsMigrationNamespace;
85
+ /**
86
+ * Coerce a resolved remote feature flag value into a {@link SnapsAssetsMigrationStage}.
87
+ *
88
+ * `RemoteFeatureFlagController` resolves a threshold-scoped flag to a
89
+ * `{ name, value }` variant, so the migration payload
90
+ * `{ featureVersion, minimumSnapVersion, stage }` (and thus `stage`) lives under
91
+ * `value` — the same nesting the sibling `assetsAccountsApiV6` flag uses. The
92
+ * top-level object is used as a fallback so a plain, unscoped `{ stage }`
93
+ * variation still resolves. Anything missing, malformed, or carrying an unknown
94
+ * `stage` resolves to {@link SnapsAssetsMigrationStage.Off}.
95
+ *
96
+ * @param flagValue - The resolved remote feature flag value for a network.
97
+ * @returns The migration stage.
98
+ */
99
+ function parseSnapsAssetsMigrationStage(flagValue) {
100
+ if (typeof flagValue !== 'object' ||
101
+ flagValue === null ||
102
+ Array.isArray(flagValue)) {
103
+ return SnapsAssetsMigrationStage.Off;
104
+ }
105
+ const { value } = flagValue;
106
+ const payload = typeof value === 'object' && value !== null && !Array.isArray(value)
107
+ ? value
108
+ : flagValue;
109
+ const { stage } = payload;
110
+ switch (stage) {
111
+ case SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback:
112
+ case SnapsAssetsMigrationStage.ReadAssetsControllerWithoutFallback:
113
+ case SnapsAssetsMigrationStage.ReadAssetsControllerOnly:
114
+ return stage;
115
+ default:
116
+ return SnapsAssetsMigrationStage.Off;
117
+ }
118
+ }
119
+ exports.parseSnapsAssetsMigrationStage = parseSnapsAssetsMigrationStage;
120
+ /**
121
+ * Whether a network's migration stage is active, i.e. the AssetsController
122
+ * (rather than the Snap) is the source of assets for the network.
123
+ *
124
+ * A stage is active from {@link SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback}
125
+ * onward and inactive at {@link SnapsAssetsMigrationStage.Off}.
126
+ *
127
+ * @param stage - The resolved per-network migration stage.
128
+ * @returns True when the migration is active for the network.
129
+ */
130
+ function isMigrationStageActive(stage) {
131
+ return stage >= SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback;
132
+ }
133
+ exports.isMigrationStageActive = isMigrationStageActive;
134
+ /**
135
+ * Resolve the Snaps → AssetsController migration stage for each migration
136
+ * network (Solana, Stellar, Tron) from the remote feature flags. The order
137
+ * matches {@link SNAPS_ASSETS_MIGRATION_NAMESPACES}, so the result can be joined
138
+ * into a stable primitive signature for change detection.
139
+ *
140
+ * @param remoteFeatureFlags - The remote feature flags state to resolve stages from.
141
+ * @returns An array of each migration namespace's resolved stage.
142
+ */
143
+ function getMigrationStages(remoteFeatureFlags) {
144
+ return exports.SNAPS_ASSETS_MIGRATION_NAMESPACES.map((namespace) => parseSnapsAssetsMigrationStage(remoteFeatureFlags[exports.SNAPS_ASSETS_MIGRATION_FLAG_KEYS[namespace]]));
145
+ }
146
+ exports.getMigrationStages = getMigrationStages;
147
+ /**
148
+ * Whether a supported network should be surfaced as an active chain, gated by
149
+ * the Snaps → AssetsController migration feature flags.
150
+ *
151
+ * Non-migration namespaces (e.g. `eip155`) are always surfaced. Migration
152
+ * networks (Solana, Stellar, Tron) are only surfaced once their per-network
153
+ * stage reaches {@link SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback};
154
+ * they are excluded when the stage is `Off` (also the fail-safe when the flag is
155
+ * missing or the flags are unavailable).
156
+ *
157
+ * @param chainId - The CAIP-2 chain id to check.
158
+ * @param remoteFeatureFlags - The remote feature flags state, or `undefined` when unavailable.
159
+ * @returns `true` when the chain should be surfaced as an active chain.
160
+ */
161
+ function shouldSupportChain(chainId, remoteFeatureFlags) {
162
+ const namespace = getSnapsAssetsMigrationNamespace(chainId);
163
+ // Non-migration namespaces (e.g. `eip155`) are never gated.
164
+ if (!namespace) {
165
+ return true;
166
+ }
167
+ const stage = parseSnapsAssetsMigrationStage(remoteFeatureFlags?.[exports.SNAPS_ASSETS_MIGRATION_FLAG_KEYS[namespace]]);
168
+ return isMigrationStageActive(stage);
169
+ }
170
+ exports.shouldSupportChain = shouldSupportChain;
171
+ //# sourceMappingURL=snaps-assets-migration.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snaps-assets-migration.cjs","sourceRoot":"","sources":["../../src/utils/snaps-assets-migration.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FeatureFlags } from '@metamask/remote-feature-flag-controller';\nimport type { Json } from '@metamask/utils';\nimport { parseCaipChainId } from '@metamask/utils';\n\nimport type { ChainId } from '../types.js';\n\n/**\n * Per-network rollout stage for the Snaps → AssetsController assets migration.\n *\n * The stage is resolved per CAIP-2 chain id, so each migration network (Solana,\n * Stellar, Tron) advances and rolls back independently. A network with no flag\n * (or an unknown/malformed value) resolves to {@link Off}.\n */\nexport enum SnapsAssetsMigrationStage {\n /**\n * Status quo — the Snap uses its own AssetsService and the AssetsController\n * does NOT ingest for the network.\n */\n Off = 0,\n /**\n * The AssetsController ingests for the network (Account Activity WebSocket +\n * AccountsAPI) and reads route through it, falling back to the Snap's\n * AssetsService when the controller has no value.\n */\n ReadAssetsControllerWithFallback = 1,\n /**\n * Reads come from the AssetsController only (no fallback), but the Snap still\n * tracks/persists in the background so rollback stays safe.\n */\n ReadAssetsControllerWithoutFallback = 2,\n /**\n * The Snap stops tracking/persisting; the AssetsController is the only source.\n */\n ReadAssetsControllerOnly = 3,\n}\n\n/**\n * CAIP-2 namespaces covered by the Snaps → AssetsController assets migration.\n * Only chains in these namespaces are stage-gated; every other namespace\n * (e.g. `eip155`) keeps its existing, ungated ingestion behavior.\n */\nexport const SNAPS_ASSETS_MIGRATION_NAMESPACES = [\n 'solana',\n 'stellar',\n 'tron',\n] as const;\n\nexport type SnapsAssetsMigrationNamespace =\n (typeof SNAPS_ASSETS_MIGRATION_NAMESPACES)[number];\n\n/**\n * Per-network remote feature flag keys (LaunchDarkly) that drive the migration.\n * Each flag's resolved value carries the {@link SnapsAssetsMigrationStage} for\n * that network — see {@link parseSnapsAssetsMigrationStage}.\n */\nexport const SNAPS_ASSETS_MIGRATION_FLAG_KEYS: Record<\n SnapsAssetsMigrationNamespace,\n string\n> = {\n solana: 'networkAssetsSnapsMigrationSolana',\n stellar: 'networkAssetsSnapsMigrationStellar',\n tron: 'networkAssetsSnapsMigrationTron',\n};\n\n/**\n * Resolve the CAIP-2 namespace of a chain when it belongs to a migration\n * network (Solana, Stellar, Tron).\n *\n * @param chainId - The CAIP-2 chain id.\n * @returns The migration namespace, or `undefined` for any other chain.\n */\nexport function getSnapsAssetsMigrationNamespace(\n chainId: ChainId,\n): SnapsAssetsMigrationNamespace | undefined {\n try {\n const { namespace } = parseCaipChainId(chainId);\n return (SNAPS_ASSETS_MIGRATION_NAMESPACES as readonly string[]).includes(\n namespace,\n )\n ? (namespace as SnapsAssetsMigrationNamespace)\n : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Whether a CAIP-2 chain id belongs to a network covered by the assets\n * migration (Solana, Stellar, Tron).\n *\n * @param chainId - The CAIP-2 chain id to check.\n * @returns True when the chain's namespace is a migration namespace.\n */\nexport function isSnapsAssetsMigrationNamespace(chainId: ChainId): boolean {\n return getSnapsAssetsMigrationNamespace(chainId) !== undefined;\n}\n\n/**\n * Coerce a resolved remote feature flag value into a {@link SnapsAssetsMigrationStage}.\n *\n * `RemoteFeatureFlagController` resolves a threshold-scoped flag to a\n * `{ name, value }` variant, so the migration payload\n * `{ featureVersion, minimumSnapVersion, stage }` (and thus `stage`) lives under\n * `value` — the same nesting the sibling `assetsAccountsApiV6` flag uses. The\n * top-level object is used as a fallback so a plain, unscoped `{ stage }`\n * variation still resolves. Anything missing, malformed, or carrying an unknown\n * `stage` resolves to {@link SnapsAssetsMigrationStage.Off}.\n *\n * @param flagValue - The resolved remote feature flag value for a network.\n * @returns The migration stage.\n */\nexport function parseSnapsAssetsMigrationStage(\n flagValue: Json | undefined,\n): SnapsAssetsMigrationStage {\n if (\n typeof flagValue !== 'object' ||\n flagValue === null ||\n Array.isArray(flagValue)\n ) {\n return SnapsAssetsMigrationStage.Off;\n }\n\n const { value } = flagValue as { value?: unknown };\n const payload =\n typeof value === 'object' && value !== null && !Array.isArray(value)\n ? value\n : flagValue;\n\n const { stage } = payload as { stage?: unknown };\n switch (stage) {\n case SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback:\n case SnapsAssetsMigrationStage.ReadAssetsControllerWithoutFallback:\n case SnapsAssetsMigrationStage.ReadAssetsControllerOnly:\n return stage;\n default:\n return SnapsAssetsMigrationStage.Off;\n }\n}\n\n/**\n * Whether a network's migration stage is active, i.e. the AssetsController\n * (rather than the Snap) is the source of assets for the network.\n *\n * A stage is active from {@link SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback}\n * onward and inactive at {@link SnapsAssetsMigrationStage.Off}.\n *\n * @param stage - The resolved per-network migration stage.\n * @returns True when the migration is active for the network.\n */\nexport function isMigrationStageActive(\n stage: SnapsAssetsMigrationStage,\n): boolean {\n return stage >= SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback;\n}\n\n/**\n * Resolve the Snaps → AssetsController migration stage for each migration\n * network (Solana, Stellar, Tron) from the remote feature flags. The order\n * matches {@link SNAPS_ASSETS_MIGRATION_NAMESPACES}, so the result can be joined\n * into a stable primitive signature for change detection.\n *\n * @param remoteFeatureFlags - The remote feature flags state to resolve stages from.\n * @returns An array of each migration namespace's resolved stage.\n */\nexport function getMigrationStages(\n remoteFeatureFlags: FeatureFlags,\n): SnapsAssetsMigrationStage[] {\n return SNAPS_ASSETS_MIGRATION_NAMESPACES.map((namespace) =>\n parseSnapsAssetsMigrationStage(\n remoteFeatureFlags[SNAPS_ASSETS_MIGRATION_FLAG_KEYS[namespace]],\n ),\n );\n}\n\n/**\n * Whether a supported network should be surfaced as an active chain, gated by\n * the Snaps → AssetsController migration feature flags.\n *\n * Non-migration namespaces (e.g. `eip155`) are always surfaced. Migration\n * networks (Solana, Stellar, Tron) are only surfaced once their per-network\n * stage reaches {@link SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback};\n * they are excluded when the stage is `Off` (also the fail-safe when the flag is\n * missing or the flags are unavailable).\n *\n * @param chainId - The CAIP-2 chain id to check.\n * @param remoteFeatureFlags - The remote feature flags state, or `undefined` when unavailable.\n * @returns `true` when the chain should be surfaced as an active chain.\n */\nexport function shouldSupportChain(\n chainId: ChainId,\n remoteFeatureFlags: FeatureFlags | undefined,\n): boolean {\n const namespace = getSnapsAssetsMigrationNamespace(chainId);\n // Non-migration namespaces (e.g. `eip155`) are never gated.\n if (!namespace) {\n return true;\n }\n\n const stage = parseSnapsAssetsMigrationStage(\n remoteFeatureFlags?.[SNAPS_ASSETS_MIGRATION_FLAG_KEYS[namespace]],\n );\n return isMigrationStageActive(stage);\n}\n"]}
@@ -1,6 +1,6 @@
1
- import type { FeatureFlags } from '@metamask/remote-feature-flag-controller';
2
- import type { Json } from '@metamask/utils';
3
- import type { ChainId } from '../types.js';
1
+ import type { FeatureFlags } from "@metamask/remote-feature-flag-controller";
2
+ import type { Json } from "@metamask/utils";
3
+ import type { ChainId } from "../types.cjs";
4
4
  /**
5
5
  * Per-network rollout stage for the Snaps → AssetsController assets migration.
6
6
  *
@@ -35,7 +35,7 @@ export declare enum SnapsAssetsMigrationStage {
35
35
  * Only chains in these namespaces are stage-gated; every other namespace
36
36
  * (e.g. `eip155`) keeps its existing, ungated ingestion behavior.
37
37
  */
38
- export declare const SNAPS_ASSETS_MIGRATION_NAMESPACES: readonly ['solana', 'stellar', 'tron'];
38
+ export declare const SNAPS_ASSETS_MIGRATION_NAMESPACES: readonly ["solana", "stellar", "tron"];
39
39
  export type SnapsAssetsMigrationNamespace = (typeof SNAPS_ASSETS_MIGRATION_NAMESPACES)[number];
40
40
  /**
41
41
  * Per-network remote feature flag keys (LaunchDarkly) that drive the migration.
@@ -110,4 +110,4 @@ export declare function getMigrationStages(remoteFeatureFlags: FeatureFlags): Sn
110
110
  * @returns `true` when the chain should be surfaced as an active chain.
111
111
  */
112
112
  export declare function shouldSupportChain(chainId: ChainId, remoteFeatureFlags: FeatureFlags | undefined): boolean;
113
- //# sourceMappingURL=snaps-assets-migration.d.ts.map
113
+ //# sourceMappingURL=snaps-assets-migration.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snaps-assets-migration.d.cts","sourceRoot":"","sources":["../../src/utils/snaps-assets-migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iDAAiD;AAC7E,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAG5C,OAAO,KAAK,EAAE,OAAO,EAAE,qBAAoB;AAE3C;;;;;;GAMG;AACH,oBAAY,yBAAyB;IACnC;;;OAGG;IACH,GAAG,IAAI;IACP;;;;OAIG;IACH,gCAAgC,IAAI;IACpC;;;OAGG;IACH,mCAAmC,IAAI;IACvC;;OAEG;IACH,wBAAwB,IAAI;CAC7B;AAED;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,wCAIpC,CAAC;AAEX,MAAM,MAAM,6BAA6B,GACvC,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,EAAE,MAAM,CACnD,6BAA6B,EAC7B,MAAM,CAKP,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,OAAO,GACf,6BAA6B,GAAG,SAAS,CAW3C;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEzE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,IAAI,GAAG,SAAS,GAC1B,yBAAyB,CAwB3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAET;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,kBAAkB,EAAE,YAAY,GAC/B,yBAAyB,EAAE,CAM7B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,YAAY,GAAG,SAAS,GAC3C,OAAO,CAWT"}
@@ -0,0 +1,113 @@
1
+ import type { FeatureFlags } from "@metamask/remote-feature-flag-controller";
2
+ import type { Json } from "@metamask/utils";
3
+ import type { ChainId } from "../types.mjs";
4
+ /**
5
+ * Per-network rollout stage for the Snaps → AssetsController assets migration.
6
+ *
7
+ * The stage is resolved per CAIP-2 chain id, so each migration network (Solana,
8
+ * Stellar, Tron) advances and rolls back independently. A network with no flag
9
+ * (or an unknown/malformed value) resolves to {@link Off}.
10
+ */
11
+ export declare enum SnapsAssetsMigrationStage {
12
+ /**
13
+ * Status quo — the Snap uses its own AssetsService and the AssetsController
14
+ * does NOT ingest for the network.
15
+ */
16
+ Off = 0,
17
+ /**
18
+ * The AssetsController ingests for the network (Account Activity WebSocket +
19
+ * AccountsAPI) and reads route through it, falling back to the Snap's
20
+ * AssetsService when the controller has no value.
21
+ */
22
+ ReadAssetsControllerWithFallback = 1,
23
+ /**
24
+ * Reads come from the AssetsController only (no fallback), but the Snap still
25
+ * tracks/persists in the background so rollback stays safe.
26
+ */
27
+ ReadAssetsControllerWithoutFallback = 2,
28
+ /**
29
+ * The Snap stops tracking/persisting; the AssetsController is the only source.
30
+ */
31
+ ReadAssetsControllerOnly = 3
32
+ }
33
+ /**
34
+ * CAIP-2 namespaces covered by the Snaps → AssetsController assets migration.
35
+ * Only chains in these namespaces are stage-gated; every other namespace
36
+ * (e.g. `eip155`) keeps its existing, ungated ingestion behavior.
37
+ */
38
+ export declare const SNAPS_ASSETS_MIGRATION_NAMESPACES: readonly ["solana", "stellar", "tron"];
39
+ export type SnapsAssetsMigrationNamespace = (typeof SNAPS_ASSETS_MIGRATION_NAMESPACES)[number];
40
+ /**
41
+ * Per-network remote feature flag keys (LaunchDarkly) that drive the migration.
42
+ * Each flag's resolved value carries the {@link SnapsAssetsMigrationStage} for
43
+ * that network — see {@link parseSnapsAssetsMigrationStage}.
44
+ */
45
+ export declare const SNAPS_ASSETS_MIGRATION_FLAG_KEYS: Record<SnapsAssetsMigrationNamespace, string>;
46
+ /**
47
+ * Resolve the CAIP-2 namespace of a chain when it belongs to a migration
48
+ * network (Solana, Stellar, Tron).
49
+ *
50
+ * @param chainId - The CAIP-2 chain id.
51
+ * @returns The migration namespace, or `undefined` for any other chain.
52
+ */
53
+ export declare function getSnapsAssetsMigrationNamespace(chainId: ChainId): SnapsAssetsMigrationNamespace | undefined;
54
+ /**
55
+ * Whether a CAIP-2 chain id belongs to a network covered by the assets
56
+ * migration (Solana, Stellar, Tron).
57
+ *
58
+ * @param chainId - The CAIP-2 chain id to check.
59
+ * @returns True when the chain's namespace is a migration namespace.
60
+ */
61
+ export declare function isSnapsAssetsMigrationNamespace(chainId: ChainId): boolean;
62
+ /**
63
+ * Coerce a resolved remote feature flag value into a {@link SnapsAssetsMigrationStage}.
64
+ *
65
+ * `RemoteFeatureFlagController` resolves a threshold-scoped flag to a
66
+ * `{ name, value }` variant, so the migration payload
67
+ * `{ featureVersion, minimumSnapVersion, stage }` (and thus `stage`) lives under
68
+ * `value` — the same nesting the sibling `assetsAccountsApiV6` flag uses. The
69
+ * top-level object is used as a fallback so a plain, unscoped `{ stage }`
70
+ * variation still resolves. Anything missing, malformed, or carrying an unknown
71
+ * `stage` resolves to {@link SnapsAssetsMigrationStage.Off}.
72
+ *
73
+ * @param flagValue - The resolved remote feature flag value for a network.
74
+ * @returns The migration stage.
75
+ */
76
+ export declare function parseSnapsAssetsMigrationStage(flagValue: Json | undefined): SnapsAssetsMigrationStage;
77
+ /**
78
+ * Whether a network's migration stage is active, i.e. the AssetsController
79
+ * (rather than the Snap) is the source of assets for the network.
80
+ *
81
+ * A stage is active from {@link SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback}
82
+ * onward and inactive at {@link SnapsAssetsMigrationStage.Off}.
83
+ *
84
+ * @param stage - The resolved per-network migration stage.
85
+ * @returns True when the migration is active for the network.
86
+ */
87
+ export declare function isMigrationStageActive(stage: SnapsAssetsMigrationStage): boolean;
88
+ /**
89
+ * Resolve the Snaps → AssetsController migration stage for each migration
90
+ * network (Solana, Stellar, Tron) from the remote feature flags. The order
91
+ * matches {@link SNAPS_ASSETS_MIGRATION_NAMESPACES}, so the result can be joined
92
+ * into a stable primitive signature for change detection.
93
+ *
94
+ * @param remoteFeatureFlags - The remote feature flags state to resolve stages from.
95
+ * @returns An array of each migration namespace's resolved stage.
96
+ */
97
+ export declare function getMigrationStages(remoteFeatureFlags: FeatureFlags): SnapsAssetsMigrationStage[];
98
+ /**
99
+ * Whether a supported network should be surfaced as an active chain, gated by
100
+ * the Snaps → AssetsController migration feature flags.
101
+ *
102
+ * Non-migration namespaces (e.g. `eip155`) are always surfaced. Migration
103
+ * networks (Solana, Stellar, Tron) are only surfaced once their per-network
104
+ * stage reaches {@link SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback};
105
+ * they are excluded when the stage is `Off` (also the fail-safe when the flag is
106
+ * missing or the flags are unavailable).
107
+ *
108
+ * @param chainId - The CAIP-2 chain id to check.
109
+ * @param remoteFeatureFlags - The remote feature flags state, or `undefined` when unavailable.
110
+ * @returns `true` when the chain should be surfaced as an active chain.
111
+ */
112
+ export declare function shouldSupportChain(chainId: ChainId, remoteFeatureFlags: FeatureFlags | undefined): boolean;
113
+ //# sourceMappingURL=snaps-assets-migration.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snaps-assets-migration.d.mts","sourceRoot":"","sources":["../../src/utils/snaps-assets-migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iDAAiD;AAC7E,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAG5C,OAAO,KAAK,EAAE,OAAO,EAAE,qBAAoB;AAE3C;;;;;;GAMG;AACH,oBAAY,yBAAyB;IACnC;;;OAGG;IACH,GAAG,IAAI;IACP;;;;OAIG;IACH,gCAAgC,IAAI;IACpC;;;OAGG;IACH,mCAAmC,IAAI;IACvC;;OAEG;IACH,wBAAwB,IAAI;CAC7B;AAED;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,wCAIpC,CAAC;AAEX,MAAM,MAAM,6BAA6B,GACvC,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,EAAE,MAAM,CACnD,6BAA6B,EAC7B,MAAM,CAKP,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,OAAO,GACf,6BAA6B,GAAG,SAAS,CAW3C;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEzE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,IAAI,GAAG,SAAS,GAC1B,yBAAyB,CAwB3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAET;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,kBAAkB,EAAE,YAAY,GAC/B,yBAAyB,EAAE,CAM7B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,YAAY,GAAG,SAAS,GAC3C,OAAO,CAWT"}
@@ -1,4 +1,4 @@
1
- import { parseCaipChainId } from '@metamask/utils';
1
+ import { parseCaipChainId } from "@metamask/utils";
2
2
  /**
3
3
  * Per-network rollout stage for the Snaps → AssetsController assets migration.
4
4
  *
@@ -159,4 +159,4 @@ export function shouldSupportChain(chainId, remoteFeatureFlags) {
159
159
  const stage = parseSnapsAssetsMigrationStage(remoteFeatureFlags?.[SNAPS_ASSETS_MIGRATION_FLAG_KEYS[namespace]]);
160
160
  return isMigrationStageActive(stage);
161
161
  }
162
- //# sourceMappingURL=snaps-assets-migration.js.map
162
+ //# sourceMappingURL=snaps-assets-migration.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snaps-assets-migration.mjs","sourceRoot":"","sources":["../../src/utils/snaps-assets-migration.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FeatureFlags } from '@metamask/remote-feature-flag-controller';\nimport type { Json } from '@metamask/utils';\nimport { parseCaipChainId } from '@metamask/utils';\n\nimport type { ChainId } from '../types.js';\n\n/**\n * Per-network rollout stage for the Snaps → AssetsController assets migration.\n *\n * The stage is resolved per CAIP-2 chain id, so each migration network (Solana,\n * Stellar, Tron) advances and rolls back independently. A network with no flag\n * (or an unknown/malformed value) resolves to {@link Off}.\n */\nexport enum SnapsAssetsMigrationStage {\n /**\n * Status quo — the Snap uses its own AssetsService and the AssetsController\n * does NOT ingest for the network.\n */\n Off = 0,\n /**\n * The AssetsController ingests for the network (Account Activity WebSocket +\n * AccountsAPI) and reads route through it, falling back to the Snap's\n * AssetsService when the controller has no value.\n */\n ReadAssetsControllerWithFallback = 1,\n /**\n * Reads come from the AssetsController only (no fallback), but the Snap still\n * tracks/persists in the background so rollback stays safe.\n */\n ReadAssetsControllerWithoutFallback = 2,\n /**\n * The Snap stops tracking/persisting; the AssetsController is the only source.\n */\n ReadAssetsControllerOnly = 3,\n}\n\n/**\n * CAIP-2 namespaces covered by the Snaps → AssetsController assets migration.\n * Only chains in these namespaces are stage-gated; every other namespace\n * (e.g. `eip155`) keeps its existing, ungated ingestion behavior.\n */\nexport const SNAPS_ASSETS_MIGRATION_NAMESPACES = [\n 'solana',\n 'stellar',\n 'tron',\n] as const;\n\nexport type SnapsAssetsMigrationNamespace =\n (typeof SNAPS_ASSETS_MIGRATION_NAMESPACES)[number];\n\n/**\n * Per-network remote feature flag keys (LaunchDarkly) that drive the migration.\n * Each flag's resolved value carries the {@link SnapsAssetsMigrationStage} for\n * that network — see {@link parseSnapsAssetsMigrationStage}.\n */\nexport const SNAPS_ASSETS_MIGRATION_FLAG_KEYS: Record<\n SnapsAssetsMigrationNamespace,\n string\n> = {\n solana: 'networkAssetsSnapsMigrationSolana',\n stellar: 'networkAssetsSnapsMigrationStellar',\n tron: 'networkAssetsSnapsMigrationTron',\n};\n\n/**\n * Resolve the CAIP-2 namespace of a chain when it belongs to a migration\n * network (Solana, Stellar, Tron).\n *\n * @param chainId - The CAIP-2 chain id.\n * @returns The migration namespace, or `undefined` for any other chain.\n */\nexport function getSnapsAssetsMigrationNamespace(\n chainId: ChainId,\n): SnapsAssetsMigrationNamespace | undefined {\n try {\n const { namespace } = parseCaipChainId(chainId);\n return (SNAPS_ASSETS_MIGRATION_NAMESPACES as readonly string[]).includes(\n namespace,\n )\n ? (namespace as SnapsAssetsMigrationNamespace)\n : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Whether a CAIP-2 chain id belongs to a network covered by the assets\n * migration (Solana, Stellar, Tron).\n *\n * @param chainId - The CAIP-2 chain id to check.\n * @returns True when the chain's namespace is a migration namespace.\n */\nexport function isSnapsAssetsMigrationNamespace(chainId: ChainId): boolean {\n return getSnapsAssetsMigrationNamespace(chainId) !== undefined;\n}\n\n/**\n * Coerce a resolved remote feature flag value into a {@link SnapsAssetsMigrationStage}.\n *\n * `RemoteFeatureFlagController` resolves a threshold-scoped flag to a\n * `{ name, value }` variant, so the migration payload\n * `{ featureVersion, minimumSnapVersion, stage }` (and thus `stage`) lives under\n * `value` — the same nesting the sibling `assetsAccountsApiV6` flag uses. The\n * top-level object is used as a fallback so a plain, unscoped `{ stage }`\n * variation still resolves. Anything missing, malformed, or carrying an unknown\n * `stage` resolves to {@link SnapsAssetsMigrationStage.Off}.\n *\n * @param flagValue - The resolved remote feature flag value for a network.\n * @returns The migration stage.\n */\nexport function parseSnapsAssetsMigrationStage(\n flagValue: Json | undefined,\n): SnapsAssetsMigrationStage {\n if (\n typeof flagValue !== 'object' ||\n flagValue === null ||\n Array.isArray(flagValue)\n ) {\n return SnapsAssetsMigrationStage.Off;\n }\n\n const { value } = flagValue as { value?: unknown };\n const payload =\n typeof value === 'object' && value !== null && !Array.isArray(value)\n ? value\n : flagValue;\n\n const { stage } = payload as { stage?: unknown };\n switch (stage) {\n case SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback:\n case SnapsAssetsMigrationStage.ReadAssetsControllerWithoutFallback:\n case SnapsAssetsMigrationStage.ReadAssetsControllerOnly:\n return stage;\n default:\n return SnapsAssetsMigrationStage.Off;\n }\n}\n\n/**\n * Whether a network's migration stage is active, i.e. the AssetsController\n * (rather than the Snap) is the source of assets for the network.\n *\n * A stage is active from {@link SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback}\n * onward and inactive at {@link SnapsAssetsMigrationStage.Off}.\n *\n * @param stage - The resolved per-network migration stage.\n * @returns True when the migration is active for the network.\n */\nexport function isMigrationStageActive(\n stage: SnapsAssetsMigrationStage,\n): boolean {\n return stage >= SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback;\n}\n\n/**\n * Resolve the Snaps → AssetsController migration stage for each migration\n * network (Solana, Stellar, Tron) from the remote feature flags. The order\n * matches {@link SNAPS_ASSETS_MIGRATION_NAMESPACES}, so the result can be joined\n * into a stable primitive signature for change detection.\n *\n * @param remoteFeatureFlags - The remote feature flags state to resolve stages from.\n * @returns An array of each migration namespace's resolved stage.\n */\nexport function getMigrationStages(\n remoteFeatureFlags: FeatureFlags,\n): SnapsAssetsMigrationStage[] {\n return SNAPS_ASSETS_MIGRATION_NAMESPACES.map((namespace) =>\n parseSnapsAssetsMigrationStage(\n remoteFeatureFlags[SNAPS_ASSETS_MIGRATION_FLAG_KEYS[namespace]],\n ),\n );\n}\n\n/**\n * Whether a supported network should be surfaced as an active chain, gated by\n * the Snaps → AssetsController migration feature flags.\n *\n * Non-migration namespaces (e.g. `eip155`) are always surfaced. Migration\n * networks (Solana, Stellar, Tron) are only surfaced once their per-network\n * stage reaches {@link SnapsAssetsMigrationStage.ReadAssetsControllerWithFallback};\n * they are excluded when the stage is `Off` (also the fail-safe when the flag is\n * missing or the flags are unavailable).\n *\n * @param chainId - The CAIP-2 chain id to check.\n * @param remoteFeatureFlags - The remote feature flags state, or `undefined` when unavailable.\n * @returns `true` when the chain should be surfaced as an active chain.\n */\nexport function shouldSupportChain(\n chainId: ChainId,\n remoteFeatureFlags: FeatureFlags | undefined,\n): boolean {\n const namespace = getSnapsAssetsMigrationNamespace(chainId);\n // Non-migration namespaces (e.g. `eip155`) are never gated.\n if (!namespace) {\n return true;\n }\n\n const stage = parseSnapsAssetsMigrationStage(\n remoteFeatureFlags?.[SNAPS_ASSETS_MIGRATION_FLAG_KEYS[namespace]],\n );\n return isMigrationStageActive(stage);\n}\n"]}