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

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 +5 -0
  2. package/dist/{AssetsController-method-action-types.d.mts → AssetsController-method-action-types.d.ts} +2 -2
  3. package/dist/AssetsController-method-action-types.d.ts.map +1 -0
  4. package/dist/{AssetsController-method-action-types.mjs → AssetsController-method-action-types.js} +1 -1
  5. package/dist/AssetsController-method-action-types.js.map +1 -0
  6. package/dist/{AssetsController.d.cts → AssetsController.d.ts} +30 -30
  7. package/dist/AssetsController.d.ts.map +1 -0
  8. package/dist/{AssetsController.mjs → AssetsController.js} +28 -29
  9. package/dist/AssetsController.js.map +1 -0
  10. package/dist/data-sources/{AbstractDataSource.d.mts → AbstractDataSource.d.ts} +2 -2
  11. package/dist/data-sources/AbstractDataSource.d.ts.map +1 -0
  12. package/dist/data-sources/{AbstractDataSource.mjs → AbstractDataSource.js} +1 -1
  13. package/dist/data-sources/AbstractDataSource.js.map +1 -0
  14. package/dist/data-sources/{AccountActivityDataSource.d.cts → AccountActivityDataSource.d.ts} +6 -6
  15. package/dist/data-sources/AccountActivityDataSource.d.ts.map +1 -0
  16. package/dist/data-sources/{AccountActivityDataSource.mjs → AccountActivityDataSource.js} +11 -11
  17. package/dist/data-sources/AccountActivityDataSource.js.map +1 -0
  18. package/dist/data-sources/{AccountsApiDataSource.d.cts → AccountsApiDataSource.d.ts} +7 -7
  19. package/dist/data-sources/AccountsApiDataSource.d.ts.map +1 -0
  20. package/dist/data-sources/{AccountsApiDataSource.mjs → AccountsApiDataSource.js} +7 -8
  21. package/dist/data-sources/AccountsApiDataSource.js.map +1 -0
  22. package/dist/data-sources/{PriceDataSource.d.cts → PriceDataSource.d.ts} +5 -5
  23. package/dist/data-sources/PriceDataSource.d.ts.map +1 -0
  24. package/dist/data-sources/{PriceDataSource.mjs → PriceDataSource.js} +7 -8
  25. package/dist/data-sources/PriceDataSource.js.map +1 -0
  26. package/dist/data-sources/{RpcDataSource.d.cts → RpcDataSource.d.ts} +10 -10
  27. package/dist/data-sources/RpcDataSource.d.ts.map +1 -0
  28. package/dist/data-sources/{RpcDataSource.mjs → RpcDataSource.js} +11 -11
  29. package/dist/data-sources/RpcDataSource.js.map +1 -0
  30. package/dist/data-sources/{SnapDataSource.d.cts → SnapDataSource.d.ts} +8 -8
  31. package/dist/data-sources/SnapDataSource.d.ts.map +1 -0
  32. package/dist/data-sources/{SnapDataSource.mjs → SnapDataSource.js} +6 -6
  33. package/dist/data-sources/SnapDataSource.js.map +1 -0
  34. package/dist/data-sources/{StakedBalanceDataSource.d.cts → StakedBalanceDataSource.d.ts} +5 -5
  35. package/dist/data-sources/StakedBalanceDataSource.d.ts.map +1 -0
  36. package/dist/data-sources/{StakedBalanceDataSource.mjs → StakedBalanceDataSource.js} +7 -7
  37. package/dist/data-sources/StakedBalanceDataSource.js.map +1 -0
  38. package/dist/data-sources/{TokenDataSource.d.cts → TokenDataSource.d.ts} +5 -5
  39. package/dist/data-sources/TokenDataSource.d.ts.map +1 -0
  40. package/dist/data-sources/{TokenDataSource.mjs → TokenDataSource.js} +7 -8
  41. package/dist/data-sources/TokenDataSource.js.map +1 -0
  42. package/dist/data-sources/evm-rpc-services/clients/{MulticallClient.d.cts → MulticallClient.d.ts} +3 -3
  43. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.ts.map +1 -0
  44. package/dist/data-sources/evm-rpc-services/clients/{MulticallClient.mjs → MulticallClient.js} +5 -5
  45. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.js.map +1 -0
  46. package/dist/data-sources/evm-rpc-services/clients/{TokensApiClient.d.cts → TokensApiClient.d.ts} +2 -2
  47. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.ts.map +1 -0
  48. package/dist/data-sources/evm-rpc-services/clients/{TokensApiClient.mjs → TokensApiClient.js} +2 -2
  49. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.js.map +1 -0
  50. package/dist/data-sources/evm-rpc-services/clients/index.d.ts +4 -0
  51. package/dist/data-sources/evm-rpc-services/clients/index.d.ts.map +1 -0
  52. package/dist/data-sources/evm-rpc-services/clients/index.js +3 -0
  53. package/dist/data-sources/evm-rpc-services/clients/index.js.map +1 -0
  54. package/dist/data-sources/evm-rpc-services/{index.d.cts → index.d.ts} +5 -5
  55. package/dist/data-sources/evm-rpc-services/index.d.ts.map +1 -0
  56. package/dist/data-sources/evm-rpc-services/index.js +4 -0
  57. package/dist/data-sources/evm-rpc-services/index.js.map +1 -0
  58. package/dist/data-sources/evm-rpc-services/services/{BalanceFetcher.d.cts → BalanceFetcher.d.ts} +11 -11
  59. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.ts.map +1 -0
  60. package/dist/data-sources/evm-rpc-services/services/{BalanceFetcher.mjs → BalanceFetcher.js} +5 -5
  61. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.js.map +1 -0
  62. package/dist/data-sources/evm-rpc-services/services/{StakedBalanceFetcher.d.mts → StakedBalanceFetcher.d.ts} +13 -14
  63. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.ts.map +1 -0
  64. package/dist/data-sources/evm-rpc-services/services/{StakedBalanceFetcher.mjs → StakedBalanceFetcher.js} +5 -6
  65. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.js.map +1 -0
  66. package/dist/data-sources/evm-rpc-services/services/{TokenDetector.d.cts → TokenDetector.d.ts} +12 -12
  67. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.ts.map +1 -0
  68. package/dist/data-sources/evm-rpc-services/services/{TokenDetector.mjs → TokenDetector.js} +4 -4
  69. package/dist/data-sources/evm-rpc-services/services/TokenDetector.js.map +1 -0
  70. package/dist/data-sources/evm-rpc-services/services/{index.d.cts → index.d.ts} +4 -4
  71. package/dist/data-sources/evm-rpc-services/services/index.d.ts.map +1 -0
  72. package/dist/data-sources/evm-rpc-services/services/index.js +4 -0
  73. package/dist/data-sources/evm-rpc-services/services/index.js.map +1 -0
  74. package/dist/data-sources/evm-rpc-services/types/{assets.d.cts → assets.d.ts} +3 -3
  75. package/dist/data-sources/evm-rpc-services/types/assets.d.ts.map +1 -0
  76. package/dist/data-sources/evm-rpc-services/types/assets.js +2 -0
  77. package/dist/data-sources/evm-rpc-services/types/assets.js.map +1 -0
  78. package/dist/data-sources/evm-rpc-services/types/{config.d.cts → config.d.ts} +2 -2
  79. package/dist/data-sources/evm-rpc-services/types/config.d.ts.map +1 -0
  80. package/dist/data-sources/evm-rpc-services/types/config.js +2 -0
  81. package/dist/data-sources/evm-rpc-services/types/config.js.map +1 -0
  82. package/dist/data-sources/evm-rpc-services/types/{core.d.cts → core.d.ts} +2 -2
  83. package/dist/data-sources/evm-rpc-services/types/core.d.ts.map +1 -0
  84. package/dist/data-sources/evm-rpc-services/types/core.js +2 -0
  85. package/dist/data-sources/evm-rpc-services/types/core.js.map +1 -0
  86. package/dist/data-sources/evm-rpc-services/types/index.d.ts +7 -0
  87. package/dist/data-sources/evm-rpc-services/types/index.d.ts.map +1 -0
  88. package/dist/data-sources/evm-rpc-services/types/index.js +2 -0
  89. package/dist/data-sources/evm-rpc-services/types/index.js.map +1 -0
  90. package/dist/data-sources/evm-rpc-services/types/{multicall.d.cts → multicall.d.ts} +2 -2
  91. package/dist/data-sources/evm-rpc-services/types/multicall.d.ts.map +1 -0
  92. package/dist/data-sources/evm-rpc-services/types/multicall.js +2 -0
  93. package/dist/data-sources/evm-rpc-services/types/multicall.js.map +1 -0
  94. package/dist/data-sources/evm-rpc-services/types/{services.d.cts → services.d.ts} +3 -3
  95. package/dist/data-sources/evm-rpc-services/types/services.d.ts.map +1 -0
  96. package/dist/data-sources/evm-rpc-services/types/services.js +2 -0
  97. package/dist/data-sources/evm-rpc-services/types/services.js.map +1 -0
  98. package/dist/data-sources/evm-rpc-services/types/{state.d.cts → state.d.ts} +2 -2
  99. package/dist/data-sources/evm-rpc-services/types/state.d.ts.map +1 -0
  100. package/dist/data-sources/evm-rpc-services/types/state.js +2 -0
  101. package/dist/data-sources/evm-rpc-services/types/state.js.map +1 -0
  102. package/dist/data-sources/evm-rpc-services/utils/{assets.d.cts → assets.d.ts} +2 -2
  103. package/dist/data-sources/evm-rpc-services/utils/assets.d.ts.map +1 -0
  104. package/dist/data-sources/evm-rpc-services/utils/{assets.mjs → assets.js} +2 -2
  105. package/dist/data-sources/evm-rpc-services/utils/assets.js.map +1 -0
  106. package/dist/data-sources/evm-rpc-services/utils/{batch.d.mts → batch.d.ts} +1 -1
  107. package/dist/data-sources/evm-rpc-services/utils/batch.d.ts.map +1 -0
  108. package/dist/data-sources/evm-rpc-services/utils/{batch.mjs → batch.js} +1 -1
  109. package/dist/data-sources/evm-rpc-services/utils/batch.js.map +1 -0
  110. package/dist/data-sources/evm-rpc-services/utils/index.d.ts +4 -0
  111. package/dist/data-sources/evm-rpc-services/utils/index.d.ts.map +1 -0
  112. package/dist/data-sources/evm-rpc-services/utils/index.js +4 -0
  113. package/dist/data-sources/evm-rpc-services/utils/index.js.map +1 -0
  114. package/dist/data-sources/evm-rpc-services/utils/{parsing.d.mts → parsing.d.ts} +3 -3
  115. package/dist/data-sources/evm-rpc-services/utils/parsing.d.ts.map +1 -0
  116. package/dist/data-sources/evm-rpc-services/utils/{parsing.mjs → parsing.js} +3 -3
  117. package/dist/data-sources/evm-rpc-services/utils/parsing.js.map +1 -0
  118. package/dist/data-sources/evm-rpc-services/utils/{staking-contracts.d.cts → staking-contracts.d.ts} +1 -1
  119. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.ts.map +1 -0
  120. package/dist/data-sources/evm-rpc-services/utils/{staking-contracts.mjs → staking-contracts.js} +3 -3
  121. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.js.map +1 -0
  122. package/dist/data-sources/{index.d.cts → index.d.ts} +9 -9
  123. package/dist/data-sources/index.d.ts.map +1 -0
  124. package/dist/data-sources/index.js +14 -0
  125. package/dist/data-sources/index.js.map +1 -0
  126. package/dist/{defaults.d.mts → defaults.d.ts} +2 -2
  127. package/dist/defaults.d.ts.map +1 -0
  128. package/dist/{defaults.mjs → defaults.js} +1 -1
  129. package/dist/defaults.js.map +1 -0
  130. package/dist/{errors.d.mts → errors.d.ts} +1 -1
  131. package/dist/errors.d.ts.map +1 -0
  132. package/dist/{errors.mjs → errors.js} +1 -1
  133. package/dist/errors.js.map +1 -0
  134. package/dist/{index.d.mts → index.d.ts} +26 -26
  135. package/dist/index.d.ts.map +1 -0
  136. package/dist/{index.mjs → index.js} +13 -13
  137. package/dist/index.js.map +1 -0
  138. package/dist/logger.d.ts +4 -0
  139. package/dist/logger.d.ts.map +1 -0
  140. package/dist/logger.js +4 -0
  141. package/dist/logger.js.map +1 -0
  142. package/dist/middlewares/{CustomAssetGraduationMiddleware.d.cts → CustomAssetGraduationMiddleware.d.ts} +2 -2
  143. package/dist/middlewares/CustomAssetGraduationMiddleware.d.ts.map +1 -0
  144. package/dist/middlewares/{CustomAssetGraduationMiddleware.mjs → CustomAssetGraduationMiddleware.js} +5 -5
  145. package/dist/middlewares/CustomAssetGraduationMiddleware.js.map +1 -0
  146. package/dist/middlewares/{DetectionMiddleware.d.cts → DetectionMiddleware.d.ts} +2 -2
  147. package/dist/middlewares/DetectionMiddleware.d.ts.map +1 -0
  148. package/dist/middlewares/{DetectionMiddleware.mjs → DetectionMiddleware.js} +4 -4
  149. package/dist/middlewares/DetectionMiddleware.js.map +1 -0
  150. package/dist/middlewares/{ParallelMiddleware.d.cts → ParallelMiddleware.d.ts} +2 -2
  151. package/dist/middlewares/ParallelMiddleware.d.ts.map +1 -0
  152. package/dist/middlewares/{ParallelMiddleware.mjs → ParallelMiddleware.js} +2 -9
  153. package/dist/middlewares/{ParallelMiddleware.mjs.map → ParallelMiddleware.js.map} +1 -1
  154. package/dist/middlewares/{RpcFallbackMiddleware.d.cts → RpcFallbackMiddleware.d.ts} +2 -2
  155. package/dist/middlewares/RpcFallbackMiddleware.d.ts.map +1 -0
  156. package/dist/middlewares/{RpcFallbackMiddleware.mjs → RpcFallbackMiddleware.js} +4 -4
  157. package/dist/middlewares/RpcFallbackMiddleware.js.map +1 -0
  158. package/dist/middlewares/index.d.ts +9 -0
  159. package/dist/middlewares/index.d.ts.map +1 -0
  160. package/dist/middlewares/index.js +5 -0
  161. package/dist/middlewares/index.js.map +1 -0
  162. package/dist/migrations/{healAssetsInfoMetadata.d.cts → healAssetsInfoMetadata.d.ts} +4 -4
  163. package/dist/migrations/healAssetsInfoMetadata.d.ts.map +1 -0
  164. package/dist/migrations/{healAssetsInfoMetadata.mjs → healAssetsInfoMetadata.js} +4 -5
  165. package/dist/migrations/healAssetsInfoMetadata.js.map +1 -0
  166. package/dist/selectors/{balance.d.cts → balance.d.ts} +6 -6
  167. package/dist/selectors/balance.d.ts.map +1 -0
  168. package/dist/selectors/{balance.mjs → balance.js} +5 -5
  169. package/dist/selectors/balance.js.map +1 -0
  170. package/dist/{types.d.mts → types.d.ts} +4 -4
  171. package/dist/types.d.ts.map +1 -0
  172. package/dist/{types.mjs → types.js} +1 -1
  173. package/dist/types.js.map +1 -0
  174. package/dist/utils/constants.d.ts +2 -0
  175. package/dist/utils/constants.d.ts.map +1 -0
  176. package/dist/utils/{constants.mjs → constants.js} +1 -1
  177. package/dist/utils/constants.js.map +1 -0
  178. package/dist/utils/{customAssetsRpcSupplement.d.mts → customAssetsRpcSupplement.d.ts} +2 -2
  179. package/dist/utils/customAssetsRpcSupplement.d.ts.map +1 -0
  180. package/dist/utils/{customAssetsRpcSupplement.mjs → customAssetsRpcSupplement.js} +2 -2
  181. package/dist/utils/customAssetsRpcSupplement.js.map +1 -0
  182. package/dist/utils/{dedupingBatchFetcher.d.cts → dedupingBatchFetcher.d.ts} +1 -1
  183. package/dist/utils/dedupingBatchFetcher.d.ts.map +1 -0
  184. package/dist/utils/{dedupingBatchFetcher.mjs → dedupingBatchFetcher.js} +1 -1
  185. package/dist/utils/dedupingBatchFetcher.js.map +1 -0
  186. package/dist/utils/{fetchWithTimeout.d.mts → fetchWithTimeout.d.ts} +1 -1
  187. package/dist/utils/fetchWithTimeout.d.ts.map +1 -0
  188. package/dist/utils/{fetchWithTimeout.mjs → fetchWithTimeout.js} +1 -1
  189. package/dist/utils/fetchWithTimeout.js.map +1 -0
  190. package/dist/utils/{formatExchangeRatesForBridge.d.mts → formatExchangeRatesForBridge.d.ts} +3 -3
  191. package/dist/utils/formatExchangeRatesForBridge.d.ts.map +1 -0
  192. package/dist/utils/{formatExchangeRatesForBridge.mjs → formatExchangeRatesForBridge.js} +6 -7
  193. package/dist/utils/formatExchangeRatesForBridge.js.map +1 -0
  194. package/dist/utils/{formatStateForTransactionPay.d.cts → formatStateForTransactionPay.d.ts} +3 -3
  195. package/dist/utils/formatStateForTransactionPay.d.ts.map +1 -0
  196. package/dist/utils/{formatStateForTransactionPay.mjs → formatStateForTransactionPay.js} +7 -8
  197. package/dist/utils/formatStateForTransactionPay.js.map +1 -0
  198. package/dist/utils/index.d.ts +9 -0
  199. package/dist/utils/index.d.ts.map +1 -0
  200. package/dist/utils/index.js +7 -0
  201. package/dist/utils/index.js.map +1 -0
  202. package/dist/utils/{native-assets.d.cts → native-assets.d.ts} +2 -2
  203. package/dist/utils/native-assets.d.ts.map +1 -0
  204. package/dist/utils/{native-assets.mjs → native-assets.js} +5 -5
  205. package/dist/utils/native-assets.js.map +1 -0
  206. package/dist/utils/{normalizeAmountString.d.mts → normalizeAmountString.d.ts} +1 -1
  207. package/dist/utils/normalizeAmountString.d.ts.map +1 -0
  208. package/dist/utils/{normalizeAmountString.mjs → normalizeAmountString.js} +2 -2
  209. package/dist/utils/normalizeAmountString.js.map +1 -0
  210. package/dist/utils/{normalizeAssetId.d.cts → normalizeAssetId.d.ts} +3 -3
  211. package/dist/utils/normalizeAssetId.d.ts.map +1 -0
  212. package/dist/utils/{normalizeAssetId.mjs → normalizeAssetId.js} +4 -11
  213. package/dist/utils/normalizeAssetId.js.map +1 -0
  214. package/dist/utils/{snaps-assets-migration.d.mts → snaps-assets-migration.d.ts} +5 -5
  215. package/dist/utils/snaps-assets-migration.d.ts.map +1 -0
  216. package/dist/utils/{snaps-assets-migration.mjs → snaps-assets-migration.js} +2 -2
  217. package/dist/utils/snaps-assets-migration.js.map +1 -0
  218. package/dist/utils/{trace.d.mts → trace.d.ts} +2 -2
  219. package/dist/utils/trace.d.ts.map +1 -0
  220. package/dist/utils/{trace.mjs → trace.js} +1 -1
  221. package/dist/utils/trace.js.map +1 -0
  222. package/package.json +15 -18
  223. package/dist/AssetsController-method-action-types.cjs +0 -7
  224. package/dist/AssetsController-method-action-types.cjs.map +0 -1
  225. package/dist/AssetsController-method-action-types.d.cts +0 -181
  226. package/dist/AssetsController-method-action-types.d.cts.map +0 -1
  227. package/dist/AssetsController-method-action-types.d.mts.map +0 -1
  228. package/dist/AssetsController-method-action-types.mjs.map +0 -1
  229. package/dist/AssetsController.cjs +0 -2559
  230. package/dist/AssetsController.cjs.map +0 -1
  231. package/dist/AssetsController.d.cts.map +0 -1
  232. package/dist/AssetsController.d.mts +0 -395
  233. package/dist/AssetsController.d.mts.map +0 -1
  234. package/dist/AssetsController.mjs.map +0 -1
  235. package/dist/data-sources/AbstractDataSource.cjs +0 -111
  236. package/dist/data-sources/AbstractDataSource.cjs.map +0 -1
  237. package/dist/data-sources/AbstractDataSource.d.cts +0 -113
  238. package/dist/data-sources/AbstractDataSource.d.cts.map +0 -1
  239. package/dist/data-sources/AbstractDataSource.d.mts.map +0 -1
  240. package/dist/data-sources/AbstractDataSource.mjs.map +0 -1
  241. package/dist/data-sources/AccountActivityDataSource.cjs +0 -267
  242. package/dist/data-sources/AccountActivityDataSource.cjs.map +0 -1
  243. package/dist/data-sources/AccountActivityDataSource.d.cts.map +0 -1
  244. package/dist/data-sources/AccountActivityDataSource.d.mts +0 -80
  245. package/dist/data-sources/AccountActivityDataSource.d.mts.map +0 -1
  246. package/dist/data-sources/AccountActivityDataSource.mjs.map +0 -1
  247. package/dist/data-sources/AccountsApiDataSource.cjs +0 -586
  248. package/dist/data-sources/AccountsApiDataSource.cjs.map +0 -1
  249. package/dist/data-sources/AccountsApiDataSource.d.cts.map +0 -1
  250. package/dist/data-sources/AccountsApiDataSource.d.mts +0 -82
  251. package/dist/data-sources/AccountsApiDataSource.d.mts.map +0 -1
  252. package/dist/data-sources/AccountsApiDataSource.mjs.map +0 -1
  253. package/dist/data-sources/PriceDataSource.cjs +0 -466
  254. package/dist/data-sources/PriceDataSource.cjs.map +0 -1
  255. package/dist/data-sources/PriceDataSource.d.cts.map +0 -1
  256. package/dist/data-sources/PriceDataSource.d.mts +0 -100
  257. package/dist/data-sources/PriceDataSource.d.mts.map +0 -1
  258. package/dist/data-sources/PriceDataSource.mjs.map +0 -1
  259. package/dist/data-sources/RpcDataSource.cjs +0 -1021
  260. package/dist/data-sources/RpcDataSource.cjs.map +0 -1
  261. package/dist/data-sources/RpcDataSource.d.cts.map +0 -1
  262. package/dist/data-sources/RpcDataSource.d.mts +0 -174
  263. package/dist/data-sources/RpcDataSource.d.mts.map +0 -1
  264. package/dist/data-sources/RpcDataSource.mjs.map +0 -1
  265. package/dist/data-sources/SnapDataSource.cjs +0 -443
  266. package/dist/data-sources/SnapDataSource.cjs.map +0 -1
  267. package/dist/data-sources/SnapDataSource.d.cts.map +0 -1
  268. package/dist/data-sources/SnapDataSource.d.mts +0 -127
  269. package/dist/data-sources/SnapDataSource.d.mts.map +0 -1
  270. package/dist/data-sources/SnapDataSource.mjs.map +0 -1
  271. package/dist/data-sources/StakedBalanceDataSource.cjs +0 -616
  272. package/dist/data-sources/StakedBalanceDataSource.cjs.map +0 -1
  273. package/dist/data-sources/StakedBalanceDataSource.d.cts.map +0 -1
  274. package/dist/data-sources/StakedBalanceDataSource.d.mts +0 -72
  275. package/dist/data-sources/StakedBalanceDataSource.d.mts.map +0 -1
  276. package/dist/data-sources/StakedBalanceDataSource.mjs.map +0 -1
  277. package/dist/data-sources/TokenDataSource.cjs +0 -583
  278. package/dist/data-sources/TokenDataSource.cjs.map +0 -1
  279. package/dist/data-sources/TokenDataSource.d.cts.map +0 -1
  280. package/dist/data-sources/TokenDataSource.d.mts +0 -81
  281. package/dist/data-sources/TokenDataSource.d.mts.map +0 -1
  282. package/dist/data-sources/TokenDataSource.mjs.map +0 -1
  283. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs +0 -705
  284. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs.map +0 -1
  285. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.cts.map +0 -1
  286. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.mts +0 -65
  287. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.mts.map +0 -1
  288. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.mjs.map +0 -1
  289. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.cjs +0 -312
  290. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.cjs.map +0 -1
  291. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.cts.map +0 -1
  292. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.mts +0 -61
  293. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.mts.map +0 -1
  294. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.mjs.map +0 -1
  295. package/dist/data-sources/evm-rpc-services/clients/index.cjs +0 -10
  296. package/dist/data-sources/evm-rpc-services/clients/index.cjs.map +0 -1
  297. package/dist/data-sources/evm-rpc-services/clients/index.d.cts +0 -4
  298. package/dist/data-sources/evm-rpc-services/clients/index.d.cts.map +0 -1
  299. package/dist/data-sources/evm-rpc-services/clients/index.d.mts +0 -4
  300. package/dist/data-sources/evm-rpc-services/clients/index.d.mts.map +0 -1
  301. package/dist/data-sources/evm-rpc-services/clients/index.mjs +0 -3
  302. package/dist/data-sources/evm-rpc-services/clients/index.mjs.map +0 -1
  303. package/dist/data-sources/evm-rpc-services/index.cjs +0 -17
  304. package/dist/data-sources/evm-rpc-services/index.cjs.map +0 -1
  305. package/dist/data-sources/evm-rpc-services/index.d.cts.map +0 -1
  306. package/dist/data-sources/evm-rpc-services/index.d.mts +0 -5
  307. package/dist/data-sources/evm-rpc-services/index.d.mts.map +0 -1
  308. package/dist/data-sources/evm-rpc-services/index.mjs +0 -4
  309. package/dist/data-sources/evm-rpc-services/index.mjs.map +0 -1
  310. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs +0 -247
  311. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs.map +0 -1
  312. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.cts.map +0 -1
  313. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts +0 -96
  314. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts.map +0 -1
  315. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.mjs.map +0 -1
  316. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.cjs +0 -132
  317. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.cjs.map +0 -1
  318. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.cts +0 -81
  319. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.cts.map +0 -1
  320. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.mts.map +0 -1
  321. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.mjs.map +0 -1
  322. package/dist/data-sources/evm-rpc-services/services/TokenDetector.cjs +0 -230
  323. package/dist/data-sources/evm-rpc-services/services/TokenDetector.cjs.map +0 -1
  324. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.cts.map +0 -1
  325. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.mts +0 -78
  326. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.mts.map +0 -1
  327. package/dist/data-sources/evm-rpc-services/services/TokenDetector.mjs.map +0 -1
  328. package/dist/data-sources/evm-rpc-services/services/index.cjs +0 -13
  329. package/dist/data-sources/evm-rpc-services/services/index.cjs.map +0 -1
  330. package/dist/data-sources/evm-rpc-services/services/index.d.cts.map +0 -1
  331. package/dist/data-sources/evm-rpc-services/services/index.d.mts +0 -4
  332. package/dist/data-sources/evm-rpc-services/services/index.d.mts.map +0 -1
  333. package/dist/data-sources/evm-rpc-services/services/index.mjs +0 -4
  334. package/dist/data-sources/evm-rpc-services/services/index.mjs.map +0 -1
  335. package/dist/data-sources/evm-rpc-services/types/assets.cjs +0 -3
  336. package/dist/data-sources/evm-rpc-services/types/assets.cjs.map +0 -1
  337. package/dist/data-sources/evm-rpc-services/types/assets.d.cts.map +0 -1
  338. package/dist/data-sources/evm-rpc-services/types/assets.d.mts +0 -53
  339. package/dist/data-sources/evm-rpc-services/types/assets.d.mts.map +0 -1
  340. package/dist/data-sources/evm-rpc-services/types/assets.mjs +0 -2
  341. package/dist/data-sources/evm-rpc-services/types/assets.mjs.map +0 -1
  342. package/dist/data-sources/evm-rpc-services/types/config.cjs +0 -3
  343. package/dist/data-sources/evm-rpc-services/types/config.cjs.map +0 -1
  344. package/dist/data-sources/evm-rpc-services/types/config.d.cts.map +0 -1
  345. package/dist/data-sources/evm-rpc-services/types/config.d.mts +0 -18
  346. package/dist/data-sources/evm-rpc-services/types/config.d.mts.map +0 -1
  347. package/dist/data-sources/evm-rpc-services/types/config.mjs +0 -2
  348. package/dist/data-sources/evm-rpc-services/types/config.mjs.map +0 -1
  349. package/dist/data-sources/evm-rpc-services/types/core.cjs +0 -3
  350. package/dist/data-sources/evm-rpc-services/types/core.cjs.map +0 -1
  351. package/dist/data-sources/evm-rpc-services/types/core.d.cts.map +0 -1
  352. package/dist/data-sources/evm-rpc-services/types/core.d.mts +0 -19
  353. package/dist/data-sources/evm-rpc-services/types/core.d.mts.map +0 -1
  354. package/dist/data-sources/evm-rpc-services/types/core.mjs +0 -2
  355. package/dist/data-sources/evm-rpc-services/types/core.mjs.map +0 -1
  356. package/dist/data-sources/evm-rpc-services/types/index.cjs +0 -3
  357. package/dist/data-sources/evm-rpc-services/types/index.cjs.map +0 -1
  358. package/dist/data-sources/evm-rpc-services/types/index.d.cts +0 -7
  359. package/dist/data-sources/evm-rpc-services/types/index.d.cts.map +0 -1
  360. package/dist/data-sources/evm-rpc-services/types/index.d.mts +0 -7
  361. package/dist/data-sources/evm-rpc-services/types/index.d.mts.map +0 -1
  362. package/dist/data-sources/evm-rpc-services/types/index.mjs +0 -2
  363. package/dist/data-sources/evm-rpc-services/types/index.mjs.map +0 -1
  364. package/dist/data-sources/evm-rpc-services/types/multicall.cjs +0 -3
  365. package/dist/data-sources/evm-rpc-services/types/multicall.cjs.map +0 -1
  366. package/dist/data-sources/evm-rpc-services/types/multicall.d.cts.map +0 -1
  367. package/dist/data-sources/evm-rpc-services/types/multicall.d.mts +0 -24
  368. package/dist/data-sources/evm-rpc-services/types/multicall.d.mts.map +0 -1
  369. package/dist/data-sources/evm-rpc-services/types/multicall.mjs +0 -2
  370. package/dist/data-sources/evm-rpc-services/types/multicall.mjs.map +0 -1
  371. package/dist/data-sources/evm-rpc-services/types/services.cjs +0 -3
  372. package/dist/data-sources/evm-rpc-services/types/services.cjs.map +0 -1
  373. package/dist/data-sources/evm-rpc-services/types/services.d.cts.map +0 -1
  374. package/dist/data-sources/evm-rpc-services/types/services.d.mts +0 -70
  375. package/dist/data-sources/evm-rpc-services/types/services.d.mts.map +0 -1
  376. package/dist/data-sources/evm-rpc-services/types/services.mjs +0 -2
  377. package/dist/data-sources/evm-rpc-services/types/services.mjs.map +0 -1
  378. package/dist/data-sources/evm-rpc-services/types/state.cjs +0 -3
  379. package/dist/data-sources/evm-rpc-services/types/state.cjs.map +0 -1
  380. package/dist/data-sources/evm-rpc-services/types/state.d.cts.map +0 -1
  381. package/dist/data-sources/evm-rpc-services/types/state.d.mts +0 -58
  382. package/dist/data-sources/evm-rpc-services/types/state.d.mts.map +0 -1
  383. package/dist/data-sources/evm-rpc-services/types/state.mjs +0 -2
  384. package/dist/data-sources/evm-rpc-services/types/state.mjs.map +0 -1
  385. package/dist/data-sources/evm-rpc-services/utils/assets.cjs +0 -9
  386. package/dist/data-sources/evm-rpc-services/utils/assets.cjs.map +0 -1
  387. package/dist/data-sources/evm-rpc-services/utils/assets.d.cts.map +0 -1
  388. package/dist/data-sources/evm-rpc-services/utils/assets.d.mts +0 -3
  389. package/dist/data-sources/evm-rpc-services/utils/assets.d.mts.map +0 -1
  390. package/dist/data-sources/evm-rpc-services/utils/assets.mjs.map +0 -1
  391. package/dist/data-sources/evm-rpc-services/utils/batch.cjs +0 -45
  392. package/dist/data-sources/evm-rpc-services/utils/batch.cjs.map +0 -1
  393. package/dist/data-sources/evm-rpc-services/utils/batch.d.cts +0 -28
  394. package/dist/data-sources/evm-rpc-services/utils/batch.d.cts.map +0 -1
  395. package/dist/data-sources/evm-rpc-services/utils/batch.d.mts.map +0 -1
  396. package/dist/data-sources/evm-rpc-services/utils/batch.mjs.map +0 -1
  397. package/dist/data-sources/evm-rpc-services/utils/index.cjs +0 -15
  398. package/dist/data-sources/evm-rpc-services/utils/index.cjs.map +0 -1
  399. package/dist/data-sources/evm-rpc-services/utils/index.d.cts +0 -4
  400. package/dist/data-sources/evm-rpc-services/utils/index.d.cts.map +0 -1
  401. package/dist/data-sources/evm-rpc-services/utils/index.d.mts +0 -4
  402. package/dist/data-sources/evm-rpc-services/utils/index.d.mts.map +0 -1
  403. package/dist/data-sources/evm-rpc-services/utils/index.mjs +0 -4
  404. package/dist/data-sources/evm-rpc-services/utils/index.mjs.map +0 -1
  405. package/dist/data-sources/evm-rpc-services/utils/parsing.cjs +0 -47
  406. package/dist/data-sources/evm-rpc-services/utils/parsing.cjs.map +0 -1
  407. package/dist/data-sources/evm-rpc-services/utils/parsing.d.cts +0 -25
  408. package/dist/data-sources/evm-rpc-services/utils/parsing.d.cts.map +0 -1
  409. package/dist/data-sources/evm-rpc-services/utils/parsing.d.mts.map +0 -1
  410. package/dist/data-sources/evm-rpc-services/utils/parsing.mjs.map +0 -1
  411. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.cjs +0 -68
  412. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.cjs.map +0 -1
  413. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.cts.map +0 -1
  414. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.mts +0 -25
  415. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.mts.map +0 -1
  416. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.mjs.map +0 -1
  417. package/dist/data-sources/index.cjs +0 -30
  418. package/dist/data-sources/index.cjs.map +0 -1
  419. package/dist/data-sources/index.d.cts.map +0 -1
  420. package/dist/data-sources/index.d.mts +0 -9
  421. package/dist/data-sources/index.d.mts.map +0 -1
  422. package/dist/data-sources/index.mjs +0 -14
  423. package/dist/data-sources/index.mjs.map +0 -1
  424. package/dist/defaults.cjs +0 -125
  425. package/dist/defaults.cjs.map +0 -1
  426. package/dist/defaults.d.cts +0 -50
  427. package/dist/defaults.d.cts.map +0 -1
  428. package/dist/defaults.d.mts.map +0 -1
  429. package/dist/defaults.mjs.map +0 -1
  430. package/dist/errors.cjs +0 -25
  431. package/dist/errors.cjs.map +0 -1
  432. package/dist/errors.d.cts +0 -25
  433. package/dist/errors.d.cts.map +0 -1
  434. package/dist/errors.d.mts.map +0 -1
  435. package/dist/errors.mjs.map +0 -1
  436. package/dist/index.cjs +0 -67
  437. package/dist/index.cjs.map +0 -1
  438. package/dist/index.d.cts +0 -26
  439. package/dist/index.d.cts.map +0 -1
  440. package/dist/index.d.mts.map +0 -1
  441. package/dist/index.mjs.map +0 -1
  442. package/dist/logger.cjs +0 -7
  443. package/dist/logger.cjs.map +0 -1
  444. package/dist/logger.d.cts +0 -5
  445. package/dist/logger.d.cts.map +0 -1
  446. package/dist/logger.d.mts +0 -5
  447. package/dist/logger.d.mts.map +0 -1
  448. package/dist/logger.mjs +0 -4
  449. package/dist/logger.mjs.map +0 -1
  450. package/dist/middlewares/CustomAssetGraduationMiddleware.cjs +0 -132
  451. package/dist/middlewares/CustomAssetGraduationMiddleware.cjs.map +0 -1
  452. package/dist/middlewares/CustomAssetGraduationMiddleware.d.cts.map +0 -1
  453. package/dist/middlewares/CustomAssetGraduationMiddleware.d.mts +0 -32
  454. package/dist/middlewares/CustomAssetGraduationMiddleware.d.mts.map +0 -1
  455. package/dist/middlewares/CustomAssetGraduationMiddleware.mjs.map +0 -1
  456. package/dist/middlewares/DetectionMiddleware.cjs +0 -154
  457. package/dist/middlewares/DetectionMiddleware.cjs.map +0 -1
  458. package/dist/middlewares/DetectionMiddleware.d.cts.map +0 -1
  459. package/dist/middlewares/DetectionMiddleware.d.mts +0 -40
  460. package/dist/middlewares/DetectionMiddleware.d.mts.map +0 -1
  461. package/dist/middlewares/DetectionMiddleware.mjs.map +0 -1
  462. package/dist/middlewares/ParallelMiddleware.cjs +0 -263
  463. package/dist/middlewares/ParallelMiddleware.cjs.map +0 -1
  464. package/dist/middlewares/ParallelMiddleware.d.cts.map +0 -1
  465. package/dist/middlewares/ParallelMiddleware.d.mts +0 -41
  466. package/dist/middlewares/ParallelMiddleware.d.mts.map +0 -1
  467. package/dist/middlewares/RpcFallbackMiddleware.cjs +0 -90
  468. package/dist/middlewares/RpcFallbackMiddleware.cjs.map +0 -1
  469. package/dist/middlewares/RpcFallbackMiddleware.d.cts.map +0 -1
  470. package/dist/middlewares/RpcFallbackMiddleware.d.mts +0 -23
  471. package/dist/middlewares/RpcFallbackMiddleware.d.mts.map +0 -1
  472. package/dist/middlewares/RpcFallbackMiddleware.mjs.map +0 -1
  473. package/dist/middlewares/index.cjs +0 -14
  474. package/dist/middlewares/index.cjs.map +0 -1
  475. package/dist/middlewares/index.d.cts +0 -9
  476. package/dist/middlewares/index.d.cts.map +0 -1
  477. package/dist/middlewares/index.d.mts +0 -9
  478. package/dist/middlewares/index.d.mts.map +0 -1
  479. package/dist/middlewares/index.mjs +0 -5
  480. package/dist/middlewares/index.mjs.map +0 -1
  481. package/dist/migrations/healAssetsInfoMetadata.cjs +0 -385
  482. package/dist/migrations/healAssetsInfoMetadata.cjs.map +0 -1
  483. package/dist/migrations/healAssetsInfoMetadata.d.cts.map +0 -1
  484. package/dist/migrations/healAssetsInfoMetadata.d.mts +0 -106
  485. package/dist/migrations/healAssetsInfoMetadata.d.mts.map +0 -1
  486. package/dist/migrations/healAssetsInfoMetadata.mjs.map +0 -1
  487. package/dist/selectors/balance.cjs +0 -532
  488. package/dist/selectors/balance.cjs.map +0 -1
  489. package/dist/selectors/balance.d.cts.map +0 -1
  490. package/dist/selectors/balance.d.mts +0 -103
  491. package/dist/selectors/balance.d.mts.map +0 -1
  492. package/dist/selectors/balance.mjs.map +0 -1
  493. package/dist/types.cjs +0 -39
  494. package/dist/types.cjs.map +0 -1
  495. package/dist/types.d.cts +0 -533
  496. package/dist/types.d.cts.map +0 -1
  497. package/dist/types.d.mts.map +0 -1
  498. package/dist/types.mjs.map +0 -1
  499. package/dist/utils/constants.cjs +0 -5
  500. package/dist/utils/constants.cjs.map +0 -1
  501. package/dist/utils/constants.d.cts +0 -2
  502. package/dist/utils/constants.d.cts.map +0 -1
  503. package/dist/utils/constants.d.mts +0 -2
  504. package/dist/utils/constants.d.mts.map +0 -1
  505. package/dist/utils/constants.mjs.map +0 -1
  506. package/dist/utils/customAssetsRpcSupplement.cjs +0 -72
  507. package/dist/utils/customAssetsRpcSupplement.cjs.map +0 -1
  508. package/dist/utils/customAssetsRpcSupplement.d.cts +0 -60
  509. package/dist/utils/customAssetsRpcSupplement.d.cts.map +0 -1
  510. package/dist/utils/customAssetsRpcSupplement.d.mts.map +0 -1
  511. package/dist/utils/customAssetsRpcSupplement.mjs.map +0 -1
  512. package/dist/utils/dedupingBatchFetcher.cjs +0 -168
  513. package/dist/utils/dedupingBatchFetcher.cjs.map +0 -1
  514. package/dist/utils/dedupingBatchFetcher.d.cts.map +0 -1
  515. package/dist/utils/dedupingBatchFetcher.d.mts +0 -72
  516. package/dist/utils/dedupingBatchFetcher.d.mts.map +0 -1
  517. package/dist/utils/dedupingBatchFetcher.mjs.map +0 -1
  518. package/dist/utils/fetchWithTimeout.cjs +0 -30
  519. package/dist/utils/fetchWithTimeout.cjs.map +0 -1
  520. package/dist/utils/fetchWithTimeout.d.cts +0 -11
  521. package/dist/utils/fetchWithTimeout.d.cts.map +0 -1
  522. package/dist/utils/fetchWithTimeout.d.mts.map +0 -1
  523. package/dist/utils/fetchWithTimeout.mjs.map +0 -1
  524. package/dist/utils/formatExchangeRatesForBridge.cjs +0 -161
  525. package/dist/utils/formatExchangeRatesForBridge.cjs.map +0 -1
  526. package/dist/utils/formatExchangeRatesForBridge.d.cts +0 -43
  527. package/dist/utils/formatExchangeRatesForBridge.d.cts.map +0 -1
  528. package/dist/utils/formatExchangeRatesForBridge.d.mts.map +0 -1
  529. package/dist/utils/formatExchangeRatesForBridge.mjs.map +0 -1
  530. package/dist/utils/formatStateForTransactionPay.cjs +0 -174
  531. package/dist/utils/formatStateForTransactionPay.cjs.map +0 -1
  532. package/dist/utils/formatStateForTransactionPay.d.cts.map +0 -1
  533. package/dist/utils/formatStateForTransactionPay.d.mts +0 -72
  534. package/dist/utils/formatStateForTransactionPay.d.mts.map +0 -1
  535. package/dist/utils/formatStateForTransactionPay.mjs.map +0 -1
  536. package/dist/utils/index.cjs +0 -21
  537. package/dist/utils/index.cjs.map +0 -1
  538. package/dist/utils/index.d.cts +0 -9
  539. package/dist/utils/index.d.cts.map +0 -1
  540. package/dist/utils/index.d.mts +0 -9
  541. package/dist/utils/index.d.mts.map +0 -1
  542. package/dist/utils/index.mjs +0 -7
  543. package/dist/utils/index.mjs.map +0 -1
  544. package/dist/utils/native-assets.cjs +0 -64
  545. package/dist/utils/native-assets.cjs.map +0 -1
  546. package/dist/utils/native-assets.d.cts.map +0 -1
  547. package/dist/utils/native-assets.d.mts +0 -19
  548. package/dist/utils/native-assets.d.mts.map +0 -1
  549. package/dist/utils/native-assets.mjs.map +0 -1
  550. package/dist/utils/normalizeAmountString.cjs +0 -64
  551. package/dist/utils/normalizeAmountString.cjs.map +0 -1
  552. package/dist/utils/normalizeAmountString.d.cts +0 -35
  553. package/dist/utils/normalizeAmountString.d.cts.map +0 -1
  554. package/dist/utils/normalizeAmountString.d.mts.map +0 -1
  555. package/dist/utils/normalizeAmountString.mjs.map +0 -1
  556. package/dist/utils/normalizeAssetId.cjs +0 -60
  557. package/dist/utils/normalizeAssetId.cjs.map +0 -1
  558. package/dist/utils/normalizeAssetId.d.cts.map +0 -1
  559. package/dist/utils/normalizeAssetId.d.mts +0 -32
  560. package/dist/utils/normalizeAssetId.d.mts.map +0 -1
  561. package/dist/utils/normalizeAssetId.mjs.map +0 -1
  562. package/dist/utils/snaps-assets-migration.cjs +0 -171
  563. package/dist/utils/snaps-assets-migration.cjs.map +0 -1
  564. package/dist/utils/snaps-assets-migration.d.cts +0 -113
  565. package/dist/utils/snaps-assets-migration.d.cts.map +0 -1
  566. package/dist/utils/snaps-assets-migration.d.mts.map +0 -1
  567. package/dist/utils/snaps-assets-migration.mjs.map +0 -1
  568. package/dist/utils/trace.cjs +0 -120
  569. package/dist/utils/trace.cjs.map +0 -1
  570. package/dist/utils/trace.d.cts +0 -52
  571. package/dist/utils/trace.d.cts.map +0 -1
  572. package/dist/utils/trace.d.mts.map +0 -1
  573. package/dist/utils/trace.mjs.map +0 -1
@@ -1,9 +0,0 @@
1
- export { fetchWithTimeout } from "./fetchWithTimeout.cjs";
2
- export { normalizeAmountString } from "./normalizeAmountString.cjs";
3
- export { normalizeAssetId, safeNormalizeAssetId, clearNormalizeAssetIdCacheForTesting, } from "./normalizeAssetId.cjs";
4
- export { formatExchangeRatesForBridge, clearFormatExchangeRatesForBridgeCacheForTesting, } from "./formatExchangeRatesForBridge.cjs";
5
- export { formatStateForTransactionPay, clearFormatStateForTransactionPayCacheForTesting, } from "./formatStateForTransactionPay.cjs";
6
- export type { BridgeExchangeRatesFormat, FormatExchangeRatesForBridgeParams, } from "./formatExchangeRatesForBridge.cjs";
7
- export type { AccountForLegacyFormat, FormatStateForTransactionPayParams, LegacyToken, TransactionPayLegacyFormat, } from "./formatStateForTransactionPay.cjs";
8
- export { buildNativeAssetsFromConstant, buildNativeAssetsFromApi, } from "./native-assets.cjs";
9
- //# sourceMappingURL=index.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,+BAA8B;AACzD,OAAO,EAAE,qBAAqB,EAAE,oCAAmC;AACnE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oCAAoC,GACrC,+BAA8B;AAC/B,OAAO,EACL,4BAA4B,EAC5B,gDAAgD,GACjD,2CAA0C;AAC3C,OAAO,EACL,4BAA4B,EAC5B,gDAAgD,GACjD,2CAA0C;AAC3C,YAAY,EACV,yBAAyB,EACzB,kCAAkC,GACnC,2CAA0C;AAC3C,YAAY,EACV,sBAAsB,EACtB,kCAAkC,EAClC,WAAW,EACX,0BAA0B,GAC3B,2CAA0C;AAC3C,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,GACzB,4BAA2B"}
@@ -1,9 +0,0 @@
1
- export { fetchWithTimeout } from "./fetchWithTimeout.mjs";
2
- export { normalizeAmountString } from "./normalizeAmountString.mjs";
3
- export { normalizeAssetId, safeNormalizeAssetId, clearNormalizeAssetIdCacheForTesting, } from "./normalizeAssetId.mjs";
4
- export { formatExchangeRatesForBridge, clearFormatExchangeRatesForBridgeCacheForTesting, } from "./formatExchangeRatesForBridge.mjs";
5
- export { formatStateForTransactionPay, clearFormatStateForTransactionPayCacheForTesting, } from "./formatStateForTransactionPay.mjs";
6
- export type { BridgeExchangeRatesFormat, FormatExchangeRatesForBridgeParams, } from "./formatExchangeRatesForBridge.mjs";
7
- export type { AccountForLegacyFormat, FormatStateForTransactionPayParams, LegacyToken, TransactionPayLegacyFormat, } from "./formatStateForTransactionPay.mjs";
8
- export { buildNativeAssetsFromConstant, buildNativeAssetsFromApi, } from "./native-assets.mjs";
9
- //# sourceMappingURL=index.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,+BAA8B;AACzD,OAAO,EAAE,qBAAqB,EAAE,oCAAmC;AACnE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oCAAoC,GACrC,+BAA8B;AAC/B,OAAO,EACL,4BAA4B,EAC5B,gDAAgD,GACjD,2CAA0C;AAC3C,OAAO,EACL,4BAA4B,EAC5B,gDAAgD,GACjD,2CAA0C;AAC3C,YAAY,EACV,yBAAyB,EACzB,kCAAkC,GACnC,2CAA0C;AAC3C,YAAY,EACV,sBAAsB,EACtB,kCAAkC,EAClC,WAAW,EACX,0BAA0B,GAC3B,2CAA0C;AAC3C,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,GACzB,4BAA2B"}
@@ -1,7 +0,0 @@
1
- export { fetchWithTimeout } from "./fetchWithTimeout.mjs";
2
- export { normalizeAmountString } from "./normalizeAmountString.mjs";
3
- export { normalizeAssetId, safeNormalizeAssetId, clearNormalizeAssetIdCacheForTesting } from "./normalizeAssetId.mjs";
4
- export { formatExchangeRatesForBridge, clearFormatExchangeRatesForBridgeCacheForTesting } from "./formatExchangeRatesForBridge.mjs";
5
- export { formatStateForTransactionPay, clearFormatStateForTransactionPayCacheForTesting } from "./formatStateForTransactionPay.mjs";
6
- export { buildNativeAssetsFromConstant, buildNativeAssetsFromApi } from "./native-assets.mjs";
7
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,+BAA8B;AACzD,OAAO,EAAE,qBAAqB,EAAE,oCAAmC;AACnE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oCAAoC,EACrC,+BAA8B;AAC/B,OAAO,EACL,4BAA4B,EAC5B,gDAAgD,EACjD,2CAA0C;AAC3C,OAAO,EACL,4BAA4B,EAC5B,gDAAgD,EACjD,2CAA0C;AAW3C,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACzB,4BAA2B","sourcesContent":["export { fetchWithTimeout } from './fetchWithTimeout.js';\nexport { normalizeAmountString } from './normalizeAmountString.js';\nexport {\n normalizeAssetId,\n safeNormalizeAssetId,\n clearNormalizeAssetIdCacheForTesting,\n} from './normalizeAssetId.js';\nexport {\n formatExchangeRatesForBridge,\n clearFormatExchangeRatesForBridgeCacheForTesting,\n} from './formatExchangeRatesForBridge.js';\nexport {\n formatStateForTransactionPay,\n clearFormatStateForTransactionPayCacheForTesting,\n} from './formatStateForTransactionPay.js';\nexport type {\n BridgeExchangeRatesFormat,\n FormatExchangeRatesForBridgeParams,\n} from './formatExchangeRatesForBridge.js';\nexport type {\n AccountForLegacyFormat,\n FormatStateForTransactionPayParams,\n LegacyToken,\n TransactionPayLegacyFormat,\n} from './formatStateForTransactionPay.js';\nexport {\n buildNativeAssetsFromConstant,\n buildNativeAssetsFromApi,\n} from './native-assets.js';\n"]}
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildNativeAssetsFromApi = exports.buildNativeAssetsFromConstant = void 0;
4
- const assets_controllers_1 = require("@metamask/assets-controllers");
5
- const controller_utils_1 = require("@metamask/controller-utils");
6
- const utils_1 = require("@metamask/utils");
7
- const normalizeAssetId_js_1 = require("./normalizeAssetId.cjs");
8
- const CHAINID_NETWORK_URL = 'https://chainid.network/chains.json';
9
- /**
10
- * Builds a native asset map from the hardcoded SPOT_PRICES_SUPPORT_INFO constant.
11
- *
12
- * @returns A record mapping CAIP-2 chain IDs to their CAIP-19 native asset IDs.
13
- */
14
- function buildNativeAssetsFromConstant() {
15
- const nativeAssetsMap = {};
16
- for (const nativeAssetId of Object.values(assets_controllers_1.SPOT_PRICES_SUPPORT_INFO)) {
17
- const { chainId } = (0, utils_1.parseCaipAssetType)(nativeAssetId);
18
- nativeAssetsMap[chainId] = (0, normalizeAssetId_js_1.normalizeAssetId)(nativeAssetId);
19
- }
20
- return nativeAssetsMap;
21
- }
22
- exports.buildNativeAssetsFromConstant = buildNativeAssetsFromConstant;
23
- /**
24
- * Fetches chain data from chainid.network and merges it with the seed
25
- * native asset map built from {@link buildNativeAssetsFromConstant}.
26
- *
27
- * Remote entries only fill gaps — chains already present in the seed map
28
- * are never overwritten. Invalid entries (missing/negative chainId or slip44)
29
- * are silently skipped.
30
- *
31
- * @returns The merged native asset map.
32
- */
33
- async function buildNativeAssetsFromApi() {
34
- const nativeAssetsMap = buildNativeAssetsFromConstant();
35
- try {
36
- const chains = await (0, controller_utils_1.fetchWithErrorHandling)({
37
- url: CHAINID_NETWORK_URL,
38
- timeout: 10000,
39
- });
40
- if (chains && Array.isArray(chains)) {
41
- for (const chain of chains) {
42
- if (!chain.chainId ||
43
- !chain.slip44 ||
44
- !Number.isInteger(chain.chainId) ||
45
- chain.chainId < 1 ||
46
- !Number.isInteger(chain.slip44) ||
47
- chain.slip44 < 1) {
48
- continue;
49
- }
50
- const caipChainId = `eip155:${chain.chainId}`;
51
- if (!nativeAssetsMap[caipChainId]) {
52
- nativeAssetsMap[caipChainId] =
53
- `eip155:${chain.chainId}/slip44:${chain.slip44}`;
54
- }
55
- }
56
- }
57
- }
58
- catch {
59
- // Non-fatal: caller should fall back to the seed map.
60
- }
61
- return nativeAssetsMap;
62
- }
63
- exports.buildNativeAssetsFromApi = buildNativeAssetsFromApi;
64
- //# sourceMappingURL=native-assets.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-assets.cjs","sourceRoot":"","sources":["../../src/utils/native-assets.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AACxE,iEAAoE;AACpE,2CAAqD;AAGrD,gEAAyD;AAEzD,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AAOlE;;;;GAIG;AACH,SAAgB,6BAA6B;IAI3C,MAAM,eAAe,GAAmC,EAAE,CAAC;IAC3D,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,6CAAwB,CAAC,EAAE,CAAC;QACpE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,0BAAkB,EAAC,aAAa,CAAC,CAAC;QACtD,eAAe,CAAC,OAAO,CAAC,GAAG,IAAA,sCAAgB,EAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAVD,sEAUC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,wBAAwB;IAG5C,MAAM,eAAe,GAAG,6BAA6B,EAAE,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,MAAM,GACV,MAAM,IAAA,yCAAsB,EAAC;YAC3B,GAAG,EAAE,mBAAmB;YACxB,OAAO,EAAE,KAAM;SAChB,CAAC,CAAC;QAEL,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IACE,CAAC,KAAK,CAAC,OAAO;oBACd,CAAC,KAAK,CAAC,MAAM;oBACb,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;oBAChC,KAAK,CAAC,OAAO,GAAG,CAAC;oBACjB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC/B,KAAK,CAAC,MAAM,GAAG,CAAC,EAChB,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,MAAM,WAAW,GAAG,UAAU,KAAK,CAAC,OAAO,EAAa,CAAC;gBACzD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;oBAClC,eAAe,CAAC,WAAW,CAAC;wBAC1B,UAAU,KAAK,CAAC,OAAO,WAAW,KAAK,CAAC,MAAM,EAAmB,CAAC;gBACtE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AArCD,4DAqCC","sourcesContent":["import { SPOT_PRICES_SUPPORT_INFO } from '@metamask/assets-controllers';\nimport { fetchWithErrorHandling } from '@metamask/controller-utils';\nimport { parseCaipAssetType } from '@metamask/utils';\n\nimport type { Caip19AssetId, ChainId } from '../types.js';\nimport { normalizeAssetId } from './normalizeAssetId.js';\n\nconst CHAINID_NETWORK_URL = 'https://chainid.network/chains.json';\n\ntype ChainIdNetworkEntry = {\n chainId: number;\n slip44?: number;\n};\n\n/**\n * Builds a native asset map from the hardcoded SPOT_PRICES_SUPPORT_INFO constant.\n *\n * @returns A record mapping CAIP-2 chain IDs to their CAIP-19 native asset IDs.\n */\nexport function buildNativeAssetsFromConstant(): Record<\n ChainId,\n Caip19AssetId\n> {\n const nativeAssetsMap: Record<ChainId, Caip19AssetId> = {};\n for (const nativeAssetId of Object.values(SPOT_PRICES_SUPPORT_INFO)) {\n const { chainId } = parseCaipAssetType(nativeAssetId);\n nativeAssetsMap[chainId] = normalizeAssetId(nativeAssetId);\n }\n return nativeAssetsMap;\n}\n\n/**\n * Fetches chain data from chainid.network and merges it with the seed\n * native asset map built from {@link buildNativeAssetsFromConstant}.\n *\n * Remote entries only fill gaps — chains already present in the seed map\n * are never overwritten. Invalid entries (missing/negative chainId or slip44)\n * are silently skipped.\n *\n * @returns The merged native asset map.\n */\nexport async function buildNativeAssetsFromApi(): Promise<\n Record<ChainId, Caip19AssetId>\n> {\n const nativeAssetsMap = buildNativeAssetsFromConstant();\n\n try {\n const chains: ChainIdNetworkEntry[] | undefined =\n await fetchWithErrorHandling({\n url: CHAINID_NETWORK_URL,\n timeout: 10_000,\n });\n\n if (chains && Array.isArray(chains)) {\n for (const chain of chains) {\n if (\n !chain.chainId ||\n !chain.slip44 ||\n !Number.isInteger(chain.chainId) ||\n chain.chainId < 1 ||\n !Number.isInteger(chain.slip44) ||\n chain.slip44 < 1\n ) {\n continue;\n }\n\n const caipChainId = `eip155:${chain.chainId}` as ChainId;\n if (!nativeAssetsMap[caipChainId]) {\n nativeAssetsMap[caipChainId] =\n `eip155:${chain.chainId}/slip44:${chain.slip44}` as Caip19AssetId;\n }\n }\n }\n } catch {\n // Non-fatal: caller should fall back to the seed map.\n }\n\n return nativeAssetsMap;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-assets.d.cts","sourceRoot":"","sources":["../../src/utils/native-assets.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,qBAAoB;AAU1D;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CACrD,OAAO,EACP,aAAa,CACd,CAOA;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CACvD,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAC/B,CAmCA"}
@@ -1,19 +0,0 @@
1
- import type { Caip19AssetId, ChainId } from "../types.mjs";
2
- /**
3
- * Builds a native asset map from the hardcoded SPOT_PRICES_SUPPORT_INFO constant.
4
- *
5
- * @returns A record mapping CAIP-2 chain IDs to their CAIP-19 native asset IDs.
6
- */
7
- export declare function buildNativeAssetsFromConstant(): Record<ChainId, Caip19AssetId>;
8
- /**
9
- * Fetches chain data from chainid.network and merges it with the seed
10
- * native asset map built from {@link buildNativeAssetsFromConstant}.
11
- *
12
- * Remote entries only fill gaps — chains already present in the seed map
13
- * are never overwritten. Invalid entries (missing/negative chainId or slip44)
14
- * are silently skipped.
15
- *
16
- * @returns The merged native asset map.
17
- */
18
- export declare function buildNativeAssetsFromApi(): Promise<Record<ChainId, Caip19AssetId>>;
19
- //# sourceMappingURL=native-assets.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-assets.d.mts","sourceRoot":"","sources":["../../src/utils/native-assets.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,qBAAoB;AAU1D;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CACrD,OAAO,EACP,aAAa,CACd,CAOA;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CACvD,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAC/B,CAmCA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-assets.mjs","sourceRoot":"","sources":["../../src/utils/native-assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,qCAAqC;AACxE,OAAO,EAAE,sBAAsB,EAAE,mCAAmC;AACpE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB;AAGrD,OAAO,EAAE,gBAAgB,EAAE,+BAA8B;AAEzD,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AAOlE;;;;GAIG;AACH,MAAM,UAAU,6BAA6B;IAI3C,MAAM,eAAe,GAAmC,EAAE,CAAC;IAC3D,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACpE,MAAM,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACtD,eAAe,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAG5C,MAAM,eAAe,GAAG,6BAA6B,EAAE,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,MAAM,GACV,MAAM,sBAAsB,CAAC;YAC3B,GAAG,EAAE,mBAAmB;YACxB,OAAO,EAAE,KAAM;SAChB,CAAC,CAAC;QAEL,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IACE,CAAC,KAAK,CAAC,OAAO;oBACd,CAAC,KAAK,CAAC,MAAM;oBACb,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;oBAChC,KAAK,CAAC,OAAO,GAAG,CAAC;oBACjB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC/B,KAAK,CAAC,MAAM,GAAG,CAAC,EAChB,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,MAAM,WAAW,GAAG,UAAU,KAAK,CAAC,OAAO,EAAa,CAAC;gBACzD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;oBAClC,eAAe,CAAC,WAAW,CAAC;wBAC1B,UAAU,KAAK,CAAC,OAAO,WAAW,KAAK,CAAC,MAAM,EAAmB,CAAC;gBACtE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC","sourcesContent":["import { SPOT_PRICES_SUPPORT_INFO } from '@metamask/assets-controllers';\nimport { fetchWithErrorHandling } from '@metamask/controller-utils';\nimport { parseCaipAssetType } from '@metamask/utils';\n\nimport type { Caip19AssetId, ChainId } from '../types.js';\nimport { normalizeAssetId } from './normalizeAssetId.js';\n\nconst CHAINID_NETWORK_URL = 'https://chainid.network/chains.json';\n\ntype ChainIdNetworkEntry = {\n chainId: number;\n slip44?: number;\n};\n\n/**\n * Builds a native asset map from the hardcoded SPOT_PRICES_SUPPORT_INFO constant.\n *\n * @returns A record mapping CAIP-2 chain IDs to their CAIP-19 native asset IDs.\n */\nexport function buildNativeAssetsFromConstant(): Record<\n ChainId,\n Caip19AssetId\n> {\n const nativeAssetsMap: Record<ChainId, Caip19AssetId> = {};\n for (const nativeAssetId of Object.values(SPOT_PRICES_SUPPORT_INFO)) {\n const { chainId } = parseCaipAssetType(nativeAssetId);\n nativeAssetsMap[chainId] = normalizeAssetId(nativeAssetId);\n }\n return nativeAssetsMap;\n}\n\n/**\n * Fetches chain data from chainid.network and merges it with the seed\n * native asset map built from {@link buildNativeAssetsFromConstant}.\n *\n * Remote entries only fill gaps — chains already present in the seed map\n * are never overwritten. Invalid entries (missing/negative chainId or slip44)\n * are silently skipped.\n *\n * @returns The merged native asset map.\n */\nexport async function buildNativeAssetsFromApi(): Promise<\n Record<ChainId, Caip19AssetId>\n> {\n const nativeAssetsMap = buildNativeAssetsFromConstant();\n\n try {\n const chains: ChainIdNetworkEntry[] | undefined =\n await fetchWithErrorHandling({\n url: CHAINID_NETWORK_URL,\n timeout: 10_000,\n });\n\n if (chains && Array.isArray(chains)) {\n for (const chain of chains) {\n if (\n !chain.chainId ||\n !chain.slip44 ||\n !Number.isInteger(chain.chainId) ||\n chain.chainId < 1 ||\n !Number.isInteger(chain.slip44) ||\n chain.slip44 < 1\n ) {\n continue;\n }\n\n const caipChainId = `eip155:${chain.chainId}` as ChainId;\n if (!nativeAssetsMap[caipChainId]) {\n nativeAssetsMap[caipChainId] =\n `eip155:${chain.chainId}/slip44:${chain.slip44}` as Caip19AssetId;\n }\n }\n }\n } catch {\n // Non-fatal: caller should fall back to the seed map.\n }\n\n return nativeAssetsMap;\n}\n"]}
@@ -1,64 +0,0 @@
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.normalizeAmountString = void 0;
7
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
- /**
9
- * Normalize an asset balance `amount` string into a canonical plain-decimal
10
- * form (no scientific notation), optionally truncating to the asset's decimal
11
- * precision.
12
- *
13
- * Amounts entering `assetsBalance` state come from external sources (snaps,
14
- * accounts API, websocket, RPC) and may be serialized from JavaScript Numbers
15
- * as `"1e-18"`. Downstream consumers (e.g. the extension's
16
- * `parseBalanceWithDecimals`) split on `'.'` and feed the result to `BigInt()`,
17
- * which throws on exponent-form strings. Normalizing at the controller
18
- * boundary keeps the invariant that `amount` is always a plain decimal so
19
- * every current and future data source is safe without per-source changes.
20
- *
21
- * When `decimals` is provided (i.e. the asset's metadata is registered),
22
- * fractional digits beyond `decimals` are truncated using round-toward-zero
23
- * to match the extension's `parseBalanceWithDecimals`, which slices off any
24
- * fractional digits beyond `decimals`.
25
- *
26
- * When `decimals` is omitted (metadata not yet known for this asset), the
27
- * amount is left at its natural precision — exponent form is still converted
28
- * to plain decimal, but no digits are dropped. This preserves balances that
29
- * arrive before their metadata without lossy truncation.
30
- *
31
- * Non-finite or non-string inputs collapse to `'0'` rather than throwing,
32
- * because controller state must remain JSON-serializable and a malformed
33
- * upstream payload should not corrupt the rest of the update.
34
- *
35
- * @param amount - The raw amount string from a data source.
36
- * @param decimals - The asset's decimal precision (from `assetsInfo`). Pass
37
- * `undefined` when metadata is unknown to skip truncation.
38
- * @returns A plain decimal string (e.g. `"0.000000000000000001"`), or `'0'`
39
- * for non-finite / non-string input.
40
- */
41
- function normalizeAmountString(amount, decimals) {
42
- if (typeof amount !== 'string' || amount.length === 0) {
43
- return '0';
44
- }
45
- const bn = new bignumber_js_1.default(amount);
46
- if (!bn.isFinite()) {
47
- return '0';
48
- }
49
- let fixed;
50
- if (decimals === undefined || !Number.isFinite(decimals) || decimals < 0) {
51
- // Metadata unknown — preserve full precision, just defeat exponent form.
52
- fixed = bn.toFixed();
53
- }
54
- else {
55
- fixed = bn.toFixed(Math.floor(decimals), bignumber_js_1.default.ROUND_DOWN);
56
- }
57
- if (!fixed.includes('.')) {
58
- return fixed;
59
- }
60
- // Trim trailing zeros and a dangling dot: "1.500" -> "1.5", "1.000" -> "1".
61
- return fixed.replace(/0+$/u, '').replace(/\.$/u, '');
62
- }
63
- exports.normalizeAmountString = normalizeAmountString;
64
- //# sourceMappingURL=normalizeAmountString.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalizeAmountString.cjs","sourceRoot":"","sources":["../../src/utils/normalizeAmountString.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAuC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,SAAgB,qBAAqB,CACnC,MAAe,EACf,QAAiB;IAEjB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,sBAAW,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,KAAa,CAAC;IAClB,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACzE,yEAAyE;QACzE,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,sBAAW,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,4EAA4E;IAC5E,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC;AAzBD,sDAyBC","sourcesContent":["import BigNumberJS from 'bignumber.js';\n\n/**\n * Normalize an asset balance `amount` string into a canonical plain-decimal\n * form (no scientific notation), optionally truncating to the asset's decimal\n * precision.\n *\n * Amounts entering `assetsBalance` state come from external sources (snaps,\n * accounts API, websocket, RPC) and may be serialized from JavaScript Numbers\n * as `\"1e-18\"`. Downstream consumers (e.g. the extension's\n * `parseBalanceWithDecimals`) split on `'.'` and feed the result to `BigInt()`,\n * which throws on exponent-form strings. Normalizing at the controller\n * boundary keeps the invariant that `amount` is always a plain decimal so\n * every current and future data source is safe without per-source changes.\n *\n * When `decimals` is provided (i.e. the asset's metadata is registered),\n * fractional digits beyond `decimals` are truncated using round-toward-zero\n * to match the extension's `parseBalanceWithDecimals`, which slices off any\n * fractional digits beyond `decimals`.\n *\n * When `decimals` is omitted (metadata not yet known for this asset), the\n * amount is left at its natural precision — exponent form is still converted\n * to plain decimal, but no digits are dropped. This preserves balances that\n * arrive before their metadata without lossy truncation.\n *\n * Non-finite or non-string inputs collapse to `'0'` rather than throwing,\n * because controller state must remain JSON-serializable and a malformed\n * upstream payload should not corrupt the rest of the update.\n *\n * @param amount - The raw amount string from a data source.\n * @param decimals - The asset's decimal precision (from `assetsInfo`). Pass\n * `undefined` when metadata is unknown to skip truncation.\n * @returns A plain decimal string (e.g. `\"0.000000000000000001\"`), or `'0'`\n * for non-finite / non-string input.\n */\nexport function normalizeAmountString(\n amount: unknown,\n decimals?: number,\n): string {\n if (typeof amount !== 'string' || amount.length === 0) {\n return '0';\n }\n const bn = new BigNumberJS(amount);\n if (!bn.isFinite()) {\n return '0';\n }\n\n let fixed: string;\n if (decimals === undefined || !Number.isFinite(decimals) || decimals < 0) {\n // Metadata unknown — preserve full precision, just defeat exponent form.\n fixed = bn.toFixed();\n } else {\n fixed = bn.toFixed(Math.floor(decimals), BigNumberJS.ROUND_DOWN);\n }\n\n if (!fixed.includes('.')) {\n return fixed;\n }\n // Trim trailing zeros and a dangling dot: \"1.500\" -> \"1.5\", \"1.000\" -> \"1\".\n return fixed.replace(/0+$/u, '').replace(/\\.$/u, '');\n}\n"]}
@@ -1,35 +0,0 @@
1
- /**
2
- * Normalize an asset balance `amount` string into a canonical plain-decimal
3
- * form (no scientific notation), optionally truncating to the asset's decimal
4
- * precision.
5
- *
6
- * Amounts entering `assetsBalance` state come from external sources (snaps,
7
- * accounts API, websocket, RPC) and may be serialized from JavaScript Numbers
8
- * as `"1e-18"`. Downstream consumers (e.g. the extension's
9
- * `parseBalanceWithDecimals`) split on `'.'` and feed the result to `BigInt()`,
10
- * which throws on exponent-form strings. Normalizing at the controller
11
- * boundary keeps the invariant that `amount` is always a plain decimal so
12
- * every current and future data source is safe without per-source changes.
13
- *
14
- * When `decimals` is provided (i.e. the asset's metadata is registered),
15
- * fractional digits beyond `decimals` are truncated using round-toward-zero
16
- * to match the extension's `parseBalanceWithDecimals`, which slices off any
17
- * fractional digits beyond `decimals`.
18
- *
19
- * When `decimals` is omitted (metadata not yet known for this asset), the
20
- * amount is left at its natural precision — exponent form is still converted
21
- * to plain decimal, but no digits are dropped. This preserves balances that
22
- * arrive before their metadata without lossy truncation.
23
- *
24
- * Non-finite or non-string inputs collapse to `'0'` rather than throwing,
25
- * because controller state must remain JSON-serializable and a malformed
26
- * upstream payload should not corrupt the rest of the update.
27
- *
28
- * @param amount - The raw amount string from a data source.
29
- * @param decimals - The asset's decimal precision (from `assetsInfo`). Pass
30
- * `undefined` when metadata is unknown to skip truncation.
31
- * @returns A plain decimal string (e.g. `"0.000000000000000001"`), or `'0'`
32
- * for non-finite / non-string input.
33
- */
34
- export declare function normalizeAmountString(amount: unknown, decimals?: number): string;
35
- //# sourceMappingURL=normalizeAmountString.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalizeAmountString.d.cts","sourceRoot":"","sources":["../../src/utils/normalizeAmountString.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAsBR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalizeAmountString.d.mts","sourceRoot":"","sources":["../../src/utils/normalizeAmountString.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAsBR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalizeAmountString.mjs","sourceRoot":"","sources":["../../src/utils/normalizeAmountString.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,qBAAqB;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAe,EACf,QAAiB;IAEjB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,KAAa,CAAC;IAClB,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACzE,yEAAyE;QACzE,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,4EAA4E;IAC5E,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC","sourcesContent":["import BigNumberJS from 'bignumber.js';\n\n/**\n * Normalize an asset balance `amount` string into a canonical plain-decimal\n * form (no scientific notation), optionally truncating to the asset's decimal\n * precision.\n *\n * Amounts entering `assetsBalance` state come from external sources (snaps,\n * accounts API, websocket, RPC) and may be serialized from JavaScript Numbers\n * as `\"1e-18\"`. Downstream consumers (e.g. the extension's\n * `parseBalanceWithDecimals`) split on `'.'` and feed the result to `BigInt()`,\n * which throws on exponent-form strings. Normalizing at the controller\n * boundary keeps the invariant that `amount` is always a plain decimal so\n * every current and future data source is safe without per-source changes.\n *\n * When `decimals` is provided (i.e. the asset's metadata is registered),\n * fractional digits beyond `decimals` are truncated using round-toward-zero\n * to match the extension's `parseBalanceWithDecimals`, which slices off any\n * fractional digits beyond `decimals`.\n *\n * When `decimals` is omitted (metadata not yet known for this asset), the\n * amount is left at its natural precision — exponent form is still converted\n * to plain decimal, but no digits are dropped. This preserves balances that\n * arrive before their metadata without lossy truncation.\n *\n * Non-finite or non-string inputs collapse to `'0'` rather than throwing,\n * because controller state must remain JSON-serializable and a malformed\n * upstream payload should not corrupt the rest of the update.\n *\n * @param amount - The raw amount string from a data source.\n * @param decimals - The asset's decimal precision (from `assetsInfo`). Pass\n * `undefined` when metadata is unknown to skip truncation.\n * @returns A plain decimal string (e.g. `\"0.000000000000000001\"`), or `'0'`\n * for non-finite / non-string input.\n */\nexport function normalizeAmountString(\n amount: unknown,\n decimals?: number,\n): string {\n if (typeof amount !== 'string' || amount.length === 0) {\n return '0';\n }\n const bn = new BigNumberJS(amount);\n if (!bn.isFinite()) {\n return '0';\n }\n\n let fixed: string;\n if (decimals === undefined || !Number.isFinite(decimals) || decimals < 0) {\n // Metadata unknown — preserve full precision, just defeat exponent form.\n fixed = bn.toFixed();\n } else {\n fixed = bn.toFixed(Math.floor(decimals), BigNumberJS.ROUND_DOWN);\n }\n\n if (!fixed.includes('.')) {\n return fixed;\n }\n // Trim trailing zeros and a dangling dot: \"1.500\" -> \"1.5\", \"1.000\" -> \"1\".\n return fixed.replace(/0+$/u, '').replace(/\\.$/u, '');\n}\n"]}
@@ -1,60 +0,0 @@
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
@@ -1 +0,0 @@
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 +0,0 @@
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"}
@@ -1,32 +0,0 @@
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
@@ -1 +0,0 @@
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 +0,0 @@
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"]}
@@ -1,171 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"snaps-assets-migration.cjs","sourceRoot":"","sources":["../../src/utils/snaps-assets-migration.ts"],"names":[],"mappings":";;;AAEA,2CAAmD;AAInD;;;;;;GAMG;AACH,IAAY,yBAqBX;AArBD,WAAY,yBAAyB;IACnC;;;OAGG;IACH,uEAAO,CAAA;IACP;;;;OAIG;IACH,iIAAoC,CAAA;IACpC;;;OAGG;IACH,uIAAuC,CAAA;IACvC;;OAEG;IACH,iHAA4B,CAAA;AAC9B,CAAC,EArBW,yBAAyB,yCAAzB,yBAAyB,QAqBpC;AAED;;;;GAIG;AACU,QAAA,iCAAiC,GAAG;IAC/C,QAAQ;IACR,SAAS;IACT,MAAM;CACE,CAAC;AAKX;;;;GAIG;AACU,QAAA,gCAAgC,GAGzC;IACF,MAAM,EAAE,mCAAmC;IAC3C,OAAO,EAAE,oCAAoC;IAC7C,IAAI,EAAE,iCAAiC;CACxC,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,gCAAgC,CAC9C,OAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAC;QAChD,OAAQ,yCAAuD,CAAC,QAAQ,CACtE,SAAS,CACV;YACC,CAAC,CAAE,SAA2C;YAC9C,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAbD,4EAaC;AAED;;;;;;GAMG;AACH,SAAgB,+BAA+B,CAAC,OAAgB;IAC9D,OAAO,gCAAgC,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;AACjE,CAAC;AAFD,0EAEC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,8BAA8B,CAC5C,SAA2B;IAE3B,IACE,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,KAAK,IAAI;QAClB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EACxB,CAAC;QACD,OAAO,yBAAyB,CAAC,GAAG,CAAC;IACvC,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,SAAgC,CAAC;IACnD,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAClE,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,EAAE,KAAK,EAAE,GAAG,OAA8B,CAAC;IACjD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,yBAAyB,CAAC,gCAAgC,CAAC;QAChE,KAAK,yBAAyB,CAAC,mCAAmC,CAAC;QACnE,KAAK,yBAAyB,CAAC,wBAAwB;YACrD,OAAO,KAAK,CAAC;QACf;YACE,OAAO,yBAAyB,CAAC,GAAG,CAAC;IACzC,CAAC;AACH,CAAC;AA1BD,wEA0BC;AAED;;;;;;;;;GASG;AACH,SAAgB,sBAAsB,CACpC,KAAgC;IAEhC,OAAO,KAAK,IAAI,yBAAyB,CAAC,gCAAgC,CAAC;AAC7E,CAAC;AAJD,wDAIC;AAED;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAChC,kBAAgC;IAEhC,OAAO,yCAAiC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACzD,8BAA8B,CAC5B,kBAAkB,CAAC,wCAAgC,CAAC,SAAS,CAAC,CAAC,CAChE,CACF,CAAC;AACJ,CAAC;AARD,gDAQC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,kBAAkB,CAChC,OAAgB,EAChB,kBAA4C;IAE5C,MAAM,SAAS,GAAG,gCAAgC,CAAC,OAAO,CAAC,CAAC;IAC5D,4DAA4D;IAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,8BAA8B,CAC1C,kBAAkB,EAAE,CAAC,wCAAgC,CAAC,SAAS,CAAC,CAAC,CAClE,CAAC;IACF,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAdD,gDAcC","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"]}