@metamask/assets-controllers 29.0.0 → 30.0.0

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 (176) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/README.md +29 -0
  3. package/dist/AssetsContractController.js +6 -6
  4. package/dist/AssetsContractController.mjs +5 -5
  5. package/dist/CurrencyRateController.js +4 -3
  6. package/dist/CurrencyRateController.mjs +3 -2
  7. package/dist/NftController.js +3 -3
  8. package/dist/NftController.mjs +2 -2
  9. package/dist/NftDetectionController.js +2 -2
  10. package/dist/NftDetectionController.mjs +1 -1
  11. package/dist/RatesController/RatesController.js +14 -0
  12. package/dist/RatesController/RatesController.mjs +14 -0
  13. package/dist/RatesController/index.js +13 -0
  14. package/dist/RatesController/index.js.map +1 -0
  15. package/dist/RatesController/index.mjs +13 -0
  16. package/dist/RatesController/index.mjs.map +1 -0
  17. package/dist/RatesController/types.js +1 -0
  18. package/dist/RatesController/types.js.map +1 -0
  19. package/dist/RatesController/types.mjs +1 -0
  20. package/dist/RatesController/types.mjs.map +1 -0
  21. package/dist/Standards/ERC20Standard.js +3 -3
  22. package/dist/Standards/ERC20Standard.mjs +2 -2
  23. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.js +3 -3
  24. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.mjs +2 -2
  25. package/dist/Standards/NftStandards/ERC721/ERC721Standard.js +3 -3
  26. package/dist/Standards/NftStandards/ERC721/ERC721Standard.mjs +2 -2
  27. package/dist/TokenDetectionController.js +3 -3
  28. package/dist/TokenDetectionController.mjs +2 -2
  29. package/dist/TokenListController.js +4 -4
  30. package/dist/TokenListController.mjs +3 -3
  31. package/dist/TokenRatesController.js +6 -4
  32. package/dist/TokenRatesController.mjs +5 -3
  33. package/dist/TokensController.js +6 -6
  34. package/dist/TokensController.mjs +5 -5
  35. package/dist/assetsUtil.js +2 -2
  36. package/dist/assetsUtil.mjs +1 -1
  37. package/dist/{chunk-OHSQRYVL.js → chunk-3R43XIIX.js} +17 -6
  38. package/dist/chunk-3R43XIIX.js.map +1 -0
  39. package/dist/{chunk-S6CZP74C.mjs → chunk-46UZDIXW.mjs} +35 -12
  40. package/dist/chunk-46UZDIXW.mjs.map +1 -0
  41. package/dist/{chunk-QHU4H6HP.js → chunk-4ODKGWYQ.js} +7 -7
  42. package/dist/{chunk-DEQZ35QE.js → chunk-5F5EQAX5.js} +7 -7
  43. package/dist/{chunk-IOQX3VTD.js → chunk-6W5EQ3JQ.js} +56 -42
  44. package/dist/chunk-6W5EQ3JQ.js.map +1 -0
  45. package/dist/chunk-7K6PSEAA.js +1 -0
  46. package/dist/chunk-7K6PSEAA.js.map +1 -0
  47. package/dist/{chunk-6XOM7KOQ.mjs → chunk-7MMEHAKG.mjs} +7 -7
  48. package/dist/{chunk-V46CHMOU.mjs → chunk-ASA5RLBY.mjs} +2 -2
  49. package/dist/chunk-B5YVX5IO.mjs +202 -0
  50. package/dist/chunk-B5YVX5IO.mjs.map +1 -0
  51. package/dist/{chunk-BO2WZDUM.js → chunk-B5YY22QQ.js} +3 -3
  52. package/dist/{chunk-QWACHXRH.mjs → chunk-B6W4CQOR.mjs} +2 -2
  53. package/dist/chunk-B6W4CQOR.mjs.map +1 -0
  54. package/dist/{chunk-3ZHN4GFT.js → chunk-BOTVAG4A.js} +5 -5
  55. package/dist/chunk-CNKVITJO.mjs +66 -0
  56. package/dist/chunk-CNKVITJO.mjs.map +1 -0
  57. package/dist/{chunk-LLYYJY7H.mjs → chunk-D3K5MPMW.mjs} +2 -2
  58. package/dist/{chunk-LRKDZWS6.js → chunk-ELSMS5S7.js} +3 -3
  59. package/dist/chunk-ELSMS5S7.js.map +1 -0
  60. package/dist/{chunk-X2MMIBYW.js → chunk-FMZML3V5.js} +7 -5
  61. package/dist/chunk-FMZML3V5.js.map +1 -0
  62. package/dist/{chunk-I53XGBU3.js → chunk-HDI4L2DD.js} +5 -5
  63. package/dist/chunk-JYHAAA6W.mjs +1 -0
  64. package/dist/chunk-JYHAAA6W.mjs.map +1 -0
  65. package/dist/{chunk-ASFD56OL.mjs → chunk-KOKB6U4Z.mjs} +7 -5
  66. package/dist/{chunk-ASFD56OL.mjs.map → chunk-KOKB6U4Z.mjs.map} +1 -1
  67. package/dist/{chunk-KM3J4DO6.js → chunk-LAU6ZDZR.js} +37 -14
  68. package/dist/chunk-LAU6ZDZR.js.map +1 -0
  69. package/dist/{chunk-S7UA2DU7.mjs → chunk-LZ5ZGQEX.mjs} +2 -2
  70. package/dist/{chunk-SOK5YX7I.js → chunk-MBCN3MNX.js} +11 -11
  71. package/dist/{chunk-5MRF7YPD.mjs → chunk-MHN7CJCZ.mjs} +6 -6
  72. package/dist/{chunk-D3PCUDTX.mjs → chunk-MR6EF4B7.mjs} +2 -2
  73. package/dist/{chunk-LS6R3HQL.js → chunk-NEXY7SE2.js} +2 -2
  74. package/dist/chunk-NEXY7SE2.js.map +1 -0
  75. package/dist/{chunk-X5PLVMOQ.mjs → chunk-Q5JRBGWO.mjs} +2 -2
  76. package/dist/chunk-Q5JRBGWO.mjs.map +1 -0
  77. package/dist/chunk-TTH3ES66.mjs +1 -0
  78. package/dist/chunk-TTH3ES66.mjs.map +1 -0
  79. package/dist/{chunk-OBOWNEJU.js → chunk-U3DJJN4X.js} +4 -4
  80. package/dist/chunk-WB6KJX4N.js +66 -0
  81. package/dist/chunk-WB6KJX4N.js.map +1 -0
  82. package/dist/{chunk-OWTCG2N3.mjs → chunk-X4FFNQHE.mjs} +53 -39
  83. package/dist/chunk-X4FFNQHE.mjs.map +1 -0
  84. package/dist/chunk-XC3SOOGC.js +1 -0
  85. package/dist/chunk-XC3SOOGC.js.map +1 -0
  86. package/dist/{chunk-RUE635TV.mjs → chunk-XHMM35YT.mjs} +3 -3
  87. package/dist/{chunk-OSEZFHQ3.mjs → chunk-Y35SM7TO.mjs} +19 -14
  88. package/dist/chunk-Y35SM7TO.mjs.map +1 -0
  89. package/dist/chunk-YIFA2HXH.js +202 -0
  90. package/dist/chunk-YIFA2HXH.js.map +1 -0
  91. package/dist/{chunk-NXGX7LZJ.mjs → chunk-Z3OQU4XW.mjs} +17 -6
  92. package/dist/chunk-Z3OQU4XW.mjs.map +1 -0
  93. package/dist/{chunk-4FMVFW2T.js → chunk-Z6TBQQE5.js} +20 -15
  94. package/dist/chunk-Z6TBQQE5.js.map +1 -0
  95. package/dist/crypto-compare-service/crypto-compare.js +10 -0
  96. package/dist/crypto-compare-service/crypto-compare.js.map +1 -0
  97. package/dist/crypto-compare-service/crypto-compare.mjs +10 -0
  98. package/dist/crypto-compare-service/crypto-compare.mjs.map +1 -0
  99. package/dist/crypto-compare-service/index.js +11 -0
  100. package/dist/crypto-compare-service/index.js.map +1 -0
  101. package/dist/crypto-compare-service/index.mjs +11 -0
  102. package/dist/crypto-compare-service/index.mjs.map +1 -0
  103. package/dist/index.js +24 -16
  104. package/dist/index.mjs +25 -17
  105. package/dist/token-prices-service/codefi-v2.js +4 -2
  106. package/dist/token-prices-service/codefi-v2.mjs +5 -3
  107. package/dist/token-prices-service/index.js +2 -2
  108. package/dist/token-prices-service/index.mjs +1 -1
  109. package/dist/token-service.js +3 -3
  110. package/dist/token-service.mjs +2 -2
  111. package/dist/tsconfig.build.tsbuildinfo +1 -1
  112. package/dist/types/CurrencyRateController.d.ts +1 -1
  113. package/dist/types/CurrencyRateController.d.ts.map +1 -1
  114. package/dist/types/NftController.d.ts +3 -3
  115. package/dist/types/NftController.d.ts.map +1 -1
  116. package/dist/types/NftDetectionController.d.ts.map +1 -1
  117. package/dist/types/RatesController/RatesController.d.ts +44 -0
  118. package/dist/types/RatesController/RatesController.d.ts.map +1 -0
  119. package/dist/types/RatesController/index.d.ts +3 -0
  120. package/dist/types/RatesController/index.d.ts.map +1 -0
  121. package/dist/types/RatesController/types.d.ts +100 -0
  122. package/dist/types/RatesController/types.d.ts.map +1 -0
  123. package/dist/types/TokenRatesController.d.ts +26 -4
  124. package/dist/types/TokenRatesController.d.ts.map +1 -1
  125. package/dist/types/TokensController.d.ts +1 -1
  126. package/dist/types/TokensController.d.ts.map +1 -1
  127. package/dist/types/crypto-compare-service/crypto-compare.d.ts +22 -0
  128. package/dist/types/crypto-compare-service/crypto-compare.d.ts.map +1 -0
  129. package/dist/types/crypto-compare-service/index.d.ts +2 -0
  130. package/dist/types/crypto-compare-service/index.d.ts.map +1 -0
  131. package/dist/types/index.d.ts +2 -0
  132. package/dist/types/index.d.ts.map +1 -1
  133. package/dist/types/token-prices-service/abstract-token-prices-service.d.ts +18 -0
  134. package/dist/types/token-prices-service/abstract-token-prices-service.d.ts.map +1 -1
  135. package/dist/types/token-prices-service/codefi-v2.d.ts +7 -0
  136. package/dist/types/token-prices-service/codefi-v2.d.ts.map +1 -1
  137. package/dist/types/token-service.d.ts +1 -1
  138. package/dist/types/token-service.d.ts.map +1 -1
  139. package/package.json +5 -5
  140. package/dist/chunk-4FMVFW2T.js.map +0 -1
  141. package/dist/chunk-DYH5P3VY.js +0 -35
  142. package/dist/chunk-DYH5P3VY.js.map +0 -1
  143. package/dist/chunk-IOQX3VTD.js.map +0 -1
  144. package/dist/chunk-KM3J4DO6.js.map +0 -1
  145. package/dist/chunk-LRKDZWS6.js.map +0 -1
  146. package/dist/chunk-LS6R3HQL.js.map +0 -1
  147. package/dist/chunk-NXGX7LZJ.mjs.map +0 -1
  148. package/dist/chunk-OHSQRYVL.js.map +0 -1
  149. package/dist/chunk-OSEZFHQ3.mjs.map +0 -1
  150. package/dist/chunk-OWTCG2N3.mjs.map +0 -1
  151. package/dist/chunk-PWZE6KJV.mjs +0 -35
  152. package/dist/chunk-PWZE6KJV.mjs.map +0 -1
  153. package/dist/chunk-QWACHXRH.mjs.map +0 -1
  154. package/dist/chunk-S6CZP74C.mjs.map +0 -1
  155. package/dist/chunk-X2MMIBYW.js.map +0 -1
  156. package/dist/chunk-X5PLVMOQ.mjs.map +0 -1
  157. package/dist/crypto-compare.js +0 -8
  158. package/dist/crypto-compare.mjs +0 -8
  159. package/dist/types/crypto-compare.d.ts +0 -13
  160. package/dist/types/crypto-compare.d.ts.map +0 -1
  161. /package/dist/{crypto-compare.js.map → RatesController/RatesController.js.map} +0 -0
  162. /package/dist/{crypto-compare.mjs.map → RatesController/RatesController.mjs.map} +0 -0
  163. /package/dist/{chunk-QHU4H6HP.js.map → chunk-4ODKGWYQ.js.map} +0 -0
  164. /package/dist/{chunk-DEQZ35QE.js.map → chunk-5F5EQAX5.js.map} +0 -0
  165. /package/dist/{chunk-6XOM7KOQ.mjs.map → chunk-7MMEHAKG.mjs.map} +0 -0
  166. /package/dist/{chunk-V46CHMOU.mjs.map → chunk-ASA5RLBY.mjs.map} +0 -0
  167. /package/dist/{chunk-BO2WZDUM.js.map → chunk-B5YY22QQ.js.map} +0 -0
  168. /package/dist/{chunk-3ZHN4GFT.js.map → chunk-BOTVAG4A.js.map} +0 -0
  169. /package/dist/{chunk-LLYYJY7H.mjs.map → chunk-D3K5MPMW.mjs.map} +0 -0
  170. /package/dist/{chunk-I53XGBU3.js.map → chunk-HDI4L2DD.js.map} +0 -0
  171. /package/dist/{chunk-S7UA2DU7.mjs.map → chunk-LZ5ZGQEX.mjs.map} +0 -0
  172. /package/dist/{chunk-SOK5YX7I.js.map → chunk-MBCN3MNX.js.map} +0 -0
  173. /package/dist/{chunk-5MRF7YPD.mjs.map → chunk-MHN7CJCZ.mjs.map} +0 -0
  174. /package/dist/{chunk-D3PCUDTX.mjs.map → chunk-MR6EF4B7.mjs.map} +0 -0
  175. /package/dist/{chunk-OBOWNEJU.js.map → chunk-U3DJJN4X.js.map} +0 -0
  176. /package/dist/{chunk-RUE635TV.mjs.map → chunk-XHMM35YT.mjs.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [30.0.0]
11
+
12
+ ### Added
13
+
14
+ - Adds a new field `marketData` to the state of `TokenRatesController` ([#4206](https://github.com/MetaMask/core/pull/4206))
15
+ - Adds a new `RatesController` to manage prices for non-EVM blockchains ([#4242](https://github.com/MetaMask/core/pull/4242))
16
+
17
+ ### Changed
18
+
19
+ - **BREAKING:** Changed price and token API endpoints from `*.metafi.codefi.network` to `*.api.cx.metamask.io` ([#4301](https://github.com/MetaMask/core/pull/4301))
20
+ - When fetching token list for Linea Mainnet, use `occurrenceFloor` parameter of 1 instead of 3, and filter tokens to those with a `lineaTeam` aggregator or more than 3 aggregators ([#4253](https://github.com/MetaMask/core/pull/4253))
21
+ - **BREAKING:** The NftController messenger must now allow the `NetworkController:getNetworkClientById` action ([#4305](https://github.com/MetaMask/core/pull/4305))
22
+ - **BREAKING:** Bump dependency and peer dependency `@metamask/network-controller` to `^18.1.2` ([#4332](https://github.com/MetaMask/core/pull/4332))
23
+ - Bump `@metamask/keyring-api` to `^6.1.1` ([#4262](https://github.com/MetaMask/core/pull/4262))
24
+
25
+ ### Removed
26
+
27
+ - **BREAKING:** Removed `contractExchangeRates` and `contractExchangeRatesByChainId` from the state of `TokenRatesController` ([#4206](https://github.com/MetaMask/core/pull/4206))
28
+
29
+ ### Fixed
30
+
31
+ - Only update NFT state when metadata actually changes ([#4143](https://github.com/MetaMask/core/pull/4143))
32
+
10
33
  ## [29.0.0]
11
34
 
12
35
  ### Added
@@ -773,7 +796,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
773
796
 
774
797
  - Use Ethers for AssetsContractController ([#845](https://github.com/MetaMask/core/pull/845))
775
798
 
776
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@29.0.0...HEAD
799
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@30.0.0...HEAD
800
+ [30.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@29.0.0...@metamask/assets-controllers@30.0.0
777
801
  [29.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@28.0.0...@metamask/assets-controllers@29.0.0
778
802
  [28.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@27.2.0...@metamask/assets-controllers@28.0.0
779
803
  [27.2.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@27.1.0...@metamask/assets-controllers@27.2.0
package/README.md CHANGED
@@ -19,12 +19,41 @@ This package features the following controllers:
19
19
  - [**CollectibleDetectionController**](src/CollectibleDetectionController.ts) keeps a periodically updated list of ERC-721 tokens assigned to the currently selected address.
20
20
  - [**CollectiblesController**](src/CollectiblesController.ts) tracks ERC-721 and ERC-1155 tokens assigned to the currently selected address, using OpenSea to retrieve token information.
21
21
  - [**CurrencyRateController**](src/CurrencyRateController.ts) keeps a periodically updated value of the exchange rate from the currently selected "native" currency to another (handling testnet tokens specially).
22
+ - [**RatesController**](src/RatesController/RatesController.ts) keeps a periodically updated value for the exchange rates for different cryptocurrencies. The difference between the `RatesController` and `CurrencyRateController` is that the second one is coupled to the `NetworksController` and is EVM specific, whilst the first one can handle different blockchain currencies like BTC and SOL.
22
23
  - [**TokenBalancesController**](src/TokenBalancesController.ts) keeps a periodically updated set of balances for the current set of ERC-20 tokens.
23
24
  - [**TokenDetectionController**](src/TokenDetectionController.ts) keeps a periodically updated list of ERC-20 tokens assigned to the currently selected address.
24
25
  - [**TokenListController**](src/TokenListController.ts) uses the MetaSwap API to keep a periodically updated list of known ERC-20 tokens along with their metadata.
25
26
  - [**TokenRatesController**](src/TokenRatesController.ts) keeps a periodically updated list of exchange rates for known ERC-20 tokens relative to the currently selected native currency.
26
27
  - [**TokensController**](src/TokensController.ts) stores the ERC-20 and ERC-721 tokens, along with their metadata, that are listed in the wallet under the currently selected address on the currently selected chain.
27
28
 
29
+ ### `RatesController`
30
+
31
+ The `RatesController` is responsible for managing the state related to cryptocurrency exchange rates and periodically updating these rates by fetching new data from an external API.
32
+
33
+ ```ts
34
+ // Initialize the RatesController
35
+ const ratesController = new RatesController({
36
+ interval: 180000,
37
+ includeUsdRate: true,
38
+ state: {
39
+ fiatCurrency: 'eur',
40
+ cryptocurrencies: [Cryptocurrency.Btc],
41
+ },
42
+ });
43
+
44
+ // Start the polling process
45
+ ratesController.start().then(() => {
46
+ console.log('Polling for exchange rates has started.');
47
+ });
48
+
49
+ // Stop the polling process after some time
50
+ setTimeout(() => {
51
+ ratesController.stop().then(() => {
52
+ console.log('Polling for exchange rates has stopped.');
53
+ });
54
+ }, 300000);
55
+ ```
56
+
28
57
  ## Contributing
29
58
 
30
59
  This package is part of a monorepo. Instructions for contributing can be found in the [monorepo README](https://github.com/MetaMask/core#readme).
@@ -3,16 +3,16 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkQHU4H6HPjs = require('./chunk-QHU4H6HP.js');
7
- require('./chunk-OBOWNEJU.js');
8
- require('./chunk-3ZHN4GFT.js');
9
- require('./chunk-BO2WZDUM.js');
10
- require('./chunk-LS6R3HQL.js');
6
+ var _chunk4ODKGWYQjs = require('./chunk-4ODKGWYQ.js');
7
+ require('./chunk-U3DJJN4X.js');
8
+ require('./chunk-B5YY22QQ.js');
9
+ require('./chunk-BOTVAG4A.js');
10
+ require('./chunk-NEXY7SE2.js');
11
11
  require('./chunk-Z4BLTVTB.js');
12
12
 
13
13
 
14
14
 
15
15
 
16
16
 
17
- exports.AssetsContractController = _chunkQHU4H6HPjs.AssetsContractController; exports.MISSING_PROVIDER_ERROR = _chunkQHU4H6HPjs.MISSING_PROVIDER_ERROR; exports.SINGLE_CALL_BALANCES_ADDRESS_BY_CHAINID = _chunkQHU4H6HPjs.SINGLE_CALL_BALANCES_ADDRESS_BY_CHAINID; exports.default = _chunkQHU4H6HPjs.AssetsContractController_default;
17
+ exports.AssetsContractController = _chunk4ODKGWYQjs.AssetsContractController; exports.MISSING_PROVIDER_ERROR = _chunk4ODKGWYQjs.MISSING_PROVIDER_ERROR; exports.SINGLE_CALL_BALANCES_ADDRESS_BY_CHAINID = _chunk4ODKGWYQjs.SINGLE_CALL_BALANCES_ADDRESS_BY_CHAINID; exports.default = _chunk4ODKGWYQjs.AssetsContractController_default;
18
18
  //# sourceMappingURL=AssetsContractController.js.map
@@ -3,11 +3,11 @@ import {
3
3
  AssetsContractController_default,
4
4
  MISSING_PROVIDER_ERROR,
5
5
  SINGLE_CALL_BALANCES_ADDRESS_BY_CHAINID
6
- } from "./chunk-5MRF7YPD.mjs";
7
- import "./chunk-V46CHMOU.mjs";
8
- import "./chunk-S7UA2DU7.mjs";
9
- import "./chunk-LLYYJY7H.mjs";
10
- import "./chunk-X5PLVMOQ.mjs";
6
+ } from "./chunk-MHN7CJCZ.mjs";
7
+ import "./chunk-ASA5RLBY.mjs";
8
+ import "./chunk-D3K5MPMW.mjs";
9
+ import "./chunk-LZ5ZGQEX.mjs";
10
+ import "./chunk-Q5JRBGWO.mjs";
11
11
  import "./chunk-XUI43LEZ.mjs";
12
12
  export {
13
13
  AssetsContractController,
@@ -1,11 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkLRKDZWS6js = require('./chunk-LRKDZWS6.js');
5
- require('./chunk-DYH5P3VY.js');
4
+ var _chunkELSMS5S7js = require('./chunk-ELSMS5S7.js');
5
+ require('./chunk-7K6PSEAA.js');
6
+ require('./chunk-WB6KJX4N.js');
6
7
  require('./chunk-Z4BLTVTB.js');
7
8
 
8
9
 
9
10
 
10
- exports.CurrencyRateController = _chunkLRKDZWS6js.CurrencyRateController; exports.default = _chunkLRKDZWS6js.CurrencyRateController_default;
11
+ exports.CurrencyRateController = _chunkELSMS5S7js.CurrencyRateController; exports.default = _chunkELSMS5S7js.CurrencyRateController_default;
11
12
  //# sourceMappingURL=CurrencyRateController.js.map
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  CurrencyRateController,
3
3
  CurrencyRateController_default
4
- } from "./chunk-QWACHXRH.mjs";
5
- import "./chunk-PWZE6KJV.mjs";
4
+ } from "./chunk-B6W4CQOR.mjs";
5
+ import "./chunk-TTH3ES66.mjs";
6
+ import "./chunk-CNKVITJO.mjs";
6
7
  import "./chunk-XUI43LEZ.mjs";
7
8
  export {
8
9
  CurrencyRateController,
@@ -2,13 +2,13 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkKM3J4DO6js = require('./chunk-KM3J4DO6.js');
5
+ var _chunkLAU6ZDZRjs = require('./chunk-LAU6ZDZR.js');
6
6
  require('./chunk-RGHTNZQ6.js');
7
- require('./chunk-LS6R3HQL.js');
7
+ require('./chunk-NEXY7SE2.js');
8
8
  require('./chunk-Z4BLTVTB.js');
9
9
 
10
10
 
11
11
 
12
12
 
13
- exports.NftController = _chunkKM3J4DO6js.NftController; exports.default = _chunkKM3J4DO6js.NftController_default; exports.getDefaultNftState = _chunkKM3J4DO6js.getDefaultNftState;
13
+ exports.NftController = _chunkLAU6ZDZRjs.NftController; exports.default = _chunkLAU6ZDZRjs.NftController_default; exports.getDefaultNftState = _chunkLAU6ZDZRjs.getDefaultNftState;
14
14
  //# sourceMappingURL=NftController.js.map
@@ -2,9 +2,9 @@ import {
2
2
  NftController,
3
3
  NftController_default,
4
4
  getDefaultNftState
5
- } from "./chunk-S6CZP74C.mjs";
5
+ } from "./chunk-46UZDIXW.mjs";
6
6
  import "./chunk-CP3HC7AQ.mjs";
7
- import "./chunk-X5PLVMOQ.mjs";
7
+ import "./chunk-Q5JRBGWO.mjs";
8
8
  import "./chunk-XUI43LEZ.mjs";
9
9
  export {
10
10
  NftController,
@@ -2,12 +2,12 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkX2MMIBYWjs = require('./chunk-X2MMIBYW.js');
5
+ var _chunkFMZML3V5js = require('./chunk-FMZML3V5.js');
6
6
  require('./chunk-RGHTNZQ6.js');
7
7
  require('./chunk-Z4BLTVTB.js');
8
8
 
9
9
 
10
10
 
11
11
 
12
- exports.BlockaidResultType = _chunkX2MMIBYWjs.BlockaidResultType; exports.NftDetectionController = _chunkX2MMIBYWjs.NftDetectionController; exports.default = _chunkX2MMIBYWjs.NftDetectionController_default;
12
+ exports.BlockaidResultType = _chunkFMZML3V5js.BlockaidResultType; exports.NftDetectionController = _chunkFMZML3V5js.NftDetectionController; exports.default = _chunkFMZML3V5js.NftDetectionController_default;
13
13
  //# sourceMappingURL=NftDetectionController.js.map
@@ -2,7 +2,7 @@ import {
2
2
  BlockaidResultType,
3
3
  NftDetectionController,
4
4
  NftDetectionController_default
5
- } from "./chunk-ASFD56OL.mjs";
5
+ } from "./chunk-KOKB6U4Z.mjs";
6
6
  import "./chunk-CP3HC7AQ.mjs";
7
7
  import "./chunk-XUI43LEZ.mjs";
8
8
  export {
@@ -0,0 +1,14 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+ var _chunkYIFA2HXHjs = require('../chunk-YIFA2HXH.js');
6
+ require('../chunk-7K6PSEAA.js');
7
+ require('../chunk-WB6KJX4N.js');
8
+ require('../chunk-Z4BLTVTB.js');
9
+
10
+
11
+
12
+
13
+ exports.Cryptocurrency = _chunkYIFA2HXHjs.Cryptocurrency; exports.RatesController = _chunkYIFA2HXHjs.RatesController; exports.name = _chunkYIFA2HXHjs.name;
14
+ //# sourceMappingURL=RatesController.js.map
@@ -0,0 +1,14 @@
1
+ import {
2
+ Cryptocurrency,
3
+ RatesController,
4
+ name
5
+ } from "../chunk-B5YVX5IO.mjs";
6
+ import "../chunk-TTH3ES66.mjs";
7
+ import "../chunk-CNKVITJO.mjs";
8
+ import "../chunk-XUI43LEZ.mjs";
9
+ export {
10
+ Cryptocurrency,
11
+ RatesController,
12
+ name
13
+ };
14
+ //# sourceMappingURL=RatesController.mjs.map
@@ -0,0 +1,13 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-XC3SOOGC.js');
2
+
3
+
4
+
5
+ var _chunkYIFA2HXHjs = require('../chunk-YIFA2HXH.js');
6
+ require('../chunk-7K6PSEAA.js');
7
+ require('../chunk-WB6KJX4N.js');
8
+ require('../chunk-Z4BLTVTB.js');
9
+
10
+
11
+
12
+ exports.Cryptocurrency = _chunkYIFA2HXHjs.Cryptocurrency; exports.RatesController = _chunkYIFA2HXHjs.RatesController;
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import "../chunk-JYHAAA6W.mjs";
2
+ import {
3
+ Cryptocurrency,
4
+ RatesController
5
+ } from "../chunk-B5YVX5IO.mjs";
6
+ import "../chunk-TTH3ES66.mjs";
7
+ import "../chunk-CNKVITJO.mjs";
8
+ import "../chunk-XUI43LEZ.mjs";
9
+ export {
10
+ Cryptocurrency,
11
+ RatesController
12
+ };
13
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkBO2WZDUMjs = require('../chunk-BO2WZDUM.js');
4
- require('../chunk-LS6R3HQL.js');
3
+ var _chunkB5YY22QQjs = require('../chunk-B5YY22QQ.js');
4
+ require('../chunk-NEXY7SE2.js');
5
5
  require('../chunk-Z4BLTVTB.js');
6
6
 
7
7
 
8
- exports.ERC20Standard = _chunkBO2WZDUMjs.ERC20Standard;
8
+ exports.ERC20Standard = _chunkB5YY22QQjs.ERC20Standard;
9
9
  //# sourceMappingURL=ERC20Standard.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ERC20Standard
3
- } from "../chunk-LLYYJY7H.mjs";
4
- import "../chunk-X5PLVMOQ.mjs";
3
+ } from "../chunk-D3K5MPMW.mjs";
4
+ import "../chunk-Q5JRBGWO.mjs";
5
5
  import "../chunk-XUI43LEZ.mjs";
6
6
  export {
7
7
  ERC20Standard
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunk3ZHN4GFTjs = require('../../../chunk-3ZHN4GFT.js');
4
- require('../../../chunk-LS6R3HQL.js');
3
+ var _chunkBOTVAG4Ajs = require('../../../chunk-BOTVAG4A.js');
4
+ require('../../../chunk-NEXY7SE2.js');
5
5
  require('../../../chunk-Z4BLTVTB.js');
6
6
 
7
7
 
8
- exports.ERC1155Standard = _chunk3ZHN4GFTjs.ERC1155Standard;
8
+ exports.ERC1155Standard = _chunkBOTVAG4Ajs.ERC1155Standard;
9
9
  //# sourceMappingURL=ERC1155Standard.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ERC1155Standard
3
- } from "../../../chunk-S7UA2DU7.mjs";
4
- import "../../../chunk-X5PLVMOQ.mjs";
3
+ } from "../../../chunk-LZ5ZGQEX.mjs";
4
+ import "../../../chunk-Q5JRBGWO.mjs";
5
5
  import "../../../chunk-XUI43LEZ.mjs";
6
6
  export {
7
7
  ERC1155Standard
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkOBOWNEJUjs = require('../../../chunk-OBOWNEJU.js');
4
- require('../../../chunk-LS6R3HQL.js');
3
+ var _chunkU3DJJN4Xjs = require('../../../chunk-U3DJJN4X.js');
4
+ require('../../../chunk-NEXY7SE2.js');
5
5
  require('../../../chunk-Z4BLTVTB.js');
6
6
 
7
7
 
8
- exports.ERC721Standard = _chunkOBOWNEJUjs.ERC721Standard;
8
+ exports.ERC721Standard = _chunkU3DJJN4Xjs.ERC721Standard;
9
9
  //# sourceMappingURL=ERC721Standard.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ERC721Standard
3
- } from "../../../chunk-V46CHMOU.mjs";
4
- import "../../../chunk-X5PLVMOQ.mjs";
3
+ } from "../../../chunk-ASA5RLBY.mjs";
4
+ import "../../../chunk-Q5JRBGWO.mjs";
5
5
  import "../../../chunk-XUI43LEZ.mjs";
6
6
  export {
7
7
  ERC721Standard
@@ -4,8 +4,8 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkI53XGBU3js = require('./chunk-I53XGBU3.js');
8
- require('./chunk-LS6R3HQL.js');
7
+ var _chunkHDI4L2DDjs = require('./chunk-HDI4L2DD.js');
8
+ require('./chunk-NEXY7SE2.js');
9
9
  require('./chunk-Z4BLTVTB.js');
10
10
 
11
11
 
@@ -13,5 +13,5 @@ require('./chunk-Z4BLTVTB.js');
13
13
 
14
14
 
15
15
 
16
- exports.STATIC_MAINNET_TOKEN_LIST = _chunkI53XGBU3js.STATIC_MAINNET_TOKEN_LIST; exports.TokenDetectionController = _chunkI53XGBU3js.TokenDetectionController; exports.controllerName = _chunkI53XGBU3js.controllerName; exports.default = _chunkI53XGBU3js.TokenDetectionController_default; exports.isEqualCaseInsensitive = _chunkI53XGBU3js.isEqualCaseInsensitive;
16
+ exports.STATIC_MAINNET_TOKEN_LIST = _chunkHDI4L2DDjs.STATIC_MAINNET_TOKEN_LIST; exports.TokenDetectionController = _chunkHDI4L2DDjs.TokenDetectionController; exports.controllerName = _chunkHDI4L2DDjs.controllerName; exports.default = _chunkHDI4L2DDjs.TokenDetectionController_default; exports.isEqualCaseInsensitive = _chunkHDI4L2DDjs.isEqualCaseInsensitive;
17
17
  //# sourceMappingURL=TokenDetectionController.js.map
@@ -4,8 +4,8 @@ import {
4
4
  TokenDetectionController_default,
5
5
  controllerName,
6
6
  isEqualCaseInsensitive
7
- } from "./chunk-D3PCUDTX.mjs";
8
- import "./chunk-X5PLVMOQ.mjs";
7
+ } from "./chunk-MR6EF4B7.mjs";
8
+ import "./chunk-Q5JRBGWO.mjs";
9
9
  import "./chunk-XUI43LEZ.mjs";
10
10
  export {
11
11
  STATIC_MAINNET_TOKEN_LIST,
@@ -2,13 +2,13 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkDEQZ35QEjs = require('./chunk-DEQZ35QE.js');
6
- require('./chunk-OHSQRYVL.js');
7
- require('./chunk-LS6R3HQL.js');
5
+ var _chunk5F5EQAX5js = require('./chunk-5F5EQAX5.js');
6
+ require('./chunk-3R43XIIX.js');
7
+ require('./chunk-NEXY7SE2.js');
8
8
  require('./chunk-Z4BLTVTB.js');
9
9
 
10
10
 
11
11
 
12
12
 
13
- exports.TokenListController = _chunkDEQZ35QEjs.TokenListController; exports.default = _chunkDEQZ35QEjs.TokenListController_default; exports.getDefaultTokenListState = _chunkDEQZ35QEjs.getDefaultTokenListState;
13
+ exports.TokenListController = _chunk5F5EQAX5js.TokenListController; exports.default = _chunk5F5EQAX5js.TokenListController_default; exports.getDefaultTokenListState = _chunk5F5EQAX5js.getDefaultTokenListState;
14
14
  //# sourceMappingURL=TokenListController.js.map
@@ -2,9 +2,9 @@ import {
2
2
  TokenListController,
3
3
  TokenListController_default,
4
4
  getDefaultTokenListState
5
- } from "./chunk-RUE635TV.mjs";
6
- import "./chunk-NXGX7LZJ.mjs";
7
- import "./chunk-X5PLVMOQ.mjs";
5
+ } from "./chunk-XHMM35YT.mjs";
6
+ import "./chunk-Z3OQU4XW.mjs";
7
+ import "./chunk-Q5JRBGWO.mjs";
8
8
  import "./chunk-XUI43LEZ.mjs";
9
9
  export {
10
10
  TokenListController,
@@ -1,12 +1,14 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkIOQX3VTDjs = require('./chunk-IOQX3VTD.js');
5
- require('./chunk-DYH5P3VY.js');
6
- require('./chunk-LS6R3HQL.js');
4
+ var _chunk6W5EQ3JQjs = require('./chunk-6W5EQ3JQ.js');
5
+ require('./chunk-Z6TBQQE5.js');
6
+ require('./chunk-7K6PSEAA.js');
7
+ require('./chunk-WB6KJX4N.js');
8
+ require('./chunk-NEXY7SE2.js');
7
9
  require('./chunk-Z4BLTVTB.js');
8
10
 
9
11
 
10
12
 
11
- exports.TokenRatesController = _chunkIOQX3VTDjs.TokenRatesController; exports.default = _chunkIOQX3VTDjs.TokenRatesController_default;
13
+ exports.TokenRatesController = _chunk6W5EQ3JQjs.TokenRatesController; exports.default = _chunk6W5EQ3JQjs.TokenRatesController_default;
12
14
  //# sourceMappingURL=TokenRatesController.js.map
@@ -1,9 +1,11 @@
1
1
  import {
2
2
  TokenRatesController,
3
3
  TokenRatesController_default
4
- } from "./chunk-OWTCG2N3.mjs";
5
- import "./chunk-PWZE6KJV.mjs";
6
- import "./chunk-X5PLVMOQ.mjs";
4
+ } from "./chunk-X4FFNQHE.mjs";
5
+ import "./chunk-Y35SM7TO.mjs";
6
+ import "./chunk-TTH3ES66.mjs";
7
+ import "./chunk-CNKVITJO.mjs";
8
+ import "./chunk-Q5JRBGWO.mjs";
7
9
  import "./chunk-XUI43LEZ.mjs";
8
10
  export {
9
11
  TokenRatesController,
@@ -2,15 +2,15 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkSOK5YX7Ijs = require('./chunk-SOK5YX7I.js');
6
- require('./chunk-3ZHN4GFT.js');
7
- require('./chunk-BO2WZDUM.js');
8
- require('./chunk-OHSQRYVL.js');
9
- require('./chunk-LS6R3HQL.js');
5
+ var _chunkMBCN3MNXjs = require('./chunk-MBCN3MNX.js');
6
+ require('./chunk-B5YY22QQ.js');
7
+ require('./chunk-BOTVAG4A.js');
8
+ require('./chunk-3R43XIIX.js');
9
+ require('./chunk-NEXY7SE2.js');
10
10
  require('./chunk-Z4BLTVTB.js');
11
11
 
12
12
 
13
13
 
14
14
 
15
- exports.TokensController = _chunkSOK5YX7Ijs.TokensController; exports.default = _chunkSOK5YX7Ijs.TokensController_default; exports.getDefaultTokensState = _chunkSOK5YX7Ijs.getDefaultTokensState;
15
+ exports.TokensController = _chunkMBCN3MNXjs.TokensController; exports.default = _chunkMBCN3MNXjs.TokensController_default; exports.getDefaultTokensState = _chunkMBCN3MNXjs.getDefaultTokensState;
16
16
  //# sourceMappingURL=TokensController.js.map
@@ -2,11 +2,11 @@ import {
2
2
  TokensController,
3
3
  TokensController_default,
4
4
  getDefaultTokensState
5
- } from "./chunk-6XOM7KOQ.mjs";
6
- import "./chunk-S7UA2DU7.mjs";
7
- import "./chunk-LLYYJY7H.mjs";
8
- import "./chunk-NXGX7LZJ.mjs";
9
- import "./chunk-X5PLVMOQ.mjs";
5
+ } from "./chunk-7MMEHAKG.mjs";
6
+ import "./chunk-D3K5MPMW.mjs";
7
+ import "./chunk-LZ5ZGQEX.mjs";
8
+ import "./chunk-Z3OQU4XW.mjs";
9
+ import "./chunk-Q5JRBGWO.mjs";
10
10
  import "./chunk-XUI43LEZ.mjs";
11
11
  export {
12
12
  TokensController,
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- var _chunkLS6R3HQLjs = require('./chunk-LS6R3HQL.js');
17
+ var _chunkNEXY7SE2js = require('./chunk-NEXY7SE2.js');
18
18
  require('./chunk-Z4BLTVTB.js');
19
19
 
20
20
 
@@ -32,5 +32,5 @@ require('./chunk-Z4BLTVTB.js');
32
32
 
33
33
 
34
34
 
35
- exports.SupportedTokenDetectionNetworks = _chunkLS6R3HQLjs.SupportedTokenDetectionNetworks; exports.TOKEN_PRICES_BATCH_SIZE = _chunkLS6R3HQLjs.TOKEN_PRICES_BATCH_SIZE; exports.addUrlProtocolPrefix = _chunkLS6R3HQLjs.addUrlProtocolPrefix; exports.compareNftMetadata = _chunkLS6R3HQLjs.compareNftMetadata; exports.divideIntoBatches = _chunkLS6R3HQLjs.divideIntoBatches; exports.ethersBigNumberToBN = _chunkLS6R3HQLjs.ethersBigNumberToBN; exports.fetchTokenContractExchangeRates = _chunkLS6R3HQLjs.fetchTokenContractExchangeRates; exports.formatAggregatorNames = _chunkLS6R3HQLjs.formatAggregatorNames; exports.formatIconUrlWithProxy = _chunkLS6R3HQLjs.formatIconUrlWithProxy; exports.getFormattedIpfsUrl = _chunkLS6R3HQLjs.getFormattedIpfsUrl; exports.getIpfsCIDv1AndPath = _chunkLS6R3HQLjs.getIpfsCIDv1AndPath; exports.isTokenDetectionSupportedForNetwork = _chunkLS6R3HQLjs.isTokenDetectionSupportedForNetwork; exports.isTokenListSupportedForNetwork = _chunkLS6R3HQLjs.isTokenListSupportedForNetwork; exports.reduceInBatchesSerially = _chunkLS6R3HQLjs.reduceInBatchesSerially; exports.removeIpfsProtocolPrefix = _chunkLS6R3HQLjs.removeIpfsProtocolPrefix;
35
+ exports.SupportedTokenDetectionNetworks = _chunkNEXY7SE2js.SupportedTokenDetectionNetworks; exports.TOKEN_PRICES_BATCH_SIZE = _chunkNEXY7SE2js.TOKEN_PRICES_BATCH_SIZE; exports.addUrlProtocolPrefix = _chunkNEXY7SE2js.addUrlProtocolPrefix; exports.compareNftMetadata = _chunkNEXY7SE2js.compareNftMetadata; exports.divideIntoBatches = _chunkNEXY7SE2js.divideIntoBatches; exports.ethersBigNumberToBN = _chunkNEXY7SE2js.ethersBigNumberToBN; exports.fetchTokenContractExchangeRates = _chunkNEXY7SE2js.fetchTokenContractExchangeRates; exports.formatAggregatorNames = _chunkNEXY7SE2js.formatAggregatorNames; exports.formatIconUrlWithProxy = _chunkNEXY7SE2js.formatIconUrlWithProxy; exports.getFormattedIpfsUrl = _chunkNEXY7SE2js.getFormattedIpfsUrl; exports.getIpfsCIDv1AndPath = _chunkNEXY7SE2js.getIpfsCIDv1AndPath; exports.isTokenDetectionSupportedForNetwork = _chunkNEXY7SE2js.isTokenDetectionSupportedForNetwork; exports.isTokenListSupportedForNetwork = _chunkNEXY7SE2js.isTokenListSupportedForNetwork; exports.reduceInBatchesSerially = _chunkNEXY7SE2js.reduceInBatchesSerially; exports.removeIpfsProtocolPrefix = _chunkNEXY7SE2js.removeIpfsProtocolPrefix;
36
36
  //# sourceMappingURL=assetsUtil.js.map
@@ -14,7 +14,7 @@ import {
14
14
  isTokenListSupportedForNetwork,
15
15
  reduceInBatchesSerially,
16
16
  removeIpfsProtocolPrefix
17
- } from "./chunk-X5PLVMOQ.mjs";
17
+ } from "./chunk-Q5JRBGWO.mjs";
18
18
  import "./chunk-XUI43LEZ.mjs";
19
19
  export {
20
20
  SupportedTokenDetectionNetworks,
@@ -1,15 +1,20 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkLS6R3HQLjs = require('./chunk-LS6R3HQL.js');
3
+ var _chunkNEXY7SE2js = require('./chunk-NEXY7SE2.js');
4
4
 
5
5
  // src/token-service.ts
6
+
7
+
8
+
9
+
6
10
  var _controllerutils = require('@metamask/controller-utils');
7
- var TOKEN_END_POINT_API = "https://token-api.metaswap.codefi.network";
11
+ var TOKEN_END_POINT_API = "https://token.api.cx.metamask.io";
8
12
  var TOKEN_METADATA_NO_SUPPORT_ERROR = "TokenService Error: Network does not support fetchTokenMetadata";
9
13
  function getTokensURL(chainId) {
14
+ const occurrenceFloor = chainId === _controllerutils.ChainId["linea-mainnet"] ? 1 : 3;
10
15
  return `${TOKEN_END_POINT_API}/tokens/${_controllerutils.convertHexToDecimal.call(void 0,
11
16
  chainId
12
- )}?occurrenceFloor=3&includeNativeAssets=false&includeDuplicateSymbolAssets=false&includeTokenFees=false&includeAssetType=false`;
17
+ )}?occurrenceFloor=${occurrenceFloor}&includeNativeAssets=false&includeDuplicateSymbolAssets=false&includeTokenFees=false&includeAssetType=false`;
13
18
  }
14
19
  function getTokenMetadataURL(chainId, tokenAddress) {
15
20
  return `${TOKEN_END_POINT_API}/token/${_controllerutils.convertHexToDecimal.call(void 0,
@@ -22,12 +27,18 @@ async function fetchTokenListByChainId(chainId, abortSignal, { timeout = default
22
27
  const tokenURL = getTokensURL(chainId);
23
28
  const response = await queryApi(tokenURL, abortSignal, timeout);
24
29
  if (response) {
25
- return parseJsonResponse(response);
30
+ const result = await parseJsonResponse(response);
31
+ if (Array.isArray(result) && chainId === _controllerutils.ChainId["linea-mainnet"]) {
32
+ return result.filter(
33
+ (elm) => elm.aggregators.includes("lineaTeam") || elm.aggregators.length >= 3
34
+ );
35
+ }
36
+ return result;
26
37
  }
27
38
  return void 0;
28
39
  }
29
40
  async function fetchTokenMetadata(chainId, tokenAddress, abortSignal, { timeout = defaultTimeout } = {}) {
30
- if (!_chunkLS6R3HQLjs.isTokenListSupportedForNetwork.call(void 0, chainId)) {
41
+ if (!_chunkNEXY7SE2js.isTokenListSupportedForNetwork.call(void 0, chainId)) {
31
42
  throw new Error(TOKEN_METADATA_NO_SUPPORT_ERROR);
32
43
  }
33
44
  const tokenMetadataURL = getTokenMetadataURL(chainId, tokenAddress);
@@ -71,4 +82,4 @@ async function parseJsonResponse(apiResponse) {
71
82
 
72
83
 
73
84
  exports.TOKEN_END_POINT_API = TOKEN_END_POINT_API; exports.TOKEN_METADATA_NO_SUPPORT_ERROR = TOKEN_METADATA_NO_SUPPORT_ERROR; exports.fetchTokenListByChainId = fetchTokenListByChainId; exports.fetchTokenMetadata = fetchTokenMetadata;
74
- //# sourceMappingURL=chunk-OHSQRYVL.js.map
85
+ //# sourceMappingURL=chunk-3R43XIIX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/token-service.ts"],"names":[],"mappings":";;;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKA,IAAM,sBAAsB;AAC5B,IAAM,kCACX;AAQF,SAAS,aAAa,SAAc;AAClC,QAAM,kBAAkB,YAAY,QAAQ,eAAe,IAAI,IAAI;AACnE,SAAO,GAAG,mBAAmB,WAAW;AAAA,IACtC;AAAA,EACF,CAAC,oBAAoB,eAAe;AACtC;AASA,SAAS,oBAAoB,SAAc,cAAsB;AAC/D,SAAO,GAAG,mBAAmB,UAAU;AAAA,IACrC;AAAA,EACF,CAAC,YAAY,YAAY;AAC3B;AAEA,IAAM,2BAA2B;AAIjC,IAAM,iBAAiB;AAYvB,eAAsB,wBACpB,SACA,aACA,EAAE,UAAU,eAAe,IAAI,CAAC,GACd;AAClB,QAAM,WAAW,aAAa,OAAO;AACrC,QAAM,WAAW,MAAM,SAAS,UAAU,aAAa,OAAO;AAC9D,MAAI,UAAU;AACZ,UAAM,SAAS,MAAM,kBAAkB,QAAQ;AAC/C,QAAI,MAAM,QAAQ,MAAM,KAAK,YAAY,QAAQ,eAAe,GAAG;AACjE,aAAO,OAAO;AAAA,QACZ,CAAC,QACC,IAAI,YAAY,SAAS,WAAW,KAAK,IAAI,YAAY,UAAU;AAAA,MACvE;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAaA,eAAsB,mBACpB,SACA,cACA,aACA,EAAE,UAAU,eAAe,IAAI,CAAC,GACR;AACxB,MAAI,CAAC,+BAA+B,OAAO,GAAG;AAC5C,UAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AACA,QAAM,mBAAmB,oBAAoB,SAAS,YAAY;AAClE,QAAM,WAAW,MAAM,SAAS,kBAAkB,aAAa,OAAO;AACtE,MAAI,UAAU;AACZ,WAAO,kBAAkB,QAAQ;AAAA,EACnC;AACA,SAAO;AACT;AAUA,eAAe,SACb,QACA,aACA,SAC+B;AAC/B,QAAM,eAA4B;AAAA,IAChC,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AACA,eAAa,UAAU,IAAI,OAAO,QAAQ;AAC1C,eAAa,QAAQ,IAAI,gBAAgB,kBAAkB;AAC3D,MAAI;AACF,WAAO,MAAM,aAAa,QAAQ,cAAc,OAAO;AAAA,EACzD,SAAS,OAAO;AACd,QAAI,iBAAiB,SAAS,MAAM,SAAS,cAAc;AACzD,cAAQ,IAAI,oBAAoB;AAAA,IAClC;AAAA,EACF;AACA,SAAO;AACT;AASA,eAAe,kBAAkB,aAAyC;AACxE,QAAM,cAAc,MAAM,YAAY,KAAK;AAE3C,MAAI,aAAa,OAAO;AACtB,UAAM,IAAI,MAAM,uBAAuB,YAAY,KAAK,EAAE;AAAA,EAC5D;AACA,SAAO;AACT","sourcesContent":["import {\n ChainId,\n convertHexToDecimal,\n timeoutFetch,\n} from '@metamask/controller-utils';\nimport type { Hex } from '@metamask/utils';\n\nimport { isTokenListSupportedForNetwork } from './assetsUtil';\n\nexport const TOKEN_END_POINT_API = 'https://token.api.cx.metamask.io';\nexport const TOKEN_METADATA_NO_SUPPORT_ERROR =\n 'TokenService Error: Network does not support fetchTokenMetadata';\n\n/**\n * Get the tokens URL for a specific network.\n *\n * @param chainId - The chain ID of the network the tokens requested are on.\n * @returns The tokens URL.\n */\nfunction getTokensURL(chainId: Hex) {\n const occurrenceFloor = chainId === ChainId['linea-mainnet'] ? 1 : 3;\n return `${TOKEN_END_POINT_API}/tokens/${convertHexToDecimal(\n chainId,\n )}?occurrenceFloor=${occurrenceFloor}&includeNativeAssets=false&includeDuplicateSymbolAssets=false&includeTokenFees=false&includeAssetType=false`;\n}\n\n/**\n * Get the token metadata URL for the given network and token.\n *\n * @param chainId - The chain ID of the network the token is on.\n * @param tokenAddress - The token address.\n * @returns The token metadata URL.\n */\nfunction getTokenMetadataURL(chainId: Hex, tokenAddress: string) {\n return `${TOKEN_END_POINT_API}/token/${convertHexToDecimal(\n chainId,\n )}?address=${tokenAddress}`;\n}\n\nconst tenSecondsInMilliseconds = 10_000;\n\n// Token list averages 1.6 MB in size\n// timeoutFetch by default has a 500ms timeout, which will almost always timeout given the response size.\nconst defaultTimeout = tenSecondsInMilliseconds;\n\n/**\n * Fetch the list of token metadata for a given network. This request is cancellable using the\n * abort signal passed in.\n *\n * @param chainId - The chain ID of the network the requested tokens are on.\n * @param abortSignal - The abort signal used to cancel the request if necessary.\n * @param options - Additional fetch options.\n * @param options.timeout - The fetch timeout.\n * @returns The token list, or `undefined` if the request was cancelled.\n */\nexport async function fetchTokenListByChainId(\n chainId: Hex,\n abortSignal: AbortSignal,\n { timeout = defaultTimeout } = {},\n): Promise<unknown> {\n const tokenURL = getTokensURL(chainId);\n const response = await queryApi(tokenURL, abortSignal, timeout);\n if (response) {\n const result = await parseJsonResponse(response);\n if (Array.isArray(result) && chainId === ChainId['linea-mainnet']) {\n return result.filter(\n (elm) =>\n elm.aggregators.includes('lineaTeam') || elm.aggregators.length >= 3,\n );\n }\n return result;\n }\n return undefined;\n}\n\n/**\n * Fetch metadata for the token address provided for a given network. This request is cancellable\n * using the abort signal passed in.\n *\n * @param chainId - The chain ID of the network the token is on.\n * @param tokenAddress - The address of the token to fetch metadata for.\n * @param abortSignal - The abort signal used to cancel the request if necessary.\n * @param options - Additional fetch options.\n * @param options.timeout - The fetch timeout.\n * @returns The token metadata, or `undefined` if the request was either aborted or failed.\n */\nexport async function fetchTokenMetadata<T>(\n chainId: Hex,\n tokenAddress: string,\n abortSignal: AbortSignal,\n { timeout = defaultTimeout } = {},\n): Promise<T | undefined> {\n if (!isTokenListSupportedForNetwork(chainId)) {\n throw new Error(TOKEN_METADATA_NO_SUPPORT_ERROR);\n }\n const tokenMetadataURL = getTokenMetadataURL(chainId, tokenAddress);\n const response = await queryApi(tokenMetadataURL, abortSignal, timeout);\n if (response) {\n return parseJsonResponse(response) as Promise<T>;\n }\n return undefined;\n}\n\n/**\n * Perform fetch request against the api.\n *\n * @param apiURL - The URL of the API to fetch.\n * @param abortSignal - The abort signal used to cancel the request if necessary.\n * @param timeout - The fetch timeout.\n * @returns Promise resolving request response.\n */\nasync function queryApi(\n apiURL: string,\n abortSignal: AbortSignal,\n timeout: number,\n): Promise<Response | undefined> {\n const fetchOptions: RequestInit = {\n referrer: apiURL,\n referrerPolicy: 'no-referrer-when-downgrade',\n method: 'GET',\n mode: 'cors',\n signal: abortSignal,\n cache: 'default',\n };\n fetchOptions.headers = new window.Headers();\n fetchOptions.headers.set('Content-Type', 'application/json');\n try {\n return await timeoutFetch(apiURL, fetchOptions, timeout);\n } catch (error) {\n if (error instanceof Error && error.name === 'AbortError') {\n console.log('Request is aborted');\n }\n }\n return undefined;\n}\n\n/**\n * Parse an API response and return the response JSON data.\n *\n * @param apiResponse - The API response to parse.\n * @returns The response JSON data.\n * @throws Will throw if the response includes an error.\n */\nasync function parseJsonResponse(apiResponse: Response): Promise<unknown> {\n const responseObj = await apiResponse.json();\n // api may return errors as json without setting an error http status code\n if (responseObj?.error) {\n throw new Error(`TokenService Error: ${responseObj.error}`);\n }\n return responseObj;\n}\n"]}